变换结果量化—FPGA的QP控制
I帧是一个视频序列的第1帧,所以一般变换量化后的质量都比P帧和B帧高,采用的量化参数QP也要比P帧和B帧所采用的QP要小。但是对于一些运动物体少的区域可以考虑用较大的QP来降低编码,就是说I帧的不同区域可以有不同的QP。
P帧一般只对运动宏块有变换量化后的结果,所采用的量化参数QP要比I帧大,至于大多少可以根据运动速度来定,速度慢的话量化参数QP要比I帧大1~2,速度快的话量化参数QP要比I帧大3~4,因为运动速度快时人眼看的就有点模糊,所以图像质量损失大点也感觉不明显。
B帧的结果可以不作为参考帧,所以B帧的量化参数QP要比P帧大,以获得更少的码流。
从上面的分析可以知道,不仅3种帧的QP大小不同,QP也会根据运动情况而变化,这样的QP控制很复杂,而且ASIC的H.264编码器也不一定有这样的控制功能,FPGA正好可以实现这样的控制。
ISP—FPGA的滤波器和锐化器功能
ISP是编码前的视频图像处理,其中滤波强度和锐化强度对码流的影响也很大,滤波算法有很多,其中既能滤波又能保留边缘的滤波算法是很复杂的,用FPGA可以方便地实现不同算法和不同强度的滤波器和锐化器。
智能分析—FPGA的智能分析功能
智能分析主要有两个功能,图像分析和运动分析。运动分析是为了获得视频中的运动物体,如人和车辆等;图像分析是为了获得运动区域和静止区域的分布,可以减少静止区域的码流。一般ASIC的智能分析功能只有运动分析,FPGA可以同时实现这两个功能。
FPGA在智能自适应中的应用
影响码流的因素主要包括:场景内容的变化、视频分辨率、视频帧率、量化参数QP、视频滤波强度、图像锐化强度和图像分析灵敏度等。当场景内容变化时,码流会随之发生变化,为了实现维持码流的稳定的目标,就需要同时调整其他参数,这就是智能自适应。智能自适应需要比较复杂的控制策略来实现,参与调整的参数分布在ISP、智能分析、H.264编码等多个环节,对实时性要求比较高,很适合用FPGA来实现。
FPGA的选择
H.264编码以宏块为单位,在处理过程中必然会涉及到宏块的输入输出和缓存。1个宏块的数据为384字节(256字节亮度数据和128字节色度数据),如果考虑到输入输出和处理的并行,必须设置双份,即768字节,所以使用1K字节的存储块刚好满足要求。参考帧的存储可能包括多个参考帧宏块,需要用多个存储块。ISP中经常需要缓存1行像素,1080p每行有1920个像素,需要2K字节的存储块。
从上面的分析可以看出,适合H.264编码和图像处理的FPGA对内部存储器的要求是:存储块容量小(如1~2KB),并且存储块数量越多越好;另外,对乘法器的要求也是数量越多越好。
结语
从上面的论述中可以看出,降低视频的编码码流是一个系统性的工程,涉及到很多环节,尤其是H.264编码器可以做的工作很多。目前我们用CYCLONE IV的EP4CE115实现了1280×720×25fps的平均码流小于512Kbps,H.264编码档次是main profile with cabac。随着FPGA工艺的进步,FPGA的资源越来越多,运动宏块的预测可以做到越来越准确,编码码流会越来越少,下一步我们准备用CYCLONE V来实现1920×1080×25fps的平均码流小于1024Kbps。
FPGA在高清低码流视频编码中的应用(上)