主流的camera大多都遵循以下工作原理:
camera latency
step 1: video capture latency
使用集成的MIPI CSI/LVDS等视频输入接口捕获CMOS sensor输出的RAW数据,这个过程产生的延迟称为video capture latency;
step2: ISP pipeline latency
使用集成的ISP硬件对RAW数据进行流水线处理,生成YUV图像,这个过程产生的延迟称ISP pipeline latency;
step3: video encoding latency
使用集成的H.264/265硬件编码器对YUV图像进行编码,生成编码码流,这个过程产生的延迟称为video encoding latency;
camera latency = step1 ,2, 3 + software scheduling
步骤1,2,3的延迟主要取决于芯片硬件性能,而三者之间还存在软件调度的延迟,硬件延迟和软件延迟的总和统称为camera latency;
使用RTSP/RTMP/HLS/SIP等流传输协议将编码码流传送到网络客户端,这个过程受网络拥堵和丢包情况影响较大,产生的延迟称为network latency;
video decoding latency:
客户端使用FFMPEG等解码软件对收到的码流进行解码,得到YUV图像,这个过程产生的延迟称为video decoding latency。
当客户端需要处理多路码流时,每个码流都需要在内存中排队等待CPU处理,所以decoding latency里还包含了软件调度的延迟。较新版本的FFMPEG已经默认支持使用GPU进行解码,可以显著降低CPU占用率、降低decoding latency;
screen latency
rendering latency
客户端使用OpenGL,DirectX等3D加速引擎对YUV图像进行2D和3D处理,包括像素格式转换、图像增强、图形层叠加、PIP贴图、3D投影变换、添加场景光源、计算阴影等处理任务,这个过程称为渲染(rendering),产生的延迟称为rendering latency;
screen latency
渲染之后的图像被保存在显卡上的帧缓存(FrameBuffer)中,显卡的视频控制器(Video Controller)会读取帧缓存中的信息,经过数模转换后送给显示器进行显示,这个过程称为video display,产生的延迟称为screen latency。
latency
视频延迟的总和一般称为端到端(end-to-end)延迟,意思是从视频捕获端到视频显示端的延迟
看到光到ISP处理完,时间需要0.5ms
通常从sensor 感知到光线,到ISP处理完图像,时间<500us。
参考:https://blog.csdn.net/qq_25109183/article/details/108844506