IMFDeviceTransform::SetOutputStreamState 方法 (mftransform.h)

SetOutputStreamState 方法设置设备 MFT 输出流状态和媒体类型。

语法

HRESULT SetOutputStreamState(
  [in] DWORD             dwStreamID,
  [in] IMFMediaType      *pMediaType,
  [in] DeviceStreamState value,
  [in] DWORD             dwFlags
);

parameters

[in] dwStreamID

需要更改状态和媒体类型的输入流的流 ID。

[in] pMediaType

输入流的首选媒体类型通过此参数传入。 仅当传入媒体类型与当前媒体类型不同时,设备 MFT 才应更改媒体类型。

[in] value

指定输入流应转换到的 DeviceStreamState

[in] dwFlags

必须为零。

返回值

该方法返回 HRESULT。 可能的值包括但不限于下表中给出的值。

返回代码 说明
S_OK
已成功转换流状态。
MF_E_INVALIDREQUEST
设备 MFT 目前不支持该请求。
MF_E_INVAILIDSTREAMNUMBER
传递的流 ID 无效。
MF_E_INVALID_STREAM_STATE
无法进行请求的流转换。

注解

此接口方法有助于将输出流转换为指定状态,且在输出流上设置了指定的媒体类型。 当设备源请求更改特定输出流的状态和媒体类型时,DTM 将使用此功能。 设备 MFT 应将指定输出流的媒体类型和状态更改为请求的媒体类型。

如果传入媒体类型和流状态与当前媒体类型和流状态相同,则方法 返回S_OK

如果流的传入媒体类型和当前媒体类型相同,则设备 MFT 必须将流的状态更改为请求的值并返回相应的 HRESULT

如果输出流的媒体类型更改需要输入中的相应更改,则 Device MFT 必须将 METransformInputStreamStateChanged 事件发布到 DTM 以更改相关的输入流。 只有在更改输入流的媒体类型和相应的 HRESULT 后,调用才能返回。

例如,假设设备 MFT 具有两个输入流和三个输出流。 让输出 1 和输出 2 从输入 1 源,以 720p 的速度流式传输。 现在,假设输出 2 的媒体类型更改为 1080p。 为了满足此请求,设备 MFT 必须将输入 1 媒体类型更改为 1080p,方法是将 METransformInputStreamStateChanged 事件发布到 DTM。 DTM 将调用 SetInputStreamState 来更改输入流的媒体类型和状态。 在此调用之后, SetOutputStreamState 必须返回。

要求

   
最低受支持的客户端 Windows 10 版本 1703
目标平台 Windows
标头 mftransform.h

另请参阅

IMFDeviceTransform