MPEG4标准中的Advanced Simple Profile(ASP)完整的说明-03-2章

转载:

26 页共 99
marker_bit 1 bslbf
vop_time_increment 1-16 bslbf
marker_bit 1 bslbf
vop_coding_type 2 uimsbf
intra_dc_vlc_thr 3 uimsbf
if (vop_coding_type != “I”)
vop_fcode_forward 3 uimsbf
if (vop_coding_type == “B”)
vop_fcode_backward 3 uimsbf
}
}
Motion Shape Texture
motion_shape_texture() { No. of bits Mnemonic
combined_motion_shape_texture()
}
combined_motion_shape_texture() { No. of bits Mnemonic
do{
macroblock()
} while (nextbits_bytealigned() != resync_marker &&
nextbits_bytealigned()
!= ‘000 0000 0000 0000 0000 0000’)
}
3.2.5 Macroblock
macroblock() { No. of bits Mnemonic
if (vop_coding_type != “B”) {
if (vop_coding_type == “P”)
not_coded 1 bslbf
if (!not_coded || vop_coding_type == “I)
mcbpc 1-9 vlclbf
if (!not_coded || vop_coding_type == “I”) {
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
27 页共 99
if (!short_video_header &&
(derived_mb_type == 3 ||
derived_mb_type == 4))
ac_pred_flag 1 bslbf
if (derived_mb_type != “stuffing”)
cbpy 1-6 vlclbf
else
return()
if (derived_mb_type == 1 ||
derived_mb_type == 4)
dquant 2 bslbf
if (interlaced)
interlaced_information()
if ((derived_mb_type == 0 || derived_mb_type == 1)
&& (vop_coding_type == “P”)) {
motion_vector(“forward”)
if (interlaced && field_prediction)
motion_vector(“forward”)
}
if (derived_mb_type == 2) {
for (j=0; j < 4; j++)
motion_vector(“forward”)
}
for (i = 0; i < block_count; i++)
block(i)
}
}
else {
if (co_located_not_coded != 1) {
modb 1-2 vlclbf
if (modb != ‘1’) {
mb_type 1-4 vlclbf
if (modb == ‘00’)
cbpb 6 vlclbf
if (mb_type != “1” && cbpb!=0)
dbquant 1-2 vlclbf
if (interlaced)
interlaced_information()
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
28 页共 99
if (mb_type == ‘01’ ||
mb_type == ‘0001’) {
motion_vector(“forward”)
if (interlaced && field_prediction)
motion_vector(“forward”)
}
if (mb_type == ‘01’ || mb_type == ‘001’) {
motion_vector(“backward”)
if (interlaced && field_prediction)
motion_vector(“backward”)
if (mb_type == “1”)
motion_vector(“direct”)
for (i = 0; i < block_count; i++)
block(i)
}
}
}
NOTE: The value of block_count is 6 in the 4:2:0 format.
Motion vector
motion_vector ( mode ) { No. of bits Mnemonic
if ( mode == ?direct“ ) {
horizontal_mv_data 1-13 vlclbf
vertical_mv_data 1-13 vlclbf
}
else if ( mode == ?forward“ ) {
horizontal_mv_data 1-13 vlclbf
if ((vop_fcode_forward != 1) && (horizontal_mv_data != 0))
horizontal_mv_residual 1-6 uimsbf
vertical_mv_data 1-13 vlclbf
if ((vop_fcode_forward != 1) && (vertical_mv_data != 0))
vertical_mv_residual 1-6 uimsbf
}
else if ( mode == ?backward“ ) {
horizontal_mv_data 1-13 vlclbf
if ((vop_fcode_backward != 1) && (horizontal_mv_data != 0))
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
29 页共 99
horizontal_mv_residual 1-6 uimsbf
vertical_mv_data 1-13 vlclbf
if ((vop_fcode_backward != 1) && (vertical_mv_data != 0))
vertical_mv_residual 1-6 uimsbf
}
}
Interlaced Information
interlaced_information( ) { No. of bits Mnemonic
if ((derived_mb_type == 3) || (derived_mb_type == 4) ||
(cbp != 0) )
dct_type 1 bslbf
if ( ((vop_coding_type == “P”) &&
((derived_mb_type == 0) || (derived_mb_type == 1)) ) ||
((vop_coding_type == “B”) && (mb_type != “1”)) ) {
field_prediction 1 bslbf
if (field_prediction) {
if (vop_coding_type == “P” ||
(vop_coding_type == “B” &&
mb_type != “001”) ) {
forward_top_field_reference 1 bslbf
forward_bottom_field_reference 1 bslbf
}
if ((vop_coding_type == “B”) &&
(mb_type != “0001”) ) {
backward_top_field_reference 1 bslbf
backward_bottom_field_reference 1 bslbf
}
}
}
}
3.2.6 Block
The detailed syntax for the term “DCT coefficient” is fully described in clause 7.
block( i ) { No. of bits Mnemonic
last = 0
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
30 页共 99
if(derived_mb_type == 3 || derived_mb_type == 4) {
if(short_video_header == 1)
intra_dc_coefficient 8 uimsbf
else if (use_intra_dc_vlc == 1) {
if ( i<4 ) {
dct_dc_size_luminance 2-11 vlclbf
if(dct_dc_size_luminance != 0)
dct_dc_differential 1-12 vlclbf
if (dct_dc_size_luminance > 8)
marker_bit 1 bslbf
} else {
dct_dc_size_chrominance 2-12 vlclbf
if(dct_dc_size_chrominance !=0)
dct_dc_differential 1-12 vlclbf
if (dct_dc_size_chrominance > 8)
marker_bit 1 bslbf
}
}
}
if ( pattern_code[i] )
while ( ! last )
DCT coefficient 3-24 vlclbf
}
NOTE : “last” is defined to be the LAST flag resulting from reading the most recent DCT coefficient.
3.3. 语义
3.3.1 Visual Object Sequence Visual Object
Visual_object_sequence_start_code00 00 01 B0
Profile_and_level_indication8 比特整数,用来指示profilelevel信息。如表32 所示:
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
31 页共 99
我们只给出我们需要的部分,如果码流中解出的profilelevel信息不符合我们解码器的要
求,将会停止解码。
32 profilelevel信息的码表
Profile/Level Code
Simple Profile/Level 1 00000001
Simple Profile/Level 2 00000010
Simple Profile/Level 3 00000011
Simple Profile/Level 0 00001000
Advanced Simple Profile/Level 0 11110000
Advanced Simple Profile/Level 1 11110001
Advanced Simple Profile/Level 2 11110010
Advanced Simple Profile/Level 3 11110011
Advanced Simple Profile/Level 4 11110100
Advanced Simple Profile/Level 5 11110101
Reserved for Escape 11111111
Visual_object_sequence_end_code00 00 01 B1
is_visual_object_identifier:这是一个1 比特码,当它被置为1 时,表明码流后面有版本和优
先级信息;当它被置为0 时,没有版本和优先级信息。
Visual_object_verid:这是一个4 比特码,用来指示视觉对象(visual object)的版本号,它的含
义见表33,如果这个码字不存在,visual_object_verid的值为‘0001’
一个版本号对应了在某个表格中所定义的对象类型。例如版本号为’0001’就对应表91
所定义的对象类型,包括simplecoremain等;我们的Advanced Simple Profile支持simple
objectAdvanced Simple Object两种类型,对应的版本号分别为‘0001’‘0101’,即在
91 中定义了simple object,在表AMD4-13 中定义了Advanced Simple Object。所以我们
遇到的版本号只可能是这两种,如果不是,则要么该码流我们不可解,要么码流发生错误,
我们只能停止解码。
对其他几个版本号对应的表格定义了哪些对象类型这里就不再给出了。
33 视觉对象版本的含义
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
32 页共 99
Visual_object_verid Meaning
0000 reserved
0001 object type listed in Table 9-1
0010 object type listed in Table V2-39
0011 reserved
0100 object type listed in Table AMD3-40
0101 object type listed in Table AMD4-13
0110 - 1111 reserved
Visual_object_priority:这是一个3 比特码,用来指示视觉对象的优先级。我们可以忽略这个
码字。
Visual_object_type:这是一个4 比特码,用来指示视觉对象的类型,如表34 所示:我们
只用到video ID,遇到视频类型,我们就不继续解码。
34 视觉对象类型的含义
code visual object type
0000 reserved
0001 video ID
0010 still texture ID
0011 mesh ID
0100 FBA ID
0101 3D mesh ID
01101 reserved
: :
: :
1111 reserved
Video_object_start_code:这是一个32 比特的起始码字,前27 位是‘0000 0000 0000 0000 0000
0001 000’,剩下的5 个比特从‘00000’‘11111’。本来剩下的5 个比特用来给视频对象
做标记用的,这里我们用不上。因此我们寻找video_object_start_code 时,可以把最后5
比特首先置为0,再去判断,这样这个起始码字就唯一了,我们就可以把它看成一个取值唯
一的起始码字。
Video_signal_type:当此标志设为1,指示了视频信号类型的存在。这些信息是在做格式转
换的时候用的。
Video_format:这是一个3 比特整数,它指示了图像在被编码前的格式。它的含义见下表。
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
33 页共 99
如果 video_signal_type()不存在,则视频格式被假定为“unspecified video format”
Video_format的含义
video_format Meaning
000 Component
001 PAL
010 NTSC
011 SECAM
100 MAC
101 Unspecified video format
110 Reserved
111 Reserved
Video_range:这是一个1 比特标志,用来指示黑色的值和亮度以及色差信号的范围。
Colour_description:这是一个1 比特标志,置为1 时指示了colour_primaries
transfer_charateristics matrix_coefficients在码流中存在。
Colour_primaries:这是一个8 比特整数,定义了源图像基色(source primaries)的色度坐标
(chromaticity coordinates)。如下表所示:
Colour Primaries
Value Primaries
0 (forbidden)
1 ITU-R Recommendation BT.709
primary x y
green 0,300 0,600
blue 0,150 0,060
red 0,640 0,330
white D65 0,3127 0,3290
2 Unspecified Video
Image characteristics are unknown.
3 Reserved
4 ITU-R Recommendation BT.470-2 System M
primary x y
green 0,21 0,71
blue 0,14 0,08
red 0,67 0,33
white C 0,310 0,316
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
34 页共 99
5 ITU-R Recommendation BT.470-2 System B, G
primary x y
green 0,29 0,60
blue 0,15 0,06
red 0,64 0,33
white D65 0,3127 0,3290
6 SMPTE 170M
primary x y
green 0,310 0,595
blue 0,155 0,070
red 0,630 0,340
white D65 0,3127 0,3290
7 SMPTE 240M (1987)
primary x y
green 0,310 0,595
blue 0,155 0,070
red 0,630 0,340
white D65 0,3127 0,3290
8 Generic film (colour filters using Illuminant C)
primary x y
green 0,243 0,692 (Wratten 58)
blue 0,145 0,049 (Wratten 47)
red 0,681 0,319 (Wratten 25)
9-255 Reserved
如果码流中不存在video_signal_type()或者color_description 0,那么色度坐标被假设为与
colour_primaries 等于1 时一致。
Transfer_characteristics:这个8 比特整数描述了源图象的变换特征,见下表。
变换特征
Value Transfer Characteristic
0 (forbidden)
1 ITU-R Recommendation BT.709
V = 1,099 Lc0,45 - 0,099
for 1? Lc ? 0,018
V = 4,500 Lc
for 0,018> Lc ? 0
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
35 页共 99
2 Unspecified Video
Image characteristics are unknown.
3 reserved
4 ITU-R Recommendation BT.470-2 System M
Assumed display gamma 2,2
5 ITU-R Recommendation BT.470-2 System B, G
Assumed display gamma 2,8
6 SMPTE 170M
V = 1,099 Lc0,45 - 0,099
for 1? Lc ? 0,018
V = 4,500 Lc
for 0,018> Lc ? 0
7 SMPTE 240M (1987)
V = 1,1115 Lc0,45 - 0,1115
for Lc? 0,0228
V = 4,0 Lc
for 0,0228> Lc
8 Linear transfer characteristics
i.e. V = Lc
9 Logarithmic transfer characteristic (100:1 range)
V = 1.0-Log10(Lc)/2
for 1= Lc = 0.01
V= 0.0
for 0.01> Lc
10 Logarithmic transfer characteristic (316.22777:1 range)
V = 1.0-Log10(Lc)/2.5
for 1= Lc = 0.0031622777
V= 0.0
for 0.0031622777> Lc
11-255 reserved
当码流中不存在video_signal_type()或者colour_description 0 时,变换特征假定为同
transfer_charateristics 等于1 时一致。
Matrix_coefficients:这个8 比特整数描述了从红、绿、蓝三原色产生亮度和色度信号时使用
的矩阵系数,它的定义见下表:
在这个表中:
E’Y 是一个 01之间的模拟量;
E’PB E’PR -0.5~0.5之间的模拟量;
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
36 页共 99
E’R, E’GE’B 01之间的模拟量;
白色定义为 E’y=1, E’PB=0, E’PR=0; E’R =E’G =E’B=1.
Y, Cb Cr E’Y, E’PBE’PR 的相关性用下面的式子计算:
n比特视频:
如果video_range=0:
Y = ( 219 * 2n-8 * E’Y ) + 2n-4.
Cb = ( 224 * 2n-8 * E’PB ) + 2n-1
Cr = ( 224 * 2n-8 * E’PR ) + 2n-1
如果 video_range=1:
Y = ((2n -1) * E’Y )
Cb = ((2n -1) * E’PB ) + 2n-1
Cr = ((2n -1) * E’PR ) + 2n-1
8比特视频为例:
video_range=0 给出Y的范围为16235CbCr 的范围从16240
video_range=1 给出Y的范围为0255CbCr 的范围从06255
矩阵系数
Value Matrix
0 (forbidden)
1 ITU-R Recommendation BT.709
E’Y = 0,7152 E’G + 0,0722 E’B + 0,2126 E’R
E’PB = -0,386 E’G + 0,500 E’B -0,115 E’R
E’PR = -0,454 E’G - 0,046 E’B + 0,500 E’R
2 Unspecified Video
Image characteristics are unknown.
3 reserved
4 FCC
E’Y = 0,59 E’G + 0,11 E’B + 0,30 E’R
E’PB = -0,331 E’G + 0,500 E’B -0,169 E’R
E’PR = -0,421 E’G - 0,079 E’B + 0,500 E’R
5 ITU-R Recommendation BT.470-2 System B, G
E’Y = 0,587 E’G + 0,114 E’B + 0,299 E’R
E’PB = -0,331 E’G + 0,500 E’B -0,169 E’R
E’PR = -0,419 E’G - 0,081 E’B + 0,500 E’R
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc
37 页共 99
6 SMPTE 170M
E’Y = 0,587 E’G + 0,114 E’B + 0,299 E’R
E’PB = -0,331 E’G + 0,500 E’B -0,169 E’R
E’PR = -0,419 E’G - 0,081 E’B + 0,500 E’R
7 SMPTE 240M (1987)
E’Y = 0,701 E’G + 0,087 E’B + 0,212 E’R
E’PB = -0,384 E’G + 0,500 E’B -0,116 E’R
E’PR = -0,445 E’G - 0,055 E’B + 0,500 E’R
8-255 reserved
当码流中不存在video_signal_type()或者colour_description 0,矩阵系数被假设为与
matrix_coefficient 等于1 时一样;
video_signal_type()在码流中不存在时,video_range 被假设为0(对8 比特视频,Y 16
235)。
对于上面的和video_signal_type相关的信号,我只是按照标准翻译,它的具体含义我现在也
不明白,大概与显示有关系,当以后需要涉及到显示的时候,可以进一步加深理解。
User_data_start_code32 比特的起始码字‘00 00 01 B2’。它指示了用户数据的开始,用户
数据持续到出现下一个起始码字为止。
User_data:这个8 比特整数可以为任意值。用户数据由用户定义,用来指明某种特殊应用,
对我们来说,除非是我们自己定义的信息,否则直接扔掉,对解码不会有影响。
3.3.2 Video Object Layer
video_object_layer_start_code:这是一个32 比特的码字,前28 个比特为‘0000 0000 0000 0000
0000 0001 0010’,后4 个比特从‘0000’‘1111’,后面4 个比特用来标识一个视频层。
我们不管那么多,我们把后面四位全部认为是0 好了,在码流解析的时候,从码流中读取
32 比特码字,在判断它是不是video_object_layer_start_code之前,首先把它的最后四位全部
置为0,再去同我们定义的起始码字进行比较。
Short_video_header:这个码字在码流中是不存在的,我们只能通过起始码字来判断,如果我
们搜索到起始码字为video_object_layer_start_code,那就表明当前码流不是短头格式的码流,
short_video_header 码字为1。短头格式是为了兼容263 编码的,它的详细内容在后面再给出。
Video_plane_with_short_header():这是一个压缩视频平面的语法层,它只包含使用短头格式
时所能使用的有限的语法子集,这个在后面再详细给出。
Random_accessible_vol:这个标志为1 用来指示vol 中每一个vop 都是可以单独解码的。如
vol中所有的vop都是内部编码的vop,那么上述条件可以满足,于是random_accessible_vol
就可以被设置为1Random_accessible_vol对解码过程没有帮助,我们把它直接扔掉即可。
这个码字为了协助随机访问和编辑而特意设计的。如果vol中任何一个vop不是内部编码的,
或者其他一些条件不能满足,那么此标志必须设置为0
PDF 文件使用 "pdfFactory Pro" 试用版本创建www.fineprint.cn
ASIC-MP4V_VID_MPEG4_ASP_WuBC_01.doc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值