⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vtc_shape_shapeenhdecode.cpp

📁 完整的RTP RTSP代码库
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				     ar_decoder);        	} else if (bab_type==1){        /* Raster Scan-Line (RSL) coding */		FullDecoding (bordered_lower_bab,			      bordered_half_bab,			      bordered_curr_bab,			      mbsize,			      filter,			      ar_decoder);        	} else {		fprintf(stderr,"BAB type ERROR !\n");	}			return ( 0 );}/* Interleaved Scan-Line (ISL) Decoding */Void CVTCDecoder::ExclusiveORdecoding (UChar *bordered_lower_bab,			UChar *bordered_half_bab,			UChar *bordered_curr_bab,			Int mbsize,			Int scan_order,	// SAIT_PDAM: ADDED by D.-S.Cho (Samsung AIT)			ArDecoder *ar_decoder){	Int		i,j,i2,j2,k,l,prev,next;	Int		mborder = MBORDER;	Int		mbsize_ext = mbsize+(mborder<<1);	Int		border = BORDER;	Int		bsize = mbsize >> 1;	Int		bsize_ext = bsize+(border<<1);	Int		context, prob=0;	UChar		*lower_bab_data,*half_bab_data,			*curr_bab_data;	UChar	*bordered_curr_bab_tr = NULL;	// SAIT_PDAM: ADDED by D.-S.Cho (Samsung AIT)	lower_bab_data = bordered_lower_bab + border * bsize_ext + border;	half_bab_data= bordered_half_bab + mborder * bsize_ext + border;	curr_bab_data= bordered_curr_bab + mborder * mbsize_ext + mborder;	/*-- P0 pixels reconstructing --*/        for(j=j2=0,k=l=0; j<bsize; j++, j2+=2, k+=(mbsize_ext<<1), l+=bsize_ext)	   for(i=i2=0; i<bsize; i++, i2+=2)		curr_bab_data[k+i2]=lower_bab_data[l+i];	/* SAIT_PDAM BEGIN - ADDED by D.-S.Cho (Samsung AIT)  */ 	// current BAB transposition	if (scan_order==1) {		bordered_curr_bab_tr = (UChar *)calloc(mbsize_ext*mbsize_ext, sizeof(UChar));		for (j=0; j<mbsize_ext; j++)			for (i=0; i<mbsize_ext; i++)					bordered_curr_bab_tr[j*mbsize_ext+i] = bordered_curr_bab[i*mbsize_ext+j];		curr_bab_data=bordered_curr_bab_tr + mborder * mbsize_ext + mborder;	}	/* SAIT_PDAM END - ADDED by D.-S.Cho (Samsung AIT)  */ 	/*-- P1 pixels decoding --*/	/* SAIT_PDAM BEGIN - MODIFIED by D.-S.Cho (Samsung AIT)  */ 	//for(j2=k=0; j2<mbsize; j2+=2, k+=(mbsize_ext<<1) )    //    {	//   for(i2=1; i2<mbsize; i2+=2)	//   {	for(i2=1; i2<mbsize; i2+=2)	{		for(j2=k=0; j2<mbsize; j2+=2, k+=(mbsize_ext<<1) )        {	/* SAIT_PDAM END - MODIFIED by D.-S.Cho (Samsung AIT) */ 		prev= curr_bab_data[k+i2-1];		next= curr_bab_data[k+i2+1];                       		if(prev!=next) 		{		   context = GetContextEnhBAB_XOR(curr_bab_data,						i2, 						j2, 						mbsize_ext, 						0); /* pixel type : 0-P1, 1-P2/P3 */		   prob=scalable_xor_prob_1[context];		   curr_bab_data[k+i2] = ArDecodeSymbol_Still(ar_decoder, prob);		} 		else 		{		   curr_bab_data[k+i2] = prev;		}	   }	}	/*-- P2/P3 pixels decoding --*/        for(j2=1,k=mbsize_ext; j2<mbsize; j2+=2, k+=(mbsize_ext<<1) )        {	for(i2=0; i2<mbsize; i2++) 	{ 		prev= curr_bab_data[k-mbsize_ext+i2];		next= curr_bab_data[k+mbsize_ext+i2];		   		if(prev!=next) 		{		   context = GetContextEnhBAB_XOR(curr_bab_data,						i2, 						j2, 						mbsize_ext, 						1);	/* pixel type : 0-P1, 1-P2/P3 */		   			   prob=scalable_xor_prob_23[context];		   curr_bab_data[k+i2] = ArDecodeSymbol_Still(ar_decoder, prob);		} 		else 		{		   curr_bab_data[k+i2] = prev;		}	   }	}	/* SAIT_PDAM BEGIN - ADDED by D.-S.Cho (Samsung AIT)  */ 	if (scan_order == 1) {		for (j=0; j<mbsize_ext; j++)			for (i=0; i<mbsize_ext; i++)					bordered_curr_bab[j*mbsize_ext+i]=bordered_curr_bab_tr[i*mbsize_ext+j];		curr_bab_data = bordered_curr_bab + mborder*mbsize_ext + mborder;		free (bordered_curr_bab_tr);	}	/* SAIT_PDAM END - ADDED by D.-S.Cho (Samsung AIT)  */ 	/* get the half resolution needed */	for(j2=0,k=0; j2<mbsize; j2++, k+=mbsize_ext )        {	  for(i=0; i<bsize; i++) 	    {	      i2 = i<<1; /* horizontal subsampling */	      half_bab_data[j2*bsize_ext+i] = curr_bab_data[k+i2];	    }	}}/* Raster Scan-Line (RSL) Decoding */Void CVTCDecoder::FullDecoding (UChar *bordered_lower_bab,		   UChar *bordered_half_bab,		   UChar *bordered_curr_bab,		   Int mbsize,		   FILTER *filter,		   ArDecoder *ar_decoder){	Int		i,j,i2,j2,k,l;	Int		mborder = MBORDER;	Int		mbsize_ext = mbsize+(mborder<<1);	Int		border = BORDER;	Int		bsize = mbsize >> 1;	Int		bsize_ext = bsize+(border<<1);	//Int		low_value, not_coded;	Int		context, prob=0;	UChar		*lower_bab_data,*half_bab_data,			*curr_bab_data;	lower_bab_data = bordered_lower_bab + border * bsize_ext + border;	half_bab_data= bordered_half_bab + mborder * bsize_ext + border;	curr_bab_data= bordered_curr_bab + mborder * mbsize_ext + mborder;	/* vertical pass */	/* vertical pass first for half-higher layer encoding*//* Should insert the precise bordering process ! */	for(j2=k=0; j2<mbsize; j2+=2, k+=2*bsize_ext)	{	   for(i=0; i<bsize; i++)	   {	     j = j2>>1;	     l = j*bsize_ext;	     /* T1 */	     context =  (half_bab_data[k-bsize_ext+i]<<7) /* T9*/	       | ( half_bab_data[k-bsize_ext+i+1] <<6) /* T8 */	       | (half_bab_data[k+bsize_ext+i-1] <<5) /* T7 */	       | (half_bab_data[k+i-1] <<4) /* T6 */	       | (lower_bab_data[l+i] <<3) /* T5 */	       | (lower_bab_data[l+i+1] <<2) /* T4 */	       | (lower_bab_data[l+bsize_ext+i] <<1) /* T3 */	       | (lower_bab_data[l+bsize_ext+i+1]); /* T2 */	     if(filter->DWT_Class==DWT_ODD_SYMMETRIC){	       prob=prob_odd0[context];	     } else if(filter->DWT_Class==DWT_EVEN_SYMMETRIC) {	       prob=prob_even0[context];	     } else {	       fprintf(stderr,"Error: filter type in FullEncoding() !\n");	       exit(0);	     }	     half_bab_data[k+i] =  ArDecodeSymbol_Still(ar_decoder, prob);	       /* T0 */	     context =  (half_bab_data[k+i]<<7) /* T1*/	       | ( lower_bab_data[l+bsize_ext+i-1] <<6) /* T10 */	       | (half_bab_data[k+bsize_ext+i-1] <<5) /* T7 */	       | (half_bab_data[k+i-1] <<4) /* T6 */	       | (lower_bab_data[l+i] <<3) /* T5 */	       | (lower_bab_data[l+i+1] <<2) /* T4 */	       | (lower_bab_data[l+bsize_ext+i] <<1) /* T3 */	       | (lower_bab_data[l+bsize_ext+i+1]); /* T2 */	     if(filter->DWT_Class==DWT_ODD_SYMMETRIC){	       prob=prob_odd1[context];	     } else if(filter->DWT_Class==DWT_EVEN_SYMMETRIC) {	       prob=prob_even1[context];	     } else {	       fprintf(stderr,"Error: filter type in FullEncoding() !\n");	       exit(0);	     }	     	     half_bab_data[k+bsize_ext+i]=ArDecodeSymbol_Still(ar_decoder, prob);	   }	}	/* horizontal */	for(i2=0; i2<mbsize; i2+=2)	  {	    for(j=k=0; j<mbsize; j++, k+=mbsize_ext)	      {	   		i = i2>>1;		l = j*bsize_ext;		/* T1 */		context =  (curr_bab_data[k+i2-1]<<7) /* T9*/		  | ( curr_bab_data[k+mbsize_ext+i2-1] <<6) /* T8 */		  | (curr_bab_data[k-mbsize_ext+i2+1] <<5) /* T7 */		  | (curr_bab_data[k-mbsize_ext+i2] <<4) /* T6 */		  | (half_bab_data[l+i] <<3) /* T5 */		  | (half_bab_data[l+bsize_ext+i] <<2) /* T4 */		  | (half_bab_data[l+i+1] <<1) /* T3 */		  | (half_bab_data[l+bsize_ext+i+1]); /* T2 */		if(filter->DWT_Class==DWT_ODD_SYMMETRIC){		  prob=prob_odd0[context];		} else if(filter->DWT_Class==DWT_EVEN_SYMMETRIC) {		  prob=prob_even0[context];		} else {		  fprintf(stderr,"Error: filter type in FullEncoding() !\n");		  exit(0);		}		curr_bab_data[k+i2]=ArDecodeSymbol_Still(ar_decoder, prob);		/* T0 */		context =  (curr_bab_data[k+i2]<<7) /* T1*/		  | ( half_bab_data[l-bsize_ext+i+1] <<6) /* T10 */		  | (curr_bab_data[k-mbsize_ext+i2+1] <<5) /* T7 */		  | (curr_bab_data[k-mbsize_ext+i2] <<4) /* T6 */		  | (half_bab_data[l+i] <<3) /* T5 */		  | (half_bab_data[l+bsize_ext+i] <<2) /* T4 */		  | (half_bab_data[l+i+1] <<1) /* T3 */		  | (half_bab_data[l+bsize_ext+i+1]); /* T2 */		if(filter->DWT_Class==DWT_ODD_SYMMETRIC){		  prob=prob_odd1[context];		} else if(filter->DWT_Class==DWT_EVEN_SYMMETRIC) {		  prob=prob_even1[context];		} else {		  fprintf(stderr,"Error: filter type in FullEncoding() !\n");		  exit(0);		}		curr_bab_data[k+i2+1]=ArDecodeSymbol_Still(ar_decoder, prob);	      }	  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -