如何通过 IMFSourceReader 使用自定义堆

How to use a custom heap with IMFSourceReader

在我们的应用程序中,我们使用 IMFSourceReader 来处理要播放的 .mp4 文件的解码。

我们想要做的是在应用程序中保留一定量的内存,然后配置 IMFSourceReader 在分配 IMFSampleObject 时将此保留内存用作其堆。

我想知道尝试实现此目标的最佳方法是什么。我相信我们需要按照本文档 https://docs.microsoft.com/en-us/windows/win32/medfound/writing-a-custom-media-source#generating-source-data 中的建议实施自定义媒体源并使用 MFCreateSourceReaderFromMediaSource 方法。对吗?

此外,我仍然不清楚我们将在何处进行内存分配。我们还需要创建一个新的 IMFMediaBuffer 对象吗?

我认为在源 reader 媒体管道背后重新实现媒体基础基元的情况下提供自定义内存堆是不现实的(另外,在问题的上下文中,值得一提的是它的细节).

但更重要的是,我认为以这种方式做事并没有真正的需要或优势。如果您看到内存压力增加,那么在为源代码 reader 中的原语定制内存分配器方面付出的巨大努力不太可能改善这种情况。这是该功能最初不存在的原因之一。