Camera
htjacky
这个作者很懒,什么都没留下…
展开
-
Video4Linux框架简介(1)
原作者:Hans Verkuil特性与架构 特性●视频捕获/输出和调谐(/ dev /videoX,流和控制)●视频捕获和输出覆盖(/ dev / videoX,控制)●内存到内存(也称为编解码器)设备(/ dev / videoX,streaming和控制)●原始和切分VBI捕获和输出(/ dev /vbiX,streaming和控制)●无线电翻译 2017-02-08 17:25:14 · 2120 阅读 · 0 评论 -
自动对焦 AF
AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式。自动对焦目前主流的大致上有CDAF,PDAF和Laser assist AF这三种。前两种属于被动式,也就是说相机不需要其他额外辅助的探测手段,直接使用入射光线做判断来对焦;而第三种属于主动式,也就是说需要使用Laser来辅助探测,这在后面会详细介绍。1 CDAF (contras原创 2017-12-19 17:00:00 · 16108 阅读 · 0 评论 -
Video4Linux框架简介(7) - V4L2框架和v4l2_subdev
V4L2框架译注:这是目前看到关于V4L2框架内众多结构关系最提纲挈领的一张图。子设备:v4l2_subdev struct●通常芯片连接到i2c或SPI总线,或通过GPIO引脚控制,但它们也可以表示SoC / FPGA内部模块。●子设备驱动程序可以由不同的桥驱动程序使用,因此它们不能依赖于任何特定的桥驱动程序。●不能进行探测,因此桥接器驱动程序必须翻译 2017-02-10 14:22:58 · 9427 阅读 · 0 评论 -
Video4Linux框架简介(6) - 控制框架
V4L2 PCI驱动实例控制框架译注:在图像传输开始后,会有各种各样的控制参数需要下发给硬件,譬如brightness, contrast等。首先,要增加如下的控制处理回调函数,一些芯片厂商把kernel驱动做小,很多就依赖event机制在userspace侧处理。#include #include struct skeleton {...struct v4l2翻译 2017-02-10 14:00:55 · 1297 阅读 · 0 评论 -
白平衡
1. 为何需要白平衡?讨论白平衡,那就要从色温(CCT)谈起,色温顾名思义就是色彩的温度,但是这个色温和我们一般所认知的冷色、暖色不同,它指的是一个绝对黑体(物理学家想象出来的)从绝对零度(-273℃)开始持续加温所呈现出来的颜色,譬如在炼钢炉里给一块铁加热,就会从黑->暗红->亮红->金黄,接着就融化了,因为铁的熔点是1535℃,所以更高温度的颜色就看不到。但从焊接用的火可以看到蓝色的火焰,原创 2017-12-15 17:21:27 · 9312 阅读 · 2 评论 -
自动曝光
一、自动曝光定义首先需要介绍一下曝光:光线强度乘以光线所作用的时间。定义中的“光线强度”,是指Sensor受光线照射的强度,即照度;定义中的“光线所作用的时间”,是指感光胶片受光线照射的时间,即曝光时间。曝光量以E表示,计算单位就是勒克斯·秒。若要取得一定量的曝光量,则光强度越大,曝光时间越短;光强度越小,曝光时间越长。曝光是拍照最基本也是最重要的技术之一。下图是用从1.3秒到15秒的原创 2017-12-11 18:19:28 · 22686 阅读 · 1 评论 -
Video4Linux框架简介(5) - Streaming
译注:在前几节我们介绍了如何初始化v4l2驱动的框架、查询能力值、设置输入/视频标准/格式,但是还没有真正地传输过一帧数据。万事俱备,只欠东风,本节将会重点介绍"流媒体"中的数据流。流模式,数据流主要通过如下几种方式进行传输:●read/write接口:这种的基本比较少用。●内存映射流 I / O:驱动程序分配的内存,mmap()到用户空间。●用户指针流 I / O翻译 2017-02-10 11:05:48 · 2802 阅读 · 0 评论 -
Video4Linux框架简介(4) - v4l2_ioctl_ops
译注:本节主要会介绍一些v4l2常用的ioctl回调函数,每个驱动开发者可根据硬件需要来做具体实现或者不做实现。1. Input ioctlsvidioc_enum_input,顾名思义就是枚举输入,对于本示例驱动来说,有标准的S-Video输入和HDMI两种。static int skeleton_enum_input(struct file *file, void *priv,s翻译 2017-02-09 10:38:56 · 3711 阅读 · 0 评论 -
Video4Linux框架简介(3) - video_device
video_device是指向v4l2具体的设备,名字同样有些不够准确,事实上,根据注册时传入type(本例中使用的是VFL_TYPE_GRABBER,也就是视频输入设备 -- Camera)的不同,可以分为视频输入,视频输出,VBI,Radio等。第一步先是在驱动的probe函数中添加video_device的初始化并注册:struct skeleton {struct pci_dev翻译 2017-02-08 19:52:43 · 2741 阅读 · 0 评论 -
Overview of the V4L2 driver framework(二)
struct v4l2_device------------------ Each device instanceis represented by a struct v4l2_device (v4l2-device.h). Very simple devices canjust allocate this struct, but most of the time you would翻译 2017-02-03 18:40:57 · 725 阅读 · 0 评论 -
Video4Linux框架简介(2) - v4l2_device
V4L2 PCI基础驱动程序实例struct v4l2_device (1)(译注: 第一步,先基于你的桥接驱动(譬如这里就是PCI设备),添加一个v4l2设备对象,通常v4l2设备都不是独立存在的。)#include // 每个V4L2驱动都需要添加这两个头文件#include MODULE_DESCRIPTION("V4L2 PCI Skeleton Dr翻译 2017-02-08 18:58:54 · 1792 阅读 · 0 评论 -
Linux Media子系统
a. 总线初始化media目录下有media_device, media_devnode和media_entity。唯一的subsys_initcall出现在media_devnode,subsys_initcall(media_devnode_init),那就从这里入手。 313 static int __init media_devnode_init(void)314 {315原创 2018-01-09 09:11:16 · 6927 阅读 · 0 评论