(中国人民解放军92124部队, 辽宁 大连 116000)
高清视频技术是多媒体技术中的关键技术,多用于无线通信领域和计算机系统中[1]。多媒体设备从最初单一分辨率到如今的多分辨率立体视频,从而也对视频存储提出了较高要求,采用立体视频能够形象记录,尽管所需存储空间不断变大,但是相对记录的内容依旧不能满足用户需求,在这种情况下,视频压缩就显得尤为重要[2]。面临有限信道的存储空间,需要尽量压缩数字视频存储空间,使用较低比特率传输高质量视频。多媒体技术在当代人们生活中所占比重越来越高,更多移动终端被广泛应用,随着系统更新架构不断推出,越来越多性能较好的系统平台被采用[3]。基于ARM平台是ARM公司新推出的平台架构,其特定的处理器内核和微处理器具有较强兼容性,为编解码器的编码和解码提供良好环境。
由于原始编解码器存在编解码速度慢,耗费时间长的问题,无法满足人们需求[4]。为此,提出了基于ARM平台的高清视频信号编解码器优化设计。通过对编解码器的研究,以及ARM平台分析,可充分了解编解码流程和各个模块功能,同时也对ARM平台处理器机制进行了更加深入的了解,由此可对编码和解码各个功能机制进行优化,通过对比实验可知,优化后的编解码器编解码速度快,且耗费时间较短,能够满足人们需求。
随着我国多媒体技术快速发展,视频技术得到广泛应用,ARM平台具有性能强大ARM微处理器,并带有NEON多媒体处理器,针对高清视频信号的编解码器在该平台上进行优化是安全的,在整个优化过程中,需要采用多种技术,将数据对齐,分别对编码器和解码器进行优化,能够在很大程度上地提高编解码器整体性能[3]。
1.1.1 高清视频信号接口分离
ARM微处理器具有出色的性能和效率,能够适用于各种移动和消费类应用,由于处理器是根据不同系统性能而实现的,为用户苛刻性要求提供了较高编码性能,并在该性能条件下移动设备功率消耗不到300 mW[5]。在该平台下对编码器进行编码可大幅度提高编码能力,同时可保持移动设备高功率水平。由于原始编码器中保留着现场可编程门列(FRGA)模块,为此,首先需在程序中对主要接口分离,将属于现场可编程门列(FRGA)进行拆分,通过对不同函数的构建可在核心源程序中,构建7个不同种类的函数,并对其功能进行描述,如表1所示。
表1 核心编码函数及其功能
由表1可知,现场可编程门列(FRGA)模块主要是对帧间和帧内进行预测,促使残差块掉落,并对帧内部结构进行重新构造,这就包括了帧间和帧内的预测功能。根据其他编码宏块所获取的信息进行预测,在帧间出现的模块信息,为下一个宏块编码提供有效依据,并将信息完整保存,为下一个宏块编码提供参考。该部分功能主要是由上述构建函数而实现的,为此,完整帧内部预测模块函数应包括Y300*macroblock*cache*load、Y300*macroblock*Forward prediction和Y300*macroblock*cache*save三个函数,针对滤波处理,需由Y300*reference*update函数来实现。
针对编码变换、熵编码功能实现,需由Y300*encode、Y300*macroblock*write*cavlc和Y300*nal*encode三个函数实现,因此,在上述函数中,Y300*macroblock*cache*load、Y300*macroblock* Forward prediction和Y300*macroblock*cache*save以及Y300*reference*update被划分到功能模块当中[6]。在ARM平台下的程序结构中,各个函数之间的关系是具有独立性的,不会因此而产生依赖性,因此,在面对宏观模块时,进行预测需将目前宏观模块和预测模块同时当作输入变量,将输入信号作为预测编码,如果当前的宏观模块与预测模块同时进行优化,那么只有残差发生变化时,所得的函数才能包含所有功能,为此需对函数进行拆分,具体拆分过程如下所示:
1)将预测部分从函数中提取出来,采用两个函数和两个全局数组方式,名称和功能如表2所示,在函数中需根据当前预测模块所包含的所有高清视频编码中的亮度与色度信号,调用函数,将获取的残差数据全部存入全局数据组中,作为DCT变换输入[7]。
表2 函数和全局数组名称功能描述
2)在源程序中修改函数,并逐级调用,促使输入的模块为当前宏观模块的预测信息,经过上述一系列高清视频信号接口分离后,输入残差数据,相应函数参数也要进行一定修改。经过调整后的函数被内部程序调用了,那么可降低程序修改量,直接将残差数据输入,为下一步优化提供准确数据。
1.1.2 编码器代码精简
经过上述高清视频信号接口分离后,获得了准确输入数据,将此数据作为基本数据进行编码器档次调整,因此对编码器代码精简是具有必要性的。删除基本档次,将不需要模块去除,如果将编码器内部基本帧内容去除后,那么剩下的档次只有I帧和P帧,去除B帧之后,不能进行实时编码,为此,删除B帧可省去后向预测繁琐编码过程[8]。进行熵编码时,需将自适应的二进制算术编码应用到不同档次的实时编码过程当中,由于编码器只支持熵编码,而不支持嫡编码,为此删除与嫡编码有关的所有程序语句。
1.1.3 编码器逻辑结构精简
在对高清视频帧数进行判定时,由于对代码进行了精简,为此在编码过程中省去了后向预测繁琐编码过程。在代码精简后的编码器中首先对其它帧进行编码,将输入视频数据序列进行多次空间转移以及重新排列,空间存储转移过程如图1所示。
图1 高清视频帧存储空间转移过程
由图1可知:在读入视频数据时,首先应该先保存Y300_ picture过程,然后将数据拷贝下来,同时向边界方向进行扩展,经过扩展后的视频宽度变为32像素,那么主要用于数据预测和视频方向预计[9]。确定预测帧方向后,将读入顺序与输入顺序进行对比,如果输入顺序视频帧数一定数值后,可进行重排,对读入视频帧数序列进行类型判断,最后,对current序列中的视频进行编码。
针对目前函数中存在的序列,经过种类判定后,序列需再次排列,将B帧存在在P帧之后,然后对函数进行重新调用,随后按照当前帧顺序完成编码。针对I帧种类的判断,可对P帧进行编码,当编码完成后,需对P帧进行预测,预测后的数据是需要修正的,由此可知,如果编码时含有B帧,那么B帧种类判定结果比较复杂;如果编码时没有B帧,那么实际帧序列为IPPP…,为此,需对部分逻辑进行简化,去掉current序列,需对每次读入的帧数进行直接判定,但需保留I帧判定方式,优化后的编码器帧判断类型如图2所示。
图2 优化后的编码器帧判断类型
在整个解码器优化的过程中,需利用内联函数将数据对齐,并采用多重优化技术将解码器内部进行优化,该方式能够提高解码器性能,而且针对解码速度也具有一定影响。采用汇编级别优化方式,尤其是在ARM微处理器平台下能够并行处理,基于此,提出了针对并行处理机制的优化方法,在较大程度上能够提高整体性能。经过上述内容能够获取不同形式下的函数,针对热点函数需对其进行优化,以此为基础提高高清视频编码器整体性能。
1.2.1 优化C级别
在C级别优化策略中,需对解码器运算性能进行优化,具体优化过程如下所示:
由于内联函数是函数调用的关键方法,采用该方法不但可以节省函数调用时间,还能使解码整体达到高效率标准,通过对全部函数分析可知,经常被使用的函数是解码器在优化时最好的内联纽带,一般情况下,只要小于等于5个信号发出的指令,那么周期函数是需要通过内联纽带才能完成优化的,具体优化方式有:1)保密内联:通过编译器对全部函数进行校验,通过验证的函数进行内联,然后编译选项,利用内联数据进行选择来完成优化;2)显示内联:在函数中使用关键字进行优化,在头文件中的定义添加关键字,防止在连接过程中对定义重复设置;3)人工内联:通过人工方式,对有关性能影响较大关键函数进行定义替换,完成相应部分调用。
1.2.2 移除多余结构体以及冗余函数
在原始解码过程中,难免会存在各种各样的冗余结构,为此在优化时,需将冗余结构的变量体去除,或者重新设置内存单元来减小内存占用情况,以此为基础提高解码运行效率。在ARM平台下进行解码,此时需要调用函数,以此为基础调回更多数据来填满缓存单元。通常情况下,原始缓存数据大小为128字节,在小的缓存单元中会出现频繁函数调用情况[10],此时需对信号解码状态进行读取,如果调回的函数消耗时间较小,那么提高解码器性能的几率就会大大提高。
根据上述内容,在代码优化过程中,将调回函数数据缓存大小更改为1.5 K个字节,该种优化方式能够有效提高解码整体性能,在解码器使用过程中,利用上层解码数据将解码帧储存到模块中,然后将上层数据通过回调函数方式进行数据收集,进而将整体回调函数去除,该步骤能够加快解码器的解码速度,进而大大提高解码器对高清视频信号解码的效率。
1.2.3 优化熵解码
一般情况下,利用哈夫曼解码方式作为嫡解码[11],可将解码过程变得更加直观化,通常采用二叉树的方式呈现,如图3所示。
图3 二又树解码
查表方式如表3所示。
表3 熵解码符号、码字、码长对应表
由表3可知,解码过程查表可由以下几个表组成,每次进行解码时可读取一个bit,剩下数据可通过如下方式进行。当读取比特为1时,符号为a。当读取比特为0时,需向下跳转:当读取比特为1时,符号为b。当读取比特为0时,需向下跳转;当读取比特为1时,符号为c。当读取比特为0时,需向下跳转;当读取比特为1时,符号为d。当读取比特为0时,符号为e。该表一共分为14个等级,针对每一个等级,进行读取的比特数分别为1-1-1-1-1-1-1-0-0-0-0-0-0。通过完成解码后获得的符号,进行一次性码流最大字节比特数输入,然后将数据进行一一比较进行解码,可获得解码时所耗费时间,如果读入1个比特数据,如果比特为0,那么需要根据上述方式继续查找,如果达到哈夫曼叶节点则说明解码成功。采用这种优化方法,重新建立哈夫曼查表,每一个级别的查找都能快速完成,优化后的查找等级,平均搜索时间较快,能够满足人们快速解码需求。
为了验证基于ARM平台高清视频信号编解码器优化设计有效性进行了如下实验。该实验选取某高清视频编解码器中的一些典型样本进行测试,在ARM平台上利用仿真工具验证优化后结果。
将初步移植到ARM平台上编码器整体性能进行测试,采用同一视频不同分辨率方法,对复杂画面序列进行测试。其中有关视频名称和内容的描述如下所示:
1)Foreman*cif.yuv:该序列表示视频中的人物与背景纹理复杂程度一致,如果发生剧烈运动,那么视频中的镜头会处于剧烈摇晃状态下;
2)Silent*cif.yuv:该序列表示视频处于静镜头环境下,人物与背景纹理不一致,复杂程度相对高;
3)Container*cif*yuv:该序列表示视频中的人物与背景纹理复杂程度一般,镜头集中且运动相对缓慢。
4)Bigships*1024*768.yuv:该序列表示视频背景与人物视频中运动纹理复杂程度一致均较高,运动相对缓慢;
5)Jet*1024*768.yuv:该序列表示视频背景与人物运动纹理复杂程度一致均一般,此时镜头是可移动的。
利用CCS的profile工具,分别对序列进行统计,统计结果如表4所示。
表4 编码器序列统计结果
为了使性能验证结果更加具有可靠性,将原始解码器与本文优化后的解码器序列情况进行对比,结果如表5所示。
表5 两种设计方法序列测试结果对比
由表5可知:由于每个测试的序列长度均为25帧,相比于原始编码器中的序列初始统计结果,优化后的编码器平均编码速度提高了约12倍。
不同解码率在优化后的性能统计结果如表6所示。
表6 不同解码率性能优化结果
根据表6中解码器优化性能,将原始解码器与优化后的解码器平均解码时间进行对比,结果如图4所示。
图4 两种方法解码时间对比结果
由图4可知在高码率条件下的原始解码器耗费时间为50101 s,而优化后的解码器平均解码时间为46390 s;在中码率条件下的原始解码器耗费时间为168153 s,而优化后的解码器平均解码时间为108057 s;在低码率条件下的原始解码器耗费时间为200132 s,而优化后的解码器平均解码时间为102635 s;在普通样本条件下的原始解码器耗费时间为240134 s,而优化后的解码器平均解码时间为187564 s。
根据上述分别对编码器优化性能和解码器优化性能进行验证,可得出实验结论:原始编解码器无论是编码速度还是解码速度都远远小于优化后的编解码器,且时间也是比优化后编解码器耗费较多,由此可知经过优化后的编解码器平均耗费时间较短,编解码速度较快。
通过对编解码器研究,以及ARM平台分析,可充分了解编解码流程和各个模块功能,同时也对ARM平台处理器机制进行了更加深入了解。分别对编码和解码各个功能机制进行优化,可充分提高编解码器整体性能,在完成针对编解码模块优化后,整体性能有了较大程度提高,并通过实验证明,优化后编解码器无论是编码速度还是解码速度都比原始编码器快,且耗费时间短,可充分保证其整体性能的稳定性,更有针对性地完成优化工作。
参考文献:
[1] 张 晗, 段鹏松. 基于通信编码的视频监控无损控制优化设计[J]. 科技通报, 2015, 31(12):209-211.
[2] 武为江, 蒲 涛, 朱华涛,等. 基于波长选择开关的OCDMA 编解码系统实验研究[J]. 中国激光, 2016,20(1):116-121.
[3] 陈天恒, 杨晓静, 王伟力,等. 基于蚁群算法的变电站视频监控联动方案优化设计[J]. 电力系统保护与控制, 2016, 44(2):134-139.
[4] 孙 文, 全惠敏, 吴桂清,等. 基于ARM和以太网接口的振动信号采集系统设计[J]. 电源技术, 2015, 39(9):1963-1964.
[5] 刘隆华, 黄洪全, 黄启哲,等. 基于电弧外特性的故障定位信号发生器优化设计[J]. 电力系统自动化, 2016, 40(9):100-105.
[6] 王风燕, 方华丽, 刘志刚. 基于信号白噪声处理的玉米精密排种器结构优化设计[J]. 农机化研究, 2016, 38(7):30-34.
[7] 刘艳飞, 郭 军. 基于三值光学计算机解码器信号判定系统的设计研究[J]. 激光杂志, 2016, 37(8):54-56.
[8] 龚 裕, 朱海业, 李 楠. 基于正交试验方法的相邻电容传感器优化设计[J]. 北京工业大学学报, 2015,19(1) :32-36.
[9] 时维元, 林正英, 陈希信,等. 线性调频信号低旁瓣脉压窗函数的优化设计[J]. 现代雷达, 2015, 37(10):18-20.
[10] 周 军, 李 娟, 王庆丰,等. 基于自发辐射抑制的红外光机系统优化设计[J]. 光学学报, 2015, 35(3):278-285.
[11] 龚杨阳, 安军社, 朱 岩. CCSDS标准下低码率LDPC码的编码器设计[J]. 电子设计工程, 2017, 25(5):57-60.