MediaFrameReader.TryAcquireLatestFrame 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
尝试从中MediaFrameSource获取表示MediaFrameReference最新帧的对象。
public:
virtual MediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MediaFrameReference TryAcquireLatestFrame();
public MediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MediaFrameReference
返回
表示 MediaFrameReference 媒体帧源中的最新帧。
注解
此方法并不总是成功。 如果该方法失败,则返回的 MediaFrameReference 将为 null,因此,在尝试使用它之前,应始终测试返回的对象是否为 null。 应从事件的处理程序 MediaFrameReader.FrameArrived 内部调用此方法,而不是手动轮询新帧。
每个MediaFrameReader对象都维护从 TryAcquireLatestFrame 获取的循环缓冲区MediaFrameReference。 使用缓冲区中的所有 MediaFrameReference 对象后,对 TryAcquireLatestFrame 的后续调用将导致系统在最旧的缓冲区对象 ) 上调用 Close (或 Dispose ,以便重复使用它。 释放对象后,不能再使用它来访问帧数据。 因此,不应将 MediaFrameReference 对象存储的时间长于实际需要处理帧的时间。 如果你的应用方案要求你保留对数据的引用更长的时间,则应使用提供的一个 API 来获取基础数据。 其中包括:
应用有责任在不再使用这些 API 时对这些 API 返回的对象调用 Close (或 Dispose) 。
重要
如果访问SoftwareBitmap由属性MediaFrameReference提供VideoMediaFrame的对象Direct3DSurface,系统将创建对这些对象的强引用,这意味着在调用Dispose包含 MediaFrameReference 时不会释放这些对象。 这也适用于从MediaFrameReference.VideoMediaFrame属性获取的视频 帧 对象提供的 SoftwareBitmap 或 Direct3DSurface 对象。 必须直接为要立即释放的对象显式调用 SoftwareBitmap 或 Direct3DSurface 的 Dispose 方法。 否则,垃圾回收器将最终为这些对象释放内存,但无法知道这将何时出现,并且如果分配的位图或曲面的数量超过系统所允许的最大量,将停止新帧的流程。
适用于
反馈
提交和查看相关反馈