【发布时间】:2019-03-24 17:00:56
【问题描述】:
我对 Windows Media Foundation API 非常陌生。我尝试创建一个可以显示和操作摄像头视频输入流的程序。
我正在使用 Media Foundation 进行视频流读取,支持的颜色格式为 NV12,因此我必须将其转换为 RGB 或 ARGB 以创建 Opengl 纹理对象。
我尝试在 CPU 端使用纯 c++ 代码来实现,但性能非常糟糕。然后我尝试使用IMFTranform进行颜色转换,性能非常好,但我遇到了一个奇怪的问题。IMFTransform::Process返回S_OK,但我一直得到冻结的图像输出。结果图像像素不是实时更新的,一直冻结很多帧,而且冻结时间越来越长。如果我使用纯 c++ 代码进行颜色转换,那么一切正常。
这是我的代码,https://gist.github.com/zhiqiang-li/16d1a6a1b00e8fb39847c8ca323b5604。请让我知道你认为我做错了什么。
【问题讨论】:
标签: camera ms-media-foundation color-conversion