嵌入式爱好者

查看: 37334|回复: 5

[Linux] 关于摄像头驱动传输格式的问题。/dev/video0

[复制链接]

19

主题

35

帖子

118

积分

A40i/T3/T507/T527通行证

扫一扫,手机访问本帖
发表于 2021-7-28 14:34:41 | 显示全部楼层 |阅读模式
本帖最后由 generalj 于 2021-7-28 14:45 编辑

请问,摄像像头DVP接口的驱动,即 /dev/video0,能不能配置成读取RAW数据(1个像素用8bit表示),存到缓冲区也是这个格式?例程配置的是V4L2_PIX_FMT_NV12,采到的数据格式为YUV420.

我现在挂的是开发板配套的OV5640,从它的手册上,描述是支持RAW输出的,现在就看驱动支不支持写这个模式,如果能,怎么操作?
企业微信截图_16274539647930.png
回复

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2021-7-28 16:52:42 | 显示全部楼层
您可以通过视频编解码实现格式转化,目前我们没有现成的方法
点评回复 支持 反对

使用道具 举报

19

主题

35

帖子

118

积分

A40i/T3/T507/T527通行证

 楼主| 发表于 2021-7-28 17:13:43 | 显示全部楼层
本帖最后由 generalj 于 2021-7-28 17:27 编辑

我这里不只是要解决格式问题,因为我后期开发选用的是只有RAW输出的sensor,软件变一下格式没有意义。
请问/dev/video0的源文件是哪里编译的?


我的想法是只要通过SCCB接口,能修改sensor的输出模式应该就能实现我的要求吧。

例程里面有类似的判断,是不是代表是可以支持的:
        memset(&fmt, 0, sizeof(struct v4l2_format));
        memset(&sub_fmt, 0, sizeof(struct v4l2_format));
        fmt.type                = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        fmt.fmt.pix.width       = input_size.width;
        fmt.fmt.pix.height      = input_size.height;
        fmt.fmt.pix.pixelformat = csi_format;
        fmt.fmt.pix.field       = V4L2_FIELD_NONE;
        sensor_type = getSensorType(fd);
        db_debug("sensor_type: %d\n",sensor_type);              说明:此处运行结果值为 -1
              sensor_type = 0;                                                      说明:例程直接把值赋值为 0,也就是默认为YUV模式, V4L2_SENSOR_TYPE_RAW值为1
        if(sensor_type == V4L2_SENSOR_TYPE_RAW) {
                fmt.fmt.pix.subchannel->width = 640;
                fmt.fmt.pix.subchannel->height = 480;
                fmt.fmt.pix.subchannel->pixelformat = csi_format;
                fmt.fmt.pix.subchannel->field = V4L2_FIELD_NONE;
        }
        if (ioctl(fd, VIDIOC_S_FMT, &fmt)<0) {
            db_error("set image format failed\n");
            goto err;
        }
如果能找到此驱动的源码,也可以继续研究一下对sensor是怎么样的操作过程。



点评回复 支持 反对

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2021-7-28 17:25:33 | 显示全部楼层
这个节点是驱动生成的,开机服务有个udev,这个服务管理节点生成

点评

刚才您回复时,我又编辑了一下上面的问题  详情 回复 发表于 2021-7-28 17:28
点评回复 支持 反对

使用道具 举报

19

主题

35

帖子

118

积分

A40i/T3/T507/T527通行证

 楼主| 发表于 2021-7-28 17:28:26 | 显示全部楼层
本帖最后由 generalj 于 2021-7-28 17:29 编辑
zhichao 发表于 2021-7-28 17:25
这个节点是驱动生成的,开机服务有个udev,这个服务管理节点生成

刚才您回复时,我又编辑了一下上面的问题,我想找到这个地方驱动的源码。对sensor寄存器操作的地方。
点评回复 支持 反对

使用道具 举报

0

主题

1173

帖子

2195

积分

发表于 2021-7-29 08:38:22 | 显示全部楼层
驱动路径见软件用户手册第一章第二节,您在源码里看一下吧
点评回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-5-18 06:04

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表