基于嵌入式平台的视频编码器的实现
引言
H.264是由ISO(国际标准化组织)/IEC(国际电工协会)和ITU(国际电信标准化部门)合作制定的新一代视频编码标准,目前正处于应用开发阶段。与以往的视频编码标准相比,h.264具有更高的压缩效率和更好的网络适应能力,在相同的图像质量下,h.264所需码率约为MPEG.2的36%、H.263的5l%、MPEG-4的61%u-31。这些优势将使h.264在实时视频通信、广播电视、视频存储播放等领域中得到应用M。伴随着效率的提高,算法的复杂度也提高很多,因此需要研究h.264的压缩算法和它的嵌入式应用。
1 视频编码器的硬件设计
1.1 pxa255处理器的特点
Intel Xscale PXA255蜘是基于Intel XScale微体系结构的Intel PCA处理器,内部采用XScale内核构架,频率高达400MHz,内核扩充许多DSP指令极大提高了多媒体处理能力,同时了提供LCD(液晶显示器)控制器、无线局域网(802.1Ib)、蓝牙、高速红外、USB等多种功能模块。PXA255处理器还使用了BranchTargetBuffer技术,可以提高指令执行(流水线)的效率。作为便携移动设备的首选嵌入式处理器,PXA255内核具有Intel最先进的动态电源管理技术,可以根据处理器所执行的任务情况动态调整工作频率和多种节电模式,适合嵌入式视频采集系统的应用。
1.2 系统的硬件结构
视频编码器的硬件结构如图1所示。从摄像头输出的原始视频流通过USB接口进入PXA255芯片进行h.264压缩,压缩后的码流由网口(ETHERNET)传到主机进行显示,Flash中烧写了嵌入式Linux系统和应用程序,SDRAM用于存储编码过程中的一些临时数据。
2 视频采集的实现
Linux操作系统中使用vide041inux内核模块来进行视频操作的,它针对视频设备提供了一系列的API函数。本文就是利用videAlinux提供的API函数来实现视频采集功能的。视频采集流程如图2所示。
具体视频采集的实现介绍如下:
先调用函数fd=open("dcv/video",O 来打开摄像头RDWR)设备,成功后返回摄像头的文件描述符fd。然后通过调用vi.
dco_get capability0和video_get pictureO两个函数来获得摄像头和图像的基本信息。利用ictol(fd,VIDIOCGPICT,&grab pic.ture)函数设定图像的亮度、对比度、色度等信息。接着调用函数ictol(fd,V1DIoCMCAPTRUE,&grab 开始抓取一帧图像,。bur)再调用函数ictol(fd,VIDIOSYNC,&grab buf)判断这一帧图像抓取是否结束。这样连续的抓取多帧图。像就完成了原始视频信息的采集。图3就是抓取的一帧原始图像。
3 h.264编码算法
h.264编码标准是目前提出的最新的视频压缩标准。与以前的压缩标准相比,h.264通过对帧内预测、帧问预测、变换编码和熵编码等算法的改进来进一步提高编码效率和图像质量。
这些改进包括:
(1)运动估计时,可以灵活地选择宏块(MB)的大小。在宏块划分上,h,264采用了16x6,16x8,8x16,8x8这4种模式;当划分为8x8模式时,又可进一步采用8x4,4x8,4x4这3种子宏块划分模式(如图4所示)进一步划分,这样做既可以使运动物体的划分更加精确,减小运动物体边缘的衔接误差,又可以减小变换过程中的计算量。
(2)1/4像素精度的运动估值。在h.264中通过6阶FIR滤波器的内插获得l/2像素位置的预测值。当l/2像素值获得后,通过取整数像素位置和l/2像素位置像素值均值的方式获得l/4像素位置的值,这样迸一步减小帧间预测误差,减少了经变换和量化后的非零比特数,提高了编码效率。
(3)多参考帧运动估值。以往的编码技术在对P帧(场)图像进行帧间预测时,只允许以前一个I帧(场)图像或P帧(场)图像为参考帧。对B图像进行预测时只允许以前后两个I帧(场)图像或P帧(场)图像为参考图像。h.264则允许在ReferenceBuffer中的多个图像中选取一个(P预测方式)或两个(B预测方式,图像作为参考图像。参考图像甚至可以是采用双向预测编码方式的图像。
(4)参考图像的选取与其编码方式无关。允许选取与当前图像更加匹配的图像为参考图像进行预测,减小了预测误差,提高编码效率。
(5)更精确的帧内预测。在h.264中,每个4*4块中的每个像素都可用17个最接近先前已编码的像素的不同加权和来进行帧内预测。
(6)环路去方块滤波器。h.264/AVC把去方块滤波引入运动估计预测环路中,既可去除方块效应,又能保护图像细节边缘,同时亦改善了图像的主、客观评定质量。而且经过滤波后的图像根据需要放在缓存中用于帧间预测,进一步提高预测精度。
(7)h.264使用统一的可交长度编码国Ⅵz)码表。以往标准的熵编码通常采用变长度的哈夫曼编码,其码表不统一,不能适应变化多端的视频内容,从而影响编码效率的提高。在此,即对h.263不同系数采用不同码表进行VLC作了改进,采用了一个统一码表的IrvIC,同时,又对h.26L中的VCL方法进行了改进,使量化后的DCT变换系数使用基于内容的自适应可变长度编码(CAⅥC),此外还定义了一种基于上下文内容的自适应二进制算术编码(CABAC),其性能比CAVLC更好。从而,借助UVLC,CAVLC及CABAC较好地提高了压缩编码效率。
- 用数字信号处理器优化视频编码器(03-11)
- 基于ADSP-BF561的H.264视频编码器的实现(01-10)
- 基于ADSP-BF561处理器的视频编码器平台(01-16)
- 基于ADSP-BF561的H.264视频编码器系统的实现(03-05)
- 数字图像倍焦系统设计与实现综合实例之:设计需求分析与芯片选型(06-05)
- 面向H.264视频编码器的SoC验证平台(06-05)