次の方法で共有


MediaFrameReference クラス

定義

MediaFrameSource から取得したフレームを表すラッパー クラス。 このクラスのプロパティを使用して、 VideoMediaFrameBufferMediaFrame など、ソースによって提供される特定のフレームの種類にアクセスします。

public ref class MediaFrameReference sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MediaFrameReference final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MediaFrameReference : System.IDisposable
Public NotInheritable Class MediaFrameReference
Implements IDisposable
継承
Object Platform::Object IInspectable MediaFrameReference
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 Anniversary Edition (10.0.14393.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v3.0 で導入)

注釈

メディア フレーム ソースから MediaFrameReference のインスタンスを取得するには、目的のメディア フレーム ソースを使用するように初期化された MediaCapture オブジェクトで CreateFrameReaderAsync を呼び出して MediaFrameReader を作成します。 StartAsync を呼び出してフレーム リーダーを起動したら、TryAcquireLatestFrame を呼び出して、メディア フレーム ソースから最新のフレームを表す MediaFrameReference を取得します。

MediaFrameReader はTryAcquireLatestFrame から取得された MediaFrameReference オブジェクトの循環バッファーを保持します。 バッファー内のすべての MediaFrameReference オブジェクトを使用すると、 TryAcquireLatestFrame を呼び出すと、システムは最も古いバッファー オブジェクトで Close (または C# では Dispose ) を呼び出して再利用します。 オブジェクトが破棄されると、それを使用してフレーム データにアクセスできなくなります。 このため、 MediaFrameReference オブジェクトは、実際にフレームを処理する必要があるよりも長く格納しないでください。 アプリのシナリオでデータへの参照を長く保持する必要がある場合は、提供されている API のいずれかを使用して基になるデータを取得する必要があります。 次のようなものが含まれます。

これらの API が使用されなくなったときに、これらの API によって返されるオブジェクトに対して Close (または Dispose) を呼び出す必要があります。

重要

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

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

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
1803 17134 AudioMediaFrame

プロパティ

AudioMediaFrame

MediaFrameReference によってラップされた AudioMediaFrame を取得します (それが表されるフレームの種類の場合)。

BufferMediaFrame

MediaFrameReference によってラップされた BufferMediaFrame を取得します (それが表されるフレームの種類の場合)。

CoordinateSystem

参照されるメディア フレームの空間座標系が定義されている場合は、その空間座標系を取得します。

Duration

参照されるメディア フレームの期間を取得します。

Format

参照メディア フレームの形式を取得します。

Properties

参照されるフレームのプロパティのマップを取得します。

SourceKind

色、赤外線、カスタム ソースなど、参照されるフレームの送信元の MediaFrameSource の種類を取得します。

SystemRelativeTime

システムに対して相対的で、同じデバイス上の複数のメディア ソース間で関連付けられるタイムスタンプを取得します。

VideoMediaFrame

MediaFrameReference によってラップされた VideoMediaFrame を取得します (それが表されるフレームの種類の場合)。

メソッド

Close()

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

Dispose()

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

適用対象

こちらもご覧ください