m_pTransform->ProcessInput(0, pInputSample, 0) 失败

问题描述 投票:0回答:1

我正在尝试在 Media Foundation 中访问 MJPG 格式的 USB 网络。为了解码缓冲区样本,我使用 MFT 英特尔硬件。

hr = m_pTransform->ProcessInput(0, pInputSample, 0);

此进程输入 API 抛出错误代码 0xc00d36b5。

我需要知道导致错误的原因。

c++ webcam ms-media-foundation
1个回答
0
投票

Microsoft 文档 表示

0xc00d36b5 = MF_E_NOTACCEPTING
或“转换此时无法处理更多输入。”和

如果 MFT 已经有足够的输入数据来生成输出样本,则它不接受新的输入数据,并且 ProcessInput 返回

MF_E_NOTACCEPTING
。此时,客户端应通过执行以下操作之一清除待处理的输入数据:

  • 通过调用 IMFTransform::ProcessOutput 生成新输出。
  • 通过使用 MFT_MESSAGE_COMMAND_FLUSH 消息调用 IMFTransform::ProcessMessage 来刷新输入数据。

因此您可能需要调用或继续调用

ProcessOutput()
来获取解码后的缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.