MediaFrameReference クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
MediaFrameSource から取得したフレームを表すラッパー クラス。 このクラスのプロパティを使用して、 VideoMediaFrame や BufferMediaFrame など、ソースによって提供される特定のフレームの種類にアクセスします。
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
- 継承
- 属性
- 実装
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 オブジェクトにアクセスすると、これらのオブジェクトへの厳密な参照が作成されます。つまり、含まれている MediaFrameReference で Dispose を呼び出しても破棄されません。 これは、MediaFrameReference.VideoMediaFrame プロパティから取得した VideoFrame オブジェクトによって提供される SoftwareBitmap オブジェクトまたは Direct3DSurface オブジェクトにも適用されます。 それらのオブジェクトを即座に破棄するには、SoftwareBitmap または Direct3DSurface の Dispose メソッドを明示的に直接呼び出す必要があります。 そうしない場合、最終的にはガーベジ コレクターによってこれらのオブジェクトのメモリが解放されますが、それがいつになるかは不明であり、割り当てられたビットマップやサーフェスの数がシステムによって許容される最大数を上回った場合、新しいフレームのフローが停止します。
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() |
アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。 |