我很难理解在什么情况下可以使用IMF2DBuffer。在QueryInterface上使用IMFMediaBuffer会导致No such interface supported中的结果。(我正在使用Windows 10。)
我找到了这句话,但很模糊:
这个接口是专门为图像数据设计的。若要获取指向此接口的指针,请在媒体缓冲区上调用QueryInterface。并不是所有的媒体缓冲区对象都公开这个接口。,但是如果媒体缓冲区确实公开了IMF2DBuffer接口,您应该使用该接口来访问数据,如果可能的话,而不是使用IMFMediaBuffer。您仍然可以使用IMFMediaBuffer接口,但它可能效率较低。
我找不到任何信息,在什么情况下,它做或不揭露这一点。它依赖媒体吗?输出格式?编解码器?操作系统版本?它真的没说。
发布于 2020-03-17 21:54:54
引用的语言暗示了你应该如何使用这个界面。您不应依赖媒体、输出格式、编解码器或操作系统版本。
其思想是,“有时”您可以拥有这个接口,以便更有效地访问数据。因此,如果您想微调处理,您可以有一个执行IMF2DBuffer的代码路径和用于一般IMFMediaBuffer的回退编解码路径。
这是文档信息,这是合理的。
IMF2DBuffer的可用性是特定于实现的。当它可用时没有直接提到,因为它是一个承诺:如果它被记录下来,那么就有一个承诺遵循它,没有理由采取这样的限制。
接口本身的文档说明,当数据以非标准的方式有效存储时,这个接口会有所帮助。IMFMediaBuffer访问将不得不重新排列数据,这可能并不是那么高效的性能。IMF2DBuffer方法反过来帮助完成某些任务/数据访问,而无需“昂贵”的数据重新安排。
https://stackoverflow.com/questions/60728202
复制相似问题