IMFSourceReaderEx::AddTransformForStream 方法 (mfreadwrite.h)
将转换(如音频或视频效果)添加到流中。
语法
HRESULT AddTransformForStream(
[in] DWORD dwStreamIndex,
[in] IUnknown *pTransformOrActivate
);
参数
[in] dwStreamIndex
要配置的流。 该值可以是以下任一值。
值 | 含义 |
---|---|
|
流的从零开始的索引。 |
|
第一个视频流。 |
|
第一个音频流。 |
[in] pTransformOrActivate
指向以下项之一的指针:
- 媒体基础转换 (公开 IMFTransform 接口的 MFT) 。
- 公开 IMFActivate 接口的 MFT 激活对象。
返回值
此方法可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
转换不支持当前流格式,并且无法进行转换。 有关更多信息,请参见备注。 |
|
请求无效。 |
|
dwStreamIndex 参数无效。 |
注解
此方法尝试在当前处理链的末尾添加转换。
若要使用此方法,请进行以下调用序列:
- 调用 IMFSourceReader::SetCurrentMediaType 以设置所需的流输出类型。 在此步骤中,可以指定仅包含主要类型和子类型 GUID 的媒体类型。 例如,若要获取 32 位 RGB 输出,请设置 MFMediaType_Video 的主要类型和 MFVideoFormat_RGB32的子类型。 (有关详细信息,请参阅 媒体类型 GUIDs.)
- 调用 AddTransformForStream。 如果源读取器成功连接转换,则会在转换上设置输出类型。
- 调用 IMFSourceReader::GetCurrentMediaType 从转换获取输出类型。 此方法返回具有完整格式说明的媒体类型。
- (可选)如果要修改输出类型,请再次调用 IMFSourceReader::SetCurrentMediaType ,以在转换上设置完整的媒体类型。
如果使用 MF_READWRITE_DISABLE_CONVERTERS 或 MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING 属性配置了源读取器,则方法将失败。
在异步模式下,如果示例请求挂起,方法也会失败。 在这种情况下,请等待 OnReadSample 回调被调用,然后再调用 方法。 有关在异步模式下使用源读取器的详细信息,请参阅 IMFSourceReader::ReadSample。
可以在流式处理期间随时添加转换。 但是,方法在插入转换之前不会刷新或排出管道。 因此,如果数据已在管道中,则不保证下一个示例应用转换。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | mfreadwrite.h |