基于STi7109的PVR数字电视机顶盒设计
2010-06-25张启武于鸿洋
张启武,于鸿洋,张 萍
(电子科技大学 电子工程学院,四川 成都 611731)
1 引言
PVR(Personal Video Recorder)功能因其实用和内置硬盘存储量大的特点而成为数字电视机顶盒的重要扩展功能。它能有效提高产品的市场竞争力,是数字电视机顶盒一个重要的发展方向。在当前网络电视快速发展的情况下,PVR数字电视机顶盒增强了电视的吸引力,因此受到广电服务提供商的青睐。随着硬盘价格的不断走低,拥有该功能的产品不会明显增加消费者的经济压力,具有普及推广的潜力[1]。
2 PVR实现原理
音视频数据及数字信号首先经过MPEG-2编码器进行数据压缩形成基本码流ES(Elementary Stream),再经打包后形成有包头的基本码流PES。不同音视频信号的PES流被送入传输复用器进行系统复用,形成传输流(TS)[2-6]。 TS 结构如图 1 所示。
图1 传输流结构
传输流中包括多个节目源的不同信号。为了区分这些不同的音视频信号,在系统复用时加入服务信息SI以使接收端可以识别不同的节目。DVB标准定义的部分服务信息如表1所示[7]。
表1 DVB标准定义的部分服务信息
当接收机要接收某个指定节目时,它首先从节目关联表中取得这个节目PMT的PID值,然后从TS流中找出与PID值相对应的PMT,从中获得构成这个节目的基本码流的PID值,根据这个PID值滤出相应的视频、音频和数据等基本码流,解码后复原为原始信号[8]。PVR功能只是在滤出相应的基本码流后不进行解码,而直接将它们存储在硬盘当中。
在机顶盒只有一个高频头的情况下,只能对同一个TS流里的节目进行边看边录的操作。在没有收看电视节目时可以对任一节目进行录制,而在收看节目时只能录制与该节目在同一频点的其他节目。定义两个函数,RECORDING1(见图 2)用于普通存储,RECORDING2(见图3)用于时移播放。时移播放是在硬盘中开设足够的缓存区,一旦在收看电视节目时按下了暂停键,立即进行录制,等录制后按下播放键,即从暂停处开始播放,就像发生了时移一样。两个函数的区别在于,前者记录的数据在播放后仍需保存,而后者在播放后实时删除。
图2 普通录制
图3 时移录制
3 文件系统
PVR机顶盒接收的数据在硬盘中是以PES数据包的格式存储的。
采用SATA硬盘,其数据传输率可达150 Mbyte/s。将磁盘分成C,D两个区,C区12 Gbyte,其余分配给D区。均采用EXT2文件格式。每个格式化后的扇区可容512 byte数据。因为硬盘数据的存放一般都以磁盘块(扇区大小的整数倍)为单位,为了减少寻道延迟和旋转延迟从而导致文件读写速度变慢,应该将PVR机顶盒磁盘块设置得相对大些,以使有限的嵌入式系统内存能够全部存放文件分配表从而加快读写速度。设置磁盘块大小为16 kbyte。
每个节目流都有一个信息文件、索引文件和数据文件。其中,数据文件记录码流,分为常规文件和时移文件。RECORDING1()使用常规文件,存于/convention目录。该文件建立时有一定的初始大小,其长度随着记录时间的增加而增加,直到节目录制完成或硬盘没有空间为止。RECORDING2()使用时移文件,存于/shift目录。该文件也需要建立索引,有一个读指针和一个写指针,初始时两个指针均指向时移文件开始处。RECORDING2()录像的目的是使节目在硬盘上缓存一定的时间,用于观众收看节目时临时按下的暂停命令。当选择暂停时,画面静止,而写指针会立即向后移动并开始录制。当恢复收看时,读指针开始从暂停处向后移动并解析和播放,播放过的数据随后删除。若指针到达文件结尾则跳转到文件头部重新记录或播放。时移播放示意图见图4。当观众恢复播放后又进行了变换频道操作,则将先前时移录制的文件删除,读写指针归置初始处。
图4 时移播放示意图
4 特技播放的实现
对音视频数据流进行解析,在它们被存入到硬盘的过程中记录其中I帧的位置,形成索引文件。在播放时按播放速度的要求,按索引文件读出所需I帧数据送给解码单元解码播放,这样就可以实现快进、快退的特技播放效果了。根据MPEG-2语法,在图像代码中指明了帧类型,二进制001代表I帧,010代表P帧,011代表B帧。这样就可以根据这些帧标识判断帧类型并记录I帧的位置,从而进行相应的特技播放。特技播放部分C代码如下:
void play_hdd(int prognum)
{int pace=1,pressnum=0;
int*progp;/*指向节目名称的指针*/
long int*indexp;/*具体节目索引文件的指针*/
while(*indexp!=NULL)
{switch(pace)
{case 1∶{…}/*对 GOP 解码播放 */
break;
default∶{…}/* 对 I帧解码播放 */
}
if(before_for())
pace=pace%4+1;/*最快4倍速播放*/
if(back_for())
{if(pressnum==0)
pace=-1;
else
pace--;
pressnum++;
if(pressnum==5)
pace=1;/*若4倍速快退后继续按倒退键则变成正常播放*/
}
if(play())
pace=1;
if(pause())
pace=0;
indexp+=pace;
}}
在慢放过程中,对同一帧进行两次重现。为了避免产生尖锐或拖沓的声音,在各种特技播放的过程中不对音频进行解码。
5 小结
笔者从MPEG-2标准入手进行分析,找到了PVR功能的实现方法。对磁盘进行分区并建立文件系统,定义不同函数实现了普通录制和时移播放,并基于索引文件和重放技巧实现了特技播放。可在存储的音视频文件的组织方面做进一步研究和改进,以便提高硬盘读写速度和利用率。
[1]蒲海铭,荆涛,彭贵定.高清数字电视机顶盒的研究与设计[J].电视技术,2006(9):40-42.
[2]STMi-croelectronics.STi7109 low-cost HDTV set-top box decoder for H.264 and Microsoft WMA9[EB/OL].[2010-02-25].http∶//www.st.com/stonline/products/literature/bd/11660.pdf.
[3]刘文开,刘远航.有线广播数字电视技术[M].北京:人民邮电出版社,2003.
[4]ISO/IEC 13818-2,Information technology-generic coding of moving pictures and associated audio∶pictu[S].1995.
[5]ISO/IEC 13818-3,Information technology-generic coding of moving pictures and associated audio∶audio[S].1995.
[6]钟玉琢,王琪,赵黎,等.MPEG-2运动图像压缩编码国际标准及MPEG的新进展[M].北京:清华大学出版社,2002.
[7]赵坚勇.数字电视技术[M].西安:西安电子科技大学出版社,2004.
[8]廖洪涛,徐征.数字电视业务支撑系统[M].北京:电子工业出版社,2007.