第 50 页共 99页
表 3-19 I-VOP和P-VOP中cbpy的变长码表
Code cbpy(intra-MB)
(12
34)
cbpy(inter-MB),
(12
34)
0011 00
00
11
11
0010 1 00
01
11
10
0010 0 00
10
11
01
1001 00
11
11
00
0001 1 01
00
10
11
0111 01
01
10
10
0000 10 01
10
10
01
1011 01
11
10
00
0001 0 10
00
01
11
0000 11 10
01
01
10
0101 10
10
01
01
1010 10
11
01
00
0100 11
00
00
11
1000 11
01
00
10
0110 11
10
00
01
11 11
11
00
00
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 51 页共 99页
Dquant:这是一个2 比特码,它指示了I-VOP和P-VOP中量化值的变化。表3-20 给出了
这些码字和它们表示的差分值。量化值的范围是1 到31,如果当前量化值加上dquant 后小
于1 或者大于31,则应该限制在1 到31 之间。注意这里当前的量化值实际上指的是上一个
编码的宏块的量化值。因此,在解码过程中,一帧的quant 值需要一直保留,并被不断更新
的。
表 3-20 dquant码和相应的值
dquant code value
00 -1
01 -2
10 1
11 2
Co_located_not_coded:这个码字在码流中并不存在。在当前vop 是B-VOP,它的后向参考
VOP是一个P-VOP,并且在后向参考宏块钟和当前宏块的编号一样的参考宏块没有被编码,
则这个标志设置为1,否则这个标志设置为0。
Modb:这是一个变长码,它只有在编码的B_VOP 的宏块中才会出现。它指示了mb_type
和/或者cbpb 在当前宏块中是否存在。这个码字的含义在表3-21中给出。
表 3-21 modb的变长码表
Code cbpb mb_type
1
01 1
00 1 1
Mb_type:这是一个变长码,它只在编码的B-VOP 中出现。进一步说,这个码字只有在包
含运动矢量的宏块中出现。Mb_type的变长码字在表3-22 中给出。
表 3-22 B-VOP的编码宏块中的mb_type和对应包含的数据元素
Code dbquant mvdf mvdb mvdb mb_type
1 1 direct
01 1 1 1 interpolate mc+q
001 1 1 backward mc+q
0001 1 1 forward mc+q
Cbpb:这是一个6 比特码,它表示B-VOP种编码块的模式。Cbpb 的每一个比特描述了对应
的块是否被编码的状态,最左边的比特与宏块中左上角的亮度块对应。最后2 个比特对应两
个色度块。对一个存在非0 系数的块,相应的比特设置为1,否则设置为0。如果一个宏块
的所有块的系数均为0,则modb 的值应该为1 或者01,指示了cbpb 码字在码流中不存在。
Dbquant:这是一个变长码,它指示了B-VOP中量化值的变化。表3-23给出了这些码字和
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 52 页共 99页
它们表示的差分值。如果当前量化值加上dbquant 后小于1 或者大于31,它将被限制在1
到31 之间。注意,同dquant 一样,这里当前的量化值实际上指的是上一个编码的宏块的量
化值。因此,在解码过程中,一帧的quant 值需要一直保留,并被不断更新的。
表 3-23 dbquant变长码字和对应的值
dbquant code value
10 -2
0 0
11 2
3.3.6.2 运动向量
horizontal_mv_data:这是一个变长码,如表3-24 所示,它在运动向量解码中使用。
Vertical_mv_data:这是一个变长码,如表3-24 所示,它在运动向量解码中使用。
Horizontal_mv_residual:这是一个无符号整数,它用在运动向量解码中。它在码流中的比特
数可以由fcode_forward和fcode_backward按下面的方式得到:
R_size = vop_fcode_forward – 1 或者R_size = vop_fcode_backward – 1
Vertical_mv_residual:这是一个无符号整数,它用在运动向量解码中。它在码流中的比特数
可以由fcode_forward和fcode_backward按下面的方式得到:
R_size = vop_fcode_forward – 1 或者R_size = vop_fcode_backward – 1
表3-24 MVD的变长码表
Codes Vector differences
0000 0000 0010 1 -16
0000 0000 0011 1 -15.5
0000 0000 0101 -15
0000 0000 0111 -14.5
0000 0000 1001 -14
0000 0000 1011 -13.5
0000 0000 1101 -13
0000 0000 1111 -12.5
0000 0001 001 -12
0000 0001 011 -11.5
0000 0001 101 -11
0000 0001 111 -10.5
0000 0010 001 -10
0000 0010 011 -9.5
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 53 页共 99页
0000 0010 101 -9
0000 0010 111 -8.5
0000 0011 001 -8
0000 0011 011 -7.5
0000 0011 101 -7
0000 0011 111 -6.5
0000 0100 001 -6
0000 0100 011 -5.5
0000 0100 11 -5
0000 0101 01 -4.5
0000 0101 11 -4
0000 0111 -3.5
0000 1001 -3
0000 1011 -2.5
0000 111 -2
0001 1 -1.5
0011 -1
011 -0.5
1 0
010 0.5
0010 1
0001 0 1.5
0000 110 2
0000 1010 2.5
0000 1000 3
0000 0110 3.5
0000 0101 10 4
0000 0101 00 4.5
0000 0100 10 5
0000 0100 010 5.5
0000 0100 000 6
0000 0011 110 6.5
0000 0011 100 7
0000 0011 010 7.5
0000 0011 000 8
0000 0010 110 8.5
0000 0010 100 9
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 54 页共 99页
0000 0010 010 9.5
0000 0010 000 10
0000 0001 110 10.5
0000 0001 100 11
0000 0001 010 11.5
0000 0001 000 12
0000 0000 1110 12.5
0000 0000 1100 13
0000 0000 1010 13.5
0000 0000 1000 14
0000 0000 0110 14.5
0000 0000 0100 15
0000 0000 0011 0 15.5
0000 0000 0010 0 16
注意: 当 vop_fcode等于1 是最后一个码字不能被使用。
3.3.6.3 隔行模式下的信息
dct_type:这是一个1 比特标志,它指示了一个宏块使用帧DCT 变换还是场DCT 变换。如
果这个标志为1,这个宏块使用场DCT变换;否则使用帧DCT变换。这个标志只有在隔行
标志被设置1 并且当前宏块被编码(编码块模式非0)或者为帧内宏块时才会存在。
Field_prediction:这是一个1 比特标志,它指示了当前宏块使用场预测还是帧预测。当这个
标志设置为1 时,说明使用场预测,设置为0 时,使用帧预测。这个标志只有在隔行标志被
设置为1 并且P-VOP 中的derived_mb_type 等于0 或者1;或者B-VOP 中非直接模式的宏
块时才会存在。
Forward_top_field_reference:这是一个1 比特标志,它指示了顶场使用前向运动补偿时的参
考场。当这个标志设置为0 时,顶场被用作参考场;当这个标志被设置为1 时,底场被用作
参考场。这个标志只在field_prediction被设置为1 并且宏块不是使用后向预测时才会存在。
Forward_bottom_field_reference:这是一个1 比特标志,它指示了底场使用前向运动补偿时
的参考场。当这个标志设置为0 时,顶场被用作参考场;当这个标志被设置为1 时,底场被
用作参考场。这个标志只在field_prediction被设置为1 并且宏块不是使用后向预测时才会存
在。
Backward_top_field_reference:这是一个1 比特标志,它指示了顶场使用后向运动补偿时的
参考场。当这个标志设置为0 时,顶场被用作参考场;当这个标志被设置为1时,底场被用
作参考场。这个标志只在field_prediction被设置为1并且宏块不是使用前向预测时才会存在。
Backward_bottom_field_reference:这是一个1 比特标志,它指示了底场使用后向运动补偿时
的参考场。当这个标志设置为0 时,顶场被用作参考场;当这个标志被设置为1 时,底场被
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 55 页共 99页
用作参考场。这个标志只在field_prediction被设置为1 并且宏块不是使用前向预测时才会存
在。
3.3.6.4 块层相关
use_intra_dc_vlc:内部宏块dc是否单独编码的标志。当它为1 时,使用intra dc vlc,即dc单
独编码;当它为0时,使用intra ac vlc,即dc按照ac一样编码。这个码字可以由intra_dc_vlc_thr
和上一个宏块(或者当前宏块的量化系数而来),具体见intra_dc_vlc_thr 的语义。
intra_dc_coefficient:这是一个定长码字,它在短头格式时被使用(即short_video_header 为1)
时定义了帧内宏块DC系数的值。它作为一个8 比特无符号定长码被传输,除非这个整数是
255。0到128 不能被使用,作为保留值。如果这个整数是255,它被解释为值128。这个整
数然后被乘以dc_scaler(等于8)来产生重建的帧内DC系数值。
Dct_dc_size_luminance:这是一个变长码,如表3-25 所示,它用来产生帧内宏块中亮度块
的DC系数的差分值。这个值把系数按照它们的长度进行分类。
表 3-25 dct_dc_size_luminance的变长码表
Variable length code dct_dc_size_luminance
011 0
11 1
10 2
010 3
001 4
0001 5
0000 1 6
0000 01 7
0000 001 8
0000 0001 9
0000 0000 1 10
0000 0000 01 11
0000 0000 001 12
NOTE: 变长码字对应的dct_dc_size_luminance的值为10、11、12时,如果当前对象类型对
应的像素宽度为8bite,则是不合法的。因此对我们来说长度为10、11、12 的
dct_dc_size_luminance 不会出现,因此差分DC 值的数据范围为[-511,+511],只用10
位表示就足够了。
Dct_dc_size_chrominance:这是一个变长码,见表它用来产生帧内宏块中色度块的DC 系数
的差分值。这个值把系数按照它们的长度进行分类,如表3-26所示。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 56 页共 99页
表 3-26 dct_dc_size_chrominance的变长码表
Variable length code dct_dc_size_chrominance
11 0
10 1
01 2
001 3
0001 4
0000 1 5
0000 01 6
0000 001 7
0000 0001 8
0000 0000 1 9
0000 0000 01 10
0000 0000 001 11
0000 0000 0001 12
NOTE: 变长码字对应的dct_dc_size_chrominance的值为10、11、12时,如果当前对象类型
对应的像素宽度为8bite,则是不合法的。因此对我们来说长度为10、11、12 的
dct_dc_size_chrominance 不会出现,因此差分DC 值的数据范围为[-511,+511],只用
10 位表示就足够了。
Dct_dc_differetial:这是一个变长码,它可以用来产生帧内宏块中的差分DC 系数值。在它
的长度被dct_dc_size_luminance或dct_dc_size_chrominance确定后,它的实际值可以得到。
它的码表见表3-27:
Pattern_code[i]:当第i块的用变长码表示的DCT coefficient 全部为0,则该码字为0,否则
为1。对帧内宏块,如果第i 块的DC单独编码,且对应的cbp为0,则pattern_code为0。
对帧间宏块,如果第i块cbp为0,则pattern_code为0。(对内部宏块,如果dc不单独编码,
则特殊考虑)
DCT coefficient:用变长码表示的DCT系数。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 57 页共 99页
表 3-27 差分 DC码
Additional code Differential DC Size
000000000000 to 011111111111 * -4095 to -2048 12
00000000000 to 01111111111 * -2047 to -1024 11
0000000000 to 0111111111 * -1023 to -512 10
000000000 to 011111111 * -511 to -256 9
00000000 to 01111111 -255 to -128 8
0000000 to 0111111 -127 to -64 7
000000 to 011111 -63 to -32 6
00000 to 01111 -31 to -16 5
0000 to 0111 -15 to -8 4
000 to 011 -7 to -4 3
00 to 01 -3 to -2 2
0 -1 1
0 0
1 1 1
10 to 11 2 to 3 2
100 to 111 4 to 7 3
1000 to 1111 8 to 15 4
10000 to 11111 16 to 31 5
100000 to 111111 32 to 63 6
1000000 to 1111111 64 to 127 7
10000000 to 11111111 128 to 255 8
100000000 to 111111111 * 256 to 511 9
1000000000 to 1111111111 * 512 to 1023 10
10000000000 to 11111111111 * 1024 to 2047 11
100000000000 to 111111111111 * 2048 to 4095 12
NOTE1: 变长码字对应的size 的值为10、11、12 时,如果当前对象类型对应的像素宽度为
8bite,则是不合法的。因此对我们来说长度为10、11、12 的size不会出现,因此差分DC
值的数据范围为[-511,+511],只用10 位表示就足够了。
NOTE2:当dct_dc_size大于8 时(在表中标记了*号),在dct_dc_additional_code之后要插入
一个填充比特,以防止与起始码竞争。
3.3.7 短头格式
video_plane_with_short_header():这个数据结构包含了使用短头格式的视频平面。有几个参
数对短头格式都是预先定义,并且是固定的,这是由于短头格式中信息容量是受限制的。这
些固定的参数见表3-28。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 58 页共 99页
表 3-28 video_plane_with_short_header()中的固定设置
Parameter Value
video_object_layer_shape “rectangular”
obmc_disable 1
quant_type 0
resync_marker_disable 1
data_partitioned 0
block_count 6
reversible_vlc 0
vop_rounding_type 0
vop_fcode_forward 1
vop_coded 1
interlaced 0
complexity_estimation_disable 1
use_intra_dc_vlc 0
scalability 0
not_8_bit 0
bits_per_pixel 8
colour_primaries 1
transfer_characteristics 1
matrix_coefficients 6
Short_video_start_marker:这是一个22 比特的起始标记,它的值为‘0000 0000 0000 0000 1000
00’。它用来表示含有短头格式的视频平面的位置。Short_video_start_marker 的前面可能不
需要插入0到7 个0来使得它是字节对齐的。
Temporal_reference:这是一个8 比特整数,包含256个可能的值。它的值是这样获得的,首
先将上一个传输的video_plane_with_short_header()中的temporal_reference加1,然后再加上
从上一个传输的图像到当前图像之间位传输的图像数目(在30000/1001HZ时考虑这个)。
这里的计算只用8 个LSB进行。
Split_screen_indicator:这是一个布尔信号,它指示了解码图象的上一半和下一半可以被并排
显示。这个比特在视频平面的编码和解码过程中没有直接的作用。
Document_camera_dindicator:这是一个布尔信号,它指示了VOP的视频内容的来源是文档
照相机(document camera)还是图形学表示(graphic representation),这同自然视频内容相反。
这个比特在视频平面的编码和解码过程中没有直接的作用。
Full_picture_freeze_release:这是一个布尔信号,它指示了如果视频信号的显示出现停止
(frozen),(由于错误,包丢失或者其他一些原因引起的),显示需要被恢复,这个比特在视频
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 59 页共 99页
平面的编码和解码过程中没有直接作用。
Source_format:这个值指示了由video_plane_with_short_header 表示的矩形视频平面的长度
和宽度。它的具体含义见表3-29。每一个源格式有相同的vop 时间间隔分辨率,它等于
30000/1001(近似为29.97)Hz;资源格式也具有相同的长宽比(288/3):(352/4),即12:11,
它定义了长宽比为4:3 的CIF格式的图像。
表 3-29 source_format域定义的参数
source_format
value
Source Format
Meaning
vop_width vop_height num_macroblocks_in_
gob
num_gobs_in_
vop
000 reserved reserved reserved reserved reserved
001 sub-QCIF 128 96 8 6
010 QCIF 176 144 11 9
011 CIF 352 288 22 18
100 4CIF 704 576 88 18
101 16CIF 1408 1152 352 18
110 reserved reserved reserved reserved reserved
111 reserved reserved reserved reserved reserved
Picture_coding_type:这个比特制定了vop_coding_type,当它等于0 时,vop_coding_type是:
“I”;当它等于1时,vop_coding_type为“P”。
Four_reserved_zero_bits:这个一个4 比特域,它包含了为未来保留的比特,现在都为0。
Pei:这是一个1 比特标志,当它为1 时指示了它后面有1 字节的psupp数据。
Psupp:这是一个8 比特域,它只有在pei为1 时才会出现。Pei + psupp机制为将来向后兼
容数据提供了保留方法。解码器无论是接受还是丢弃psupp,对解码都没有影响。Pei + psupp
的合并出现可能重复多次。Pei + psupp为将来的应用而保留的。
Gob_number:这是一个5 比特值,它指示了视频平面中视频数据的位置。一个GOB包含了
图像中按光栅扫描顺序的一些宏块。对于给定的gob_number , GOB 包含了
num_macroblock_per_gob 个宏块,从宏块号macroblock_number = gob_number *
num_macroblocks_per_gob开始的。Gob_number 即可以从码流中读出,也可以由解码过程推
断。
Num_gobs_in_vop:指示vop 中的GOB 数。这个参数可以从source_format 中得到,见表3
-28。
Gob_layer():这是在VOP中包含固定数目宏块的层。属于每隔gob的宏块可以用gob_number
和num_macroblock_in_gob 确定。
Gob_resync_marker:这是一个长度固定的17 比特的定长码,它的值为‘0000 0000 0000 0000
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
第 60 页共 99页
1’,它可以随意的插入在gob_layer()的开始。它的目的是作为码流中错误恢复的重同步标志。
Gob_resync_marker 码必须是字节对齐的,可以在码流中插入0 到7 个0 来字节对齐。
Gob_resync_marker 在第一个GOB中不能出现。
Gob_number:这是一个5 比特值,它指示了VOP 中哪个GOB 正在被处理,它的值即可以
从下面的gob_resync_marker 中读出,也可以从宏块解码过程中推断出来。所有GOB在每一
个video_plane_with_short_header()中出现,并且GOB 在码流中按严格增加的顺序出现。换
句话说,如果gob_number 从gob_resync_marker 后面的码字中读出,它的值必须和从码流中
推断出来的值一样。
Gob_frame_id:这是一个2 比特域,它在video_plane_with_short_header()中的vop头丢失的
情形下,用来帮助确定gob_resync_marker 后面的数据还能不能被使用。Gob_frame_id在给
定的video_plane_with_short_header()中的每一个GOB 头中的值都相同。进一步,如果在
video_plane_with_short_header()头中的split_screen_indicator、document_camera_indicator、
full_picture_freeze_release、source_format或picture_coding_type的任一个都和同一个视频对
象中先前传输的图像一致,则gob_frame_id 也同前面传输的图像的一致;反过来,如果当
前图像头中的信息同上一个传输的图像头中的信息不一样,那么gob_frame_id 同上一个图
像不一样。
Num_macroblocks_in_gob:这个值描述了每一个GOB 中的宏块数目。这个参数从
source_format中得到,见表3-28。
Short_video_end_marker:这是一个22 比特的值,它的值为‘0000 0000 0000 0000 1111 11’。
它用来表示video_plane_with_short_header()序列的结束。它也必须是字节对齐的,可以通过
在码流中插入1 个到7 个0 来实现。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc