次の方法で共有


MultiSourceMediaFrameReference クラス

定義

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
継承
Object Platform::Object IInspectable MultiSourceMediaFrameReference
属性
実装

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

重要

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

MediaFrameSource を使用してフレームをキャプチャする方法については、「MediaFrameReader を使用してメディア フレームを処理する」を参照してください。

メソッド

Close()

オブジェクトと関連付けられているリソースを破棄します。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

TryGetFrameReferenceBySourceId(String)

指定したメディア フレーム ソースの時間相関 MediaFrameReference の取得を試みます。

適用対象

こちらもご覧ください