IMFTransform 配置
IMFTransform Configuration
我想编写一个 IMFTransform
来混合 2 个音频流。但理想情况下,我想以特定于流的方式应用它。例如,我只想混合特定持续时间的流。重申一下,确切的时间和持续时间在每种情况下都会有所不同。
问题是我在 IMFTransform
界面中没有看到任何允许我传递此信息的功能。我错过了什么吗?我应该用一些自定义方法或函数扩展 IMFTransform
接口吗?可接受的前进方向是什么?
您不需要扩展 IMFTransform
接口,这不是应该做的事情。您通常在同一个转换 class 上实现另一个私有接口,并使用常规 COM IUnknown::QueryInterface
(或在某种意义上类似于 IMFGetService
)使其可用。应用程序将创建一个 transofrm 实例,查询此附加接口并传递必要的配置。
我对这个项目使用了类似的方法:MFSkVideoRenderer
- VideoShaderEffect.idl : 声明 COM 对象 (interface/method/library)
- SinkVideoRenderer.h : 添加 public IMFVideoShaderEffect,并声明方法 (STDMETHOD(FunctionName)();)
- SinkVideoRenderer.cpp : 实现方法 HRESULT CSinkVideoRenderer::FunctionName(){ return S_OK: }(如果代码简单,也可以内联在 SinkVideoRenderer.h 中)
- include : #include "VideoShaderEffect_h.h"(将从 .idl 生成)
- 在另一个程序中使用:#include "VideoShaderEffect_i.c"(也将从 .idl 生成)示例参见 MFNodePlayer
您将需要了解一些 MIDL
我想编写一个 IMFTransform
来混合 2 个音频流。但理想情况下,我想以特定于流的方式应用它。例如,我只想混合特定持续时间的流。重申一下,确切的时间和持续时间在每种情况下都会有所不同。
问题是我在 IMFTransform
界面中没有看到任何允许我传递此信息的功能。我错过了什么吗?我应该用一些自定义方法或函数扩展 IMFTransform
接口吗?可接受的前进方向是什么?
您不需要扩展 IMFTransform
接口,这不是应该做的事情。您通常在同一个转换 class 上实现另一个私有接口,并使用常规 COM IUnknown::QueryInterface
(或在某种意义上类似于 IMFGetService
)使其可用。应用程序将创建一个 transofrm 实例,查询此附加接口并传递必要的配置。
我对这个项目使用了类似的方法:MFSkVideoRenderer
- VideoShaderEffect.idl : 声明 COM 对象 (interface/method/library)
- SinkVideoRenderer.h : 添加 public IMFVideoShaderEffect,并声明方法 (STDMETHOD(FunctionName)();)
- SinkVideoRenderer.cpp : 实现方法 HRESULT CSinkVideoRenderer::FunctionName(){ return S_OK: }(如果代码简单,也可以内联在 SinkVideoRenderer.h 中)
- include : #include "VideoShaderEffect_h.h"(将从 .idl 生成)
- 在另一个程序中使用:#include "VideoShaderEffect_i.c"(也将从 .idl 生成)示例参见 MFNodePlayer
您将需要了解一些 MIDL