处理来自视频解码器 MFT 的 MF_E_TRANSFORM_STREAM_CHANGE
Handling MF_E_TRANSFORM_STREAM_CHANGE from video decoder MFT
我正在尝试使用 H264 Decoder MFT
解码单个 H264 帧,但我一直在使用 ProcessOutput()
时遇到问题。我已经尽可能地减少了坏的 HRESULT
,但我目前还在处理 MF_E_TRANSFORM_STREAM_CHANGE
。这发生在我将 pSample 设置为我分配的 output_sample
并调用 ProcessOutput()
之后,因为此解码器需要您分配自己的样本。我尝试使用 SetOutputType()
将输出类型重置为我在 configure_decoder()
函数中的输出类型,但是我得到了一个错误的 HRESULT。不知道下一步该做什么。
您只需关注this at Handling Stream Changes:
- The client calls
IMFTransform::GetOutputAvailableType
. This method returns an updated set of output types.
- The client calls
SetOutputType
to set a new output type.
- The client resumes calling
ProcessInput
/ProcessOutput
.
在上面的问题正文中,您试图在不执行 2 的情况下执行 3。很可能您的媒体类型与 MFT 的有所不同,因此它可能会拒绝它并阻止处理,直到问题得到解决。
我正在尝试使用 H264 Decoder MFT
解码单个 H264 帧,但我一直在使用 ProcessOutput()
时遇到问题。我已经尽可能地减少了坏的 HRESULT
,但我目前还在处理 MF_E_TRANSFORM_STREAM_CHANGE
。这发生在我将 pSample 设置为我分配的 output_sample
并调用 ProcessOutput()
之后,因为此解码器需要您分配自己的样本。我尝试使用 SetOutputType()
将输出类型重置为我在 configure_decoder()
函数中的输出类型,但是我得到了一个错误的 HRESULT。不知道下一步该做什么。
您只需关注this at Handling Stream Changes:
- The client calls
IMFTransform::GetOutputAvailableType
. This method returns an updated set of output types.- The client calls
SetOutputType
to set a new output type.- The client resumes calling
ProcessInput
/ProcessOutput
.
在上面的问题正文中,您试图在不执行 2 的情况下执行 3。很可能您的媒体类型与 MFT 的有所不同,因此它可能会拒绝它并阻止处理,直到问题得到解决。