
1、USB、VS、MIPI摄像头架构
2、RAW RGB DATA
RAW RGB是sensor的bayer阵列获取的数据(每种传感器获得对应的颜色亮度),摄像头sensor经过光电转换后输出的数据就是RAW data(RAW RGB)。在Sensor中,每一个感光点只能感光RGB其中的一种颜色。所以,通常所说的30万像素或130万像素等,指的是有30万或130万个感光点,每一个感光点只能感光一种颜色。
RGB:传统的红绿蓝格式。比如RGB565,其16bit数据格式为5bitR+6bitG+5BitB,G多一位,原因是人眼对绿色比较敏感。

3、RAW RGB与RGB的区别
4、YUV
Y表示亮度分量(Luma):如果只显示Y的话,图像看起来会是一张黑白照。
U(Cb)表示色度分量:是照片蓝色部分去掉亮度(Y)。
V(Cr)表示色度分量:是照片红色部分去掉亮度(Y)。
①YUV的优点:
与RGB相比,他的优点在于占用更少的空间
②YUV的采样格式
主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0
图像质量:YUV4:4:4>YUV4:2:2>YUV4:2:0

YUV4:4:4采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,4个U,4个V。
YUV4:2:2采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,2个U,2个V。
YUV4:2:0采样,每一个Y对应一组UV分量。意思是4个像素里面的数据有4个Y,1个U,1个V。
③YUV的存储格式
YUV的存储格式分为打包格式(packet formats)和平面格式(planar formats)。


1、视频编码的发展历程

2、视频编码原理
I帧:关键帧,采用帧内压缩技术。
P帧:向前参考帧,在压缩时,只参考前面处理过的帧,采用帧间压缩技术。
B帧:双向参考帧,在压缩时,它既参考前面的帧,又参考它后面的帧,采用帧间压缩技术。
除了I/P/B帧外,还有图像序列GOP。
GOP:两个I帧之间是一个图像序列,在一个图像序列中只有一个帧。在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量。如图:

V4L2:是linux内核中关于视频设备的内核驱动框架,为上层访问底层的视频设备提供了统一的接口。

V4L2驱动核心:主要是构建一个内核中标准视频设备驱动的框架,为视频操作提供统一的接口函数。
平台V4L2设备驱动:在V4L2框架下,根据平台自身的特性实现与平台相关的V4L2驱动部分,包括注册video_device和v4l2_dev
具体的sensor驱动:主要上电、提供工作时钟、视频图像裁剪、流IO开启等,实现各种设备控制方法供上层调用并注册v4l2_subdev。
UVC:是一种usb视频设备驱动。用来支持usb视频设备,凡是usb接口的摄像头都能够支持。

V4L2的核心源码位于drivers/media/v4l2-core,根据功能可以划分为四类:
V4L2注册流程:

videobuf管理:

V4L2 ioctl框架
用户空间对V4L2设备的操作基本都是ioctl来实现的,V4L2设备都有大量可操作的功能(配置寄存器),所以V4L2的ioctl也是十分庞大的。

V4L2驱动主要使用的ioctl命令值如下:


摄像头数据流:
1、摄像头画面卡顿
2、摄像头画面旋转90度或180度问题
3、摄像头画面打不开问题