Linux 上のカメラ サポート用スタックである libcamera の最初のリリース

0.0.1 年間の開発を経て、libcamera プロジェクトの最初のリリース (4) が形成され、Linux、Android、ChromeOS でビデオ カメラ、カメラ、TV チューナーを操作するためのソフトウェア スタックが提供され、V2L2.1 API の開発が継続されました。そして最終的には交換することになります。 ライブラリの API はまだ変更中であり、完全に安定化していないため、プロジェクトはこれまでのところ、継続的開発モデルを使用して個々のリリースに分岐することなく開発されています。 互換性に影響を与える API の変更をディストリビューションが追跡し、パッケージでのライブラリの配信を簡素化する必要性に応えて、ABI と API の変更の範囲を反映したリリースを定期的に生成することが決定されました。 プロジェクト コードは C++ で書かれており、LGPLvXNUMX ライセンスに基づいて配布されます。

このプロジェクトは、独自のドライバーに関連付けられたスマートフォンおよび組み込みデバイス用のカメラに対する Linux サポートの状況を正常化するために、Linux カーネルのマルチメディア サブシステムの開発者と一部のカメラ メーカーによって開発されています。 API V4L2 は Linux カーネルですでに利用可能ですが、かつては従来の個別の Web カメラで動作するように作成されており、MCU 機能を CPU の肩に移動するという最近の傾向にはあまり適応していません。

コスト削減のため、組み込みデバイス内のカメラに組み込まれた専用プロセッサ (MCU) で主な画像処理操作が実行される従来のカメラとは異なり、これらの機能はメイン CPU の肩で実行され、次のような複雑なドライバーが必要です。オープンソースではないライセンスのコンポーネントが含まれます。 libcamera プロジェクトの一環として、オープンソース ソフトウェアの支持者とハードウェア メーカーは、一方ではオープンソース ソフトウェア開発者のニーズを満たし、他方ではカメラ メーカーの知的財産の保護を可能にする妥協案を作成しようとしました。

libcamera ライブラリによって提供されるスタックは、完全にユーザー空間に実装されます。 既存のソフトウェア環境やアプリケーションとの互換性を確保するために、V4L API、Gstreamer、Android Camera HAL に互換性レイヤーが提供されています。 機器と対話するための各カメラに固有の独自のコンポーネントは、別個のプロセスで実行され、IPC を介してライブラリと対話するモジュールとして設計されています。 モジュールはデバイスに直接アクセスできず、中間 API を通じて機器にアクセスします。この API を通じてリクエストがチェックされ、フィルタリングされ、カメラの制御に必要な機能のみへのアクセスに制限されます。

このライブラリは、画像やビデオの品質を処理および改善するためのアルゴリズム (ホワイト バランス調整、ノイズ低減、ビデオ安定化、オートフォーカス、露出選択など) へのアクセスも提供します。これらは、オープン外部ライブラリまたは独自の形式で接続できます。隔離されたモジュール。 この API は、既存の外部カメラと内蔵カメラの機能の決定、デバイス プロファイルの使用、カメラの接続および切断イベントの処理、個々のフレーム レベルでのカメラ データ キャプチャの管理、画像とフラッシュの同期などの機能へのアクセスを提供します。 システム内の複数のカメラを個別に操作し、XNUMX 台のカメラから複数のビデオ ストリームを同時にキャプチャすることができます (たとえば、XNUMX 台はビデオ会議用に低解像度で、もう XNUMX 台はディスクへのアーカイブ記録用に高解像度で)。

出所: オープンネット.ru

コメントを追加します