关于YUV2和RGB ROW DATA数据格式(只要能提供正确思路,即给分;如果有解决方案或source code,可给高分)

King_Dragon 2004-04-05 10:39:58
本人在项目开发的过程中,遇到了如下困惑,请大虾不吝赐教:
1、摄像头传出的数据有YUV422、RGB ROW DATA(原生RGB数据,每个PIXEL只有一个色彩信息)两种数据格式,怎样判断source filter连接的是哪种数据类型,即如何判断数据源的数据类型?
2、怎样获取视频流中YUV422或RGB ROW DATA数据进行分析,是利用Sample Grabber filter还是其它方式?
3、怎样显示YUV422或RGB ROW DATA数据,是先转换成RGB24格式还是可以直接使用directdraw overlay方式?
...全文
242 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huqiming 2004-04-06
  • 打赏
  • 举报
回复
CMediaType::Format返回的就是videoinfoheader格式(有个是videoinfoheader2格式)

Sample Grabber Filter我没用过,如果没有他,是不是可以显示?如果是,那就是用法错误而已,问题不大
King_Dragon 2004-04-06
  • 打赏
  • 举报
回复
对于问题1,我尝试在绑定视频设备后,进行媒体类型的判断:
AM_MEDIA_TYPE* pmt;
IAMStreamConfig *pVSC;
m_pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
NULL,
m_pCap, // source filter
IID_IAMStreamConfig,
(void **)&pVSC);
pVSC->GetFormat(&pmt);
结果:pmt->majortype为 MEDIATYPE_Video;
但无法根据pmt->subtype确定媒体类型,我尝试用
if (pmt->subtype == MEDIASUBTYPE_RGB24) 显示类型;方式来判定媒体类型,使用了全部Video Subtypes 也没有发现匹配的媒体类型。
视频设备为VFW PC CAMERA,VGA输出。
现在问题是:
1、怎样根据实际的subtype得出连接用的媒体类型?
2、是不是要在整个Filter Graph Manager建立后,才能进行媒体类型的判断?

对于问题3,是在显示之前插入Sample Grabber Filter,整个Filter Graph Manager的媒体格式必须一致,我在设置Grabber Filter的媒体格式为YUV格式后,就无法显示视频,正确的设置方式应该是什么呢?
huqiming 2004-04-05
  • 打赏
  • 举报
回复
1。在连接时有一个属性,mediatype,你可以获取format格式。
VIDEOINFOHEADER,在这里面有压缩方式,fourcc的,就知道是yuy2还是什么别的。

如果用vfw方式,可以在采集启动时设置格式,自己决定用哪一个的。

2。获取数据可以用你说的方式,(dshow方式),也可以运行时获取ibasevideo的接口,pause后getcurrentbuffer

3.你如果用dshow方式,没有你说的问题,硬件一般都支持yuv方式,而且yuv比rgb的显示速度还快。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧