CN1241416C - 编码***和方法、编码及解码、记录及再现的设备和方法 - Google Patents
编码***和方法、编码及解码、记录及再现的设备和方法 Download PDFInfo
- Publication number
- CN1241416C CN1241416C CNB008001316A CN00800131A CN1241416C CN 1241416 C CN1241416 C CN 1241416C CN B008001316 A CNB008001316 A CN B008001316A CN 00800131 A CN00800131 A CN 00800131A CN 1241416 C CN1241416 C CN 1241416C
- Authority
- CN
- China
- Prior art keywords
- data
- stream
- past
- coding parameter
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/114—Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/115—Selection of the code volume for a coding unit prior to coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及用于对根据MPEG标准生成的编码流进行重新编码处理以便生成具有不同GOP(图像组)结构或位速率的重新编码流的代码变换器。具体地说,代码变换器106的解码设备解码源编码流以生成解码视频数据,并提取叠加在编码流中作为history_stream( )的过去编码参数。在这种情况中,解码设备根据叠加在编码流中作为re_coding_stream_info( )的信息提取过去编码参数。编码设备接收解码视频数据和过去编码参数,并且以处理不使图象质量变差的方式利用过去编码参数进行编码处理,从而生成重新编码流。此外,编码设备选择过去编码参数最适合于连接在编码设备之后的应用设备的那一组过去编码参数,并且只将被选的过去编码参数描述在编码流中作为history_stream( )。编码设备叠加指示被选过去编码参数的信息作为re_coding_stream_info( ),以便随后的应用设备能够从重新编码流适当地提取关于history_stream( )的编码参数。
Description
技术领域
本发明涉及编码(coding)***和方法、编码(encoding)设备和方法、解码(decoding)设备和方法、记录设备和方法以及再现设备和方法,尤其涉及均适合于应用在代码变换器(transcoder)中的编码***和方法、编码设备和方法、解码设备和方法、记录设备和方法以及再现设备和方法,代码变换器根据MPEG(运动图像专家组)标准对已经编码的编码流进行重新编码处理,以生成具有不同GOP(图像组)结构或位速率的重新编码流。
技术背景
在制作和广播电视节目的广播电台,MPEG技术通常用于压缩/编码视频数据。尤其是,在将视频数据记录在诸如磁带之类的随机存取记录介质材料和通过缆线或卫星发送视频数据的领域,MPEG技术正成为事实标准。
现在简要描述广播电台制作的视频节目发送到千家万户之前广播电台进行处理的例子。首先,配置在包括整合在一起的视频摄像机和VTR(磁带录像机)的摄录机(camcoder)中的编码器用于编码和将源视频数据记录在磁带上。在这种情况中,摄录机的编码器编码源视频数据以便适合于VTR磁带的记录格式。例如,记录在磁带上的MPEG位流具有一个GOP由两个帧构成的GOP结构(例如,I、B、I、B、I、B、...)。另外,记录在磁带上的MPEG位流具有18Mbps的位速率。
下一步,主广播台进行编辑处理,编辑记录在磁带上的视频位流。为了达到这个目的,将记录在磁带上的视频位流的GOP结构转换成适合于编辑处理的那一种。在适合于编辑处理的GOP结构中,一个GOP由一个帧构成,并且所有图像都是I类型的。这是因为与其它图像没有任何相关性的I图像最适合于以帧为单位进行编辑。在实际操作中,记录在磁带上的视频流被解码回到基带视频数据。对这个基带视频信号重新编码(re-coded),以便使所有图像都转换成I类型的。通过按照这方式进行解码和重新编码处理,就可以生成具有适合于编辑处理的GOP结构的位流。
接着,为了将经过上述编辑处理生成的编辑过的视频节目从主台发送到本地台,将编辑过的视频节目的位流转换成适合于发送处理的GOP结构和位速率。例如,在适合于在广播电台之间传送的GOP结构中,一个GOP由15个帧构成(例如,I、B、B、P、B、B、P、...)。另外,由于在广播电台之间通常铺设了由光纤组成的并具有高传输容量的专用线,因此,适合于在广播电台之间传送的位速率最好高一点,也就是说,50Mbps(位/秒)或更高。具体讲,编辑过的视频节目的位流被解码回到基带视频数据。然后,将基带视频数据重新编码成具有适合于在广播电台之间传送的GOP结构和位速率。
在本地台,进行编辑处理将本地特有的商业影片***从主台发送的视频节目中。也就是说,在如上所述的编辑处理中,从主台发送的视频流被解码回到基带视频数据,通过重新编码基带视频信号使得所有图像都转换成I类型,可以生成具有适合于编辑处理的GOP结构的位流。
之后,为了通过缆线或卫星将在本地台中编辑的视频节目发送到千家万户,要进行到适合于发送处理的GOP结构和位速率的转换。例如,在适合于发送到千家万户的GOP结构中,一个GOP由15帧构成(例如,I、B、B、P、B、B、P、...),并且适合于发送到千家万户的位速率较低,亦即,为大约5Mbps。具体讲,编辑过的视频节目的位流被解码回到基带视频数据。然后,将基带视频数据重新编码成适合于发送的GOP结构和位速率。
从上面的描述中可以体会到,在视频节目正在从广播电台发送到千家万户的同时,要重复若干次解码编码处理。事实上,除了上述的这些处理之外,广播电台还需要进行各种信号发送(signaling)处理,以便对于每次信号发送处理都必须重复解码编码处理。
然而,众所周知,基于MPEG标准的编码解码处理并非百分之一百可逆的,也就是说,编码之前的基带视频数据并不完全与解码的视频数据相同,并且由于编码解码处理造成图象质量变差。不利的是,如上所述,解码编码处理的不断重复可能进一步使图象质量变差。换言之,解码/编码过程的不断重复可能对图象质量的变差产生累积效果。
本发明就是在考虑了这些情况之后提出来的。因此,本发明的目的是提供一种代码变换***,即使不断重复解码编码处理改变根据MPEG标准编码的编码位流中GOP(图像组)的结构,这种代码变换***也能够防止图象质量的变差。
发明内容
本发明涉及用于重新编码根据MPEG标准生成的编码流以生成具有不同GOP和不同位速率的重新编码流的代码变换器。
具体讲,代码变换器106的解码设备解码源编码流以生成解码视频数据,并提取叠加在编码流中的过去编码参数作为history_stream()(历史流)。在这种情况中,解码设备根据叠加在编码流上的信息提取过去编码参数作为re_coding_stream_info()(重新编码流信息)。
由于编码设备接收解码视频数据和过去编码参数,并使用后者来编码解码的视频数据,以防止重新编码处理降低图象质量,因此生成重新编码流。此外,编码设备选择过去编码参数中最适合于位于编码设备之后并与之相连接的应用(application)的那些过去编码参数,并且只将所选的过去编码参数写入编码流作为history_stream()。编码设备将表示被选过去编码参数的信息叠加在编码流中作为re_coding_stream_info(),以便后面的应用设备可以从重新编码流中适当提取关于history_stream()的编码参数。
根据本发明的代码变换器能够实现即使重复地重新编码视频数据也能够利用适用于后面应用的最少数量的编码参数来使图象质量变差降到最低程度的编码(coding)***。
根据本发明的代码变换器包括:解码装置,用于解码源编码流以生成视频数据并从源编码流中提取由过去编码处理生成的过去编码参数;编码装置,用于重新编码视频数据以生成重新编码视频流;和控制装置,用于接收过去编码参数以控制由编码装置根据过去编码参数进行的重新编码处理,并有选择地将过去编码参数写入重新编码流。
根据本发明的代码变换器的编码设备选择过去编码参数中由位于编码装置之后并与之相连接的应用设备所需要的那些过去编码参数,并将所选过去编码参数写入重新编码流。
根据本发明的代码变换器的编码设备有选择地将过去编码参数写入重新编码流,并将表示过去编码参数写入重新编码流的数据组的标志或/和指示符写入重新编码流。
根据本发明的代码变换器的编码设备将关于过去编码参数的信息写入编码流作为history_stream(),并将关于重新编码流的信息写入重新编码流作为re_coding_stream_info()。
根据本发明的代码变换器的编码设备有选择地将过去编码参数写入重新编码流作为history_stream(),并将关于过去编码参数写入重新编码流的数据组的信息写入重新编码流作为re_coding_stream_info()。
根据本发明的编码设备接收关于对视频数据进行过去编码处理的过去编码参数,有选择地将过去编码参数写入重新编码流,并将表示过去编码参数写入重新编码流的数据组的信息写入到重新编码流。
根据本发明的解码设备从编码流中提取关于过去编码参数叠加在编码流中的数据组的信息,并根据关于该数据组的信息从编码流中提取过去编码参数。
根据本发明的解码设备从编码流中提取写入编码流中的标志或/或指示符作为re_coding_stream_info(),并根据该标志或/和指示从编码流中提取过去编码参数。
根据本发明的一种用于将编码流记录在记录介质上的记录设备,包括:解码装置,用于解码源编码流以生成视频数据,和从所述源编码流提取通过过去编码处理的编码参数;编码装置,用于对所述视频数据进行重新编码处理以生成重新编码流;控制装置,用于接收所述过去编码参数以控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中;和记录装置,用于将所述重新编码流记录在记录介质上,其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
根据本发明的一种用于将编码流记录在记录介质上的记录方法,包括:解码步骤,解码源编码流以生成视频数据,和从所述源编码流提取通过过去编码处理的编码参数;编码步骤,对所述视频数据进行重新编码处理以生成重新编码视频流;控制步骤,接收所述过去编码参数以控制所述重新编码处理,并根据数据组和用于识别所述所述数据组的信息将被选过去编码参数描述在所述重新编码流中;和记录步骤,将所述重新编码流记录在记录介质上,其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
根据本发明的一种用于从记录介质再现编码流的再现设备,其特征在于,所述再现设备包括:再现装置,用于从所述记录介质再现源编码流;解码装置,用于解码所述源编码流以生成视频数据,并从所述源编码流提取通过过去编码处理的编码参数;编码装置,用于对所述视频数据进行重新编码处理以生成重新编码流;和控制装置,用于控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中,其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
根据本发明的一种用于从记录介质再现编码流的再现方法,其特征在于,所述再现方法包括:再现步骤,从所述记录介质再现源编码流;解码步骤,解码所述源编码流以生成视频数据,并从所述源编码流提取通过过去编码处理的编码参数;编码步骤,对所述视频数据进行重新编码处理以生成重新编码流;和控制步骤,控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中,其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
附图简述
图1是描述高效编码原理的示意图;
图2是描述在压缩图象数据过程中如何处理图像类型的示意图;
图3是描述在压缩图象数据过程中如何处理图像类型的示意图;
图4是描述编码运动图象信号的原理的示意图;
图5是显示编码和解码运动图象信号的设备的结构的方框图;
图6是描述图象数据结构的示意图;
图7是显示图5所示的编码器18的结构的方框图;
图8是描述图7所示的预测模式转换电路52的工作原理的示意图;
图9是描述图7所示的预测模式转换电路52的工作原理的示意图;
图10是描述图7所示的预测模式转换电路52的工作原理的示意图;
图11是描述图7所示的预测模式转换电路52的工作原理的示意图;
图12是显示图5所示的解码器31的结构的方框图;
图13是描述与图像类型相对应的SNR(信噪比)控制的示意图;
图14是显示本发明应用其中的代码变换器101的结构的方框图;
图15是详细显示图14所示的代码变换器101的结构的方框图;
图16是详细显示配置在图14中的解码设备102的结构的方框图;
图17是描述宏块中的像素的示意图;
图18是描述记录编码参数的区域的示意图;
图19是详细显示配置在图14中的编码设备106的结构的方框图;
图20是显示图15中历史VLC 211的结构的例子的方框图;
图21是显示图15中历史VLD 203的结构的例子的方框图;
图22是显示图15中转换器212的结构的例子的方框图;
图23是显示图22中填充电路(stuff cucuit)323的结构的例子的方框图;
图24是描述图22中转换器212的工作原理的时序图;
图25是显示图15中转换器202的结构的例子的方框图;
图26是显示图25中删除电路343的结构的例子的方框图;
图27是显示图15中转换器212的结构的另一个例子的方框图;
图28是显示图15中转换器202的结构的另一个例子的方框图;
图29是显示图15中用户数据格式化器213的结构的例子的方框图;
图30是显示如何实际使用图14中的代码变换器101的示意图;
图31是描述记录编码参数的区域的示意图;
图32是描述图14中的编码设备106进行可变图像类型确定处理的流程图;
图33是显示图像类型发生改变的例子的示意图;
图34是显示图像类型发生改变的另一个例子的示意图;
图35是描述图14中的编码设备106进行量化控制处理的示意图;
图36是描述图14中的编码设备106进行量化控制处理的流程图;
图37是显示强耦合代码变换器101的结构的方框图;
图38是描述视频序列流的语法的示意图;
图39是描述图38中的语法的结构的示意图;
图40是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图41是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图42是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图43是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图44是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图45是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图46是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图47是描述history_stream()的语法的示意图,history_stream()含有记录在其中的固定长度历史信息;
图48是描述sequence_header()(序列首标)的语法的示意图;
图49是描述sequence_extension()(序列扩展)的语法的示意图;
图50是描述extension_and_user_data()(扩展和用户数据)的语法的示意图;
图51是描述user_data()(用户数据)的语法的示意图;
图52是描述group_of_pictures_header()(图象组首标)的语法的示意图;
图53是描述picture_header()(图象首标)的语法的示意图;
图54是描述picture_coding_extension()(图象编码扩展)的语法的示意图;
图55是描述extension_data()(扩展数据)的语法的示意图;
图56是描述quant_matrix_extension()(量化矩阵扩展)的语法的示意图;
图57是描述copyright_extension()(版权扩展)的语法的示意图;
图58是描述picture_display_extension()(图象显示扩展)的语法的示意图;
图59是描述picture_data()(图象数据)的语法的示意图;
图60是描述slice()(片)的语法的示意图;
图61是描述macroblock()(宏块)的语法的示意图;
图62是描述macroblock_modes()(宏块模式)的语法的示意图;
图63是描述motion_vectors(s)(运动矢量)的语法的示意图;
图64是描述motion_vector(r,s)的语法的示意图;
图65是描述关于I图像的macroblock_type(宏块类型)的可变长度代码的示意图;
图66是描述关于P图像的macroblock_type的可变长度代码的示意图;
图67是描述关于B图像的macroblock_type的可变长度代码的示意图;
图68是描述re_coding_stream_info()的语法的示意图;
图69是描述red_bw_flag(红bw标志)和red_bw_indicater(红bw指示符)的示意图;
图70是描述历史信息编码参数的数据组的示意图;
图71是描述Re_coding Information Bus(重新编码信息总线)宏块形成的示意图;
图72是描述Picture rate elements(图象速率元素)的示意图;
图73是描述Picture rate elements的示意图;
图74是描述Picture rate elements的示意图;
图75是描述记录Re_coding Information Bus的区域的示意图;
图76是表示磁带录像机记录***的结构的例子的方框图;
图77是表示磁带录像机再现***的结构的例子的方框图;
图78是表示磁带录像机再现***的结构的另一个例子的方框图;
图79是表示磁带录像机再现***的结构的另一个例子的方框图;和
图80是描述视频流和history_stream的记录位置的示意图。
实施本发明的最佳模式
在下面描述本发明应用其中的代码变换器之前,先说明运动图象信号的压缩编码。文中“***”指由多个设备和装置构成的整个***。
例如,将运动图象信号发送到遥远的地方的电视会议或电话***利用视频信号中行或帧间相关性压缩编码图象信号,以便有效地使用传输路径。
行相关性的使用使图象信号能够通过,例如,DCT(离散余弦变换)处理得到压缩。
另外,帧间相关性的使用使图象信号能够进一步得到压缩用于编码。例如,如图1所示,如果帧图象PC1至PC3发生在时刻t1到t3期间,那么,计算帧图象PC1与PC2之间图象信号的差生成PC12,计算帧图象PC2与PC3之间图象信号的差生成PC23。在时间上相邻的帧的图象通常不会有太大的差异,致使对它们之间的差值的计算得出了值很小的差分信号。因此,这个差分信号可以用于编码以压缩编码量。
然而,只有差分信号的发送并不能使原始图象得到恢复。因此,将每帧中的图象编码成包括I、P和B图像的三种图像类型之一,以便压缩编码图象信号。
也就是说,例如,如图2所示,将包括帧F1至F17共17帧的图象信号组合成一个图像组(GOP),这是一个处理的单元。然后,将帧F1中的图象信号编码成I图像、将第二帧F2中的图象信号编码成B图像、和将第二帧F3中的图象信号编码成P图像。随后帧F4至F17中的图象信号被交替编码成B或P图像。
对于I图像的图象信号,相应帧的图象信号按原样发送。反之,对于P图像的图象信号,基本上,如图2所示发送此图象信号与时间上在前的I或P图像之间的差分。并且,对于B图像的图象信号,基本上,如图3所示编码该图象信号与时间上在前和在后帧的平均值之间的差分。
图4显示了编码运动图象信号的方法的原理。正如图中所示的,由于第一帧F1是作为I图像处理的,因此,它是作为发送数据F1X(图像内编码)发送到传输路径。反之,由于第二帧F2是作为B图像处理的,因此,计算出此帧与时间上在前的帧F1和时间上在后的帧F3的平均值之间的差分,并将其发送作为发送数据F2X。
事实上,对于B图像有四种处理类型。第一种处理类型是无需任何计算(SP1)发送原始帧F2中的数据作为发送数据F2X(帧内编码),这种处理类似于对于I图像的处理。第二种处理类型是计算并发送原始帧F2与时间上在后的帧F3之间的差分(SP2)(后向预测编码)。第三种处理类型是计算并发送原始帧F2与时间上在前的帧之间的差分(SP3)(前向预测编码)。此外,第四种处理类型是生成原始帧F2与时间上在前的帧F1和时间上在后的帧F3的平均值之间的差分(SP4)并将其发送作为发送数据F2X(双向预测编码)。
实际使用上述四种方法中发送最小数据量的那一种。
在发送差分数据过程中,还要发送在原始帧与要计算与原始帧之间的差分的帧中的图象(参考图象)之间的运动矢量X1(在帧F1与F2之间)(在前向预测的情况下)、或者X2(在帧F3与F2之间)(在后向预测的情况下)、或者两者(在双向预测的情况下)。
另外,对于P图像帧F3,时间上在前的帧F1用作参考图象计算帧F3与F1之间的差分信号(SP3)以及运动矢量X3,发送这两者作为发送数据F3X(前向预测编码)。或者,发送原始帧F3中的数据作为发送数据F3X(SP1)(帧内编码)。与B图象中一样,选择这两种方法中发送较小数据量的那一种方法。
图5显示了根据上述原理编码和发送运动图象信号并解码它们的设备的结构的例子。编码设备1适用于编码输入视频信号并将其发送到起传输路径作用的记录介质3。解码设备2适用于再现记录在记录介质3上的信号,并且解码和输出它们。
在编码设备1中,输入视频信号输入到预处理电路11,预处理电路11将每个图象分解成亮度信号和彩色信号(在本实施例中,是指色差信号)。A/D(模拟/数字)转换器12和13分别将模拟的亮度信号和色差信号转换成数字信号。将视频信号由A/D转换器12和13转换而成的数字信号提供到用于存储的帧存储器14。帧存储器14将亮度信号存储在亮度信号帧存储器15中,而将色差信号存储色差信号帧存储器16中。
格式转换电路17将以帧格式存储在帧存储器14中的信号转换成块格式。也就是说,如图6所示,存储在帧存储器14中的视频信号是如图6(A)所示的帧格式的,它由每行由H个点组成的V行构成。格式转换电路17将一帧的信号分割成如图6(B)所示的每片由16行构成的M片。每片被划分成M个宏块。如图6(C)所示,宏块由与16×16个像素(点)相对应的亮度信号构成,这个亮度信号进一步被分割成每块由8×8个点构成的若干块Y[1]至Y[4]。16×16点的亮度信号对应于8×8个点的Cb信号和8×8个点的Cr信号。
按照这种方式,转换成块格式的数据由格式转换电路17提供到编码器18,编码器18对其进行编码。下面参照图7进行详细描述。
编码器18通过编码获得的信号输出到传输路径作为位流。例如,该信号提供到记录电路19并记录在记录介质3上作为数字信号。
由解码设备2的再现电路30从记录介质3再现的数据提供到解码器31进行解码。下面参照图12描述解码器31的细节。
由解码器31通过解码获得的数据输入到格式转换电路32,格式转换电路32将块格式转换成帧格式。然后,以帧格式的亮度信号提供到帧存储器33的亮度信号帧存储器34进行存储。色差信号提供到色差帧存储器35进行存储。亮度和色差信号分别从亮度信号帧存储器34和色差信号帧存储器35读出,随后由D/A(数字/模拟)转换器36和37转换成模拟信号,然后将其提供到后处理电路38。后处理电路38在输出之前合成亮度和色差信号。
下一步,参照图7描述编码器18的结构。要编码的图象数据以宏块为单位输入到运动矢量检测电路50。运动矢量检测电路50按照预置的预定序列将每帧中的图象数据处理成I、P、或B图像。事先确定将每帧中的顺序输入图象处理成I、P还是B图像(例如,由帧F1至F17构成的图像组被处理成如图2和3所示的I、B、P、B、P、...、B、P)。
在要处理成I图像的帧(例如,帧F1)中的图象数据从运动矢量检测电路50传送到帧存储器51的前向原始图象单元51a进行存储。在要处理成B图像的帧(例如,帧F2)中的图象数据传送到参考原始图象单元51b进行存储。在要处理成P图像的帧(例如,帧F3)中的图象数据传送到后向原始图象单元51C进行存储。
另外,当根据下一个定时输入在要处理成B图像(帧F4)或P图像(帧F5)的帧中的图象数据时,将存储在后向原始图象单元51C中、在第一P图像(帧F3)中的图象数据传送到前向原始图象单元51a;将下一个B图像(帧F4)中的图象数据存储在参考原始图象单元51b中(此数据重写在单元51b上);将下一个P图像(帧F5)中的图象数据存储在后向原始图象单元51C中(此数据盖写在单元51c上)。依次重复这样的操作。
从帧存储器51读出存储在其中的每个图像的信号并传送到预测模式转换电路52,预测模式转换电路52进行帧预测模式处理或场预测模式处理。
进一步,在预测确定电路54的控制下,计算器53进行有关帧内预测、前向预测、后向预测或双向预测的计算。进行哪一个处理取决于预测误差信号(要处理的参考图象与预测图象之间的差分)。因此,运动矢量检测电路50生成用于该确定的预测误差信号绝对值和(或平方和)。
然后,描述预测模式转换电路52中的帧预测模式和场预测模式。
如果设置了帧预测模式,那么,预测模式转换电路52将运动矢量检测电路50供应的四个亮度块Y[1]至Y[4]按原样输出到随后的计算器53。也就是说,在这种情况下,在图8所示的每个亮度块中奇数场行的数据与偶数场行的数据是混合在一起的。在帧预测模式中,同时使用四个亮度块(宏块)进行预测,四个亮度块对应于一个运动矢量。
另一方面,在场预测模式中,预测模式转换电路52将信号输出到计算器53之前,构造从运动矢量检测电路50输入的、如图8所示构成的信号,以便在四个亮度块中,亮度块Y[1]至Y[2]由,例如,奇数场行中的点组成,而两个其它的亮度块Y[3]至Y[4]则由偶数场行中的点构成,如图9所示。在这种情况中,两个亮度块Y[1]至Y[2]对应于一个运动矢量,而两个其它亮度块Y[3]至Y[4]对应于另一个运动矢量。
运动矢量检测电路50将在帧和场预测模式中预测误差的绝对值和输出到预测模式转换电路52。预测模式转换电路52在将数据输出到计算器53之前一起比较在帧和场预测模式中预测误差的绝对值和,然后进行与其值较小的预测模式相对应的处理。
事实上,这样的处理是由运动矢量检测电路50进行的。也就是说,运动矢量检测电路50将对应于所确定模式构成的信号输出到预测模式转换电路52,而预测模式转换电路52将此信号按原样输出到随后的计算器53。
在帧预测模式中,如图8所示,其中奇数场行的数据与偶数场行的数据混合在一起的色差信号发送到计算器53。另外,在场预测模式中,如图9所示,每个色差块Cb、Cr的上半部分(四行)构成了与亮度块Y[1]、Y[2]相对应的奇数场的色差信号,而下半部分(四行)则构成了与亮度块Y[3]、Y[4]相对应的偶数场的色差信号。
除此之外,如下所示,运动矢量检测电路50还利用预测确定电路54生成选择帧内预测、前向预测、前向预测和双向预测要进行处理的那一个所需要的预测误差绝对值和。
作为帧内预测误差的绝对值和,要确定关于参考图象的宏块信号Aij的和∑Aij的绝对值|∑Aij|与宏块信号Aij的绝对值|Aij|的和∑|Aij|之间的差值。作为前向预测误差的绝对值和,要确定关于参考图象的宏块信号Aij与关于预测图象的宏块信号Bij之间的差值Aij-Bij的绝对值|Aij-Bij|的和∑|Aij-Bij|。后向预测误差和双向预测误差的绝对值和也与在前向预测中相同地得到确定(将已预测图象换成与前向预测中的那一个不同的一个)。
将这些绝对值和提供到预测确定电路54。预测确定电路54选择前向、后向和双向预测误差的绝对值和之一作为图象间预测误差的绝对值和。预定确定电路54进一步将图象间预测误差的绝对值和与图象内预测误差的绝对值和相比较,选择这两个值中较小的那一个,并选择与被选绝对值和相对应的模式作为预测模式。也就是说,如果内部预测误差的绝对值和较小,就设置图象内预测模式。如果图象间预测误差的绝对值和较小,就设置前向、后向和双向预测模式中其相应绝对值和最小的那一种模式。
这样,运动矢量检测电路50以与帧或场预测模式中预测模式转换电路52所选的模式相对应地构成信号的方式将关于参考图象的宏块信号通过预测模式转换电路52提供到计算器53。然后,运动矢量检测电路50检测预测图象和与四种预测模式中由预测确定电路54所选的那一种相对应的参考图象之间的运动矢量,并将该矢量输出到可变长度编码电路58和运动补偿电路64。如上所述,选择的这个运动矢量具有最小的相应预测误差绝对值和。
在运动矢量检测电路50正在从前向原始图象单元51a读出I图像的图象数据的同时,预测确定电路54设置帧内或场内(图象)预测模式(没有运动补偿的模式),并将计算器53的开关53d转换到触点a。因此,I图像的图象数据输入到DCT(离散余弦变换)模式转换电路55。
DCT模式转换电路55构造四种亮度块中的数据,以便将奇和偶数场行混合在一起(帧DCT模式)或将这两种类型的场行彼此分开(场DCT模式),如图10或11所示,然后,将构造的数据输出到DCT电路56。
也就是说,DCT模式转换电路55将通过奇和偶数场行混合在一起的DCT处理所得的编码效率与通过奇和偶数场行彼此分开的DCT处理所得的编码效率进行比较,以选择编码效率较高的模式。
例如,构造输入信号以便使奇和偶数场行如图10所示的那样混合在一起,并计算每对垂直相邻的奇和偶数场行的信号之间的差值和确定这些差值的绝对值的和(或平方和)。
另外,构造输入信号以便使奇数场行如图11所示的那样与偶数场行分开,并计算每对垂直相邻的奇数场行的信号之间的差值和每对垂直相邻的偶数场行的信号之间的差值,并确定这些差值的绝对值的和(或平方和)。
并且,对这两个绝对值进行比较以设置与较小值相对应的DCT模式。也就是说,如果前者较小,就设置帧DCT模式,而如果后者较小,就设置场DCT模式。
与被选DCT模式相对应构造的数据输出到DCT电路56,并将表示被选DCT模式的DCT标志(flag)输出到可变长度编码电路58和运动补偿电路64。
从预测模式转换电路52中的预测模式(图8和9)与DCT模式转换电路55中的DCT模式(图10和11)之间的比较可以清楚看出,两种模式中亮度块的数据结构基本上是相同的。
如果预测模式转换电路52选择帧预测模式(奇和偶数行混合在一起),那么,DCT模式转换电路55可能选择帧DCT模式(奇和偶数行混合在一起)。反之,如果预测模式转换电路52选择场预测模式(奇和偶数场数据彼此分开),则,DCT模式转换电路55可能就选择场DCT模式(奇和偶数场数据彼此分开)。
但是,并非总是按这种方式选择模式,而是,预测模式转换电路52确定模式以便使预测误差的绝对值和最小,而DCT模式转换电路55确定模式以便取得高编码效率。
DCT模式转换电路55输入的I图像的图象数据输出到DCT电路56,DCT电路56进行DCT处理将数据转换成DCT系数。这个DCT系数输入到量化电路57,量化电路57利用与存储在发送缓冲器59中的数据量(缓冲器中存储数据的数量)相对应的量化比例(scale)来量化DCT系数。然后,量化数据输入到可变长度编码电路58。
可变长度编码电路58在输出到发送缓冲器59之前以与量化电路57提供的量化比例(比例)相对应的方式将量化电路57提供的图象数据(在这种情况中为I图像数据)转换成诸如霍夫曼(Huffman码)那样的可变长度码。
可变长度编码电路58还输入来自量化电路57的量化比例(比例)、来自预测确定电路54的预测模式(表示图象内预测、前向预测、后向预测和双向预测中要设置的那一种预测)、以及来自预测模式转换电路52的预测标志(表示设置帧或场预测模式)、DCT模式转换电路55输出的DCT标志(表示设置帧或场DCT模式),它们都被变长编码。
发送缓冲器59临时存储输入数据,并将与存储数据的数量相对应的数据输出到量化电路57。当剩余数据的量增加到允许上限值时,发送缓冲器59利用量化控制信号增大用于量化电路57的量化比例以便降低量化数据的量。反之,当剩余数据的数量减少到允许下限值时,发送缓冲器59利用量化控制信号缩小用于量化电路57的量化比例以便增加量化数据的数量。按照这种方式可以防止发送缓冲器59上溢或下溢。
根据预定定时读出存储在发送缓冲器59中的数据并将其输出到传输路径。然后,通过例如记录电路19将数据记录在记录介质3上。
另一方面,量化电路57输出的I图像数据输入到逆量化电路60,逆量化电路60以与量化电路57提供的量化比例相对应的方式逆量化I图像数据。来自逆量化电路60的输出输入到IDCT(离散余弦逆变换)电路61进行离散余弦逆变换,并将结果通过计算器62提供到帧存储器63的前向预测图象单元63a进行存储。
在处理顺序输入帧中的图象数据成为,例如,I、B、P、B、P、B、...图像的过程中,运动矢量检测电路50处理第一输入帧中的图象数据作为I图像,并且在处理下一个输入帧中的图象作为B图像之前,处理下一个输入帧中的图象数据作为P图像。这是因为B图像涉及到后向预测,因此,在可以对B图像编码之前,必须提供P图像,即后向预测图象。
因此,在处理I图像之后,运动矢量检测电路50开始处理存储在后向原始图象单元51C中的P图像图象数据。然后,与上述的情况类似,以宏块为单位的帧间差分(预测误差)的绝对值和由运动矢量检测电路50提供到预测模式转换电路52和预测确定电路54。预测模式转换电路52和预测确定电路54根据P图像宏块中预测误差的绝对值和来设置帧/场预测模式、或者图象内、前向、后向或双向预测模式。
当设置图象内预测模式时,计算器53将开关53d转换到如上所述的触点a上。因此,这个数据,象I图像数据那样,通过DCT模式转换电路55、DCT电路56、量化电路57、可变长度编码电路58和发送缓冲器59发送到传输路径。另外,这个数据还通过逆量化电路60、IDCT电路61和计算器62发送到帧存储器63的后向预测图象单元63b进行存储。
此外,如果设置了前向预测模式,开关53d转换到触点b,读出存储在帧存储器63的前向预测图象单元63a中的图象(在这种情况下,I图像图象)数据,并由运动补偿电路64以与运动矢量检测电路50输出的运动矢量相对应的方式对其进行运动补偿。也就是说,当预测确定电路54命令设置前向预测模式时,运动补偿电路64通过将读出地址移入前向预测图象单元63a,从与运动矢量检测电路50当前输出的宏块相对应的位置读出与运动矢量相对应的数量的数据。运动补偿电路64由此生成预测图象数据。
运动补偿电路64输出的预测图象数据提供到计算器53a。计算器53a从关于预测模式转换电路52提供的参考图象的宏块数据减去运动补偿电路64提供的、与此宏块相对应的预测图象数据,输出其差分(预测误差)。这个差分数据通过DCT模式转换电路55、DCT电路56、量化电路57、可变长度编码电路58和发送缓冲器59发送到传输路径。另外,这个差分数据在输入到计算器62之前由逆量化电路60和IDCT电路61进行本地解码。
与提供到计算器53a相同的预测图象数据也发送到计算器62。计算器62将运动补偿电路64输出的预测图象数据与IDCT电路61输出的差分数据相加。因此,获得关于原始(解码)P图像的图象数据。P图像图象数据提供到帧存储器63的后向预测图象单元63b进行存储。
一旦I和P图像已经分别存储在前向和后向预测图象单元63a和63b中,运动矢量检测电路50就对B图像进行处理。预测模式转换电路52和预测确定电路54根据以宏为单位的帧间差值的绝对值和的幅度设置帧/场模式,并设置图象内预测模式、前向预测模式、后向预测模式和双向预测模式之一。
如上所述,在图象间或前向预测模式中,转开关53d分别转换到触点a或b。同时,进行与对P图像的处理相类似的处理以发送数据。
相比之下,当设置后向或双向预测模式时,开关53d分别切换到触点c或d。
在开关53d转换到触点c的后向预测模式中,读出存储在后向预测图象单元63b中的图象(在这种情况下,P图像图象)数据,并由运动补偿电路64以与运动矢量检测电路50输出的运动矢量相对应的方式对其进行运动补偿。也就是说,当预测确定电路54命令设置后向预测模式时,运动补偿电路64通过将读出地址从与运动矢量检测电路50当前输出的宏块相对应的位置移动与运动矢量相对应的量,移入后向预测图象单元63b,来读出数据。运动补偿电路64由此生成预测图象数据。
运动补偿电路64输出的预测图象数据提供到计算器53b。计算器53b从关于预测模式转换电路52提供的参考图象的宏块数据减去运动补偿电路64提供的预测图象数据,输出其差分。这个差分数据通过DCT模式转换电路55、DCT电路56、量化电路57、可变长度编码电路58和发送缓冲器59发送到传输路径。
在开关53d转换到触点d的双向预测模式中,读出存储在前向预测图象单元63a中的图象(在这种情况下,I图像图象)和存储在后向预测图象单元63b中的图象(在这种情况下,P图像图象)数据,并由运动补偿电路64以与运动矢量检测电路50输出的运动矢量相对应的方式对其进行运动补偿。
也就是说,当预测确定电路54命令设置双向预测模式时,运动补偿电路64通过将读出地址从与运动矢量检测电路50当前输出的宏块相对应的位置移动与运动矢量(在这种情况中,两个运动矢量用于前向和后向预测)相对应的量,移入前向和后向预测图象单元63a和63b,来读出数据。运动补偿电路64由此生成预测图象数据。
运动补偿电路64输出的预测图象数据提供到计算器53c。计算器53c从关于运动矢量检测电路50提供的参考图象的宏块数据减去运动补偿电路64提供的预测图象数据的平均值,输出其差分。这个差分数据通过DCT模式转换电路55、DCT电路56、量化电路57、可变长度编码电路58和发送缓冲器59发送到传输路径。
由于B图像的图象不用作关于其它图象的预测图象,因此,不将其存储在帧存储器63中。
在帧存储器63中,前向和后向预测图象单元63a和63b可以按需要进行存储体切换,切换到存储在这些单元的一个或另一个中的数据,以便将其输出给预定参考图象作为前向或后向预测图象。
尽管上面描述针对亮度块,但色差块也可以以图8至11所示的宏块为单位进行类似处理和发送。用于处理色差块的运动矢量是通过在垂直和水平两个方向将用于相应亮度块的运动矢量减少一半获得的。
图12是显示图5中的解码器31的结构的方框图。通过传输路径(记录介质3)发送的编码图象数据由接收电路(图中未示出)接收,或者由再现设备再现并临时存储在接收缓冲器81中以提供到解码电路90的可变长度解码电中82。可变长度解码电路82对接收缓冲器81提供的数据进行可变长度解码,并将获得的运动矢量、预测模式、预测标志、和DCT标志输出到运动补偿电路87。可变长度解码电路82将获得的量化比例输出到逆量化电路83,并将解码的图象数据输出到逆量化电路83。
逆量化电路83以与可变长度解码电路82提供的量化比例相对应的方式逆量化可变长度解码电路82提供的图象数据,将逆量化的数据输出到IDCT电路84。逆量化电路83输出的数据(DCT系数)由IDCT电路84进行离散余弦逆变换,并将处理的数据发送到计算器85。
如果由IDCT电路84发送到计算器85的图象数据是关于I图像的,那么,计算器85输出该图象数据并将其提供到帧存储器86的前向预测图象单元86a进行存储,以便生成以后输入到计算器85用于图象数据(P或B图像数据)的预测图象数据。另外,这个数据还输出到格式转换电路32(图5)。
如果由IDCT电路84发送的图象数据是关于P图像的,这个P图像使用前帧中的图象数据作为预测图象数据,并处在前向预测模式中,那么,读出存储在帧存储器86的前向预测图象单元86a中的、前帧中的图象数据(I图像数据),并由运动补偿电路87以与可变长度解码电路82输出的运动矢量相对应的方式对其进行运动补偿。所得的数据由计算器85相加到IDCT电路84提供的图象数据(差分数据)上,并输出由此获得的数据。将相加所得的数据,亦即,解码P图像数据提供到帧存储器86的后向预测图象单元86b进行存储,以便生成以后输入到计算器85用于图象数据(B或P图像数据)的预测图象数据。
与I图像数据一样,图象内预测模式中的数据即使用于P图像,也无需由计算器85进行任何处理地存储在后向预测图象单元86b中。
这个P图像是要在下一个B图像之后显示的,因此,此时不将它输出到格式转换电路32(如上所述,B图像之后输入的P图像是在B图像之前处理和发送的)。
如果由IDCT电路84发送的图象数据是关于B图像的,那么,根据可变长度解码电路82提供的预测模式,读出存储在帧存储器86的前向预测图象单元86a中的I图像图象数据(在前向预测模式的情况下)、存储在帧存储器86的后向预测图象单元86b中的P图像图象数据(在后向预测模式的情况下)、或这两个图象数据(在双向预测模式的情况下),然后,由运动补偿电路87以与可变长度解码电路82提供的运动矢量相对应的方式对其进行运动补偿,从而生成预测图象。但是,如果没有要求运动补偿(在图象内预测模式的情况下),则不会生成预测图象。
经过运动补偿电路87按照上述方式进行运动补偿的数据由计算器85相加到来自IDCT电路84的输出上。将这个相加的输出提供给格式转换电路32。
但是,这个相加的输出包括B图像数据,不能用于生成用于其它图象的预测图象,因此,不将其存储在帧存储器86中。
在输出B图像图象之后,读出存储在后向预测图象单元86b中的P图像图象数据,并通过运动补偿电路87将其提供到计算器85。但是,此时并不提供任何运动补偿。
尽管图示的解码器31没有含有与图5中的编码器18中预测模式转换电路52和DCT模式转换电路55相对应的电路,但是,运动补偿电路87进行与这些电路相对应的处理,亦即,进行将其中奇数场行信号与偶数场行信号相分离的结构恢复成原来的结构的处理。
此外,尽管上面的描述是关于处理亮度信号的,但对色差信号进行类似处理。然而,在这种情况下,运动矢量是通过在垂直和水平两个方向将用于亮度信号的运动矢量减少一半获得的。
图13显示了编码图象的质量。图象的质量(SNR:信噪比)是以使I和P两种具有较高质量,而使B图像具有比I和P图像低的质量的方式与图像类型相对应地加以控制的。这种方法利用了人的视觉特性,也就是说,较高的视觉质量是通过使各个图象的质量振荡起伏,而不是使所有图象的质量均衡划一得到的。根据图像类型控制图象质量是由图7中的量化电路57执行的。
图14和15显示了本发明应用其中的代码变换器101的结构;图15是图14的详细结构。代码变换器101将输入到解码设备102的编码视频***的GOP结构和位速率转换成操作人员所需的GOP结构和位速率。为了解释代码变换器101的功能,假定三个功能与代码变换器101相似的代码变换器连接在代码变换器101的前面,尽管图15并未将它们显示出来。也就是说,为了改变位流的GOP结构和位速率,第一、第二和第三代码变换器按此顺序彼此串联,图15所示的***码变换器连接在第三代码变换器之后。
在本发明的如下描述中,第一代码变换器进行的编码处理称为第一代编码处理,连接在第一代码变换器之后的第二代码变换器进行的编码处理称为第二代编码处理,连接在第二代码变换器之后的第三代码变换器进行的编码处理称为第三代编码处理,以及连接在第三代码变换器之后的***码变换器(图15所示的代码变换器101)进行的编码处理称为***编码处理或当前编码处理。
另外,在第一代编码处理期间生成的编码参数称为“第一代编码参数”,在第二代编码处理期间生成的编码参数称为“第二代编码参数”,在第三代编码处理期间生成的编码参数称为“第三代编码参数”,以及在***编码处理期间生成的编码参数称为“***编码参数”。
首先,描述提供到图15所示的代码变换器101的编码视频流ST(第三)。ST(第三)表示配置在代码变换器101之前的第三代码变换器进行第三代编码处理期间生成的第三代编码视频流。在第三代编码处理期间生成的编码视频流ST(第三)中,第三代编码处理期间生成的第三代编码参数在这个编码视频流ST(第三)的序列层、GOP层、图像层、片层和宏块层中被描述成sequence_header()函数、sequence_extension()函数、group_of_pictures_header()函数、picture_header()函数、picture_coding_extention()函数、picture_data()函数、slice()函数和macroblock()函数。
关于在第三编码处理期间生成的第三编码流中的第三编码处理期间使用的第三编码参数的说明定义在MPEG2标准中,是已知的内容。
根据本发明的代码变换器101的独特之处在于,第三编码流ST(第三)已经描述了其中的第三编码参数,以及分别在第一和第二编码处理期间生成的第一和第二代编码参数。
具体讲,第一和第二代编码参数在第三代编码视频流ST(第三)的图像层的用户数据区中被描述成历史流history_stream()。在本发明中,在第三代编码视频流ST(第三)的图像层的用户数据区中描述的历史流称为“历史信息”,在历史流中描述的编码参数称为“历史参数”。
或者,如果在第三代编码流ST(第三)中描述的第三代编码参数称为“当前编码参数”,那么,由于第一和第二代编码处理是在第三代处理之前进行的,因此,在第三代编码流ST(第三)的图像层的用户数据区中描述成历史流的编码参数也可以称为“过去编码参数”。
如上所述,第三编码流ST(第三)在其中描述了第三编码参数,以及分别在第一和第二编码处理期间生成的第一和第二代编码参数的原因是,即使通过代码变换处理不断改变编码流的GOP结构或位速率也能防止图象质量变差。
例如,设想一下图像可以在第一代编码期间被编码成P类型的,这个P图像可以在第二代编码处理期间被编码成B类型的,以便改变第一代编码流的GOP结构,并且这个B图像可以在第三代编码处理期间被编码回到P类型的,以便进一步改变第二代编码流的GOP结构。已经知道,由于根据MPEG标准的编码解码处理不是百分之一百可逆的,因此,图象质量可能随着这些处理的不断重复而变差。
在这种情况下,诸如量化比例、运动矢量和预测模式之类在第一代编码处理期间已经生成的编码参数在第三代编码处理期间被重新使用,而不是在以后的处理期间重新计算这些编码参数。诸如量化比例、运动矢量和预测模式之类在第一代编码处理期间已经生成的编码参数明显地比第三代编码处理新生成的这些参数更准确,致使尽管重复进行编码解码处理,但重新使用第一代编码参数可以减轻图象质量的变差。
下面利用,例如,图15所示的***代码变换器101进行的处理,更详细地描述上述根据本发明的处理。
解码设备102利用第三代编码参数解码来自第三代编码位流ST(第三)的编码视频,生成关于解码基带的数字视频数据。此外,解码设备102还解码在第三代编码位流ST(第三)的图像层的用户数据区中描述成历史流的第一和第二编码参数。
具体讲,如图16所示,解码设备102基本上以与图5所示的解码设备2的解码器31(图12)相同的方式构成的;它包括:接收缓冲器81,用于缓存传输的位流;可变长度解码电路112,用于对编码的位流进行可变长度解码;逆量化电路83,用于根据可变长度解码电路12提供的量化比例逆量化可变长度解码的数据;IDCT电路84,用于对逆量化的DCT系数进行离散余弦逆变换;计算器85;帧存储器86;和运动补偿电路87,用于进行运动补偿处理。
为了解码第三代编码位流ST(第三),可变长度解码电路112提取在第三代编码位流ST(第三)的图像、片、和宏块中描述的第三代编码参数。例如,可变长度解码电路112提取的第三代编码参数包括表示图像类型的picture_coding_type(图象编码类型)、表示量化比例步长的quantiser_scale_code(量化比例码)、表示预测模式的macroblock_type(宏块类型)、表示运动矢量的motion_vector(运动矢量)、表示帧预测模式或场预测模式的frame/field_motion_type(帧/场运动类型)、表示帧DCT模式或场DCT模式的dct_type等。可变长度编码电路112提取的quantiser_scale_code提供到逆量化解码电路83,诸如picture_coding_type、quantiser_scale_code、macroblock_type、motion_vector、frame/field_motion_type和dct_type之类的参数则发送到运动补偿电路87。
可变长度解码电路112从第三代编码位流ST(第三)的序列、GOP、图像、片和宏块层中不仅提取上面解码第三代编码位流ST(第三)所需要的编码参数,而且提取要发送到随后第五代代码变换器作为第三代历史信息的编码参数。当然,诸如picture_coding_type、quantiser_scale_code、macroblock_type、motion_vector、frame/field_motion_type、和dot_type之类用于第三代解码处理的第三代编码参数也包括在第三代历史信息中。要提取出来作为历史信息的编码参数是由操作人员或主计算机根据传输容量预置的。
此外,可变长度解码电路112还提取在第三代编码位流ST(第三)的图像层的用户数据区中描述的用户数据,将这个数据提供到历史解码设备104。
历史解码设备104是用于从在第三代编码位流ST(第三)的图像层中描述的用户数据提取描述成历史信息(在先前代编码参数之前的编码参数)的第一和第二代编码参数的电路。具体讲,历史解码设备104能够分析所接收用户数据的语法,以检测在用户数据中描述的唯一History_Data_Id(历史数据ID),从而提取converted_history_stream()(转换数据流)。此外,历史解码设备104还能够通过消除在预定间隔上***converted_history_stream()的1-位标记位(marker_bit)获取history_stream(),以及能够分析history_stream()的语法以获取在history_stream()中描述的第一和第二代编码参数。以后将描述历史解码设备104的细节。
历史信息多路复用设备103是用于将第一、第二和第三代编码参数多路复用在解码设备102解码的基带视频数据上以便将这些参数提供到进行***编码处理的编码设备106的电路。具体讲,历史信息多路复用设备103接收从解码设备102的计算器85输出的基带视频数据、从解码设备102的可变长度解码设备112输出的第三代编码参数、和从历史解码设备104输出的第一和第二代编码参数,将这些第一、第二和第三代编码参数多路复用在基带视频数据上。与第一、第二和第三代编码参数多路复用的基带视频数据通过传输缆线提供到历史信息分离设备105。
接下来,参照图17和18描述将第一、第二和第三代编码参数多路复用到基带视频数据上的方法。图17显示了由MPEG标准中定义的16×16个像素组成的宏块。16×16个像素的宏块由每个由8×8个像素组成的、关于亮度信号的四个子块(Y[0]、Y[1]、Y[2]和Y[3])和每个由8×8个像素组成的、关于色差信号的四个子块(Cr[0]、Cr[1]、Cb[2]和Cb[3])构成。
图18显示视频数据的某一种格式。这种格式定义在ITU(国际电信联盟)推荐标准RDT 601中,代表应用在广播业中的所谓“D1格式”的一种格式。D1格式被标准化成用于传输10-位的视频数据,因此能够使视频数据的1个像素可以用10位来表示。
由于根据MPEG标准解码的基带视频数据是由8位构成的,因此根据本发明的代码变换器使用图18所示的D1格式中10位的高八位(D9至D2),来发送根据MPEG标准解码的基带视频数据。当由此解码的8-位视频数据被写入D1格式中时,低两位(D1和D0)没有得到分配。根据本发明的代码变换器利用这个未分配区发送历史信息。
由于图18所描述的数据块用于发送每个块(Y[0]、Y[1]、Y[2]、Y[3]、Cr[0]、Cr[1]、Cb[0]和Cb[1])中的一个像素,所以,为了发送一个宏块的数据,就要发送64个如图18所示那样的数据块。对于一个宏块的视频数据,使用低两位(D1和D0)能够使1024(=16×16)个位的历史信息得到发送。因此,由于一代的历史信息由256个位构成,因此,过去四(=1024/256)代的历史信息可以叠加在一个宏块的视频数据上。在图18所示的例子中,第一、第二和第三代历史信息叠加在上面。
历史信息分离设备105是用于从以D1格式发送的数据的高八位提取基带视频数据而从低两位提取历史信息的电路。在图15所示的例子中,历史信息分离设备105从发送的数据提取基带视频数据,将这个数据提供到编码设备106,从发送的数据提取第一、第二和第三代历史信息,并将这个信息提供到编码设备106和历史编码设备107。
编码设备106将从历史信息分离设备105传输的基带视频数据编码成具有GOP结构的位流和由操作人员或主计算机指定的位速率。改变GOP结构意味着改变包含在GOP中的图像数、出现在I图像之间的P图像数和出现在I图像与P图像(或I图像)之间的B图像数。
在图15所示的例子中,由于提供的基带视频数据含有叠加在上面的第一、第二和第三代历史信息,因此,编码设备106有选择地重新使用用于***编码处理的历史信息,以便抑制源于重新编码处理的可能图象质量变差。
图19是显示配置在编码设备106中的编码设备106的具体结构的方框图。编码设备106基本上与图7所示的编码器18相类似地构造而成的;它包括运动矢量检测电路50、帧/场预测模式转换电路52、计算器53、DCT模式转换电路50、DCT电路56、量化电路57、可变长度编码电路58、发送缓冲器59、逆量化电路60、IDCT电路61、计算器62、帧存储器63和运动补偿电路64。由于每个电路的功能几乎与图7所示的编码器18的相应部分的功能相同,因此,省略对它们的描述。如下的描述集中在编码设备106与图7所示的编码器18之间的差异上。
编码设备106含有控制器70,用于控制如上所述的电路的各个部分的操作和功能。控制器70从操作人员或主计算机接收关于GOP结构的指令,以与特定GOP结构相对应的方式确定每个图像的图像类型。控制器70还从操作人员或主计算机接收关于目标位速率的信息以控制量化电路57,以便使编码设备106输出的位速率等于特定值。
此外,控制器70还接收从历史信息分离设备105输出的几代历史信息,以重新使用该信息编码参考图像。下面对此作详细描述。
首先,控制器70判断根据操作人员指定的GOP结构确定的参考图像的图像类型是否与包含在历史信息中的图像类型相同。也就是说,判断参考图像是否已经被编码成与特定图像类型相同的图像类型。
为了能更好地理解,现在说明图15所示的例子。控制器70判断指定给参考图像用于***编码处理的图像类型是否与用于第一、第二、或第三代编码处理的参考图像的图像类型相同。
如果指定给参考图像用于***编码处理的图像类型不同于用于过去编码处理的所有图像类型,那么,控制器70进行“一般编码处理”。也就是说,在这种情况下,这种参考图像在第一、第二或第三代编码处理期间还没有被编码成指定用于***编码处理的图像类型。另一方面,如果指定给参考图像用于***编码处理的图像类型与用于过去编码处理的图像之一相同,那么,控制器70进行“参数重新使用编码处理”。也就是说,在这种情况下,这种参考图像在第一、第二或第三代编码处理期间已经被编码成指定用于***编码处理的图像类型。
首先描述控制器70的一般编码处理。
为了确定选择帧预测模式还是选择场预测模式,运动矢量检测电路50检测在帧预测模式中和在场预测模式中的预测误差,并将预测误差之间的差值提供到控制器70。控制器70一起比较这些预测误差值以选择其值较小的预测模式。预测模式转换电路52根据控制器70选择的预测模式来处理信号,将处理后的信号提供到计算器53。
具体讲,如果已经选择了帧预测模式,那么,预测模式转换电路52处理输入亮度信号,以便使信号中按原样输出到计算器53,而同时处理输入色差信号,以便使信号具有混合在一起的奇和偶数场行,如参照图8所描述的。另一方面,如果已经选择了场预测模式,那么,预测模式转换电路52以使亮度块Y[1]和Y[2]由奇数场行构成,而亮度块Y[3]和Y[4]由偶数场行构成的方式处理亮度信号,如参照图9所描述的。预测模式转换电路52也以使上四行由奇数场行构成,而下四行由偶数场行构成的方式处理色差信号,也亦如参照图9所描述的。
此外,为了选择图象内预测模式、前向预测模式、后向预测模式和双向预测模式之一,运动矢量检测电路50生成在这些预测模式下的预测误差并将其提供到控制器70。控制器70选择前向、后向和双向预测误差中最小的一个作为图象间预测预测误差。并且,它还将这个图象间预测预测误差与图象内预测误差相比较选择较小者,以便选择与被选预测误差相对应的模式作为预测模式。也就是说,如果图象内预测误差较小,就设置图象内预测模式。如果图象间预测预测误差较小,就设置前向、后向和双向预测模式具有最小预测误差的那一个。控制器70以与被选预测模式相对应的方式控制计算器50和运动补偿电路64。
为了选择帧DCT模式或者场DCT模式,DCT模式转换电路55将四个亮度块中的数据转换成奇和偶数场行彼此混合在一起的信号形式(帧DCT模式),而同时将同一数据转换成这两种类型的场行彼此分开的信号形式(场DCT模式)。然后,DCT模式转换电路55将这些信号发送到DCT电路56。DCT电路56用混合在其中的奇和偶数场计算DCT处理的编码效率,用彼此分开的这两种类型的场计算DCT处理的编码效率,并将结果发送到控制器70。控制器70比较从DCT电路56发送的编码效率,选择这两种DCT模式中具有较高编码效率的那一种,以便控制DCT模式转换电路55进入被选DCT模式。
控制器70接收操作人员或主计算机提供的目标位速率和表示缓存在发送缓冲器59中的数据位的总量的信号,亦即,表示剩余缓冲区的总量的信号,并根据目标位速率和剩余缓冲区的总量,生成用于控制量化电路57的量化步长的feedback_q_scale_code(反馈量化比例码)。feedback_q_scale_code是根据发送缓冲器59中剩余的缓冲区的总量生成的控制信号,用于防止其上溢或下溢。这个控制信号也将从发送缓冲器59输出的位流的位速率控制在目标值上。
具体讲,例如,如果缓存在发送缓冲器59中的数据位的总量减少了,那么,就降低量化步长以增加为要编码的下一个图像生成的数据位的总量。另一方面,如果缓存在发送缓冲器59中的数据位的总量增加了,那么,就增大量化步长以降低为要编码的下一个图像生成的数据位的总量。量化步长与feedback_q_scale_code成比例,随着feedback_q_scale_code的增大和减小而增大和减小。
下面解释作为代码变换器101特征的参数重新使用编码处理。为了更易于理解这个处理,假定参考图像在第一代编码处理期间已经被编码成P图像,在第二代编码处理期间已经被编码成I图像,和在第三代编码处理期间已经被编码成B图像,使得在***编码处理期间必须将其编码成P图像。
在这种情况中,由于参考图像在第一代编码处理期间已经被编码成与指定为***图像类型的图像类型相同的图像类型(P图像),因此,控制器70无需从传输的视频数据中生成新的编码数据,就利用第一代编码参数进行编码处理。重新用于***编码处理的编码参数通常包括表示量化比例步长的quantiser_scale_code、表示预测方向模式的macroblock_type、表示运动矢量的motion_vector、表示帧或场预测模式的frame/field_motion_type、和表示帧或场DCT模式的dct_type。
控制器70并不重新使用所有作为历史信息发送的编码参数,而是重新使用这些如上所述假定需要重新使用的编码参数,而同时新生成那些假定不需要重新使用的编码参数。
下面将焦点集中在与上述一般编码处理的差异上来解释这个参数重新使用编码处理。
运动矢量检测电路50在上述的一般编码处理期间检测参考图像的运动矢量,但在这个参数重新使用编码处理期间,则不进行检测处理,只重新使用作为第一代历史信息提供的运动矢量motion_vetor。下面说明其理由。
通过解码第三代编码流获得的基带视频数据已经经过了至少三次解码编码处理,很明显其图象质量差于原始视频数据。不能从图象质量变差了的视频数据检测出精确的运动矢量。也就是说,作为第一代历史信息提供的运动矢量肯定比在***编码处理期间检测到的运动矢量更精确。亦即,通过重新使用作为第一代编码参数提供的运动矢量,就可以防止***编码处理降低图象质量。控制器70将作为第一代历史信息提供的运动矢量motion_vector发送到运动补偿电路64和可变长度编码电路58作为在***编码处理期间编码参考图像的运动矢量信息。
此外,为了确定选择帧还是场预测模式,运动矢量检测电路50检测在帧预测模式和在场预测模式下的预测误差。但是,在这个参数重新使用编码处理过程中,运动矢量检测电路50无需检测在帧预测模式下和在场预测模式下的预测误差,只重新使用作为第一代历史信息提供的、表示帧或场预测模式的frame/field_motion_type。这是因为在第一代中检测的每种预测模式的预测误差要比在***编码处理期间检测的预测误差更准确,和因为根据更准确预测误差确定的预测模式能够进行更佳的编码处理。
具体讲,控制器70将与作为第一代历史信息发送的frame/field_motion_type相对应的控制信号传输给预测模式转换电路52,预测模式转换电路52进行与重新使用的frame/field_motion_type相对应的信号化处理。
此外,在一般编码处理期间,运动矢量检测电路50计算每种预测方向模式中的预测误差,以便确定选择图象内预测模式、前向预测模式、后向预测模式、还是双向预测模式(下文称这种预测模式为“预测方向模式”)。而在这个参数重新使用编码处理期间,运动矢量检测电路50无需计算在每种预测方向模式中的预测误差,只根据作为第一代历史信息提供的macroblock_type确定预测方向模式。这是因为在第一代编码处理期间每一种预测方向模式中的预测误差要比在***编码处理期间每一种预测方向模式中的预测误差更准确,和因为根据更准确预测误差确定的预测方向模式能够进行更有效编码处理。具体讲,控制器70选择由包含在第一代历史信息中的macroblock_type所表示的预测方向模式,然后以与被选预测方向模式相对应的方式控制计算器53和运动补偿电路64。
在一般编码处理期间,DCT模式转换电路55将以帧和场DCT模式信号形式的两种转换信号传输给DCT电路56,以便比较在帧和场DCT模式下的编码效率。而在这个参数重新使用编码处理期间,DCT模式转换电路55无需生成以帧和场DCT模式信号形式的两种转换信号,只进行与包含在第一代历史信息中的dct_type所表示的DCT模式相对应的处理。明显地说,控制器70重新使用包含在第一代历史信息中的dct_type控制DCT模式转换电路55,以便进行与dct_type所表示的DCT模式相对应的信号发送处理。
在一般编码处理期间,控制器70根据操作人员指定的目标位速率和剩余发送缓冲区的总量控制用于量化电路57的量化步长。在这个重数重新使用编码处理期间,控制器70根据目标位速率、剩余发送缓冲区的总量和包含在历史信息中的过去量化比例控制用于量化电路57的量化步长。在如下的描述中,将包含在历史信息中的过去量化比例描述成history_q_scale_code(历史量化比例码)。在如后所述的历史流中,这个量化比例还被描述成quantiser_scale_code。
首先,如同在一般编码处理中一样,控制器70生成当前量化比例feedback_q_scale_code。feedback_q_scale_code是根据发送缓冲器59中剩余的缓冲区的总量确定的以防止其上溢和下溢的数值。随后,控制器70将包含在第一代历史流中的过去量化比例history_q_scale_code与当前量化比例feedback_q_scale_code相比较以确定较大者。较大的量化比例意味着较大的量化步长。如果当前量化比例feedback_q_scale_code大于过去量化比例history_q_scalele_code,那么,控制器70将当前量化比例feed_q_scale_code提供到量化电路57。另一方面,如果过去量化比例history_q_scale_code大于当前量化比例feedback_q_scale_code,那么,控制器70就将过去量化比例history_q_scale_code提供到量化电路57。
也就是说,控制器70从包含在历史信息中的多个过去量化比例和根据剩余发送缓冲区的总量计算的当前量化比例中选择出最大量化比例代码。换言之,控制器70控制量化电路57利用用于过去(第一、第二和第三代)编码处理和用于当前(***)编码处理的量化步长中最大的那一个进行量化。其理由描述如下。
例如,假定在第三代编码处理期间生成的流具有4Mbps的位速率和为进行此***编码处理的编码设备106设置15Mbps的目标位速率。尽管目标位速率较高,但适当的结果不能简单地通过降低量化步长来获得。如果在当前编码处理期间利用降低了的量化步长进行编码,那么在过去编码处理期间利用大的量化步长编码的图像的质量就得不到改善。也就是说,利用比用于过去编码处理的量化步长小的量化步长编码只简单地增加了数据位的总量,而没有提高图象质量。因此,对于量化来说,通过使用用于过去(第一、第二和第三代)编码处理和用于当前(***)编码处理的量化步长中最大的那一个才可能取得最有效编码处理。
下面进一步讨论图15所示的历史解码设备104和历史编码设备107。尽管在图15中,历史解码设备104被显示成不同于解码设备102的电路或设备,但这仅仅是历史解码设备104所显示的方框不同于解码设备102所显示的方框而已,这样做是为了能以易于理解的方式描述历史解码设备104的功能和结构。由历史解码设备104进行的处理实际上是由解码设备102中的可变长度解码电路和解码控制电路(解码控制器)实现的。类似地,尽管在图15中,历史编码设备107被显示成不同于编码设备106的电路或设备,但这仅仅是历史编码设备107所显示的方框不同于编码设备106所显示的方框而已,这样做是为了能以易于理解的方式描述历史编码设备107。由历史编码设备107进行的处理实际上是由编码设备106中的可变长度编码电路和编码控制电路(编码控制器)实现的。
如图15所示,历史解码设备104由用于解码解码设备102提供的用户数据的用户数据解码器201、用于转换来自用户数据解码器201的输出的转换器和用于再现从转换器202输出的历史信息的历史VLD 203构成。
另外,历史编码设备107由用于格式化历史信息分离设备105提供的三代编码参数的历史VLC 211、用于转换来自历史VLC 211的输出的转换器212和用于将转换器212的输出格式化成用户数据格式的用户数据格式化器213构成。
用户数据解码器201解码解码设备102提供的用户数据,将解码的数据输出到转换器202。以后参照图51进行详细描述。用户数据(user_data())包括user_data_start_code(用户数据起始码)和user_data,MPEG校准禁止user_data包含连续23位的“0”(这与start_code相同)。这是为了防止此数据被错误地检测为start_code。历史信息(history_stream())在用户数据区中描述(根据MPEG标准,作为一种类型的user_data),并且可以包含这样连续23位或更多位的“0”,使得必须根据预定定时将“1”***这个信息中使其转换成converted_history_stream()(参见如后所示的图38),以防止23位或更多位“0”的出现。这种转换是由历史编码设备107的转换器212实现的。历史解码设备104的转换器202进行相对于转换器212的逆转换处理(移去为防止23位或更多位“0”的出现而***的“1”)。
历史VLD 203从转换器202的输出生成历史信息(在这种情况下,第一和第二代编码参数),将其输出到历史信息多路复用设备103。
另一方面,在历史编码设备107中,历史VLC 211将历史信息分离设备105提供的三代(第一、第二和第三代)编码参数转换成历史信息格式。这种格式包括固定长度型(参见如后所示的图40至46),和可变长度型(参见图47和随后的图)。以后再作详细描述。
历史VLC 211格式化的历史信息由转换器212转换成converted_history_stream()。这是为了阻止start_code被错误地从上述的user_data()中检测到。也就是说,尽管历史信息包含了连续23位或更多位的“0”,但由于这样连续23位或更多位的“0”不能排列在user_data内,因此转换器212转换该数据(按照预定定时将“1”***数据中)以便不违反禁条。
用户数据格式化器213根据如后所示的图38将History_Data_ID附加到转换器212提供的converted_history_stream(),并进一步将user_data_stream_code附加到上面,按照MPEG标准生成user_data,以便使这个数据可以***视频流中,然后将其输出到解码设备106。
图20表示历史VLC 211的结构的例子。编码参数(当前发送作为历史信息)(项数据)和标识这些编码参数要排列其中的流的信息(例如,语法名(例如,如后所述的sequence_header的名字))(项号)从历史信息分离设备105提供到历史VLC 211的码字转换器301和码长转换器305。码字转换器301将输入编码参数转换成与所表示的语法相对应的码字,并将所得的码字输出到桶形移位器(barrel shifter)302。桶形移位器302将码字转换器301输入的码字移位与地址生成电路306提供的移位量相对应的数量,并按字节将移位码字输出到开关303。由地址生成电路306输出的位选择信号切换的开关303在数量上与所需要的位相同,并将桶形移位器302提供的码字发送到RAM304进行存储。所需要的写地址由地址生成电路306指定。另外,当地址生成电路306指定读出地址时,读出存储在RAM 304中的相应数据(码字)并将其提供到随后的转换器212,然而通过开关303再次将其发送到RAM 304进行存储。
码长转换器305根据输入语法和这些参数确定输入编码参数的码长,并将其输出到地址生成电路306。地址生成电路306根据输入码长生成上述的移位量、位选择信号和写或读出地址,分别将它们提供到桶形移位器302、开关303和RAM 304。
如上所述,历史VLC 211被构造成在输出之前对输入编码参数进行可变长度编码的所谓可变长度编码器。
图21表示用于解码格式化成如上所述历史信息的数据的历史VLD 203的结构的例子。在历史VLD 203中,转换器202发送的编码参数数据提供到RAM 311并且存储在其中。所需写地址由地址生成电路315提供。地址生成电路315还按照预定定时生成读出地址,将这些读出地址提供到RAM 311。RAM 311读出存储在读出地址的数据,将其输出到桶形移位器312。桶形移位器312将输入数据移位与地址生成电路315提供的移位量相对应的数量,并将移位数据输出到码长逆转换器313和码字逆转换器314。
还要把关于编码参数由转换器202排列其中的流的语法名(项号)提供给码长逆转换器313。根据这个语法,码长逆转换器313从输入数据(码字)确定码长,将其输出到地址生成电路315。
另外,码字逆转换器314根据该语法解码桶形移位器312提供的数据,并将解码数据输出到历史信息多路复用设备103。
码字逆转换器314也提取确定什么码字包含在数据中所需要的信息(亦即,确定如何划分码字所需要的信息),并将其输出到地址生成电路315。根据这个信息以及码长逆转换器313输入的码长,地址生成电路315生成写和读出地址,将它们输出到RAM 311,并生成移位量,将它输出到桶形移位器312。
图22表示转换器212的结构的例子。在这个例子中,8-位数据从位于历史VLC 211与转换器212之间的缓冲存储器320在控制器326输出的读出地址上读出,然后提供到用于驻留的D触发器(D-FF)321。从D触发器321读出的数据提供到填充电路323和用于保持的8-位D触发器322。从D触发器322读出的8-位数据和从D触发器321读出的8-位数据合并成16位并行数据,然后将其发送到填充电路323。
填充电路323将码“1”***数据中由控制器326提供的信号所指示的并指示填充位置(填充)的位置上,并将填充数据提供到桶形移位器324作为17-位数据。
桶形移位器324根据控制器326提供的、表示移位量的信号(移位)移位输入数据,并提取8-位数据,将其输出到8-位D触发器325。然后,从D触发器325读出保存在其中的数据,并通过缓冲存储器327将其发送到随后的用户数据格式化器213。同时,控制器326生成带有输出数据的写地址,将它们输出到缓冲存储器327,缓冲存储器327是置于转换器212与用户数据格式化器213之间的。
图23表示填充电路323的结构的例子。由D触发器321和322输入的16-位数据输出到开关331-16至331-1的各个触点a。开关331-i(i=0至15)的触点c用有关在MSB(最高有效位)侧(图的上方)与之相邻的开关的数据来提供。例如,开关331-12的触点c用提供给在MSB侧与之相邻的开关331-13的触点a的从LSB(最低有效位)数第十三数据侧来提供,开关331-13的触点c用提供给在MSB侧与之相邻的开关331-14的触点a的从LSB侧数第十四数据来提供。
但是,对应于LSB的在开关331-1之下的开关331-0的触点a是断开的。对应于MSB的开关331-16的触点c也是断开的,因为再也没有更高的转开关了。
开关331-0至331-16的各个触点b用数据“1”来提供。
根据控制器326提供的并表示数据“1”***位置的信号填充位置,解码器332将开关331-0至331-16之一转换到触点b方,从而将LSB侧开关切换换到触点c方,而同时将MSB侧开关转换到触点a侧。
图23表示数据“1”***从LSB侧数第十三开关中的例子。因此,在这种情况下,开关331-0至331-12每一个都转换到触点c方,开关331-13切换到触点b方,和开关331-14至331-16每一个都切换到触点a侧。
借助于上面结构,图22中的转换器212将22位码转换成23位输出。
图24表示关于来自图22所示的转换器的各个单元的输出数据的时序。当转换器212的控制器326以字节为单位生成与时钟同步的读出地址时(图24(A)),以字节为单位从缓冲存储器320读出相应的数据,并将其保存在D触发器321中。从D触发器321读出的数据(图24(B))提供到填充电路323和用于保持的D触发器322。进一步读出保存在D触发器322中的数据(图24(C))并发送到填充电路323。
因此,根据用于读出地址A1的定时,第一个1-字节数据D0输入到填充电路323(图24(D)),根据用于下一个读出地址A2的定时,由1-字节数据D0和1-字节数据D1组成的2-字节数据输入到填充电路323,根据用于读出地址A3的定时,由数据D1和数据D2组成的2-字节数据输入到填充电路323。
由控制器326提供的、表示数据“1”***的位置的信号填充位置(图24(E))提供到填充电路323。填充电路323的解码器332将开关331-16至331-0对应于这个信号填充位置的那一个开关切换到触点b,从而将LSB侧开关切换到触点c方,而同时将MSB侧开关切换到触点a方。因此,数据“1”被***,致使填充电路323输出表示数据“1”已经插在信号填充位置所指示的位置上的数据(图24(F))。
桶形移位器324将输入数据桶形移位一个由控制器326提供的信号移位(图24(G))所表示的数量,并输出移位后的数据(图24(H))。这个输出进一步保存在D触发器325中,然后输出到随后的电路(图24(I))。
D触发器325输出的数据含有在22-位数据之后***的数据“1”。因此,即使在这些数据之间所有的位都是0,在数据“1”和下一个数据“1”之间也只有22个连续0。
图25表示转换器202的结构的例子。由D触发器341直到控制器346构成的转换器202的结构基本上与由D触发器321直到控制器326构成的转换器212的结构相同,不同之处在于删除电路343置于转换器202之中,来替换转换器212中的填充电路323。其它部分的结构与图22所示的转换器212的相应结构相同。
在转换器202中,删除电路343根据控制器346输出的、表示某一位(由图22所示的填充电路323***的数据“1”)的位置的信号删除位置删除该位。
其他操作与图22所示的转换器212相同。
图26是删除电路343的结构的例子。在这个例子中,由D触发器341和342输入的16位的LSB侧15位每一个都提供到开关351-0至351-14的相对应那一个的触点a。每个开关的触点b用比提供到触点a的位更接近MSB一位的位来提供。解码器352删除由控制器346提供的信号删除位置所指示的位,并输出剩余的15位。
图26表示了如何删除从LSB开始数的第13位。在这种情况中,开关351-0至351-11每一个都切换到触点a方,并选择直到从LSB开始数的第12位的12个位,按原样输出它们。另外,开关351-12至351-14每一个都转换到触点b方,从而选择第14至第16数据,并输出它们作为第13至第15数据。
由于D触发器322和321提供的16位输入到图22所示的转换器212的填充电路323和由于D触发器342和341提供的16位也输入到图25所示的转换器202的删除电路343,因此,对图23所示的填充电路323的输入和对图26所示的删除电路343的输入每一个都包含了16个位。在图22中,填充电路323输出的17位由桶形移位器324进行桶形移位,最后选择并输出了,例如,8位。类似地,在图25所示的转换器202中,删除电路343输出的15位由桶形移位器344桶形移位一预定数量,获得8位数据。
图27表示了转换器212的结构的另一个例子。在这个结构例子中,计数器361计数输入数据中连续0的个数,并将计数结果输出到控制器326。当计数器361计数到,例如,22个连续0位时,控制器326就将信号填充位置输出到填充电路323。同时,控制器326还复位计数器361,使它重新计数连续0位。
其它部分的结构和其它操作都与图22所示的相同。
图28表示了转换器202的结构的另一个例子。在这个结构例子中,计数器371计数输入数据中连续0的个数,并将计数结果输出到控制器346。当计数器371中的计数值达到22时,控制器346就将信号删除位置输出到删除电路343。并且还复位计数器371使它重新计数连续0位。其它部分的结构与图25所示的相同。
这样,在这种结构例子中,根据预定模式(连续数据“0”的个数)***或删除作为标记位的数据“1”。
图27和28所示的结构能够比图22和25所示的结构进行更有效的处理。但是,转换之后的码长依赖于源历史信息。
图29表示用户数据格式化器213的结构的例子。在这个例子中,当控制器383将读出地址输出到位于转换器212与用户数据格式器213之间的缓冲存储器(图中未示出)时,从缓冲存储器读出的数据提供到用户数据格式化器213的开关382的触点a方。ROM 381存储诸如用户数据开始码和数据ID之类生成user_data()所需要的数据。控制器313根据预定定时将开关382转换到触点a方或触点b方,适当地选择并输出存储在ROM 381的数据或转换器212提供的数据。因此,以user_data()格式的数据输出到编码设备106。
尽管图中没有显示出来,但用户数据解码器201可以通过经开关输出输入数据以删除已经从图29所示的ROM 381读出的***数据来实现。
图30显示了若干个代码变换器101-1至101-N如何串联起来用于,例如,视频编辑工作室的。每个代码变换器101-i(i=1至N)的历史信息多路复用设备103-i将已经使用过的最近编码参数写入区域中记录着最早编码参数的、用于上述编码参数的那个分区。那么,基带图象数据已经记录在紧靠与同一宏块(图18)相对应的四代编码参数(代历史信息)的地方。
在每个编码设备106-i(图19)的编码设备106-i中,可变长度编码电路58根据历史信息分离设备105-i发送的当前编码参数来编码量化电路57提供的视频数据。由此生成的位流(例如,picture_header())含有多路复用在其中的当前编码参数。
可变长度编码电路58还将历史编码设备107-i提供的用户数据(包括代历史信息)多路复用到位流中输出(数据被多路复用到位流中,而不是如图18所示的那样嵌入其中)。编码设备106-i输出的位流通过SDTI(串行数据传输接口)输入到随后的代码变换器101-(i+1)。
代码变换器101-i和101-(i+1)每一个都如图15所示的那样构成。因此,这些代码变换器所进行的处理都与参照图15所述的处理相同。
对于利用编码参数的历史进行实际编码来说,如果当前I图像要改变成P或B类型,那么就要检查编码参数的过去历史以搜索过去P或B图像。如果这样的历史存在,那么,诸如其运动矢量之类的参数就用来改变图像类型。反之,如果没有找到这样的历史,那么放弃没有运动检测就改变图像类型。当然,即使没有找到这样的历史,也可以通过运动检测改变图像类型。
尽管在图18所示的格式中,四代编码参数嵌在数据中,但关于I、P和B图像类型的每一种的参数也可以嵌入其中。图31是在这种情况下一种格式的例子。在这个例子中,当在改变图像类型的同时同一宏块已经得到编码时,对于每种图像类型(图像历史信息)记录一代编码参数。因此,图16所示的解码设备102和图19所示的编码设备106输入和输出与I、P和B图像相对应的一代编码参数,而不是关于当前(最晚)、第三、第二和第一代的编码参数。
另外,在这种情况下,没有使用空区Cb[1][x]和Cr[1][x],使得本发明可以应用于不受区域]Cb[1][x]和Cr[1][x]影响的4∶2∶0格式的图象。
在这种情况中,解码设备102在解码的同时获得编码参数,确定图像类型、将编码参数写入图象信号与图像类型相对应的部分(多路复用),并将此信号输出到历史信息分离设备105。历史信息分离设备105能够从信号中分离出编码参数,考虑到编码所需要的图像类型,一边改变图像类型一边进行编码,并输入过去编码参数。
下面参照图32所示流程图描述使每个代码变换器101确定可能目标图像类型的处理过程。由代码变换器101进行的图像类型改变必须无需运动检测就能实现,因为它使用了过去运动矢量。另外,如下所述的处理是由历史信息分离设备105进行的。
在步骤S1,对于每种图像类型将一代编码参数(图像历史信息)输入到历史信息分离设备105。
在步骤S2,历史信息分离设备105判断图像历史信息是否包含用于改变到B图像的编码参数。如果历史信息分离设备105确定图像历史信息包含用于改变到B图像的编码参数,那么,处理过程转到步骤S3。
在步骤S3,历史信息分离设备105判断图像历史信息是否包含用于改变到P图像的编码参数。如果历史信息分离设备105确定图像历史信息包含用于改变到P图像的编码参数,那么,处理过程转到步骤S4。
在步骤S4,历史信息分离设备105判断可能目标图像类型是I、P、还是B图像。
如果在步骤S3确定图像历史信息不含用于改变到P图像的编码参数,处理过程前进到步骤S5。
在步骤S5,历史信息分离设备105判断可能目标图像类型是I还是B图像。此外,历史信息分离设备105还确定可以使用特殊处理(只使用包含在B图像历史信息中的前向预测矢量而没有后向预测矢量)以一种伪方式改变到P图像。
如果在步骤S2确定图像历史信息不包含用于改变到B图像的编码参数,那么处理过程前进到步骤S6。
在步骤S6,历史信息分离设备105判断图像历史信息是否包含用于改变到P图像的编码参数。如果历史信息分离设备105确定图像历史信息包含用于改变到P图像的编码参数,那么,处理过程转到步骤S7。
在步骤S7,历史信息分离设备105判断可能目标图像类型是I还是P图像。此外,历史信息分离设备105还确定可以使用特殊处理(只使用包含在P图像历史信息中的前向预测矢量)以一种伪方式改变到B图像。
如果在步骤S6确定图像历史信息不包含用于改变到P图像的编码参数,那么,处理过程前进到步骤S8。在步骤S8,历史信息分离设备105确定唯一的可能目标图像类型是I图像,因为不存在运动矢量(由于这是I图像,它只能改变到I图像)。
经过在步骤S4、S5、S7和S8的处理之后,在步骤S9,历史信息分离设备105将可能目标图像类型显示在显示设备(图中未示出)上告知用户。
图33显示了图像类型改变的例子。为了改变图像类型,需要改变构成GOP的帧数。也就是说,在这种情况下,由N=15(GOP帧数N=15)和M=3(在GOP内I或P图像的出现循环M=3)的帧组成的4-Mbps长GOP(第一代)转换成由N=1和M=1的帧组成的50-Mbps短GOP(第二代),它又转换回到由N=15和M=3的帧组成的4-Mbps长GOP(第三代)。图中的虚线表示GOP的边界。
如果图像类型从第一代改变到第二代,那么,正如从上述可能目标图像类型确定过程所明显看到的那样,所有的帧都可以具有改变到I图像的图像类型。在这个图像类型改变过程中,将运动图象(第0代)转换到第一代所计算的所有运动矢量都存储(保持)在图像历史信息中。因此,如果再次进行到长GOP的转换(图像类型从第二代改变到第三代),那么,由于存储了关于每种图像类型已经用于从第0代转换到第一代的运动矢量,因此,这些矢量可以重新用来再次进行到长GOP的转换,而抑制图象质量变差。
图34显示了图像类型改变的另一个例子。在这种情况中,N=14和M=2的4-Mbps长GOP(第一代)转换成N=2和M=2的18-Mbps短GOP(第二代),它又转换成N=1和M=1,亦即具有一帧的50-Mbps短GOP(第三代),它又进一步转换成具有N帧1-Mbps随机GOP(***)。
在这种情况中,存储关于每种图像类型用于从第0代转换到第一代的运动矢量直到从第三代转换到***为止。因此,正如图34所示的,尽管图像类型发生了复杂改变,但可以通过重新使用存储的编码参数,使图象质量变差降低到最低程度。并且,通过有效地使用包含在所存编码参数中的量化比例,可以在抑制图象质量变差的同时实现编码。
现在参照图35描述量化比例的重新使用。图35显示了预定帧从第一代到***不变地转换成I图像,而只有位速率改变成4、18或50Mbps。
例如,在从第一代(4Mbps)转换到第二代(18Mbps)的过程中。即使根据位速率的增加使用了较细量化比例进行编码,但图象质量并没有得到改善。这是因为以前用较粗量化比例量化的数据不能得到恢复。因此,如图35所示,根据位速率的增加使用较细量化比例进行编码仅仅导致信息量的增加,而并没有改善图象质量。因此,通过提供与保持以前最粗(最大)量化比例相同的控制能够进行更有效编码。
在从第三代改变到***的过程中,位速率从50Mbps减少到4Mbps,但在这种情况下,也保持了以前最粗(最大)量化比例。
如上所述,在改变位速率过程中,使用量化比例的过去历史进行编码是非常有效的。
下面参照图36所示的流程图解释这种量化控制过程。在步骤S11,历史信息分离设备105判断输入图像历史信息是否包含关于要转换的图像类型的编码参数。如果历史信息分离设备105确定输入图像历史信息包含被转换图像类型的编码参数,那么处理过程转到步骤S12。
在步骤S12,历史信息分离设备105从图像历史信息中的相关编码参数提取history_q_scale_code。
在步骤S13,历史信息分离设备105根据从发送缓冲器59反馈到量化电路57的剩余缓冲区的总量计算feedback_q_scale_code。
在步骤S14,历史信息分离设备105判断history_q_scale_code是否比feedback_q_scale_code大(粗)。如果历史信息分离设备105确定history_q_scale_code大于feedback_q_scale_code,那么处理过程前进到步骤S15。
在步骤S15,历史信息分离设备将history_q_scale_code输出到量化电路57作为量化比例。量化电路57利用history_q_scale_code进行量化。
在步骤S16,判断包含在帧中的所有宏块是否都已经得到量化。如果确定所有宏块还没有全部得到量化,处理过程返回到步骤S12,重复从步骤S12到步骤S16的处理直到所有宏块都已得到量化为止。
如果在步骤S14确定history_q_scale_code大于(细于)feedback_q_scale_code,那么,处理过程前进到步骤S17。
在步骤S17,历史信息分离设备105将feedback_q_scale_code输出到量化电路57作为量化比例。量化电路57利用feedback_q_scale_code进行量化。
如果在步骤S11确定历史信息不包含关于被转换图像类型的编码参数,那么,处理过程前进到步骤S18。
在步骤S18,历史信息分离设备105根据从发送缓冲器59反馈到量化电路57的剩余缓冲区的总量计算feedback_q_scale_code。
在步骤S19,量化电路57利用feedback_q_scale_code进行量化。
在步骤S20,判断包含在帧中的所有宏块是否都已经得到量化。如果确定并不是所有包含在帧中的宏块都已经得到量化,那么处理过程返回步骤S18,重复从步骤S18到步骤S20的处理直到所有宏块都已经得到量化为止。
在根据本实施例的代码变换器101的内部,如上所述,解码侧与编码侧是弱耦合在一起的,和编码数据是在发送之前被多路复用在图象数据中的。但是,如图37所示,解码设备102与编码设备106可以直接连接(强耦合)在一起。
如图15所示的代码变换器101在发送之前将过去编码参数多路复用到基带视频数据中,以便把关于第一、第二和第三代的过去编码参数提供给编码设备106。但是,本发明的精髓所在不是将过去编码参数多路复用到基带视频数据中,而是与用于基带视频数据的传输路径不同的传输路径(例如,数据传送总线)可以用于发送过去编码参数,如图37所示。
也就是说,图37所示的解码设备102、历史解码设备104、编码设备106和历史编码设备107具有与图15所示的解码设备102、历史解码设备104、编码设备106和历史编码设备107完全相同的功能和结构。
解码设备102的可变长度解码电路112从第三代编码流st(第三)的序列层、GOP层、图像层、片层和宏块层提取第三代编码参数,并将这些参数提供到用于历史编码设备107和解码设备106的控制器70。历史编码设备107将接收的第三代编码参数转换成converted_history_stream(),以便参数可以在图像层的用户数据区中得到描述,并将converted_history_stream()提供到编码设备106的可变长度编码电路58作为用户数据。
此外,可变长度解码设备112从第三代编码流的图像层的用户数据区提取包含第一和第二代编码参数的用户数据user_data,并将这个数据提供到历史解码设备104和编码设备106的可变长度编码设备58。历史解码设备104从用户数据区中描述成converted_history_stream()的历史流提取第一和第二代编码参数,并将这些参数提供到用于编码设备106的控制器70。
用于编码设备106的控制器70根据从历史解码设备104接收的第一和第二代编码参数和从解码设备102接收的第三代编码参数控制编码设备106的编码过程。
编码设备106的可变长度编码电路58从解码设备102接收包含第一和第二代编码参数的用户数据user_data,而从历史编码设备107接收包含第三代编码参数的用户数据user_data,并在***编码流的图像层的用户数据区中将这些用户参数描述成历史信息。
图38表示了应用在解码MPEG视频流中的语法。解码器根据这个语法解码MPEG位流,从位流中提取若干个有意义的数据元素。在图示的语法中,如下所述,函数和条件语句用细字符表示,而数据元素则用粗字符表示。数据元素每一个都以表示其名字、位长、类型和发送次序的助记符描述。
首先解释图38所示的语法中所使用的函数。
next_start_code()(下一个起始码)函数搜索在位流中描述的开始码。在图38所示的语法中,sequence_header()函数和sequence_extension()函数依次排列在next_start_code()函数之后,以便在这个位流中描述sequence_header()(序列首标)和sequence_extention()(序列扩展)函数定义的数据元素。因此,在解码位流过程中,next_start_code()函数寻找在sequence_header()和sequence_extention()函数的标题中描述的、位流中的开始码(一种数据元素),并利用这些开始码作为基准寻找sequence_header()和sequence_extention()函数。然后,next_start_code()函数解码sequence_header()和sequence_extention()函数定义的数据元素。
sequence_header()函数定义关于MPEG位流的序列层的首标数据,sequence_extention()函数定义关于MPEG位流的序列层的扩展数据。
跟随在sequence_extention()函数之后的do{}while语法当while语句定义的条件是“真”时从数据流提取根据do语句的{}中的函数描述的数据元素。也就是说,do{}while语句进行当while语句定义的条件是“真”时从数据流提取数据do语句中的函数描述的数据元素的解码处理。
在while语句中使用的nextbits()函数将出现在位流中的位或位串与要解码的下一个数据元素相比较,在图38所示的语法的例子中,nexbits()函数将位流中的位串与表示视频序列结尾的sequence_end_code相比较,并且当位流中的位串与sequence_end_code不相匹配时,while语句表示的条件是“真”。因此,跟随在sequence_extension()函数之后的do{}shile语法表示do语句中的函数所定义的数据元素被描述在位流中,除非出现表示视频序列结尾的sequence_end_code(序列结尾码)。
在位流中,extension_and_user_data(0)(扩展和用户数据)函数定义的数据元素跟随在sequence_extension()函数定义的数据元素之后。extension_and_user_data(0)函数定义关于MPEG位流的序列层的扩展和用户数据。
跟随在extension_and_user_data(0)函数之后的do{}while语法当while语句定义的条件是“真”时从位流提取根据do语句的{}中的函数描述的数据元素。在while语句中使用的nextbits()函数判断出现在位流中的位或位串是否与picture_start_code或group_start_code相匹配。如果出现在位流中的位或位串与picture_start_code或group_start_code相匹配,那么,while语句定义的条件是“真”。因此,当picture_start_code或group_start_code出现在位流中时,由于这个开始码描述关于do语句中函数定义的数据元素的码,因此,do{}while语法能够搜索由picture_start_code或group_start_code表示的开始码,以从位流中提取在do语句中定义的数据元素。
在do语句开头描述的if语句表示group_start_code出现在位流中的条件。如果由这个if语句表示的条件是“真”,那么,在这个位流的描述中,由group_of_picture-header(1)函数和extension_and_user_data(1)函数定义的数据元素跟随在group_start_code之后。
group_of_picture_header(1)函数定义关于MPEG数据流的GOP层的首标数据。
extension_and_user_data(1)函数定义关于MPEG位流的GOP层的扩展数据(extension_data)和用户数据(user_data)。
此外,在这个位流的描述中,picture_header()函数和picture_coding_extension()函数定义的数据元素跟随在group_of_picture_header(1)和extension_and_user_data(1)函数定义的数据元素之后。当然,如果上述if语句所表示的条件是“假”,那么,就不描述group_of_picture_header(1)和extension_and_user_data(1)函数定义的数据元素,以便使picture_header()和picture_coding_extension()函数定义的数据元素跟随在extension_and_user_data(0)函数定义的数据元素之后。
picture_header()函数定义关于MPEG位流的图像层的首标数据。
picture_coding_extension()函数定义关于MPEG位流的图像层的第一扩展数据。
下一个while语句判断当由这个while语句定义的条件是“真”时由下一个if语句表示的条件是否是“真”。在这个while语句中使用的nextbits()函数判断出现在位流中的位串是否与extension_start_code或user_data_start_code相匹配。如果出现在位流中的位串与extension_start_code或user_data_start_code相匹配,那么,由这个while语句定义的条件是“真”。
第一if语句判断出现在位流中的位串是否与extension_start_code相匹配。如果出现在位流中的位串与32-位extension_start_code相匹配,那么,在位流的描述中,extension_data(2)函数定义的数据元素跟随在extension_start_code之后。
第二if语句判断出现在位流中的位串是否与user_data_start_code相匹配。如果出现在位流中的位串与32-位user_data_start_code相匹配,那么,判断由第三if语句表示的条件是否是“真”。user_data_start_code是表示MPEG位流的图像层的用户数据区的开始的开始码。
第三if语句是用于判断出现在位流中的位串是否与History_Data_ID相匹配的语法。如果出现在位流中的位串与32-位History_Data_ID相匹配,那么,在这个MPEG位流的图像层的用户数据区的描述中,converted_history_stream()函数定义的数据元素跟随在这个32-位History_Data_ID表示的码之后。
converted_history_stream()函数描述历史信息和数据,以发送所有用于MPEG编码的编码参数。下面参照显示history_stream()函数的图40至47讨论由这个converted_history_stream()函数定义的数据元素的细节。另外,History_Data_ID是表示在MPEG位流的图像层的用户数据区中描述的历史信息和数据的头部的开始码。
else语句是表示由第三if语句表示的条件是“假”的语法。因此,如果这个MPEG位流的图像层的用户数据区的描述不包含converted_history_stream()函数定义的数据元素,那么,它就包含user_data()函数定义的数据元素。
在图38中,历史信息被描述在converted_history_stream()中,不是在user_data()中,而根据MPEG标准converted_history_stream()被描述成一种user_data。因此,尽管技术规范可能阐明历史信息是描述在user_data中的,但这只意味着这个信息被描述成根据MPEG标准的一种user_data。
picture_data()函数描述在关于MPEG位流的图像层的用户数据之后关于片和宏块层的数据元素。picture_data()函数表示的数据元素通常是在user_data()函数或位流的图像层的用户数据区中描述的converted_history_stream()函数定义的数据元素之后描述的。然而,如果表示图像层的数据元素的位流不包含extension_start_code或user_data_start_code,那么,由picture_data()函数表示的数据元素被描述在picture_coding_extension()函数定义的数据元素之后。
sequence_header()和sequence_extension()函数定义的数据元素跟随在picture_data()函数表示的数据元素之后。sequence_header()和sequence_extension()函数定义的数据元素与在视频流序列的标题中sequence_header()和sequence_extension()函数所描述的数据元素相同。相同数据被描述在流中可以防止如下错误发生:如果位流接收设备开始接收位流的中部(例如,位流中与图像层相对应的部分),那么它就不能接收关于序列层的数据,从而导致无法解码该流。
在最后sequence_header()和sequence_extension()函数定义的,亦即,在数据流的结尾上的数据元素之后,描述表示序列结尾的32-位sequence_end_code。
关于上面语法的基本结构示意性地显示在图39中。
下面解释converted_history_stream()函数定义的历史流。
converted_history_stream()是用于将表示历史信息的历史流***MPEG流的图像层的用户数据区中的函数。术语“converted”(“已转换”)意味着这是一个已经经过将标记位(1位)***间隔至少22位的历史流中以便防止起始模仿(start emulation)的转换处理的流,历史流由要***到用户区中的历史数据组成。
如下所述,converted_history_stream()以固定长度历史流(图40至46)或可变长度历史流的形式描述。如果编码器选择固定长度历史流,那么解码器可以有利地使用简单电路和软件从历史流中解码每个数据元素。另一方面,如果编码器选择可变长度历史流,那么,它可以任意地选择在图像层的用户区中描述的历史信息(数据元素)来降低历史流数据量,因此也就降低了整个编码位流的数据速率。
此处所述的术语“历史流”、“历史信息”、“历史数据”和“历史参数”意味着它们是用于过去编码处理的编码参数(或数据元素),而不是用于当前(最后)编码处理的编码数据。下面描述一个例子,在这种例子中,在第一代编码处理期间,图像在传输之前被编码成I类型,在第二代编码处理期间,这个I图像在传输之前被编码成P类型,和在第三代编码处理期间,这个P图像在传输之前进一步被编码成B类型。
用于第三代编码处理的编码参数是在在第三代编码处理期间生成的编码位流的序列、GOP、图像、片和宏块层中的预定位置上描述的。另一方面,根据上述语法,作为关于编码参数的历史信息,用于第一和第二代编码处理,即过去编码处理的编码参数,不是在用于第三代编码处理的编码处理在其中描述的序列或GOP层中描述的,而是在图像层的用户数据区中描述的。
首先,下面参照图40至46描述固定长度历史流语法。
作为历史流,用于过去编码处理(例如,第一或第二代编码处理)的、包含在序列层的序列首标中的编码参数首先***在最后编码处理(例如,第三代编码处理)期间生成的位流的图像层的用户数据区中。应该注意到,象在过去编码处理期间生成的位流的序列层的序列首标那样的历史信息并不***在最后编码处理期间生成的位流的序列层的序列首标中。
用于过去编码处理的、包含在序列首标(sequence_header)中的数据元素包括sequence_header_code(序列首标码)、sequence_header_present_flag(序列首标出现码)、horizontal_size_value(水平尺寸值)、marker_bit(标记位)、vertical_size_value(垂直尺寸值)、aspect_ratio_information(长宽比信息)、frame_rate_code(帧速率码)、bit_rate_value(位速率码)、VBV_buffer_size_value(VBV缓冲器大小值)、constrained_parameter_flag(约束参数标志)、load_intra_quanfi ser_matrix(载入内量化矩阵)、load_non_intra_quant izer_matrix(载入非内量化矩阵)、intra_quantiser_matrix(内量化矩阵)和non_intra_quantiser_matrix(非内量化矩阵)等。
sequence_header_code是表示用于序列层的开始同步码的数据。
sequence_header_present_flag是指示sequence_header中的数据是否有效的数据。horizontal_size_value是由图象的水平方向中像素数的低12位组成的数据。marker_bit是***到开始码模仿中的位数据。vertical_size_value是由图象中垂直行数的低12位组成的数据。aspect_ratio_information是表示图象长宽比或显示屏长宽比的数据。frame_rate_code是表示图象显示周期的数据。
bit_rate_value是用于限制生成位总量的位速率的低18位(利用400bsp作为单位进行四舍五入)数据。VBV_buffer_size_value是确定用于控制生成码总量的虚拟缓冲器(视频缓冲器检验器)的大小的值的低10位数据。
constrained_parameter_flag是指示每个指示都在极限之下的数据。load_intra_quantiser_matrix是指示内MB(宏块)量化矩阵数据存在的数据。
load_non_intra_quantiser_matrix是指示非内MB量化矩阵数据存在的数据。intra_quantiser_matrix是指示关于内MB量化矩阵数据的值的数据。tion_intra_quantiser_matrix是指示关于非内MB量化矩阵数据的值的数据。
在这些数据元素之后,用于过去编码处理的、表示序列层的序列扩展的数据元素,作为历史流,被描述在最后编码处理期间生成的位流的图像层的用户数据区中。
用于过去编码处理的,表示序列扩展(sequence_extension)的数据元素是extension_start_code(扩展起始码)、extension_start_code_identifier(扩展起始码识别符)、sequence_extension_present_flag(序列扩展出现标志)、profile_and_level-indication(背景和级别指示)、progressive_sequence(逐次序列)、chroma_format(色格式)、horizontal_size_extansion(水平尺寸扩展)、vertical-size_extension(垂直尺寸扩展)、bit_rate_extension(位速率扩展)、vbv_buffer_size_extension(VBV缓冲器大小扩展)、low_delay(低延迟)、frame_rate_extension_n(帧速率扩展n)、frame_rate_extension_d等。
extension_start_code是表示用于扩展数据的开始同步码的数据。extension_start_code_identifier是指示发送哪一个扩展数据的数据。sequence_extension_present_flag是指示序列扩展中的数据是否有效的数据。profile_and_level_indication是规定视频数据的背景(profile)和级别(level)的数据。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_deloy是表示不存在B图像的数据。
frame_rate_extension_n是与序列首标的frame_rate_code组合在一起以获得帧速率的数据。frame_rate_extension_d是与序列首标的frame_rate_code组合在一起以获得帧速率的数据。
在这些数据元素之后,用于过去编码处理的、表示序列层的序列显示扩展的数据元素,作为历史流,被描述在位流的图像层的用户数据区中。
描述成序列显示扩展(sequence_display_extension)的数据元素包括extension_start_code、extension_start_code_identifier、sequence_display_extension_present_flag(序列显示扩展出现标志)、video_format(视频格式)、colour_description(色描述)、colour_primaries(原色)、transfer_characteristics(传送特性)、matrix_coefficients(矩阵系数)、display_hovizontal_size(显示水平尺寸)和display_vertical_size(显示垂直尺寸)。
extension_start_code是表示用于扩展数据的开始同步码的数据。
extension_start_code_identifier是指示发送哪个扩展数据的代码。
sequence_display_exlension_present_flag是指示序列显示扩展中的数据元素是否有效的数据。video_format是表示源信号的视频格式的数据。
colour_description是表示在颜色空间上存在详细数据的数据。
colour_primaries是表示源信号的颜色特性的细节的数据。
transfer_charocteristics是详细显示如何实现光电转换的数据。
matrix_cofficients是详细显示几种原色如何转换成源信号的数据。
display_horizontal_size是表示预期显示的有效区域(水平尺寸)的数据。
display_vertical_size是表示预期显示的有效区域(垂直尺寸)的数据。
在这些数据元素之后,在过去编码处理期间生成的、指示宏块相位信息的宏块分配数据(macroblock_assignment_in_user_data),作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
指示宏块相位信息的macroblock_assignment_in_user_data包括诸如macroblock_assignment_present_flag(宏块分配出现标志)、v_phase(相位)和h_phase之类的数据元素。
maaoblock_assignment_present_flag是指示macroblock_assignment_in_user_data中数据元素是否有效的数据。
v_phase是指示供从图象数据分割宏块之用的垂直相位信息的数据。h_phase是指示供从图象数据分割宏块之用的水平相位信息的数据。
在这些数据元素之后,用于过去编码处理的、表示GOP层的GOP首标的数据元素,作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
表示GOP首标(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图像由于编辑等原因不能准确地得到再现的标志数据。
在这些数据元素之后,用于过去编码处理的、表示图像层的图像首标的数据元素,作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据中。
关于图像首标(picture_header)的数据元素包括picture_start_code、temporal_reference(时间基准)、picture_coding_type(图象编码类型)、vbv_delay(VBV延迟)、full_pel_forward_vector(全象素前向矢量)、forward_f_code(前向F码)、full_pel_backward_vector(全象素后向矢量)、和backward_f_code(后向F码)。
具体讲,picture_start_code是表示用于图像层的开始同步码的数据。temporal_reference是指示图像显示次序和在GOP的头部上复位的数据。picture_coding_type是指示图像类型的数据。vbv_delay是指示在随机存取期间虚拟缓冲器的初始状态的数据。full_pel_forward_vector是指示前向运动矢量的精度是整数个像素还是半整数个像素的数据。forward_f_code是指示前向运动矢量的检索范围的数据。full_pel_backward_vector是指示后向运动矢量的精度是整数个像素还是半整数个像素的数据。backward_f_code是指示后向运动矢量的检索范围的数据。
在这些数据元素之后,用于过去编码处理的,关于图像层的图像编码扩展,作为历史流,被描述在在最后编码处理中生成的位流的图像层的用户数据区中。
关于图像编码扩展(picture_coding_extension)的数据元素包括extension_start_code、extension_start_code_identifier、f_code[0][0]、f_code[0][1]、f_code[1][0]、f_code[1][1]、intra_dc_precision(内dc精度)、picture_structure(图象结构)、top_field_first(顶场在先)、frame_predictive_frame_dct(帧预测帧DCT)、concealment_motion_vectors(隐藏运动矢量)、q_scale_type(量化比例类型)、intra_vlc_format(内vlc格式)、alternate_scan(交替扫描)、repeat_first_field(重复第一场)、chroma_420_type(色420类型)、progressive_frame(逐次帧)、composite_display_flag(复合显示标志)、v_axis(V轴)、field_sequence(场序列)、sub_carrier(负载波)、burst_amplitude(突发幅度)、和sub_carrier phase(负载波相位)。
extension_start_code是指示关于图像层的扩展数据的开始的开始码。extension_start_code_identifier是指示发送哪一个扩展码的代码。
f_code[0][0]是表示沿着前向方向水平运动矢量的检索范围的数据。
f_code[0][1]是表示沿着前向方向垂直运动矢量的检索范围的数据。
f_code[1][0]是表示沿着后向方向水平运动矢量的检索范围的数据。
f_code[1][1]是表示沿着后向方向垂直运动矢量的检索范围的数据。
intra_dc_precision是表示DC系数精度的数据。picture_structure是指示图像具有帧结构还是场结构的数据。如果图像具有场结构,那么,这个数据还指示该场是较高的场还是较低的场。top_field_first是指示如果图像具有帧结构,那么第一场是较高的还是较低的场的数据。
frame_predictive_dct是指示如果图像具有帧结构,那么帧模式DCT预测只指示帧模式的数据。concealment_motion_vectors是指示宏块内含有掩盖发送误差的运动矢量的数据。
q_scale_type是指示利用线性量化比例还是利用非线性量化比例的数据。intra_vlc_format是指示是否将另一个两维VLC用于宏块内的数据。alternate_scan是指示选择折线扫描还是选择交替扫描的数据。
repeat_first_field是用于2∶3下拉的数据。chroma_420_type是如果信号格式是4∶2∶0则表示与下一个progressive_frame相同的值,否则表示0的数据。progressive_frame是指示是否成功地完成了对这个图像的顺序扫描的数据。compsite_display_flag是指示源信号是否是复合的数据。
v_axis是当源信号为PAL时所使用的数据。field_sequence是当源信号为PAL时所使用的数据。sub_carrier是当源信号为PAL时所使用的数据。burst_amplitude是当源信号为PAL时所使用的数据。sub_carrier phase是当源信号为PAL时所使用的数据。
在这些数据元素之后,用于过去编码处理的量化矩阵扩展,作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
关于量化矩阵扩展(quant_matrix_extension)的数据元素包括extension_start_code、extension_start_code_identifier、quant_matrix_extension_present_flag、load_intra_quantiser_matrix、intra_quantiser_matrix[64]、load_non_intra_quantiser_matrix、non_intra_quantiser_matrix[64]、load_chroma_intra_quantiser_matrix(载入色内量化矩阵)、chroma_intra_quantiser_matrix[64](色内量化矩阵)、load_chroma_non_intra_quantiser_matrix(载入色非内量化矩阵)、和chroma_non_intra_quantiser_matrix[64](色内量化矩阵)。
extension_start_code是表示这个量化矩阵扩展的开始的开始代码。
extension_start_code_identifier是指示发送哪个扩展数据的代码。
quant_matrix_extension_present_flag是指示在这个量化矩阵扩展中的数据元素是否有效的数据。load_intra_quantiser_matrix是表示宏块内存在量化矩阵的数据。intra_quantiser_matrix[64]是指示关于宏块内的量化矩阵的值的数据。load_non_intra_quantiser_matrix是表示非宏块内存在量化矩阵数据的数据。non_intra_quantiser_matrix是表示关于非宏块内的量化矩阵数据的值的数据。load_chroma_intra_quantiser_matrix是表示色差宏块内存在量化矩阵数据的数据。chroma_intra_quantiser_matrix是表示关色差宏块内的量化矩阵数据的值的数据。
load_chroma_non_intra_quantiser_matrix是表示色差非宏块内存在量化矩阵数据的数据。chroma_non_intra_quantiser_matrix是表示色差非宏块内的量化矩阵的值的数据。
在这些数据元素之后,用于过去编码处理的版权扩展,作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
关于版权扩展(copyright_extension)的数据元素包括extension_start_code、extension_start_code_identifier、copyright_extension_present_flag(版权扩展出现模式)、copyright_flag(版权标志)、copyright_identifier(版权识别符)、original_or_copy(原件或复制件)、copyright_number_1(版权号1)、copyright_number_2、和copyright_number_3。
extension_start_code是表示版权扩展的开始的开始码。
extension_start_code_identifier是指示发送哪一个扩展数据的代码。
copyright_extension_present_flag是指示版权扩展中的数据元素是否有效的数据。copyright_flag表示是否将版权赋予编码视频数据直到下一个版权扩展或序列结尾。
copyright_identifier是标识ISO/IEC(国际标化组织/国际电子技术委员会)JTC/SC29规定的版权注册组织的数据。ofiginal_or_copy是指示位流中的数据是原始的还是拷贝的的数据。copyright_number_1是表示版权号的位44至63的数据。copyright_number_2是表示版权号的位22至43的数据。copyright_number_3是表示版权号的位0至21的数据。
在这些数据元素之后,用于过去编码处理的图像显示扩展(picture_display_extension),作为历史流,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
关于这个图像显示扩展的数据元素包括extension_start_code、extension_start_code_identifier、picture_displaly_extension_present_flag、frame_center_horizontal_offset_1(帧中心水平偏移1)、frame_center_vertical_offset_1(帧中心垂直偏移1)、frame_center_horizontal_offset_2、frame_center_vertical_offset_2、frame_center_horizontal_offset_3、和frame_center_vertical_offset_3。
extension_start_code是表示图像显示扩展的开始的开始码。
extension_start_code_identifier是指示发送哪一个扩展数据的代码。
picture_displaly_extension_present_flag是指示图像显示扩展中的数据元素是否有效的数据。frame_center_horizontal_offset是指示显示区中的水平补偿并可以定义三个补偿值的数据。frame_center_vertical_offset是指示显示区中的垂直补偿可以定义三个补偿值的数据。
本发明的特征在于,关于re_coding_stream_information的数据元素跟随在表示这个图像显示扩展的历史信息之后。关于re_coding_stream_information的数据元素包括user_data_start、re_coding_stream_info-ID、red_bw_flag、red_bw_indicator等。
user_data_start_code是指示user_data开始的开始码。
re_coding_stream_info_ID是用于标识re_coding_stream_infor()函数的16-位整数。具体地说,这个整数的值是“1001 0001 1110 1100”(0×91ec)。
red_bw_flag是对于发送关于所有历史信息的编码参数其值为0,对于有选择地发送关于历史信息的编码参数其值为1的1-位标志。
red_bw_indicator是作为用于定义编码参数的数据组的指示符的2-位整体。
后面将详细描述re_coding_stream_information、red_bw_flag、red_bw_indicator和数据组。
用于过去编码处理的用户数据(user_data)作为历史,被描述在在最后编码处理期间生成的位流的图像层的用户数据区中。
在用户数据之后,用于过去编码处理的、在宏块层上的信息,作为历史流,得到了描述。
在宏块层上的信息包括关于宏块(macroblock)位置的数据元素,例如,macroblock_address_h(宏块水平地址)、macroblock_address_v(宏块垂直地址)、slice_header_present_flag(片首标出现标志)、和skipped_macroblock_flag(跳过宏块标志);关于宏块模式(macroblock_modes[])的数据元素例如:macroblock_quant(宏块量化)、macroblock_motion_forward(宏块前向运动)、macroblock_motion_backward(宏块后向运动)、macroblock_pattern(宏块模式)、macroblock_intra(宏块内)、spatial_temporal_weight_code_flag(空间时间权重码标志)、frame_motion_type(帧运动类型)、和dct_type;关于量化步长控制的数据元素,例如,quantiser_scale_code;关于运动补偿的数据单元,例如,PMV[0][0][0]、PMV[0][0][1]、motion_vertical_field_select[0][0]、PMV[0][1][0]、PMV[0][1][1]、motion_vertical_field_select[0][1]、PMV[1][0][0]、PMV[1][0][1]、motion_vertical_field_select[1][0]、PMV[1][1][0]、PMV[1][1][1]、和motion_vertical_field_select[1][1];关于宏块式样的数据元素,例如,coded_block_pattern;和关于生成的代码总量的数据单元,num_mv_bits(MV位数)、num_coef_bits(系数位数)和num_other_bit(其它位数)。
下面详细描述关于宏块层的数据元素。
macroblock_address_h是用于定义当前宏块的水平绝对位置的数据。
macroblock_address_v是用于定义当前宏块的垂直绝对位置的数据。
slice_header_present_flag是指示这个宏块是否是在片层的头上并包括片首标的数据。skipped_macroblock_flag是指示在解码处理期间是否跳过这个宏块的数据。
macroblock_quant是从如下所述的、图63和64所示的宏块类型(macroblock_type)衍生出来的数据,指示quantiser_scale_code是否出现在位流中。macroblock_motion_forward是从图43和64所示的宏块类型衍生出来的数据,用于解码处理。macroblock_motion_backward是从图63和64所示的宏块类型衍生出来的数据,用于解码处理。macroblock_pattern是从图63和64所示的宏块类型衍生出来的数据,指示coded_block_pattern是否出现在位流中。
macroblock_intra是从图63和64所示的宏块类型衍生出来的数据,用于解码处理。spatial_temporal_weight_code_flag是从图63和64所示的宏块类型衍生出来的数据,指示位流是否包含表示利用时间可伸缩性上取样低层图象的方法的spatical_temporal_weight_code。
frame_motion_type是指示帧中宏块的预测类型的2-位代码。如果两个预测矢量都存在并且是基于场的预测类型,那么这个代码为“00”,如果一个预测矢量存在并且是基于场的预测类型,那么这个代码为“01”,如果一个预测矢量存在并且是基于帧的预测类型,那么这个代码为“10”,和如果一个预测矢量存在并且是双主预测类型,那么这个代码为“11”。field_motion_type是指示对场中的宏块进行运动预测的2-位代码。如果一个预测矢量存在并且是基于场的预测类型,那么这个代码为“01”,如果两个预测矢量存在并且是基于18×8宏块的预测类型,那么这个代码为“10”,和如果一个预测矢量存在并且是双主预测类型,那么这个代码为“11”。dct_type是指示DCT是处在帧DCT模式下,还是处在场DCT模式下的数据。quantiser_scale_code是指示宏块的量化步长的数据。
下面描述关于运动矢量的数据元素。运动矢量被编码成与前一个编码矢量的差分,以便降低解码所需要的运动矢量数。解码器必须保持四个运动矢量预测值(每一个都包括水平和垂直成分)以解码运动矢量。这些预测运动矢量表示成PMV[r][s][v]。[r]是指示宏块中的第一或第二运动矢量的标志,对于第一运动矢量其值为“0”,对于第二运动矢量其值为“1”。[s]是指示宏块中的运动矢量是前向矢量还是后向矢量的标志,如果这个运动矢量是前向矢量,则其值为“0”,如果这个运动矢量是后向矢量,则其值为“1”。[v]是指示是宏块中的水平矢量成分还是宏块中的垂直矢量成分的标志,对于水平矢量成分其值为“0”,和对于垂直矢量成分其值为“1”。
因此,PMV[0][0][0]表示关于第一矢量的前向运动矢量的水平成分的数据。PMV[0][0][1]表示关于第一矢量的前向运动矢量的垂直成分的数据。
PMV[0][1][0]表示关于第一矢量的后向运动矢量的水平成分的数据。
PMV[0][1][1]表示关于第一矢量的后向运动矢量的垂直成分的数据。
PMV[1][0][0]表示关于第二矢量的前向运动矢量的水平成分的数据。
PMV[1][0][1]表示关于第二矢量的前向运动矢量的垂直成分的数据。
PMV[1][1][0]表示关于第二矢量的后向运动矢量的水平成分的数据。
PMV[1][1][1]表示关于第二矢量的后向运动矢量的垂直成分的数据。
motion_vertical_field_select[r][s](运动垂直场选择)指示哪一个基准场用于预测模式的数据。如果motion_vector_field_select[r][s]是“0”,则使用顶基准场。如果motion_vector_field_select[r][s]是“1”,则使用底基准场。
因此,motion_vertical_field_select[0][0]指示用于生成第一矢量的前向运动矢量的基准场。motion_vertical_field_select[0][1]指示用于生成第一矢量的后向运动矢量的基准场。motion_vertical_field_select[1][0]指示用于生成第二矢量的前向运动矢量的参考场。
motion_vertical_field_select[l][1]指示用于生成第二矢量的后向运动矢量的参考场。
coded_block_pattern是指示存储DCT***的若干个DCT块的哪一个含有有效系数(非零系数)的可变长度数据。num_mv_bits是表示宏块中运动矢量的代码量的数据。num_coef_bits是表示宏块中DCT系数的代码量的数据。num_other_bits是表示宏块中除运动矢量和DCT系数之外的代码量的数据。
下面参照图47至67解释从可变长度的历史流解码每个数据元素的语法。
这个可变长度历史流包括:next_start_code()函数、sequence_header()函数、sequence_extension()函数、extension_and_user_data(0)函数、group_of_picture_header()函数、extension_and_user_data(1)函数、picture_header()函数、picture_coding_extension()函数、re_coding_stream_info()函数、extension_and_user_data(2)函数、和picture_data()函数。
由于next_start_code()函数搜索存在于位流中的开始码,因此,用于过去处理的、由图48所示的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_quantiser_matrix、intra_quantiser_matrix、load_non_intra_quantiser_matrixm、non_intra_quantiser_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位(利用400bsp作为单位进行取整)。
marker_bit是为防止开始码模仿而***的位数据。
VBV_buffer_size_value是确定用于控制生成码总量的虚拟缓冲器(视频缓冲器检验器)的大小的值的低10位数据。constrained_parameter_flag是指示每个指示都在极限之下的数据。load_intra_quantiser_matrix是指示内MB(宏块)量化矩阵数据存在的数据。intra_quantiser_matrix是指示关于内MB量化矩阵数据的值的数据。load_non_intra_quantiser_matrix是指示非内MB量化矩阵数据存在的数据。non_intra_quantiser_matrix是指示关于非内MB量化矩阵数据的值的数据。
在sequence_header()函数定义的数据元素之后,由sequence_extension()函数定义的、如图49所示的那些数据元素那样的数据元素,作为历史流,得到了描述。
由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是规定视频数据的背景(profile)和级别(level)的数据。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组合在一起以获得帧速率的数据。
在sequence_extension()函数定义的数据元素之后,由
extension_and_user_data(0)函数定义的、如图50所示的那些数据元素那样的数据元素,作为历史,得到了描述。当“i”不是1时,
extension_and_user_data(i)函数不是把extension_data()函数定义的数据元素,而是只把user_data()函数定义的数据元素描述成历史流。
extension_and_user_data(0)函数只把user_data()函数定义的数据元素描述成历史流。
user_data()函数根据与图51所示的相同语法将用户数据描述成历史流。
在extension_and_user_data(0)函数定义的数据元素之后,由group_of_picture_header()函数和extension_and_user_data(1)函数定义的数据元素作为历史流得到了描述,如图52所示。但是,只有当表示关于GOP层的开始码的group_start_code被描述在历史流中时,才描述由group_of_picture_header()函数和extension_and_user_data(1)函数定义的数据元素。
由group_of_picture_header(1)函数定义的数据元素包括group_start_code、group_of_picture_header_present_flag、time_code、closed_gop、和broken_link。
group_start_code是指示关于GOP层的开始同步码的数据。
group_of_picture_header_presant_flag是指示group_of_picture_header中的数据元素是否有效的数据。time_code是指示从GOP的前导图像的序列的头部开始的时间的时间码。closed_gop是指示GOP中图象可以与其它GOP无关地得到再现的标志数据。broken_link是指示GOP中的前导B图像由于编辑等原因不能准确地得到再现的标志数据。
与extension_and_user_data(0)函数一样,extension_and_user_data(1)函数只把user_data()函数定义的数据元素描述成历史流。
如果历史流不包含表示关于GOP层的开始码的group_start_code,历史流在其中不描述group_of_picture_header()函数和
extension_and_user_data(1)函数定义的数据元素。在这种情况下,在extension_and_user_data(0)定义的数据元素之后,由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、backward_f_code、extra_bit_picture(附加位图象)、和extra_information_picture(附加信息图象),如图53所示。
具体讲,picture_start_code是表示用于图像层的开始同步码的数据。temporal_reference是指示图像显示次序和在GOP的头部上复位的数据。
picture_coding_type是指示图像类型的数据。vbv_delay是指示在随机存取期间虚拟缓冲器的初始状态的数据。full_pel_forward_vector是指示前向运动矢量的精度是整数个像素还是半整数个像素的数据。forward_f_code是指示前向运动矢量的检索范围的数据。full_pel_backward_vector是指示后向运动矢量的精度是整数个像素还是半整数个像素的数据。backward_f_code是指示后向运动矢量的检索范围的数据。extra_bit_picture是指示存在后随附加信息的标志。如果和extra_bit_picture是“1”,则extra_information_picture紧接其后,否则,如果其值“0”,则没有数据接在后面。extra_information_picture是为标准保留的信息。
在picture_header()函数定义的数据元素之后,由picture_coding_extension()函数定义的、诸如图54所示的那些数据元素那样的数据元素,作为历史流得到了描述。
由picture_coding_extension()函数定义的数据元素包括extension_start_code、extension_start_code_identifier、f_code[0][0]、f_code[0][1]、f_code[1][0]、f_code[1][1]、intra_dc_precision、picture_sructure、top_field_first、frame_predictive_frame_dct、concealment_motion_vectors、q_scale_type、intral_vlc_format、alternate_scan、repeat_first_field、chroma_420_type、progressive_frame、composite_display_flag、v_axis、field_sequence、sub_carrier、burst_amplitude、和sub_carrier phase。
extension_start_code是指示关于图像层的扩展数据的开始的开始码。extension_start_code_identifier是指示发送哪一个扩展码的代码。
f_code[0][0]是表示沿着前向方向水平运动矢量的检索范围的数据。
f_code[0][1]是表示沿着前向方向垂直运动矢量的检索范围的数据。
f_code[1][0]是表示沿着后向方向水平运动矢量的检索范围的数据。
f_code[1][1]是表示沿着后向方向垂直运动矢量的检索范围的数据。
intra_dc_precision是表示DC系数精度的数据。
picture_structure是指示图像具有帧结构还是场结构的数据。如果图像具有场结构,那么,这个数据还指示该场是较高的场还是较低的场。
top_field_firs t是指示如果图像具有帧结构,那么第一场是较高的还是较低的场的数据。frame_predictive_dct是指示如果图像具有帧结构,那么帧模式PCT预测只指示帧模式的数据。concealment_motion_vectors是指示宏块内含有掩盖发送误差的运动矢量的数据。q_scale_type是指示利用线性量化比例还是利用非线性量化比例的数据。intra_vlc_format是指示是否将另一个两维VLC用于宏块内的数据。
alternate_scan是指示选择折线扫描还是选择交替扫描的数据。
repeat_first_field是用于2∶3下拉的数据。chroma_420_type是如果信号格式是4∶2∶0。则表示与下一个progressive_frame相同的值,否则表示0的数据。progressive_frame是指示是否成功地完成了对这个图像的顺序扫描的数据。composite_display_flag是指示源信号是否是复合的数据。
v_axis是当源信号为PAL时所使用的数据。field_sequence是当源信号为PAL时所使用的数据。sub_carrier是当源信号为PAL时所使用的数据。
burst_amplitude是当源信号为PAL时所使用的数据。sub_carrier phase是当源信号为PAL时所使用的数据。
在picture_coding_extension()函数定义的数据元素之后,由re_coding_stream_info()函数定义的数据元素作为历史流得到了描述。
re_coding_stream_info()函数是本发明的特征,主要用于描述历史信息的组合。后面将参照图68加以详细讨论。
在re_coding_stream_info()函数定义的数据元素之后,由
extension_and_user_data(2)函数定义的数据元素作为历史流得到了描述。如图50所示,如果扩展开始码(extension_start_code)存在于位流中,那么,在extension_and_user_data(2)函数中描述由extension_data()函数定义的数据元素。在这些数据元素之后,如果用户数据开始码
(user_data_start_code)存在于位流中,则描述由user_data()函数定义的数据元素。如果扩展开始码和用户数据开始码不在位流中,则在位流中不描述exlension_data()和user_data()函数定义的数据元素。
如图55所示,extension_data()函数在位流中将指示extension_start_code的数据元素和由quant_martix_extension()、copyright_extension()和picture_display_extension()函数定义的数据元素描述成历史流。
quant_matrix_extension()函数定义的数据元素是extension_start_code、extension_start_code_identifier、quant_matrix_extension_present_flag、load_intra_quantiser_matrix、intra_quantiser_matrix[64]、load_non_intra_quantiser_matrix、non_intra_quantiser_matrix[64]、load_chroma_intra_quantiser_matrix、ckroma_intra_quantiser_matrix[64]、load_chroma_non_intra_quantiser_matrix、和chroma_non_intra_quantiser_matrix[64],如图56所示。
extension_start_code是表示这个量化矩阵扩展的开始的开始代码。extension_start_code_identifier是指示发送哪个扩展数据的代码。quant_matrix_extension_present_flag是指示在这个量化矩阵扩展中的数据元素是否有效的数据。load_intra_quantiser_matrix是表示宏块内存在量化矩阵的数据。intra_quantiser_matrix是指示关于宏块内的量化矩阵的值的数据。load_non_intra_quantiser_matrix是表示非宏块内存在量化矩阵数据的数据。non_intra_quantiser_matrix是表示关于非宏块内的量化矩阵数据的值的数据。load_chroma_intra_quantiser_matrix是表示存在宏块内色差量化矩阵数据的数据。chroma_intra_quantiser_matrix是表示色差宏块内的量化矩阵数据的值的数据。
load_chroma_non_intra_quantiser_matrix是表示存在色差非宏块内量化矩阵数据的数据。chroma_non_intra_quantiser_matrix是表示关于色差非宏块内的量化矩阵的值的数据。
由copyright_extension()函数定义的数据元素包括extension_start_code、extension_start_code_identifier、copyright_extension_present_flag、copyright_flag、copyright_identifier、original_or_copy、copyright_number_1、copyright_number_2、和copyright_number_3,如图57所示。
extension_start_code是表示版权扩展的开始的开始码。extension_start_code_identifier是指示发送哪一个扩展数据的代码。copyright_extension_present_flag是指示版权扩展中的数据元素是否有效的数据。
copyright_flag表示是否将版权赋予编码视频数据直到下一个版权扩展或序列结尾。copyright_identifier是标识ISO/IEC(国际标化组织/国际电子技术委员会)JTC/SC29规定的版权注册组织的数据。original_or_copy是指示位流中的数据是原始的还是拷贝的数据。copyright_number_1是表示版权号的位44至63的数据。copyright_number_2是表示版权号的位22至43的数据。copyright_number_3是表示版权号的位0至21的数据。
由picture_display_extension()函数定义的数据元素是extension_start_code_identifier、frame_center_horizontal_offset、frame_center_verfical_offset等,如图58所示。
extension_start_code_identifier是指示发送哪一个扩展数据的代码。frame_center_horizontal_offset是指示显示区中的水平补偿并可以利用number_of_frame_center_offsets定义规定个数的补偿值的数据。frame_center_verfical_offset是指示显示区中的垂直补偿并可以利用number_of_frame_center_offsets定义规定个数的补偿值的数据。
回过头来参照图47,在extension_and_user_data(2)函数定义的数据元素之后,由picture_header()函数定义的数据元素作为历史流得到了描述。但是,如果red_bw_flag不是1或如果red_bw_indicator是2或更小,则存在picture_data()函数。red_bw_flag和red_bw_indicator被描述在re_coding_stream_info()函数中,后面将参照图68和69对此加以描述。
由picture_data()函数定义的数据元素是由图59所示的slice()函数所定义的那些数据元素。由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()函数定义的数据元素的开始的开始码。slide_quantiser_scale_code是表示关于存在于这个片层中的宏块的量化步长的数据。但是,quantiser_scale_code是为每个宏块设置的,那么,在为每个宏块设置的macroblock_quantiser_scale_code中的数据优先得到使用。
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紧接其后,则将这个标志设置为“1”,否则,如果没有附加信息跟随其后,则将此值设置为“0”。
在这些数据元素之后,由macroblock()函数定义的数据元素作为历史得到了描述。
macroblock()函数描述诸如macroblock_escape(宏块退出)、macroblock_address_increment(宏块地址增量)、macroblock_quantiser_scale_code(宏块量化比例码)和marker_bit(标记位)之类的数据元素,和由macroblock_modes函数、motion_vectors(s)函数和code_block_patterm()函数定义的数据元素。
macroblock_escape是指示参考宏块与前一个宏块之间的差值是否是34或更大的固定位串。如果参考宏块与前一个宏块之间的差值是34或更大,则将33加入macroblock_address_increment的值中。
macroblock_address_increment是指示在水平方向参考宏块与前一个宏块之间的差值的数据。如果一个macroblock_escape存在于macroblock_address_increment之前,那么,表示在水平方向中参考宏块与前一个宏块之间的实际差值的数据是通过将33加入macroblock_address_increment的值中获得的。
macroblock_quantiser_scale_code是为每个宏块设置的量化步长,并且只有当macroblock_quant是“1”时才存在。每个片层含有为每个片层设置的并且表示关于每个片层的量化步长的slice_quantiser_scale_code,如果为参考宏块设置macro_quantiser_scale_code,则选择这个量化步长。
在macroblock_address_increment之后,描述了由macroblock_modes()函数定义的数据元素。macroblock_modes()函数把诸如macroblock_type、frame_motion_type、field_motion_type、和dct_type之类的数据元素描述成历史流,如图62所示。
macroblock_type是表示宏块的编码类型的数据,后面将参照图65至67对此加以详细讨论。
如果macroblock_motion_forward或macroblock_motion_backward是“1”,那么,图像结构是帧,和如果frame_pred_frame_dct是“0”,那么,在表示macroblock_type的数据元素之后描述表示frame_motion_type的数据元素。frame_pred_frame_dct是指示field_motion_type是否存在于位流中的标志。
frame_motion_type是指示帧中宏块的预测类型的2-位代码。如果两个预测矢量都存在并且是基于场的预测类型,那么这个代码为“00”,如果一个预测矢量存在并且是基于场的预测类型,那么这个代码为“01”,如果一个预测矢量存在并且是基于帧的预测类型,那么这个代码为“10”,和如果一个预测矢量存在并且是双主预测类型,那么这个代码为“11”。
如果关于frame_motion_type的描述的条件不满足,那么,在表示macroblock_type的数据元素之后描述表示field_motion_type的数据元素。
field_motion_type是指示对场中的宏块进行运动预测的2-位代码。如果一个预测矢量存在并且是基于场的预测类型,那么这个代码为“01”,如果两个预测矢量存在并且是基于18×8宏块的预测类型,那么这个代码为“10”,和如果一个预测矢量存在并且是双主预测类型,那么这个代码为“11”。
如果图像结构是帧,那么,frame_pred_frame_dct指示frame_motion_type和dct_type都存在于位流中,表示dct_type的数据元素在表示macroblock_type的数据元素之后得到描述。dct_type是指示DCT是处在帧DCT模式下,还是处在场DCT模式下的数据。
回头参照图61,如果参考宏块是前向预测类型,或者是含有隐匿宏块的宏块内,那么,描述由motion_vectors(0)定义的数据元素。另外,如果参考宏块是后向预测类型的,那么描述由motion_vectors(1)定义的数据元素。
motion_vector(0)函数描述关于第一运动矢量的数据元素,
motion_vector(1)函数描述关于第二运动矢量的数据元素。
motion_vectors(s)函数描述关于如图63所示的运动矢量的数据元素。
如果存在一个运动矢量,但没有使用双主预测模式,那么,描述由motion_vertical_field_select[o][s]和motion_vector_[o,s]函数定义的数据元素。
motion_vertical_field_select[r][s]是指示第一运动矢量(可能是前向矢量,也可能是后向矢量)是通过参考底场获得的,还是通过顶场获得的标志。指示符“r”指示第一矢量或者第二矢量,“s”指示预测方向是前向的还是后向的。
motion_vector[r、s]函数描述关于motion_code[r][s][t]的数据串、关于motion_residual[r][s][t]的数据串和表示dmvector[t]的数据,如图64所示。
motion_code[r][s][t]是表示运动矢量在-16与+16之间的幅度的可变长度数据。因此,motion_code[r][s][t]和mot ion_residual[r][s][t]的值可以描述详细的运动矢量。dmvector[t]是在双主预测模式下起作用,通过在进行校正的同时根据时间距离按比例缩放现有的运动矢量生成在场之一(例如,与底场相比,顶场可称为“场之一”)中的运动矢量,以反映顶场与底场之间的行间垂直偏移。指示符“r”指示第一矢量或第二矢量,“s”指示预测方向是前向的还是后向的。
motion_vector[r,s]函数将表示关于水平方向的motion_code[r][s][0]的数据串描述成历史流,如图64所示。由于motion_residual[0][s][t]和motion_residual[1][s][t]两者中的位数是由r_code[s][t]指示的,因此,其值不等于1的f_code[s][t]指示motion_residual[r][s][t]存在于位流之中。当关于水平成分的motion_residual[r][s][0]不是“1”和关于水平成分的motion_coder[r][s][0](运动编码器)不是“0”时,这意味着表示motion_residual[r][s][0]的数据元素存在于位流中和运动矢量具有水平成分。在这种情况下,描述表示关于水平分量的motion_residual[r][s][0](运动余量)的数据元素。
在这些数据元素之后,表示关于垂直方向的motion_coder[r][s][1]的数据串作为历史流得到了描述。如上所述,由于在motion_residual[0][s][t]和motion_residual[1][s][t]两者中的位流是由f_code[s][t]指示的,因此,其值不等于1的f_code[s][t]指示motion_residual[r][s][t]存在于位流之中。当motion_residual[r][s][1]不是“1”和motion_code[r][s][1]不是“0”时,这意味着表示motion_residual[r][s][1]的数据元素存在于位流中和运动矢量具有垂直成分。在这种情况下,描述表示关于垂直成分的motion_residual[r][s][1]的数据元素。
下面参照图65至67描述macroblock_type。macroblock_type是由诸如macroblock_quant、dct_type_flag、macroblock_motion_forward和macroblock_motion_backward之类的标志生成的可变长度数据。macroblock_quaut是指示macroblock_quantiser_scale_code是否已经得到设置的标志,它设置关于宏块的量化步长。如果macroblock_quantiser_scale_code存在于位流中,那么,macroblock_quant是“1”。
dct_type_flag是指示dct_type是否存在的标志,它指示是否已经利用帧或场DCT对参考宏块进行了编码(换言之,这个标志指示参考宏块是否已经经过了DCT)。如果dct_type存在于位流之中,那么,dct_type_flag是“1”。macroblock_motion_forward是指示参考宏块是否已经经过了向着预测的标志。如果参考宏块已经经过了前向预测,那么这个标志是1。macro_motion_backward是指示参考宏块是否已经经过了后向预测的标志。如果参考宏块已经经过了后向预测,那么这个标志是1。
借助于可变长度格式,可以减少历史信息,从而降低了发送的位速率。
也就是说,如果macroblock_type和motion_vectors()都得到了传送,而quantiser_scale_code没有得到传送,那么,可以通过将slice_quantiser_scale_code设置成“00000”来降低位速率。
另外,如果只有macroblock_type得到了传送,而motion_vectors()、quantiser_scale_code和dct_type都没有得到传送,那么,可以使用“未被编码”作为macroblock_type来降低位速率。
此外,如果只有picture_coding_type得到了传送,而slice()和后随的信息都没有得到传送,那么,位速率可以通过使用不含slice_start_code的picture_data()得到降低。
在上面的描述中,为了防止连续的23位“0”出现在user_data中,以22位为间隔将“1”描入数据中,但间隔可以不是22位。另外,可以就***情况对Byte_allign(字节排列)进行检查,以代替计数连续0的个数。
此外,尽管MPEG禁止连续23位0的出现,但实际上它只处理从字节头部开始的连续23位0,而并不处理从字节中部开始的这样的位。因此,可以以,例如,24位为间隔,将“1”***除LSB之外的位置上。
另外,在上面的描述中,历史信息是以类似于视频基本流的形式的,但实际上它可以以打包基本流或传输流的形式。此外,尽管在基本流中的user_data是在picture_data之前,但它可以位于任何其它地方。
图15所描述的代码变换器101将关于若干代的编码参数作为历史信息提供的随后的处理。但并不需要所有上述历史信息。例如,如果包括大容量记录介质的记录和再现***接在这个代码变换器之后,大容量记录介质在存储容量上相对来说不受到什么限制,那么当所有上述信息被描述在编码参数中时,也不会发生什么问题。但是,如果包括容量相对小的记录介质的记录和再现***接在代码变换器之后,那么,为了或多或少地降低编码流的数据速率,只有所需历史信息按所希望的那样被描述在编码参数中,而不是所有历史信息,举另一个例子,如果包括在传输容量上相对来说不受限制的大传输容量记录介质的传输路径接在这个代码变换器之后,那么当所有上述信息被描述在编码参数中时也不会发生什么问题。但是,如果含有相对较小传输容量的传输路径接在这个代码变换器之后,那么,为了或多或少地降低编码流的数据速率,只有所需历史信息,而不是所有历史信息,才按所希望的那样被描述在编码参数中。
本发明的特征在于,接在代码变换设备之后的各种应用设备的每一种所需要的历史信息可以根据应用情况适当地和有选择地被描述在编码流中。为了达到这个目的,本实施例将信息re_coding_stream_info描述在编码流中。
下面参照图68详细描述关于re_coding_stream_info的语法和数据元素。
如图68所示,re_coding_stream_info()函数包括ziser_data_start_code、re_coding_stream_info_ID、red_bw_flag、red_bw_indicator、marker_bit、num_other_bits、num_mv_bits和num_coef_bits等。
user_data_start_code是表示user_data开始的开始码。
re_coding_stream_info_ID是用于标识re_coding_stream_info()函数的16-位整数。具体地说,这个整数具有“1001 0001 1110 1100”(0×91ec)的值。
red_bw_flag是如果发送关于所有历史信息的编码参数则其值为0和如果有选择地发送关于历史信息的编码参数则其值为1的1-位标志。具体地说,如图69所示,如果red_bw_flag是1,那么检验接在这个标志之后的red_bw_indicator以作出五个数据组的哪一个用于发送关于历史信息的相应编码参数的判断。这个数据组包含用于确定要与重新编码的编码流一起发送的编码参数的组合的信息。因此,根据这个数据组选择要在编码流中描述的编码参数。
red_bw_indicator是起到定义关于编码参数的数据组的作用的2-位整数。具体地说,red_bw_indicator是指示数据组2至5的哪一个按图69所示的那样表示的数据。
因此,通过参考在编码流中描述的red_bw_flag和red_bw_indicator,可以确定五个数据组的哪一个用于发送关于历史流的编码参数。
现在参照图70解释在每个数据组中发送的、关于历史信息的编码参数。
历史信息大体上可以划分为图像中信息和宏块中信息。片信息可以通过汇集包含在片信息中的宏块信息获得。GOP信息可以通过汇集包含在GOP信息中的图像信息获得。
由于图像信息每帧只发送一次,因此,与***编码流中的历史信息相比,它的位速率不算太高。另一方面,由于对每个宏块都要发送宏块信息,因此,例如,在一帧含有525条扫描线和场速率为60场/秒的视频***中,一帧包含720×480个像素,这样,每帧必须发送宏块信息1,350(=(720/16)×(480/16))次。结果是,相对较大部分的历史信息被宏块信息占据了。
因此,在本实施例中,作为***编码流中的历史信息,至少图像信息要不断发送,而宏块信息要根据应用情况有选择地发送,从而减少发送信息。
如图70所示,作为历史信息发送的宏块信息包括,例如,num_coef_bits、num_mv_bits、num_other_bits、q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][](运动矢量垂直场选择)、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、coded_block_pattern(编码块模式)、mb_intra、slice_start、dct_type、mb_quant、skipped_mb等。这些信息通过利用SMPTE-372M中定义macroblock_rate_information(宏块速率信息)的元素来表示。
num_coef_bits表示DCT系数所需要的宏块码量。num_mv_bits表示运动矢量所需要的宏块码量。num_other_bits表示除num_coef_bits和num_mv_bits之外的宏块码量。
q_scale_code表示应用到宏块中的q_scale_code。motion_type表示应用到宏块中的运动矢量的类型。mv_vert_field_sel[][]表示关于应用到宏块中的运动矢量的场选择。
mv[][][]表示应用到宏块中的运动矢量。mb_mfwd是指示关于宏块的预测模式是前向预测的标志。mb_mbwd是指示关于宏块的预测模式是后向预测的标志。mb_pattern是指示宏块存在非零DC系数的标志。
coded_block_pattern是指示对于每个DCT块宏块都存在非零DC系数的标志。mb_intra是指示该宏块是否是intra_macro的状态。slice_start是指示该宏块是否是片的头部的标志。dct_type是指示该宏块是field_dct还frame_dct的标志。
mb_quant是指示该宏块是否发送quantiser_scale_code的标志。skipped_mb是指示该宏块是否是跳过宏块。
并非所有的这些编码参数总是需要的,而是所需编码参数随接在代码变换器之后的应用设备不同而变化。例如,对于涉及请求在重新编码过程中要尽可能接近地恢复原样的位流的透明请求(transparent request)的应用来说,需要诸如num_coef_bits和slice_start之类的编码参数。“透明请求”能够使与输入位流相比其图像质量免于变差的输出位流得以生成。
也就是说,对于代码变换处理只请求改变位速率的应用不需要诸如num_coef_bits和slice_start之类的编码参数。另外,如果在传输路径方面有一些非常严格的限制,那么,某些应用只需要每个图像的编码类型。
参考到这些情况,本实施例提供诸如图70所示的那样的数据组,作为关于用于正在发送的历史信息的编码参数的数据组的例子。
在图70中,在每个数据组中与编码参数相对应的值“2”意味着相应信息存在于编码流中并可用于作为历史信息,“0”意味着相应信息不在编码流中。“1”意味着存在相应信息支持其它信息的存在或语法,但没有什么含义,比如说,与源位流信息没有什么关系。例如,对于发送的历史信息的片头上的宏块,slice_stort是“1”但是,如果此片没有必要保持与原始位流相同的位置关系,那么,此值作为历史信息没有任何含义。
在此实施例中,编码参数(num_coef_bits、num_mv_bits、num_other_bits)、(q_scale_code、q_scale_type)、(motion_type、mv_vert_field_sel[][]、mv[][][])、(mb_mfwd,mb_mbwd)、(mb_pattern)、(coded_block_pattern)、(mb_intra)、(slice_start)、(dct_type)、(mb_quant)、和(skipped_mb)根据所选数据组被选择地描述在编码位流中。
数据组1意在重构完整的透明位流。数据组1能够进行精确的代码转换以输出与输入位流相比图像质量变差很小的位流。数据组2也意在重构完整的透明位流。数据组3不能重构完整的透明位流,但能基本上重构视觉透明的位流。数据组4在透明性方面劣于数据组3,但能量重构没有视觉问题的位流。数据组5在透明性方面劣于数据组4,但不管重构的不完整性仍然能够重构含历史信息较少的位流。
数据组个数越少,这些数据组在功能上就越强大,但是功能强大的数据组需要扩大容量发送历史信息。因此,要考虑所设想的应用和适合于历史信息的容量之后方可确定发送的数据组。
在图70所示的五个数据组中,对于数据组1,red_bw_flag是0,而对于数据组2至5,red_bw_flag是1。另一方面,red_bw_indicator对于数据组2是0,对于数据组3是1,对于数据组4是2,和对于数据组5是3。
因此,如果red_bw_flag为1(即,对于数据组2至5),那么就指定red_bw_indicator。
此外,如果ref_bw_flag是0(数据组1),那么对于每个宏块描述marker_bit、num_other_bits、num_mv_bits、和num_coef_bits。对于数据组2至5(即,如果red_bw_flag是1),在编码流中不描述这四个数据元素。
对于数据组5,不发送包括picture_data()函数(参见图59)的其它语法元素。也就是说,对于包含在picture_data()函数中的若干个slice()函数没有编码参数被发送出去。因此,对于数据组5,所选历史信息意在只发送图像中诸如picture_type之类的编码参数。
对于数据组1至4,对于包含在picture_data()函数中的若干个slice()函数存在着编码参数。但是,关于slice()函数确定的片和关于源位流中的片的地址信息取决于所选数据组。对于数据组1或2,关于历史信息的、源位流中的片的地址信息必须与关于slice()函数确定的片的地址信息相同。
macroblock()函数(参见图61)的语法元素取决于所选数据组。macroblock_escape、macroblock_address_increment和macroblock_modes()函数总是出现在编码流中。但是,macroblock_escape和macroblock_address_increment作为信息的有效性是由所选数据组确定的。如果数据组1或2用于关于历史信息的编码参数,那么,必须发送源位流中与skipped_mb相同的信息。
对于数据组4,motion_vectors()函数不在编码流中。对于数据组1至3,macroblock_modes()函数的macroblock_type确定motion_vectors()函数存在于编码流中。对于数据组3或4,coded_block_pattern()函数不在编码流中。对于数据组1和2,macroblock_modes()函数的macroblock_type确定coded_block_pattern()函数存在于编码流中。
macroblock_modes()函数(参见图62)的语法元素取决于所选数据组。macroblock_type总是存在的。对于数据组4,frame_motion_type、field_motion_type和dct_type不在编码流中。
作为从macroblock_type获得的参数的信息的有效性由所选数据组确定。
对于数据组1或2,macroblock_quant必须与源位流中的相同。对于数据组3或4,macroblock_quant表示quantiser_scate_code存在于macroblock()函数中,无需与源位流中的相同。
对于数据组1或3,macroblock_motion_forward必须与源位流中的相同。这对于数据组4或5是没有必要的。
对于数据组1或2,macroblock_pattern必须与源位流中的相同。对于数据组3,macroblock_pattern用于指示dct_type的存在。对于数据组4并没有建立为数据组1至3建立的关系。
如果数据组1至3用于关于历史信息的编码参数,那么,macroblock_intra必须与源位流中的相同。这不适用于数据组4。
下面参照图15所示的代码变换器101描述代码变换器101对包含关于数据组的信息的编码流执行的和根据所设置的数据组生成编码流的处理。
图15所示的代码变换器的例子接收第三代编码处理生成的编码流ST(第三),转换其中的GOP结构或/和位速率以便生成新的编码流ST(第四)。
首先,解码设备102从第三代编码流ST(第三)提取用于编码这个编码流ST(第三)的第三代编码参数,并根据提取的编码参数解码该编码流ST(第三)以生成基带视频信号。此外,解码设备102将提取的第三代编码流(第三)输出到历史信息多路复用设备103。并且,解码设备102从第三代编码流ST(第三)的图像层提取user_data(),将数据提供到历史解码设备104。
历史解码设备104从解码设备102提供的user_data()提取history_stream()。由于history_stream()是由可变长度编码数据元素组成的流,因此,历史解码设备104对history_stream()进行可变长度解码处理。结果是,可以生成由每一个都具有预定数据长度的数据元素组成的流。接着,历史解码设备104分析关于可变长度编码数据流的语法,语法分析涉及对关于流的语法的解释。
在语法分析处理期间,历史解码设备104参考在history_stream()函数中的re_coding_stream_info()中所描述的red_bw_flag和red_bw_indicator。通过参照从流中提取的red_bw_flag和red_bw_indicator,历史解码设备104确定为接收的history_stream()设置五个数据组的哪一个。因此,通过根据red_bw_flag和red_bw_indicator确定的数据组的类型,历史解码设备104可以确定哪一个编码参数包含在history_stream()中。
具体地说,如果red_bw_flag=0,则设置数据组1。因此,下列所有的编码参数都被描述在history_stream()中作为picture_data()函数,包括:num_coef_bits、num_mv_bits、num_other_bits、q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、coded_block_pattern、mb_intra、slice_start、dct_type、mb_quant、和the skipped_mb。
如果rew_bw_flag=1和red_bw_indicator=0,则设置数据组2。因此,下列编码参数都被描述在history_stream()中作为picture_data()函数,包括:q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、coded_block_pattern、mb_intra、slice_start、dct_type、mb_quant、和skipped_mb。
如果red_bw_flag=1和red_bw_indicator=1,则设置数据组3。因此,下列编码参数被描述在history_stream()中作为picture_data()函数,包括:q_scale_code、q_scale_type、mot ion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、mb_intra、slice_start、dct_type、mb_quant、和skipped_mb。
如果red_bw_flag=1和red_bw_indicator=2,则设置数据组4。因此,包括q_scale_code和q_seale_type的编码参数被描述在history_stream()中作为picture_data()函数。
如果red_bw_flag=1和red_bw_indicator=3,则设置数据组5。因此,没有编码参数描述在history_stream()中作为picture_data()函数。
历史解码设备104参考red_bw_flag和red_bw_indicator中的信息从history_stream()中提取编码参数。在图15所示的代码变换器的实施例中,提供给代码变换器101的历史解码设备104的输入编码流已经由第三代编码处理生成,使得输出历史信息是第一和第二代编码参数。
历史信息多路复用设备103根据与图68至73所示的相同格式将解码设备102提供的第三代编码参数(第三)和历史解码设备104提供的过去编码参数(第一、第二)多路复用在解码设备102提供的基带视频数据中。
历史信息分离设备105接收历史信息多路复用设备103提供的基带视频数据,并从该基带视频数据中提取第一、第二和第三代编码参数(第一、第二、第三),将它们提供到编码设备106。
编码设备106从历史信息分离设备105接收基带视频数据和编码参数(第一、第二、第三),根据接收的编码参数重新编码基带视频数据。在这种情况中,编码设备106从在过去编码处理期间生成的编码参数(第一、第二、第三)和从传输的基带视频数据新生成的编码参数选择最适合于编码处理的编码参数。如果编码设备106使用从传输的基带视频数据新生成的编码参数编码,那么它就进行上述的“一般编码处理”。如果编码设备106使用过去编码参数(第一、第二、第三)的任一个,那么它就进行上述的“参数重新使用编码处理”。
连接在网络上的计算机100控制解码设备102执行的解码处理和编码设备106执行的编码处理。例如,计算机100检测用于发送编码设备106输出的编码流的传输路径的容量,并根据传输容量选择五个数据组中合适的一个,它还检测与编码设备106的输出相连接的设备的存储容量,并根据该存储容量选择五个数据组中适合的一个。
编码设备106从计算机100接收表示数据组的信息,根据这个信息生成red_bw_flag和red_bw_indicator。如果计算机100提供的信息指示数据组1,那么rew_bw_flag=0。如果该信息指示数据组2,那么rew_bw_flag=1和red_bw_indicator=0。如果该信息指示数据组3,那么rew_bw_flag=1和red_bw_indicator=1。如果该信息指示数据组4,那么rew_bw_flag=1和red_bw_indicator=2。如果该信息指示数据组5,那么rew_bw_flag=1和red_bw_indicator=3。
根据rew_bw_flag和red_bw_indicator的确定值,编码设置106选择描述在编码流中作为history_stream()的编码参数,并将所选编码参数描述在编码流中作为history_stream(),而同时将red_bw_flag和red_bw_indicator描述在编码流中作为re_coding_stream_info()。为第一、第二和第三代的每一代的编码参数选择作为history_stream()发送的编码参数。
如果rew_bw_flag=0那么,编码设备106将下列所有编码参数都描述在编码流中作为picture_data()函数,包括:num_coef_bits、num_mv_bits、num_other_bit s、q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、coded_block_pattern、mb_intra、slice_start、dct_type、mb_quant和skipped_mb。
如果red_bw_flag=1和red_bw_indicator=0,那么,编码设备106将下列编码参数描述在history_stream()中作为pictuer_data()函数,包括:q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、coded_block_pattern、mb_intra、slice_start、dct_type、mb_quant和the skipped_mb。
如果red_bw_flag=1和red_bw_indicator=1,那么,编码设备106将下列编码参数描述在history_stream()中作为picture_data()函数,包括:q_scale_code、q_scale_type、motion_type、mv_vert_field_sel[][]、mv[][][]、mb_mfwd、mb_mbwd、mb_pattern、mb_intra、slice_start、dct_type、mb_quant和skipped_mb。
如果red_bw_flag=1和red_bw_indicator=2,那么编码设备106将包括q_scale_code和q_scale_type的编码参数描述在history_stream()中作为picture_data()函数。
如果red_bw_flag=1和red_bw_indicator=3,那么编码设备106不将什么编码参数描述在history_stream()中作为picture_data()函数。
也就是说,编码设备106根据指示计算机100指定的数据组的信息选择作为history_stream()发送的编码参数,而不是发送所有传输的过去编码参数作为history_stream()。因此,根据接收的指示数据组的信息,编码设备105能够生成具有各种数据容量的、含有history_stream()的编码流。另外,编码设备105还能够生成由适合于接在编码设备105之后的发送介质的传输容量、适合于记录介质的存储容量。或者适合于应用设备的数据量组成的、包含history_stream()的编码流。根据本实施例的代码变换器,这样作为history_stream()发送的编码参数是根据连接在编码设备之后的应用设备选择的。因此,可以以最佳数据量发送与该应用设备相对应的历史。
下面参照图71至74描述将历史信息多路复用到历史信息多路复用设备103输出的基带视频信号中的格式。
图71是显示格式“Re_Coding Information Bus宏块格式”的示意图,其中历史信息被多路复用在基带视频信号中进行发送。这个掩码块(maskblock)由16×16(=256)个位构成。在图71中,从顶部开始数第三和第四行的每一行所示的32个位是picrate_element(图象速率元素)。图72至74所示的图像速率元素都描述在picrate_element中。1-位red_bw_flag被指定在从图72的顶部开始数第二行中。3-位red_bw_indicaton被指定在从顶部开始算第三行中。也就是说,标志red_bw_flag和red_bw_indicator作为图71中的picrate_element发送出去。
下面解释图71中的其它数据。SRIB_sync_code(同步码)是表示在这种格式中宏块的第一行排列在流的左端的代码。具体地说,这个码被设置为“11111.”。如果picture_structure指示帧图像结构(即,其值是“11”),那么fr_fl_SRIB被设置为1,指示发送超过16行的Re_Coding InformationBus宏块。如果picture_structure并不指示帧结构,那么,fr_fl_SRIB被设置为0,指示发送超过16行的Re_Coding Information Bus。这种机制使Re_Coding Information Bus被锁定在空间和时间解码视频帧或场中的相应像素上。
SRIB_top_field_first被设置成与保存在源位流中的top_field_first相同的值,并与repeat_first_field一起表示关于相关视频的Re_CodingInformation Bus的时间排列。SRIB_repeat_field_first被设置成与保存在源位流中的repeat_first_field相同的值。关于第一场的Re_CodingInformation Bus的内容必须如这个标志所指示的那样重复。
422_420_Chroma表示源位流是4∶2∶2还是4∶2∶0。其值为0的422_420_Chroma表示位流是4∶2∶0的并且已经对色差信号进行了上取样以便输出4∶2∶2视频。其值为0的422_420_Chroma表示色差信号还没有经过过滤。
rolling_SRIB_mb_ref(滚动SRIB宏块基准)表示16-位模65521,其值随着宏块数的增加而不断增大。这个值必须在帧图像结构的各帧间连续。否则,它必须是在各场间连续。此值被初始化成0与65520之间的预定值。这使得能够将Re_Coding Information Bus的唯一标识符***记录器***之中。
关于Re_Coding Information Bus的其它数据的含义也如上所述,因此略去不谈。
如图75所示,关于图71中的Re_Coding Information Bus的256-位数据每次一位地排列在Cb[0][0]、Cr[0][0]、Cb[1][0]和Cr[1][0]中,它们是色差数据的LSB。由于图75所示的格式使4-位数据得到发送,因此通过发送图75中的格式64次(=256/4)就可以发送图71中的256-位数据。
根据本发明的代码变换器,在过去编码处理期间生成的编码参数被重新用于当前编码处理,从而防止了由于重复解码编码处理所致的图象质量变差。也就是说,本发明可以抑制源自重复解码编码处理的图象质量变差的累积。
图76和77显示了本发明的代码变换器应用其中的磁带录像机的结构的例子。图76显示了磁带录像机601的记录***的结构的例子。图77显示了磁带录像机601的再现***的结构的例子。
图76所示的磁带录像机601由代码变换器101R、信道编码设备602和记录头603构成。代码变换器101R基本上以与图37所示的代码变换器相同的方式构成。在这个结构例子中,代码变换器101R将长GOP的位流ST转换成短GOP的位流ST。
从代码变换器101R的编码设备106输出的***编码流ST提供到信道编码设备602。如上所述,包含第一至第三代编码参数的user_data记录在***编码流ST的图像层的用户数据区中。
信道编码设备602将用于纠错的奇偶码附加到输入***编码流,随后利用,例如,NRZI(不归零反相)调制方法进行信道编码,并且将编码流提供到记录头603。记录头603将输入编码流记录在磁带604上。
如图77所示,在再现***中,再现头611从磁带604生成信号,将该信号提供到信道解码设备612。信道解码设备612信道解码再现头611提供的信号并且利用奇偶性纠正其中的错误。
信道解码设备612输出的***编码流ST输入到代码变换器101P。代码变换器101P具有与图37所示的代码变换器相类似的基本结构。
代码变换器101P的解码设备102从***编码流中提取包含第一至第三代编码参数的用户数据user_data,并将该数据提供到历史编码流104和编码设备106。历史解码设备104解码输入的用户数据user_data,将获得的第一至第三代编码参数发送到编码设备106。
解码设备102也解码***编码流ST,以输出基带视频信号和***编码参数。基带视频信号提供到编码设备106,而***编码参数则发送到编码设备106和历史编码设备107。
历史编码设备107将输入的***编码参数转换成用户数据user_data,将该数据提供到编码设备106。
如上所述,用于编码设备106的控制器701判断根据操作人员指定的GOP结构确定的每个图像的图像类型是否与包含在历史信息(用户数据user_data)中的图像类型相同。根据判断结果,编码设备106进行上述“一般编码处理”或“参数重新使用编码处理”。在此处理之后,编码设备106输出带有已经从短GOP转换过来的长GOP的***编码流ST。编码流ST中的用户数据user_data含有记录在其中作为历史信息的第一至***编码参数。
尽管图76和77所示的磁带录像机601将历史信息记录在图像层的user_data中,但历史信息也可以记录在磁带604不同于用于视频数据的区域的区域中。图78和79显示了在这种情况下磁带录像机601的结构的例子。图78显示了磁带录像机601的记录***的结构的例子。图79显示了磁带录像机601的再现***的结构的例子。
如图78所示,在磁带录像机601中,代码变换器101R的解码设备102输出的用户数据user_data输入到历史解码设备104,历史解码设备104然后解码要提供到编码设备106的过去编码参数(在本例中,第一和第二代编码参数)。另外,本例并不需要将历史信息记录在磁带604上作为用户数据user_data,因此,只应用历史VLC 211,而不是图15所示的整个历史编码设备107。将解码设备102输出的编码参数(在这种情况中,第三代编码参数)和由历史解码设备104从用户数据user_data解码之后输出的编码参数(在这种情况中,第一和第二代编码参数)提供给历史VLC 211。VLC 211可变长编码第一和第三代编码参数,生成如图40至46或47所示的history_stream传输给多路复用器621。
多路复用器621还接收编码设备106输出的***编码流。多路复用器621将编码设备106提供的编码流(位流)多路复用在比历史VLC 211提供的历史流记录在其中的区域更安全的区域中。
例如,如图80所示,编码设备106输出的视频流记录在靠近同步码的磁带604上,而历史VLC 211输出的历史流history_stream则记录在比视频流离同步码更远的位置上。例如,当在特殊再现期间检索视频流时,首先检索同步码,然后利用同步码作为基准来检索后随的视频流。因此,通过定位更接近于同步码的视频流,即使在快再现期间也能可靠地再现视频数据。对于快再现并不需要history_stream。这样,即使当history_stream离同步码较远时,也可以避免负面影响。
多路复用器621所乘的信号输入到信道编码设备602。在信道编码之后,记录头603将信号记录在磁带604上。
这样,本例将history_stream多路复用在与视频数据所处的位置不同的位置中。因此,即使开始码出现在那个位置上,也能够与视频数据分得十分清楚。结果是,本例并不需要将history_stream转换所需要的标记位***convevted_history_stream中。
另外,编码参数可以提供到多路复用器621进行多路复用,而不是转换成history_stream的格式。但是,在这种情况下,数据没有经过压缩,从而增加了关于编码参数的数据量,降低了磁带604的工作效率。因此,历史VLC211按所希望的那样用于在多路复用之前将数据压缩成history_stream的格式。
如图79所示,在磁带录像机601的再现***中,记录头611从磁带604再现的信号由信道解码设备612进行信道解码。解复用器631将信道解码设备612提供的***编码流ST分离成视频流和历史流history_stream,并将视频流提供到解码设备102,而将历史流history_stream发送到历史VLD203。
也就是说,本例只应用了历史VLD 203,而不是图15所示的整个历史解码设备104。
历史VLD 203可变长解码history_stream,将获得的第一至第三代编码参数输出到编码设备106。
另外,解复用器631输出的history_stream输入到转换器212′。转换器212′和随后的用户数据格式化器213′与安装在历史编码设备107中的转换器212和用户数据格式化器213(参见图15)是分开的,但提供相同的功能。
也就是说,转换器212′将标记位附加到解复用器631输入的历史流中生成converted_history_stream,并将其输出到用户数据格式化器213′。用户数据格式化器213′将输入的converted_history_stream转换成user_data,将数据输出到编码设备106。user_data包含第一和第二代编码参数。
解码设备102解码解复用器631输入的视频流,将基带视频信号输出到编码设备106。解码设备102还将***编码参数提供到编码设备106,而同时将它们输出到历史编码设备107。历史编码设备107从输入的***编码参数生成user_data,将数据输出到编码设备106。
与图77中的编码设备106类似,编码设备106执行“一般编码处理”或者“参数重新使用编码处理”以输出第五代编码流ST。这个第五代编码流ST含有记录在其中的图像层的user_data中的第一至***编码参数。
从上面的描述中可以体会到,根据本发明的代码变换器,在过去编码处理期间生成的编码参数描述在在当前编码处理期间生成的编码流的用户数据区中,生成的位流是符合MPEG标准的编码流。因此,任何当前解码器都可以用于解码处理。此外,根据本发明的代码变换器并不需要专用线等发送关于过去编码处理的编码参数,从而传统的数据流发送环境可以直接用于发送过去编码参数。
根据本实施例的代码变换器,在过去编码处理期间生成的编码参数被有选择地描述在在当前编码处理期间生成的编码流中。结果是,无需过分提高输出位流的位速率就可以发送过去编码参数。
根据本实施例的代码变换器,最适合于当编码处理的编码参数是从用于编码的过去和当前编码参数中选择出来的。因此,尽管重复解码编码处理,但也可以避免图象质量变差的累积。
根据本实施例的代码变换器,最适合于当前编码处理的编码参数是根据图像类型从用于编码的过去编码参数中选择出来的。因此,尽管重复解码编码处理,但也可以防止图象质量变差的程度进一步恶化。
根据本实施例的代码变换器还根据包含在过去编码参数中的图像类型确定是否重新使用过去编码参数,从而能够进行最佳的编码处理。
用于上面处理的计算机程序可以通过将它们记录在诸如磁盘、光盘、光-电-磁盘或半导体存储器之类的记录介质上,或者通过诸如因特网、ATM(异步传输模式)或数字卫星之类的网络发送它们以便将它们记录在用户的记录介质上来提供。
另外,根据本实施例的代码变换器,关于表示用于过去编码处理的编码参数的组合的数据组的信息被描述在由代码变换器重新编码的编码流中。这种结构可以生成包含能够通过小容量传输路径发送的历史信息的流。
根据本实施例的代码变换器,用于过去编码处理的若干个编码参数被有选择地组合在一起生成编码历史信息,然而将其叠加在编码流上。结果是,能够抑制源自重新编码的图象质量变差的流可以通过小容量介质发送。
根据本实施例的代码变换器,根据指示数据组的信息提取编码参数,再根据提取的编码参数生成重新编码的编码流。因此,可以编码能够抑制源自重新编码的图象质量变差的和发送到传输容量小的发送介质的流。
根据本实施例的代码变换器将检测到的过去编码处理的编码历史记录在记录记录介质上,从而即使将编码流记录在记录介质上也可以抑制图象质量变差。
根据本实施例的代码变换器检测包含在从记录介质再现的编码流中的编码历史,将该历史与重新编码的编码流进行多路复用再输出,从而即使再次代码变换从记录介质再现的编码流,也可以抑制图象质量的变差。
工业可应用性
本发明涉及编码***和方法,编码设备和方法,解码设备和方法,记录介质和方法,以及再现设备和方法,尤其适用于用于重新编码已经根据MPEG标准编码的编码流以便生成具有不同GOP(图像组)或位速率的重新编码流的代码变换器。
Claims (36)
1.一种用于重新编码源编码流的编码***,包括:
解码装置,用于解码所述源编码流以生成视频数据并从所述源编码流提取由过去编码处理生成的过去编码参数;
编码装置,用于重新编码所述视频数据以生成重新编码流;和
控制装置,用于接收所述过去编码参数,以控制由所述编码装置进行的重新编码处理,并在所述重新编码流中描述被选过去编码参数,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
2.根据权利要求1所述的编码***,其中所述控制装置选择宏块中的编码参数,将它们描述在所述重新编码流中。
3.根据权利要求1所述的编码***,其中所述控制装置与连接在所述编码装置之后的应用无关地将与图像单元有关的所有编码参数描述在所述重新编码流中,并根据所述应用有选择地将宏块中的编码参数描述在所述重新编码流中。
4.根据权利要求1所述的编码***,其中所述被选过去编码参数是取决于连接在所述编码装置之后的应用,根据数据组和用于识别数据组的信息来选择的。
5.根据权利要求1所述的编码***,其中所述数据组和用于识别所述数据组的信息是由操作人员或主计算机选择的。
6.根据权利要求1所述的编码***,其中所述数据组和用于识别所述数据组的信息是按照用于传输所述编码装置输出的编码流的传输路径的容量来选择的。
7.根据权利要求1所述的编码***,其中所述控制装置将所述被选过去编码参数描述在所述重新编码流中作为history-stream(),并将所述被选过去编码参数描述在所述重新编码流中作为re_coding_stream_info()。
8.根据权利要求7所述的编码***,其中所述控制装置将用于识别所述数据组的所述信息描述为red_bw_flag或red_bw_indicator;以及
所述re_coding_stream_info()包含所述red_bw_flag或/和所述red_bw_indicator。
9.根据权利要求1所述的编码***,其中所述数据组包括:
包含至少一个数据组的若干个数据组,用于发送生成完全透明重新编码流所需要的编码参数;和
一个数据组,用于发送生成相对透明重新编码流所需要的编码参数。
10.根据权利要求1所述的编码***,其中所述数据组包括:
包含至少一个数据组的多个数据组,用于将所有所述过去编码参数发送到所述重新编码参数作为history_stream();和
一个数据组,用于不将在picture_data()之后的那些所述过去编码参数发送到所述重新编码参数作为history_stream()。
11.根据权利要求2所述的编码***,其中所述数据组包括:
包含至少一个数据组的多个数据组,用于将图像中和宏块中的编码参数发送到所述重新编码参数作为history_stream();和
一个数据组,用于将图像中的编码参数发送到所述重新编码参数作为history_stream(),而不将宏块中的编码参数发送到所述重新编码参数作为history_stream()。
12.根据权利要求1所述的编码***,其中,
所述编码装置在所述当前编码处理期间,利用指定给参考图像的当前图像类型,编码包含在所述输入视频数据中的参考图像;和
所述控制装置判断所述参考图像是否已经被编码成与在过去编码处理期间指定的相同的图像类型,并根据判断结果控制所述当前编码处理。
13.根据权利要求12所述的编码***,其中所述控制装置选择所述过去编码参数中最佳的那一组,根据所述被选最佳编码参数控制由所述编码装置进行的当前编码处理。
14.根据权利要求12所述的编码***,其中所述控制装置利用在所述过去编码处理期间生成的过去编码参数之一解码所述参考图像。
15.根据权利要求12所述的编码***,其中所述过去编码参数包括在所述过去编码处理期间生成的运动矢量信息,和
所述编码装置包括运动矢量检测装置,用于在所述当前编码处理期间检测关于所述参考图像的运动矢量信息。
16.根据权利要求15所述的编码***,其中所述控制装置根据所述判断结果控制所述运动矢量检测装置的操作。
17.根据权利要求16所述的编码***,其中所述控制装置重新使用包含在所述过去编码参数内的所述运动矢量信息,而不是让所述运动矢量检测装置计算新的运动矢量信息。
18.根据权利要求12所述的编码***,其中所述控制装置选择所述过去编码参数与所述当前编码处理相对应的最佳的那一组,并根据所述最佳编码参数控制由所述编码装置进行的所述当前编码处理。
19.根据权利要求12所述的编码***,其中,
所述编码装置在所述当前编码处理期间,利用指定给参考图像的当前图像类型,编码包含在所述输入视频数据中的所述参考图像;和
所述控制装置判断所述参考图像是否已经被编码成与在过去编码处理期间指定的相同的图像类型,并根据判断结果选择所述最佳编码参数。
20.根据权利要求18所述的编码***,其中,
所述过去编码参数包括表示帧预测模式或场预测模式的预测模式信息;和
所述控制装置根据所述预测模式信息控制所述当前编码处理。
21.根据权利要求18所述的编码***,其中如果所述参考图像已经被编码成与所述过去图像类型相同的图像类型,那么,所述控制装置重新使用包含在所述过去编码参数中的所述预测模式信息,而不是计算新的预测模式信息。
22.根据权利要求18所述的编码***,其中,
所述编码参数包括指示帧内预测、前向预测、后向预测、或双向预测的预测类型信息;和其中
所述控制装置根据所述预测类型信息控制所述当前编码处理。
23.根据权利要求18所述的编码***,其中,
所述编码参数包括表示帧DCT模式或场DCT模式的DCT模式信息;和其中,
所述控制装置根据所述DCT模式信息控制所述当前编码处理。
24.根据权利要求12所述的编码***,其中,所述编码装置拥有生成装置,用于生成服从运动图象专家组MPEG标准的并含有序列层、图象组GOP层、图像层、片层和宏块层的MPEG位流。
25.根据权利要求24所述的编码***,其中,
所述控制装置生成与所述编码装置进行的所述当前编码处理相对应的当前编码参数;和
所述控制装置将所述当前编码参数描述在所述重新编码流的所述图像、片和宏块层中,而有选择地将所述过去编码参数描述在所述重新编码流的图像层的用户数据区中。
26.根据权利要求12所述的编码***,其中,所述控制装置将所述过去编码参数描述在所述重新编码流中作为history_stream()。
27.一种用于编码视频数据的编码设备,包括:
编码装置,用于编码所述视频数据以生成重新编码流;和
控制装置,用于接收用于对所述视频数据进行过去编码处理的所述过去编码参数,并将被选过去编码参数描述在所述重新编码流中,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
28.一种用于编码视频数据的编码方法,包括:
接收步骤,接收用于对所述视频数据进行过去编码处理的过去编码参数;
编码步骤,编码所述视频数据以生成重新编码流;和
控制步骤,接收用于对所述视频数据进行过去编码处理的过去编码参数,并将被选过去编码参数描述在所述重新编码流中,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
29.一种用于解码编码流的解码设备,包括:
解码装置,用于解码所述编码流以生成解码视频数据;
提取装置,用于从所述编码流提取用于识别数据组的信息;和
提取装置,用于在读取用于识别数据组的所述信息的基础上,从包含由过去编码处理产生的所述过去编码参数的所述编码流提取被选过去编码参数,
其中所述被选过去编码参数是根据所述数据组和用于识别所述数据组的信息来选择的。
30.一种用于解码编码流的解码方法,包括:
解码步骤,解码所述编码流以生成解码视频数据;
提取步骤,从所述编码流提取用于识别数据组的信息;和
提取步骤,在读取用于识别数据组的所述信息的基础上,从包含由过去编码处理产生的所述过去编码参数的所述编码流提取被选过去编码参数,
其中所述被选过去编码参数是根据所述数据组和用于识别所述数据组的信息来选择的。
31.如权利要求29所述的解码设备,还包括:
发送装置,用于发送所述解码视频数据和所述提取的过去编码参数。
32.一种用于将编码流记录在记录介质上的记录设备,包括:
解码装置,用于解码源编码流以生成视频数据,和从所述源编码流提取通过过去编码处理的编码参数;
编码装置,用于对所述视频数据进行重新编码处理以生成重新编码流;
控制装置,用于接收所述过去编码参数以控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中;和
记录装置,用于将所述重新编码流记录在记录介质上,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
33.如权利要求32所述的记录设备,按照所述记录介质的容量选择所述数据组和用于识别所述数据组的信息。
34.一种用于将编码流记录在记录介质上的记录方法,包括:
解码步骤,解码源编码流以生成视频数据,和从所述源编码流提取通过过去编码处理的编码参数;
编码步骤,对所述视频数据进行重新编码处理以生成重新编码视频流;
控制步骤,接收所述过去编码参数以控制所述重新编码处理,并根据数据组和用于识别所述所述数据组的信息将被选过去编码参数描述在所述重新编码流中;和
记录步骤,将所述重新编码流记录在记录介质上,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
35.一种用于从记录介质再现编码流的再现设备,其特征在于,所述再现设备包括:
再现装置,用于从所述记录介质再现源编码流;
解码装置,用于解码所述源编码流以生成视频数据,并从所述源编码流提取通过过去编码处理的编码参数;
编码装置,用于对所述视频数据进行重新编码处理以生成重新编码流;和
控制装置,用于控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
36.一种用于从记录介质再现编码流的再现方法,其特征在于,所述再现方法包括:
再现步骤,从所述记录介质再现源编码流;
解码步骤,解码所述源编码流以生成视频数据,并从所述源编码流提取通过过去编码处理的编码参数;
编码步骤,对所述视频数据进行重新编码处理以生成重新编码流;和
控制步骤,控制所述重新编码处理,并将被选过去编码参数描述在所述重新编码流中,
其中所述被选过去编码参数是根据数据组和用于识别所述数据组的信息来选择的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31944/1999 | 1999-02-09 | ||
JP3194499 | 1999-02-09 | ||
JP31944/99 | 1999-02-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1294820A CN1294820A (zh) | 2001-05-09 |
CN1241416C true CN1241416C (zh) | 2006-02-08 |
Family
ID=12345086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008001316A Expired - Fee Related CN1241416C (zh) | 1999-02-09 | 2000-02-09 | 编码***和方法、编码及解码、记录及再现的设备和方法 |
Country Status (7)
Country | Link |
---|---|
US (3) | US7236526B1 (zh) |
EP (1) | EP1069779B1 (zh) |
JP (1) | JP3672185B2 (zh) |
KR (2) | KR100571687B1 (zh) |
CN (1) | CN1241416C (zh) |
ES (1) | ES2569491T3 (zh) |
WO (1) | WO2000048402A1 (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715009A (en) | 1994-03-29 | 1998-02-03 | Sony Corporation | Picture signal transmitting method and apparatus |
CA2265089C (en) * | 1998-03-10 | 2007-07-10 | Sony Corporation | Transcoding system using encoding history information |
KR100571687B1 (ko) | 1999-02-09 | 2006-04-18 | 소니 가부시끼 가이샤 | 코딩 시스템 및 방법, 부호화 장치 및 방법, 복호화 장치및 방법, 기록 장치 및 방법, 및 재생 장치 및 방법 |
JP4487374B2 (ja) * | 1999-06-01 | 2010-06-23 | ソニー株式会社 | 符号化装置及び符号化方法並びに多重化装置及び多重化方法 |
JP3694888B2 (ja) * | 1999-12-03 | 2005-09-14 | ソニー株式会社 | 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体 |
FR2809573B1 (fr) * | 2000-05-26 | 2002-08-16 | Thomson Broadcast Systems | Procede de codage d'un flux d'images video |
US7394854B2 (en) * | 2000-07-21 | 2008-07-01 | Matsushita Electric Industrial Co., Ltd. | Signal transmission system |
KR100394014B1 (ko) * | 2001-06-23 | 2003-08-09 | 엘지전자 주식회사 | 영상 변환 부호화 장치 |
EP1261204A2 (en) * | 2001-03-29 | 2002-11-27 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for data reproduction |
DE10119214A1 (de) * | 2001-04-19 | 2002-10-24 | Highlight Comm Ag Pfaeffikon | Verfahren zum Komprimieren von Videodaten |
US7409094B2 (en) * | 2001-05-04 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Methods and systems for packetizing encoded data |
US9894379B2 (en) * | 2001-07-10 | 2018-02-13 | The Directv Group, Inc. | System and methodology for video compression |
US7609767B2 (en) * | 2002-05-03 | 2009-10-27 | Microsoft Corporation | Signaling for fading compensation |
US7277486B2 (en) | 2002-05-03 | 2007-10-02 | Microsoft Corporation | Parameterization for fading compensation |
NZ520986A (en) * | 2002-08-23 | 2005-04-29 | Ectus Ltd | Audiovisual media encoding system |
FI114071B (fi) * | 2003-01-13 | 2004-07-30 | Nokia Corp | Kuvien käsitteleminen rajoitetulla bittimäärällä |
US8243004B2 (en) * | 2003-03-10 | 2012-08-14 | Fergason Patent Properties, Llc | Apparatus and method for preparing, storing, transmitting and displaying images |
JP4196726B2 (ja) * | 2003-05-14 | 2008-12-17 | ソニー株式会社 | 画像処理装置および画像処理方法、記録媒体、並びに、プログラム |
JP2005004866A (ja) * | 2003-06-11 | 2005-01-06 | Sony Corp | 情報処理装置および方法、記録媒体、並びにプログラム |
JP4120934B2 (ja) * | 2003-06-16 | 2008-07-16 | ソニー株式会社 | 画像処理装置および画像処理方法、記録媒体、並びに、プログラム |
US8009739B2 (en) * | 2003-09-07 | 2011-08-30 | Microsoft Corporation | Intensity estimation/compensation for interlaced forward-predicted fields |
JP4232588B2 (ja) | 2003-09-19 | 2009-03-04 | ソニー株式会社 | 画像処理装置および画像処理方法、並びに、プログラム |
US8165445B2 (en) * | 2004-01-08 | 2012-04-24 | Hewlett-Packard Development Company, L.P. | System, method, and computer-readable medium for analyzing an MPEG-formatted file |
EP1592255A1 (en) * | 2004-04-30 | 2005-11-02 | Matsushita Electric Industrial Co., Ltd. | Motion vector estimation with improved motion vector selection |
JP4655191B2 (ja) * | 2004-09-02 | 2011-03-23 | ソニー株式会社 | 情報処理装置および方法、記録媒体、並びにプログラム |
US8243820B2 (en) * | 2004-10-06 | 2012-08-14 | Microsoft Corporation | Decoding variable coded resolution video with native range/resolution post-processing operation |
US9071847B2 (en) | 2004-10-06 | 2015-06-30 | Microsoft Technology Licensing, Llc | Variable coding resolution in video codec |
JP4383311B2 (ja) * | 2004-10-13 | 2009-12-16 | パナソニック株式会社 | コンテンツ録画装置及びコンテンツ録画装置の制御方法並びにコンテンツ録画装置の記録プログラム |
JP4442891B2 (ja) * | 2004-11-30 | 2010-03-31 | キヤノン株式会社 | 可変長符号化装置及び可変長符号化方法 |
US20060133507A1 (en) * | 2004-12-06 | 2006-06-22 | Matsushita Electric Industrial Co., Ltd. | Picture information decoding method and picture information encoding method |
US20060222251A1 (en) * | 2005-04-01 | 2006-10-05 | Bo Zhang | Method and system for frame/field coding |
FR2888424A1 (fr) * | 2005-07-07 | 2007-01-12 | Thomson Licensing Sas | Dispositif et procede de codage et de decodage de donnees video et train de donnees |
US8055500B2 (en) | 2005-10-12 | 2011-11-08 | Samsung Electronics Co., Ltd. | Method, medium, and apparatus encoding/decoding audio data with extension data |
JP4644097B2 (ja) * | 2005-10-31 | 2011-03-02 | 富士通セミコンダクター株式会社 | 動画像符号化プログラム、プログラム記憶媒体、および符号化装置。 |
JP4666255B2 (ja) * | 2005-12-27 | 2011-04-06 | 日本電気株式会社 | 符号化データ選定、符号化データ設定、再符号化データ生成及び再符号化の方法及び装置 |
US7956930B2 (en) * | 2006-01-06 | 2011-06-07 | Microsoft Corporation | Resampling and picture resizing operations for multi-resolution video coding and decoding |
US9602840B2 (en) * | 2006-02-06 | 2017-03-21 | Thomson Licensing | Method and apparatus for adaptive group of pictures (GOP) structure selection |
KR100713530B1 (ko) * | 2006-04-25 | 2007-05-02 | 삼성전자주식회사 | 이미지 비트 형식 변환 시 화질 열화를 방지하기 위한 영상처리 장치 및 방법 |
WO2008090793A1 (ja) | 2007-01-22 | 2008-07-31 | Nec Corporation | 画像再符号化装置、画像再符号化方法及び画像符号化プログラム |
JP2008193444A (ja) * | 2007-02-06 | 2008-08-21 | Hitachi Ltd | 情報処理装置 |
US8107571B2 (en) * | 2007-03-20 | 2012-01-31 | Microsoft Corporation | Parameterized filters and signaling techniques |
JP4739295B2 (ja) | 2007-08-27 | 2011-08-03 | 日本電信電話株式会社 | 映像信号生成装置、映像信号生成方法、映像信号生成プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP2210421A4 (en) * | 2007-10-16 | 2013-12-04 | Lg Electronics Inc | METHOD AND APPARATUS FOR PROCESSING A VIDEO SIGNAL |
US8150187B1 (en) | 2007-11-29 | 2012-04-03 | Lsi Corporation | Baseband signal quantizer estimation |
JP2009164880A (ja) | 2008-01-07 | 2009-07-23 | Mitsubishi Electric Corp | トランスコーダ及び受信機 |
US8145794B2 (en) | 2008-03-14 | 2012-03-27 | Microsoft Corporation | Encoding/decoding while allowing varying message formats per message |
US9083976B2 (en) | 2008-09-05 | 2015-07-14 | Freescale Semiconductor, Inc. | Processing a video stream in real time based on binary information of the video stream |
US8767838B1 (en) * | 2008-09-05 | 2014-07-01 | Zenverge, Inc. | Cascading multiple video transcoders in a video processing system |
WO2010065507A1 (en) | 2008-12-02 | 2010-06-10 | Ab Initio Software Llc | Data maintenance system |
KR20100072717A (ko) * | 2008-12-22 | 2010-07-01 | 삼성전자주식회사 | 데이터 처리 방법 및 장치 |
KR101041687B1 (ko) * | 2008-12-26 | 2011-06-14 | 경북대학교 산학협력단 | 심전도 신호의 세그먼트 압축 및 복원 방법 |
US20120287999A1 (en) * | 2011-05-11 | 2012-11-15 | Microsoft Corporation | Syntax element prediction in error correction |
GB2493755B (en) * | 2011-08-17 | 2016-10-19 | Canon Kk | Method and device for encoding a sequence of images and method and device for decoding a sequence of images |
US9143802B2 (en) * | 2011-10-31 | 2015-09-22 | Qualcomm Incorporated | Fragmented parameter set for video coding |
US20130113882A1 (en) * | 2011-11-08 | 2013-05-09 | Sony Corporation | Video coding system and method of operation thereof |
US20130188709A1 (en) * | 2012-01-25 | 2013-07-25 | Sachin G. Deshpande | Video decoder for tiles with absolute signaling |
US9432666B2 (en) * | 2012-03-29 | 2016-08-30 | Intel Corporation | CAVLC decoder with multi-symbol run before parallel decode |
US10051264B2 (en) * | 2012-04-20 | 2018-08-14 | Qualcomm Incorporated | Marking reference pictures in video sequences having broken link pictures |
JP6160802B2 (ja) * | 2012-08-14 | 2017-07-12 | シャープ株式会社 | ビット符号化装置、ビット復号装置、送信装置、受信装置、ビット符号化方法、ビット復号方法、送信方法、受信方法およびプログラム |
US9584825B2 (en) * | 2012-09-27 | 2017-02-28 | Qualcomm Incorporated | Long-term reference picture signaling in video coding |
WO2014163209A1 (ja) * | 2013-04-05 | 2014-10-09 | シャープ株式会社 | 画像復号装置 |
US20150103883A1 (en) * | 2013-10-11 | 2015-04-16 | Mediatek Inc. | Method and apparatus for fast intra prediction |
JP6147368B2 (ja) * | 2014-02-03 | 2017-06-14 | 三菱電機株式会社 | 画像符号化装置、画像復号装置、符号化ストリーム変換装置、画像符号化方法、及び画像復号方法 |
US9716888B2 (en) * | 2014-03-26 | 2017-07-25 | Vixs Systems, Inc. | Video processing with static and dynamic regions and method for use therewith |
KR102423434B1 (ko) * | 2015-02-17 | 2022-07-22 | 소니그룹주식회사 | 송신 장치, 송신 방법, 수신 장치 및 수신 방법 |
CA3013335A1 (en) | 2016-02-02 | 2017-08-10 | Immunolight, Llc | Phosphor-containing drug activator, suspension thereof, system containing the suspension, and methods for use |
JP6977422B2 (ja) * | 2017-09-13 | 2021-12-08 | 株式会社Jvcケンウッド | トランスコード装置、トランスコード方法及びトランスコードプログラム |
CN110198474B (zh) * | 2018-02-27 | 2022-03-15 | 中兴通讯股份有限公司 | 一种码流处理方法及装置 |
CN110474711B (zh) * | 2018-05-11 | 2021-11-09 | Tcl华星光电技术有限公司 | 编码方法、设备及可读存储介质 |
EP3843405A4 (en) * | 2018-10-05 | 2021-10-27 | LG Electronics Inc. | IMAGE CODING PROCESS USING HISTORY-BASED MOVEMENT INFORMATION, AND ASSOCIATED DEVICE |
CN113037733A (zh) * | 2021-03-01 | 2021-06-25 | 安徽商信政通信息技术股份有限公司 | 航空航天涉密数据的非物理接触无损传递的方法及*** |
Family Cites Families (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2443769A2 (fr) * | 1978-12-08 | 1980-07-04 | Telediffusion Fse | Compression et expansion (quantification) de signaux numeriques de television a codage differentiel |
DE3613343A1 (de) | 1986-04-19 | 1987-10-22 | Philips Patentverwaltung | Hybrid-codierer |
US4825448A (en) * | 1986-08-07 | 1989-04-25 | International Mobile Machines Corporation | Subscriber unit for wireless digital telephone system |
US5187755A (en) | 1988-06-30 | 1993-02-16 | Dainippon Screen Mfg. Co., Ltd. | Method of and apparatus for compressing image data |
WO1991003901A1 (fr) | 1989-09-04 | 1991-03-21 | Fujitsu Limited | Systeme d'echange a relais de donnees a multiplexage temporel |
DE69122595T2 (de) | 1990-12-27 | 1997-03-20 | Toshiba Kawasaki Kk | Aufzeichnungs- und Abspielgerät |
US5260783A (en) * | 1991-02-21 | 1993-11-09 | Gte Laboratories Incorporated | Layered DCT video coder for packet switched ATM networks |
US5148272A (en) | 1991-02-27 | 1992-09-15 | Rca Thomson Licensing Corporation | Apparatus for recombining prioritized video data |
US5212549A (en) * | 1991-04-29 | 1993-05-18 | Rca Thomson Licensing Corporation | Error concealment apparatus for a compressed video signal processing system |
US5227878A (en) * | 1991-11-15 | 1993-07-13 | At&T Bell Laboratories | Adaptive coding and decoding of frames and fields of video |
US5327520A (en) * | 1992-06-04 | 1994-07-05 | At&T Bell Laboratories | Method of use of voice message coder/decoder |
JP3196906B2 (ja) | 1992-08-21 | 2001-08-06 | 富士ゼロックス株式会社 | 画像信号の符号化装置 |
JP3358835B2 (ja) | 1992-12-14 | 2002-12-24 | ソニー株式会社 | 画像符号化方法及び装置 |
JP3163830B2 (ja) | 1993-03-29 | 2001-05-08 | ソニー株式会社 | 画像信号伝送方法及び装置 |
TW301098B (zh) | 1993-03-31 | 1997-03-21 | Sony Co Ltd | |
JPH06292019A (ja) | 1993-04-02 | 1994-10-18 | Fujitsu Ltd | 画像データ圧縮装置と画像符号圧縮装置 |
JP3085024B2 (ja) | 1993-06-01 | 2000-09-04 | 松下電器産業株式会社 | 画像再圧縮器及び画像記録装置 |
JPH0795584A (ja) * | 1993-07-30 | 1995-04-07 | Matsushita Electric Ind Co Ltd | 画像符号化装置 |
NL9301358A (nl) * | 1993-08-04 | 1995-03-01 | Nederland Ptt | Transcodeerinrichting. |
JP3081425B2 (ja) | 1993-09-29 | 2000-08-28 | シャープ株式会社 | 映像符号化装置 |
US5452006A (en) * | 1993-10-25 | 1995-09-19 | Lsi Logic Corporation | Two-part synchronization scheme for digital video decoders |
KR970003789B1 (ko) * | 1993-11-09 | 1997-03-21 | 한국전기통신공사 | 비디오 부호기의 전송율을 제어하기 위한 비트 할당 방법 |
EP0656729B1 (en) | 1993-12-01 | 2000-02-09 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for editing or mixing compressed pictures |
US5537440A (en) * | 1994-01-07 | 1996-07-16 | Motorola, Inc. | Efficient transcoding device and method |
US5500678A (en) * | 1994-03-18 | 1996-03-19 | At&T Corp. | Optimized scanning of transform coefficients in video coding |
US5563593A (en) | 1994-03-18 | 1996-10-08 | Lucent Technologies Inc. | Video coding with optimized low complexity variable length codes |
US5754235A (en) | 1994-03-25 | 1998-05-19 | Sanyo Electric Co., Ltd. | Bit-rate conversion circuit for a compressed motion video bitstream |
US5715009A (en) * | 1994-03-29 | 1998-02-03 | Sony Corporation | Picture signal transmitting method and apparatus |
US5534937A (en) * | 1994-04-14 | 1996-07-09 | Motorola, Inc. | Minimum-delay jitter smoothing device and method for packet video communications |
US5541852A (en) * | 1994-04-14 | 1996-07-30 | Motorola, Inc. | Device, method and system for variable bit-rate packet video communications |
JPH07288804A (ja) * | 1994-04-18 | 1995-10-31 | Kokusai Denshin Denwa Co Ltd <Kdd> | 画像信号の再符号化装置 |
US5940130A (en) | 1994-04-21 | 1999-08-17 | British Telecommunications Public Limited Company | Video transcoder with by-pass transfer of extracted motion compensation data |
DE4416967A1 (de) | 1994-05-13 | 1995-11-16 | Thomson Brandt Gmbh | Verfahren und Vorrichtung zur Transcodierung von Bitströmen mit Videodaten |
JPH10503895A (ja) | 1994-06-17 | 1998-04-07 | スネル アンド ウィルコックス リミテッド | 映像圧縮 |
GB9413001D0 (en) | 1994-06-28 | 1994-08-17 | Ntl | Methods for the synchronisation of successive digital video compression/decompression systems |
EP0690392B1 (en) | 1994-06-30 | 2001-09-26 | Koninklijke Philips Electronics N.V. | Method and device for transcoding a sequence of coded digital signals |
US5512953A (en) | 1994-08-09 | 1996-04-30 | At&T Corp. | Method and apparatus for conversion of compressed bit stream representation of video signal |
JPH0865663A (ja) | 1994-08-19 | 1996-03-08 | Canon Inc | ディジタル画像情報処理装置 |
JP3629728B2 (ja) * | 1994-08-31 | 2005-03-16 | ソニー株式会社 | 動画像信号符号化方法、動画像信号符号化装置及び動画像信号記録媒体 |
JP3623989B2 (ja) | 1994-09-22 | 2005-02-23 | キヤノン株式会社 | 画像変換方法及び装置 |
JP3293369B2 (ja) * | 1994-10-12 | 2002-06-17 | ケイディーディーアイ株式会社 | 画像情報の再符号化方法及び装置 |
JP3058028B2 (ja) | 1994-10-31 | 2000-07-04 | 三菱電機株式会社 | 画像符号化データ再符号化装置 |
US5889561A (en) * | 1994-11-04 | 1999-03-30 | Rca Thomson Licensing Corporation | Method and apparatus for scaling a compressed video bitstream |
GB9501736D0 (en) | 1995-01-30 | 1995-03-22 | Snell & Wilcox Ltd | Video signal processing |
EP0755610B1 (en) * | 1995-02-15 | 2000-04-12 | Koninklijke Philips Electronics N.V. | Method and device for transcoding video signals |
JPH08298649A (ja) | 1995-04-27 | 1996-11-12 | Oki Electric Ind Co Ltd | 映像符号化・復号化システム、映像符号化装置及び映像復号化装置 |
US5774206A (en) | 1995-05-10 | 1998-06-30 | Cagent Technologies, Inc. | Process for controlling an MPEG decoder |
GB2301970B (en) * | 1995-06-06 | 2000-03-01 | Sony Uk Ltd | Motion compensated video processing |
EP2271103A3 (en) | 1996-07-15 | 2013-01-16 | Amstr. Investments 4 K.G., LLC | Video Signal Compression |
JP3956323B2 (ja) | 1996-07-16 | 2007-08-08 | Kddi株式会社 | 画像情報の再符号化方法及び装置 |
JPH1032830A (ja) | 1996-07-16 | 1998-02-03 | Kokusai Denshin Denwa Co Ltd <Kdd> | 画像情報の再符号化方法及び装置 |
US6856650B1 (en) | 1996-07-16 | 2005-02-15 | Kokusai Denshin Denwa Co., Ltd. | Method and apparatus for second or later generation coding of video signal |
JPH1051766A (ja) * | 1996-08-05 | 1998-02-20 | Mitsubishi Electric Corp | 画像符号化データ変換装置 |
JP3623056B2 (ja) | 1996-09-10 | 2005-02-23 | ソニー株式会社 | 動画像圧縮装置 |
GB2318246B (en) | 1996-10-09 | 2000-11-15 | Sony Uk Ltd | Processing digitally encoded signals |
GB2318472B (en) | 1996-10-09 | 2000-11-15 | Sony Uk Ltd | Processing encoded signals |
US6163573A (en) * | 1996-12-12 | 2000-12-19 | Sony Corporation | Equipment and method for compressing picture data |
US5870146A (en) * | 1997-01-21 | 1999-02-09 | Multilink, Incorporated | Device and method for digital video transcoding |
CA2286708A1 (en) | 1997-05-09 | 1998-11-12 | Neomedia Technologies, Inc. | Method for embedding links to a networked resource in a transmission medium |
JP3022405B2 (ja) * | 1997-06-03 | 2000-03-21 | 日本電気株式会社 | 画像メモリ制御装置 |
US5907374A (en) | 1997-06-30 | 1999-05-25 | Hewlett-Packard Company | Method and apparatus for processing a compressed input bitstream representing an information signal |
US6012091A (en) | 1997-06-30 | 2000-01-04 | At&T Corporation | Video telecommunications server and method of providing video fast forward and reverse |
US6100940A (en) * | 1998-01-21 | 2000-08-08 | Sarnoff Corporation | Apparatus and method for using side information to improve a coding system |
GB2333656B (en) * | 1998-01-22 | 2002-08-14 | British Broadcasting Corp | Compressed signals |
US6574274B2 (en) * | 1998-02-27 | 2003-06-03 | Sony Corporation | Picture signal processing system, decoder, picture signal processing method, and decoding method |
CA2265089C (en) | 1998-03-10 | 2007-07-10 | Sony Corporation | Transcoding system using encoding history information |
JP3724204B2 (ja) | 1998-03-10 | 2005-12-07 | ソニー株式会社 | 符号化装置および方法、並びに記録媒体 |
KR100591487B1 (ko) * | 1998-04-30 | 2006-06-21 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 트랜스코더 및 데이터 스트림의 트랜스코딩 방법 |
US6167084A (en) * | 1998-08-27 | 2000-12-26 | Motorola, Inc. | Dynamic bit allocation for statistical multiplexing of compressed and uncompressed digital video signals |
JP2000209425A (ja) | 1998-11-09 | 2000-07-28 | Canon Inc | 画像処理装置及び方法並びに記憶媒体 |
KR100571687B1 (ko) * | 1999-02-09 | 2006-04-18 | 소니 가부시끼 가이샤 | 코딩 시스템 및 방법, 부호화 장치 및 방법, 복호화 장치및 방법, 기록 장치 및 방법, 및 재생 장치 및 방법 |
JP4295861B2 (ja) | 1999-05-31 | 2009-07-15 | 株式会社東芝 | トランスコーダ装置 |
KR100357093B1 (ko) * | 1999-06-02 | 2002-10-18 | 엘지전자 주식회사 | 동영상 압축 복원시스템에서의 오류 은폐장치 및 방법 |
GB9920929D0 (en) * | 1999-09-03 | 1999-11-10 | Sony Uk Ltd | Video signal processor |
JP3694888B2 (ja) * | 1999-12-03 | 2005-09-14 | ソニー株式会社 | 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体 |
US6369722B1 (en) * | 2000-03-17 | 2002-04-09 | Matra Nortel Communications | Coding, decoding and transcoding methods |
FR2809573B1 (fr) * | 2000-05-26 | 2002-08-16 | Thomson Broadcast Systems | Procede de codage d'un flux d'images video |
US20020016755A1 (en) * | 2000-07-17 | 2002-02-07 | Pearce Kenneth F. | Method of establishing a commercial relationship between a service provider and a potential customer of the service, including a reasoning criterion, and method of face-to-face advertising in a public place |
JP3632591B2 (ja) | 2000-11-13 | 2005-03-23 | 日本電気株式会社 | 画像処理装置、方法及びコンピュータ読み取り可能な記録媒体 |
EP1292153B1 (en) * | 2001-08-29 | 2015-08-19 | Canon Kabushiki Kaisha | Image processing method and apparatus, computer program, and storage medium |
JP4196726B2 (ja) * | 2003-05-14 | 2008-12-17 | ソニー株式会社 | 画像処理装置および画像処理方法、記録媒体、並びに、プログラム |
JP2005304065A (ja) | 2005-05-16 | 2005-10-27 | Sony Corp | 復号装置および復号方法、符号化装置および符号化方法、情報処理装置および情報処理方法、並びに、記録媒体 |
-
2000
- 2000-02-09 KR KR1020007011242A patent/KR100571687B1/ko not_active IP Right Cessation
- 2000-02-09 WO PCT/JP2000/000720 patent/WO2000048402A1/ja not_active Application Discontinuation
- 2000-02-09 KR KR1020057020018A patent/KR100571307B1/ko not_active IP Right Cessation
- 2000-02-09 US US09/647,960 patent/US7236526B1/en not_active Expired - Fee Related
- 2000-02-09 CN CNB008001316A patent/CN1241416C/zh not_active Expired - Fee Related
- 2000-02-09 ES ES00902884.6T patent/ES2569491T3/es not_active Expired - Lifetime
- 2000-02-09 EP EP00902884.6A patent/EP1069779B1/en not_active Expired - Lifetime
- 2000-02-09 JP JP2000599213A patent/JP3672185B2/ja not_active Expired - Fee Related
-
2007
- 2007-06-12 US US11/811,948 patent/US8681868B2/en not_active Expired - Fee Related
- 2007-06-12 US US11/811,797 patent/US7680187B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8681868B2 (en) | 2014-03-25 |
KR20050109629A (ko) | 2005-11-21 |
JP3672185B2 (ja) | 2005-07-13 |
KR100571307B1 (ko) | 2006-04-17 |
US7236526B1 (en) | 2007-06-26 |
EP1069779A1 (en) | 2001-01-17 |
KR100571687B1 (ko) | 2006-04-18 |
EP1069779B1 (en) | 2016-04-13 |
CN1294820A (zh) | 2001-05-09 |
WO2000048402A1 (en) | 2000-08-17 |
EP1069779A4 (en) | 2007-10-10 |
KR20010042575A (ko) | 2001-05-25 |
US20070253488A1 (en) | 2007-11-01 |
ES2569491T3 (es) | 2016-05-11 |
US20080043839A1 (en) | 2008-02-21 |
US7680187B2 (en) | 2010-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1241416C (zh) | 编码***和方法、编码及解码、记录及再现的设备和方法 | |
CN1178516C (zh) | 利用编码历史信息的编码转换*** | |
CN1056716C (zh) | 动态图象的编码/解码方法、装置及其存储介质 | |
CN1190081C (zh) | 发送和接收动态图像数据的方法及其设备 | |
CN1101038C (zh) | 再生装置 | |
CN1315331C (zh) | 图像信号转换方法和设备以及图像提供*** | |
CN1339922A (zh) | 编码信号的分离和合并装置、方法及计算机程序产品 | |
CN1926576A (zh) | 用于数字编码3d立体视频图像的方法和*** | |
CN1213935A (zh) | 分层图像编码解码、数字广播信号记录及图像音频的解码 | |
CN1653822A (zh) | 用于代码转换压缩视频比特流的方法和设备 | |
CN1943246A (zh) | 图像解码方法 | |
CN1312655A (zh) | 图像编码器及其方法、图像译码器及其方法、和分配媒体 | |
CN1617591A (zh) | 在视讯编码器中适应性过滤离散余弦转换系数的***与方法 | |
CN1153468C (zh) | 编码装置、译码装置和编码、译码方法以及图象处理装置 | |
CN1159908C (zh) | 记录/重放装置和方法 | |
CN1620147A (zh) | 编码信号分离装置、合成装置、分离合成***及其方法 | |
CN1642284A (zh) | 图像处理设备和方法、程序以及记录介质 | |
CN1882093A (zh) | 利用编码历史信息的编码转换*** | |
CN1158865C (zh) | 数字视频信号的记录和重放设备及其记录和重放的方法 | |
CN1925625A (zh) | 数字视频信号的记录和重放设备及其记录和重放的方法 | |
CN1941890A (zh) | 发送和接收动态图像数据的方法及其设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
BB1A | Publication of application | ||
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060208 Termination date: 20180209 |