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

📄 vtcdec.cpp

📁 完整的RTP RTSP代码库
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  init_acm_maxf_dec();  // hjlee 0901   for (col=0; col<mzte_codec.m_iColors; col++) // hjlee 0901 BUG	  for (l=0; l<mzte_codec.m_iWvtDecmpLev; l++) {	    mzte_codec.m_SPlayer[col].SNRlayer.snr_image.wvtDecompNumBitPlanes[l] = 0;//	    mzte_codec.m_SPlayer[col].SNRlayer.snr_image.wvtDecompResNumBitPlanes[l] = 0;	  }    for (col=0; col<mzte_codec.m_iColors; col++) {    h = mzte_codec.m_iHeight >> (Int)(col>0);    w  = mzte_codec.m_iWidth  >> (Int)(col>0);		mzte_codec.m_SPlayer[col].coeffinfo = new COEFFINFO * [h];		if (mzte_codec.m_SPlayer[col].coeffinfo == NULL)			exit(fprintf(stderr,"Allocating memory for coefficient structure (I)."));		mzte_codec.m_SPlayer[col].coeffinfo[0] = new COEFFINFO [h*w];		if (mzte_codec.m_SPlayer[col].coeffinfo[0] == NULL)			exit(fprintf(stderr,"Allocating memory for coefficient structure (II)."));		int y;		for (y = 1; y < h; ++y)		  mzte_codec.m_SPlayer[col].coeffinfo[y] = 			mzte_codec.m_SPlayer[col].coeffinfo[y-1]+w;				for (y=0; y<h; y++)			for (int x=0; x<w; x++) {				mzte_codec.m_SPlayer[col].coeffinfo[y][x].skip =0;				mzte_codec.m_SPlayer[col].coeffinfo[y][x].wvt_coeff = 0;				mzte_codec.m_SPlayer[col].coeffinfo[y][x].rec_coeff = 0;				mzte_codec.m_SPlayer[col].coeffinfo[y][x].quantized_value = 0;				// mzte_codec.m_SPlayer[col].coeffinfo[y][x].qState = 0;				mzte_codec.m_SPlayer[col].coeffinfo[y][x].type = 0;				mzte_codec.m_SPlayer[col].coeffinfo[y][x].mask = 0;			}  }  noteDetail("Completed creating and initializing data structures.");  mzte_codec.m_iDCHeight  = mzte_codec.m_iHeight >> mzte_codec.m_iWvtDecmpLev;  mzte_codec.m_iDCWidth   = mzte_codec.m_iWidth >> mzte_codec.m_iWvtDecmpLev;   /* copy over the inmask[0] */  Width[0] = mzte_codec.m_iWidth;  Width[1] = Width[2] = (Width[0] >> 1);  Height[0] = mzte_codec.m_iHeight;  Height[1] = Height[2] = (Height[0] >> 1);  nLevels[0] = mzte_codec.m_iWvtDecmpLev ;  nLevels[1] = nLevels[2] = nLevels[0]-1;    Nx[0] = Ny[0]=2;  for(col=1;col<3;col++) Nx[col]=Ny[col]=1;  // #ifdef _DECODER_  // hjlee  mzte_codec.m_Image = Image;// #endif  for (col=0; col<mzte_codec.m_iColors; col++) {    mzte_codec.m_Image[col].height = mzte_codec.m_iHeight >> (Int)(col>0);    mzte_codec.m_Image[col].width  = mzte_codec.m_iWidth >> (Int)(col>0);    inmask[col] = mzte_codec.m_Image[col].mask;     outmask[col] = (UChar *)malloc(sizeof(UChar) *  Width[col]*Height[col]);    ret = do_DWTMask(inmask[col], outmask[col], 		     Width[col], Height[col], 		     nLevels[col], &(wvtfilter[col==0?0:1]));     if (ret!= DWT_OK)       errorHandler("DWT Error Code %d\n", ret);        for (k=0,y=0; y<Height[col]; y++)      for (x=0; x<Width[col]; x++) 	COEFF_MASK(x,y,col) = outmask[col][k++];    free(outmask[col]);      }  if (target_spatial_levels<=0 || target_snr_levels<= 0)    errorHandler("Neither target_spatial_levels nor target_snr_levels" \		 "can be zero");  /*------- DC: Decode and inverse quantize all color components -------*/  textureLayerDC_Dec();  /*------- DC: Close bitstream file -------*/  /* hjlee 0901 */   if (mzte_codec.m_bStartCodeEnable){    align_byte();    if(!mzte_codec.m_iSingleBitFile)      fclose(bitfile);  }    /*-------------------------------------------------*/  /*--------------------- AC ------------------------*/  /*-------------------------------------------------*/    /*------- AC: SINGLE-QUANT MODE -------*/  if (mzte_codec.m_iQuantType == SINGLE_Q)     textureLayerSQ_Dec(bitfile);  /*------- AC: MULTI-QUANT MODE -------*/  else if (mzte_codec.m_iQuantType == MULTIPLE_Q)// hjlee 0901    textureLayerMQ_Dec(bitfile, target_spatial_levels, target_snr_levels,		       wvtfilter);		/*------- AC: BILEVEL-QUANT MODE -------*/  else if (mzte_codec.m_iQuantType == BILEVEL_Q) {    PEZW_target_spatial_levels=target_spatial_levels;    PEZW_target_snr_levels=target_snr_levels;    PEZW_target_bitrate=0;	textureLayerBQ_Dec(bitfile);  }  for(col=0; col< mzte_codec.m_iColors; col++)    free(Image[col].mask);  free(Image);  if (mzte_codec.m_iSingleBitFile==0){    if(!mzte_codec.m_bStartCodeEnable)      align_byte();    fclose(bitfile);  }} // hjlee 0901Void CVTCDecoder::TextureObjectLayer_dec(				   Int  target_spatial_levels,				   Int  target_snr_levels, 				   FILTER ***pwvtfilter,           Int iTile, Int count, FILE *bitfile, Int **table, PICTURE *Image) // Modified by Sharp (99/2/16) // FPDAM : added by SAIT (99/09/03){	//  FILE *bitfile; // deleted by Sharp (99/2/16)  Int  x,y,w,h,k;  FILTER **wvtfilter;  // hjlee 0901  UChar *inmask[3], *outmask[3];  Int nLevels[3], ret;  Int Width[3], Height[3];  Int Nx[3], Ny[3];  Int usemask;  Int useInt=1;  //  Int target_shape_layer = target_spatial_levels; // PICTURE *Image; deleted by SL 03/03/99  Int l;	Int col;// FPDAM	if(!mzte_codec.m_iAlphaChannel || mzte_codec.m_tiling_disable==1 || mzte_codec.m_iTextureTileType!=TRANSP_TILE) {#if 0	if ( mzte_codec.m_tiling_disable == 0 ) {		tile_header_Dec();  /*-------------------------------------------------*/  /*--------- DC (and overall header info) ----------*/  /*-------------------------------------------------*/  /*------- DC: Open and initialize bitstream file -------*///deleted by SL@Sarnoff (03/03/99), 	//Shape mask are decoded from header_Dec_common already	//If you need the shape for the tiles, you have to write 	// your own routines to extract it from the global mask// begin: added by Sharp (99/2/16)/*	if ( mzte_codec.m_tiling_disable == 0 ) {*//*   if(mzte_codec.m_iAlphaChannel)*//* 	noteProgress("Decoding Shape Information...");*//*  Image = (PICTURE *)malloc(sizeof(PICTURE)*3);*//*  get_virtual_mask(Image, mzte_codec.m_iWvtDecmpLev,*//*		   mzte_codec.m_iWidth, mzte_codec.m_iHeight, *//*		   0, mzte_codec.m_iColors,*//*		   &target_shape_layer,*//*		   mzte_codec.m_bStartCodeEnable,*//*		   *pwvtfilter); //modified by SL @Sarnoff (03/03/99)*//*	}*/// end: added by Sharp (99/2/16)// end: deleted by SL@Sarnoff (03/03/99)// begin: deleted by Sharp (99/2/16)  if ((bitfile=fopen(m_cInBitsFile,"rb"))==NULL)    errorHandler("Can't open file '%s' for reading.",m_cInBitsFile);  /* initialize variables */  init_bit_packing_fp(bitfile,1);  /*------- DC: Read header info from bitstream file -------*/  header_Dec(pwvtfilter, &Image); // hjlee 0901// end: deleted by Sharp (99/2/16)	}#endif  wvtfilter = *pwvtfilter; // hjlee 0901  /*--------------- CREATE DATA STRUCTURES -----------------*/  noteDetail("Creating and initializing data structures....");  mzte_codec.m_iColors = 3;  mzte_codec.m_iBitDepth = 8;    usemask = mzte_codec.m_iAlphaChannel;//= 0; // modified by SL@Sarnoff (03/03/99)  useInt =1;  init_acm_maxf_dec();  // hjlee 0901   for (col=0; col<mzte_codec.m_iColors; col++) // hjlee 0901 BUG	  for (l=0; l<mzte_codec.m_iWvtDecmpLev; l++) {	    mzte_codec.m_SPlayer[col].SNRlayer.snr_image.wvtDecompNumBitPlanes[l] = 0;//	    mzte_codec.m_SPlayer[col].SNRlayer.snr_image.wvtDecompResNumBitPlanes[l] = 0;	  }  //	if ( iTile == 0 ) // added by Sharp (99/2/16)	if ( count == 0 ) // FPDAM: added by SAIT (99/09/03)	{		for (col=0; col<mzte_codec.m_iColors; col++) {			h = mzte_codec.m_iHeight >> (Int)(col>0);			w = mzte_codec.m_iWidth  >> (Int)(col>0);			mzte_codec.m_SPlayer[col].coeffinfo = new COEFFINFO * [h];			if (mzte_codec.m_SPlayer[col].coeffinfo == NULL)				exit(fprintf(stderr,"Allocating memory for coefficient structure (I)."));			mzte_codec.m_SPlayer[col].coeffinfo[0] = new COEFFINFO [h*w];			if (mzte_codec.m_SPlayer[col].coeffinfo[0] == NULL)				exit(fprintf(stderr,"Allocating memory for coefficient structure (II)."));			for (/*int*/ y = 1; y < h; ++y)				mzte_codec.m_SPlayer[col].coeffinfo[y] = 				mzte_codec.m_SPlayer[col].coeffinfo[y-1]+w;						for (y=0; y<h; y++)				for (/*int*/ x=0; x<w; x++) {					mzte_codec.m_SPlayer[col].coeffinfo[y][x].skip =0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].wvt_coeff = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].rec_coeff = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].quantized_value = 0;					// mzte_codec.m_SPlayer[col].coeffinfo[y][x].qState = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].type = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].mask = 0;				}		}		noteDetail("Completed creating and initializing data structures.");	} // added by Sharp (99/2/16)  mzte_codec.m_iDCHeight  = mzte_codec.m_iHeight >> mzte_codec.m_iWvtDecmpLev;  mzte_codec.m_iDCWidth   = mzte_codec.m_iWidth >> mzte_codec.m_iWvtDecmpLev;   /* copy over the inmask[0] */  Width[0] = mzte_codec.m_iWidth;  Width[1] = Width[2] = (Width[0] >> 1);  Height[0] = mzte_codec.m_iHeight;  Height[1] = Height[2] = (Height[0] >> 1);  nLevels[0] = mzte_codec.m_iWvtDecmpLev ;  nLevels[1] = nLevels[2] = nLevels[0]-1;    Nx[0] = Ny[0]=2;  for(col=1;col<3;col++) Nx[col]=Ny[col]=1;  //#ifdef _DECODER_  // hjlee   mzte_codec.m_Image = Image;//#endif  for (col=0; col<mzte_codec.m_iColors; col++) {    mzte_codec.m_Image[col].height = mzte_codec.m_iHeight >> (Int)(col>0);    mzte_codec.m_Image[col].width  = mzte_codec.m_iWidth >> (Int)(col>0);    inmask[col] = Image[col].mask; //mzte_codec.m_Image[col].mask; //modified by SL 03/03/99    outmask[col] = (UChar *)malloc(sizeof(UChar) *  Width[col]*Height[col]);    ret = do_DWTMask(inmask[col], outmask[col], 		     Width[col], Height[col], 		     nLevels[col], &(wvtfilter[col==0?0:1]));     if (ret!= DWT_OK)       errorHandler("DWT Error Code %d\n", ret);        for (k=0,y=0; y<Height[col]; y++)      for (x=0; x<Width[col]; x++) 	COEFF_MASK(x,y,col) = outmask[col][k++];    free(outmask[col]);      }  if (target_spatial_levels<=0 || target_snr_levels<= 0)    errorHandler("Neither target_spatial_levels nor target_snr_levels" \		 "can be zero");  /*------- DC: Decode and inverse quantize all color components -------*/  textureLayerDC_Dec();  /*------- DC: Close bitstream file -------*/  /* hjlee 0901 */   if (mzte_codec.m_bStartCodeEnable){    align_byte();    if(!mzte_codec.m_iSingleBitFile)      fclose(bitfile);  }    /*-------------------------------------------------*/  /*--------------------- AC ------------------------*/  /*-------------------------------------------------*/#if 1  //Added by Sarnoff for error resilience, 3/5/99  if(!mzte_codec.m_usErrResiDisable)	error_bits_stat(0); /* register the dc part as no error *///End: Added by Sarnoff for error resilience, 3/5/99  /*------- AC: SINGLE-QUANT MODE -------*/  if (mzte_codec.m_iQuantType == SINGLE_Q)     textureLayerSQ_Dec(bitfile);  /*------- AC: MULTI-QUANT MODE -------*/  else if (mzte_codec.m_iQuantType == MULTIPLE_Q)// hjlee 0901    textureLayerMQ_Dec(bitfile, target_spatial_levels, target_snr_levels,		       wvtfilter);		/*------- AC: BILEVEL-QUANT MODE -------*/  else if (mzte_codec.m_iQuantType == BILEVEL_Q) {    PEZW_target_spatial_levels=target_spatial_levels;    PEZW_target_snr_levels=target_snr_levels;    PEZW_target_bitrate=0;	textureLayerBQ_Dec(bitfile);  }// begin: deleted by sharp (99/3/29)// This section is moved to encode()#if 0  for(col=0; col< mzte_codec.m_iColors; col++)    free(Image[col].mask);  free(Image);#endif// end: deleted by sharp (99/3/29)#endif  if (mzte_codec.m_iSingleBitFile==0){    if(!mzte_codec.m_bStartCodeEnable)      align_byte();    fclose(bitfile);  }	} else {//	if ( iTile == 0 ) // FPDAM : added by SAIT (99/09/03)	if ( count == 0 )	{ // added by Sharp (99/2/16)		for (col=0; col<mzte_codec.m_iColors; col++) {			h = mzte_codec.m_iHeight >> (Int)(col>0);			w = mzte_codec.m_iWidth  >> (Int)(col>0);			mzte_codec.m_SPlayer[col].coeffinfo = new COEFFINFO * [h];			if (mzte_codec.m_SPlayer[col].coeffinfo == NULL)				exit(fprintf(stderr,"Allocating memory for coefficient structure (I)."));			mzte_codec.m_SPlayer[col].coeffinfo[0] = new COEFFINFO [h*w];			if (mzte_codec.m_SPlayer[col].coeffinfo[0] == NULL)				exit(fprintf(stderr,"Allocating memory for coefficient structure (II)."));			for (/*int*/ y = 1; y < h; ++y)				mzte_codec.m_SPlayer[col].coeffinfo[y] = 				mzte_codec.m_SPlayer[col].coeffinfo[y-1]+w;						for (y=0; y<h; y++)				for (/*int*/ x=0; x<w; x++) {					mzte_codec.m_SPlayer[col].coeffinfo[y][x].skip =0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].wvt_coeff = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].rec_coeff = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].quantized_value = 0;					// mzte_codec.m_SPlayer[col].coeffinfo[y][x].qState = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].type = 0;					mzte_codec.m_SPlayer[col].coeffinfo[y][x].mask = 0;				}		}		noteDetail("Completed creating and initializing data structures.");	} // added by Sharp (99/2/16)		if (mzte_codec.m_iSingleBitFile==0){			if(!mzte_codec.m_bStartCodeEnable)

⌨️ 快捷键说明

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