MultiSourceMediaFrameReference クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
1 つ以上の MediaFrameSource オブジェクトから取得した時間相関フレームへのアクセスを提供するラッパー クラス。 TryGetFrameReferenceBySourceId を呼び出して、特定のメディア フレーム ソースからフレームを表す MediaFrameReference を取得します。
public ref class MultiSourceMediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 262144)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MultiSourceMediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 262144)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MultiSourceMediaFrameReference : System.IDisposable
Public NotInheritable Class MultiSourceMediaFrameReference
Implements IDisposable
- 継承
- 属性
- 実装
Windows の要件
デバイス ファミリ |
Windows 10 Creators Update (10.0.15063.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v4.0 で導入)
|
注釈
メディア フレーム ソースから MultiSourceMediaFrameReference のインスタンスを取得するには、読み取り元の MediaFrameSource オブジェクトを渡して、MediaCapture オブジェクトで CreateMultiSourceFrameReaderAsync を呼び出して MultiSourceMediaFrameReader を作成します。 StartAsync を呼び出して開始した後、TryAcquireLatestFrame を呼び出して、メディア フレーム ソースから最新の相関フレームを含む MultiSourceMediaFrameReference を取得します。
MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId を呼び出し、目的のメディア フレーム ソースの MediaFrameSourceInfo.Id プロパティの値を渡すことで、特定のメディア フレーム ソースから時間相関メディア フレームを取得します。
各 MultiSourceMediaFrameReader は、MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId から取得された MediaFrameReference オブジェクトの循環バッファーを保持します。 バッファー内のすべての MediaFrameReference オブジェクトを使用した後、 TryAcquireLatestFrame を呼び出すと、システムは最も古いバッファー オブジェクトに 対して Close (または C# では Dispose ) を呼び出して再利用します。 オブジェクトが破棄されると、それを使用してフレーム データにアクセスできなくなります。 このため、 MediaFrameReference オブジェクトは、実際にフレームを処理する必要があるよりも長く保存しないでください。 アプリのシナリオでデータへの参照を長く保持する必要がある場合は、提供されている API のいずれかを使用して基になるデータを取得する必要があります。 次のような方法を使用できます。
- BufferMediaFrame.Buffer
- VideoMediaFrame.SoftwareBitmap
- VideoMediaFrame.GetVideoFrame
- VideoMediaFrame.CameraIntrinsics これらの API によって返されたオブジェクトが使用されなくなったときに Close (または Dispose) を呼び出すのはアプリの役割です。
重要
MediaFrameReference の VideoMediaFrame プロパティによって提供される SoftwareBitmap オブジェクトまたは Direct3DSurface オブジェクトにアクセスすると、これらのオブジェクトへの厳密な参照が作成されます。つまり、含まれている MediaFrameReference で Dispose を呼び出しても破棄されません。 それらのオブジェクトを即座に破棄するには、SoftwareBitmap または Direct3DSurface の Dispose メソッドを明示的に直接呼び出す必要があります。 そうしない場合、最終的にはガーベジ コレクターによってこれらのオブジェクトのメモリが解放されますが、それがいつになるかは不明であり、割り当てられたビットマップやサーフェスの数がシステムによって許容される最大数を上回った場合、新しいフレームのフローが停止します。
MediaFrameSource を使用してフレームをキャプチャする方法については、「MediaFrameReader を使用してメディア フレームを処理する」を参照してください。
メソッド
Close() |
オブジェクトと関連付けられているリソースを破棄します。 |
Dispose() |
アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。 |
TryGetFrameReferenceBySourceId(String) |
指定したメディア フレーム ソースの時間相関 MediaFrameReference の取得を試みます。 |