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

📄 coder.cpp

📁 这个程序有PC的服务端和Pocket PC上的客户端两个部分。服务端运行时
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  }  free(iblock);  free(rcoeff);  return 0;}/********************************************************************** * *	Name:		FillLumBlock *	Description:   	Fills the luminance of one block of lines*pels *	 *	Input:	      	Position, pointer to qcif, array to fill *	Returns:       	 *	Side effects:	fills array * *	Date: 930129	Author: Karl.Lillevold@nta.no * ***********************************************************************/void FillLumBlock( int x, int y, unsigned int *image, MB_Structure *data){  int n, m;				/* OPTIMIZE HERE */  /* m -> int conversion is done here, so no long optimiz. possible */  for (n = 0; n < MB_SIZE; n++)    for (m = 0; m < MB_SIZE; m++)      data->lum[n][m] = 	(int) (*(image + x+m + (y+n)*Global::pels));  return;}/********************************************************************** * *	Name:		FillChromBlock
 *	Description:   	Fills the chrominance of one block of qcif
 *	
 *	Input:	      	Position, pointer to qcif, array to fill
 *	Returns:       	
 *	Side effects:	fills array
 *                      128 subtracted from each
 *
 *	Date: 930129	Author: Karl.Lillevold@nta.no * ***********************************************************************/void FillChromBlock(int x_curr, int y_curr, unsigned int *image,		    MB_Structure *data){  int n;  register int m;  int x, y;  x = x_curr>>1;  y = y_curr>>1;  for (n = 0; n < (MB_SIZE>>1); n++)    for (m = 0; m < (MB_SIZE>>1); m++) {      data->Cr[n][m] = 	(int) (*(image + Global::vskip + x+m + (y+n)*Global::cpels));      data->Cb[n][m] = 	(int) (*(image + Global::uskip + x+m + (y+n)*Global::cpels));    }  return;}/********************************************************************** * *	Name:		ZeroMBlock *	Description:   	Fills one MB with Zeros *	 *	Input:	      	MB_Structure to zero out *	Returns:       	 *	Side effects:	 * *	Date: 940829	Author: Karl.Lillevold@nta.no * ***********************************************************************/void ZeroMBlock(MB_Structure *data){  int n;  register int m;  /* ALPHA optimization */#ifdef LONGISDOUBLEINT  for (n = 0; n < MB_SIZE; n++)    for (m = 0; m < MB_SIZE; m +=2 )      *(long *) &(data->lum[n][m]) = 0L;  for (n = 0; n < (MB_SIZE>>1); n++)    for (m = 0; m < (MB_SIZE>>1); m +=2 ) {      *(long *) &(data->Cr[n][m]) = 0L;      *(long *) &(data->Cb[n][m]) = 0L;    }#else  for (n = 0; n < MB_SIZE; n++)    for (m = 0; m < MB_SIZE; m++ )      *(int *) &(data->lum[n][m]) = 0;  for (n = 0; n < (MB_SIZE>>1); n++)    for (m = 0; m < (MB_SIZE>>1); m++ ) {      *(int *) &(data->Cr[n][m]) = 0;      *(int *) &(data->Cb[n][m]) = 0;    }#endif  return;}/********************************************************************** * *	Name:		ReconImage *	Description:	Puts together reconstructed image *	 *	Input:		position of curr block, reconstructed
 *			macroblock, pointer to recontructed image *	Returns: *	Side effects: * *	Date: 930123  	Author: Karl.Lillevold@nta.no * ***********************************************************************/void ReconImage (int i, int j, MB_Structure *data, unsigned int *recon){  int n;  int x_curr, y_curr;  int *lum_ptr, *Cb_ptr, *Cr_ptr;  unsigned int *recon_ptr, *recon_Cb_ptr, *recon_Cr_ptr;   x_curr = i * MB_SIZE;  y_curr = j * MB_SIZE;    lum_ptr = &(data->lum[0][0]);  recon_ptr = recon + x_curr + y_curr*Global::pels;  /* Fill in luminance data */  for (n = 0; n < MB_SIZE; n++) {#ifdef LONGISDOUBLEINT    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += 2; lum_ptr += 2;    * (long *) recon_ptr = * (long *) lum_ptr;    recon_ptr += Global::pels - 14; lum_ptr += 2;    /* Was: for every m = 0..15 :     *(recon->lum + x_curr+m + (y_curr+n)*Global::pels) = *(lum_ptr++);     */#else    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr++; lum_ptr++;    * (int *) recon_ptr = * (int *) lum_ptr;    recon_ptr += Global::pels - 15; lum_ptr++;#endif  }  recon_Cb_ptr = recon+Global::uskip+ (x_curr>>1) + (y_curr>>1)*Global::cpels;  recon_Cr_ptr = recon+Global::vskip+ (x_curr>>1) + (y_curr>>1)*Global::cpels;  Cb_ptr = &(data->Cb[0][0]);  Cr_ptr = &(data->Cr[0][0]);  /* Fill in chrominance data */  for (n = 0; n < MB_SIZE>>1; n++) {#ifdef LONGISDOUBLEINT    * (long *) recon_Cb_ptr = * (long *) Cb_ptr;    recon_Cb_ptr += 2; Cb_ptr += 2;    * (long *) recon_Cr_ptr = * (long *) Cr_ptr;    recon_Cr_ptr += 2; Cr_ptr += 2;    * (long *) recon_Cb_ptr = * (long *) Cb_ptr;    recon_Cb_ptr += 2; Cb_ptr += 2;    * (long *) recon_Cr_ptr = * (long *) Cr_ptr;    recon_Cr_ptr += 2; Cr_ptr += 2;    * (long *) recon_Cb_ptr = * (long *) Cb_ptr;    recon_Cb_ptr += 2; Cb_ptr += 2;    * (long *) recon_Cr_ptr = * (long *) Cr_ptr;    recon_Cr_ptr += 2; Cr_ptr += 2;    * (long *) recon_Cb_ptr = * (long *) Cb_ptr;    recon_Cb_ptr += Global::cpels - 6; Cb_ptr += 2;    * (long *) recon_Cr_ptr = * (long *) Cr_ptr;    recon_Cr_ptr += Global::cpels - 6; Cr_ptr += 2;#else    * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;       * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    recon_Cb_ptr++; Cb_ptr++;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cr_ptr++; Cr_ptr++;        * (int *) recon_Cb_ptr = * (int *) Cb_ptr;    * (int *) recon_Cr_ptr = * (int *) Cr_ptr;    recon_Cb_ptr += Global::cpels - 7; Cb_ptr ++;    recon_Cr_ptr += Global::cpels - 7; Cr_ptr ++;#endif  }  /* WAS:        for (m = 0; m < MB_SIZE>>1; m++) {     *(recon->Cr + (x_curr>>1)+m + ((y_curr>>1)+n)*Global::cpels) = data->Cr[n][m];     *(recon->Cb + (x_curr>>1)+m + ((y_curr>>1)+n)*Global::cpels) = data->Cb[n][m];     }     */  return;}/********************************************************************** * *	Name:		ReconCopyImage *	Description:	Copies previous recon_image to current recon image *	 *	Input:		position of curr block, reconstructed *			macroblock, pointer to recontructed image *	Returns: *	Side effects: * *	Date: 960423  	Author: Roalt Aalmoes * ***********************************************************************/void ReconCopyImage (int i, int j, unsigned int *recon, unsigned int *prev_recon){  int n;  int x_curr, y_curr;  unsigned int *lum_now, *lum_prev, *cb_now, *cr_now, *cb_prev, *cr_prev;   x_curr = i * MB_SIZE;  y_curr = j * MB_SIZE;  lum_now = recon + x_curr + y_curr*Global::pels;  lum_prev = prev_recon + x_curr + y_curr*Global::pels;  /* Fill in luminance data */  for (n = 0; n < 16; n++) {#ifdef LONGISDOUBLEINT    *(long *)(lum_now) = *(long *)(lum_prev);    *(long *)(lum_now + 2) = *(long *)(lum_prev + 2);    *(long *)(lum_now + 4) = *(long *)(lum_prev + 4);    *(long *)(lum_now + 6) = *(long *)(lum_prev + 6);    *(long *)(lum_now + 8) = *(long *)(lum_prev + 8);    *(long *)(lum_now + 10) = *(long *)(lum_prev + 10);    *(long *)(lum_now + 12) = *(long *)(lum_prev + 12);    *(long *)(lum_now + 14) = *(long *)(lum_prev + 14);#else    *(int *)(lum_now) = *(int *)(lum_prev);    *(int *)(lum_now + 1) = *(int *)(lum_prev + 1);    *(int *)(lum_now + 2) = *(int *)(lum_prev + 2);    *(int *)(lum_now + 3) = *(int *)(lum_prev + 3);    *(int *)(lum_now + 4) = *(int *)(lum_prev + 4);    *(int *)(lum_now + 5) = *(int *)(lum_prev + 5);    *(int *)(lum_now + 6) = *(int *)(lum_prev + 6);    *(int *)(lum_now + 7) = *(int *)(lum_prev + 7);    *(int *)(lum_now + 8) = *(int *)(lum_prev + 8);    *(int *)(lum_now + 9) = *(int *)(lum_prev + 9);    *(int *)(lum_now + 10) = *(int *)(lum_prev + 10);    *(int *)(lum_now + 11) = *(int *)(lum_prev + 11);    *(int *)(lum_now + 12) = *(int *)(lum_prev + 12);    *(int *)(lum_now + 13) = *(int *)(lum_prev + 13);    *(int *)(lum_now + 14) = *(int *)(lum_prev + 14);    *(int *)(lum_now + 15) = *(int *)(lum_prev + 15);#endif    lum_now += Global::pels;    lum_prev += Global::pels;       }  cb_now = recon+Global::uskip + (x_curr>>1) + (y_curr>>1)*Global::cpels;
  cr_now = recon+Global::vskip + (x_curr>>1) + (y_curr>>1)*Global::cpels;
  cb_prev = prev_recon+Global::uskip+ (x_curr>>1) + (y_curr>>1)*Global::cpels;
  cr_prev = prev_recon+Global::vskip + (x_curr>>1) + (y_curr>>1)*Global::cpels;

  /* Fill in chrominance data */  for (n = 0; n < (MB_SIZE>>1); n++) {#ifdef LONGISDOUBLEINT    *(long *)(cb_now) = *(long *)(cb_prev);    *(long *)(cb_now + 2) = *(long *)(cb_prev + 2);    *(long *)(cb_now + 4) = *(long *)(cb_prev + 4);    *(long *)(cb_now + 6) = *(long *)(cb_prev + 6);    cb_now += Global::cpels;    cb_prev += Global::cpels;    *(long *)(cr_now) = *(long *)(cr_prev);    *(long *)(cr_now + 2) = *(long *)(cr_prev + 2);    *(long *)(cr_now + 4) = *(long *)(cr_prev + 4);    *(long *)(cr_now + 6) = *(long *)(cr_prev + 6);    cr_now += Global::cpels;    cr_prev += Global::cpels;#else    *(int *)(cb_now) = *(int *)(cb_prev);    *(int *)(cb_now + 1) = *(int *)(cb_prev + 1);    *(int *)(cb_now + 2) = *(int *)(cb_prev + 2);    *(int *)(cb_now + 3) = *(int *)(cb_prev + 3);    *(int *)(cb_now + 4) = *(int *)(cb_prev + 4);    *(int *)(cb_now + 5) = *(int *)(cb_prev + 5);    *(int *)(cb_now + 6) = *(int *)(cb_prev + 6);    *(int *)(cb_now + 7) = *(int *)(cb_prev + 7);    cb_now += Global::cpels;    cb_prev += Global::cpels;    *(int *)(cr_now) = *(int *)(cr_prev);    *(int *)(cr_now + 1) = *(int *)(cr_prev + 1);    *(int *)(cr_now + 2) = *(int *)(cr_prev + 2);    *(int *)(cr_now + 3) = *(int *)(cr_prev + 3);    *(int *)(cr_now + 4) = *(int *)(cr_prev + 4);    *(int *)(cr_now + 5) = *(int *)(cr_prev + 5);    *(int *)(cr_now + 6) = *(int *)(cr_prev + 6);    *(int *)(cr_now + 7) = *(int *)(cr_prev + 7);

⌨️ 快捷键说明

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