IMFSourceReader::SetStreamSelection 方法 (mfreadwrite.h)

选择或取消选择一个或多个流。

语法

HRESULT SetStreamSelection(
  [in] DWORD dwStreamIndex,
  [in] BOOL  fSelected
);

参数

[in] dwStreamIndex

要设置的流。 该值可以是以下任意值。

含义
0–0xFFFFFFFB
流的从零开始的索引。
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
第一个视频流。
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
第一个音频流。
MF_SOURCE_READER_ALL_STREAMS
0xFFFFFFFE
所有流。

[in] fSelected

指定 TRUE 以选择流,指定 FALSE 以取消选择流。 如果取消选择流,则不会生成数据。

返回值

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

此方法有两种常见用途:

  • 更改默认流选择。 某些媒体文件包含同一类型的多个流。 例如,文件可能包含多种语言的音频流。 可以使用此方法更改所选的流。 若要获取有关每个流的信息,请调用 IMFSourceReader::GetPresentationAttributeIMFSourceReader::GetNativeMediaType
  • 如果不需要其中一个流中的数据,最好取消选择该流。 如果选择流,则媒体源可能会保留一个包含未读数据的队列,并且队列可能会无限期增长,从而消耗内存。
有关取消选择流的示例,请参阅 教程:解码音频

如果取消选择某个流, IMFSourceReader::ReadSample 方法将返回该流的 MF_E_INVALIDREQUEST 。 其他 IMFSourceReader 方法对取消选择的流有效。

Stream选择不会影响源读取器在内存中加载或卸载解码器的方式。 具体而言,取消选择流不会强制源读取器卸载该流的解码器。

如果安装了适用于 Windows Vista 的平台更新补充,则此接口在 Windows Vista 上可用。

要求

要求
最低受支持的客户端 适用于 Windows Vista 的 Windows 7、Windows Vista 和平台更新补充 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 mfreadwrite.h

另请参阅

IMFSourceReader

源读取者