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