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 (或 Dispose (C#) ),以便重复使用它。 释放对象后,便不能再使用它来访问帧数据。 因此,存储 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() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 |