次の方法で共有


複数ピン カメラでのドライバーの MFT に関する考慮事項 (UWP デバイス アプリ)

Windows 8.1 は、カメラ ドライバー MFT と呼ばれる Media Foundation Transform (MFT) の形式でビデオ処理プラグインを作成する機能を IHV およびシステム OEM に提供します。 インストールすると、これらのドライバーの MFT を UWP デバイス アプリで使用して、特殊なビデオ効果を有効にすることができます。 一部のカメラでは、プレビュー、キャプチャ、および静止用に個別のピンが提供されます。 これらのマルチピン カメラは、開発者に固有の課題をもたらします。 このトピックでは、マルチピン カメラでカメラ ドライバー MFT を開発する際に考慮すべきいくつかの点について説明します。 ドライバー MFT の作成の詳細については、「 カメラ ドライバー MFT の作成」を参照してください。

はじめに

ドライバー MFT は、ソース リーダーで動作する最初の MFT であることを示すために MFT0 とも呼ばれます。 MFT0 の個別のインスタンスは、キャプチャ ソース上のすべてのピンにアタッチされます。 一部のシステム OEM の場合、AVStream キャプチャ ドライバーは、プレビュー ピン、キャプチャ ピン、および静止ピンをサポートする必要があります。 これは、MFT0 のインスタンスが 3 つある可能性があることを意味します。 この図は、このアーキテクチャを示しています。IHV プラグイン MFT のコピーは 3 つあり、ストリームごとに 1 つです。

拡張プラグイン モデルを mf でキャプチャします。

MFT0 の一般的なシナリオでは、課題が生じる可能性があります。 MFT0 の 2 つの一般的な関数は次のとおりです。

  • ビデオ ストリームを分析してカメラにフィードバックを提供し、キャプチャを改善する (ホスト ベースの自動フォーカスや自動露出など)

  • ビデオ効果の追加

シングルピン ウェブカメラ

これまで、カメラは単一のキャプチャ ピンとして Windows に公開されてきました。 次の図は、ワンピン Web カメラの動作を表しています。

1 ピン Web カメラ。

この場合、カメラコントロールとビデオエフェクトの両方が設計どおりに動作します。これは、カメラコントロールとビデオエフェクトが適用された後、キャプチャピンからプレビューとスティルがティードされるためです。 その結果、保存されたファイルまたはユーザーのチャットバディには、ユーザーがプレビューで表示するのと同じビデオ効果が表示され、カメラコントロール機能のインスタンスは 1 つだけになります。 関連付けられている UWP デバイス アプリがある場合、アプリはキャプチャ ピンの MFT0 に接続されるため、MFT0 はアプリ (つまりユーザー) から制御メッセージを取得します。

3 ピン Web カメラ

3 ピン カメラには、アプリケーションのニーズに応じて、MFT0 のインスタンスが 3 つまである場合があります。 次の図は、3 ピン カメラの動作を表しています。

3 ピン Web カメラ。

この状況には、いくつかの課題があります。 まず、カメラ センサーと ISP の設定を直接制御する必要があるホスト ベースの自動露出ソリューションの場合、3 つの MFT0 が同時にカメラを制御しようとしている可能性があります。 これにより、制御システムが中断されます。

次に、ビデオ効果のインスタンスが 3 つ存在する可能性があります。 計算の 3 倍のコストが発生する以外に、MFT0 の 3 つのインスタンスは、各ビデオ フレームが常にまったく同じ状態で同じ効果を持つよう通信する必要があります。 それ以外の場合、ユーザーに表示される内容は保存または共有されません。

さらに、2 つの最終的な複合要因があります。

  • MFT0 の各インスタンスは、いつでも作成またはシャットダウンできます

  • UWP デバイス アプリは、MFT0 の 1 つのインスタンスにのみ接続されます

圧縮されたビデオ

Web カメラまたはシステム OEM は、キャプチャ ピン (つまり、Web カメラ自体) に表示される前にビデオを圧縮することを選択できます。 Web カメラに圧縮をオフロードすると、低い電力の PC で HD ビデオを保存して共有できます。 一般に、この圧縮されたビデオ ストリームは、カメラ制御をサポートするために分析することも、ビデオ効果を適用することもできません。 これにより、MFT0 のすべてのインスタンス (および存在する場合は Microsoft Store デバイス アプリ) が、キャプチャ ストリームに影響が適用されないことを認識することが求められるという課題が生じます。 次の図は、圧縮されたビデオを表しています。

圧縮されたビデオ。

ユーザーがプレビュー ストリームにビデオ効果を適用した場合、キャプチャ ストリームまたは引き続きピンに適用することはできません。 したがって、ユーザーには、保存またはストリーミングされたビデオに適用されていないビデオ効果が表示されます。 プレビュー ストリームが停止した場合、Microsoft Store デバイス アプリはキャプチャ ストリームへの接続を試みます。 ユーザーが圧縮されたビデオをストリーミングしている場合、これは多くの機能を許可しません。

MFT0 インスタンス間の通信

MFT0 の 3 つのインスタンスが相互に通信できる場合は、ほとんどの問題が解決される可能性があります。 これらのインスタンスが互いを検出する方法は、IHV にかかっています。 すべての MFT0 が通信できたら、Microsoft Store デバイス アプリに接続されている MFT0 のインスタンスは、適用されている効果とその現在の状態を他のインスタンスに知らせることができます。 また、3 つのインスタンスは、カメラ コントロールを適用するインスタンスを決定できます。 最後に、プレビュー ピンは、キャプチャ ピンがエンコードされたビデオをストリーミングしているかどうかを判断できます。 プレビューピンは、ビデオ効果を無効にすることができます。

MFT0 のインスタンス間の通信は、ユーザー エクスペリエンスの主要な問題を解決しますが、ビデオ効果の 3 つのインスタンスが同時に実行されている必要があります。 一部のビデオ効果では、特に全画面表示ビデオが同時にプレビューおよびキャプチャされている場合に、利用可能なほとんどの CPU リソースを使用できます。 これらは重大な問題です。 パフォーマンス上の理由から、各 ISV では、顔検出など、1 回実行できる処理を考慮し、MFT0 のすべてのインスタンスと共有する必要があります。