选择或取消选择一个或多个流。
Syntax
HRESULT SetStreamSelection(
[in] DWORD dwStreamIndex,
[in] BOOL fSelected
);
参数
[in] dwStreamIndex
要设置的流。 该值可以是以下任一值。
| 价值 | Meaning |
|---|---|
|
流的从零开始的索引。 |
|
第一个视频流。 |
|
第一个音频流。 |
|
所有流。 |
[in] fSelected
指定 TRUE 以选择流或 FALSE 以取消选择流。 如果取消选择流,则不会生成数据。
返回值
如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。
注解
此方法有两种常见用途:
- 更改默认流选择。 某些媒体文件包含同一类型的多个流。 例如,文件可能包含多种语言的音频流。 可以使用此方法更改所选的流。 若要获取有关每个流的信息,请调用 IMFSourceReader::GetPresentationAttribute 或 IMFSourceReader::GetNativeMediaType。
- 如果不需要其中一个流中的数据,最好取消选择该流。 如果选择流,媒体源可能会保留未读数据的队列,并且队列可能会无限期增长,占用内存。
如果取消选择流, 则 IMFSourceReader::ReadSample 方法将返回该流的 MF_E_INVALIDREQUEST 。 其他 IMFSourceReader 方法对于已取消选择的流有效。
流选择不会影响源读取器在内存中加载或卸载解码器的方式。 具体而言,取消选择流不会强制源读取器卸载该流的解码器。
如果安装了 Windows Vista 平台更新补充,则 Windows Vista 上提供了此接口。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | 适用于 Windows Vista 的 Windows 7、Windows Vista 和平台更新补充 [桌面应用 |UWP 应用] |
| 支持的最低服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
| 目标平台 | Windows操作系统 |
| Header | mfreadwrite.h |