数字编解码

2024-09-18

数字编解码(精选9篇)

数字编解码 篇1

引言

近年来, 我国音视频产业发展迅猛, 已成为全世界音视频产品生产和销售第一大国。音视频产业已成为国民经济与社会发展的重要产业, 是电子信息产业的三大组成部分之一。未来几年, 将是中国音视频产业加快自主研发、发展核心技术, 赶超世界先进水平的重要时期。在数字音视频产业中, 视频数据的编码压缩技术是整个产业依赖的共性技术, 是音视频产业进入数字时代的关键技术, 因而成为近20年来数字电视以及整个数字视频领域国际竞争的热点。

1 数字视频编解码技术标准

1.1 MPEG标准

ISO/IEC JTC1/SC29/WG11运动图像专家组提出了MPEG系列标准, 主要有MPEG-1、MPEG-2、MPEG-4三大标准。

MPEG-1标准是用于数字存储媒体, 总比特率1.5 Mb/s以下的运动图像及其声音信号的国际编码标准。M P E G-1标准目前主要应用于V C D制作和M P 3格式 (M P E G-1的音频第三层) 。

MPEG-2标准是目前消费类电子视频设备中使用较广泛的视频编码标准。在数字存储媒体上, 应用于DVD/SVCD;在数字电视广播 (包括地面、有线和直接卫星广播) 上, SDTV和HDTV均选用MPEG-2视频标准。

M P E G-4标准是目前学术界比较关注的视频编解码标准之一。在应用上, M P E G-4企图涵盖从低码率 (视频64 kb/s) 到高码率 (50 kb/s甚至更高) 的各种应用;在技术上, 提出了面向对象编码的概念。M P E G-4的档次大致可以分为两组, 第一组包括SP (simple profile) 和ASP (advanced simple profile) , 其技术框架沿袭了传统的以宏块为单位的压缩框架;第二组包括其他的档次 (core profile、main profile等) , 其中包括面向对象的压缩技术、技术框架和传统的标准有很大的不同。2 0 0 0年左右, I T U的视频编码专家组 (V C E G) 制定的H.2 6 4标准在沿袭传统技术框架的同时压缩效率超过了M P E G-4A S P。经过协商, 两个标准化组织决定成立联合视频编码工作组J V T, 共同制定下一代视频压缩标准, 新标准在I T U系统中仍然使用H.2 6 4, 在I S O中被作为M P E G-4的第10部分。

1.2 H.26x标准

H.261标准是ITU的视频编码专家组提出的基于ISDN的视讯电话与视频会议的视频压缩标准。目前, 随着视频编码标准各方面性能的不断提高, 除了在一些视频会议系统和网络视频中为了向后兼容还支持H.261外, 用H.2 6 1的产品越来越少。

H.263标准是H.261的增强版, 在编码算法上做一些改进和完善, 提高了性能和纠错能力。H.263效能比H.261高出很多。目前还应用于视频会议系统和网络视频。

H.2 6 4标准是目前基于传统技术框架的压缩效率最高的视频编码标准, 应用前景非常广阔。

H.265是ITU-T VCEG正在规划中的视频编码标准, 其目标是更高的压缩效率, 更好的网络适应性。

2 知识产权现状

2.1 专利情况

标准在推动技术进步和相关产品发展的同时也涉及大量专利。表1是典型国际视频标准涉及的国家/地区及其专利数量。

注: (1) 数据截至2010年3月31日; (2) () 中的是目前尚在专利保护期的专利数。

从表1可见, 已有专利中美国和日本是最主要的专利技术申请国。很多国外公司利用在该领域上的技术优势, 申请了大量专利 (包括很多非核心专利) , 例如H.264/AVC标准中涉及到了日本松下公司在2 7个国家/地区申请的377项专利。在我国, 专利申请数量排在前几位的也都是国外的公司, 最多的是韩国三星、其次是松下和飞利浦。从表2中可看出随着数字音视频编解码技术的不断进步, 涉及到我国专利的数量大幅上升, 意味着中国企业要采用以上国际标准需被授权的专利越来越多。我国高校 (如清华大学) 、科研机构 (如中科院计算所) 和公司 (如华为) 加紧研究、通过集体创新, 也有不少相关的专利。

2.2 专利许可情况

很多国外跨国巨头公司利用先进的技术优势组成专利联盟, 联盟内各专利权人运用交叉许可的方式, 组建专利池统一对外进行专利许可, 使专利池成为打击不拥有专利的产品竞争者的工具, 从而达到垄断市场、牟取巨额利润的目的, 阻碍了产业发展, 损害了消费者的利益。这是全球范围内知识产权和标准领域面临的一个严峻挑战。目前在数字音视频编解码技术领域影响较大的M P E G L A维护的系列专利池 (M P E G-2、M P E G-4、H.2 6 4) 就存在这类问题。表2是国际视频标准许可费用收费模式和收费费率比较。

注:此对照表仅为参考方便, 具体条款和数额以相应组织的法律文件为准

根据MPEG LA宣布的MPEG-4、H.2 6 4/AVC的专利许可政策, 需要缴纳专利费的厂商有两种类型:编解码产品制造商和视频节目运营商。对于中国的数字音视频产业来说, 可以说是一种巨大的压力和负担。更危险的是MPEG LA的专利池远未包含标准所有的必要专利, 一些国外知名公司已经宣称将单独收费。同时, 标准将直接影响芯片、软件、整机和媒体文化产业运营整个产业链条。要培育健康的、能够良性发展的数字化音视频产业, 掌握自主知识产权、实施标准战略势在必行。

3 产业发展分析

3.1 发展状况

近年来, 我国数字音视频产业发展迅猛, 产业规模逐渐壮大, 数字化已成为了音视频产业发展的总趋势。

广播电视行业是我国音视频产业的第一大分类行业。2003年, 我国全面启动了数字有线电视的转换。截至2009年第四季度, 中国有线数字电视已达到6 348万户, 有线数字电视改造工作到2 0 0 9年第四季度已逐步的落实到位, 各地运营商在一定程度上加快了数字化进程。预计到2 0 1 1年我国有线数字电视用户将达到1.147亿, 将基本实现有线电视全数字化。

互联网电视 (IPTV) 作为“三网融合”的主要载体之一, 产业发展迅猛, 从2003年的不足两万户, 到2009年初已经超过了300万户, 上海已经成为全国首个IPTV用户超百万的城市。据统计, 国内IPTV用户数呈稳步上升趋势, 到2010年底中国IPTV用户预计将超过1 000万户。

数字音视频产业是各种新技术聚集的领域, 涉及大量关键核心技术, 我国在核心技术掌握上不足, 需要加紧研究。我国音视频产业发展不仅仅受制于相关技术, 还受到相关行业发展政策、宽带接入技术、内容服务商等的影响。今年, 国务院总理温家宝主持召开国务院常务会议, 决定加快推进电信网、广播电视网和互联网三网融合, 明确了“三网融合”的时间表, 提出了阶段性目标。同时, 具有自主知识产权视频编解码技术标准产业化进程需加速, 产业成熟度还需提高。广电部门、电信部门已在大力推动自主视频标准的应用, 促进了数字音视频产业化不断深入。

3.2 产业发展展望

我国将继续大力发展数字化广播电视网, 相关视频技术向高清、全高清发展, 音频技术趋向于环绕立体声, 实现视听内容的全部数字化。网络电视产业将蓬勃发展, 将有效运用宽带有线电视网、互联网向家庭用户提供包括数字电视在内的多种交互式服务。数字电视和网络电视市场规模巨大, 成为“三网融合”、“三电一体”的主要载体之一。

数字电影产业将加速发展, 其中3 D电影产业的兴起, 形成电影业的第三次革命。随着3 D立体显示研究不断深入, 多视点编码算法等技术的不断成熟, 3D投影技术和3D电视的研究也将快速实现产业化和商业化。

安防监控、手机电视、移动电视、视频通信等新兴产业均将成为数字音视频产业发展的重要力量, 形成巨大市场。

4 工作建议

(1) 大力促进自主知识产权标准的产业化

建议在互联网视频应用、数字电视、直播卫星、安保监控等诸多领域中, 鼓励采用自主知识产权标准, 建议国家相关部门进一步加大政策、资金和市场等方面的支持力度, 特别是针对服务提供商推出切实有力的鼓励措施 (例如采用自主知识标准给予补贴或税收优惠) 。只要服务提供商愿意采用自主标准, 自然会有更多有实力的国内外企业参与, 很快就会形成成熟的数字音视频产业链。

(2) 加强专利政策对企业的保护、鼓励作用

不论是企业还是科研院所, 如看不到核心技术能够给他们带来显著的收益, 就不会愿意在科研 (特别是基础技术研究) 方面进行投入。因此, 如何让企业和科研院所能够通过专利或者核心技术获得应有的收益, 加强专利政策对企业的保护、鼓励作用, 是政府制定政策时需要考虑的核心问题。

摘要:介绍了国外数字视频编解码技术标准现状:MPEG-1、MPEG-2、MPEG-4三大标准和H.26x标准, 分析了标准涉及的知识产权中的专利和专利许可情况, 并根据当前产业需求提出了发展建议。

关键词:数字视频编解码技术,标准,产业应用

数字编解码 篇2

摘要:AMBE2000是美国DVSI公司推出的一种具有专利技术的语音压缩/解压芯片。利用该芯片能进行全双工的压缩和解压,从而以极高的压缩率提供高品质的语音质量。文中介绍了它的主要特点、引脚功能、控制接口及应用电路。

关键词:语音压缩;格式字;FEC;VAD;AMBE2000

1 引言

AMBE2000是一种高性能、低功耗的单片实时语音压缩解压芯片,其压缩率可在2kbps~9.6kbps范围内由软件调节,且具有FEC(前向纠错)、VAD(语音激活检测)功能和DTMF信号检测功能,因此可广泛应用于卫星通信、数字移动通信、保密通信、语音邮件等方面。

2 引脚说明及特性参数

AMBE2000的主要特性及参数如下:

●具有高品质的语音质量;

●压缩数据率可在2kbps~9.6kbps范围内用软件调节;

●纠错率范围为50bps~7.2kbps;

●具有VAD(语音激活检测)/CNI(插入舒适噪声)功能;

●具有DTMF信号检测和产生功能;

●电源电压:+3.3V;

●工作温度范围:-40~+100℃;

●采用100脚TQFP封装。

表1 主机接口选择

端口类型选择脚CH_SEL1CH_SEL0主动有格式00主动无格式01被动有格式10被动无格式11

表2 语音数据位选择(无格式)

字中的语音数据位个数选择脚BA_SEL1BA_SEL0100201310411

AMBE2000的引脚说明如下:

CHANN_SEL0~1(75,77)脚:主机接口类型选择端?具体操作见表1所列;

BAUD_SEL0~1(80~81)脚:无格式语音数据位选择端?具体操作见表2所列?

RATE_SEL0~4(70~74)脚:语音压缩率与前向纠错率选择端?具体操作见表3所列;

CODEC_SEL0~1(84~85)脚:A/D和D/A接口选择端口?具体操作见表4所列;

表3 AMBE2000压缩数据率选择表

管脚74管脚73管脚72管脚71管脚70语音速率(bps)FEC速率(bps)总数据率(bps)11111200002000100003600036001000140000400010110240016001001048000480011000400080010111360012001100124002400100116400064001101040002400110114400280072001010080000800011100400040001010196000960011101360060001111024007200

*注:压缩数据率也可通过控制字改变。

表4 A/D-D/A硬件配置

A/D-D/A类型CODEC_SEL1CODEC_SEL0普通16位线性(采样率8kHz)00AD公司AD73311(采样率32kHz)01普通μ律(采样率8kHz)10普通A律(采样率8kHz)11

VAD_EN(86)脚:使能语音激活检测功能端(高电平有效);

ECHOCAN_EN(78)脚:使能回声消除功能端(高电平有效);

SLEEP_EN(83)脚:休眠模式控制端口(高电平有效);

SLIP_EN(82)脚:滑动模式控制端口(高电平有效);

X2/CLKIN(68)脚:16.384MHz时钟输入脚;

X1(67)脚:内部振荡器输出;

RESETN(69)脚:复位脚(低有效);

EPR(20)脚:编码包就绪标志;

SOFT_EN(79)脚:使能软件误码判断端口(高电平有效);

CHAN_RX_DATA(32)脚:用于接收主机数据到AMBE2000;

CHAN_TX_DATA(42)脚:用于将AMBE2000数据发送到主机;

CHAN_RX_LK(28)脚:主机接收时钟;

CHAN_TX_CLK(34)脚:主机发送时钟;

CHAN_TX_STRB(38)脚:主机发送/接收帧同步脉冲;

CHAN_RX_STRB(30)脚:主机接收帧同步脉冲端口;

CODEC_RX_STRB(29)脚:A/D帧同步脉冲接收端;

CODEC_TX_STRB(37)脚:D/A帧同步脉冲发送端口;

CODEC_RX_DATA(31)脚:A/D发送PCM数据给AMBE2000;

CODEC_TX_DATA(41)脚:AMBE2000发送PCM数据到D/A;

CODEC_RX_CLK(27)脚:A/D时钟;

CODEC_TX_CLK(33)脚:D/A时钟;

CLOCK_MODE(51)脚:时钟模式选择端口,该端口接高电平时选择晶体振荡模式;当接低电平时选择外部时钟);

VDD(8,11,12,23,36,39,44,45,46,47,48,49,54,57,64,76,87,90脚):正电源;

GND(1,9,10,25,26,35,40,50,52,53,56,63,65,88,89脚):接地端;

其余管脚:N.C,悬空不用。

3 主机接口及数据格式

AMBE2000与主机的接口数据格式分为两种:一种是有格式;另一种是无格式。

3.1 有格式

在有格式情况下,AMBE2000大约每20ms生成一个压缩数据包,这个数据包共由24个字组成;数据包生成后,其EPR管脚会输出一个短的负脉冲指示,依此来决定对数据包的处理。数据包的具体构成如下:

格式字0:固定为x13ECH,为数据包的头;

格式字1:高8位用于芯片功率控制,0x00表示正常工作模式;0x55表示低功耗模式。低8位的.位功能(高有效)如表5所列;

表5 格式字1格式

类型7:MSB6543210:LSB输入补丢失帧NCNCNCNCNC插入舒适噪声NC输出NCNC解码帧重复解码静默指示NCNC编码静默检测编码DTMF检测

表6 格式字2-6格式

字2字3字4字5字6语音速率(bps)FEC速率(bps)总数据率(bps)0x00280x00000x00000x00000x64282000020000x50480x00000x00000x00000x39483600036000x52500x00000x00000x00000x41504000040000x10300x00010x00000x34la0x6750240016000x53600x00000x00000x00000x6c604800048000x52500x20100x00000x00000x746040008000x50480x00010x00000x24120x6860360012000x10300x00050x180c0x30180x7360240024000x6b800x00000x00000x00000x6c806400064000x52500x00010x00000x542a0x5280400024000x52580x00090xle0c0x41270x73904400280072000x7fa00x00000x00000x00000x52a08000080000x52500x00050x20100x68340x72a04000040000x7fc00x00000x00000x00000x69c09600096000x50480x000e0x40100x6a2e0x65c0360060000x10300x000e0x68la0x511b0x76c024007200

格式字2~6:用于指定和表示芯片的压缩数据率,具体如表6所列;

格式字7:该位在输入数据包中不用,因此,在设计时,应将其设置为0x0000;而在输出数据包中表示误码率;

格式字8、9:不用,通常设置为0x0000;

格式字10:高8位用于控制和表示DTMF信号的幅度,范围从3~-60dBm0(例如:0x03=3,0x00=0,0xC4=-60);低8位用于控制和检测DTMF信号,所发出和检测的信号为标准的北美呼叫音。DTMF代码见表7所列。

表7 DTMF代码

DTMF代码DTMF数字DTMF代码DTMF数字0x8010x8420x8830x8140x8550x8960x8270x8680x8A90x8700x83*0x8B#0x8CA0x8DB0x8EC0x8FD0xFFDTMF无效

表8 格式字11格式

类型7:MSB6543210:LSB输入NCNC语音激活(1)NC休眠(1)回声消除(1)编码/解码选择输出NCNCNCNC休眠(1)回声消除(1)编码/解码选择

格式字11:高8位用于解码器音量控制,其中0x80表示原音量,0xFF为原音量的两倍,小于0x80为减小音量;低8位的功能如表8所列。其中编码/解码选择如下:00为编码+解码;01为编码;10为解码;11为不用;

格式字12~23:压缩数据信息。根据数据率的不同,其数据位数也不相同。数据位数和压缩数据率的关系如下:

位数=压缩数据率(bps)/50(bps)

例如,在最低压缩率为2kbps时,数据位数为:

2000/50=40位。

3.2 无格式

在无格式情况下,只需要发送数据位,但每秒会减少50bit的数据(与有格式情况相比),因而会降低语音质量。其每个字中包含的数据位数参见表2。每帧的字数和压缩数据率的关系如下:

字数=[压缩数据率(bps)/50(bps)]/位数

式中,所选的位数必须能被选择的压缩数据率整除。AMBE2000串口时钟速率最高为2.048MHz。

图1 用AMBE2000和AD73311构成的语音采样、压缩、解压缩的实用电路

4 应用电路

图1所示是用AMBE2000和AD73311构成的语音采样、压缩、解压缩实用电路,其中AD73311是A-DI公司的一种声码器芯片,它的采样速率可以达到32kHz、16位采样数据,且具有较好的声音质量,因而可配合AMBE2000使用,在实际应用中取得了良好的效果。图中,AMBE2000选择的管脚接法将压缩率定义为2kbps?同时电路设置在外部输入时钟模式,且回声消除、语音激活、滑动补偿功能有效,其EPR脚用来输出数据包就绪指示信号。在电路上电正常工作以后,还可以通过软件对AMBE2000进行重新设置,因此,AMBE2000语音压缩编解码器应用起来十分灵活。

5 结束语

数字编解码 篇3

1 数字电视编码的概念

编码,是通过特定比特的二进制码来表示量化成功后的值,每一个二进制数都有它独特对应的二进制的值,按照一定次序排列后就能得到由二进制的符号组成的数字信号流。

信息发生的来源就是信源,信源就是提供信息的对象。信源是个复杂的概念,有很多对象可以成为信源,我们更多在意的是信源发出的信息内容和信息的载体或者形式。对信源进行编码的过程就是对信息数据进行压缩的过程,将信源发出的信号按照一定的次序进行排列,这样可以保障信息传输的真实性和安全性。在允许一定失真的情况下,信源输出可以以最小数量的比特来进行系统的描述成独立分布的输出形式。

将模拟信号进行数字化处理,是现代成像技术主要采用的方法,但是单一简单的数字化处理还不能满足直接进行运输和存储的条件,还需要进行各种处理后才能进行运输和存储。这些处理的方式包括信源编码和信道编码,信源编码主要是为了提高传输效率,信道编码主要是为了保障传输过程中数据信息的安全性。目前,我国采用的压缩标准是国际通用的MPEG-2 视频压缩标准和音频数码率压缩标准。

二进制数字信号是由最基础的模拟信号经过一定处理过程后才得到的量化编码,这其中不仅包含着取样的过程,还包含着量化的过程。在这种精密处理之后得到的就是脉冲编码调制信号,彩色全电视可以直接识别脉冲编码调制信号,被称作是全电视信号编码。分量编码就指的是在色差方面的编码,也就是更加针对图像元素的亮度。另外,数据压缩编码技术可以根据压缩后是否可以保持原来的模样分成有损压缩和无损压缩,有损压缩会造成图像元素的一定程度的失真,是极少部分专业人员才能感受的到的失真现象。数字电视编码器的内部框架

数字电视编码器是一种压缩编码编织器,将模拟的电视信号就行压缩并输出实时TS流(见图1),适用于很多需要实时传送或者转播的设备。

信源编解码技术主要利用了图像元素的空间相关性和时间相关性的两个特点,这项技术去除了多余复杂和重复啰嗦的信息,只保留了数量极少的部分关联性不大的数据信息进行出传输,大大节省了传输过程中所需要的带宽和频率,而接收到的这些关联性不大的数据信息被按照一定的解码算法进行,就能更高效地实现原始图像的生成并可以保障原图像的质量。

2 信源编解码技术在数字电视中的应用

信源编解码技术在数字电视中得应用主要是通过信源编码和信道编码两种重要的编码技术来实现的,这两种技术都采用了相同的技术原理,信源编码的重点在于更好地压缩图片和保存文档内容,而信道编码顾名思义,主要解决的问题是信号的传输问题。图片的信号量大且信号的传输形式比较复杂。因此,只有进行压缩,才能在数字电视中进行迅速的信号的传输。删除掉信号中多余的重复或者啰嗦内容,也就是与信息联系性差的内容。

2.1 空间上

组成一幅图片的图像元素有很多,甚至有的图片的图像元素多达十几万个,因此有图像元素就有可能有很大的相似性,这种现象多存在于两个相邻的图像元素之间。在这种情况下,图像元素在传输的时候就会有很多相同数据的传送,这就是空间上存在着的多余的重复或者啰嗦内容。采用信源编码技术,去掉数字电视图片传输中多余的重复的数据信息,就可以尽可能地加快数据的传输速率。

2.2 时间上

数字电视在时间上也会出现多余的重复现象。在很多情况下每一帧的图片信息的数据差别都很小,这一点与空间相同,尤其是相邻的图片的信息和内容基本上都是有很大共同点的,相隔越远的图片,相同点就越少,每一帧的图片都是根据前一帧图片的信息而改变的,也就是说,每一帧图片的变化都是可以估量的。

2.3 统计上

数字电视的图像和声音的信号数据中肯定是有着一定的规律的,尤其是再对其进行数字规划之后,图像元素是可以估计或者预测出来的,根据几个相邻的图像元素,信源编码技术就可以分许出未知的图像元素。根据前面所述的时间上和空间上的相关性预测,大大减小了未知信号出现错误的概率。可以主要采用信源编码技术中的统计编码的方法,加以长码和短码分别使用在概率大和概率小的误差信号上,这样一来就可以去除掉信号上的多余的重复信息。

2.4 知觉上

人类的听觉能力总还是有限的,总有着对于图像和声音感受不到或者不敏感的部分,知觉上的多余的信号是指这些人类分辨力难以达到的图像或者声音的信号,人类并不会察觉的这部分图像和声音的失真,就算是这些图像和声音消失了,也不会影响整体的感觉。

2.5 数字电视的信源解码

信源解码也是一个消去信息数据中多余重复的内容,只不过是通过压缩的形式,可以有效地实现信源码率和信道容量之间的配合,保障了数据在传输过程中的完整性。而编解码的目的就是对错误的编码进行纠错从而提高其稳定性和自卫能力。信道编码的过程是在原数据码流中加插一些码元,从而达到在接收端进行判错和纠错的目的。

2.6 数字电视的复用技术

信号及数据经过信源编码后,进入到多路复用中与数字音频信号多路复用的环节中,最后进入信道编码器进行识别。传统的模拟信号电视没有复用系统,声音和图片的信息都是进行不同道路的传送的。在数字电视中就有了新的改变,增加了复合的环节。将视频、图片和声音经过数据比特流的共同编之后,形成单路串行的比特流,最终传送给信道编码进行最后的调制。而接收端与复合环节的机理刚好相反,他将电视信号数据信号进行整合处理之后,使这些数据更容易扩展和被分级。

3 结语

数字电视信号通过信源编解码技术进行压缩并且去掉了很大一部分冗余,大大加快数据的抗干扰能力和传播速度。

摘要:信源编解码技术在数字电视中有着极其重要的作用,它将数据进行压缩,避免其冗余的增加,为信号的传输带来了更多便捷,在一定程度上防止了外界因素对数据信号的干扰。本文从数据电视编码的概念和内部框架的分析出发,重点论证信源编解码技术在数字电视中的应用。

关键词:信源编解码技术,数字电视,信号

参考文献

[1]利静荣.数字电视信源编解码技术.中国有线电视,2011(7).

数字编解码 篇4

摘要:提出了一种用PT2262/PT2272编解码IC制作的16×16视频切换矩阵的设计方案,给出了具体的电路图,同时在对其原理进行分析的基础上,指出了用该方案派生其它规格视频切换矩阵的基本思路。

关键词:电视监控 编码器 解码器 视频切换矩阵 PT2262 PT2272

随着电子技术的飞速发展,视频切换器已被广泛的应用到闭路电视监控系统、电视演播系统、电视会议系统、微格教学系统、多媒体教学系统等多种领域。多路输入视频切换矩阵更是大型闭路电视监控系统不可缺少的重要设备,但是这种设备的价格都比较高。本文基于计算机控制的设计思想,选用廉价的遥控解码集成电路(PT2262/PT2262)和多路模拟开关芯片(CD4067),采用积木式结构设计了一种16×16视频切换矩阵,从而实现了遥控视频的切换的功能。PT2262/PT2262的特性

PT2262、PT2272是采用18脚双列直插式封装的编解码IC,它们具有很强的抗干扰性能。其中PT2262是一种编码器,它能将数据和地址编译成代码的波形。它最大有12位三态地址,共有531441种地址代码。它最大有12位三态地址,共有531441种地址代码。PT2272是一种与PT2262配对的解码器,它也具有12位三态地址,共有531441种地址代码。PT2262、PT2272都是CMOS电路,因而具有功耗低、工作电压范围宽(3~15V)等特点。

1.1 PT2262的引脚功能

PT2262的引脚功能如下:

A0~A5(1~6):地址引脚,这些引脚均有三种状态:“0”、“1”和“浮”;

A6/D0~A11/D5(7、8、10~13):这六个引脚既可以作为地址码引脚,也可以作为数据码引脚;当作为地址码引脚时,可置成“0”、“1”或“浮”;而作为数据码引脚时,只能置成“0”、“1”。

TE(14):发送使能端,低电平有效。当其为低电平时,PT2262输出编码波形;

DOUT(17):数据码输出引脚; OSC1、OSC2(16、15):振荡器引脚;

VSS(18):电源正极;

VSS(9):电源负极。

1.2 PT2272的引脚功能

PT2272的引脚功能如下:

A0~A5(1~6)、A8/D0~A11~D3(7、8、10~13):这些引脚的功能与PT2262相同;

DIN(14):数据输入引脚;

VT(17):有效传输引脚,高电平有效。当PT2272接收到有效编码波形信号时,VT变为高电平;

OSC1、OSC2(16、15):振荡器引脚;

VCC(18):电源正极;

VSS(9):电源负极。

图1 视频切换电路原理图

PT2272的数据输出有“暂存”和“锁存”两种,“暂存”是当输入端信号消失时,PT2272对应的数据位输出变成低电平;“锁存”是当输入端信号消失时,PT2272的数据位输出保持原有状态,直到接收到地址码相同的新输入。

PT2272的数据输出有4、6位之分,具体可用后缓来区分:M代表“暂存”,L代表“锁存”(例如PT2272 L4表示数据位输出为4位,锁存输出)。当编码电路PT2262将数据连同地址码从17脚串行发送出去后,便可经过双线传输到解码器PT2272的14脚(数据输入端),此时若解码器的地址A0~A7与编码器的地址A0~A7相同,解码器将接收发送来的数据,且并行呈现在数据输出端D0~D3端并锁存,同时在VT端输出个脉冲信号。16×16视频切换矩阵的组成

16×16视频切换矩阵由16块16选1视频切换电路板和一块主板组成。16块视频切换电路板依次通过板插座插在主板上,主板上有16个视频输入插座和一个九针插座。16个视频插座可供16路视频输入。九针插座则用于与电脑打印口的9位数据线相连,以供主板上主要由PT2262组成的编码电路进行编码。但是,无论是16路视频、编码信号、直流电源和地,它们均可通过电路板插座给16块视频切换电路板提供接口。

每块视频切换电路板均包括解码电路、16路模拟开关电路和视频放大电路。电路板的后面有一个视频插座输出。图1所示是16选1视频切换电路图。其原理图框如图2所示。

在图1中,编码信号从IC1(PT2272L4)的数据输入引脚(14)输入后,如果它的地址码(由四位编码开关SW1预置)与编码地址相同,电路系统将从数据输出脚(10~13)输出锁定的数据(如03H)。当16路模拟开关IC2(CD4067)的数据输入口(10~14)接收到03H数据后,第3号模拟开关被接通,这样,第7脚输入的第3路视频信号将从I/O口第1脚输出,并经R4、C1输入到共极晶体管(T1)放大电路的发射极,最终由集电极输出放大的视频信号。此视频信号再经射极跟随器(T2)后将输出阻抗为75Ω的1Vp-p视频信号进行输出,此时便完成了16选1的视频切换过程。R4用于调整输出幅度的大小,阻值大约在1kΩ左右;C1是高频补偿电容,约100pF。该电路十分简单,因此,整个切换矩阵的成本也很低。16块视频切换电路板的地址可分别设置为0H~FH。编码电路

图3是由PT2262编码器组成的编码电路原理图,利用该电路可以在电脑打印口输入9位数据。其中最高一位是控制数据,其余8位中的高4位是地址码,低4位是数据码。一般情况下,高4位输入到编码器IC(PT2262)的1~4脚,低4位输入到数据位10~13脚。当有数据输入时,最高一位控控数据输出为高电平,从而使倒相器T的集电极输出低电平,以使PT2262的使能端(14脚)有效,最后在其编码输出端(17脚)输出串行的编码信号。软件编程

4.1 控制界面的设计

控制界面的设计有两种方案,第一种为16行,每行16个铵键。每行的按键都是互锁。第二种方案是一共两行,每行16个按键。第一行是切换器的选择键,第二行是视频输出选择键,两行的按键也是互锁的。

在上述两种方案中,第一方案只需按一个按键便可切换图像;而第二方案则要按两个键,第一次先选切换器,第二次才切换出图像。

4.2 数据结构

采用VB或Delphi语言编写控制软件可在打印口输出9位数据,以控制电脑分二次分送数据,第一次是低8位,第二次是最高一位。在低8位中,高4位为地址码0H-FH,可用于表示第1至16行视频切换器的地址,低4位为每行16选1的数据码。当在界面上点按按键时,按下时输出数据,放开时数据复零。所有需锁存的数据均由硬件来实现。

在第一种方案中,按每一个按键,打印口都输出数据;而第二种方案只有按第二行时才输出数据,而且同一个按键有16个地址,这要视第一行按键选取哪一个键来定。

结束语

视频切换矩阵一般用于比较大型的闭路电路监控系统,本文介绍的16×16视频切换矩阵的成本很低,而且稍作改动,就可变成16×8、16×4、16×2的产品。如果在几路视频输出中不要求重复出现,就可以方便地将其改变成256路视频输入/16路视频输出、128路视频输入/8路视频输出、64路视频输入/4路视频输出等规格的产品。

RS编解码过程及软件实现 篇5

1 RS码基本特性

在域GF(q)上,码长n=q-1的本原BCH码称为RS码。一般用(n,k)或(n,k,d)表示,n为码长,k为信息码元的数目,n-k为监督码元的数目,d表示码元距离。在所有线性分组码中,RS码具有最大的最小汉明距离。RS码的编解码是基于码元(每个码元m bit)的,过程中的运算都在伽罗华域上进行。域GF(2m)上的RS码是一类应用很广的RS码,同时,RS码也是一种循环码,每个码字都是其生成多项式的倍式。域GF(q)上的[n,k]循环码中,存在惟一的n-k次首一多项式g(x)=xn-k+gn-k-1xn-k-1+…+g1x+g0,每一码多项式C(x)都是g(x)的倍式,且每一个≤(n-1)次的g(x)倍式一定是码多项式,g(x)称为此[n,k]RS码的生成多项式,GF(q)上的[n,k]循环码的生成多项式g(x)一定是xn-1的因式,xn-1=g(x)h(x),h(x)为[n,k]RS码的校验多项式,它是 k次多项式。

2 RS编码原理

RS编码方式为系统码,码字多项式的第n-1次至n-k次系数是信息位,其余为校验位,这相当于C(x)=m(x)xn-k+r(x),式中 m(x)=mk-1xk-1+mk-2xk-2+…+m1x+m0是信息多项式,(mk-1,…,m1,m0)是信息位,而r(x)=rn-k-1xn-k-1+rn-k-2xn-k-2+…+r1x+r0是校验多项式,相应的系数是码元的校验位。编码过程即是根据k个信息码元及[n,k]RS码的特性获得n-k个校验码元的过程[1,2]。

[n,k]RS循环码的校验码元可根据校验多项式h(x)=hkxk+hk-1xk-1+…+h1x+h0获得。设系统码多项式为C(x)=cn-1xn-1+cn-1xn-2+…+cn-kxn-k+cn-k-1xn-k-1+…+c1x+c0,它的前k位系数。cn-1,cn-2,…,cn-k是已知的信息位,后n-k位系数。cn-k-1,cn-k-2,…,c1,c0 是需要求的校验位。因为码多项式必是生成多项式g(x)的倍式,故有C(x)=q(x)g(x),而h(x)C(x)=q(x)g(x)h(x)=q(x)(xn-1)=q(x)xn-q(x),q(x)xn的最低次数至少为n次,因此h(x)C(x)的乘积中,xn-1,xn-2,…,xk次的系数应为0,而xn-1的系数由cn-1-0h0+cn-1-1h1+…+cn-1-khk组成,xn-2的系数由cn-2-0h0+cn-2-1h1+…+cn-2-khk组成。因此j=0kcn-i-jhj=0,i=1,2,,n-k。由于h(x)为首一多项式,故hk=1。上式可写成Cn-i-k=-j=0k-1cn-i-jhj,i=1,2,,n-kCn-k-i=-j=0k-1cn-j-ihj,i=1,2,,n-k,展开为

cn-k-1=-(cn-1h0+cn-2h1+…+cn-khk-1)

cn-k-2=-(cn-2h0+cn-3h1+…+cn-k-1hk-1)

…………………………

cn-k-(n-k)=c0=-(ckh0+ck-1h1+…+c1hk-1)

这表明码字C的第一个校验元cn-k-1可由k个信息元cn-1,cn-2,…,cn-kh(x)的系数相乘得到,而由cn-2,cn-3,…,cn-k,cn-k-1可得到第二个校验元cn-k-2,再由cn-3,…,cn-k信息元和第一、第二校验元cn-k-1,cn-k-2可得到第三校验元cn-k-3。依此类推,可求得所有的n-k个校验元cn-k-1,cn-k-2,…,c1,c0。

根据以上的过程分析,可知RS编码的软件实现过程如下:(1)首先求出域GF(2m)中的所有元素并存储备用。(2)在[n,k,d]RS码中,其生成多项式是唯一的,由xn-1=g(x)h(x),可知校验多项式h(x)也是唯一确定的,且g(x)=(x-α)(x-α2)…(x-αn-k),根据伽罗华域上的运算规则可求出h(x)=(xn-1)/g(x)的各项系数。(3)据上面的分析,依次求出所需的校验元cn-k-1,cn-k-2,…,c1,c0。

超短波跳频电台具有定频通信、跳频通信、数据通信等功能,为增强数据传输的可靠性,对传输的数据进行了RS编解码的处理,取得了较好的通信效果。以RS编码在超短波跳频电台中的应用为基础,以m=5,(n0,k0,d)RS码为例,编码部分程序简列如下:

void rscode_m5(Uint8 a,Uint8 b,Uint8 c,Uint8 hxarray[])

{

Uint8 i,x,m,j,mod2sum;//存模2加的累计值

/* 补(n-n0)=a个信息符号‘00000’ */

for(i=0;i<a;i++)

{

degreearray[i]=31;

}

……………………………………/* 将k0=b个信息符号对应α的次数存入数组degreearray */

/* 求(d-1)=c个校验符号 */

for(m=0;m<c;m++)

{

i=m;//degreearray[]的下标索引为i

mod2sum=0;

for(j=0;j<(a+b);j++)//乘积个数计数器,hxarray[]的下标索引j

{

if(degreearray[i]!=31 && hxarray[j]!=31)

{

x=degreearray[i]+hxarray[j];

if(x≥31)x=x-31;

}

else x=31;

mod2sum=mod2sum ^ lookup_info[x];

i+=1;

}

rs_array[b+m]=mod2sum;//将校验符号存入数组rsarray

degreearray[a+b+m]=lookup_degree[mod2sum];

//将校验符号对应α的次数存入数组

}

}

3 RS译码原理

RS译码较编码过程复杂,其关键问题为错误位置多项式的求解。设发送的码字是C(x)=(cn-1xn-1+…+c1x+c0),通过q进制信道传输后,接收端译码器输入端得到的是R(x)=C(x)+E(x)=rn-1xn-1+…+r1x+r0,式中E(x)=(en-1xn-1+…+e1x+e0)是信道产生的错误图样,ciriei均是域GF(q)中的元素。

译码的主要任务就是从收到的R(x)计算出伴随式S(x),并由伴随式找出估计错误图样,即找到错误发生的位置及错误值,然后将接收码字与错误图样运算找到最可能发送的码字C^(x),从而得到估值信息码字。

距离为d=2t+e+1的线形分组码,能纠正t个错误同时纠正e个删除,若全部用来纠删可以纠正d-1个删除,因为d=n-k+1,故有2t+e=n-k

伴随多项式是RS译码中一个非常重要的概念。伴随式S仅与错误图样有关,且完全由错误图样决定,而与发送码字无关,伴随式充分反映了信道的干扰情况,由它可计算出错误图样。伴随式的计算较简单。设接收码字R(x)=cn-1xn-1+cn-2xn-2+…+c1x+c0,把x=α代入上式得到s1,把x=α2代入得到s2,…,把x=α2t代入得到s2t,或表示为Sj=R(αj),j=1,2,…,2t

错误图样的计算是RS译码中的重要内容,它包括错误位置数的确定与错误值的计算两方面。通过伴随式S可构造2t个方程,求解出2t个未知数xi,Yi,(i=1,2,…,t,xi为错误位置数,Yi为错误值数),直接求解这2t个方程比较困难,所以分两步,先求xi,再求Yi。求错误位置就是求解错误位置多项式的根。采用Berlekamp-Massey Algorithm(BM迭代算法)可快速根据伴随式求出错误位置多项式。BM迭代算法自1966年提出后经不断改进,已较为成熟,它通过选择一组合理的初值δ(0)(x)和ω(0)(x),进行逐次迭代依次得到δ(1)(x),ω(1)(x),δ(2)(x),ω(2)(x),…,δ(i)(x),ω(i)(x),δ(i+1)(x)和ω(i+1)(x),最后得到δ(x)和ω(x)的最高次,从而得到满足关键方程S(x)δ(x)≡ω(x)(mod x2t+1)的δ(x)和ω(x)[1]。δ(x)即为错误位置多项式。得到错误位置多项式后,通过钱搜索方式可求得错误位置多项式的根。1964年,钱闻天提出的一种求δ(x)根的方法称为钱搜索。如在(15,9)RS码中,求得错误位置多项式的根为α3,α9,α12,它们的倒数即为错误位置α12,α6,α3,即错误位置发生在x12,x6,x3上。求出错误位置多项式δ(x)后,就可据式

Yj=(i=0y-1δjisy-i)/(xji=0y-1δjixjy-i-j)(1)

计算出错误值Yj。错误位置数和错误值均求出后就可得到错误图样E^

以下以RS编解码在超短波跳频电台中的应用为基础,以m=5,(31,k,d)RS码为例译码程序简列如下:

void rsdecode_m5(Uint8 a,Uint8 b,Uint8 c,Uint8 del_num)

{

Uint16 i,j,L,x,y;

Uint8 mod2sum,fenmu,fenzi,error_max;

………………………………/* 将接收序列r(x)各项系数对应α的次数->degreearray[]*/

………………………………/*计算伴随式S并存入s_degree*/

rs_diedai(c,del_num);//通过BM迭代算法得到错误位置多项式[2],并将总错误位置多

//项式的标准形式存入error_degree,此处省略迭代过程

/* 钱搜索 */

j=0;

for(L=1;L≤31;L++)

{

mod2sum=0;

for(i=0;ierror_max;i++)

{

if(error_degree[i]!=31)

{

x=error_degree[i]+L * i;

while(x≥31)

x=x-31;

}

else

x=31;

mod2sum=mod2sum ^ lookup_info[x];

}

if(mod2sum==0)

{

error_location[j]=31-L;//错误位置数

j+=1;

}

}

/* 求错误值 */

for(j=1;jerror_max;j++)

{

……………………………/* 计算σji*/

……………………………/* 依上文所列式(1)计算分母,此处省略 */

fenmu=lookup_degree[mod2sum];//Y的分母(对应α的次数)

……………………………/*依上面所列式(1)计算分子,此处省略*/

fenzi=lookup_degree[mod2sum];

if(fenzi !=31)

{

if(fenzi<fenmu)fenzi=fenzi+31;

error_y[j-1]=fenzi-fenmu;/* Yj=分子/分母 */

}

else error_y[j-1]=31;

}

/* 计算错误图样e(x)*/

……………………将error_ex[0]至error_ex[30]先清/* 将Yj存入error_ex中的指定位置 */

for(i=1;ierror_max;i++)

{

x=error_y[i-1];

y=lookup_info[x];

x=30-error_location[i-1];

error_ex[x]=y;

}

/* 输出译码结果,修正数组rsarray[20]中的信息符号和校验符号 */

for(i=0;i<(b+c);i++)

{

rs_array[i]=rs_array[i]^ error_ex[a+i];

}

}

4 结束语

RS编解码过程涉及域、线性分组码、生成矩阵、校验矩阵、伴随式等概念,初接触感觉较为复杂,文中将编解码过程做了总结并列出了编解码部分程序以供参考,文中所列程序在通信产品中多次使用,均达到设计要求。

摘要:结合RS码的基本特性,讲述了RS码的编解码过程,给出了经过实际验证的RS编解码在超短波跳频电台开发中的软件应用实例。实践表明,RS编解码在无线通信系统应用中具有灵活、可靠的特点。

关键词:伽罗华域,生成多项式,伴随多项式,错误多项式

参考文献

[1]王新梅,肖国镇.纠错码—原理与方法[M].西安:西安电子科技大学出版社,2001.

数字编解码 篇6

随着计算机技术的不断发展, 现在的计算机已进入多核时代, 市场上几乎已成多核处理器的天下。然而遗憾的是, 当前绝大多数应用的软件还是基于单核模式的, 在多核平台上性能不但没有提升, 反而由于多核附带的开销造成性能下降。对于这样的问题, 由于目前还没有一个普适化的解决方法和统一的规范或标准, 短时间内要将多核处理器的性能发挥出来是很困难的。对此英特尔推出了一套将已有的单核程序改造为多核程序的工具, 即Parallel Studio。它可以在其它多核化工具支持下对串行程序中的可并行化部分进行线程的并行化重构, 提升多核处理器平台的效能。有着广泛的市场和经济价值。

英特尔并行化分析工具 (Parallel Studio) 旨在为基于Microsoft Visual Studio的C与C++程序开发各阶段提供简单、高效的Parallel Studio工具, 显著提高应用程序在英特尔多核处理器上的性能。英特尔 Parallel Studio由英特尔 Parallel Composer、英特尔 Parallel Inspector以及英特尔 Parallel Amplifier三部分组成, 每一款都具有强大的功能, 既可各自独立使用, 也可一起使用, 可快速满足开发人员的并行程序开发需求, Ampli-fier 用于程序的热点和并行化性的分析、Inspector用于线程和内存信息的分析、 Composer用于并行化程序的调试, 其中最常用的就是Amplifier, 本文下面的测试信息也主要来自于Amplifier。由于Parallel Studio可以选择集成在Visual Studio IDE中, 因此建议用Visual Studio中编译程序, 并直接用Parallel Studio进行分析。

英特尔线程构建模块 (TBB) 是一个屡获殊荣的 C++ 模板库, 它可将线程提取到任务创建可靠、可移植且可扩展的并行应用程序。 使用TBB 执行基于任务的并行应用程序, 有助于提高开发人员开发在多核平台上运行的可扩展软件的工作效率。 相比本地线程和线程封装器 (wrapper) 等其他线程化方法, TBB 是执行并行应用程序最高效的方式, 能够充分释放多核平台的性能。

为了更为直观地展现parallel studio进行并行化优化的过程, 在这里我们以h.263视频编解码算法的并行化优化为例。

2h.263串行编解码算法的分析 (测试平台:CPU: Intel E4400 1.8Ghz 内存:2G)

2.1h.263算法的瓶颈

对h.263实现的远程视频会议系统, 用英特尔并行化分析工具进行并行化分析的结果如图1所示。其中, Dct/Idct为离散余弦变换/反离散余弦变换、QuantAndFindCBP为量化并归零、CountBitsCoeff和CountBitsMB为变长编码、Dequant为反量化。从图1中CPU占用时间的百分比可以看出上面所提到的部分, 是最耗时的。

2.2h.263串行算法的CPU负载分析

用英特尔并行化分析工具进行负载分析的结果, 如图2所示。从图中可以看出, 算法的CPU平均使用率仅为1.29, 注意这里的线程数目为16而不是为1的原因是该系统为多线程, 各个线程并发的执行。

综上可得, 在串行算法中, 影响程序效率与负载的主要原因为离散余弦变换与反离散余弦变换、量化与反量化、变长编码等。

3h.263算法并行化优化

3.1 英特尔线程构建模块的实现机制

英特尔线程构建模块 (tbb) , 主要是针对大规模的数据运算并且数据的运算没有因果关系, 对于输入输出较多的程序块并行化的效果不明显。其次, tbb针对的是任务的并行化, 而不是像其他并行化工具针对数据, 因此程序员只需要向tbb提交任务, tbb便会根据系统进行并行化。

tbb是C++的一种模板库, 通过重写部分关键函数来实现。首先, 通过blocked_range<T>来定义一维的迭代空间 (能够实现并行化的空间) , 同样也有blocked_range2d、blocked_range3d来定义二维及三维的迭代空间。第二, 设置方法operator () 迭代循环体, 即设置具体并行化要执行的操作或是调用其他函数。第三, 重载parallel_for (blocked_range<T> (start, end) , grainsize) 函数来实现迭代空间上并行化, 其中start、end分别为迭代空间的起始索引, 在这里需要重点指出grainsize, 也称为粒度, 这个参数用来指定分配给处理器的迭代空间大小, 如果迭代区间的容量大于grainsize, 那么parallel_for将把这个迭代区间划分为独立调度的子区间, 因此grainsize的大小对并行化的结果有影响。虽然grainsize很重要, 但其最优值并没有一个固定值, 在这里提出一个方法来寻找一个较优的粒度值, 首先, 得到待并行的程序在单核运行时间, 然后将并行化程序的粒度初始化为10000, 然后再逐步减少粒度值并记录程序记录时间, 当并行化程序运行时间较单核最少时, 即得到了较优的粒度值。但是, 上面的方法过于繁琐, 因此可以使用默认值anto_partitioner。最后, 通过任务调度器 (scheduler_init) , 来给tbb分配任务进行并行化。

tbb实现并行化的原因在于任务密取, 例如双核CPU, 它拥有两个硬件线程 (同时有两个线程并行化执行) , 当tbb分配任务时, 它首先会将整个任务分配给一个硬件线程, 如果某时第二个硬件线程空闲, 则第二个硬件线程会“窃取”第一个tbb任务线程的一般任务进行处理, 就这样一层一层地密取, 最终使多个任务能够并行化完成。

3.2h.263算法的并行化实现

通过对tbb特点的分析, 可知tbb对大规模的数据且数据之间无因果关系部分的并行化有非常好的效果。如图1所示, 通过Parallel studio对串行程序的分析结果可知离散余弦变换/反离散余弦变换、量化和反量化、变长编码是程序的运行瓶颈, 同时通过对这部分的代码研究, 发现这些函数的数据是相互独立的, 没有前后之间的数据关联, 对于一帧图像的处理, 即把图像分解成许许多多的小块进行处理, 因此它满足大规模的数据处理且数据之间没有因果关系的条件, 因此可以采用tbb对其进行并行化优化。

并行化改造过程:通过对编解码的代码分析, 有两种并行化思路, 第一种, 对离散余弦变换/反离散余弦变换、量化和反量化、变长编码等具体的函数内部的循环等运行瓶颈部分进行改造;第二种, 通过分析一帧图像的编解码过程, 对函数调用过程进行并行化, 即对一帧图像的各个小块进行离散余弦变换/反离散余弦变换、量化和反量化、变长编码的并行处理。对于第一种方法而言, 虽然对于单个的函数内部而言, 其并行化的效果非常明显, 但由于各个函数的调用次数会非常的多, 因此串并行系统环境的转换的时间开销将大大超过并行化程序效率提高的时间, 因此采用这样的方法, 将会使得程序的效率反而大大降低, 并没有达到并行化的效果。而第二种方法, 程序并行化并不拘泥对某个函数的并行化, 而是对一帧图像的各个小块的处理进行并行化, 即对一帧函数处理过程中的函数调用过程进行并行化, 这样使得并行化的模块数相对第一种方法更少, 使得串并行系统环境的转换的时间较少, 再通过程序的并行执行, 这样使得并行化的效率提升大于串并行转换的时间, 最终使得程序的效率大大提高, 其代码如图3、图4所示。

在这里的operator () 是并行化的核心, 它是包含在class类parallelCodeIntra

H263中的一个方法, 完成的是对单个迭代空间任务的定义, 该空间完全与串行程序相同, 为了保证并行化程序的结果与串行程序完全一样。如代码所示, 对于单个的迭代空间, 其调用的函数大体为离散余弦变换/反离散余弦变换、量化和反量化、变长编码, 与串行程序的处理顺序一样, 因此使得一帧图像的各个小块的处理过程与串行程序完全一样。而parallel_for完成的是在迭代空间上的并行化执行, 即将一帧采集的图像, 按照粒度的大小分为各个小块, 然后对各个小块并行化的按照operator () 所定义的操作进行并行化的处理, 使得各个小块的处理是并行化执行的。从程序代码中可以看到程序首先定义了一个parallelCodeIntraH263对象, 然后初始化对象参数, 最后, 通过函数parallel_for (blocked_range<int> (start, end, 1000) , test) 并行化执行, 其中blocked_range<int>用于确定整数类型的迭代区间, start与end来表示区间的上下界, 1000为粒度, 即最小的迭代空间大小, test为parallelCodeIntraH263对象, 表示各个迭代空间上的操作。

另外该视频会议的其他部分, 如初始化设置、通信传输等部分也有类似部分, 其方法相似在这里就不做讨论。

4h.263算法并行化后性能分析

4.1 并行化程序各部分的运行情况及负载

为了更为直观的展示h.263并行优化后的结果, 在这里我们通过优化后的程序运行不同的时间得到的结果, 以及与传统串行程序的对比得出有关结论。如图5、6所示, 程序并行化后的运行结果, 在第三项的直方图CPU使用率中, 可以看出并行化的离散余弦变换/反离散余弦变换、量化/反量化、变长编码的CPU的使用均为Over (由于无法给出彩图, 所以不易观察出来, 请见谅) , 表示CPU在执行这部分时, 是非常充分的利用CPU的硬件线程的。通过图6, 可以看到CPU的平均使用率已经达到了1.60, 相比于前面提到的串行程序的1.29, 其提高了约24%;所开的线程数为267, 而串行程序仅有16, 其相差了16.5倍。

4.2 并行化程序性能的高级分析

我们分别对并行化后的程序, 运行10s、30s、60s, 分析程序运行时间对并行化优化的影响程度。在这里我们对CPU的平均使用率及线程的创建数进行统计, 如图7、图8所示。从图7可以看出随着程序运行时间的增加, 即程序处理的数据规模越来越庞大, CPU的使用率却反而越来越逼近2 (双核CPU的最优值) , 这就再一次说明了tbb对于大规模数据处理的并行化是非常有效的, 另外, 从图8可以看出, 随着问题规模的不断变大, tbb也相应的开启了更多的线程来实现并行化, 可以看出tbb对程序的优化是实时性的, 这样就使得程序员不在关注于每个线程开启和释放, 只需要关注分配给tbb的任务。

通过对程序进行并行化改造后, 程序会把每一帧图像, 分成若干迭代空间, 然后对各个迭代空间开不同的线程进行运算, 因此对于编解码算法而言, 对于一帧图像而言, 通过parallel_for () 将一帧图像的数据, 按照粒度大小分解成独立的迭代空间, 而对于每一个迭代空间, 都会开启一个线程来完成对迭代空间的运算。对于硬件而言, 系统会根据硬件线程 (等于CPU核心数) 动态来密取任务, 即当硬件线程一旦出现空闲时, 它就会密取其他硬件线程的任务, 并在当前空闲硬件线程开启新的线程来执行任务, 就通过这样使得各个硬件线程一直处于忙碌状态, 再加上迭代空间的并行化执行, 因此这个过程中产生的线程数目会非常的多, 同时也使得程序效率大大提高。而串行程序的线程这所以为16, 这是由于测试环境为双核系统, 因此操作系统来执行程序时, 采用了多线程的方式并发的执行。采用tbb进行程序的并行化, 不仅能够把规模较大的问题分解成为能够并行执行的迭代空间进行并行运算, 而且通过硬件线程的不断密取任务, 使得CPU负载尽可能均衡, 使得并行化程度更高, 程序效率的提升更明显。

摘要:随着计算机技术的不断发展, 人们对多媒体技术的实时性有了更高的要求, 特别是视频编解码的时间效率。另外, 随着多核CPU及相关技术的不断普及, 使得原有非并行化程序的性能的不足显现了出来, 因此对传统程序的并行化迫在眉睫。本文以目前较流行的视频编解码算法h.263为例, 通过一个具体的视频会议系统, 分析传统串行编解码算法的性能, 通过英特尔Parallel studio并行化分析工具, 找到算法的运行瓶颈, 然后用英特尔线程构建模块对编解码算法进行并行化优化, 取得了良好的效果。

关键词:并行化,英特尔线程构建模块,英特尔并行化分析工具

参考文献

[1]James Reinders, Alexander Stepanov.Intel Threading Buiding Blocks编程指南.北京:机械工业出版社, 2009-01.100-156

[2]侯俊杰.深入浅出MFC第二版.武汉:华中科技大学出版社, 2001-01.120-160

[3]Jeff Prosise.MFC Windows程序设计.北京:清华大学出版社, 2007-05.200-240

[4]Rachard Gerber, Kevin B.Smith, Aart J.C.Bik, Xinmin Tian软件优化技术.北京:电子工业出版社, 2007-04.5-45

数字编解码 篇7

随着3D立体电视技术越来越成熟,立体视频编解码系统引起了越来越多的关注。近年来,基于H.264及MEPG-4的立体视频压缩编解码系统得到了长足的发展。尽管立体视频有着很大的吸引力,但是视频数据量以及计算的复杂度与普通视频相比增加了1倍以上[1,2]。为了解决在有限带宽下传输大量视频数据的问题,迫切需要一个高效率的编解码系统。

传统立体视频压缩编解码算法,由于引入了额外的运动估计及视差估计,因此运算复杂度大大增加,若要降低运算复杂度,则要以牺牲图像质量为代价。文献[3]~[4]提出了残差图像编码的方法,通过对左右2副图像的残差进行编码从而达到了对图像进行压缩的目的。文献[5]提出了使用分布式计算的方法,无监督的自主学习视差。文献[6]采用自组织神经网络的方法,进行视差估计。以上几种算法,都存在运算复杂度高、计算量大的缺点,不适于在现有硬件系统上实现。

笔者提出运用联合预测的方法进行立体视频编解码的系统。这种联合预测的方案包含了3种编解码工具:首先,联合块补偿的使用使视频获得了更好的主观和客观质量;其次,依照立体视频的主要特征提出了新的运动补偿和视差补偿方法;最后,模式预决策方案的采用大大降低了运算的复杂度。

2 立体视频编解码系统实现

在此方案中,左路视频被设置为基础层,同时,右路视频被设置为增强层[7,8]。基础层使用H.264或MEPG-4等编码方式进行编码。在补偿的过程中,一个块不仅由左(右)参考帧的对应块进行补偿,还需要参考当前块的不同种类进行一种联合的补偿(如:此块属于背景、运动物体或者同时属于背景和运动物体)。此外,运用模式预决策的方案可以降低视差估计的运算复杂度。

2.1 编码流程

图1给出了立体视频编码器的框图。左路图像与右路图像在编码器中的主要不同点在于视差补偿和模式预决策。编码后,左路图像的压缩数据M和L,以及右路图像的压缩数据(数量很小)N和R将被传输。

在编码过程中,左路图像作为参考图像,使用普通的编码方式进行编码(如H.264,MEPG-4等);而右路图像使用左路图像作为参考,进行额外的运动补偿、模式预决策、视差估计。

2.2 联合块补偿方案

在右路图像的运动估计和视差估计过程中,当前帧有两个参考帧,如图2所示。灰色区域是参考帧的搜索范围。由于摄像机是平行放置的,根据平行相机系统视差的性质,左路图像的参考帧的搜索范围不是正方形的,而是呈带状的。

此立体视频编码器中包含3种补偿块:1)运动补偿块,主要出现在背景中,对缓慢运动的物体或者由于摄像机移动造成的运动进行补偿;2)视差补偿块,主要出现在运动物体上,由于物体在运动过程中产生的变形,因此,视差补偿块往往有更好的预测能力;3)联合补偿块,由于运动物体和背景可以相应地由不同种类的块进行预测,因此,联合补偿块主要出现在同时包含前景和背景的块中。

根据SAD(绝对误差和)准则,可以确定最佳匹配块的预测模式。对于当前帧的每个宏块来说,3种块的失真按如下进行计算

式中:Dmotion和Ddisparity分别为运动补偿块和视差补偿块的SAD最小值。Ir(B)是右路当前块,Ir-1(BR)是右路参考块,Il(BL)是左路参考块。SRR(B)和SRL(B)分别为B块在左右2路图像参考帧中的搜索范围。在左右2路图像的参考块I1(B′L)和Ir-1(B′R)的最佳匹配块中得到视差估计和运动估计的结果。接下来,联合估计块将通过I1(B′L)块和Ir-1(B′R)块的加权和来决定。Wn和Wn′为补充的加权函数,如图2中的A到D。最后,模式决定由式(4)进行描述,用来决定当前块进行何种补偿

2.3 右路视频运动估计的快速算法

在普通的立体视频编解码系统中,运动估计和视差估计是最关键的2个步骤。可是,与普通的视频编解码系统相比,右路视频额外的运动补偿及视差补偿极大地增加了运算负担。因此,在进行视差补偿前提出了精确的运动向量预测法和模式预决策法。首先,给出了运动向量(MV)和视差向量(DV)间的相互关系[8],如图3所示。

图3中4个向量间的相互关系可以由以下的等式来说明

总的来说,由于在时间域上,2帧之间的区别是很小的,因此得到以下的关系

通过以上的关系可以看出,由左路(MVL)得到的运动向量将被设置为右路(MVR)的预测值运动向量。由于摄像机的水平放置结构,在左右2路视频中存在一个图像的水平位移。这个位移称为“全局视差”。全局视差的引入将大大减小算法在视差估计及补偿过程中的计算复杂度和计算量。

2.4 背景探测和右路图像的全局视差估计

背景探测的应用可以准确确定前景(运动物体)及背景[9,10],是下一步进行全局视差估计以及模式预决策的前提。

背景由式(7)来确定

式中:B(N)是左路图像的第N帧的状态。MVN(x,y)是第N个块的运动向量。如果运动向量为0或者Fdiff(N)小于一个阈值,那么,这个块就是属于背景的,这样,B(N)设置为true。此步完成后,全局视差向量

这些背景块的视差向量将积累起来作为一个统计。出现频率最高的运动向量DV将被认作为全局视差向量GD。对于左路图像的第一个P帧,背景检测的方法用来得到全局视差向量GD。在右路图像进行运动补偿之前,通过使用全局视差向量GD能得到当前块(右路图像帧)的对应块(左路图像帧)。接下来,对应块的运动向量MV将被认作为右路图像帧当前块的预测值,这样,MVR只需很小的搜索范围就能准确得到,从而降低了运算复杂度。可是,背景的视差向量DV往往小于前景的视差向量。如果SAD大于一个阈值,将扩大搜索范围来获得一个更好的MV。这样,一个更精确的全局视差向量将反馈给系统。为了避免误码传播,每M帧全局视差向量都将刷新(M是一个可变的参量)。

2.5 视差估计前的模式预决策

实验结果表明,在右路图像的一帧中,有40%~70%的块需要进行运动补偿,25%~60%的块需要进行联合补偿,只有约5%的块需要进行视差补偿。由于联合补偿块的结果同时由运动估计和视差估计得到,这就代表着25%~60%的块需要进行运动估计和视差估计。分析可见,将近95%的块需要进行运动估计,同时只有40%~60%的块需要进行视差估计。这样,不必要的视差估计的过程就可省略,从而降低了运算复杂度。模式预决策的方法将由以下公式得到

如果Fdiff

3 实验结果与小结

实验结果表明,运用本文提出的立体图像压缩编解码方法,可以大大降低运算复杂度以及视频传输数据量。视差估计及运动估计的运算量约为普通算法15%,需传输的数据量与未进行压缩前相比,减少70%~80%,同时视频效果较之其他方法相比也有所提高。

综上所述,这种基于联合预测的算法,采用背景探测、模式预决策等策略,大大降低了运动估计、视差估计等的运算量。与传统方法相比,在保证图像质量的前提下,运算复杂度及计算量大大降低,且易于集成现有的编解码方式(H.264,MEPG-4等),易于在现有硬件系统上实现。

参考文献

[1]ADIKARI A B B,FERNANDO W A C.A H.264compliant stereoscopic video codec[C]//Proc.CCECE/CCGEI2005.Saskatoon:IEEE Press,2005:1614-1617.

[2]XIONG Wei,JIA Jiaya.Stereo matching on objects with fractional boundary[EB/OL].[2008-03-01].http://www.cse.cuhk.edu.hk/~leo-jia/all_final_papers/alpha_stereo_cvpr07.pdf.

[3]FRAJKA T,ZEGER K.Residual image coding for stereo image compression[J].Opt.Eng,2003,42(1):182-189.

[4]SHEN Liyun,HU Bo,WANG Qinzhe.A residual image coding scheme for stereo image compression[C]//Proc.2003IEEE Int.Conf.Neural Networks B Signal Processing.[S.l.]:IEEE Press,2003:1074-1077.

[5]VARODAYAN D,MAVLANKAR A.Distributed grayscale stereo image coding with unsupervised learning of disparity[EB/OL].[2008-03-01].http://www.stanford.edu/~bgirod/pdfs/Varo-dayan_DCC_07.pdf.

[6]VENKATESH Y V,RAJA S K,KUMAR A J.On the application of a modified self-organizing neural network to estimate stereo dis-parity[J].IEEE Trans.Image Processing,2007,16(11):2822-2829.

[7]杨蕾,戴居丰.基于H.264的静止自由立体图像压缩算法[J].计算机应用,2006,26(9):2086-2088.

[8]GUNATILAKE P D,SIEGEL M W,JORDAN A G.Compression of stereo video streams[EB/OL].[2008-03-01].http://www.cs.cmu.edu/afs/cs/project/sensor-9/ftp/papers/gunatilake_hdtv93.pdf.

[9]于成忠,朱骏,袁小辉.基于背景差法的运动目标检测[J].东南大学学报,2005(35):159-161.

数字编解码 篇8

13G直播网络编解码技术

1.1视频编解码技术H.264

视频编解码采用H.264编解码标准, H.264是目前在低网络带宽上传输高质量视频的流行编码技术, 其最具价值的部分无疑是更高的数据压缩比。压缩技术的基本原理就是将视频文件中的非重要信息过滤, 以便让数据能够更快地在网络中传输。在同等的图像质量条件下, H.264的数据压缩比能比当前DVD系统中使用的MPEG-2高2~3倍, 比MPEG-4高1.5~2倍。正因为如此, 经过H.264压缩的视频数据, 在网络传输过程中所需要的带宽更少, 也更加经济。

1.2音频编解码技术

由于电话网络正在向基于数据包的技术转变, 使得传统的POTS与ISDN编解码器已经无法满足当今的传输需要。而BIRC技术则为广播传输提供了一场根本性的变革, 通过宽频带的因特网络对音频进行传输, 并且保证高音质和低延时量。基于BIRC技术Comrex公司开发出了一系列通过互联网连接, 应用于广播传输的高稳定性编解码器:使用BIRC-ULB算法, 通过IP网络传输双向7kHz低延时音频信号;使用BIRC-ULB或BIRC-HQ1算法, 编码延时小于100ms;使用BIRC-HQ1算法, 通过标准网络 (或单路拨号电话线) 传输双向15kHz立体声或单声道音频; BIRC技术有效降低了音频传输中数据包的丢失及音频抖动;通过智能抖动缓存管理工具, 可动态调整缓存延时以适应网络状态;通过BRIC Traversal Server可与其他ACCESS编解码器轻松互连。

23G直播网络传输设备

2.1 Comrex LiveShotTM (无线传输编解码系统)

Comrex LiveShotTM是一套借助多种IP网络传输专业现场视频的设备。专业电视台可以用LiveShot在任何地点利用互联网传输高质量, 低延时的视频信号。LiveShot基于Comrex Access音频IP编解码器的成功技术, 并对此技术进行了拓展, 使其顺畅传输广播质量的现场视频数据流。LiveShot可以应用在任何IP网络环境, 包括:3G, 4G和卫星技术基础的网络连接。Comrex LiveShotTM具有如下特点:

低延时。LiveShot可以达到低于200ms 延时的音视频编解码传输。网络环境质量和编码时间会导致延时。LiveShot内部具备一个自动的解码缓存管理器以保证永远获得最小的延时。

全双工实时视音频传输。LiveShot在现场便携式设备Portable和机房内机架式安装设备之间建立了一套双方向的视频和立体声音频的通道。另外还提供一个用于 “通话”的双方向通道。在现场的Portable上具备机房方向返送来的音视频输出接口, 该信号还可以利用内置的Wi-Fi装置再传输到另一个移动设备上。利用耳麦和蓝牙音频可以与“通话”通道进行对话。

远程遥控功能。Liveshot可以以两种方式自如遥控:LiveShot可以通过一个称为 “LiveShot中心”的服务器由用户在电视台机房内遥控。LiveShot中心允许用户在任何地点利用任何一台联网计算机通过网页浏览器连接至现场的LiveShot, 无论计算机系统使用公网IP或私有IP连接。一旦注册, 机房内的用户即可建立和实施远程遥控, 包括”存储”和”传递”遥控操作方式。LiveShot也可以通过内置的Wi-Fi接入点提供的网页实现本地遥控。

便携性。LiveShot Portable是应用于现场的移动设备, 小巧便携。设备具备一套Anton Bauer摄像机电池的安装装置。Live Shot Portable可以被安装在电池和摄像机之间。设备可以通过电池供电或外部电源适配器供电, 功率为8W。重量为2.26kg。

存储和传输方式。LiveShot便携设备可以在内置的SD卡上存储音频和视频。一旦视频被记录, 就可以通过用户界面进行文件管理并上传文件至机房。LiveShot系统内在SD卡上提供一个固定长度的存储传输中的数据流的存储缓存器。根据需要, 缓存器信息可被获取并传输至机房的一个FTP服务器上, 信号质量优于现场方式传输。

无线连接方式。除了可以连接以太网络以外, LiveShot还可以通过两个USB端口连接一个无线调制解调器, 这两个端口可以被同时使用以增加无线连接的带宽。USB端口通过一对可折叠的0.20m鹅颈转换器连接至外置的无线调制解调器, 安装后该转换器高于设备和摄像人员的头顶以增强连接的效果, 转换器可折叠并使无线调制解调器之间保持合适的物理空间, 以克服狭窄门道和其他障碍物导致的连接困难。LiveShot具备一个高增益Wi-Fi USB转换器, 支持多种3G和4G USB调制解调器。通过内置的以太端口, 可与国际海事卫星终端连接。

2.2 Comrex LiveShotTM系统构成

直播现场便携编码器+网络+演播室解码器直播现场使用便携式编解码器 (LiveShot Portable) , 将音频信号编码并通过网络传送到演播室编解码器 (LiveShot Studio) , 同时接受演播室传回的返送信号并解码。便携式编解码器体积小巧便于携带且可以电池供电, 记者可以不受限制的随时随处进行现场直播。

33G直播模式

3.1单机直接连接演播室

针对突发性事件或直播车无法到达的现场, 利用单机直播可以充分发挥3G直播机动灵活、设备携带方便、安装快捷的优势, 几乎开机就能直播。

3.2现场无切换台, 多机位独立直接连接演播室

这种方式同样适合突发性事件直播, 分别在每台摄像机上直接安装LiveShot Portable, 将视音频信号传送到演播室切换台, 由演播室进行切换播出。优点是各机位都有很强的机动灵活性, 可以不受空间和传输距离影响独立开展多点报道, 使报道更广泛、更深入。

3.3现场使用切换台, 切换台通过编解码器连接演播室

这种方式更适合于非突发性事件且场地相对固定的直播, 现场导播比演播室导播更熟悉现场情况, 可以有效调度各机位。

4设备连接与调试

4.1单机直接连接演播室

摄像机连接现场编解码器 (LiveShot Portable) :根据摄像机最优视音频输入输出接口选择相匹配的连接方式。视频连接方式优先次序是HD-SDI、HDMI、复合视频 (COMPOSITE) ;音频连接方式优先次序是HD-SDI、HDMI、模拟音频 (XLR-5F) 。将摄像机视频输出和音频输出连接到编解码器视频输入和音频输入, 监听耳机接到监听接口 (MONITOR) , 监听本地音频和演播室传回音频, 将4段3.5mm耳麦或蓝牙设备插入通话接口, 供摄像员和镜前记者与演播室导播通话。

演播室编解码器 (LiveShot Studio) 连接视频切换台:编解码器HD-SDI输出接切换台HD-SDI输入, 编解码器复合视频 (COMPOSITE) 输出接该设备对应的监视器, 视频切换台PGM复合视频输出接编解码器复合视频 (COMPOSITE) 输入, 将演播室PGM视频传回现场, 编解码器内部通话 (CUE) 输出接演播室通话控制器输入, 编解码器内部通话 (CUE) 输入接演播室通话控制器输出。

演播室编解码器 (LiveShot Studio) 连接调音台:编解码器AES输出接调音台AES输入, 编解码器AES输入接调音台AES输出, 将演播室播出音频传回现场。

直播前测试:用通话耳麦与导播通话, 用监听耳机监听回传声音质量。

4.2现场无切换台, 多机位独立直接连接演播室

设备连接方法同上。

4.3现场使用切换台, 切换台通过编解码器连接演播室

摄像机连接现场切换台:摄像机或摄像机控制器 (CCU) 视音频输出连到切换台视音频输入, 切换台音频设置为跟随视频 (FOLLOW VIDEO) 即每路音频与视频同步切换, 分别将切换台同步信号、视频回馈信号串接到每台CCU, 连接内部通话线路。

现场切换台连接编解码器:切换台PGM连接到编解码器视音频输入, 编解码器复合视频 (COMPOSITE) 输出连接一路监视器, 将监听耳机或蓝牙设备接到监听接口 (MONITOR) , 监听本地音频和演播室传回音频, 将4段3.5mm耳麦或蓝牙设备插入通话接口, 供现场导播与演播室导播通话。

演播室编解码器 (LiveShot Studio) 连接演播室视频切换台方法同上。

直播前测试:检查各路视音频PVW、PGM信号是否正常;检查摄像员与现场导播通话及摄像员间通话是否正常;检查回馈视频及机头灯是否正常;检查演播室传回视音频信号及现场导播与演播室导播通话系统是否正常;检查镜前记者是否能正常收听演播室播出音频。

摘要:介绍了现场直播中利用3G网络实现直播现场与演播室实时视音频全双工信号互传的实际应用, 包括无线传输编解码系统的介绍、几种3G直播模式特点介绍及无线传输编解码系统 (Comrex LiveShotTM) 的安装与调试。

关键词:广播电视技术,3G直播,无线传输编解码系统

参考文献

[1]Comrex.LiveShotmanual[EB/OL].www.comrex.com.

[2]庞丽丽.3G新闻直播系统设计与应用[J].现代电视技术, 2012, 20 (3) :86-87.

[3]薛英军, 靳错.M-Live 3G直播系统的实现与应用[J].现代电视技术, 2010, 18 (8) :54-57.

[4]周雁智.3G直播系统在电视新媒体的运用[J].电视技术, 2011, 22 (16) :4-6.

[5]王巍, 周长亮.电视新闻直播中3G技术的有效运用[J].新闻传播, 2011, 18 (5) :102-104.

[6]魏加勇.浅谈3G广播直播无线传输系统[J].新媒体, 2012, 19 (2) :64-67.

[7]曹伟峰.3G技术在电视新闻直播中的运用[J].视听界, 2011, 11 (11) :103-104.

数字编解码 篇9

G.723.1是ITU-T (国际电信联盟) 制定的一种双速率语音编解码算法建议, 它将输入语音信号经8 kHz采样, 转换成16 bit的PCM格式, 并压缩成5.3 kb/s或6.3 kb/s的比特流进行传输[1]。G.723.1是H.323的首选标准, 主要应用于多媒体语音信号在现有网络上的低速率传输。

在许多成功的32位嵌入式系统中, ARM处理器都是其核心组成部分。ARM内核已被广泛应用于移动电话、掌上设备以及种类繁多的便携式消费类产品中[2]。ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器, 它是ARM新指令架构—ARMv6的第一代设计实现。该系列主要有ARM1136J, ARM1156T2和ARM1176JZ三个内核型号, 分别针对不同应用领域。

对G.723.1编解码算法进行了相关分析, 并讨论了如何在ARM11处理器上对G.723.1的定点算法进行优化。

1 G.723.1编解码算法分析

G.723.1编码器对原始语音进行分析, 提取和生成线性预测系数、自适应码本的延时和增益、激励脉冲等参数, 并将这些参数进行编码传送。而解码器则用这些参数构造激励信号和合成滤波器, 将激励信号通过合成滤波器就可以获得重建的语音信号。

1.1 编码算法

G.723.1编码器基于线性预测分析合成编码技术, 并使感知加权的误差信号最小。编码器对每个具有240个采样值的帧进行操作。这在8 kHz采样速率时等于30 ms。每个帧首先进行高通滤波以消除直流分量, 然后再分成每个为60个采样值的四个子帧。对每个子帧, 采用未处理的输入信号对10阶线性预测编码器 (LPC) 滤波器进行计算。采用预测分裂向量量化器 (PSVQ) 对用于最后子帧的LPC滤波器进行量化。未量化的LPC系数用来构成短期感知加权滤波器, 该滤波器用来过滤整个帧并得到感知加权的语音信号。

对每两个子帧 (120个采样值) , 采用已加权语音信号对开环基音周期LOL进行计算。这个基音估计是对120个采样值的帧进行的。在从18到142个采样值的范围内对该基音周期进行搜索。

利用先前计算的估计基音周期, 构建一个谐波噪声成形滤波器。使用LPC合成滤波器、共振峰感知加权滤波器和谐波噪声成形滤波器来创建一个脉冲响应。该脉冲响应随后用于进一步的计算。

利用估计得到的基音周期LOL和脉冲响应, 计算出闭环基音预测器。这是一个5阶基音预测器。基音周期是基于一个开环基音估计的微小差分值来计算的。然后将该基音预测器的结果从初始目标向量中减去。基音周期和差分值都被传送到解码器。

最终, 得出对激励的非周期分量的近似值。对高比特率, 采用了多脉冲最大似然量化 (MP-MLQ) 激励, 而对低比特率, 则采用代数编码激励 (ACELP) 。

编码算法如图1所示。

1.2 解码算法

解码器操作也是基于逐帧来完成的。首先, 解码线谱对 (LSP) 参数, 插值并转化成LPC系数, 然后解码器构建LPC合成滤波器。再进行基音解码和激励解码, 对解码后的激励信号通过基音后置滤波器送入合成滤波器, 得到合成语音信号。合成的语音信号经过共振峰后置滤波器和增益缩放控制得到输出的语音信号。解码算法如图2所示。

2 ARM11处理器简介

ARM11处理器在很多方面为软件开发者带来便利。一方面, 它包含了更多的多媒体处理指令来加速视频和音频处理;另一方面, 它的新型存储器系统进一步提高了操作系统的性能;此外, 还提供了新指令来加速实时性能和中断的响应。再次, 目前有很多应用要求多处理器的配置 (多个ARM内核, 或ARM+DSP的组合) , ARM11处理器从设计伊始就注重更容易地与其他处理器共享数据, 以及从非ARM的处理器上移植软件。此外, ARM还开发了基于ARM11系列的多处理器系统——MPCORE (由二个到四个ARM11内核组成) 。

ARM11处理器的超强性能是由一系列的架构特点所决定的。总的来说, ARMv6架构通过以下几点来增强处理器的性能。

(1) 多媒体处理扩展使MPEG 4编码/解码加快一倍, 音频处理加快一倍。

(2) 增强的Cache结构实地址Cache, 减少Cache的刷新和重载, 减少上下文切换的开销。

(3) 增强的异常和中断处理使实时任务的处理更加迅速。

(4) 支持Unaligned和Mixed-endian数据访问使数据共享、软件移植更简单, 也有利于节省存储器空间。

ARM 11处理器的流水线和以前的ARM内核不同, 它由8级流水线组成, 比以前的ARM内核提高了至少40%的吞吐量。8级流水线可以使8条指令同时被执行。从通常的角度说, 过长的流水线往往会削弱指令的执行效率。一方面, 如果随后的指需要用到前面指令的执行结果作为输入, 它就需等到前面指令执行完。ARM 11处理器通过forwarding来避免这种流水线中的数据冲突, 它可以让指执行的结果快速进入到后面指令的流水线中。另方面, 如果指令执行的正常顺序被打断 (如出现跳指令) , 普通流水线处理器往往要付出更大的代价ARM 11通过实现跳转预测技术来保持最佳的流线效率。这些特殊技术的使用, 使ARM 11处理器化到更高的流水线吞吐量的同时, 还能保持和5流水线 (如ARM 9处理器中的流水结构) 一样的效性[3]。ARM 11处理器的流水线结构如图3所示

3 优化方案

首先在ARM开发环境RVDS2.2下选择ARM1136J-S内核, 用C语言实现定点的G.723.1编解码算法, 然后进行编译, 再使用性能分析器对编解码器进行性能分析。通过对经常被调用且对性能影响较大的函数进行优化来实现对编解码器的优化。

3.1 性能分析

通过性能分析器对G.723.1编解码器进行分析, 得出各个模块占用的时间。

在6.3 kb/s速率下进行编码, 其中固定码本搜索函数Find-Best占了38.26%, 自适应码本搜索函数Find-Acbk占了31.45%, 基音估计函数Estim-Pitch占了9.37%, 这三个函数总共占了语音编码时间的78%以上。在5.3 kb/s速率下进行编码, 自适应码本搜索函数Find-Acbk占了50.43%, 代数码本搜索函数ACELP-LBC-code占了12.91%, 基音估计函数Estim-Pitch占了11.05%, 这三个函数占了总的语音编码时间的73%以上。

在6.3 kb/s速率下进行解码, 共振峰后置滤波器函数Spf占了36.25%, 合成滤波器函数Synt占了16.42%, 基音后置滤波器函数Comp-Lpf占了15.46%, 自适应码本计算函数Decod-Acbk占了8.84%, 这四个函数占了总的解码时间的75%以上。在5.3 ks速率下进行解码, 共振峰后置滤波器函数Spf占了33.65%, 基音后置滤波器函数Comp-Lpf占了18.54%, 合成滤波器函数Synt占了14.62%, 自适应码本计算函数Decod-Acbk占了8.22%, 这四个函数占了总的解码时间的73%以上。

由各个模块占用的时间可以看出, 优化工作应该集中于Find-Best、Find-Acbk、Estim-Pitch、ACELP-LBC-code、Spf、Synt、Comp-Lpf、Decod-Acbk这几个函数。

3.2 算法的优化

通过分析, 发现在自适应码本搜索函数和固定码本搜索函数中可以利用最优化公式, 将运算进行简化来实现算法的优化。

3.2.1 卷积运算的优化

卷积运算在固定码本搜索、自适应码本搜索等函数中所占的比例很大, 可以根据变量的特点, 变卷积运算为加减运算, 极大地减少运算次数。

例如:在用多脉冲最大似然量化的方法进行固定码本搜索时, 为了计算预测残差信号r′[n], 要进行卷积运算。

r[n]=j=0nh[j]v[n-j], 0n59 (1)

式 (1) 中, v[n]是对具有脉冲响应h[n]的组合滤波器S (z) 的激励, 并且被定义为

v[n]=Gk=0Μ-1akd[n-mk], 0n59 (2)

式 (2) 中, G是增益因子, δ[n]是一个Dirac函数, {αk}k=0, …, M-1和{mk}k=0, …, M-1分别是Dirac函数的符号 (SymbolqB@1) 和位置, 而M是脉冲的数量, 对偶数子帧为6, 对奇数子帧是5。交叉关联函数d[j]定义为:

d[j]=n=j59r[n]h[n-j], 0j59 (3)

这样有

r (n) =j=0nh[j]Gk=0Μ-1αkd[n-j-mk]=Gk=0Μ-1αkh (n-mk) 0j59 (4)

由于αk为1或-1, k=0Μ-1αkh (n-mk) 即通过加减运算完成, 最后做一次增益G的乘法运算就可以得到r′[n]。计算一次预测残差向量仅需要进行多次加减运算[4]。

3.2.2 基本运算的优化

进一步分析占用时间最多的几个函数的代码, 发现其中基本运算 (加、减、乘、除、移位、饱和运算、规格化等) 所占的比重较大。这些基本运算都集中在BASOP.C文件中, 通过将这些基本运算都用优化的算法改写, 并且最终写成汇编子程序, 可以有效地提升G.723.1编解码的效率。

例如:长乘法运算L-mult (var1, var2) , 用来计算两个16位数的乘积var1×var2, 运算结果再乘以2, 并进行32位数的饱和。原代码使用的算法如下:首先, 将两个16位的数转化成32位的数进行乘法运算;然后, 判断运算结果是否等于0x40000000, 若不等于, 则运算结果再乘以2得到最终的结果, 否则, 说明再乘以2后, 运算结果已经溢出, 这时, 应该返回32位数的最大值0x7fffffff。优化后的算法如下:直接进行两个16位数的乘法, 然后对运算结果进行自身的32位饱和加法。这样会省掉中间的判断过程, 而且可以使用ARM相应的乘法指令和饱和指令来进行运算, 减少运算量。最终写成的汇编子程序如下:

3.3 C语言级的优化

通过以下的各种方法来优化关键函数的C代码, 可以帮助C编译器生成执行速度更快的ARM代码。

3.3.1 循环体的优化

尽量使用减计数到零的do-while循环, 这样编译器就不需要分配一个寄存器来保存循环终止值, 而且与0比较的指令也可以省略。展开重要的循环体可以降低循环的开销, 同时设法使循环的次数是循环展开数的倍数。这样可以在同样的时钟周期内运行更多的指令, 提高循环的效率。

3.3.2 减少函数调用参数

尽可能把函数参数的个数限制在4个以内。函数中最前面的4个整形参数是通过ARM的前4个寄存器r0, r1, r2和r3来传递的。随后的整型参数是通过下降式满堆栈 (full descending stack) 来传递的。对带有4个或者更少参数的函数来说, 编译器可以用寄存器传递所有的参数;而对于多于4个参数的函数, 函数调用者和被调用者都必须通过访问堆栈来传递一些参数, 执行效率要低得多。

3.3.3 内联函数

使用内联函数可以完全去除函数调用开销。对一些代码较少的被调函数, 可以直接嵌入其主调函数中, 这样可以减少调用次数, 从而达到降低执行时间的目的。使用内联函数要比使用#define宏定义更好, 因为后者不检查函数参数和返回值的类型。

3.4 汇编语言级的优化

经过C语言级的优化, 可以获得相对较高的程序执行效率。但若要获得最好的性能, 就要通过手工编写汇编代码来优化那些对整个系统性能影响较大的关键函数。在编写ARM汇编代码时, 主要使用到以下一些优化方法。

3.4.1 指令调整

通过调整一段代码中的指令序列, 可以避免处理器的暂停等待。ARM指令执行是在指令流水线中进行的, 所以一条指令执行的时间会受其相邻指令的影响。Load和乘法指令在许多情况下会产生延迟。可以通过预载——在循环i中预载循环i+1的数据, 循环展开——在循环中插入原循环体i和i+1的代码来解决load指令导致的流水线互锁。

3.4.2 寄存器分配

ARM有14个通用寄存器:r0—r12和r14。编写汇编代码时, 应该把尽可能多的数据存放在14个通用寄存器里。如果使用的局部变量超过了14个, 那么从最内层循环向外把剩余的变量放入堆栈。

3.4.3 条件执行

ARM指令集的一个重要特征是大多数的指令都可以包含一个可选的条件码。当程序状态寄存器中的条件标志满足指定条件时, 带条件码的指令才会执行。利用条件执行可以实现大部分if条件语句, 比使用条件分支指令效率高得多。

3.4.4 高效的乘法指令

通过使用16×16位的乘法指令SMULBB、SMULTT、SMULTB、SMULBT, 以及32位的乘累加指令SMLATB、SMLATT、SMLABT、SMLABB, 可以高效地实现有符号数的乘法及乘累加操作。

3.4.5 饱和指令

除了在ARMv5E中提供的QADD、QSUB饱和指令外, 在ARMv6中还增强了对饱和运算的支持, 通过使用SSAT指令可以对任意位置的有符号32位数进行饱和操作。

4 测试结果

使用优化后的代码在RVDS2.2上对ITU-T标准中的测试向量进行测试, 并与参考向量进行比较, 结果完全一致。

使用同一测试向量对代码进行测试, 未优化前, G.723.1编码器的运算量约为420MCPS, G.723.1解码器的运算量约为27MCPS。而经过优化后, G.723.1编码器的运算量约为42MCPS, G.723.1解码器的运算量约为7MCPS。优化后, 编码器的效率提高了90%, 解码器的效率提高了74%。

5 结论

简要介绍了G.723.1语音编解码的算法原理及ARM11处理器的特性, 通过对算法中占用时间较多的函数进行优化, 为在ARM11处理器上高效实现G.723.1编解码提出了可行的优化方案, 重点讨论了算法优化、C语言级优化以及汇编指令级优化这三种优化策略。

通过测试表明, 优化后的代码通过了ITU-T标准中的所有测试向量。优化后的代码比未优化前效率提高了74%—90%, 可见优化的效果很明显。以上这些优化方法主要是针对ARM11处理器, 但对于其它型号的处理器也有借鉴作用。

参考文献

[1] ITU-T Recommendation G.723.1, Dual Rate Speech Coder forMultimedia Communications Transmitting at 5.3 and 6.3 kbits.March 1996

[2][美]Sloss AN, [英]Symes D, [美]Wright C.ARM嵌入式系统开发—软件设计与优化.沈建华, 译.北京北京航空航天大学出版社, 2005

[3] Cormie D.The ARM11TMMicroarchitecture.ARM Ltd, April 2002

上一篇:喷锚支护技术下一篇:中医药治疗失眠