次の方法で共有


MultiSourceMediaFrameReader.TryAcquireLatestFrame メソッド

定義

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 のいずれかを使用して基になるデータを取得する必要があります。 次のような方法を使用できます。

重要

MediaFrameReferenceVideoMediaFrame プロパティによって提供される SoftwareBitmap オブジェクトまたは Direct3DSurface オブジェクトにアクセスすると、これらのオブジェクトへの厳密な参照が作成されます。つまり、含まれている MediaFrameReferenceDispose を呼び出しても破棄されません。 それらのオブジェクトを即座に破棄するには、SoftwareBitmap または Direct3DSurfaceDispose メソッドを明示的に直接呼び出す必要があります。 そうしない場合、最終的にはガーベジ コレクターによってこれらのオブジェクトのメモリが解放されますが、それがいつになるかは不明であり、割り当てられたビットマップやサーフェスの数がシステムによって許容される最大数を上回った場合、新しいフレームのフローが停止します。

適用対象

こちらもご覧ください