【发布时间】:2016-09-05 19:32:51
【问题描述】:
DirectX 媒体对象 (DMO) documentation 建议,为了提高效率,保存媒体样本(支持 IMediaBuffer 接口)的缓冲区应该被池化,而不是不断地创建/销毁:
最简单的解决方案是为每个样本分配一个新的缓冲区,尽管这样做效率很低。
更好的解决方案是实现一个对象来管理一个池 为此,请在您的 Release 方法中编写代码 调用缓冲区管理器方法的 IMediaBuffer 实现 当引用计数降至零时(而不是删除自身)。 然后缓冲区管理器可以维护一个指向已分配指针的列表 缓冲对象。在缓冲区管理器中创建一个方法来检查 空闲缓冲区列表并返回一个指针,以便您的应用程序可以 需要时访问缓冲区。
现在 DMO 已被 Media Foundation Transforms (MFT) 取代,我在文档中找不到相同的建议。 在管理等效缓冲区对象时(这次实现IMFMediaBuffer 接口)是否仍应考虑这种池化策略?
【问题讨论】: