当前位置: 代码迷 >> 综合 >> 《视频解密》中文版(第四版)第十三章 MPEG-2(第二部分)
  详细解决方案

《视频解密》中文版(第四版)第十三章 MPEG-2(第二部分)

热度:63   发布时间:2023-12-09 21:26:01.0
视频比特流

图13.5显示了视频比特流,一个7层的层次结构。从高到底的层是:

视频序列

序列头

图像组(GOP)

图像

分片

宏块(MB)

一些扩展可以被用来支持各种层次的能力。这些扩展是:

 图13.5 MPEG-2视频比特流层次结构。标志和保留位没有显示

 

序列扩展

序列显示扩展

序列缩放扩展

图像编码扩展

量化矩阵扩展

图像显示扩展

图像时间缩放扩展

图像空间缩放扩展

如果视频序列的第一个序列头没有跟随一个扩展开始码(000001B5H),那么视频比特流必须符合MPEG-1视频比特流。

对于MPEG-2视频比特流,一个扩展开始码(000001B5H)和一个序列扩展必须跟随在每个序列头之后。

注意开始码(000001xxH)之前必须插入0~7个“0”以保证字节对齐。


视频序列
序列结束码

这个32-比特的字段的值是000001B7H,用于结束视频序列。


序列头

一个序列头应该每0.5秒出现一次。它的结构如图13.5所示。如果没有跟随一个序列扩展,那么比特流复合MPEG-1。


序列头码字

这个32-比特串的值是000001B3H,用于指示一个序列头的开始。


水平尺寸值

这是一个最低12有效位的宽度(采样点数),是图像可见部分的Y分量。14比特值的最高两位指示水平尺寸扩展。0值是不允许的。


垂直尺寸值

这是一个最低12有效位的高度(扫描行数),是图像可见部分的Y分量。14比特值的最高两位指示垂直尺寸扩展。0值是不允许的。


宽高比信息

这个4-比特的码字或者指示了采样宽高比(SAR)或显示宽高比(DAR),如表13.9所示。

如果seurence_display_extension不存在,那么SAR由如下确定:

      SAR = DAR×(水平尺寸/垂直尺寸)

如果seurence_display_extension存在,那么SAR由如下确定:

      SAR = DAR×(水平显示尺寸/垂直显示尺寸)

 


SAR

DAR

编码

禁止

禁止

0000

1.000

-

0001

-

3/4

0010

-

9/16

0011

-

1/2.21

0100

-

保留

0101

-

0110

-

0111

-

1000

-

1001

-

1010

-

1011

-

1100

-

1101

-

1110

 

1111


 

表13.9 MPEG-2宽高比信息码字


帧速率码

这个4-比特的码字或者指示了帧速率,如表13.10所示。

真实的帧速率由如下关系确定:

帧速率 = frame_rate_value×(frame_rate_extension_n + 1)/

(frame_rate_extension_d + 1)

当表13.10中的条目frame_rate_n和frame_rate_extension被指定为“00”时。如果progressive_sequence是“1”,那么解码器输出的两帧之间的时间是帧速率的倒数。如果progressive_sequence是“0”,那么解码器输出的两帧之间的时间是帧速率一半的倒数。


比特速率值

它是一个30-比特二进制数的低8个比特。12个高比特位是bit_rate_extension。这指示了比特流的比特率,以400bps为单位,向上舍入。0值是不允许的。对于ATSC标准,值必须 48500D(对于高数据率模式 97000D)。对于OpenCable?标准的64QAM系统,值必须 67500D(对于256QAM系统 97000D)。

 


帧/秒

编码

禁止

0000

24/1.001

0001

24

0010

25

0011

30/1.001

0100

30

0101

50

0110

60/1.001

0111

60

1000

保留

1001

1010

1011

1100

1101

1110

1111


 

表13.10 MPEG-2帧速率码码字


标志位

总是为“1”


Vbv_buffer_size_value

它是一个18比特二进制数的低10个有效位。8个高有效位用于vbv_buffer_size_extension。定义了解码序列所需的视频缓存校验的大小。它定义为:

B = 16×1024×vbv_buffer_size

对于ATSC和OpenCable?标准,值必须 488D。


Constrained_parameters_flag

由于在MPEG-2中没有意义,这个比特被设置成“0”。


Load_intr_quantizer_matrix

如果跟随一个intra_quantizer_matrix,那么这个比特置“1”。如果设置为“0”,那么接下来的默认值被用于帧内块(Y和CbCr),直到出现下一个序列头或quant_matrix_extension。

                          


Intra_quantizer_matrix

一个可选的64个8比特值的列表替代当前的值。0值是不允许的。Intra_quant[0,0]的值总是8。这些值一直有效直到出现一个序列头或quant_matrix_extension为止。对于4:2:2和4:4:4数据格式,新的值同时用于Y和CbCr帧内矩阵,除非导入一个不同的CbCr帧内矩阵。


Load_non_intr_quantizer_matrix

如果跟随一个no_intra_quantizer_matrix,那么这个比特置“1”。如果设置为“0”,那么接下来的默认值被用于帧内块(Y和CbCr),直到出现下一个序列头或quant_matrix_extension。

                          


Non_intra_quantizer_matrix

一个可选的64个8比特值的列表替代当前的值。0值是不允许的。这些值一直有效直到出现一个序列头或quant_matrix_extension为止。对于4:2:2和4:4:4数据格式,新的值同时用于Y和CbCr帧内矩阵,除非导入一个不同的CbCr帧内矩阵。


用户数据
User_data_start_code

这个可选的32-比特串000001B2H指示用户数据(user_data)的开始。用户数据持续到探测到另一个开始码。


User_data

仅当存在user_data_start_code时,这些n×8比特的数据才存在。用户数据(user_data)不能包括23个或以上的连续0比特。


序列扩展

一个序列扩展可能只在一个序列头后面出现。


Extension_start_code

这个32-比特的串000001B5H指示不同于MPEG-1的扩展数据的开始。


Extension_start_code_ID

这个4比特字段的值是“0001”,指示一个扩展序列的开始。对于MPEG-2视频码流,一个序列扩展必须跟随在每个序列头之后。


Profile_and_level_indication

这个8-比特的字段指定配置和级别,如表13.11所示。

比特7:逃逸比特

比特6~4:配置ID

比特3~0:级别ID

 


配置

配置ID码

级别

级别ID码

保留

000

保留

0000

001

保留

0001

空间可分级

010

保留

0010

SNR可分级

011

保留

0011

100

0100

简单

101

保留

0101

保留

110

高1440

0110

保留

111

保留

0111

 

1000

保留

1001

1010

保留

1011

保留

1100

保留

1101

保留

1110

保留

1111


 

表13.11 MPEG-2 profile_and_level_indication码字


Progressive_sequence

这个比特为“1”指示仅存在逐行扫描图像。“0”指示帧和场图像都可能存在,帧图像可能是逐行扫描或隔行扫描的。对于SVCD标准,这个值必须为“0”。


Chroma_format

这2-比特码字指示CbCr的格式,如表13.12所示。对于ATSC和OpenCable?标准,值必须是“01”。

 


色度格式

码字

保留

00

4:2:0

01

4:2:2

10

4:4:4

11


 

表13.12 MPEG-2色度格式码字

 图13.6    MPEG-2扩展序列结构。标志位没有显示


Horizontal_size_extension

它是horizontal_size(水平尺寸)的最高两位。对于ATSC和OpenCable?标准,值必须是“00”。


Vertical_size_extension

它是verticall_size(垂直尺寸)的最高两位。对于ATSC和OpenCable?标准,值必须是“00”。


Bit_rate_extension

它是bit_rat(比特率)的高12位。对于ATSC和OpenCable?标准,值必须是“0000 0000 0000”。


Mark_bit

总是为“1”。


vbv_buffer_size_extension

它是vbv_buffer_size的高8比特。对于ATSC和OpenCable?标准,值必须是“0000 0000”。


Low_delay

这个比特为“1”指示不存在B图像,所以没有帧重排序延时。对于SVCD标准,这个值必须为“0”。


Frame_rate_extension_n

见frame_rate_code规定的这2比特二进制值。对于ATSC和OpenCable?标准,值必须是“00000”。


Frame_rate_extension_d

见frame_rate_code规定的这5比特二进制值。对于ATSC和OpenCable?标准,值必须是“00”。


序列显示扩展(Squence Display Extension)

这个可选的扩展可能仅出现在序列扩展之后。


Extension_start_code

这个32-比特串000001B5H指示一个新的扩展数据系列的开始。


Extension_start_code_ID

这个4-比特字段的值是“0010”,指示一个扩展显示序列的开始。这个扩展提供的信息不影响解码进程,可能会被忽略。它允许解码的图像显示的尽可能准确。


Video_format

这个3-比特的码字指示MPEG编码前图像源,如表13.13所示。对于ATSC和OpenCable?标准,值必须是“000”。


Color_description

这个比特为“1”指示比特流中存在color_primaries,transfer_characteristics和matrix_coefficients。

 


视频格式

码字

分量

000

PAL

001

NTSC

010

SECAM

011

MAC

100

未指定

101

保留

110

保留

111


 

表13.13  MPEG-2视频格式码字


Color_primaries

这个可选的8-bit码字指示原色的色度坐标,如表13.14所示。如果sequence_display_extension不存在或color_description =“0”,说明必须使用默认值。

这个信息可能被用于在MPEG-2解码之后补偿原色显示的颜色调整处理。

 

 

 

 


原色

码字

默认应用

禁止

0000 0000

 

BT.709,SMPTE 274M

0000 0001

MPEG-2,ATSC,DVB 25Hz HDTV,DVB 30Hz HDTV

未使用

0000 0010

 

保留

0000 0011

 

BT.470系统M

0000 0100

DVB-Video 30Hz

BT.470系统M,G,I

0000 0101

DVD-Video 25Hz,DVB 25Hz SDTV

SMPTE 170M

0000 0110

DVD-Video 30Hz,DVB 30Hz SDTV

SMPTE 240M

0000 0111

 

保留

0000 1000

 

保留

1111 1111

 


 

表13.14  MPEG-2原色码字


Transfer_characteristics

这个8-比特的码字描述源图像的光电变换特性,如表13.15所示。如果sequence_display_extension不存在或color_description =“0”,那么默认值必须被使用。

这个信息可能被用于MPEG-2解码之后补偿的显示伽马校正处理。

 


光-电转换特性

码字

默认应用

禁止

0000 0000

 

BT.709,SMPTE 274M

0000 0001

MPEG-2,ATSC,DVB 25Hz HDTV,DVB 30Hz HDTV

未使用

0000 0010

 

保留

0000 0011

 

BT.470系统M

0000 0100

DVB-Video 30Hz

BT.470系统M,G,I

0000 0101

DVD-Video 25Hz,DVB 25Hz SDTV

SMPTE 170M

0000 0110

DVD-Video 30Hz,DVB 30Hz SDTV

SMPTE 240M

0000 0111

 

线性

0000 1000

 

保留

0000 1001

 

保留

1111 1111

 


 

表13.15  MPEG-2变换特性码字


Matrix_coefficients

这个可选的8-比特码字描述用于从R’G’B’推导到YCbCr的系数,如表13.16所示。如果sequence_display_extension不存在或color_sescription =“0”,那么表示必须使用默认值。

如果需要,在MPEG-2解码之后,这个信息被用于选择适当的YCbCr-RGB矩阵。


Display_horizontal_size

见display_vertical_size指定的这14-比特二进制数。


Marker_bit

总是为“1”。


Display_vertical_size

这个14-比特二进制数,结合display_horizontal_size,定义了有效显示区域。如果显示区域比编码图像尺寸要小,那么仅显示图像的一部分。如果显示区域大于图像尺寸,那么图像只是显示的一部分。

 


原色

码字

默认应用

禁止

0000 0000

 

BT.709,SMPTE 274M

0000 0001

MPEG-2,ATSC,DVB 25Hz HDTV,DVB 30Hz HDTV

未使用

0000 0010

 

保留

0000 0011

 

FCC

0000 0100

 

BT.470系统M,G,I

0000 0101

DVD-Video 25Hz,DVB 25Hz SDTV

SMPTE 170M

0000 0110

DVD-Video 30Hz,DVB 30Hz SDTV

SMPTE 240M

0000 0111

 

保留

0000 1000

 

保留

1111 1111

 


 

表13.16  MPEG-2矩阵系数码字

 图13.7    MPEG-2显示扩展序列结构。标志位没有显示


序列可分级扩展

这个可选的扩展可能仅在序列扩展之后出现。


Extension_start_code

这个32-比特的串000001B5H指示一套新的扩展数据的开始。


Extension_start_code_ID

这个4-比特字段的值是“0101”,指示可分级扩展序列的开始。这个扩展指定用于视频比特流的分级模式。如果sequence_scalable_extension在比特流中不存在,那么不使用可扩展性。一个基本层的可扩展层次结构没有sequence_scalable_extension,除了数据分区的情况之外。

 图13.8    MPEG-2序列可分级扩展结构。标志位没有显示


Scalble_mode

这个2-比特的码字指示视频序列的可扩展类型,如表13.17所示。

 


可分级模式

码字

数据分区

00

空间可分级

01

SNR可分级

10

时间可分级

11


表13.17  MPEG-2可分级模式码字


Layer_ID

这个4-比特的二进制数指示可分级结构中的层。即本层的ID是“0000”。在数据分区中的layer_ID“0000”分配到分区层0,layer_ID“0001”分配到分区层1。


Lower_layer_prediction_horizontal_size

仅当scalable_mode =“01”时,这个可选的14-比特二进制数才存在。它指示较低层帧用于预测的水平尺寸。在较低层比特流中它包含了horizontal_size的值。


Marker_bit

它的值总是“1”。只有当scalable_mode = “01”时,它才存在。


Lower_layer_prediction_vertical_size

仅当scalable_mode =“01”时,这个可选的14-比特二进制数才存在。它指示较低层帧用于预测的垂直尺寸。在较低层比特流中它包含vertical_size的值。


Horizontal_subsampling_factor_m

仅当scalable_mode =“01”时,这个可选的5-比特二进制数才存在,并且影响空间上采样处理。“00000”值是不允许的。


Horizontal_subsampling_factor_n

仅当scalable_mode =“01”时,这个可选的5-比特二进制数才存在,并且影响空间上采样处理。“00000”值是不允许的。


Vertical_subsampling_factor_m

仅当scalable_mode =“01”时,这个可选的5-比特二进制数才存在,并且影响空间上采样处理。“00000”值是不允许的。


Vertical_subsampling_factor_n

仅当scalable_mode =“01”时,这个可选的5-比特二进制数才存在,并且影响空间上采样处理。“00000”值是不允许的。


Picture_mux_enable

仅当scalable_mode =“11”时,这个可选的1-比特二进制数才存在。如果置为“1”,那么picture_mux_order和picture_mux_factor参数用于显示前的再复用。


Mux_to_progressive_sequence

仅当scalable_mode =“11”和picture_mux_enable =“1”时,这个可选的1-比特二进制数才存在。如果置“1”,那么它指示为了显示解码的图片暂时混合生成逐行扫描的序列。当空间复用生成一个隔行扫描序列时,这个标志是“0”。


Picture_mux_order

仅当scalable_mode =“11”时,这个可选的1-比特二进制数才存在。它指示在第一个基本层图像之前的增强层图像数量。它用来帮助解码器在现实之前图片妥善再复用。


Picture_mux_factor

仅当scalable_mode =“11”时,这个可选的1-比特二进制数才存在。它表示连续基本层图像之间的增强层图像数量,并用来帮助解码器在现实之前图片妥善再复用。


图像组(GOP)层

一个GOP头应该每2秒出现一次。每个图像组的数据包括一个GOP头,其后跟随图像数据。其结构如图13.5所示。DVD标准在这一层使用用于封闭式字幕数据的用户数据扩展。


Group_start_code

这个32-比特的串000001B8H指示一个图像组的开始。


Time_code

这些25-比特值指示时间码信息,如表13.18所示。仅当帧速率是30/1.001(29.97)Hz时,Drop_frame_flag可以被置“1”。

 


时间码

值的范围

位数目

drop_frame_flag

 

1

time_code_hours

0~23

5

time_code_minutes

0~59

6

marker_bit

1

1

time_code_seconds

0~59

6

time_code_pictures

0~59

6


 

表13.18  MPEG-2时间码字段


Closed_gop

如果图像组在没有参考前一个图像组的运动向量已经被编码,那么这个标志置“1”。该位允许支持编辑压缩码流。


Broken_link

在编码期间这个1-比特的为置“1”。当一个图像组的B帧之后跟随第一个I帧而不能正确解码时,它被置“1”。


图像层

每个图像的数据包括一个图像头,后面跟随分片数据。它的结构在图13.5中显示。如果存在一个序列扩展,则每个图像头就跟随一个图像编码扩展。

在这一层中,一些实现在宽高比信息和用户扩展数据之间使能帧准确的切换。在ATSC标准中也在这一层使用EIA-708封闭字幕的用户数据。


Picture_start_code

这个32-比特的串的值是00000100H。


Temporal_reference

对于一个GOP的第一帧,10比特的二进制数temporal_reference为0。然后在显示顺序中的每一帧以模1024加1。当一帧编码成2场时,两个场的时间参考相同。


Picture_coding_type

这个3-比特的码字指示图像类型(I图像,P图像或B图像),如表13.19所示。

 


图像类型

码字

禁止

000

I图像

001

P图像

010

B图像

011

禁止

100

保留

101

保留

110

保留

111


 

表13.19  MPEG-2图像编码类型码字


Vbv_delay

对于固定比特速率,在开始解码一个图像时,这个16-比特的数设置解码缓存的最初大小以使它既不上溢也不下溢。对于ATSC和OpenCable?标准,除非vbv_delay的值是FFFFH,其值必须 45000D。


Full_pel_forward_vector

这个可选的1-比特字段在MPEG-2中不使用,所以它的值是“0”。它仅当picture_coding_type =“010”或“011”时才存在。


Forward_f_code

这个可选的3-比特字段在MPEG-2中不使用,所以它的值是“111”。它仅当picture_coding_type =“010”或“011”时才存在。


Full_pel_backward_vector

这个可选的1-比特字段在MPEG-2中不使用,所以它的值是“0”。它仅当picture_coding_type =“010”或“011”时才存在。


Backward_f_code

这个可选的3-比特字段在MPEG-2中不使用,所以它的值是“111”。它仅当picture_coding_type = “011”时才存在。


Extra_bit_picture

当这个比特置“1”时,表示跟随content_description_data。“0”表示没有content_description_data跟随。


Content_description_data

如果extra_bit_picture =“1”,那么这个可选的可变长字段存在,它的每个第9比特的值是“1”。


Extra_bit_picture

仅当content_description_data存在时,这个可选的值为“0”比特才存在。


描述数据的内容

这个可选的数据仅当图像头中的extra_bit_picture指示时才存在。


Data_type_upper

这个8-比特字段包括16-比特二进制data_type的最高8位,它定义描述数据内容的类型,如表13.20所示。


Marker_bit

总是为“1”。


Data_type_lower

这个8-比特字段包括16-比特二进制data_type的最低8位,它定义描述数据内容的类型,如表13.20所示。

 


数据类型

码字

保留

0000 0000 0000 0000

填充字节

0000 0000 0000 0001

捕获时间码

0000 0000 0000 0010

泛扫描参数

0000 0000 0000 0011

有效窗口区域

0000 0000 0000 0100

编码图像长度

0000 0000 0000 0101

保留

0000 0000 0000 0110

保留

1111 1111 1111 1111


 

表13.20  MPEG-2数据类型码字


Marker_bit

总是为“1”。


Data_length

这个8-比特二进制数指定跟随在它之后的数据数量,以9比特为单位。

注意:当“填充字节(padding bytes)”由data_type指定时,跟随的字段才存在。两个字段重复的次数由data_length字段指定。


Marker_bit

总是为“1”。


Padding_byte

这个8-比特字段的值是“0000 0000”。其它任何值被禁止。

注意:当data_type指示“capture timecode”时,跟随的字段才存在。它包含时间戳指示场或帧的源捕获时间或生成时间。它不取代任何存在于系统级的时间码。


Marker_bit

总是为“1”。


Timecode_type

这个2-比特的码字说明图片对应的时间码数量,如表13.21所示。

 


时间码类型

码字

一帧一个时间码

00

第一场或仅有的场一个时间码

01

第二场一个时间码

10

每一场一个时间码,供两个时间码

11


 

表13.21  MPEG-2时间码类型码字


Counting_type

这个可选的3-比特码字指示补偿n帧(nframes)技术参数的手段,以减小它的累积漂移。


Reserved_bit

总是为“0”。


Reserved_bit

总是为“0”。


Reserved_bit

总是为“0”。


Marker_bit

这个可选的比特总是为“1”。仅当counting_type “000”时这个字段才存在。


Nframe_conversion_code

这个可选的比特指定在确定由nframe指定的时间量的转换因子(1000 +nframes_conversion_code)。仅当counting_type “000”时这个字段才存在。


Clock_divisor

这个可选的7-比特二进制数指定对27MHz系统时钟的分频数,用于生成相等的时间戳。仅当counting_type “000”时这个字段才存在。


Marker_bit

这个可选的比特总是为“1”。仅当counting_type “000”时这个字段才存在。


Nframes_multiplier_upper

这个可选的8-比特值是16-比特值nframes_multiplier的最高8位。仅当counting_type “000”时这个字段才存在。


Marker_bit

这个可选的比特总是为“1”。仅当counting_type “000”时这个字段才存在。


Nframes_multiplier_lower

这个可选的8-比特值是16-比特值nframes_multiplier的最低8位。仅当counting_type “000”时这个字段才存在。

“场或帧的捕获时间戳”信息跟随其后。


Marker_bit

这个可选的比特总是为“1”。仅当counting_type “000”时这个字段才存在。


Nframes

这个可选的8-比特二进制数指定由每个相等时间戳之间推导得到的帧数量的增加值。仅当counting_type “000”时这个字段才存在。


Marker_bit

总是为“1”。


Time_discontinuity

这个1-比特标志为“1”时指示发生了时间码序列的不连续性。


Prior_count_dropped

这个1-比特标志指示是否一个或多个nframes的值下降了。


Time_offset_part_a

包含了time_offset的最高6个比特的值。Time_offset是一个30-比特的有符号数,指示从由其它时间戳参数指定的均等时间戳开始的时间到当前场或帧被捕获的时钟周期偏移数。


Marker_bit

总是为“1”。


Time_offset_part_b

这个值包含了time_offset的第二个最高8个比特的值。


Marker_bit

总是为“1”。


Time_offset_part_c

这个值包含了time_offset的第三个最高8个比特的值。


Marker_bit

总是为“1”。


Time_offset_part_c

这个值包含了time_offset的最低8个比特的值。


Marker_bit

总是为“1”。


Units_of_seconds

一个4-比特的二进制数指示时间戳的秒的个位值。它的值可能是“0000”~“1001”。


Ten_of_seconds

一个4-比特的二进制数指示时间戳的秒的十位值。它的值可能是“0000”~“0101”。


Marker_bit

总是为“1”。


Units_of_minutes

一个4-比特的二进制数指示时间戳的分的个位值。它的值可能是“0000”~“1001”。


Ten_of_minutes

一个4-比特的二进制数指示时间戳的分的十位值。它的值可能是“0000”~“0101”。


Marker_bit

总是为“1”。


Units_of_hours

一个4-比特的二进制数指示时间戳的小时的个位值。它的值可能是“0000”~“1001”。


Ten_of_hours

一个4-比特的二进制数指示时间戳的小时的十位值。它的值可能是“0000”~“0010”。

当timecode_type =“11”时,那么“场或帧捕获时间戳”字段再次存在传送第二个字段的信息。

注意:当由data_type指定“泛扫描参数”时跟随的字段才存在。这允许为一个有不同宽高比的显示传送额外的泛扫描信息。


Reserved_bit

总是为“0”。


Reserved_bit

总是为“0”。


Reserved_bit

总是为“0”。


Display_size_present

这个1-比特标志指示跟随的字段是display_horizontal_size还是display_vertical_size。


Marker_bit

总是为“1”。仅当display_size_present =“1”时,这个可选字段才存在。


Reserved_bit

总是为“0”。仅当display_size_present =“1”时,这个可选字段才存在。


Reserved_bit

总是为“0”。仅当display_size_present =“1”时,这个可选字段才存在。


Display_horizontal_size_upper

这些是display_horizontal_size的最高6比特。仅当display_size_present =“1”时,这个可选字段才存在。


Marker_bit

总是为“1”。仅当display_size_present =“1”时,这个可选字段才存在。


Display_horizontal_size_lower

这些是display_horizontal_size的最低8比特。仅当display_size_present =“1”时,这个可选字段才存在。


Marker_bit

总是为“1”。仅当display_size_present =“1”时,这个可选字段才存在。


Reserved_bit

总是为“0”。仅当display_size_present =“1”时,这个可选字段才存在。


Display_vertical_size_upper

这些是display_horizontal_size的最高6比特。仅当display_size_present =“1”时,这个可选字段才存在。


Marker_bit

总是为“1”。仅当display_size_present =“1”时,这个可选字段才存在。


Display_vertical_size_lower

这些是display_horizontal_size的最低8比特。仅当display_size_present =“1”时,这个可选字段才存在。

注意:帧中央的偏移存在时跟随的字段才存在。


Marker_bit

总是为“1”。


Frame_center_horizontal_offset_upper

这些是frame_center_horizontal_offset的最高有效8位比特。frame_center_horizontal_offset的定义在图像显示扩展中指定。


Marker_bit

总是为“1”。


Frame_center_horizontal_offset_upper

这些是frame_center_horizontal_offset的最低有效8位比特。


Marker_bit

总是为“1”。


Frame_center_vertical_offset_upper

这些是frame_center_vertical_offset的最高有效8位比特。frame_center_vertica _offset的定义在图像显示扩展中指定。


Marker_bit

总是为“1”。


Frame_center_ ertical_offset_upper

这些是frame_center_vertica_offset的最低有效8位比特。

注意:当有data_type指定“有效窗口区域”时,跟随的字段才存在。active_region_window定义了解码图像要显示的矩形。他不能大于由horizontal_size和vertical_size定义的区域大小。


Marker_bit

总是为“1”。


Top_left_x_upper

这个8-比特是16-比特的top_left_x的最高8位。Top_left_x定义的Y采样点数量和top_left_y,定义了左上角的active_region_window矩形。


Marker_bit

总是为“1”。


Top_left_x_upper

这个8-比特是16-比特的top_left_x的最低8位。


Marker_bit

总是为“1”。


Top_left_y_upper

这个8-比特是16-比特的top_left_y的最高8位。Top_left_y定义的Y的行数和top_left_x,定义了左上角的active_region_window矩形。


Marker_bit

总是为“1”。


Top_left_y_upper

这个8-比特是16-比特的top_left_y的最低8位。


Marker_bit

总是为“1”。


Active_region_horizontal_size_upper

这个8-比特字段是16-比特active_region_horizontal_size值的最高8位。active_region_horizontal_size,和active_region_vertical _size一起,定义了矩形active_region_window的右下角。active_region_horizontal_size值0000H表示尺寸未知。


Marker_bit

总是为“1”。


Active_region_horizontal_size_lower

这个8-比特字段是16-比特active_region_horizontal_size值的最低8位。


Marker_bit

总是为“1”。


Active_region_vertical_size_upper

这个8-比特字段是16-比特active_region_vertica _size值的最高8位。active_region_vertical_size,和active_region_horizontal_size一起,定义了矩形active_region_window的右下角。active_region_vertical_size值0000H表示尺寸未知。


Marker_bit

总是为“1”。


Active_region_vertical_size_lower

这个8-比特字段是16-比特active_region_vertical_size值的最低8位。


Marker_bit

总是为“1”。


Picture_byte_count_part_a

这个8比特字段是32-比特值picture_byte_count中的最高8位。Picture_byte_count指示当前图像第一个slice_start_code的第一个字节到画面左后一个宏块之后的起始码前缀的字节数。值0000H表示长度未知。


Marker_bit

总是为“1”。


Picture_byte_count_part_b

这个8比特字段是32-比特值picture_byte_count中的第二个最高8位。


Marker_bit

总是为“1”。


Picture_byte_count_part_c

这个8比特字段是32-比特值picture_byte_count中的第三个最高8位。


Marker_bit

总是为“1”。


Picture_byte_count_part_c

这个8比特字段是32-比特值picture_byte_count中的最低8位。

注意:当data_type指定的其他数据都不存在时,跟随的字段才存在。Data_length字段指示了这两个字段重复的时间数。


Marker_bit

总是为“1”。


Reserved_content_description_data

这个8-比特字段为保留字段。


图像编码扩展

一个图像编码扩展仅可能出现在一个图像头之后。


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。


Extension_start_code_ID

这个4-比特字段的值是“1000”,指示一个图像编码扩展的开始。


f_code[0,0]

一个4-比特的二进制数,范围为“0001”~“1001”,被用于解码前向水平运动向量。“0000”值被禁止;值“1111”指示这个字段被忽略。


f_code[0,1]

一个4-比特的二进制数,范围为“0001”~“1001”,被用于解码前向垂直运动向量。“0000”值被禁止;值“1111”指示这个参数被忽略。


f_code[1,0]

一个4-比特的二进制数,范围为“0001”~“1001”,被用于解码后向水平运动向量。“0000”值被禁止;值“1111”指示这个参数被忽略。


f_code[1,1]

一个4-比特的二进制数,范围为“0001”~“1001”,被用于解码后向垂直运动向量。“0000”值被禁止;值“1111”指示这个参数被忽略。


Intra_dc_precision

这个2-比特码字指示帧内DC精度,如表13.22所示。


Picture_structure

这个2-比特的码字指示指示图像的结构,如表13.23所示。

 


帧内DC精度(比特数)

码字

8

00

9

01

10

10

11

11


 

表13.22  MPEG-2帧内DC精度码字

 


图像结构

码字

保留

00

顶场

01

底场

10

帧图像

11


 

表13.23  MPEG-2图像结构码字

 图13.9    MPEG-2图像编码扩展结构(不包括标志比特)


Top_field_first

如果progressive_sequence =“0”,那么这个比特指示解码器首先输出那一场。在一场中,这个比特的值是“0”。在一个帧中,“1”指示解码的帧的第一场是顶场。“0”指示第一场是底场。

如果progressive_sequence =“1”,并且repeat_first_field =“0”,那么这个比特是“0”,解码器产生一个逐行扫描的帧。

如果progressive_sequence =“1”, repeat_first_field =“1”,并且这个比特为“0”,那么解码器产生两个相同的逐行扫描的帧。

如果progressive_sequence =“1”, repeat_first_field =“1”,并且这个比特为“1”,那么解码器产生三个相同的逐行扫描的帧。


Frame_pred_frame_dct

如果这个比特是“1”,只有帧-DCT和帧精度被使用。对于场图像,它的值总是为“0”。如果progressive_frame是“1”,那么这个参数为“1”。


Concealment_motion_vectores

如果这个比特是“1”,那么它指示运动向量由帧内宏块编码。


Q_scal_type

这个比特指示解码器在quantizer_scale_code和quantizer_scale之间使用哪种映射。


Intra_vlc_format

它指示哪个表格被用于帧内块的DCT系数。当intra_vlc_format =“0”时,使用表13.37。当intra_vlc_format =“1”时,使用表13.38。对于非帧内块,使用表13.37,而不管intra_vlc_format的值。


Alternate_scan

这个比特指示传输参数数据所采用的扫描模式。“0”= 图7.59;“1”=图7.60。


Repeat_first_field

见top_field_first中使用的这个比特。对于场图像,它的值是“0”。


Chroma_420_type

如果chroma_format是4:2:0,那么这个比特如progressive_frame一样。否则它为“0”。


Progressive_frame

如果是“0”,这个比特指示帧中的两个场是隔行扫描场,他们之间有一个隔行扫描时间。如果是“1”,帧中的两个场来自同一时间。


Composite_display_flag

这个比特指示在码流中是否存在v_axis,field_sequence,sub_carrier,burst_amplitude和sub_carrier_phase。


V_axis

仅当composite_display_flag =“1”时,这个比特才存在。当原始源为PAL视频信号时它才被使用。当V为正号时v_axis =“1”,否则为“0”。

这个信息可以从由MPEG-2编码器驱动的PAL解码器获得。它可以被用来使能一个MPEG-2解码器来置一个PAL编码器的V开关和原来的一样。


Field_sequence

仅当composite_display_flag =“1”时,这个3比特码字才存在。它指示原始4-或8-场序列的场的数量,如表13.24所示。

这个信息可以从由MPEG-2编码器驱动的NTSC/PAL解码器获得。它可以被用来使能一个MPEG-2解码器来置一个NTSC/PAL编码器场序列和原来的一样。


Sub_carrier

仅当composite_display_flag =“1”时,这个比特才存在。“0”指示原始副载波到行频关系被校正。

这个信息可以从由MPEG-2编码器驱动的NTSC/PAL解码器获得。

 


帧序列

场序列

码字

1

1

000

1

2

001

2

3

010

2

4

011

3

5

100

3

6

101

4

7

110

4

8

111


 

表13.24  MPEG-2 field_sequence码字


Burst_amplitude

仅当composite_display_flag =“1”时,这个7比特的二进制数才存在。它指示当量化每个BT.601(忽略MSB)时的原始PAL或NTSC同步幅度。

这个信息可以从由MPEG-2编码器驱动的NTSC/PAL解码器获得。它可以被用来使能一个MPEG-2解码器来置一个NTSC/PAL编码器的色彩同步幅度和原来的一样。


Sub_carrier_phase

仅当composite_display_flag =“1”时,这个8-比特的二进制数才存在。它指示由BT.470定义的原始PAL或NTSC副载波相位。值定义为:(360o/256)×sub_carrier_phase。

这个信息可以从由MPEG-2编码器驱动的NTSC/PAL解码器获得。它可以被用来使能一个MPEG-2解码器来置一个NTSC/PAL编码器的色彩副载波相位和原来的一样。


量化矩阵扩展

每个量化矩阵有其默认值。当一个序列头被解码时,所有矩阵被复位到它们的默认值。用户定义的矩阵可以在序列头或使用这个扩展期间装载。这个可选的扩展能在图像编码扩展后发生。


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。


Extension_start_code_ID

这个4-比特串的值是“0011”指示一个quant_matrix_extension的开始。这个扩展也允许量化矩阵传送4:2:2和4:4:4的色度格式。


Load_intra_quantizer_matrix

如果跟随一个intra_quantizer_matrix,那么这个比特被设置为“1”。如果设置为“0”,那么下面的默认值被用于帧内块,直到发生下一个序列头或quant_matrix_extension。


Intra_quantizer_matrix

一个可选的64个8-比特值的列表可以替代上面的默认值。“0”值是不允许的。intra_quant[0,0]的值总是8。直到下一个序列头或quant_matrix_extension出现为止,这些值都有效。它的顺序如图7.59所示。

对于4:2:2和4:4:4的数据格式,新值被同时用于Y和CbCr帧内矩阵,除非载入了不同的CbCr帧内矩阵。


Load_non_intra_quantizer_matrix

如果跟随一个intra_non_quantizer_matrix,那么这个比特被设置为“1”。如果设置为“0”,那么下面的默认值被用于帧内块,直到发生下一个序列头或quant_matrix_extension。

 

 图13.10  MPEG-2量化扩展矩阵结构(标志位没有显示)


Non-intra_quantizer_matrix

一个可选的64个8-比特值的列表可以替代上面的默认值。“0”值是不允许的。直到下一个序列头或quant_matrix_extension出现为止,这些值都有效。它的顺序如图7.59所示。

对于4:2:2和4:4:4的数据格式,新值被同时用于Y和CbCr帧内矩阵,除非载入了不同的CbCr帧内矩阵。


Load_chroma_intra_quantizer_matrix

如果跟随一个chroma_intra_quantizer_matrix,那么这个比特被设置为“1”。如果设置为“0”,那么使用的值不改变。如果chroma_format是4:2:0,那么这个比特的值是“0”。


Chroma_non_intra_quantizer_matrix

一个可选的64个8-比特值的列表可以替代用于CbCr前面的或默认值。“0”值是不允许的。chroma_intra_quant[0,0]的值总是8。直到下一个序列头或quant_matrix_extension出现为止,这些值都有效。它的顺序如图7.59所示。


Load_chroma_non_intra_quantizer_matrix

如果跟随一个chroma_intra_non_quantizer_matrix,那么这个比特被设置为“1”。如果设置为“0”,那么使用的值不改变。如果chroma_format是4:2:0,那么这个比特的值是“0”。


Chroma_intra_quantizer_matrix

一个可选的64个8-比特值的列表可以替代用于CbCr前面的或默认值。“0”值是不允许的。直到下一个序列头或quant_matrix_extension出现为止,这些值都有效。它的顺序如图7.59所示。


图像显示扩展

这个扩展允许显示矩形在图像基之间移动位置。一个典型的应用可能是平移-扫描。这个可选的扩展可能仅在图像编码扩展后出现。


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。

 图13.11  MPEG-2图像显示扩展结构(标志位没有显示)


Extension_start_code_ID

这个4-比特字段的值是“0111”指示一个图像显示扩展的开始。

对于在一个隔行扫描序列的情况下,一个图像可能对应1,2或3个解码场。所以,在比特流中最多可能跟随3种4场的存在。


Frame_center_horizontal_offset

这个16-比特2的补码数字指示单位为1/16个采样点的水平偏移。一个正值的显示图像中心的位置位于解码图像中心的右侧。


Marker_bit

总是为“1”。


Frame_center_vertical_offset

这个16-比特2的补码数字指示单位为1/16个扫描行的垂直偏移。一个正值的显示图像中心的位置位于解码图像中心的下方。


Marker_bit

总是为“1”。


图像时间可伸缩扩展

这个可选的扩展可能仅在图像编码扩展后出现。

 图13.12  MPEG-2图像时间可伸缩扩展结构(标志位不显示)


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。


Extension_start_code_ID

这个4-比特字段的值是“1010”指示一个图像时间可伸缩扩展的开始。


Reference_select_code

这个2-比特的码字标识进行预测的参考帧或场。


Forward_temporal_reference

这个10-比特的二进制数指示较低层用于提供前向预测的时间参考。如果需要大于10比特来指定时间参考,那么仅使用最低10比特。


Marker_bit

总是为“1”。


Backward_temporal_reference

这个10-比特的二进制数指示较低层用于提供后向预测的时间参考。如果需要大于10比特来指定时间参考,那么仅使用最低10比特。


图像时间可伸缩扩展

这个可选的扩展可能仅在图像编码扩展后出现。

 图13.13  MPEG-2图像空间可伸缩扩展结构(标志位不显示)


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。

 


下层隔行扫描场选择

下层逐行扫描帧

逐行扫描帧

应用隔行扫描处理

用于预测

0

0

1

顶场

1

0

1

底场

1

1

1

1

1

0

1

0

0

两场


 

表13.25  MPEG-2图像空间可扩展上采样处理


Extension_start_code_ID

这个4-比特字段的值是“1001”指示一个图像空间可伸缩扩展的开始。


Lower_layer_temporal_reference

这个10-比特的二进制数指示低层用于提供预测的时间参考。如果需要大于10比特来指定时间参考,那么仅使用最低10比特。


Marker_bit

总是为“1”。


Lower_layer_horizontal_offset

这个15-比特的2的补码数指示上采样底层图像对应的增强层图像对于左上角的水平偏移。对于4:2:0和4:2:2格式,这个参数必须是偶数。


Marker_bit

总是为“1”。


Lower_layer_vertical_offset

这个15-比特的2的补码数指示上采样底层图像对应的增强层图像对于左上角的垂直偏移。对于4:2:0格式,这个参数必须是偶数。


Lower_layer_progressive_frame

如果低层图像是逐行扫描的,那么这个比特是“1”。


Lower_layer_deinterlaced_field_select

这个参数连同其它参数一起使用以帮助解码器。见表13.25。


版权扩展

这个可选的扩展可能仅在图像编码扩展后出现。


Extension_start_code

这个32-比特的串000001B5H指示一组新的扩展数据的开始。


Extension_start_code_ID

这个4-比特字段的值是“0100”指示一个版权扩展的开始。


Copyright_flag

这个比特为“1”表示跟随视频的内容是版权保护的,直到下一个版权扩展。“0”不指示跟随的视频内容是否版权保护。


Copyright_identifier

这个8-比特的二进制数指示版权所有人。置“0000 0000”表示信息不存在。当copyright_flag =“0”时,copyright_identifier必须为“0000 0000”。


Original_or_copy

这个比特为“1”表示原始材料,“0”表示它是一个拷贝。


Reserved

这7个比特总是“000 0000”。


Marker_bit

总是为“1”。


Copyright_number_1

这些20比特的值表示版权数据的44~63位。


Marker_bit

总是为“1”。


Copyright_number_2

这些22比特的值表示版权数据的22~43位。


Marker_bit

总是为“1”。


Copyright_number_3

这些22比特的值表示版权数据的0~21位。64-比特的copyright_number统一标识版权内容。当coypright_identifier =“0000 0000”,或copyright_flag =“0”时,copyright_number必须为0。


摄相机参数扩展

这个可选的扩展可能仅在图像编码扩展后出现。

在32比特的extension_start_code 000001B5H和4-比特的extension_stard_code_ID “1011”之后,有7个字段指定所使用摄像机的位置和特性。


ITU-T ext.D扩展

这个可选的扩展可能仅在图像编码扩展后出现。

在32比特的extension_start_code 000001B5H和4-比特的extension_stard_code_ID “1100”之后,有1比特的数据。这个扩展的使用在ITU-T H.320附录A中定义。


有效格式描述(AFD

AFD(ATSC A/53和ETSI TR 101 154的一部分)描述图像“感兴趣的区域”,使观众接收最佳的时尚图片。AFD的功能类似于第8章中描述的宽屏信号(WSS)。

AFD可选承载于基本视频比特流视频序列扩展,GOP头和/或图像编码扩展的用户数据中。解码器可选支持AFD数据。


User_data_start_code

这个32-比特串000001B2H指示user_data的开始。


AFD_identifer

这个32-比特串44544731H指示用户数据的AFD语法。


Reserved_bit

总是为“1”。


Active_format_flag

如果被置为“1”,那么这个数据结构中描述了一个有效的格式。


Reserved_bits

总是为“00 0001”。


Reserved_bits

这些可选的比特总是为“1111”。如果active_format_flag =“1”,那么它们存在。


Active_format

这些可选的比特指示了感兴趣的区域,如表13.26所示。如果active_format_flag =“1”,那么它们存在。

 


AFD有效格式值

WSS比特b3,b3,b2,b1,b0

感兴趣的宽高比区域

4:3显示器上的位置

有效行

480-行系统

576-行系统

0000-0001

保留

0010

0100

 

 

 

 

0011

0010

 

 

 

 

0100

1101

 

 

 

 

0101-0111

保留

1000

类似编码帧的有效格式

1001

1000

 

 

 

 

1010

1011

16:9

信箱,中部

360

430

1011

0001

14:9

信箱,中部

420

504

1100

保留

1101

1110

4:3

-

480

576

1110

-

16:9

信箱,中部

480

576

1111

-

16:9

信箱,中部

480

576


 

表13.26  AFD active_format值


分片层

每个分片层的数据包括一个分片头,跟随其后的是宏块数据。它的结构如图13.5所示。


Slice_start_code

开始的24-比特的值是000001H。最后的8比特是slice_vertical_position,值是01H~AFH。

slice_vertical_position指定分片中第一个宏块中的在宏块垂直位置。宏块的slice_vertical_position的第一行是1。


Slice_vertical_position_extension

如果帧的垂直尺寸>2800行,那么这个可选的3-比特二进制数表示11-比特slice_vertical_position值的最高3位。如果真的尺寸 2800行,那么这个字段不存在。


Priority_breakpoint

当sequence_scalable_extension存在于比特流中,并且scalable_mode =分区数据时,这个可选的7-比特二进制数存在。它指示比特流中分区的位置。


Quantizer_scale_code

这个5-比特的二进制数的值是1~31(0被禁止)。它指示接收的DCT系数的重构层的缩放因子。解码器一直使用这个值直到另一个不管是分片层或宏块层的quantizer_scale_code接收到。


Slice_extension_flag

如果这个可选比特被置“1”,那么跟随intra_slice,slice_picture_ID_enable和slice_picture_ID。


Intra_slice

仅当slice_extension_flag =“1”时,这个可选的比特才存在。如果分片中的任何宏块是非帧内宏块,那么它必须置“0”。


Slice_picture_ID_enable

仅当slice_extension_flag =“1”时,这个可选的比特才存在。值“1”指示slice_picture_ID被使用。


Slice_picture_ID

这些可选的6比特旨在帮助恢复服务错误。Slice_picture_ID对于一个图像的所有分片必须有相同的值。仅当slice_extension_flag =“1”时,这个字段才存在。如果slice_picture_ID_enable =“0”,那么这些比特必须是“00 0000”。


Extra_bit_slice

这个比特,当置“1”时,指示后面跟随extra_information_slice。“0”表示这个字段后面没有数据。


Extra_information_slice

如果extra_bit_slice =“1”,那么这9个跟随的比特包括8比特的数据(extra_information_slice)和另一个extra_bit_slice来指示是否还有另外的9比特跟随,以此类推。


宏块层

每个宏块的数据包括一个宏块头,跟随其后的是运动向量和块数据,如图13.5所示。


Macroblock_escape

这个可选的11-比特字段有一固定的比特串“0000 0001 000”,当本宏块地址和前一宏块地址相差33以上时才被使用。它强制macroblock_address_increment值增量为33。任何连续数量的nacroblock_escape字段可以被使用。


Macroblock_address_increment

这是一个可变长的码字,指示当前宏块地址和前一个宏块地址的差异。它的最大值是33。大于33的值使用macroblock_escape来编码。可变长编码列举于表13.27中。

 


增量值

码字

增量值

码字

1

1

17

0000 0101 10

2

011

18

0000 0101 11

3

010

19

0000 0101 00

4

0011

20

0000 0100 11

5

0010

21

0000 0100 10

6

0001 1

22

0000 0100 011

7

0001 0

23

0000 0100 010

8

0000 111

24

0000 0100 001

9

0000 110

25

0000 0100 000

10

0000 1011

26

0000 0011 111

11

0000 1010

27

0000 0011 110

12

0000 1001

28

0000 0011 101

13

0000 1000

29

0000 0011 100

14

0000 0111

30

0000 0011 011

15

0000 0110

31

0000 0011 010

16

0000 0101 11

32

0000 0011 001

 

33

0000 0011 000

macroblock_escape

0000 0001 000


 

表13.27  MPEG-2宏块地址增量可变长码字表


Macroblock_type

如表13.28~13.30所示,这个可变长的码字指示编码方法和宏块的内容。


Spatial_temporal_weight_code

这个可选的2-比特码字在空间可伸缩情况下指示宏块空间和时间预测的混合预测。仅当表13.28,13.29,和13.30中的[时空权重类] = 1,和spatial_temporal_weight_code_table_index “00”时才存在。

 


类型

宏块量化

前向运动

后向运动

编码组

帧内宏块

时空权重码标志

允许时空权重类

码字

帧内

0

0

0

0

1

0

0

1

帧内,量化

1

0

0

0

1

0

0

01

时空伸缩的I图像

编码,兼容

0

0

0

1

0

0

4

1

编码,兼容,量化

1

0

0

1

0

0

4

01

帧内

0

0

0

0

1

0

0

0011

帧内,量化

1

0

0

0

1

0

0

0100

非编码,兼容

0

0

0

0

0

0

4

0001

SNR可伸缩的I图像

编码

0

0

0

1

0

0

0

1

编码,量化

1

0

0

1

0

0

0

01

非编码

0

0

0

0

0

0

0

001


 

表13.28  MPEG-2 I帧红快类型的可变长码字表

 


类型

宏块量化

前向运动

后向运动

编码组

帧内宏块

时空权重码标志

允许时空权重类

码字

mc,帧内

0

1

0

1

0

0

0

1

非mc,量化

0

0

0

1

0

0

0

01

mc,非编码

0

1

0

0

0

0

0

001

帧内

0

0

0

0

1

0

0

0001 1

mc,编码,量化

1

1

0

1

0

0

0

0001 0

非mc,编码,量化

1

0

0

1

0

0

0

0000 1

帧内,量化

1

0

0

0

1

0

0

0000 01

SNR可伸缩的P图像

编码

0

0

0

1

0

0

0

1

编码,量化

1

0

0

1

0

0

0

01

非编码

0

0

0

0

0

0

0

001


 

表13.29a              MPEG-2 P图像帧宏块类型可变长编码表


类型

宏块量化

前向运动

后向运动

编码组

帧内宏块

时空权重码标志

允许时空权重类

码字

空间可伸缩的P图像

mc,编码

0

1

0

1

0

0

0

10

mc,编码,兼容

0

1

0

1

0

1

1,2,3

011

非mc,编码

0

0

0

1

0

0

0

0000 100

非mc,编码,兼容

0

0

0

1

0

1

1,2,3

0001 11

mc,非编码

0

1

0

0

0

0

0

0010

帧内

0

0

0

0

1

0

0

0000 111

mc,非编码,兼容

0

1

0

0

0

1

1,2,3

0011

mc,编码,量化

1

1

0

1

0

0

0

010

非mc,编码,量化

1

0

0

1

0

0

0

0001 00

帧内,量化

1

0

0

0

1

0

0

0000 110

mc,编码,兼容,量化

1

1

0

1

0

1

1,2,3

11

非mc,编码,兼容,量化

1

0

0

1

0

1

1,2,3

0001 01

非mc,非编码,兼容

0

0

0

0

0

1

1,2,3

0000 10

编码,兼容

0

0

0

1

0

0

4

0000 101

编码,兼容,量化

1

0

0

1

0

0

4

000 010

非编码,兼容

0

0

0

0

0

0

4

0000 0011


 

表13.29b       MPEG-2 P图像帧宏块类型可变长编码表


Frame_motion_type

这个可选的2-比特码字指示宏块运动的预测,如表13.31所示。仅当picture_structure = 帧,frame_pred_frame_dct =“0”和表13.28,13.29和13.30中的[前项运动]或[后项运动] =“1”时,才存在。


Field_motion_type

这个可选的2-比特码字指示宏块运动预测,如表13.32所示。它仅当表13.28,13.29和13.30中的[前项运动]或[后项运动] =“1”和frame_motion_type场不存在时才存在。

 


类型

宏块量化

前向运动

后向运动

编码组

帧内宏块

时空权重码标志

允许时空权重类

码字

interp,非编码

0

1

1

0

0

0

0

10

interp,编码

0

1

1

1

0

0

0

11

bwd,非编码

0

0

1

0

0

0

0

010

bwd,编码

0

0

1

1

0

0

0

011

fwd,非编码

0

1

0

0

0

0

0

0010

fwd,编码

0

1

0

1

0

0

0

0011

帧内

0

0

0

0

1

0

0

0001 1

interp,编码,量化

1

1

1

1

0

0

0

0001 0

fwd,编码,量化

1

1

0

1

0

0

0

0000 11

bwd,编码,量化

1

0

1

1

0

0

0

0000 10

帧内,量化

1

0

0

0

1

0

0

0000 01

空间可伸缩B图像

interp,非编码

0

1

1

0

0

0

0

10

interp,编码

0

1

1

1

0

0

0

11

bwd,非编码

0

0

1

0

0

0

0

010

bwd,编码

0

0

1

1

0

0

0

011

fwd,非编码

0

1

0

0

0

0

0

0010

fwd,编码

0

1

0

1

0

0

0

0011

bwd,非编码,兼容

0

0

1

0

0

1

1,2,3

0001 10

bwd,编码,兼容

0

0

1

1

0

1

1,2,3

0001 11

fwd,非编码,兼容

0

1

0

0

0

1

1,2,3

0001 00

fwd,编码,兼容

0

1

0

1

0

1

1,2,3

0001 01

帧内

0

0

0

0

1

0

0

0000 110


 

表13.30a              MPEG-2 B图像帧宏块类型可变长编码表


Dct_type

这个可选的比特指示宏块是帧或场的DCT编码。“1”= 场,“0”= 帧。仅当picture_structure =“11”,frame_pred_frame_dct =“0”,和表13.28,13.29和13.30中的[帧内宏块]或[编码组] =“1”时他才存在。


Quantizer_scale_code

这个可选的二进制数的值范围是1~31(0值被禁止)。它指示接收到的DCT系数的重构缩放因子。解码器一直使用这个值直到接收到另一个quantizer_scale_ code值。仅当表13.28,13.29和13.30中的[宏块量化] =“1”时,这个字段才存在。

 


类型

宏块量化

前向运动

后向运动

编码组

帧内宏块

时空权重码标志

允许时空权重类

码字

空间可伸缩B图像(接续)

interp,编码,量化

1

1

1

1

0

0

0

0000 111

fwd,编码,量化

1

1

0

1

0

0

0

0000 100

bwd,编码,量化

1

0

1

1

0

0

0

0000 101

帧内,量化

1

0

0

0

1

0

0

0000 0100

fwd,编码,兼容,量化

1

1

0

1

0

1

1,2,3

0000 0101

bwd,编码,兼容,量化

1

0

1

1

0

1

1,2,3

0000 0110 0

非编码,兼容

0

0

0

0

0

0

4

0000 0001 0

编码,量化,兼容

1

0

0

1

0

0

4

0000 0110 1

编码兼容

0

0

0

1

0

0

4

0000 0111 1

SNR可伸缩B图像

编码

0

0

0

1

0

0

0

1

编码,量化

1

0

0

1

0

0

0

01

非编码

0

0

0

0

0

0

0

001


 

表13.30b       MPEG-2 B图像帧宏块类型可变长编码表

 


时空权重类

预测类型

运动向量计数

运动向量格式

编码

 

保留

 

 

00

0,1

2

01

2,3

1

01

0,1,2,3

1

10

0,2,3

双基

1

11


 

表13.31  MPEG-2帧运动类型码字


 


时空权重类

预测类型

运动向量计数

运动向量格式

编码

 

保留

 

 

00

0,1

1

01

0,1

16×18mc

2

10

0

双基

1

11


 

表13.32  MPEG-2场运动类型码字


可选运动向量
Marker_bit

它的通常值是“1”。仅当concealment_motion_vectors =“1”和表13.28,13.29和13.30中的[帧内宏块] =“1”时,他才存在。


Coded_block_pattern_420

这个可选的可变字长的码字被用来推导4:2:0编码块对(CBP)如表13.33所示。它仅当表13.28,13.29和13.30中的[编码对] =“1”时才存在,用来指示宏块中的哪个块有至少一个变换系数传送。编码块对数表示为:

P1P2P3P4P5P6

这儿对于任何存在参数的块[n] Pn =“1”,否则Pn =“0”。块编号(十进制格式)如图13.2所示。


Coded_block_pattern_1

它仅当chroma_format = 4:2:2和表13.28,13.29和13.30中的[编码对] =“1”时才存在。这个可选的2-位字段被用来扩展编码块对。


Coded_block_pattern_2

它仅当chroma_format = 4:4:4和表13.28,13.29和13.30中的[编码对] =“1”时才存在。这个可选的6-位字段被用来扩展编码块对。

 


 


CBP

编码

CBP

编码

60

111

 

 

62

0100

0

 

4

1101

 

 

24

0011

11

 

8

1100

 

 

36

0011

10

 

16

1011

 

 

3

0011

01

 

32

1010

 

 

63

0011

00

 

12

1001

1

 

5

0010

111

 

48

1001

0

 

9

0010

110

 

20

1000

1

 

17

0010

101

 

40

1000

0

 

33

0010

100

 

28

0111

1

 

6

0010

011

 

44

0111

0

 

10

0010

010

 

52

0110

1

 

18

0010

001

 

56

0110

0

 

34

0010

000

 

1

0101

1

 

7

0001

1111

 

61

0101

0

 

11

0001

1110

 

2

0100

1

 

19

0001

1101

 

35

0001

1100

 

38

0000

1100

 

13

0001

1011

 

29

0000

1011

 

49

0001

1010

 

45

0000

1010

 

21

0001

1001

 

53

0000

1001

 

41

0001

1000

 

57

0000

1000

 

14

0001

0111

 

30

0000

0111

 

50

0001

0110

 

46

0000

0110

 

22

0001

0101

 

54

0000

0101

 

42

0001

0100

 

58

0000

0100

 

15

0001

0011

 

31

0000

0011

1

51

0001

0010

 

57

0000

0011

0

23

0001

0001

 

55

0000

0010

1

43

0001

0000

 

59

0000

0010

0

25

0000

1111

 

27

0000

0001

1

37

0000

1110

 

39

0000

0001

0

26

0000

1101

 

0*

0000

0000

1


       *4:2:0色度结构中不使用

表13.33  MPEG-2的coded_block_pattern_420可变长码表


块层

每个块层的数据包括系数数据。它的结构如图13.5所示。


Dct_dc_size_luminance

这个可选的可变长编码仅存在于Y帧内编码块中,指示跟随其后的dct_dc_differential的比特数。它的值如表13.34所示。


Dct_dc_differential

如果dct_dc_size_luminance 0,那么这个可选的可变长编码存在。它的值如表13.36所示。


Dct_dc_size_chrominance

这个可选的可变长编码仅存在于CbCr帧内编码块中,指示跟随其后的dct_dc_differential的比特数。它的值如表13.35所示。


Dct_dc_differential

如果dct_dc_size_chrominance 0,那么这个可选的可变长编码存在。它的值如表13.36所示。


Dct_coefficient_first

这个可选的可变长码字被用于非帧内编码块的第一个DCT系数,定义于表13.37,13.38,13.39和13.40中。


Dct_coefficient_next

最多63个可选的可变长码字,仅存在于I,P和B帧中。它们是跟随在第一个DCT系数之后的DCT系数,定义于表13.37,13.38,13.39和13.40中。


End_of_block

这个2-比特或4-比特值被用于指示没有额外非0的系数存在了。这个参数的值是“10”或“0110”。

 


DCT DC尺寸 亮度

码字

DCT DC尺寸 亮度

码字

0

100

6

1111 0

1

00

7

1111 10

2

01

8

1111 110

3

101

9

1111 1110

4

110

10

1111 1111 0

5

1110

11

1111 1111 1


 

表13.34  MPEG-2的dct_dc_size_luminance可变长码字表

 


DCT DC尺寸 色度

码字

DCT DC尺寸 色度

码字

0

00

6

1111 10

1

01

7

1111 110

2

10

8

1111 1110

3

110

9

1111 1111 0

4

1110

10

1111 1111 10

5

1111 0

11

1111 1111 11


 

表13.35  MPEG-2的dct_dc_size_chrominance可变长码字表


运动补偿

图13.14显示了基本运动补偿处理。运动补偿形式从前面解码的图像预测,它顺序从IDCT变换中融合系数数据(误差项)。

 图13.14最简单的运动补偿处理


场预测

P图像的预测由两个最近的解码参考场而来。最简单的情况如图13.15所示,当预测一帧的第一个图像或当使用一帧中的场预测而使用。

预测一帧中的第二场也需要最近两场解码的参考场。如图13.16所示是第二个图像是底场,图13.17所示是第二个图像是顶场。

B图像的场预测是从最近两帧的两场而来的,如图13.18所示。

 


DCT DC 范围

DCT DC位数

码字(Y)

码字(CbCr)

额外码字

-2048~-1024

11

111111111

1111111111

00000000000~01111111111

-1023~-512

10

111111110

1111111110

0000000000~0111111111

-511~-256

9

11111110

111111110

000000000~011111111

-255~-128

8

1111110

11111110

00000000~01111111

-127~-64

7

111110

1111110

0000000~0111111

-63~-32

6

11110

111110

000000~011111

-31~-16

5

1110

11110

00000~01111

-15~-8

4

110

1110

0000~0111

-7~-4

3

101

110

000~011

-3~-2

2

01

10

00~01

-1

1

00

01

0

0

0

100

00

 

1

1

00

01

1

2~3

2

01

10

10~11

4~7

3

101

110

100~111

8~15

4

110

1110

1000~1111

16~31

5

1110

11110

10000~11111

32~63

6

11110

111110

100000~111111

64~127

7

111110

1111110

1000000~1111111

128~255

8

1111110

11111110

10000000~1111111

256~511

9

11111110

111111110

100000000~111111111

512~1023

10

111111110

1111111110

1000000000~1111111111

1024~2047

11

111111111

1111111111

10000000000~11111111111


 

表13.36  MPEG-2的dct_dc_differential可变长码字表

 


 


游程

级别

码字

EOB

 

10

 

 

 

0

1

1s

如果第一个系数

0

1

11s

不是第一个系数

0

2

0100

s

 

 

0

3

0010

1s

 

 

0

4

0000

110s

 

 

0

5

0010

0110

s

 

0

6

0010

0001

s

 

0

7

0000

0010

10s

 

0

8

0000

0001

1101

s

0

9

0000

0001

1000

s

0

10

0000

0001

0011

s

0

11

0000

0001

0000

s

0

12

0000

0000

1101

0s

0

13

0000

0000

1100

1s

0

14

0000

0000

1100

0s

0

15

0000

0000

1011

1s

0

16

0000

0000

0111

11s

0

17

0000

0000

0111

10s

0

18

0000

0000

0111

01s

0

19

0000

0000

0111

00s

0

20

0000

0000

0110

11s

0

21

0000

0000

0110

10s

0

22

0000

0000

0110

01s

0

23

0000

0000

0110

11s

0

24

0000

0000

0101

11s

0

25

0000

0000

0101

10s

0

26

0000

0000

0101

01s

0

27

0000

0000

0101

00s

0

28

0000

0000

0100

11s

0

29

0000

0000

0100

10s

0

30

0000

0000

0100

01s


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.37a              MPEG-2的dct_coefficient_first和dct_coefficient_next为0的可变长码字表


 


游程

级别

码字

0

31

0000

0000

0100

00s

0

32

0000

0000

0011

000s

0

33

0000

0000

0010

111s

0

34

0000

0000

0010

110s

0

35

0000

0000

0010

101s

0

36

0000

0000

0010

100s

0

37

0000

0000

0010

011s

0

38

0000

0000

0010

010s

0

39

0000

0000

0010

001s

1

40

0000

0000

0010

000s

1

1

011s

 

 

 

1

2

0001

10s

 

 

1

3

0010

0101

s

 

1

4

0000

0011

00s

 

1

5

0000

0001

1011

s

1

6

0000

0000

1011

0s

1

7

0000

0000

1010

1s

1

8

0000

0000

0011

111s

1

9

0000

0000

0011

110s

1

10

0000

0000

0011

101s

1

11

0000

0000

0011

100s

1

12

0000

0000

0011

011s

1

13

0000

0000

0011

010s

1

14

0000

0000

0011

001s

1

15

0000

0000

0001

0011s

1

16

0000

0000

0001

0010s

1

17

0000

0000

0001

0001s

1

18

0000

0000

0001

0000s

2

1

0101

s

 

 

2

2

0000

100s

 

 

2

3

0000

0010

11s

 

2

4

0000

0001

0100

s


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.37b       MPEG-2的dct_coefficient_first和dct_coefficient_next为0的可变长码字表


 


游程

级别

码字

2

5

0000

0000

0110

0s

3

1

0011

1s

 

 

3

2

0010

0100

s

 

3

3

0000

0001

1100

s

3

4

1111

0000

1001

1s

4

1

0011

0s

 

 

4

2

0000

0011

11s

 

4

3

1111

0001

0010

s

5

1

0001

11s

 

 

5

2

0000

0010

01s

 

5

3

0000

0000

1001

0s

6

1

0001

01s

 

 

6

2

0000

0001

1110

s

6

3

0000

0000

0001

0100s

7

1

0001

00s

 

 

7

2

0000

0001

0001

s

8

1

0000

111s

 

 

8

2

0000

0001

0001

s

9

1

0000

101s

 

 

9

2

0000

0000

1000

1s

10

1

0010

0111

s

 

10

2

0000

0000

1000

0s

11

1

0010

0011

s

 

11

2

0000

0000

0001

1001s

12

1

0010

0010

s

 

12

2

0000

0000

0001

1001s

13

1

0100

0000

s

 

13

2

0000

0000

0001

1000s

14

1

0000

0011

10s

 

14

2

0000

0000

0001

0111s

15

1

0000

0011

01s

 

15

2

0000

0000

0001

0110s


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.37c              MPEG-2的dct_coefficient_first和dct_coefficient_next为0的可变长码字表


 



游程

级别

码字

16

1

0000

0010

00s

 

16

2

0000

0000

0001

0101s

17

1

0000

0001

1111

s

18

1

0000

0001

1010

s

19

1

0000

0001

1001

s

20

1

0000

0001

0111

s

21

1

0000

0001

0110

s

22

1

0000

0000

1111

1s

23

1

0000

0000

1111

0s

24

1

0000

0000

1110

1s

25

1

0000

0000

1110

0s

26

1

0000

0000

1101

1s

27

1

0000

0000

0001

1111s

28

1

0000

0000

0001

1110s

29

1

0000

0000

0001

1101s

30

1

0000

0000

0001

1100s

31

1

0000

0000

0001

1011s

ESC

0000

01

 

 


                       注:                         1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.37d       MPEG-2的dct_coefficient_first和dct_coefficient_next为0的可变长码字表

 


游程

级别

码字

EOB

0110

 

 

 

0

1

10s

 

 

 

0

2

110s

 

 

 

0

3

0111

s

 

 

0

4

1110

0s

 

 

0

5

1110

1s

 

 

0

6

0001

01s

 

 

0

7

0001

00s

 

 

0

8

1111

011s

 

 

0

9

1111

100s

 

 

0

10

0010

0011

s

 

0

11

0010

0010

s

 

0

12

1111

1010

s

 

0

13

1111

1011

s

 

0

14

1111

1110

s

 


                       注:1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.38a              MPEG-2的dct_coefficient_first和dct_coefficient_next为1的可变长码字表


游程

级别

码字

0

15

1111

1111

s

 

0

16

0000

0000

0111

11s

0

17

0000

0000

0111

10s

0

18

0000

0000

0111

01s

0

19

0000

0000

0111

00s

0

20

0000

0000

0110

11s

0

21

0000

0000

0110

10s

0

22

0000

0000

0110

01s

0

23

0000

0000

0110

00s

0

24

0000

0000

0101

11s

0

25

0000

0000

0101

10s

0

26

0000

0000

0101

01s

0

27

0000

0000

0101

00s

0

28

0000

0000

0100

11s

0

29

0000

0000

0100

10s

0

30

0000

0000

0100

01s

0

31

0000

0000

0100

00s

0

32

0000

0000

0011

000s

0

33

0000

0000

0100

111s

0

34

0000

0000

0100

110s

0

35

0000

0000

0100

101s

0

36

0000

0000

0100

100s

0

37

0000

0000

0100

011s

0

38

0000

0000

0100

010s

0

39

0000

0000

0100

001s

0

40

0000

0000

0100

000s

1

1

010s

 

 

 

1

2

0011

1s

 

 

1

3

1111

001s

 

 

1

4

0010

0111

s

 

1

5

0010

0000

s

 

1

6

0000

0000

1011

s


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.38b       MPEG-2的dct_coefficient_first和dct_coefficient_next为1的可变长码字表


 


游程

级别

码字

1

7

1111

1111

1010

1s

1

8

0000

0000

0011

111s

1

9

0000

0000

0011

110s

1

10

0000

0000

0011

101s

1

11

0000

0000

0011

100s

1

12

0000

0000

0011

011s

1

13

0000

0000

0011

010s

1

14

0000

0000

0011

001s

1

15

0000

0000

0001

0011s

1

16

0000

0000

0001

0010s

1

17

0000

0000

0001

0001s

1

18

0000

0000

0001

0000s

2

1

0010

1s

 

 

2

2

0000

111s

 

 

2

3

1111

1100

s

 

2

4

0000

0011

00s

 

2

5

0000

0000

1010

0s

3

1

0011

1s

 

 

3

2

0010

0110

s

 

3

3

0000

0001

1100

s

3

4

0000

0000

1001

1s

4

1

0001

10s

 

 

4

2

1111

1101

s

 

4

3

0000

0001

0010

s

5

1

0001

11s

 

 

5

2

0000

0010

0s

 

5

3

0000

0000

1001

0s

6

1

0000

110s

 

 

6

2

0000

0001

1110

s

6

3

0000

0000

0001

0100s

7

1

0000

100s

 

 

7

2

0000

0001

0101

s


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.38c              MPEG-2的dct_coefficient_first和dct_coefficient_next为1的可变长码字表


 


游程

级别

码字

8

1

0000

101s

 

 

8

2

0000

0001

00001

s

9

1

1111

000s

 

 

9

2

0000

0000

1000

1s

10

1

1111

010s

 

 

10

2

0000

0000

1000

0s

11

1

0010

0001

s

 

11

2

0000

0000

0001

1010s

12

1

0010

0101

s

 

12

2

0000

0000

0001

1001s

13

1

0010

0100

s

 

13

2

0000

0000

0001

1000s

14

1

0000

0010

1s

 

14

2

0000

0000

0001

0111s

15

1

0000

0011

1s

 

15

2

0000

0000

0001

0110s

16

1

0000

0011

01s

 

16

1

0000

0000

0001

0101s

17

1

0000

0001

1111

s

18

1

0000

0001

1010

s

19

1

0000

0001

1001

s

20

1

0000

0001

0111

s

21

1

0000

0001

0110

s

22

1

0000

0000

1111

1s

23

1

0000

0000

1111

0s

24

1

0000

0000

1110

1s

25

1

0000

0000

1110

0s

26

1

0000

0000

1101

1s

27

1

0000

0000

0001

1111s

28

1

0000

0000

0001

1110s

29

1

0000

0000

0001

1101s

30

1

0000

0000

0001

1100s

31

1

0000

0000

0001

1011s

ESC

 

0000

01

 

 


                       注:

                            1.s = 级别的符号;“0”是正;s =“1”是负。

 

表13.38d       MPEG-2的dct_coefficient_first和dct_coefficient_next为1的可变长码字表


 


游程长度

码字

0

0000

00

1

0000

01

2

0000

10

62

1111

10

63

1111

11


 

表13.39  dct_coefficient_first和dct_coefficient_next的跟随一个逃逸码的游程编码

 


电平

码字

-2047

1000

0000

0001

-2046

1000

0000

0010

-1

1111

1111

1111

禁止

0000

0000

0000

1

0000

0000

0001

2047

0111

1111

1111


 

表13.40  dct_coefficient_first和dct_coefficient_next的跟随一个逃逸码的电平编码

 图13.15一帧图像中的第一场或预测场的P帧预测

 图13.16第二场(底场)图像的P帧预测

 图13.17第二场(顶场)图像的P帧预测


帧预测

P帧的预测是由最近的解码图像而来,如图13.19所示。参考图像可能已经编码成或者两个场或者一个帧。

B图像的预测是由两个最近的参考帧而来,如图13.20所示。每个参考帧可能已经编码成或者两个场或者一个帧。

 图13.18  B场或B帧的场预测

 图13.19  P图像的帧预测

 图19.20  B图像的帧预测