MultiSourceMediaFrameReader.TryAcquireLatestFrame メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
1 つ以上の MediaFrameSource オブジェクトから最新の時間相関フレームへのアクセスを提供する MultiSourceMediaFrameReference オブジェクトの取得を試みます。
public:
virtual MultiSourceMediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MultiSourceMediaFrameReference TryAcquireLatestFrame();
public MultiSourceMediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MultiSourceMediaFrameReference
戻り値
メディア フレーム ソースから最新のフレームへのアクセスを提供する MultiSourceMediaFrameReference 。
注釈
MultiSourceMediaFrameReference のインスタンスを取得した後、MultiSourceMediaFrameReference.TryGetFrameReferenceBySourceId を呼び出し、目的のメディア フレーム ソースの MediaFrameSourceInfo.Id プロパティの値を渡すことによって、特定のメディア フレーム ソースから時間相関メディア フレームを取得します。
各 MultiSourceMediaFrameReader は、TryAcquireLatestFrame から取得した 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 メソッドを明示的に直接呼び出す必要があります。 そうしない場合、最終的にはガーベジ コレクターによってこれらのオブジェクトのメモリが解放されますが、それがいつになるかは不明であり、割り当てられたビットマップやサーフェスの数がシステムによって許容される最大数を上回った場合、新しいフレームのフローが停止します。