我正在尝试在 Media Foundation 中访问 MJPG 格式的 USB 网络。为了解码缓冲区样本,我使用 MFT 英特尔硬件。
hr = m_pTransform->ProcessInput(0, pInputSample, 0);
此进程输入 API 抛出错误代码 0xc00d36b5。
我需要知道导致错误的原因。
Microsoft 文档 表示
0xc00d36b5 = MF_E_NOTACCEPTING
或“转换此时无法处理更多输入。”和
如果 MFT 已经有足够的输入数据来生成输出样本,则它不接受新的输入数据,并且 ProcessInput 返回
。此时,客户端应通过执行以下操作之一清除待处理的输入数据:MF_E_NOTACCEPTING
- 通过调用 IMFTransform::ProcessOutput 生成新输出。
- 通过使用 MFT_MESSAGE_COMMAND_FLUSH 消息调用 IMFTransform::ProcessMessage 来刷新输入数据。
因此您可能需要调用或继续调用
ProcessOutput()
来获取解码后的缓冲区。