报错记录2:imx6ull适配ov2640摄像头查询不到支持的分辨率大小

本文主要是介绍报错记录2:imx6ull适配ov2640摄像头查询不到支持的分辨率大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 报错问题
    • 排查问题
    • 问题原因
  • 解决方法

报错问题

在通过ioctl(fd, VIDIOC_ENUM_FRAMESIZES, frmsize);接口枚举不到分辨率

排查问题

通过查阅mx6s_capture.c文件,找到枚举分辨率的接口,找到向ov2640驱动调用的代码,在ov2640中查看enum_frame_size函数的实现。

static int mx6s_vidioc_enum_framesizes(struct file *file, void *priv,struct v4l2_frmsizeenum *fsize)
/* 省略部分代码 */ret = v4l2_subdev_call(sd, pad, enum_frame_size, NULL, &fse);if (ret)return ret;
/* 省略部分代码 */

问题原因

在ov2640的驱动源码中,并未实现enum_frame_size接口,因此上层无法获取该参数。
enum_frame_size属于struct v4l2_subdev_pad_ops类型的pad参数中的一个成员,在ov2640中,仅定义了corevideo的部分成员函数,没有定义pad成员。

static struct v4l2_subdev_video_ops ov2640_subdev_video_ops = {.s_stream	= ov2640_s_stream,.g_mbus_fmt	= ov2640_g_fmt,.s_mbus_fmt	= ov2640_s_fmt,.try_mbus_fmt	= ov2640_try_fmt,.cropcap	= ov2640_cropcap,.g_crop		= ov2640_g_crop,.enum_mbus_fmt	= ov2640_enum_fmt,.g_mbus_config	= ov2640_g_mbus_config,
};static struct v4l2_subdev_ops ov2640_subdev_ops = {.core	= &ov2640_subdev_core_ops,.video	= &ov2640_subdev_video_ops,
};

解决方法

在ov2640驱动中添加pad成员与enum_frame_size接口。对enum_frame_size接口的实现如下。

static int ov2640_enum_frame_sizes(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_size_enum *fse)
{struct i2c_client *client = v4l2_get_subdevdata(sd);int i = ARRAY_SIZE(ov2640_codes);if (fse->index >= ARRAY_SIZE(ov2640_supported_win_sizes))return -EINVAL;while (--i)if (fse->code == ov2640_codes[i])break;fse->min_width  = ov2640_supported_win_sizes[fse->index].width;fse->max_width  = fse->min_width;fse->max_height = ov2640_supported_win_sizes[fse->index].height;fse->min_height = fse->max_height;return 0;
}static struct v4l2_subdev_pad_ops ov2640_subdev_pad_ops = {.enum_frame_size = ov2640_enum_frame_sizes,
};static struct v4l2_subdev_ops ov2640_subdev_ops = {/* 省略部分代码 */.pad	= &ov2640_subdev_pad_ops,
};

这篇关于报错记录2:imx6ull适配ov2640摄像头查询不到支持的分辨率大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125136

相关文章

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键