处理来自视频解码器 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:

  1. The client calls IMFTransform::GetOutputAvailableType. This method returns an updated set of output types.
  2. The client calls SetOutputType to set a new output type.
  3. The client resumes calling ProcessInput/ProcessOutput.

在上面的问题正文中,您试图在不执行 2 的情况下执行 3。很可能您的媒体类型与 MFT 的有所不同,因此它可能会拒绝它并阻止处理,直到问题得到解决。