IMFSourceReader::SetStreamSelection 方法(mfreadwrite.h)

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

Syntax

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

参数

[in] dwStreamIndex

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

价值 Meaning
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 方法对于已取消选择的流有效。

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

如果安装了 Windows Vista 平台更新补充,则 Windows Vista 上提供了此接口。

要求

Requirement 价值
最低支持的客户端 适用于 Windows Vista 的 Windows 7、Windows Vista 和平台更新补充 [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header mfreadwrite.h

另请参阅

IMFSourceReader

源读取器