5635|10

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

6410_CE6 Camera [复制链接]

请问高手,在CE6.0的camera驱动里,是如何告知上层应用,它支持多大的preview格式?

我现在遇到的问题的,使用三星的camera DEMO,打开摄像头,但是预览的图像非常小,我在驱动里跟了一下,preview

大小是上层应用传过来的,而我在上层应用里跟踪代码,发现preview大小是通过查询得来的,代码如下:

        //设置视频尺寸
  1.         GetClientRect(hVideoWnd,&rectVideo);
  2.         m_pVideoWindow->SetWindowPosition(0,0,rectVideo.Width(),rectVideo.Height());
复制代码


貌似要通过驱动查询得知的,

请问:1、在驱动的哪一个函数里提供了查询功能?(我的驱动是在三星官方BSP移过来的)
      2、我打印出来的preview大小一直都是width=160,height = 120 ,为什么?在哪里设的?

谢谢

最新回复

嘿嘿,方便后人嘛  详情 回复 发表于 2009-11-25 11:30
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
先用IAMStreamConfig::GetStreamCaps得到camera能输出的media type(包括长宽)
再用IAMStreamConfig::SetFormat设置format.
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上正解!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
"IAMStreamConfig::GetStreamCaps得到camera能输出的media type(包括长宽) "

请问一下,当应用调用上面的操作时,我下面的驱动程序会调用到什么函数呢?
也就是我要怎样告诉应用我的驱动能输出的media type呢?
请问高手指点
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 
驱动通过CSPROPERTY_PIN_DATARANGES返回所支持的所有格式.
通过 CSPROPERTY_PIN_DATAINTERSECTION确认上层传下来的format是否支持
通过CSPROPERTY_CONNECTION_DATAFORMAT将上层传下来的format设置到驱动中去
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢楼上的,您的一句话,圣过我读半天代码,真是太谢谢你了
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
请问ruritanian ,对于USB camera来说,它能预览的图像的大小是不是要受到usb host的制约?
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

8
 
对USB那一块我不清楚,但是本质上USB camera的驱动也是一个camera驱动模型,这一块没听说有什么制约。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
格式查询:
GetPDDPinInfo()函数,通过
m_pStrmInstances.pVideoFormat = SensorModeInfo.pVideoFormat;
指向了SensorModeInfo.pVideoFormat;
而SensorModeInfo 的信息是从GetSensorModeInfo来的,
GetSensorModeInfo()函数里把它指向了m_pModeVideoFormat
    pSensorModeInfo->pVideoFormat = &m_pModeVideoFormat[ulModeType];
所以
数据流程:
m_pStrmInstances.pVideoFormat ? SensorModeInfo.pVideoFormat ? m_pModeVideoFormat

在PDDInit()函数里,对m_pModeVideoFormat结构进行了初始化,这些信息是用来给上层应用查询用的,
例如:有关preview的初始信息:
        m_pModeVideoFormat[PREVIEW].pCsDataRangeVideo[0] = &DCAM_StreamMode_0;
        m_pModeVideoFormat[PREVIEW].pCsDataRangeVideo[1] = &DCAM_StreamMode_1;
        m_pModeVideoFormat[PREVIEW].pCsDataRangeVideo[2] = &DCAM_StreamMode_2;
        m_pModeVideoFormat[PREVIEW].pCsDataRangeVideo[3] = &DCAM_StreamMode_3;
而在CE系统里,对DCAM_StreamMode_0 ~ DCAM_StreamMode_9的定义如下
Public\common\oak\drivers\capture\camera\layered\pdd_null\Sensorformats.h文件

MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_0, 160, 120, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_1, 176, 144, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_2, 320, 240, 16, 15);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_3, 320, 240, 16, 30);
MAKE_STREAM_MODE_RGB565(DCAM_StreamMode_4, 640, 480, 16, 15);
MAKE_STREAM_MODE_YV12(DCAM_StreamMode_5, 176, -144, 12, 15);
MAKE_STREAM_MODE_YV12(DCAM_StreamMode_6, 320, -240, 12, 30);
MAKE_STREAM_MODE_YUY2(DCAM_StreamMode_7, 176, -144, 16, 15);
MAKE_STREAM_MODE_YUY2(DCAM_StreamMode_8, 352, -288, 16, 15);
MAKE_STREAM_MODE_YV12(DCAM_StreamMode_9, 352, -288, 12, 15);

所以,在上层应用调用directShow的查询接口获得摄像头支持的输出格式
m_pCaptureStreamConfig->GetStreamCaps(i, &m_pamtCaptureStream, (BYTE*)&scc);
在AdapterHandlePinRequests()函数判断进入
case CSPROPERTY_PIN_DATARANGES:
memcpy( pCsDataRangeVideo, m_pStrmInstances[lPinId].pVideoFormat->pCsDataRangeVideo[iCount], sizeof (CS_DATARANGE_VIDEO) );

把驱动的支持信息传给应用。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼主总结的很好
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
嘿嘿,方便后人嘛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表