我正在使用MediaFoundation SourceReader技术开发USB摄像头流媒体桌面应用程序。该摄像头支持USB3.0并提供1080p MJPG视频格式分辨率的60fps。
我使用软件MJPEG解码器MFT将MJPG转换为YUY2帧,然后将其转换为RGB32帧以在窗口上绘制。但是,使用此软件解码器时,我只能在窗口上呈现30fps而不是60fps。我在这个网站上发布了一个问题,并得到一些建议,建议使用Intel硬件MJPEG解码器MFT来解决帧丢失问题。
当调用IMFTransform :: ProcessInput()方法时,我遇到了错误0xC00D36B5-MF_E_NOTACCEPTING。为了解决这个错误,MSDN建议异步使用IMFTranform接口。因此,我使用IMFMediaEventGenerator接口为每个In / Out样本获取事件。成功地,我只能处理一个输入样本,然后连续IMFMediaEventGenerator :: GetEvent()方法返回MF_E_NO_EVENTS_AVAILABLE错误(GetEvent()是同步的)。
我尝试为SourceReader和IMFTransform配置异步回调,但MFAsyncCallback :: Invoke方法没有调用,因此我计划使用GetEvent方法。
我有什么遗漏吗?如果是的话,有人指导我如何将Intel硬件解码器集成到我的项目中吗?
我使用软件MJPEG解码器MFT将MJPG转换为YUY2帧,然后将其转换为RGB32帧以在窗口上绘制。但是,使用此软件解码器时,我只能在窗口上呈现30fps而不是60fps。我在这个网站上发布了一个问题,并得到一些建议,建议使用Intel硬件MJPEG解码器MFT来解决帧丢失问题。
当调用IMFTransform :: ProcessInput()方法时,我遇到了错误0xC00D36B5-MF_E_NOTACCEPTING。为了解决这个错误,MSDN建议异步使用IMFTranform接口。因此,我使用IMFMediaEventGenerator接口为每个In / Out样本获取事件。成功地,我只能处理一个输入样本,然后连续IMFMediaEventGenerator :: GetEvent()方法返回MF_E_NO_EVENTS_AVAILABLE错误(GetEvent()是同步的)。
我尝试为SourceReader和IMFTransform配置异步回调,但MFAsyncCallback :: Invoke方法没有调用,因此我计划使用GetEvent方法。
我有什么遗漏吗?如果是的话,有人指导我如何将Intel硬件解码器集成到我的项目中吗?