ITU-T H.263 Stream Format

</pre><pre name="code" class="html">ITU-T H.263 Stream Format:

5.1 图像层(picture layer)
	[PSC][TR][PTYPE][PQUANT][CPM][PSBI][TRB][DBQUANT][PEI] {[PSUPP][PEI]} [GOBS][ESTUF][EOS][PSTUF]
	1)图像层结构(无任选的PLUSHTYPE相关场)
	5.1.1[PSC]		[22-bit] 	/* 图像起始码 */
	5.1.2[TR] 		[8-bit]		/* 时域参考 */
	5.1.3[PTYPE] 	[13-bit]	/* 图像信息*/
			(PTYPE&0x1000):总为1,为避免起始码仿真
			(PTYPE&0x800):总为0,同ITU-T H.261区分
			(PTYPE&0x400):分屏指示符,为0表示断,为1表示通
			(PTYPE&0x200):文件摄像指示符,为0表示断,为1表示通
			(PTYPE&0x100):全图像冻结释放,为0表示断,为1表示通
			(PTYPE&0xd0):图像格式
				000:禁用,001:SQCIF,010:QCIF,011:CIF,100:4CIF,101:16CIF,110:reserved 111:Extend-PTYPE(PLUSHTYPE)
			(PTYPE&0x10):图像编码类型
				0:I帧图像(INTRA),1:P帧图像(INTER)
			(PTYPE&0x8):非受限运动矢量模式,为0表示断,为1表示通
			(PTYPE&0x4):基于句法的算术编码模式,为0表示断,为1表示通
			(PTYPE&0x2):预测模式,为0表示断,为1表示通
			(PTYPE&0x1):PB帧模式
				0:正常的I或P图像 1:PB帧
				
	5.1.4[PQUANT]	[5-bit]		/* 量化器信息 值为1-31*/ 
	5.1.5[CPM]		[1-bit]		/* 1比特的码字标示任选的连续出现多点和视频多路复用(CPM)的使用,为0表示断,为1表示通 */
	5.1.6[PSBI]		[2-bit]		/* CPM为1 该值存在有效*/
		 if( PTYPE&0x1==1 ) next two attributes(5.1.7&5.1.8) exist;
	5.1.7[TRB]		[3-bit/5-bit]	/* PB帧中B图像的时域参考 */		
	{
		对标准CIF图像时钟频率它为3比特长并且当惯例图像时钟频率在使用时扩展为5比特。
	}
	5.1.8[DBQUANT] 	[2-bit]		/* PB帧中B图像的量化信息 */
	{
		DBQUANT代码和QUANT与BQUANT间的关系
		DBQUANT			  BQUANT
		  00			 (5*QUANT)/4
		  01			 (6*QUANT)/4
		  10			 (7*QUANT)/4
		  11			 (8*QUANT)/4		  
	}
	5.1.9/5.1.10 while(1)
	{
		[PEI]		[1-bit]		/* 额外插入信息 */
		if(PEI==1){
		[PSUPP]		[8-bit]		/* 增补的增强信息 */
		}else
		{break;}
	}
		   [GOBS]			[varies]	/* 块组层 */
	5.1.11 [ESTUF] 			[varies]	/* 填充 */
	5.1.12 [EOS]			[22-bit] 	/* 序列结束 值:0000 0000 0000 0000 1 11111*/
	5.1.13 [PSTUF]			[varies]	/* 填充 */

5.2 块组层(block group layer)
	[GSTUF][GBSC][GN][GSBI][GFID][GQUANT][宏块数据]
	5.2.1[GSTUF]		[varies]	/* 填充 */
	5.2.2[GBSC]			[17-bit]	/* 块组起始码 值:0000 0000 0000 0000 1 (该处字节对齐) */
	5.2.3[GN]			[5-bit]		/* 块组编号 */
	5.2.4[GSBI]			[2-bit]		/* GOB子比特流指示符 */
	5.2.5[GFID]			[2-bit]		/* GOB帧ID */
	5.2.6[GQUANT]		[5-bit]		/* 量化信息 */
	
5.3	宏块层
	[COD][MCBPC][MODB][CBPB][CBPY][DQUANT][MVD][MVD2][MVD3][MVD4][MVDB][块数据]
	5.3.1[COD]			[1-bit]		/* 编码的宏块指示,0表示有进一步的该宏块数据,为1表示接下来没有该宏块数据 */
	{
		if( PTYPE&0x10 != 0(非关键帧/P帧) )	COD才存在;
	}
	5.3.2[MCBPC]		[varies]	/* 色度宏块类型和编码块模式 */
	{
		if( PTYPE&0x10==1(关键帧) || COD exist )	MCBPC exist(一定存在);
		{
			if( PTYPE&0x10==1/* I帧 */ )
			{

:ITU-T H.263 Stream Format_第1张图片

<span style="white-space:pre">			</span>}
			else if( PTYPE&0x10==0/*P帧*/ )
			{

			}
		}
	}
	5.3.3[MODB]			[varies]	/* B块的宏块模式 */
	{
		if( PTYPE&0x1==1(PB帧模式) && MCBPC指示的宏块类型为0-4 )	MODB exist;
		{
ITU-T H.263 Stream Format_第2张图片

		}
	}
	5.3.4[CBPB]			[6-bit]		/* B块的编码块模型 */
	{
		if( MCBPC exist )	next four(CBPY,DQUANT,MVD,MVD2-4) attributes exist;
	}
	5.3.5[CBPY]			[varies]	/* 亮度信号的编码块模型 */
	{
		|CBPY值表|0011|00101|00100|1001|00011|0111|000010|1011|00010|000011|0101|1010|0100|1000|0110|11|
	}
	5.3.6[DQUANT]		[2-bit/varies]	/* 量化器信息 */
	{
		if(修正量化模式未使用|2-bit)
			|DQUANT值表|00|01|10|11|
		else /* varies */
			if( first bit==1 )	[DQUANT 2-bit]
			else [DQUANT 6-bit]
	}
	5.3.7[MVD]			[varies]		/* 运动矢量数据 */
	{
		1个变长码字(取值为如下变长码字表之一)
	}
	5.3.8[MVD2-4]		[varies]		/* 运动矢量数据 */
	{
		3个变长码字(取值为如下变长码字表之一)
	}
	5.3.9[MVDB]			[varies]		/* B宏块的运动矢量数据 */
	{
		if( MCBPC set && CBPY set )	MVDB exist;
		{
			1个变长码字(取值为如下变长码字表之一)
		}
	}
	
变长码字表值表:
ITU-T H.263 Stream Format_第3张图片

5.4 块数据	
	在正常模式下,宏块由4个亮度块和2个色度块组成;
	在PB帧模式下,寄卖由6个P帧块和6个B帧块组成.





你可能感兴趣的:(H.263,ITU-T)