马赛克业务是将屏幕分割成若干个小区域,每个小区域显示各个频道数字电视节目的全动态视频马赛克,用户只需通过遥控器移动箭头,通过小画面的选择便可切换到想要收看的节目频道,充分体现了马赛克导航频道的交互性和友好性,用户的需求也得到了最大程度的满足。
在电视台业务方面,通过EPG信息的播发,可以帮助用户更好地解播出节目的信息,这种信息是文字形式的。但是,随着播出频道的增多,需要为用户提供高效的节目导航手段。相对文字导航,基于多画面所谓“Mosaic”的图像导航方式更具有吸引力,它能够更直接向用户展现播出节目的内容。
CCTV-SI就是Mosaic的一次具体应用。为体育频道提供更友好的交互功能、多解度地观赏画面,并可以由用户自由选择和切换观赏角度。系统提供方便、灵活的Mosaic设备,可对屏幕任务划分,多级Mosaic功能更可助你建立一个完美、强大Mosaic体系。
1 马赛克业务基本概念和马赛克描述子
DVB标准中定义马赛克组件(Mosaic Component)集合不同的视频影像,形成一个MPEG-2编码的视频频流,视频影响的合成由源端完成。这样,在显示端、在屏幕的每个特定的区域将显示不同的图像。
马赛克业务是图形的电子掼,在每个逻辑单元中可以呈现的信息包括:视频、静止图像、图形/文本。逻辑单元对应的视频是经过缩小和重定位的连续图像,静止图像由一个仅包含帧内编码的视频序列组成。
马赛克描述子存在于SDT表或PMT表中,也可能在两表中都有马赛克描述子,马赛克描述子是为屏幕上的马赛克画面所显示的内容和DVB-SI信息建立联系。在马赛克描述子中描述了以下内容:
·基本单元的排列方式;
·将基本单元组合成逻辑单元;
·逻辑单元所链接的内容、信息。逻辑单元可以指向业务、业务群、事件或者其它的马赛克业务,指向其它的马赛克业务就形成了马赛克业务的嵌套。
2 马赛克业务的实现方法
在终端设备上实现DVB的马赛克业务必须有前端设备的支持和配合,前端主要完成两个方面的工作:
(1)形成马赛克画面
在前端将不同的业务、业务群和事件组成一个马赛克画面,将它作为一个系统中的业务,并为它分配service_id等资源。
(2)添加对马赛克业务的描述到SI信息中
通过上一步骤形成马赛克业务码流后,还应该生成马赛克描述子,将马赛克描述子添加到相庆的SI信息中(SDT、PMT),并与其它的表一起生成业务信息码流。 前端的主要设备是马赛克服务器。马赛克服务器的主要功能是从输入到服务器的多个节目流中按要求提取视频、静止图像以及图形数据,然后进行缩放、定位等操作将它们合成一个节目流,同时形成相应的业务信息表。将生成的节目流、业务信息表以及原始节目流经过复用器后即形成了一路完整的具有马赛克业务的节目流,如图3。
机顶盒实现马赛克业务的流程:
·检查当前或其它TS流的SDT表。
·如果存在马赛克服务,那么:
A选择相应的TS流;
B处理TS流的PAT、PMT表;
C呈现马赛克业务;
D如果用户对某一逻辑单元的内容感兴趣,则根据下面的原则进行相应的处理:
①逻辑单元与业务群相关:显示BAT表的信息;
②逻辑单元与业务相关:显示SDT表的信息,处理PAT和PMT表并显示选中的业务;
③逻辑单元与事件相关:显示EIT表的信息,处理PAT和PMT表并显示选中的事件;
④逻辑单元与马赛克业务相关:显示SDT表相关信息,处理PAT和PMT,呈现选中的马赛克业务并转到D,重复以上步骤处理选中的马赛克业务。
3 利用终端图像层合成实现马赛克业务
在第2节中所介绍的呈现马赛克业务的方法是在前端和终端配合的情况下实现的,没有前端提供马赛克服务,终端无法呈现。本文提出一种利用终端(机顶盒)图形层合成马赛克画面的方法,此方法的特点是不需要前端提供马赛克服务,只要前端发送视频节目流,就可以在终端模块马赛克业务的效果。
机顶盒一般都有多个图形层,包括:Background层、Vedio层、Still层、OSD层、Cursor层等,如图4。
Background层:显示背景色。
Vedio层:显示从MPEG-2解码器输出的运动图像。
Still层:显示一幅表态的图像。
OSD层:屏幕显示,主要用来绘制菜单、界面等。
Cursor层:显示光标。
本文提出的方法主要利用Still层和Vedio层,下面以STi5516为例简单介绍此方法。
重构数据有45×36个宏块。解码后的重构数据在内存中的排放次序遵从一定的规则,Sti5516解码完成后的重构数据是以宏块的顺序存放的。在其它芯片中,重构数据的存放方式可能有所不同,如LSI的SC2000,它解码后的重构数据是按照行的次序存放的。
将重构图像帧的宏块按照如图6所示的方式进行编号,每个宏块包含16×16个像素点的亮度和色差分量数据。
(1)重构数据亮度分量的存放
将图6中第4个宏块编码一组(宏块组),如0、1、45、46组成的宏块组如图7(a)。每个这样的宏块组描述了32×32个像素点的亮度和色差信息。由于重构数据是4:2:0的格式,那么这样一个宏块组中的亮度分量数据有32×32=1K字节。数据的存储按行的次序进行。设LMB(a,1)表示宏块a亮度数据的第一行数据,如图7(a),亮度数据排列顺序如下:
LMB(a,1)→LMB(b,1)→LMB(a,2)→…→LMB(a,16)→LMB(b,16)→LMB(c,1)→LMB(d,1)→LMB(c,2)→LMB(d,2)→…→LMB(c,16)→LMB(d,16)。 存储完一个宏块组的亮度数据后接着存储下一个宏块组的数据,直至存储完所有宏块的亮度数据。
(2)重构数据色差分量的存放
将图6中的宏块每8个宏块编成一组(宏块组),如图6中的宏块0、1、2、3、45、46、47、48,组成的宏块组如图7(b)。宏块组中的每个宏块的色差分量数据有128字节,一个宏块组的色差分量数据128×8=1K字节,数据的存储也按行的次序进行。设CMB(a,1)表示宏块a色差数据的第一行数据,如图7(b),色差数据排列顺序如下:
CMB(a,1)→CMB(b,1)→…→CMB(a,8)→CMB(b,8)→CMB(c,1)→CMB(d,1)→…→CMB(c,8)→CMB(d,8)→CMB(e,1)→CMB(f,1)…→CMB(e,8)→CMB(f,8)→CMB(g,1)→CMB(h,1)→…→CMB(g,8)→CMB(h,8)。
Still层显示的帧数据格式为4:2:2。Still层的数据在内存中的存放方式与Video层的数据在内存中的存放方式有所不同,Still层的数据是按照行的顺序存放的。Still层的数据在内存中存放的方式如图8所示。
知道了图形显示的数据在内存中的排列方式,就可以将Video层的数据拷贝出来。然后通过适当的转换后在Still层显示出来,通过这样的方式,可以用图形层模拟马赛克业务。实现的步骤如下:
①为Still层显示分配一定大小的内存区域A;
②停止视频的播放;
③拷贝正在显示的Video层的视
频数据(4:2:0)到内存中;
④将拷贝出来的视频数据转换成Still层能够显示的数据格式;
⑤按照一定的比例缩小尺寸后将数据存放在内存B;
⑥将内存B的数据二维拷贝到内存B的某一特殊位置;
⑦切换至下一节目,重复步骤②。
马赛克业务为有线电视观众提供形式新颖、类观、功能实用的导视服务,每家每户都能够方便快捷地查询到自己感兴趣的节目,再不用为了找到满意的节目而拿着遥控器不停地选台了。
马赛克业务定将在数字电视的发展中起到重要的作用。