编码数据流接合设备和方法及编码数据流生成设备和方法

文档序号:7579678阅读:387来源:国知局
专利名称:编码数据流接合设备和方法及编码数据流生成设备和方法
技术领域
本发明涉及用在数字广播系统中的编码数据流接合设备(splicingdevice)、编码数据流接合方法、编码数据流生成设备和编码数据流生成方法。尤其涉及用于通过接合一个数据流级别(a stream level)的两个编码数据流而生成无缝接合的数据流(seamless spliced stream)的编码数据流接合设备、编码数据流接合方法、编码数据流生成设备和编码数据流生成方法。
背景技术


图1描述了当前的电视广播系统。在当前的电视广播系统中,将电视节目分配给各个家庭的广播电台包括制作全国性规模的电视节目的关键电台(或主电台)Sk,及许多附属于关键电台用以制作独特的地方电视节目的地方电台(分支)SA、SB和SC。关键电台SK用于制作通用全国的电视节目和将制作的电视节目发送给地方电台。地方电台是用于向本地区域的家庭分配从关键电台通过电台间的发送而送来的原始电视节目和通过将原始电视节目的一部分编辑成独特的地方形式而制作成的电视节目的广播电台。例如,如图1所示,地方电台SA是用于制作要发送给广播区域EA的家庭的电视节目的电台。地方电台SB是用于制作要发送给广播区域EB的家庭的电视节目的电台。地方电台SC是用于制作要发送给广播区域EC的家庭的电视节目的电台。例如,在每个地方电台执行的编辑过程是将独特的地方天气预报节目插入到从关键电台发来的新闻节目中的过程,或将地方商业广告插入到诸如电影或戏剧的节目中的过程。
图2A到2C描述了在每个地方电台的编辑过程。图2A表示在关键电台制作的原始电视节目PGOLD。图2B表示在地方电台制作的用于地方观众的替代电视节目PGNEW。图2C表示在地方电台编辑的电视节目PGEDIT。在图2A到2C中所示的编辑过程的是用在地方电台制作的用于地方观众的商业广告CM1’、节目3’和商业广告CM3’来替代从关键电台发来的原始电视节目的商业广告CM1、节目3和商业广告CM3的例子。这种在地方电台的编辑过程的结果是制作成适合于地方观众的电视节目,其中在关键电台制作的电视节目(即,节目1、节目2、CM2和节目4)和在地方电台制作的电视节目(即,商业广告CM1’、节目3’和CM3’)共存。
因为当前电视广播系统使用模拟广播将模拟基带电视信号分配给每个家庭,近年来开始尝试用下一代使用数字技术的广播系统来替代模拟广播系统。数字广播系统是通过使用诸如MPEG2(Moving Picture Experts Group Phase2,运动画面专家组第二阶段)的压缩编码技术来压缩编码视频和音频数据以及通过地面波或卫星波将编码数据流发送到每个家庭和其它电台的系统。具体讲,从作为数字广播系统提出的广播技术中,欧洲提出的作为下一广播系统的DVB(数字视频广播)标准是最具影响力的技术。该DVB标准已成为事实上的标准。
参照图3,现将描述通过使用MPEG标准从发送端系统将含有视频数据和音频数据的节目发送到接收端系统的典型的数字发送系统。
在该典型的数字发送系统中,发送端系统10有MPEG视频编码器11、MPEG音频编码器12和多路复用器(MUX)13。接收端系统20有多路分解器(DMUX)21、MPEG视频解码器22和MPEG音频解码器23。
MPEG视频编码器11基于MPEG标准对基带源视频数据V编码,并将编码数据流作为视频单元流ES输出。MPEG音频编码器基于MPEG标准对基带原始音频数据A编码,并将编码数据流作为音频单元流ES输出。多路复用器13接收来自MPEG视频编码器11的视频单元流和来自MPEG音频编码器12的音频单元流。然后,多路复用器13将该数据流转换成传输数据流分组的形式,这样就生成了含有视频单元流的传输数据流分组和含有音频单元流的传输数据流分组。多路复用器13对传输数据流多路复用以便使含有视频单元数据流的传输数据流分组和含有音频数据流的传输数据流共存,从而生成要发送给接收系统20的传输数据流。
多路分解器21接收通过传输线发送的传输数据流,并且将传输数据流多路分解成含有视频单元流的传输数据流分组和含有音频单元流的传输数据流分组。然后,多路分解器21从含有视频单元流的传输数据流分组中生成视频单元流,并且从含有音频单元流的传输数据流分组中生成音频单元流。MPEG视频解码器22接收来自多路分解器21的视频单元流,然后基于MPEG标准对该视频单元流解码,从而生成基带视频数据V。MPEG音频解码器23接收来自多路分解器21的音频单元流,并且基于MPEG标准对该音频单元流解码,从而生成基带音频数据A。
在传统的模拟广播系统即将由使用这种数字发送系统的数据广播系统替代的情况下,从关键电台发送到地方电台的电视节目的视频数据是基于MPEG2标准进行压缩编码的编码数据流。因此,为了在地方电台执行将关键电台发送来的原始编码数据流的一部分代之以地方电台制作的编码数据流的编辑过程,编码数据流必须在编辑过程执行前被解码以恢复基带视频数据。这是基于以下原因。即,因为按照MPEG标准包含在编码数据流中的每个画面的预测方向与前一画面和后一画面的预测方向有关,编码数据流并不能连接在数据流上的任意位置。如果两个编码数据流强行连接,编码数据流的接合处的数据就会不连续且不能正确解码。
因此,要实现参照图2A到2C所描述的编辑过程,必须执行解码过程,以一次解码从关键电台提供的原始编码数据流和为地方观众制作的编码数据流,从而恢复基带视频信号;还必须执行编辑过程,以编辑两个基带视频数据,从而生成为广播编辑的视频数据;并且还必须执行编码处理,以再次对编辑后的视频数据编码,从而生成编码视频数据流。然而,因为基于MPEG标准的编码/解码过程并非100%可逆的编码/解码过程,所以会出现由于重复解码过程和编码过程而导致的画面质量恶化的问题。
因此,近年来要求有一种在不需对提供的编码数据流解码的情况下就能在编码数据流状态中进行编辑的技术。该技术在编码比特流的级别上连接两个不同的编码比特流,以便生成连接的比特流,这种技术称之为“接合(splicing)”。总之,接合意味着在编码数据流的状态编辑和连接多个数据流。
然而,实现这种接合过程有以下两个问题。
现在将描述第一个问题。
按照用于以上描述的MPEG视频解码器11和MPEG音频解码器22的MPEG标准,双向预测编码系统将用作编码系统。在这个双向预测编码系统中,执行三种类型的编码,即帧内编码、帧间前向预测编码和双向预测编码。各个类型的编码所得到的画面被称为I-画面(帧内编码画面)、P-画面(预测编码画面)以及B-画面(双向预测编码画面)。I-、P-和B-画面适当组合形成GOP(画面组),作为随机存取的单元。通常,I-画面具有最大量的生成代码,而P-画面具有第二大量的生成代码。B-画面则具有最小量的生成代码。
在为每一画面生成的比特量随MPEG的标准而变化的编码方法中,,为了准确地由视频解码器22对获得的编码比特流(以下简称为数据流)解码以便得到画面,在视频解码器22的输入缓冲器中的数据占有量必须被视频编码器11所掌握。因此,按照MPEG标准,称为“VBV(视频缓冲检验器)缓冲器”的虚拟缓冲器,被假定为对应于视频解码器22的输入缓冲器的缓冲器,并且规定视频编码器11执行编码过程,以便不造成VBV缓冲器的故障,即,下溢或上溢。例如,VBV缓冲器的容量是按照要发送的信号的标准来决定的。在主要轮廓和主要级别(main profile and main level,错误!未找到引用源。的标准视频信号的情况下,VBV缓冲器容量为1.75M位。视频编码器11控制每个画面生成的比特量以便不会造成VBV缓冲器的上溢或下溢。
现在将参照图4A到4C描述VBV缓冲器。
图4A表示通过由视频编码器对含有在关键电台制作的节目1和商业广告CM1的原始电视节目进行编码,得到的原始数据流STOLD,以及对应于原始数据流STOLD的VBV缓冲器中的数据占有量的轨迹。图4B表示由地方电台的视频编码器通过对为地方观众制作的用以替代原始电视节目中的商业广告CM1的一部分的商业广告CM1’进行编码而得到的替代数据流STNEW,以及对应于替代数据流STNEW的VBV缓冲器中的数据占有量的轨迹。在以下的描述中,因为通过对从关键电台发送到地方电台的原始电视节目进行编码而得到的数据流的一部分被新的数据流所替代,通过对原始电视节目进行编码而得到的原始数据流表示为“STOLD”,意思是旧的数据流,而重新替代原始数据流STOLD的一部分的替代数据流表示为“STNEW”。图4C表示通过在接合点SP接合相对于原始数据流STOLD的替代数据流STNEW而得到的接合数据流STSPL,以及对应于接合数据流STSPL的VBV缓冲器中的数据占有量的轨迹。
在图4A到4C中,VBV缓冲器中的数据占有量的轨迹的右上方部分(斜坡部分)表示发送比特率,而垂直向下部分表示视频解码器从解码器缓冲器中导出的比特量,用于复制每个画面。视频解码器从解码器缓冲器导出比特的时序是按照称为解码时间标记(decoding time stamp,DTS)的信息来指定的。在图4A到4C中,I、P和B分别代表I-画面、P-画面和B-画面。
原始编码数据流STOLD是由关键电台的视频编码器编码的数据流,替代数据流STNEW是由地方电台的视频编码器编码的数据流。原始编码数据流STOLD和替代数据流STNEW分别被它们各自的视频编码器所编码。因而,由于地方电台的视频编码器是在根本不知道关键电台的视频编码器的VBV缓冲器中的数据占有量的轨迹的情况下执行用于独特地生成替代数据流STNEW的编码过程,所以在接合点的VBV缓冲器中的原始数据流STOLD的数据占有量VBVOLD和在接合点的VBV缓冲器中的替代数据流STNEW的数据占有量VBVNFW互相不同。
总之,为了防止接合数据流STSPL的接合点SP周围的VBV缓冲器中的数据占有量的轨迹出现不连续性,VBV缓冲器中的接合数据流STSPL的替代数据流STNEW的数据占有量的开始级别必须是VBV缓冲器中的数据占有量VBVOLD的级别。因此,如图4A到4C所示,如果VBV缓冲器中的替代数据流STNEW的数据占有量VBVNEW的值小于VBV缓冲器中的原始数据流STOLD的数据占有量VBVOLD的值,则VBV缓冲器在接合数据流STSPL的替代数据流STNEW部分产生上溢。相反,如果VBV缓冲器中的替代数据流STNEW的数据占有量VBVNEW的值大于VBV缓冲器中的原始数据流STOLD的数据占有量VBVOLD的值,则VBV缓冲器在接合数据流STSPL的替代数据流STNEW的部分产生下溢。
现在将描述第二个问题。
在基于MPEG标准编码的数据流的标题中,描述了各种表示编码信息的数据单元和标志。编码数据流是通过使用这些数据单元和标志来解码的。
组成图2A到2C中所示的原始电视节目的主要部分的节目1、2、3和4并非一定由通过摄像机等所记录的、具有29.97Hz(大约30Hz)的帧速率的NTSC系统的电视信号所组成,而可以是由从具有24Hz(每秒24帧)的帧速率的电影材料转变的电视信号所组成。通常,将24Hz的电影材料转变成29.97Hz的电视信号的处理过程称为“2∶3下拉处理过程”(2∶3 pull-downprocessing),它包括以预定的顺序将两场的原始材料转变成三场的过程。
图5描述了这个2∶3下拉处理过程。在图5中,T1到T8表示具有24Hz帧频的电影材料的顶场,B1到B8表示具有24Hz的帧频的电影材料的底场。图5中的椭圆和三角形表示由顶场和底场所组成的帧结构。
具体讲,在这个2∶3下拉处理过程中,执行将四个重复场插入到具有24Hz的帧频的电影材料(8个顶场T1到T8和8个底场B1到B8)中的过程。这四个重复场包括由重复底场B2而生成的重复场B2’,由重复顶场T4而生成的重复场T4’,由重复底场B6而生成的重复场B6’,以及由重复顶场T8而生成的重复场T8’。因此,通过这种2∶3下拉处理过程,具有29.97Hz的帧频的电视信号由具有24Hz的帧频的电影材料生成。
在MPEG编码器中,由2∶3下拉处理过程所得到的电视信号不直接由视频编码器所编码,而是在重复场被2∶3下拉处理的电视信号所除掉后被编码。在图5所示的例子中,重复场B2’、T4’、B6’和T8’被2∶3下拉处理的电视信号所除掉。在编码过程前除掉重复场的原因是重复场是在2∶3下拉处理时插入的冗余场,即便当它们被删掉以提高压缩编码效率时也不会造成任何画面质量的降低。
而且,根据MPEG标准,规定了标志“repeat_first_field”,表示是否应该通过重复组成一个帧的任何两个场而生成重复场,该标志是在对编码数据流的解码中描述的。具体讲,在对编码数据流的解码过程中,如果编码数据流中的标志“repeat_first_field”是“1”,MPEG解码器生成重复场。如果编码数据流中的标志“repeat_first_field”是“0”,MPEG解码器就不生成重复场。
在图5所示的例子中,通过对由顶场T1和底场B1所组成的帧编码所得到的数据流的“repeat_first_field”是“0”,而通过对由顶场T2和底场B2组成的帧编码所得到的数据流的“repeat_first_field”是“1”。通过对由顶场T3和底场B3组成的帧编码所得到的数据流的标志“repeat_first_field”是“0”,而通过对由顶场T4和底场B4所组成的帧编码所得到的数据流的“repeat_first_field”是“1”。因此,在对由顶场T2和底场B2组成的帧的数据流解码过程中,生成了重复场B2’。在对由顶帧T4和底帧B4组成的帧的数据流解码过程中,生成了重复场B4’。
另外,按照MPEG标准,规定了标志“top_field_first”,表示组成帧的两场的第一场是顶场还是底场,该标志描述在编码数据流中。具体讲,如果“top_field_first”是“1”,表示顶场暂时超前底场的帧结构。如果“top_field_first”是“0”,表示顶场暂时落后底场的帧结构。
在图5的例子中,由顶场T1和底场B1组成的帧的编码数据流的“top_field_first”是“0”,并且由顶场T2和底场B2组成的帧的编码数据流的“top_field_first”是“0”。由顶场T3和底场B3组成的帧的编码数据流的标志“top_field_first”是“1”,并且由顶场T4和底场B4组成的帧的编码数据流的“top_field_first”是“1”。
参照图6A到6C,现将描述当编码数据流接合时,关于按照MPEG标准定义的诸如“top_field_first”和“repeat_first_field”的标志所产生的问题。
图6A示出了通过对关键电台制作的原始电视节目编码而得到的原始数据流STOLD的帧结构。图6B示出了通过对地方电台为地方观众制作的商业广告CM’编码而得到的替代数据流STNEW的帧结构。图6C示出了通过接合处理过程得到的接合数据流STSPL的帧结构。
在原始数据流STOLD中的节目1和节目2是通过2∶3下拉处理过程得到的编码数据流,主要部分的商业广告CM1的每个帧是具有“top_field_first”为“0”的帧结构的编码数据流。图6B所示的地方商业广告CM1’是要替代原始电视节目中的商业广告CM1的编码数据流,且具有“top_field_first”为“1”的帧结构。图6C所示的接合数据流STSPL是通过将替代数据流STNEW接合到节目1所表示的原始数据流STOLD后,然后将节目2所表示的原始数据流STOLD接合到替代数据流STNEW后所生成的数据流。总之,接合数据流STSPL是通过插入地方商业广告CM1’以替代原始数据流STOLD的主商业广告CM1而得到的数据流。
图6所示的在关键电台制作的商业广告CM1是其每个帧都具有“top_field_first”为“0”的帧结构的编码数据流。在地方电台制作的商业广告CM1’是具有“top_field_first”为“1”的帧结构的编码数据流。
如图6A到6B所示,在商业广告CM1的帧结构和要替代商业广告CM1的替代商业广告CM1’的帧结构互相不同的情况下,如果在原始数据流STOLD中的接合点SP1将商业广告CM1’数据流接合到节目1的数据流后,则在接合数据流STSPL中生成场隙。场隙意味着底场B6在接合点SP1从接合数据流STSPL漏掉,这就造成了图6C所示的顶场和底场的重复图形中的不连续。
如此在其中生成场隙从而在场图形中造成不连续的编码数据流是与MPEG标准不相称并且不能被普通MPEG解码器所解码的编码数据流。
另一方面,如图6A和6B所示,如果节目2的数据流在原始数据流STOLD中的接合点被接合到商业广告CM1’后,在接合数据流STSPL中生成场的副本。如图6C所示,场的副本意味着在接合点SP2底场b12和底场B12在相同的显示时间存在。
如此在其中生成场副本从而在场图形中造成不连续的编码数据流是与MPEG标准不相称并且不能被普通MPEG解码器所解码的编码数据流。
总之,如果接合过程是被简单地执行,则场图形或帧图形就会变得不连续并且不能生成符合MPEG标准的接合数据流。
本发明的公开本发明的一个目的是提供一种编码数据流接合设备,用以实现无缝接合处理过程,该过程生成在VBV缓冲器中的接合数据流的数据占有量的连续轨迹并且在VBV缓冲器不产生中断。本发明的另一个目的是提供一种编码数据流接合设备,用以实现无缝接合过程,该过程防止在接合点周围的编码数据流的数据流结构中的中断。
按照本发明的编码数据流接合设备和编码数据流生成设备包括数据流分析装置,用于分析第一编码数据流的语法,从而提取第一编码数据流中的编码参数;以及接合装置,用于根据由数据流分析装置所得到的第一编码数据流的编码参数,改变第二编码数据流的编码参数,以使第一编码数据流和第二编码数据流能够在接合点无缝连接,然后将第一编码数据流和带有改变后的编码参数的第二编码数据流接合。这样,就能实现在VBV缓冲器中生成接合数据流的数据占有量的连续轨迹并且不产生VBV缓冲器的中断的无缝接合过程。而且,按照本发明,可以实现能够生成具有一致性的无缝数据流,以使接合点周围的编码数据流的数据流结构不中断的接合过程。
按照本发明的编码数据流接合方法和编码数据流生成方法包括数据流分析步骤,分析第一编码数据流的语法,从而提取第一编码数据流的编码参数;以及接合步骤,用于根据在数据流分析步骤所得到的第一编码数据流的编码参数,改变第二编码数据流的编码参数,从而第一编码数据流和第二编码数据流能够在接合点无缝连接,然后将第一编码数据流和带有改变后的编码参数的第二编码数据流接合。这样,就能实现生成VBV缓冲器中的接合数据流的数据占有量的连续轨迹,并且不产生VBV缓冲器的中断的无缝接合过程。而且,按照本发明,能够实现能生成具有一致性的无缝数据流,以使接合点周围的编码数据流的数据流结构不中断的无缝接合。
附图的简要描述图1描述了典型的电视广播系统。
图2A到2C描述了在地方电台编辑电视节目的过程。
图3描述了使用MPEG标准的典型数字发送系统。
图4A到4C描述了对VBV缓冲器的控制。
图5描述了2∶3下拉处理过程。
图6A到6C描述了在接合编码数据流中产生的问题。
图7是表示按照本发明的实施例的包括编码数据流接合设备的数字广播系统的整体结构的方框图。
图8是详细解释关键电台30的MPEG编码器块35和地方电台40的编码器块的结构的方框图。
图9A到9D描述了从数据流转换电路中的基本数据流生成传输数据流的过程。
图10描述了MPEG视频基本数据流的指令序列的语法。
图11描述了序列标题的语法(sequence_header)。
图12描述了序列扩展的语法(sequence_extension)。
图13描述了扩展和用户数据的语法(extension_and_user_data)。
图14描述了画面组标题的语法(group_of_icture_header)。
图15描述了画面标题的语法(picture_header)。
图16描述了画面编码扩展的语法(picture_coding_extension)。
图17描述了画面数据的语法(picture_data)。
图18描述了传输数据流分组的语法。
图19描述了适配场的语法(adaption_field)。
图20是用以解释地方电台的简单结构和数据流接合器的结构的方框图。
图21A到21C描述了关于数据流接合器的VBV缓冲器的处理过程。
图22A到22C描述了关于数据流接合器的“top_field_first”和“repeat_first_field”的第一次处理过程的例子。
图23A到23C描述了关于数据流接合器的“top_field_first”和“repeat_first_field”的第二次处理过程的例子。
实现本发明的最好模式图7描述了按照本发明的实施例的包括编码数据流接合设备的数字广播系统的结构。
如图7所示,数字广播系统一般包括关键电台30和附属于该关键电台的地方电台40。
关键电台30是用于生成普通的电视节目并将其发送到附属地方电台的广播电台。关键电台30包括广播系统控制器31、材料服务器32、CM服务器33、矩阵转换块34、MPEG编码器块35、多路复用器36和调制电路37。
广播系统控制器31是用于综合管理和控制所有在广播电台提供的诸如材料服务器32、CM服务器33、矩阵转换块34、MPEG编码器块35、多路复用器36和调制电路37等的单元和电路的系统。在该广播系统控制器31中,登记一节目编辑表,用以管理所有诸如节目提供公司提供的节目材料以及关键电台本身制作的CM材料的所有材料的广播时间。按照节目编辑表,广播系统控制器31控制以上描述的单元和电路。例如,节目编辑表由事件信息文件和操作信息文件等组成,在该事件信息文件中记录每小时或每天的广播节目时间表,而在该操作信息文件中记录每15秒的广播节目的时间表。
材料服务器32是用以存储要作为电视节目的主要部分播出的电影节目、体育节目、娱乐节目和新闻节目的视频数据和音频数据,并且由广播系统控制器31在与节目编辑表上的时间表一致的定时处输出指定的节目的服务器。电影节目包括通过如前所述的2∶3下拉处理过程将具有24Hz的帧频的电影材料转换成具有30Hz帧频的电视信号所得到的视频数据。作为节目的主要部分从材料服务器32输出的视频数据和音频数据提供到矩阵转换块34。在图2A到2C所示的例子中,节目1、节目2、节目3和节目4记录在这个材料服务器32中。存储在材料服务器32中的视频数据和音频数据是没有压缩编码的基带视频数据和音频数据。
CM服务器33是用以存储要在从材料服务器32复制的主要部分节目之间插入的商业广告,并且在与节目编辑表上的时间表一致的定时处输出由广播系统控制器31指定的商业广告的服务器。作为商业广告从CM服务器33中输出的视频数据和音频数据提供给矩阵转换块34。在图2A到2C所示的例子中,商业广告CM1、商业广告CM2和商业广告CM3记录在CM服务器33中。存储在CM服务器33中的视频数据和音频数据是没有压缩编码的基带视频数据和音频数据。
矩阵转换块34有用于路由如实况体育广播和新闻节目等的实况节目、从材料服务器32输出的主要节目以及从CM服务器33输出的商业广告节目的矩阵电路。该矩阵转换块34还有一切换电路,用于在与广播系统控制器所决定的节目编辑表上的时间表一致的定时处,连接和切换从材料服务器32供给的主要节目和从CM服务器33供给的商业广告节目。通过使用这样的切换电路来切换主要节目和CM节目,可生成图2A中所示的传输节目PGOLD。
MPEG编码器块35是用于根据MPEG2标准对从矩阵转换块所输出的基带视频数据和音频数据编码的块,并且有多个视频编码器和音频编码器。
多路复用器36对从MPEG编码器块35输出的传输数据流的九条通道进行多路复用,从而生成一个多路传输数据流。因此,在多路传输数据流中,包括九个通道的编码的视频基本数据流的传输数据流分组和包括九个通道的编码的音频基本数据流的传输数据流分组以一种混合的方式共存。
调制电路37执行传输数据流的QPSK调制,并且通过传输线将调制数据发送到地方电台40和家庭61。
现将参照图7描述地方电台40的全面结构。
地方电台40是用以为地方观众编辑从关键电台发送来的普通电视节目的广播电台,并将为地方观众编辑的电视节目播送给每个家庭。地方电台40包括广播系统控制器41、解调电路42、多路分解器43、数据流转换电路44、材料服务器46、CM服务器47、编码器块48、数据流服务器49、数据流接合器50、数据流处理器51、多路复用器52和调制电路53。
广播系统控制器41是用以综合管理和控制在地方电台提供的诸如解调电路42、多路分解器43、数据流转换电路44、材料服务器46、CM服务器47、编码器块48、数据流服务器49、数据流接合器50、数据流处理器51、多路复用器52和调制电路53等的所有单元和电路的系统,类似于关键电台30的广播系统控制器31。在类似于关键电台30的广播系统控制器31的广播系统控制器41中,登记一节目编辑表,用以管理通过将在地方电台制作的节目和CM插入到从关键电台30提供的传输节目中而得到的编辑好的电视节目的播出时间。按照这个节目编辑表,广播系统控制器41控制以上所描述的单元和电路。
解调电路42通过传输线执行从关键电台30发送的传输节目的QPSK解调,从而生成传输数据流。
多路分解器43对从解调电路42输出的传输数据流进行多路分解以便生成九条通道的传输数据流,并且将每个通道的传输数据流输出到数据流转换电路44。总之,多路分解器43执行关键电台30的多路复用器36所执行处理过程的相反过程。
数据流转换电路44是用以将从多路分解器43提供的传输数据流转换成基本数据流的形式的电路。
材料服务器46是存储作为电视节目为地方观众广播的娱乐节目、新闻节目等的视频数据和音频数据的服务器。CM服务器47是用以存储要插入到由关键电台30提供的主要节目之间的地方商业广告的视频数据和音频数据的服务器。存储在材料服务器46和CM服务器47中的视频数据和音频数据是压缩编码后的基带视频数据和音频数据。
编码器块48是用以将材料服务器46和CM服务器47提供的多个通道的视频数据和多个通道的音频数据进行编码的块,并且具有对应于多个通道的多个视频编码器和多个音频编码器。编码器块48和关键电台的MPEG编码器块之间的不同之处是,地方电台40的编码器块48输出基本数据流,而关键电台30的MPEG编码器块35输出传输数据流。然而,编码器块48的实际功能和处理过程类似于关键电台30的MPEG编码器块35的功能和处理过程。从编码器块48输出的多个通道的基本数据流中,三个通道的基本数据流供给数据流服务器49,剩余通道的基本数据流供给数据流接合器50。
数据流服务器49接收编码器块提供的三个通道的基本数据流。然后数据流服务器49将处于数据流状态的基本数据流记录到可任意读取的记录媒体上,然后在广播系统控制器41的控制下从可任意读取的记录媒体复制基本数据流。
数据流接合器50是用于路由编码器块48和数据流服务器49所提供的多个基本数据流,然后将路由后的基本数据流输出到预定的输出线,并且在数据流的级别将关键电台30提供的基本数据流和在地方电台40制作的基本数据流接合的块。接下来将详细描述数据流接合器50的处理过程。
数据流转换电路51是用以接收从数据流接合器50输出的作为接合数据流的基本数据流,并且将该基本数据流转换成传输数据流的电路。
类似于关键电台30的多路复用器36,多路复用器52对从数据流转换电路输出的九个通道的传输数据流进行多路复用,从而生成一个多路传输数据流。
调制电路53执行传输数据流的QPSK调制,并且通过传输线将调制好的数据分配给每个家庭62。
图8是用于详细解释关键电台30的MPEG编码器块35和地方电台40的编码器块48的结构的方框图。因为关键电台30的MPEG编码器块35和地方电台40的编码器块48基本上具有相同的结构,将作为一个典型例子来描述关键电台30的MPEG编码器35的结构和功能。
MPEG编码器块35具有编码器控制器350,用于以集中方式控制MPEG编码器块35的所有电路;多个MPEG视频编码器351-1V到351-9V,用于对提供的多个通道的视频数据进行编码;以及MPEG音频编码器351-1A到351-9A,用于根据MPEG2标准对对应于所述视频数据的多个音频数据进行解码。
MPEG编码器块35还具有数据转换电路352-1V到352-9V,用于将从视频编码器351-1V到351-9V输出的编码基本数据流(ES)转换成传输数据流;以及数据转换电路352-1A到352-9A,用于将音频编码器351-1A到351-9A输出的编码基本数据流(ES)转换成传输数据流。MPEG编码器块35还具有多路复用器353-1,用于对包括用于每个传输数据流分组的第一通道(1ch)的视频基本数据流的传输数据流和包括第一通道(1ch)的音频基本数据流的传输数据流进行多路复用;多路复用器353-2,用于多路复用包括用于每个传输数据流分组的第二通道(2ch)的视频基本数据流的传输数据流和包括第二通道(2ch)的音频基本数据流的传输数据流;…;以及多路复用器353-9,对包括用于每个传输数据流分组的第九通道(9ch)的视频基本数据流的传输数据流和包括第九通道(9ch)的音频基本数据流的传输数据流进行多路复用。
图8所示的MPEG编码器块35有用于对九个通道的传输节目进行编码的结构。然而,通道的数据当然不限于九个而且可以更多。
MPEG编码器块35执行统计多路复用器的控制,以便按照要被编码的视频数据图形动态地改变每个通道的传输节目的传输速率。根据这项统计多路复用技术,在一个通道的传输节目的画面图形相对简单且仅需要少量的比特来编码,而另一个节目的画面图形相对复杂且需要大量的比特来编码的情况下,对一个通道的画面进行编码的比特被分配给对另一个通道的画面进行编码的比特中,从而实现了传输线的有效传输速率。用于动态改变每个视频编码器的编码速率的方法将在下文中简单描述。
视频编码器351-1V到351-9V首先从在编码过程前作为运动补偿结果所得到的诸如运动补偿残余(motion compensation residual)和AC内(intra-AC)的统计量中,生成难度数据(D1到D9),每一个难度数据指示对作为编码目标的画面进行编码所要求的比特量。难度数据是表示编码难度的信息。大的难度值表示作为编码目标的画面的图形是复杂的,而小的难度值表示作为编码目标的画面的图形是简单的。该难度数据可以基于诸如在由视频编码器执行编码处理时使用的AC内和运动补偿残余(ME residual)等的统计量来大体估计出。
编码器控制器350接收分别从视频编码器351-1V到351-9V输出的难度数据D1到D9,并且基于难度数据D1到D9分别计算用于视频编码器351-1V到351-9V的目标比特率R1到R9。具体讲,编码器控制器350能通过使用难度数据D1到D9按比例分配传输线的总的传输率Total_Rate而得到目标比特率R1到R9,如以下公式(1)所示Ri=(Di/∑DK)×Total_Rate…(1)在公式(1)中,“Ri”代表通道“i”的传输节目的目标比特率,而“Di”代表用于对通道“i”的传输节目进行编码的难度数据。“∑”代表K=1到9通道的难度数据的总和。
编码器控制器350将基于公式(1)计算的目标比特率R1到R9提供给相应的视频编码器351-1V到351-9V。目标比特率R1到R9可以为每个画面或为每个GOP来计算。
视频编码器351-1V到351-9V接收从编码器控制器350提供的目标比特率R1到R9,并且执行对应于目标比特率R1到R9的编码过程。通过这种根据表示要被编码的画面的编码难度的难度数据而动态地改变从每一个视频编码器输出的编码数据流的比特率,可以根据相对于要编码的画面的编码难度来进行分配最佳的比特量,并且防止从视频编码器输出的比特率的总量上溢于传输线的总的传输率Total_Rate。
数据流转换电路352-1V到352-9V以及数据流转换电路352-1A到352-9A都是用于将基本数据流转换成传输数据流的电路。
参照图9A到9D,将通过一个例子描述从视频基本数据流生成传输数据流的过程,在该例子中,供给的源视频数据通过视频编码器351-1V来编码以便生成视频基本数据流,然后被数据流转换电路352-1V转换成传输数据流。
图9A显示了供给视频编码器351-V的源视频数据,而图9B显示了从视频编码器351-1V输出的视频基本数据流(ES)。图9C显示了分组的基本数据流(PES),而图9D显示了传输数据流(TS)。
按照MPEG2标准编码的基本数据流的数据量,比如图9B中显示的数据流V1、V2、V3和V4,取决于视频帧(I-画面、P-画面或B-画面)的画面类型和运动补偿的存在/不存在。图9C所示的分组的基本数据流(PES)是通过将多个基本数据流分组并在其前端增加了PES标题而生成的。例如,PES标题包括24位分组开始代码,表示PES分组的开始;8位流ID,表示放置在PES分组的实际数据部分的数据流数据类型(例如,视频和音频类型);16位分组长度,表示随后的数据长度;表示值“10”的代码数据;标志控制部分,其中存储有各种标志信息;8位PES标题长度,表示条件编码部分的数据长度;以及可变长度的条件编码部分,其中存储称为PTS(Presentation TimeStamp,出现时间标记)的复制输出时间信息和称为DTS(Decoding Time Stamp,解码时间标记)的解码时的时间管理信息,或存储用以调节数据量的填充字节。
传输数据流(TS)是传输数据流分组的数据列阵,每一个传输数据流由4字节的TS标题和存储有184字节的实际数据的有效载荷部分所组成。为生成传输数据流分组(TS分组),首先,为每个184字节确定一个PES分组的数据流,并且将这184个字节的实际数据插入到TS分组的有效载荷中。然后,4个字节的TS标题加入到这184字节的有效载荷数据中,这样就形成了传输数据流分组。
在下文中,将参照图10到17描述基本数据流的语法和结构,并将参照图18和19详细描述传输数据流的语法和结构。
图10显示了MPEG视频基本数据流的语法。视频编码器块35中的视频编码器351-1V到351-9V按照图10所示的语法生成编码基本数据流。在下文中描述的语法中,函数和条件语句用常规类型表示,而数据单元用粗体类型来表示。数据项描述为名称、比特长度和表示类型和传输序列的助记符。
首先,将描述图10中所示的语法中用到的函数。实际上,图10中所示的语法是用于从视频解码器一端的传输编码数据流提取预定意义的数据。用于视频编码器一端的语法是从图10中的语法中省略if-子句和while-子句而得到的语法。
在video sequence()中的第一步描述的next start code()函数,是用于搜索比特流中描述的开始代码的函数。按照图10中所示语法生成的编码数据流,首先描述了由sequence_header()函数和sequence_extension()函数定义的数据单元。sequence_header()函数是用以定义MPEG比特流的序列层的标题数据的函数。Sequence_extension()函数是用以定义MPEG比特流的序列层的扩展数据的函数。
Do{}while语句,安排在sequence_extension()函数之后,Do{}while语句表示基于do-子句的函数in{}所描述的数据单元是在while-子句为真时所确定的条件下在编码数据流中描述的。在while-子句中用到的nextbits()函数用于将比特流中描述的比特或比特阵列与参考数据单元进行比较。在图10中显示的语法的例子中,nextbits()函数将比特流中的比特阵列与表示视频序列的末端的sequence_end_code进行比较。当比特流中的比特阵列和sequence_end_code并不互相一致时,while-子句的条件变为真。因此,安排在sequence_extension()函数之后的do{}while语句,表示在do-子句中的函数所定义的数据单元是当表示视频序列的末端的sequence_end_code没有在比特流中出现时在编码比特流中描述的。
在编码比特流中,由sequence_extension()函数定义的每个数据单元后面是由extension_and_user_data(0)定义的数据单元。extension_and_user_data(0)函数是用于以MPEG比特流的序列层定义扩展数据和用户数据的函数。
安排在extension_and_user_data(0)函数之后的Do{}while语句,Do{}while语句函数表示基于do-子句的函数in{}而描述的数据单元是在比特流中描述的。在while-子句中使用的nextbits()函数是用以确定比特流中出现的比特或比特阵列与picture_start_code或group_start_code之间的一致性的函数。如果出现在比特流中的比特或比特阵列与picture_start_code或group_start_code互相一致,则由while-子句定义的条件变为真。因此,这个do{}while语句表示如果picture_start_code或,oup_start_code出现在编码比特流中,则在do-子句中的函数定义的数据单元的代码描述在开始代码之后。
在这个do-子句的第一步描述的if-子句表示这样的条件,如,group_start_code出现在编码比特流中。如果if-子句的条件为真,则由group_of_picture_header()函数和extension_and_user_data(1)函数定义的数据单元依次描述在编码比特流中的group_start_code之后。
这个group_of_picture_header()函数是用于定义MPEG编码比特流的GOP层的标题数据的函数。Extension_and_user_data(1)函数是用于定义MPEG编码比特流的GOP层的扩展数据和用户数据的函数。
而且,在该编码比特流中,由group_of_picture_header()函数和extension_and_user_data(1)函数定义的数据单元后面紧跟着由picture_header()函数和picture_coding_extension()函数定义的数据单元。当然,如果以上描述的if-子句的条件不是真,则将描述由group_of_picture_header()函数和extension_and_user_data(1)函数定义的数据单元。因此,紧接着由extension_and_user_data(0)函数定义的数据单元,描述了由picture_header()函数、picture_coding_extension()函数和extension_and_user_data(2)函数定义的数据单元。
这个picture_header()函数是用于定义MPEG编码比特流的画面层的标题数据的函数。picture_coding_extension()函数是用于定义MPEG编码比特流的画面层的第一扩展数据的函数。Extension_and_user_data(2)函数是用于定义MPEG编码比特流的画面层的扩展数据和用户数据的函数。由extension_and_user_data(2)函数定义的用户数据是在画面层中描述的数据并且可为每个画面描述。因此,在本发明中,时间代码信息被描述为由extension_and_user_data(2)函数定义的用户数据。
在编码比特流中,画面层的用户数据后面紧接着由picture_data()函数定义的数据单元。Picture_data()函数是用于描述关于限波层(slice layer)和宏块层的数据单元的函数。
紧接着picture_data()函数描述的while-子句是用于决定在while-子句为真时所描述的条件下的下一个if-子句的条件。用在while-子句中的nextbits()函数是用于决定picture_start_code或group_start_code是否描述在编码比特流中的函数。如果picture_start_code或group_start_code是在比特流中描述的,则这个while-子句所定义的条件变为真。
下一个if-子句是用于决定sequence_end_code是否是在编码比特流中描述的条件句。它表示如果没有描述sequence_end_code,则描述由sequence_header()函数和sequence_extension()函数所定义的数据单元。因为sequence_end_code是表示编码视频数据流的序列的末端的编码,所以只要编码数据流没有结束,就将描述sequence_header()函数和sequence_extension()函数所定义的数据单元。
由sequence_header()函数和sequence_extension()函数所定义的数据单元与视频数据流序列的开端描述的sequence_header()函数和sequence_extension()函数所定义的数据单元是完全相同的。在数据流中这样描述相同数据是由于以下原因。即,如果比特流接收装置在数据流的中间点(例如,对应于画面层的比特流部分)开始接收,就不会接收到序列层的数据而且不会对数据流进行解码。描述相同数据的原因是为了防止这种情况。
紧接着由最后一个sequence_header()函数和sequence_extension()函数所定义的数据单元,即在数据流的最后部分,描述了表示序列末端的32-位sequence_end_code。
现在将详细描述sequence_header()函数、sequence_extension()函数、extension_and_user_data(0)函数、group_of_picture_header()函数和extension_and_user_data(1)函数。
图11描述了sequence_header()函数的语法。由sequence_header()函数所定义的数据单元包括sequence_header_code、sequence_header_present_flag、horizontal_size_value、vertical_size_value、aspect_ratio_information、frame_rate_code、bit_rate_value、marker_bit、vbv buffer size_value、constrained_parameter_flag、load_intra_quantizer_matrix、intra_quantizer_matrix、load_non_intra_quantizer_matrix和non_intra_quantizer_matrix。
Sequence_header_code是表示序列层的开始同步代码的数据。Sequence_header_present_flag是表示sequence_header中的数据是合法还是非法的数据。Horizontal_size_value是由画面的水平像素数的低12位组成的数据。Vertical_size_value是由画面的垂直线数的低12位组成的数据。Aspect_ratio_information是表示像素的纵横比或显示屏的纵横比的数据。Frame_rate_code是表示画面的显示周期的数据。Bit_rate_value是限制生成的比特量的比特率的低18位(大约每秒400bps)的数据。Marker_bit是为防止开始代码模拟(emulation)而要插入的数据。Vbv_buffer_size_value是决定用以控制生成的代码量的虚拟缓冲器(视频缓冲器检验器)的大小的值的低10位数据。Constrained_parameter_flag是表示每个参数都在其限制内的数据。Load_intra_quantizer_matrix是表示存在用于MB内(intra MB)的量化矩阵数据的数据。Intra_quantizer_matrix是表示用于MB内的量化矩阵数据值的数据。Load_non_intra_quantizer_matrix是表示存在用于非MB内(non-intra MB)的量化矩阵数据的数据。Non_intra_quantizer_matrix是表示用于非MB内的量化矩阵值的数据。
图12描述了sequence_extension()函数的语法。由sequence_extension()函数所定义的数据单元包括extension_start_code、extension_start_code_identifier、sequence_extension_present_flag、profile_and_level_indication、progressive_sequence、chroma_format、horizontal_size_extension、vertical_size_extension、bit_rate_extension、vbv_buffer_size_extension、low_delay、frame_rate_extension_n和frame_rate_extension d。
Extension_start_code是表示扩展数据的开始同步代码的数据。Extension_start_code_identifier是表示要被发送的扩展数据的数据。Sequence_extension_present_flag是表示序列扩展中的数据是合法还是非法的数据。Profile_and_level_indication是用于指定轮廓和视频数据的级别的数据。Progressive_sequence是表示视频数据是依次扫描的数据的数据。Chroma_format是指定视频数据的色差格式的数据。Horizontal_size_extension是要加入到序列标题的horizontal_size_value中的高2位数据。Vertical_size_extension是要加入到序列标题的vertical_size_value中的高2位数据。Bit_rate_extension是要加入到序列标题的bit_rate_value中的高12位数据。Vbv_buffer_size_extension是要加入到序列标题的vbv_buffer_size_value中的高8位数据。Low_delay是表示不含有B-画面的数据。Frame_rate_extension_n是用于得到与序列标题的frame_rate_code结合的帧频的数据。Frame_rate_extension_d是用于得到与序列标题的frame_rate_code结合的帧频的数据。
图13描述了extension_and_user_data(i)函数的语法。如果extension_and_user_data(i)的“i”不是2,则仅描述由user_data()函数定义的数据单元,而不描述由extension_data()函数定义的数据单元。因此,extension_and_user_data(0)函数仅描述由user_data()函数定义的数据单元。
图14描述了group_of_picture_header()函数的语法。由group_of_picture_header()函数定义的数据单元包括group_start_code、group_of_picture_header_present_flag、time_code、closed_gop和broken_link。
Group_start_code是表示GOP层的开始同步代码的数据。Group_of_picture_header_present_flag是表示group_of_picture_header中的数据单元是合法还是非法的数据。Time_code是表示GOP的引导画面的序列的引导端时间的时间编码。Closed_gop是表示GOP中的画面能独立于其它GOP而复制的标志数据。Broken_link是表示GOP中的引导B-画面不能准确地复制用于编辑和作其它类似工作的标志数据。
Extension_and_user_data(1)函数是仅描述由user_data()函数定义的数据单元的函数,类似于extension_and_user_data(0)函数。
参照图15到17,现将描述用于描述关于编码数据流的画面层的数据单元的picture_header()函数、picture_coding_extension()函数、extension_and_user_data(2)函数和picture_data()函数。
图15描述了picture_header()函数的语法。由picture_header()函数定义的数据单元包括picture_start_code、temporal_reference、picture_coding_type、vbv_delay、full_pel_forward_vector、forward_f_code、full_pel_backward_vector、backwark_f_code、extra_bit_picture和extra_information_picture。
具体讲,picture_start_code是表示画面层的开始同步代码的数据。Temporal_reference是在GOP的引导端重置的数据,带有表示画面显示顺序的数字。Picture_coding_type是表示画面类型的数据。
Vbv_delay是表示VBV缓冲器的开始状态的数据,并且为每个画面设置。从发送端系统发送到接收端系统的编码基本数据流的画面是由接收端系统中提供的VBV缓冲器来缓冲的。画面是从VBV缓冲器导出(读出)的并且在由DTS(解码时间标记)指定的时间提供给解码器。由vbv_delay定义的时间是解码目标的画面开始从VBV缓冲器导出直到编码目标的画面从VBV缓冲器中导出的时间,即,直到由DTS指定的时间。在本发明的编码数据流接合设备中,无缝接合,诸如VBV缓冲器中数据占有量不再中断,是通过使用存储在画面标题中的vbv_dalay来实现的。接下来将详细描述这种特征。
Full_pel_forward_vector是表示前向运动矢量的精确度是基于整数单元还是半像素单元的数据。Forward_f_code是表示前向运动矢量搜索范围的数据。Full_pel_backward_vector是表示后向运动矢量的精确度是基于整数单元还是半像素单元的数据。Backward_f_code是表示后向运动矢量搜索范围的数据。Extra_bit_picture是表示随后的附加信息存在的标志。如果extra_bit_picture是“1”,则紧接着为extra_information_picture。如果extra_bit_picture是“0”,则没有数据跟随。Extra_information_picture是按照标准储备的信息。
图16描述了picture_coding_extension()函数的语法。由picture_coding_extensin()函数定义的数据单元包括extension_start_code、extension_start_code_identifier、f_code
、f_code
[1]、f_code[1]
、f_code[1]
、f_code[1][1]、intra_de_precision、picture_structure、top_field_first、frame_predictive_fiame_dct、concealment_motion_vectors、q_scale_type、intra_vlc_format、alternate_scan、repeat_first_field、chroma_420_type、progressive_fiame、composite_display_flag、v_axis、field_sequence、sub_carrier、burst_amplitude及sub_carrier_phase。extension_start_code是表示画面层的扩展数据的开始的开始代码。Extension_start_code_identifier是表示要被发送的扩展数据的编码。F_code
是表示前向水平运动矢量的搜索范围的数据。F_code
[1]是表示前向垂直运动矢量的搜索范围的数据。F_code[1]
是表示后向水平运动矢量的搜索范围的数据。F_code[1][1]是表示后向垂直运动矢量的搜索范围的数据。Intra_dc_precision是表示DC系数的准确性的数据。Picture_structure是表示画面结构是帧结构还是场结构的数据。在场结构的情况下,它也表示该场是较高场还是较低场。Top_field_first是表示在帧结构情况下第一场是顶场还是底场的标志。Frame_predictive_framedct是表示帧模式DCT的预测值仅仅是帧结构情况下的帧模式的数据。Concealment_motion_vectors是表示用于隐藏传输差错的运动矢量是在宏块内提供的数据。Q_scale_type是表示使用线性量化器标准还是非线性量化器标准的数据。Intra_vlc_format是表示是否将另一个二维VLC用于宏块内的数据。Alternate_scan是指示选择之形描述还是交替描述的数据。
Repeat_first_field是表示是否在解码时生成重复场的标志。在解码过程中,如果repeat_first_field为“1”,就生成重复场。如果repeat_first_field为“0”,就不生成重复场。Chroma 420 type是表示在信号格式为4∶2∶0时与下一个progressive_frame相同值的数据,而在信号格式不是4∶2∶0时表示0。Progressive_frame是表示该画面是否被序列扫描的数据。Composite_display_flag是表示源信号是否为复合信号的数据。V_axis是当源信号为PAL系统的情况下使用的数据。Field_sequence是源信号为PAL系统的情况下使用的数据。Sub_carrier是源信号为PAL系统的情况下使用的数据。Burst_amplitude是源信号为PAL系统的情况下使用的数据。Sub_carrier_phase是源信号为PAL系统的情况下使用的数据。
Extension_and_user_data(2)函数描述当编码比特流中存在扩展开始代码(extension_start_code)时extension_data()函数所定义的数据单元,如图13所示。然而,如果在比特流中不存在扩展开始代码,在比特流中将不描述由extension_data()函数定义的数据单元。如果在比特流中存在用户数据开始代码(user_data_start_code),对user_data()函数定义的数据单元将紧接着entension_data()函数定义的数据单元进行描述。
图17描述了picture_data()函数的语法。Picture_data()函数定义的数据单元是由slice()函数所定义的数据单元。然而,如果在比特流中不存在表示slice()函数的开始代码的slice_start_code,比特流中将不描述由slice()函数定义的数据单元。
Slice()函数是描述关于分层的数据单元的函数。具体讲,该函数据描述诸如slice_start_code、slice_quantiser_scale_code、intra_slice_flag、intra_slice、reserved_bits、extra_bit_slice、extra_information_slice和extra_bit_slice以及macroblock()函数定义的数据单元。
Slice_start_code是表示slice()函数定义的数据单元的开始的开始代码。Slice_quantiser_code是表示为分层中存在的宏块设置的量化步长的数据。然而,如果为每个宏块设置quantiser_scale_code,将优选使用为每个宏块设置的macroblock_quantiser_scale_coder的数据。Intra_slice_flag是表示在比特流中是否存在intra_slice和reserved_bits的标志。Intra_slice是表示在分层中是否存在非宏块内的数据。如果分层中的任何一个宏块都是非宏块内,intra_slice是“0”。如果分层中的所有宏块都是非宏块内,intra_slice是“1”。Reserved_bits是7位数据且值为“0”。Extra_bit_slice是表示附加信息作为编码数据流存在的标志。如果extra_information_slice存在于extra_bit_slice之后,该标志设置为“1”。如果不存在附加信息,标志设置为“0”。
Macroblock()函数是用于描述关于宏块层的数据单元的函数。具体讲,它是用于描述诸如macroblock_escape、macroblock_address_increment、及macroblock_quantiser_scale_code的数据单元,以及由macroblock_mode()函数和macroblock_vectors(s)函数定义的数据单元。
Macroblock_escape是表示参考宏块与前一宏块间的水平差值是否不小于34的固定比特阵列。如果参考宏块与前一宏块间的水平差值不小于34,在macroblock_address_increment的值上加33。Maeroblock_address_increment是表示参考宏块与前一宏块之间的水平差值的数据。如果在这个macro_address_increment之前存在一个macroblock_escape,macroblock_address_increment的值上增加33所得到的值变为表示参考宏块与前一宏块之间的实际水平差值的数据。Macroblock_quantiser_scale_code表示为每个宏块设置的量化步长。在每个分层中,slice_quantiser_scale_code表示设置的分层的量化步长。然而,如果macroblock_quantiser_scale_code是为参考宏块设置的,则选择这个量化步长。
参照图18和19,将详细描述传输数据流分组的结构和传输数据流分组的语法。
传输数据流分组由4字节的标题、用于存储各种数据和数据单元的184字节的有效载荷部分组成。
传输数据流分组的标题包括各种字段,比如sync_byte、transport_error_indicator、payload_unit_start_indicator、transport_priority、PID、transport_scrambling_control、adaptation_field_control、continuity_counter和adaptation_field。
Sync_byte是用于从比特流检测同步图形的固定8比特段。其值由固定值“01000111”(0x47)所定义。通过检测数据流中的这个同步图形,能够检测同步。
Transprot_error_indicator是1比特标志。如果该标志设为“1”,则表示在传输数据流分组中至少存在一位的不可校正比特差错。
Payload_unit_start_indicator是1比特标志。它是具有用于诸如视频/音频数据或用以发送节目规范信息(PSI)的传输数据流分组的基本数据的规定意义的数据。如果传输数据流分组的有效载荷包括基本数据,payload_unit_start_indicator具有以下意思。如果payload_unit_start_indicator为“1”,它表示基本数据插入在传输数据流分组的有效载荷的开端。如果payload_unit_start_indicator为“0”,基本数据不是插入到传输数据流分组的有效载荷的开端。如果payload_unit_start_indicator设置为“1”,它表示仅仅一个PES分组以任意传输数据流分组开始。另一方面,如果传输数据流的有效载荷包括PSI数据,payload_unit_start_indicator具有以下意思。如果传输分组发送PSI部分的第一字节,payload_unit_start_indicator变为“1”。如果传输数据流分组不发送PSI部分的第一字节,payload_unit_start_indicator变为“0”。而且,如果传输数据流分组是一个零分组,payload_unit_start_indicator变为“0”。
Transport_priotity是1比特标识符,表示传输分组的优先权。如果transport_priority设为“1”,它表示该传输分组具有优先于具有相同分组标识符PID并且transport_priority不是“1”的分组的优选权。例如,通过设定transport_priority的这个分组标识符,优先权可以给于一个基本数据流中的任意分组。
Transport_scrambling_control是表示传输数据流分组的加优模式的2比特数据。加扰模式是表示存储在有效载荷部分中的数据是否被加扰以及加扰类型的模式。传输数据流分组标题与适应字段都是标准化的,不由加扰键Ks加扰。因此,通过transport_scrambling_control,它能决定存储在传输数据流分组中的有效载荷部分中的数据是否被量化。
Adaptation_field_control是表示适应字段和/或有效载荷排列在传输数据流分组的分组标题中的2比特数据。具体讲,如果在分组标题中排列的只有有效载荷数据,adaptauon_field_control变为“01”。如果在分组标题中排列的只有适应字段,adaptation_field_control变为“10”。如果适应字段和有效载都排列在分组标题中,adaptation_field_control变为“11”。
Continuity_counter是表示具有被连续发送的相同的PID的分组的一部分是否丢失或转储(dump)的数据。具体讲,continuity_counter是为每个具有相同PID的传输数据流分组增加的4比特字段。然而,当continuity_counter计数时,适应字段安排在分组标题中。
Adaptation_field()是用于作为选择将与单独数据流或填充字节有关的附加信息插入的字段。通过适应字段,所有关于单独数据流状态的动态变化的信息能与数据一起进行发送。
图19描述了adaptation_field()的语法。这个adtaton_field()包括各种字段,诸如adaptation_field_length、discontinuity_counter、random_access_indicator、elementary_stream_priority_indicator、OPCR_flag、splicing_point_flag、transport_private_data_flag、adaptation_field_extension_flag、program_clock_reference(PCR)、original_program_clock_reference(OPCR)、splice_countdown、transport_private_data_length、private_data、adaptation_field_extension_length、ltw_flag(legal_time_window_flag)、piecewise_rate_flag和seamless_splice_flag。
Adaptation_field_length是表示在adaptation_field_length之后的适应字段的字节数的数据。如果adaptation_field_control为“11”,adaptation_field_length为0到182比特。如果adaptation_field_control为“10”,adaptation_field_length为183比特。同时,如果不存在足以填充传输数据流的有效载荷的基本数据流,则需要用于填充比特的缓冲过程。
Discontinuity_counter是表示系统时钟基准(SCR)是否在具有相同PID的多个分组的中间部分复位并因此变得不连续的数据。如果系统时钟基准不连续,则discontinuity_counter为“1”。如果系统时钟基准连续,则discontinuity_counter为“0”。系统时钟基准是基准信息,用于在对视频和音频数据进行解码的MPEG解码器中,在编码器端想要的定时处,设定解码器端的系统时钟值。
Random_access_indicator是表示视频序列标题或音频帧的开始的数据。总之,random_access_indicator是表示在执行对数据单元的随机存取过程中的视频或音频存取点(帧的开始)的数据。
Elementary_stream_priority_indicator是表示相对于具有相同PID的分组,要在传输数据流分组的有效载荷中发送的基本数据流数据的优先权的数据。例如,如果基本数据流含有内编码的视频数据,则elementary_stream_priority_indicator设置为“1”。否则,elementary_stream_priority_indicator设置为“0”。
PCR_flag是表示适应字段中是否存在PCR(program_clock_reference)数据的数据。如果在适应字段中存在PCR数据,PCR_flag设置为“1”。如果适应字段中不存在PCR数据,PCR_flag设置为“0”。这个PCR数据是用于获取接收装置的解码器中发送数据的解码过程的定时的数据。
OPCR_flag是表示适应字段中是否存在OPCR(original_program_clock_reference)数据的数据。如果在适应字段中存在OPCR数据,OPCR_flag设置为“1”。如果在适应字段中不存在OPCR数据,OPCR_flag设置为“0”。OPCR数据是用于通过接合过程从多个原始传输数据流重构一个传输数据流时使用的数据。OPCR数据是表示确定的原始传输数据流的PCR数据的数据。
Splicing_Point_flag是表示在适应字段中是否存在用于表示传输级别的编辑点(接合点)的splice_countdown的数据。如果在适应字段中存在splice_countdown,则splice_point_flag为“1”。如果在适应字段中不存在splice_countdown,则splice_point flag为“0”。
Transport_private_data_flag是表示在适应字段中是否存在描述随机用户数据的私有数据的数据。如果在适应字段中存在私有数据,则transport_private_data_flag设置为“1”。如果在适应字段中不存在私有数据,则transport_private_data_flag设置为“0”。
Adaptation_field_extension_flag是表示在适应字段中是否存在扩展字段的数据。如果在适应字段中存在扩展字段,则adaptation_field_extension_flag设置为“1”。如果在适应字段中不存在扩展字段,则adaptation_field_extension_flag设置为“0”。
Program_clock_reference(PCR)是指用于使接收端的时钟状态与发送端的时钟状态同步的基准时钟。PCR数据存储生成传输分组的时间。PCR数据由33比特的program_clock_reference_base和9比特的program_clock_reference_extension所组成,即,总共42比特。系统时钟由program_clock_reference_extension从0到299计数,通过载波从299到0重置将1比特加到program_clock_reference_base。这样就能够进行24小时计数。
Original_program_clock_reference(OPCR)是从确定的传输数据流重构单个节目的传输数据流的数据。如果单个节目传输数据流被完全重构,original_program_clock_reference被复制到program_clock_reference。
Splice_countdown是表示分组的数目上升到编辑(接合过程)可在相对于具有相同PID的传输数据流分组的传输数据流分组级别上执行的点的数据。因此,在编辑可执行的接合点的传输数据流分组中,splice_countdown为“0”。在具有splice_countdown为“0”的传输分组中,接合过程可通过使传输数据流分组有效载荷的最后字节成为编码画面的最后字节来执行。
接合过程是用于接合在传输级别的两个不同的基本数据流,从而生成一个新的传输数据流的过程。接合过程可被分为不生成代码中断的无缝接合和生成代码中断的非无缝接合。“不生成代码中断”意味着在最新连接的后续数据流的存取单元的解码时间与接合前旧的数据流的存取单元的解码时间之间不存在矛盾。“生成代码中断”意味着在最新连接的后续数据流的存取单元的解码时间与接合前旧的数据流的存取单元的解码时间之间产生矛盾。
Transport_private_data_length是表示适应字段中的私有数据的字节数的数据。
Private_data字段不是特别由标准规定,并且可以描述适应字段中的任意用户数据。
Adaptation_field_extension_length是表示适应字段中的适应字段扩展的数据长度的数据。
Ltw_flag(legal_time_window_flag)是表示在适应字段中是否存在表示显示窗口补偿值的ltw_offset的数据。
Piecewise_rate_flag是表示在适应字段中是否存在piecewise_rate的数据。
Seamless_slice_flag是表示接合点是正常接合点还是无缝接合点的数据。如果seamless_splice_flag为“0”,它表示接合点为正常接合点。如果seamless_splice_flag为“1”,它表示接合点为无缝接合点。正常接合点位于PES分组的末端。紧接在该接合点之前的接合分组以一访问存取结束,并且具有相同PID的传输分组开始于PES分组的标题。相反,无缝接合点存在于PES分组的中间点。为防止在最新接合的后续数据流的存取单元的解码时间与接合前旧的数据流的存取单元的解码时间之间出现矛盾,一部分旧的数据流的特征用作新的数据流的特征。
下面将参照图20至23描述接合处理过程,该过程用于接合从关键电台30发送来的数据流STOLD和在地方电台40产生的数据流STNEW。
在图20中,为了闸明图7描述的地方电台40的控制,仅显示了多个通道中的一个通道而别的通道都被省略。在本发明中,提供了接合过程的三个实施例。现在将依次描述接合过程的第一、第二和第三实施例。
在接合过程的第一实施例中,接合过程是在这样的情况下进行的在发送节目的编码数据流STOLD从关键电台30发送之前,要被最新插入的商业广告CM’的编码数据流STNEW已经生成。也就是说,提前编码的商业广告CM1’的数据流被插入到发送节目的商业广告CM的编码数据流STOLD中。通常,商业广告重复广播一定的时间。因此,每次广播时都对商业广告的视频数据进行编码是没有效率的。这样,地方商业广告CM1’的视频数据被编码,而其编码数据流STNEW存储在数据流服务器49中。然后,当要被替代的商业广告CM1的编码数据流STOLD从关键电台30传来时,地方商业广告CM1’的编码数据流STNEW从数据流服务器49中复制,从而省略了大量时间重复对相同商业广告进行编码的过程。在这种情况下,接合过程将按下文中的详细描述来执行。
首先,将描述在地方电台40的初使化过程,该过程用于对地方商业广告CM1’进行编码,以便替代传输节目的商业广告CM1,以及将编码数据流STNEW存储到数据流服务器49中。广播系统控制器41控制CM服务器47,以再现商业广告CM1’的视频数据,以替代传输节目的商业广告CM1。然后,编码器481接收从CM服务器47复制的基带视频数据,并且将该视频数据的每个画面的编码难度Di提供给编码器控制器480。编码器控制器480,类似于图8中描述的编码器控制器350,给编码器481提供目标比特率,以使编码器481生成适当的编码位。编码器481基于编码器控制器480提供的目标比特率Ri执行编码过程,然后生成最佳比特率的编码基本数据流STNEW。从编码器481输出的编码基本数据流STNEW提供给数据流服务器49。数据流服务器49将数据流状态下的编码基本数据流记录到随机存取记录媒体。这样就完成了将编码数据流STNEW存储到数据流服务器49的初使化过程。
然后,将描述接合处理过程,该过程用于接合从关键电台发送的传输节目的编码数据流STOLD和通过以上描述的初使化过程存储在数据流服务器49中的编码数据流STNEW。
从关键电台30发送的编码数据流STOLD由数据流转换电路44从传输数据流形式转换成基本数据流形式。转换成基本数据流形式的编码数据流STOLD提供给数据流接合器50。
如图20所示,数据流接合器50包括接合控制器500、切换电路501、数据流分析电路502、数据流处理器503以及接合电路504。
在接合过程的第一实施例中,接合控制器500将切换电路501的输入端切换到“a”,以便将数据流服务器49提供的基本数据流STNEW提供给数据流分析电路502。
数据流分析电路502是用于对编码数据流STOLD和编码数据流STNEW的语法进行语法分析和解析的电路。具体讲,数据流分析电路502搜索编码数据流STOLD中描述的32比特的picture_start_code,以便了解在数据流中描述有关画面标题的信息的位置,如从图10和15所示的编码数据流的语法中所理解的。然后,数据流分析电路502查找3比特的picture_coding_type,它开始于picture_start_code后的11比特,以便了解画面类型。此外,数据流分析电路502从紧接着3比特的picture_coding_type所描述的16比特的vbv_delay中了解编码画面的vbv_delay。
此外,数据流分析电路502搜索在编码数据流STOLD和编码数据流STNEW中描述的32比特的extension_start_code,以便了解在数据流中描述有关画面编码扩展的信息的位置,如从图10和15所示的编码数据流的语法中所理解的。然后,数据流分析电路502搜索1比特的top_field_first和repeat_first_field,以便了解编码画面的帧结构,所述top_field_first描述在picture_start_first之后的25比特,而所述repeat_first_field描述在top_field_first之后的6比特。例如,如果编码画面的“top_field_first”为“1”,它表示顶场暂时超前底场的帧结构。如果“top_field_first”为“0”,它表示顶场暂时落后底场的帧结构。如果编码数据流中的标志“top_field_first”为“1”并且“repeat_first_field”为“1”,它表示可因此在解码时从顶场生成重复场的画面结构。如果编码数据流中的标志“top_field_first”为“0”并且“repeat_first_field”为“1”,它表示可因此在解码时从底场生成重复场的画面结构。
上述的picture_coding_type、vbv_delay、top_field_first、以及repeat_first_field都是从用于每个画面的编码数据流提取的,并且提供给接合控制器500。提供给数据流分析电路502的基本数据流STOLD和基本数据流STNEW直接作为基本数据流STOLD和基本数据流STNEW提供给数据流处理器503。
另外,数据流分析电路502具有用于计算所提供的数据流STOLD和数据流STNEW的比特数的计数器。基于计数值和每个画面的生成比特量,数据流分析电路502模拟分析关于每个画面的VBV缓冲器中的数据剩余量。由数据流分析电路502计算的关于每个画面的VBV缓冲器中的数据剩余量也提供给接合控制器500。
数据流处理器503是用于改变数据流结构、数据流STOLD和数据流STNEW的数据单元和标志的电路,以使由数据流STOLD和数据流STSPL接合生成的接合数据流STSPL变为无缝数据流。现在将参照图21A到21B描述由数据流处理器503执行的特定处理过程。
图21A显示了从关键电台30提供的原始数据流STOLD,和VBV缓冲器中的数据流STOLD的数据占有量的轨迹。图21B显示了存储在数据流服务器49中的替代数据流STNEW,和VBV缓冲器中的数据流STNEW的数据占有量的轨迹。图21C显示了通过接合接合点SP1和SP2的数据流STOLD和数据流STNEW所得到的接合数据流STSPL,以及VBV缓冲器中的接合数据流STSPL的数据占有量的轨迹。在图21A中,示出了DTS(解码时间标记)。SP1vbv表示在VBV缓冲器中的数据占有量的轨迹上的第一接合点。SP2vbv表示在VBV缓冲器中的数据占有量的轨迹上的第二接合点。VO(I6)表示当画面B5从VBV缓冲器中导出时在VBV缓冲器上缓冲的画面I6的数据量。GB(I6)表示画面I6的生成的比特量。VD(I6)表示画面I6的vbv_delay的值。VO(B7)表示当画面I6从VBV缓冲器中导出时在VBV缓冲器上缓冲的画面B7的数据量。GB(B11)表示画面B11的生成的比特量。VD(I12)表示画面I12的vbv_delay的值。VO(I12)表示当B11从VBV缓冲器中导出时在VBV缓冲器中缓冲的画面I12的数据量。在图21B中,GB(I6’)表示画面I6’的生成的比特量。VD(I6’)表示画面I6’的vbv_delay的值。VO(I6’)表示在VBV缓冲器中的第一接合点SP1vbv在VBV缓冲器上缓冲的画面I6’的数据量。GB(B11’)表示画面B11’的生成的比特量。VO(I12’)表示在VBV缓冲器中的第二接合点SP2vbv在VBV缓冲器上缓冲的画面B12’的数据量。在图21C中,GB(I6”)表示画面I6”的生成的比特量,对它进行处理可使接合数据流STSPL变为无缝数据流。VD(I6”)表示画面I6”的vbv_delay的值。GB(B11”)表示画面B11”的生成的比特量,对它进行处理可使接合数据流STSPL变为无缝数据流。
原始数据流STOLD是在关键电台30编码的数据流,而替代数据流STNEW是在地方电台40编码的数据流。因此,数据流STOLD和数据流STNEW是通过它们各自的视频编码器分别编码的。也就是说,数据流STOLD中的第一画面I6的vbv_delay的值VD(I6)与数据流STNEW中的第一数据流I6’的vbv_delay的值VD(I6’)并不相同。在这种情况下,在VBV缓冲器中的数据流接合点SP1vbv的时刻,VBV缓冲器中的原始数据流STOLD的数据占有量VO(I6)与VBV缓冲器中的替代数据流STNEW的数据占有量VO(I6’)互不相同。
如本发明的背景技术中所描述的,如果数据流STOLD和数据流STNEW在接合点SP1简单接合,则VBV缓冲器中的简单接合的数据流的数据占有量变得不再连续或生成上溢/下溢。
因此,在数据流接合器50中,数据流处理器503根据由数据流分析电路502从数据流STOLD和数据流STNEW提取的数据单元,对于提供的数据流STOLD和数据流STNEW的数据流结构执行数据流处理,以使接合数据流STSPL在接合点变得无缝。这个过程将在下文中描述。
接合控制器500从数据流分析电路502接收信息,诸如每个画面的picture_coding_type、vbv_delay、top_field_first和repeat_first_field,每个画面中生成的比特量以及关于每个画面的VBV缓冲器中的数据占有量,并将它们作为关于数据流STOLD的数据单元。在图21A到21C中,画面I6的vbv_delay的值表示为VD(I6),而画面I6生成的比特量表示为GB(I6)。VBV缓冲器中的画面I6的数据占有量表示为VO(I6)。
接下来,将描述由接合控制器500和数据流处理器503在接合点SP1关于VBV缓冲器执行的处理过程。
首先,如果接合控制器500已确定在接合点SP1的原始数据流STOLD的画面I6的vbv_delay的值VD(I6)和替代数据流STNEW的画面I6’的vbv_delay的值VD(I6’)互不相同,接合控制器500指示数据流处理器503将替代数据流STNEW中描述的画面I6’的vbv_delay的值从VD(I6’)写入VD(I6)。
按照来自接合控制器500的命令,数据流处理器503将替代数据流STNEW的画面标题中描述的I6比特的vbv_delay的值从VD(I6’)重写到VD(I6)。
在这种情况下,如果替代数据流STNEW中的vbv_delay的值简单地从VD(I6’)重写入VD(I6),以便按照重写的vbv_delay从VBV缓冲器导出比特流,则画面I6’生成的比特量不足,从而造成VBV缓冲器的下溢。这样,接合控制器500执行将填充字节插入替代数据流STNEW的画面I6’中的过程,以使替代数据流STNEW的画面I6’生成的比特量GB(I6’)变为无缝接合数据流STSPL的画面I6”生成的比特量GB(I6”)。填充字节是由虚比特“0”组成的。
为执行插入填充字节的过程,接合控制器500使用作为与数据流STOLD中的画面I6和画面B7有关的信息接收的VBV缓冲器中的生成的比特量GB(I6)和数据占有量VO(I6)、作为与数据流STNEW中的画面I6’有关的信息接收的VBV缓冲器中的生成的比特量GB(I6’)和数据占有量VO(I6’),来计算要插入的填充字节的数据量。具体讲,填充字节SB1[字节]是基于以下等式(2)来计算的。
SB1[比特]={GB(I6”)-GB(I6’)}/8={GB(I6)-GB(I6’)+VO(B7)-VO(B7’)}/8…(2)接合控制器500控制数据流处理器503将按照公式(2)计算的填充字节SB1插入到数据流STNEW中。
按照来自接合控制器500的命令,数据流处理器503描述插入数据流STNEW的填充字节SB1。作为填充字节应在数据流中描述的位置,最理想的位置是在编码数据流STNEW中的画面I6的画面标题的开始代码之前,但是,也可使用另一个开始代码之前的位置。
以上描述的控制过程是由接合控制器500和数据流处理器503在接合点SP1关于VBV缓冲器执行的。
接下来,将描述由接合控制器500和数据流处理器503在接合点SP2关于VBV缓冲器执行的控制。
如果数据流STNEW和数据流STOLD是在接合点SP2简单接合,则数据流STNEW的最后一个画面I11’生成的比特量GB(B11’)不足,因而与数据流STNEW的第一画面I12的VBV缓冲器中的数据占有量的轨迹不连续。结果,产生了VBV缓冲器的下溢或上溢。
因此,接合控制器500执行将填充字节插入数据流STNEW中的过程,因而数据流STNEW的最后画面I11’生成的比特量GB(I11’)变为图21中画面I11”生成的比特量GB(I11”),从而实现了在VBV缓冲器中的接合点SP2vbv的VBV缓冲器的连续轨迹。
为执行插入填充字节的过程,接合控制器500使用作为与数据流STOLD中的画面I12有关的信息接收的VO(I12)、数据流STNEW的最后画面B11’的生成比特量GB(B11’)以及关于数据流STNEW的画面I12’的VBV缓冲器中的数据占有量VO(I12’),来计算要插入的填充字节的数据量。具体讲,填充字节SB2[字节]基于以下等式(3)来计算。
SB2[字节]={GB(B11”)-GB(B11’)}/8={VO(I12’)-VO(I12)}/8…(3)换句话说,数据占有量VO(I12’)是在最后画面B11’从VBV缓冲器中导出之后与数据流STNEW有关的VBV缓冲器中的数据占有量。数据占有量VO(I12’)能容易地由数据流分析电路502检测,数据流分析电路502通过计算数据流STNEW的比特数来掌握VBV的轨迹。
接合控制器500控制数据流处理器503将按照公式(3)计算的填充字节SB2插入到数据流STNEW中。
按照来自接合控制器500的命令,数据流处理器503将填充字节SB2描述为关于数据流STNEW的画面B11’的信息。作为填充字节应被描述在数据流中的位置,最理想的位置是在编码数据流STNEW中的画面B11’的画面标题的开始代码之前。
以上描述的处理过程的控制是由接合控制器500和数据流处理器503在接合点SP2相对于VBV缓冲器执行的。
参照图22A到22C,现在将描述由接合控制器500和数据流处理器503在接合点SP1相对于诸如top_field_first和repeat_first_field等的标志执行的处理的第一个例子。
图22A显示了由在关键电台30制作的节目1、商业广告CM1和节目2所组成的电视节目PGOLD的帧结构,以及通过对该电视节目PGOLD编码得到的编码数据流STOLD。图22B显示了在地方电台40制作的替代商业广告CM1’的帧结构,以及通过对该替代商业广告CM1’编码而得到的编码数据流STNEW。图22C显示了通过接合原始数据流STOLD和替代数据流STNEW而生成的接合数据流STSPL,以及对该接合数据流STSPL解码而得到的帧结构。
接合控制器500将数据流分析电路502提供的数据流STOLD中的商业广告CM1的每个画面的top_field_first与替代数据流STNEW中的商业广告CM1’的top_field_first作比较。如果数据流STOLD的top_field_first与替代数据流STNEW的top_field_first相同,则使用相同的字段结构,因此不再需要对于诸如top_field_first和repeat_first_field的标志的处理过程。然而,如图22A到22C所示,如果原始商业广告CM1的top_field_first为“0”而替代商业广告CM1’的top_field_first为“1”,则将发生图6中所描述的场的中断和复制问题。
因此,本发明的数据流接合器50对接近接合点的画面的top_field_first和repeat_first_field进行重写,以使不产生由接合过程生成的场的漏失和重叠的不符合MPEG标准的数据流。
在图22A到22C所示的例子中,接合控制器500控制数据流处理器503从0到1重写画面P3的repeat_first_field,画面P3具有由顶场T4和底场B4组成的帧。另外,接合控制器500控制数据流处理器503从0到1重写画面P9’的repeat_first_field,画面P9’具有由顶场t10和底场b11组成的帧,从而在接合点SP2生成无缝数据流。此外,因为商业广告CM1’通过重写画面P9’的repeat_first_field而从原始商业广告CM1移位一个帧的时间,所以接合控制器500控制数据流处理器503从数据流STOLD删除节目2的所有画面中首先显示在显示器上的画面B13。
按照来自接合控制器500的指令,数据流处理器503在原始数据流STOLD中搜索关于画面P3的picture_coding_extension的开始代码,然后从0到1重写其中的repeat_first_field的值。这样,因为重复场B4’是通过对具有重写的repeat_first_field值的画面P3进行解码而生成的,因而场在接合点SP1变得连续。同样,数据流处理器503在替代数据流STOLD中搜索关于画面P9’的picture_coding_extension的开始代码,并且从0到1重写其中的repeat_first_field的值。这样,因为重复场t10’是通过对具有重写的repeat_first_field值的画面P9’进行解码而生成的,因而场在接合点SP2变得连续。同样,数据流处理器503删除原始数据流STOLD中的一部分,在该部分描述与画面B13有关的数据单元,或者用空数据替代该部分。
图23A到23C显示了图22A到22C中所描述的对于诸如top_field_first和repeat_first_field等标志进行处理的另一个示例。参照图23A到23C,将描述由接合控制器500和数据流处理器503在接合点SP1和SP2对诸如top_field_first和repeat_first_field等标志进行处理的第二个例子。
在图23A到23C所示的例子中,接合控制器500控制数据流处理器503从1到0重写由顶场t5和底场b6组成的画面B7’的top_field_first,并且从0到1重写画面B7’的repeat_first_field,以使在接合点SP1的节目1和商业广告CM1’之间的衔接口的场变为连续。另外,接合控制器500控制数据流处理器503从1到0重写由顶场T11和底场B11组成的画面B13的top_field_first,以使接合点SP2的商业广告CM1’和节目2之间的衔接口的场变得连续。而且,接合控制器500控制数据流处理器503从1到0重写由顶场T12和底场B12所组成的画面B14的top_field_first,并且从1到0重写repeat_first_field。
在接合控制器500的控制下,数据流处理器503在替代数据流STNEW中搜索关于画面B7’的picture_coding_extension的开始代码。然后数据流处理器503从1到0重写数据流中的top_field_first并且从0到1重写repeat_first_field。这样,通过对具有重写的top_field_field和repeat_first_field的值的画面B7’进行解码,底场b6的显示时间移位了一个帧,并且生成重复场b6’。因而场在接合点SP1变为连续。同样,数据流处理器503在原始数据流STOLD中搜索关于画面B13的picture_coding_extension的开始代码,并且从1到0重写其中的top_field_first。另外,数据流处理器503从1到0重写关于原始数据流STOLD中的画面B14的top_field_first,并且从1到0重写repeat_first_field。这样,因为通过对具有重写的top_field_first和repeat_first_field的值的画面B13和B14进行解码,使底场B11和B12的显示时间移位一个帧,所以场在接合点SP2变得连续。
比较一下图22A到22C所示的处理的第一个例子和图23A到23C所示的处理的第二个例子。从图22C可知,因为在替代商业广告CM1’的开端显示的画面B7从在原始商业广告CM1的开端显示的画面B7移位了一个场,所以替代商业广告CM1’的显示时间延迟了一个场。一个场的显示延迟很难用肉眼看出。然而,因为广播电台通过广播客户公司的商业广告而获得利润,所以可能会要求广播电台在没有任何延迟的情况下精确地广播商业广告,而不是广播诸如节目1的主要节目。在这种精确要求显示时间的情况下,图23A到23C所示的处理的第二个例子是有效的。如同图23A到23C所示的处理的第二个例子,通过重写画面B7’的top_field_first和repeat_first_field的值,替代商业广告CM1’的第一画面B7’能精确地显示,而没有任何从原始商业广告CM1的第一个显示画面的延迟。
总之,从数据流处理器503输出的数据流STNEW的VBV缓冲器中的数据占有量的轨迹与VBV缓冲器中的数据流STOLD的数据流占有量的轨迹是一致的,并且具有相对于场图形/帧图形的一致性。因此,通过基于来自接合控制器500的控制信号对接合电路504的切换操作进行控制,通过连接接合点SP1的数据流STOLD之后的数据流STNEW和连接接合点SP2的数据流STNEW之后的数据流STOLD生成了接合数据流STSPL。在接合数据流STSPL中的接合点SP1和SP2,VBV缓冲器中的数据占有量的轨迹是连续的并且场图形/帧图形也是连续的。
现在将描述接合过程的第二个实施例。接合过程的第二个实施例是关于在下列情况下执行的接合过程当传输节目的编码数据流STOLD从关键电台30发送时,要被最新插入的商业广告CM1’被编码生成编码数据流STNEW。即,分析从关键电台30发送的传输节目的编码数据流STOLD,并且基于分析结果对最新插入的商业广告CM1’进行编码。
首先,从关键电台30发送的编码数据流STOLD由数据流转换电路44从传输数据流形式转换成基本数据流换形式。转换成基本数据流形式的编码数据流STOLD提供给数据流接合器50的数据流分析电路502。
数据流接合器50的数据流分析电路502是用于分析编码数据流STOLD的数据流语法的电路。在接合过程的第二个实施例中,数据流分析电路502仅分析编码数据流STOLD的语法而不分析替代数据流STNEW的语法。
具体讲,数据流分析电路502搜索原始数据流STOLD中描述的32比特的picture_start_code,以便了解与画面标题有关的信息在数据流中描述的位置,如从图10和15中所示的编码数据流的语法中所理解的。然后,数据流分析电路502搜索开始于picture_start_code之后的11比特的3比特的picture_coding_type,以便了解画面类型。而且,数据流分析电路502从紧接着3比特的picture_coding_type所描述的16比特的vbv_delay中,了解编码画面的vbv_delay。
另外,数据流分析电路502搜索编码数据流STOLD中描述的32比特的extension_start_code,以便了解数据流中与画面编码扩展有关的信息的描述位置,如从图10和15中所示的编码数据流的语法中所理解的。然后,数据流分析电路502搜索在picture_start_code之后25比特描述的1比特的top_field_first,和在top_field_first之后6比特描述的repeat_first_field,以便了解编码画面的帧结构。
数据流分析电路502通过接合控制器500给广播系统控制器41提供数据单元,诸如从原始数据流STOLD为每个画面提取的picture_coding_type、vbv_delay、top_field_first以及repeat_first_field。没有必要发送原始数据流STOLD的所有画面的数据单元。仅发送诸如对应于发送节目的商业广告CM1的画面的picture_coding_type、vbv_delay、top_field_first以及repeat_first_field就足够了。
广播系统控制器41控制CM服务器47,以再现CM1’的视频数据,从而取代传输节目的商业广告CM。另外,广播系统控制器41给编码器块48的编码控制器480提供从原始数据流STOLD提取的picture_coding_type、vbv_delay、top_field_first以及repeat_first_field。
编码器控制器480控制编码器481利用从广播系统控制器41提供的picture_coding_type、vbv_delay、top_field_first和repeat_first_field对替代商业广告CM1’的基带视频数据进行编码。也就是说,对替代商业广告CM1’进行编码,以使原始商业广告CM1的编码数据流STOLD的picture_coding_type、vbv_delay、top_field_first和repeat_first_field与通过对替代商业广告CM1’进行编码得到的数据流STNEW的picture_coding_type、vbv_delav、top_field_first和repeat_first_field变得彼此完全相同。结果,生成了具有与原始商业广告CM1的编码数据流STOLD的picture_coding_type、vbv_delay、top_field_first和repeat_first_field完全相同的picture_coding_type、vbv_ delav、top_field_first和repeat_first_field的编码数据流STNEW。
接合控制器500将切换电路501的输入端切换到“b”,以便将从编码器481输出的基本数据流STNEW提供给数据流分析电路502。在接合过程的第二个实施例中,因为数据流分析电路502仅分析编码数据流STOLD的语法而不分析替代数据流STNEW的语法,数据流STNEW在没有由数据流分析电路502进行分析的情况下原样输出。
在接合过程的第二个实施例中,因为不需要用于改变从数据流分析电路502输出的数据流STOLD和数据流STNEW中的数据单元的数据流处理,数据流处理器503仅执行用于实现数据流STOLD和数据流STNEW之间的帧同步的同步过程(或帧同步)。具体讲,数据流处理器503有用于若干帧的FIFO缓冲器,并且将数据流STOLD缓冲到FIFO缓冲器中,直到替代数据流STNEW从编码器481输出。因而能实现数据流STOLD和数据流STNEW之间的帧同步。被处理用于帧同步的数据流STOLD和数据流STNEW提供给接合电路504。
接合控制器500控制接合电路504的切换,以便使数据流STNEW在接合点SP1连接到数据流STOLD之后,并且使数据流STOLD在接合点SP2连接到数据流STNEW之后。结果,从接合电路504输出接合数据流STSPL。
尽管数据流STOLD和数据流STNEW是由接合电路504简单切换的,VBV缓冲器中的接合数据流的数据占有量的轨迹是连续的而且接合点的帧图形也是连续的。其原因如下。即,因为数据流STNEW是基于对原始数据流STOLD的语法分析结果被编码的,所以生成了同原始数据流STOLD一致的数据流STNEW。因此,VBV缓冲器中的接合数据流STSPL的轨迹与VBV缓冲器中的原始数据流的数据占有量的轨迹完全相同,而且生成的接合数据流STSPL的帧结构与原始数据流STOLD的帧结构相同完全。
因此,在第二个实例中,对从关键电台发送的原始编码数据流STOLD的语法进行分析,并且根据分析结果对替代商业广告CM1’进行编码,使其具有与编码数据流STOLD相同的数据流结构和编码参数。因此,在接合分别生成的编码数据流STOLD和编码数据流STNEW的过程中,能容易地实现编码数据流STOLD和编码数据流STNEW之间的一致性。结果,能生成符合MPEG标准的无缝接合的数据流STSPL。
现在将描述接合过程的第三个实施例。在接合过程的第三个实施例中,用于对原始商业广告CM1的编码数据流和替代商业广告CM1’的编码数据流进行编码的编码参数,是在生成原始商业广告CM1的编码数据流STOLD和替代商业广告CM1’的编码数据流STNEW之前提前决定的,并且原始商业广告CM1和替代商业广告CM1’是基于预定的编码参数进行编码的。例如,编码参数是由已经描述的picture_coding_type、vbv_delay、top_field_first、repeat_first_field和生成的比特量所表示的信息。
首先,就用于对原始商业广告CM1进行编码的编码参数来说,picture_coding_type、vbv_delay、top_field_first和repeat_first_field是在关键电台30决定的。关键电台30的广播系统控制器31将编码参数提供给MPEG编码器块35的编码器控制器350,也将编码参数通过通信线路提供给每个地方电台40的广播系统控制器41。
编码控制器350控制视频编码器351-1V通过使用从广播系统控制器31提供的诸如picture_coding_type、vbv_delay、top_field_first和repeat_first_field等的编码参数对原始商业广告CM1的视频数据进行编码。也就是说,从视频编码器351-1V输出的编码数据流STOLD是基于诸如picture_coding_type、vbv_delay、top_field_first和repeat_furst_field等的编码参数的数据流。
从视频编码器351-1V输出的编码数据流STOLD通过多路复用器36和调制电路37提供给地方电台40。
另一方面,地方电台40将诸如从关键电台30的广播系统控制器31提供的picture_coding_type、vbv_delay、top_field_first和repeat_first_field等的编码参数提供给编码器块48的编码器控制器480。
编码控制器480控制编码器481使用从广播系统控制器41提供的picture_coding_type、vbv_delay、top_field_first和repeat_first_field等的编码参数对替代商业广告CM’的基带视频数据进行编码。也就是说,生成具有与原始商业广告CM的编码数据流STOLD的picture_coding_type、vbv_delay、top_field_first和repeat_first_field完全相同的picture_coding_type、vbv_delay、top_field_first和repeat_first_field的数据流STNEW。
接合控制器500将切换电路501的输入端切换到“b”,以便将从编码器481输出的基本数据流STNEW提供给数据流分析电路502中。在接合过程的第三个实施例中,数据流分析电路502并不执行对编码数据流STOLD和编码数据流STNEW的语法分析。
在接合过程的第三个实施例中,因为不需要用于改变从数据流分析电路502输出的数据流STOLD和数据流STNEW中的数据单元的数据流处理,所以数据流处理器503仅执行用于实现数据流STOLD和数据流STNEW之间的帧同步的同步过程(或帧同步)。具体讲,数据流处理器503具有用于多个帧的FIFO缓冲器,并且缓冲FIFO缓冲器中的数据流STOLD直到替代数据流STNEW从编码器481中输出。因此,能实现数据流STOLD和数据流STNEW之间的帧同步。被处理用于帧同步的数据流STOLD和数据流STNEW提供给接合电路504。
接合控制器500控制接合电路504的切换,以便使数据流STNEW连接在接合点SP1的数据流STOLD之后,并且数据流STOLD连接在接合点SP2的数据流STNEW之后。因此,从接合电路504输出接合数据流STSPL。
尽管数据流STOLD和数据流STNEW是由接合电路504简单切换的,VBV缓冲器中的接合数据流STSPL的数据占有量的轨迹是连续的且接合点的帧图形也是连续的。这是因为原始商业广告CM1和替代商业广告CM1’是通过使用诸如ptcture_coding_type、vbv_delay、top_field_first和repeat_first_field等的编码参数来编码的,这些编码参数是由关键电台30的广播系统控制器31提前决定的。
因此,在第三个实施例中,编码参数是在关键电台和地方电台之间预定的。然后,在关键电台基于预定的编码参数生成原始商业广告CM1的编码数据流STOLD,并在关键电台基于预定的编码参数生成替代商业广告CM1’的编码数据流STNEW。因此,在接合分别生成的编码数据流STOLD和编码数据流STNEW的过程中,能容易地实现编码数据流STOLD和编码数据流STNEW之间的一致性。因而能生成符合MPEG标准的无缝接合的数据流STSPL。
权利要求
1.一种编码数据流接合设备,用以在接合点接合第一编码数据流和第二编码数据流,该设备包括数据流分析装置,用于分析所述第一编码数据流的语法,从而提取所述第一编码数据流的编码参数;及接合装置,用于根据由所述数据流分析装置得到的所述第一编码数据流的编码参数来改变所述第二编码数据流的编码参数,以便使所述第一编码数据流和所述第二编码数据流在所述接合点无缝连接,然后接合所述第一编码数据流和带有改变后的编码参数的所述第二编码数据流。
2.如权利要求1所述的编码数据流接合设备,其中由所述数据流分析装置所提取的所述编码参数是表示VBV缓冲器的初使状态的数据vbv_delay。
3.如权利要求2所述的编码数据流接合设备,其中所述接合装置将所述第二编码数据流中的接合点之后的第一个画面的vbv_delay值重写成所述第一编码数据流中的接合点之后的第一个画面的vbv_delay值。
4.如权利要求3所述的编码数据流接合设备,其中所述接合装置将填充字节插入所述第二编码数据流中,以便使所述第二编码数据流中的所述接合点之后的第一个画面的生成比特量变为对应于重写的vbv_delay值的比特量。
5.如权利要求4所述的编码数据流接合设备,其中所述接合装置根据所述第一编码数据流中的接合点之后的第一个画面的生成比特量,和所述第二编码数据流中的接合点之后的第一个画面的生成比特量,计算所述填充字节的数据量。
6.如权利要求5所述的编码数据流接合设备,其中所述接合装置根据所述第一编码数据流的接合点的VBV缓冲器的数据占有量和所述第二编码数据流的接合点的VBV缓冲器的数据占有量,计算所述填充字节的数据量。
7.如权利要求1所述的编码数据流接合设备,其中由所述数据流分析装置提取的所述编码参数是表示在解码时是否生成重复场的标志repeat_first_field。
8.如权利要求7所述的编码数据流接合设备,其中所述接合装置改变所述第一编码数据流中的接合点之前的画面的repeat_first_field值,或改变所述第二编码数据流中的接合点之前的画面的repeat_first_field值,以便使所述第一编码数据流中的接合点之前的画面的帧结构和所述第二编码数据流中的接合点之前的画面的帧结构变得相互一致。
9.如权利要求1所述的编码数据流接合设备,其中由所述数据流分析装置提取的所述编码参数是表示第一场是顶场还是底场的标志top_field_first。
10.如权利要求9所述的编码数据流接合设备,其中所述接合装置改变所述第一编码数据流中的接合点之前的画面的top_field_first值,或改变所述第二编码数据流中的接合点之前的画面的top_field_first值,以便使所述第一编码数据流的接合点之前的画面的帧结构和所述第二编码数据流的接合点之前的画面的帧结构变得相互一致。
11.一种编码数据流接合方法,用于在接合点接合第一编码数据流和第二编码数据流,该方法包括数据流分析步骤,用于分析所述第一编码数据流的语法,从而提取所述第一编码数据流的编码参数;以及接合步骤,用于根据在所述数据流分析步骤得到的所述第一编码数据流的编码参数来改变所述第二编码数据流的编码参数,以便使所述第一编码数据流和所述第二编码数据流在所述接合点无缝连接,然后接合所述第一编码数据流和带有改变后的编码参数的所述第二编码数据流。
12.如权利要求11所述的编码数据流接合方法,其中在所述数据流分析步骤提取的所述编码参数是表示VBV缓冲器的初使状态的数据vbv_delay。
13.如权利要求12所述的编码数据流接合方法,其中在所述接合步骤,将所述第二编码数据流中的接合点之后的第一个画面的vbv_delay值重写成所述第一编码数据流中的接合点之后的第一个画面的vbv_delay值。
14.如权利要求13所述的编码数据流接合方法,其中在所述接合步骤,将填充字节插入所述第二编码数据流中,以便使所述第二编码数据流中的所述接合点之后的第一个画面的生成比特量变为对应于重写的vbv_delay值的比特量。
15.如权利要求14所述的编码数据流接合方法,其中在所述接合步骤,根据所述第一编码数据流中的接合点之后的第一个画面的生成比特量,和所述第二编码数据流中的接合点之后的第一个画面的生成比特量,计算所述填充字节的数据量。
16.如权利要求15所述的编码数据流接合方法,其中在所述接合步骤,根据所述第一编码数据流的接合点的VBV缓冲器的数据占有量和所述第二编码数据流的接合点的VBV缓冲器的数据占有量,计算所述填充字节的数据量。
17.如权利要求11所述的编码数据流接合方法,其中在所述数据流分析步骤提取的所述编码参数是表示在解码时是否生成重复场的标志repeat_first_field。
18.如权利要求17所述的编码数据流接合方法,其中在所述接合步骤,改变所述第一编码数据流中的接合点之前的画面的repeat_first_field值,或改变所述第二编码数据流中的接合点之前的画面的repeat_first_field值,以便使所述第一编码数据流中的接合点之前的画面的帧结构和所述第二编码数据流中的接合点之前的画面的帧结构变得相互一致。
19.如权利要求11所述的编码数据流接合方法,其中在所述数据流分析步骤提取的所述编码参数是表示第一场是顶场还是底场的标志top_field_first。
20.如权利要求19所述的编码数据流接合方法,其中在所述接合步骤,改变所述第一编码数据流中的接合点之前的画面的top_field_first值,或改变所述第二编码数据流中的接合点之前的画面的top_field_first值,以便使所述第一编码数据流的接合点之前的画面的帧结构和所述第二编码数据流的接合点之前的画面的帧结构变得相互一致。
21.一种编码数据流生成设备,用以通过接合第一编码数据流和第二编码数据流在接合点生成接合的编码数据流,该设备包括数据流分析装置,用以分析所述第一编码数据流的语法,从而提取所述第一编码数据流的编码参数;及接合装置,用以根据所述数据流分析装置得到的所述第一编码数据流的编码参数来改变所述第二编码数据流的编码参数,以便使所述第一编码数据流和所述第二编码数据流在所述接合点无缝接合,然后接合所述第一编码数据流和带有改变后的编码参数的所述第二编码数据流。
22.一种编码数据流生成方法,用以在接合点通过接合第一编码数据流和第二编码数据流生成接合的编码数据流,该方法包括数据流分析步骤,用以分析所述第一编码数据流的语法,从而提取所述第一编码数据流的编码参数;及接合步骤,用以根据在所述数据流分析步骤得到的所述第一编码数据流的编码参数来改变所述第二编码数据流的编码参数,以便使所述第一编码数据流和所述第二编码数据流在所述接合点无缝连接,然后接合所述第一编码数据流和带有改变后的编码参数的所述第二编码数据流。
全文摘要
一种数据流转换电路,将从主电台发送的原始编码数据流的数据流类型转换成基本数据流。转换后的原始编码数据流提供给数据流接合器的数据流分析电路。数据流分析电路分析所接收的原始编码数据流的语法,以从该原始编码流中提取数据单元,如表示VBC缓冲器的初始状态的数据“vbv-delay”、表示在解码是否时生成重复场的标志“repeat-first-field”以及表示第一场是顶场还是底场的标志“top-field-first”,然后将这些数据单元提供给接合控制器,接合控制器又将这些数据单元提供给数据流处理器,数据流处理器根据该数据单元重写替代编码数据流的数据单元。
文档编号H04J3/00GK1244325SQ9880191
公开日2000年2月9日 申请日期1998年10月5日 优先权日1997年10月3日
发明者田原胜己, 安田干太, 根岸慎治 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1