亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sadct.cpp

?? 小波圖像變換
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
			}
		}
	}
#endif	

}


// HHI Schueuer: inserted for fast sadct
#ifdef _FAST_SADCT_
Void CInvSADCT::fast_deltaDCTransform(Float **out, Float **in, PixelC **mask, Int bky, Int bkx)
{
	Int i, k, jmax;
	Float **dest;
	Float *in_ptr;


	Float mean_value;
	Float e1 = 0.0, e2 = 0.0, e_dc = 0.0;

	mean_value = in[0][0] / 8.0;
	in[0][0] = 0.0;

	build_v_reorder_tbl(m_ly, out, mask, bky, bkx);
	
	build_h_reorder_tbl(m_lx, m_ly, m_mat_tmp1, bky, bkx);

	/* inverse horizontal transformation */
	for (i=0; i<bky && m_lx[i]; i++) {
		jmax = m_lx[i];
		in_ptr = in[i];
		
		dest = m_reorder_h[i];
		switch (jmax) {
		case 1:
			c_buf[0] = in_ptr[0];
			break;
		case 2:
			 idct_vec2 (in_ptr, c_buf);
			break;
		case 3:
			idct_vec3 (in_ptr, c_buf);
			break;      
		case 4:
			idct_vec4 (in_ptr, c_buf);
			break;
		case 5:
			idct_vec5 (in_ptr, c_buf);
			break;
		case 6:
			idct_vec6 (in_ptr, c_buf);
			break;      
		case 7:
			idct_vec7 (in_ptr, c_buf);
			break;
		case 8:
			idct_vec8 (in_ptr, c_buf);
			break;
		}
		if ( i == 0) {
			for (k = 0; k < jmax; k++) {
				e1 += sq[m_ly[k]] * c_buf[k];
				e2 += sq[m_ly[k]];
			}
			e_dc = e1 / e2;
			for (k=0; k<jmax; k++) 
				*dest[k] = c_buf[k] - e_dc;
		}
		else {
			for (k=0; k<jmax; k++)
				*dest[k] = c_buf[k];
		}
	}
 
	/* inverse vertical transformation */
	for (i=0; i<bkx && m_ly[i]; i++) {
		jmax = m_ly[i];
		in_ptr = m_mat_tmp1[i];
		
		dest = m_reorder_v[i];
		switch (jmax) {
		case 1:
			c_buf[0] = in_ptr[0];
			break;
		case 2:
			idct_vec2 (in_ptr, c_buf);
			break;
		case 3:
			idct_vec3 (in_ptr, c_buf);
			break;      
		case 4:
			idct_vec4 (in_ptr, c_buf);
			break;
		case 5:
			idct_vec5 (in_ptr, c_buf);
			break;
		case 6:
			idct_vec6 (in_ptr, c_buf);
			break;      
		case 7:
			idct_vec7 (in_ptr, c_buf);
			break;
		case 8:
			idct_vec8 (in_ptr, c_buf);
			break;
		}
		for (k=0; k<jmax; k++) 
			*dest[k] = c_buf[k] + mean_value;   
	}

}
#endif


/*
 *	inverse sadct transformation of block `in'.  The spatial positions
 *	of valid pels are marked in `mask' by 1.  Please note that the
 *	dct coefficients encoding those pels are expected to be found in 
 *	the upper left corner of block `in'.
 *	  
 *
 *	The following drawing explains the relation between `in', `out'
 *	and `mask':
 *
 *	in ->     I I I - - - - - 
 *	 	      I I - - - - - -
 *		      I - - - - - - -
 *		      - - ...
 *				                out ->    - - - - O - - -         
 *	mask ->   - - - - 1 - - -         	  - - O O - - - -
 *		      - - 1 1 - - - -		      - - O O - - - -
 *		      - - 1 1 - - - -		      - - - O - - - -
 *		      - - - 1 - - - -		      - - - - - - - -
 *		      - - - - - - - -		      - - ...
 *		      - - ...
 *
 */
Void CInvSADCT::transform(Float **out, Float **in, PixelC **mask, Int bky, Int bkx)
{
	Int i, j, k, jmax;
	Float **trf_mat, **dest;
	Float c;
	Float *in_ptr;

	build_v_reorder_tbl(m_ly, out, mask, bky, bkx);
	
	build_h_reorder_tbl(m_lx, m_ly, m_mat_tmp1, bky, bkx);

	/* inverse horizontal transformation */
	for (i=0; i<bky && m_lx[i]; i++) {
		jmax = m_lx[i];
		trf_mat = m_idct_matrix[jmax];
		in_ptr = in[i];
		
		dest = m_reorder_h[i];
		for (k=0; k<jmax; k++) {
			for (c=0,j=0; j<jmax; j++) 
				c += trf_mat[k][j] * in_ptr[j];
			*dest[k] = c;
		}    
	}
	
	/* inverse vertical transformation */
	for (i=0; i<bkx && m_ly[i]; i++) {
		jmax = m_ly[i];
		trf_mat = m_idct_matrix[jmax];
		in_ptr = m_mat_tmp1[i];
		
		dest = m_reorder_v[i];
		for (k=0; k<jmax; k++) {
			for (c=0,j=0; j<jmax; j++) 
				c += trf_mat[k][j] * in_ptr[j];
			*dest[k] = c;
		}    
	}
}

// HHI Schueuer: added for fast_sadct
#ifdef _FAST_SADCT_
Void CInvSADCT::fast_transform(Float **out, Float **in, PixelC **mask, Int bky, Int bkx)
{
	Int i, k, jmax;
	Float **dest;
	Float *in_ptr;

	build_v_reorder_tbl(m_ly, out, mask, bky, bkx);
	
	build_h_reorder_tbl(m_lx, m_ly, m_mat_tmp1, bky, bkx);

	/* inverse horizontal transformation */
	for (i=0; i<bky && m_lx[i]; i++) {
		jmax = m_lx[i];
		in_ptr = in[i];
		
		dest = m_reorder_h[i];
		switch (jmax) {
		case 1:
			c_buf[0] = in_ptr[0];
			break;
		case 2:
			 idct_vec2 (in_ptr, c_buf);
			break;
		case 3:
			idct_vec3 (in_ptr, c_buf);
			break;      
		case 4:
			idct_vec4 (in_ptr, c_buf);
			break;
		case 5:
			idct_vec5 (in_ptr, c_buf);
			break;
		case 6:
			idct_vec6 (in_ptr, c_buf);
			break;      
		case 7:
			idct_vec7 (in_ptr, c_buf);
			break;
		case 8:
			idct_vec8 (in_ptr, c_buf);
			break;
		}
		for (k=0; k<jmax; k++)
			*dest[k] = c_buf[k];    
	}
 
	/* inverse vertical transformation */
	for (i=0; i<bkx && m_ly[i]; i++) {
		jmax = m_ly[i];
		in_ptr = m_mat_tmp1[i];
		
		dest = m_reorder_v[i];
		switch (jmax) {
		case 1:
			c_buf[0] = in_ptr[0];
			break;
		case 2:
			idct_vec2 (in_ptr, c_buf);
			break;
		case 3:
			idct_vec3 (in_ptr, c_buf);
			break;      
		case 4:
			idct_vec4 (in_ptr, c_buf);
			break;
		case 5:
			idct_vec5 (in_ptr, c_buf);
			break;
		case 6:
			idct_vec6 (in_ptr, c_buf);
			break;      
		case 7:
			idct_vec7 (in_ptr, c_buf);
			break;
		case 8:
			idct_vec8 (in_ptr, c_buf);
			break;
		}
		for (k=0; k<jmax; k++)
			*dest[k] = c_buf[k];     
	}
}
#endif

// Schueuer HHI: added fast_sadct
#ifdef _FAST_SADCT_
Int CInvSADCT::idct_vec2 (Double *in, Double *out)
{

  out[0] = (in[0] + in[1]) * f0_2;
  out[1] = (in[0] - in[1]) * f0_2;

  return 0;
}

Int CInvSADCT::idct_vec3 (Double *in, Double *out)
{
  Double b[3];

  b[0] = in[0] * f0_3;
  b[1] = b[0] + in[2] * f2_3;
  b[2] = in[1] * f1_3;

  out[0] = b[1] + b[2];
  out[2] = b[1] - b[2];
  out[1] = b[0] - in[2] * f3_3;

  return 0;
}

Int CInvSADCT::idct_vec4 (Double *in, Double *out)
{
  Double b[4];

  /* stage 1 */

  b[0] = (in[0] + in[2]) * f0_4;
  b[1] = (in[0] - in[2]) * f0_4;
  b[2] = in[1] * f2_4 - in[3] * f1_4;
  b[3] = in[3] * f2_4 + in[1] * f1_4;

  /* stage 2 */
  out[0] = b[0] + b[3];
  out[1] = b[1] + b[2];
  out[2] = b[1] - b[2];
  out[3] = b[0] - b[3];

  return 0;
}

Int CInvSADCT::idct_vec5 (Double *in, Double *out)
{
  Double b[5];

  b[0] = in[0] * f0_5;
  b[1] = b[0] + in[2] * f3_5 + in[4] * f4_5;
  b[2] = in[1] * f1_5 + in[3] * f2_5;
  b[3] = b[0] - in[4] * f3_5 - in[2] * f4_5;
  b[4] = in[1] * f2_5 - in[3] * f1_5;

  out[0] = b[1] + b[2];
  out[1] = b[3] + b[4];
  out[2] = b[0] + (in[4] - in[2]) * f5_5;
  out[3] = b[3] - b[4];
  out[4] = b[1] - b[2];

  return 0;
}

Int CInvSADCT::idct_vec6 (Double *in, Double *out)
{
  Double b[10];
  Double b1[7];

  /* stage 1 */
  b[0] = in[0] * f0_6;
  b[1] = in[1] * f1_6;
  b[2] = in[2] * f2_6;
  b[3] = in[3] * f0_6;
  b[4] = in[4] * f3_6;
  b[5] = in[5] * f4_6;
  b[6] = (in[1] - in[5]) * f0_6;
  b[7] = in[1] * f4_6;
  b[8] = in[4] * f5_6;
  b[9] = in[5] * f1_6;

  /* stage 2 */
  b1[0] = b[0] + b[4];
  b1[1] = b1[0] + b[2];
  b1[2] = b[1] + b[3] + b[5];
  b1[3] = b[0] - b[8];
  b1[4] = b[6] - b[3];
  b1[5] = b1[0] - b[2];
  b1[6] = b[7] - b[3] + b[9];

  /* stage 3 */
  out[0] = b1[1] + b1[2];
  out[1] = b1[3] + b1[4];
  out[2] = b1[5] + b1[6];
  out[3] = b1[5] - b1[6];
  out[4] = b1[3] - b1[4];
  out[5] = b1[1] - b1[2];

  return 0;
}

Int CInvSADCT::idct_vec7 (Double *in, Double *out)
{
  Double b[20];
  Double b1[6];

  /* stage 1 */
  b[0] = in[0] * f0_7;
  b[1] = in[1] * f1_7;
  b[2] = in[1] * f3_7;
  b[3] = in[1] * f5_7;
  b[4] = in[2] * f2_7;
  b[5] = in[2] * f6_7;
  b[6] = in[2] * f4_7;
  b[7] = in[3] * f3_7;
  b[8] = in[3] * f5_7;
  b[9] = in[3] * f1_7;
  b[10] = in[4] * f4_7;
  b[11] = in[4] * f2_7;
  b[12] = in[4] * f6_7;
  b[13] = in[5] * f5_7;
  b[14] = in[5] * f1_7;
  b[15] = in[5] * f3_7;
  b[16] = in[6] * f6_7;
  b[17] = in[6] * f4_7;
  b[18] = in[6] * f2_7;
  b[19] = (in[4] - in[2] - in[6]) * f7_7;
  
  /* stage 2 */
  b1[0] = b[0] + b[4] + b[10] + b[16];
  b1[1] = b[1] + b[7] + b[13];
  b1[2] = b[0] + b[5] - b[11] - b[17];
  b1[3] = b[2] - b[8] - b[14];
  b1[4] = b[0] - b[6] - b[12] + b[18];
  b1[5] = b[3] - b[9] + b[15];

  /* stage 3 */

  out[0] = b1[0] + b1[1];
  out[1] = b1[2] + b1[3];
  out[2] = b1[4] + b1[5];
  out[3] = b[0] + b[19];
  out[4] = b1[4] - b1[5];
  out[5] = b1[2] - b1[3];
  out[6] = b1[0] - b1[1];  
  
  return 0;
}

Int CInvSADCT::idct_vec8 (Double *in, Double *out)
{

  Int j1, j;
  Double tmp[8], tmp1[8];
  Double e, f, g, h;

  /* stage 1 for k = 4,5,6,7 */
  e = in[1] * f7_8 - in[7] * f1_8;
  h = in[7] * f7_8 + in[1] * f1_8;
  f = in[5] * f3_8 - in[3] * f5_8;
  g = in[3] * f3_8 + in[5] * f5_8;

  /* stage 1+2 for k = 0,1,2,3 */
  tmp1[0] = (in[0] + in[4]) * f4_8;
  tmp1[1] = (in[0] - in[4]) * f4_8;
  tmp1[2] = in[2] * f6_8 - in[6] * f2_8;
  tmp1[3] = in[6] * f6_8 + in[2] * f2_8;

  tmp[4] = e + f;
  tmp1[5] = e - f;
  tmp1[6] = h - g;
  tmp[7] = h + g;
  
  tmp[5] = (tmp1[6] - tmp1[5]) * f0_8;
  tmp[6] = (tmp1[6] + tmp1[5]) * f0_8;
  tmp[0] = tmp1[0] + tmp1[3];
  tmp[1] = tmp1[1] + tmp1[2];
  tmp[2] = tmp1[1] - tmp1[2];
  tmp[3] = tmp1[0] - tmp1[3];

  /* stage 4 */
  for (j = 0; j < 4; j++) {
    j1 = 7 - j;
    out[j] = tmp[j] + tmp[j1];
    out[j1] = tmp[j] - tmp[j1];
  }
  
  return 0;
}
#endif

	
Void CInvSADCT::build_v_reorder_tbl(Int *l_y, Float **in, PixelC **mask, Int bky, Int bkx)
{
	Int iy_out = 0, ix_out;
	Int iy, ix, l;
	
	for (ix=0; ix<bkx; ix++) {
		ix_out = l = 0;
		for (iy=0; iy<bky; iy++) {
			if ( mask[iy][ix] ) {
				m_reorder_v[iy_out][ix_out++] = in[iy]+ix;
				l++;
			}
		}
		if ( l ) 
			l_y[iy_out++] = l;
	}
	
	/* initialize the length of the unoccupied columns resp. rows to zero. */
	for (ix=iy_out; ix<bkx; ix++) 
		l_y[ix] = 0;
	
}
 
Void CInvSADCT::build_h_reorder_tbl(Int *l_x, const Int *l_y, Float **in, Int bky, Int bkx)
{
	Int i, k, jmax;
	Int col_ind;
	Float *row;
	
	memset(l_x, 0, sizeof(Int)*bky);
	for (i=0; i<bkx && l_y[i]; i++) {
		jmax = l_y[i];
		row = in[i];
		for (k=0; k<jmax; k++) {
			col_ind = l_x[k];
			m_reorder_h[k][col_ind] = row + k;
			l_x[k]++;
		}
	}
}

Void CInvSADCT::copyBack(PixelI *rgiDst, Int nColDst, Float **in, PixelC **mask)
{
	Float *rowSrcPtr;
	PixelC *rowMaskPtr;
	PixelI *rowDstPtr;
	int i, j;
	
	for (i=0; i<m_N; i++) {
		rowSrcPtr = in[i];
		rowMaskPtr = mask[i];
		rowDstPtr = rgiDst;
		for (j = 0; j < m_N; j++) { 
			if (rowMaskPtr) 
				*rowDstPtr = (*rowSrcPtr < 0) ? (PixelI)(*rowSrcPtr - .5) :
			(PixelI)(*rowSrcPtr + .5);
			rowMaskPtr++;
			rowDstPtr++;
			rowSrcPtr++;
		}
		rgiDst += nColDst;
	}
}

Void CInvSADCT::copyBack(PixelC *rgchDst, Int nColDst, Float **in, PixelC **mask)
{
	Float *rowSrcPtr;
	PixelC *rowMaskPtr;
	PixelC *rowDstPtr;
	PixelI iValue;
	int i, j;
	
	for (i=0; i<m_N; i++) {
		rowSrcPtr = in[i];
		rowMaskPtr = mask[i];
		rowDstPtr = rgchDst;
		for (j = 0; j < m_N; j++) { 
			if (rowMaskPtr) {
				iValue = (*rowSrcPtr < 0) ? (PixelI)(*rowSrcPtr - .5) :
			(PixelI)(*rowSrcPtr + .5);
				*rowDstPtr = m_rgchClipTbl [iValue];
			}
			rowMaskPtr++;
			rowDstPtr++;
			rowSrcPtr++;
		}
		rgchDst += nColDst;
	}
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区在线| 国产精品国产三级国产专播品爱网| 国产乱码一区二区三区| 亚洲人123区| 久久久久久久久久久久电影| 欧美日韩精品一区二区在线播放| 成人国产精品视频| 美女视频免费一区| 亚洲一区欧美一区| 亚洲婷婷在线视频| 久久精品视频免费观看| 欧美乱妇20p| 欧美综合天天夜夜久久| 99国产一区二区三精品乱码| 国产高清在线精品| 久草这里只有精品视频| 免费在线观看成人| 亚洲一区二区三区视频在线 | 一区二区在线观看免费| 久久亚洲春色中文字幕久久久| 欧美日韩成人一区二区| 91麻豆国产香蕉久久精品| 国产一区二区91| 麻豆国产精品777777在线| 五月婷婷欧美视频| 亚洲第一av色| 亚洲成人一区二区在线观看| 亚洲免费观看在线观看| 亚洲色图另类专区| 国产精品久久久久永久免费观看 | 中文字幕在线观看不卡视频| 国产亚洲欧美在线| 久久免费看少妇高潮| 亚洲精品一区在线观看| 精品欧美乱码久久久久久| 日韩免费高清电影| 欧美成人性战久久| 久久综合色天天久久综合图片| 日韩亚洲欧美中文三级| 日韩一区二区三区精品视频| 91精品在线一区二区| 3d成人动漫网站| 日韩欧美在线观看一区二区三区| 91精品国产麻豆国产自产在线 | 日本色综合中文字幕| 日韩av一级片| 日韩va欧美va亚洲va久久| 日韩二区在线观看| 久久精品国产网站| 国产尤物一区二区在线| 国产成人99久久亚洲综合精品| 国产精品亚洲一区二区三区在线| 风间由美一区二区av101| 成人av午夜影院| 91国模大尺度私拍在线视频| 欧美无乱码久久久免费午夜一区| 欧美日韩国产区一| 精品国产人成亚洲区| 国产精品免费丝袜| 亚洲一区二区三区不卡国产欧美| 天天色图综合网| 国产精品资源在线| 色婷婷久久久综合中文字幕| 777色狠狠一区二区三区| 久久久久久久久久久99999| 亚洲国产激情av| 亚洲图片欧美色图| 久久国产福利国产秒拍| www.欧美亚洲| 欧美一区二区三区视频免费播放| 国产日韩视频一区二区三区| 亚洲黄色av一区| 国精产品一区一区三区mba桃花| 岛国精品在线观看| 欧美人牲a欧美精品| 国产欧美精品一区二区色综合 | 国产91精品一区二区麻豆网站| 99视频一区二区三区| 91精品在线一区二区| 日本一区二区三区高清不卡| 亚洲一区二区视频在线观看| 国内精品视频666| 日本韩国一区二区三区视频| 日韩女优制服丝袜电影| 亚洲乱码精品一二三四区日韩在线| 日韩**一区毛片| 99久久婷婷国产| 精品国精品国产| 亚洲成va人在线观看| 粉嫩久久99精品久久久久久夜| 欧美日韩精品欧美日韩精品| 国产欧美一区二区精品久导航| 亚洲电影欧美电影有声小说| 成人av资源在线| 欧美xxxx在线观看| 亚洲国产欧美另类丝袜| 成人一区二区三区中文字幕| 91精品麻豆日日躁夜夜躁| 亚洲色图视频免费播放| 国产高清不卡一区二区| 欧美大胆人体bbbb| 五月婷婷欧美视频| 日本韩国视频一区二区| 国产日韩综合av| 精品中文av资源站在线观看| 欧美三级蜜桃2在线观看| 综合激情成人伊人| 国产精品一卡二卡在线观看| 欧美一区永久视频免费观看| 一区二区不卡在线播放 | 日韩久久久精品| 性感美女极品91精品| 91成人在线精品| ...中文天堂在线一区| 国产成人av一区| 2014亚洲片线观看视频免费| 男女性色大片免费观看一区二区| 欧美专区日韩专区| 一区av在线播放| 91黄色免费版| 亚洲愉拍自拍另类高清精品| 91污在线观看| 亚洲男帅同性gay1069| 成人网在线免费视频| 国产亚洲欧美日韩俺去了| 激情成人综合网| 欧美刺激午夜性久久久久久久| 日韩和欧美的一区| 欧美一区二区视频在线观看| 日本 国产 欧美色综合| 欧美高清hd18日本| 日韩精品亚洲一区| 日韩一级免费观看| 蜜桃视频一区二区三区在线观看| 欧美一卡二卡在线观看| 麻豆精品视频在线观看免费| 日韩视频免费观看高清在线视频| 日韩av二区在线播放| 日韩欧美国产精品| 国内不卡的二区三区中文字幕| 精品乱码亚洲一区二区不卡| 激情亚洲综合在线| 国产精品婷婷午夜在线观看| 成人av网站在线观看| 依依成人综合视频| 69堂精品视频| 国内精品写真在线观看| 欧美国产日产图区| 色婷婷久久久综合中文字幕 | 亚洲美女免费视频| 在线区一区二视频| 美女视频黄频大全不卡视频在线播放| 日韩免费高清电影| 成人一区二区视频| 亚洲小说欧美激情另类| 91麻豆精品国产91久久久更新时间| 麻豆精品一区二区综合av| 久久精品一区八戒影视| 91麻豆国产自产在线观看| 亚洲高清视频在线| 精品国精品国产| 99国产精品久久| 午夜精品一区在线观看| 欧美成人一区二区| 北岛玲一区二区三区四区| 亚洲电影中文字幕在线观看| 日韩一区二区三区电影| 国产福利一区二区三区| 亚洲一级在线观看| 久久这里只有精品6| 91麻豆文化传媒在线观看| 青青草97国产精品免费观看无弹窗版| 久久久久久夜精品精品免费| 色婷婷久久久亚洲一区二区三区| 日韩精品电影一区亚洲| 国产精品私房写真福利视频| 欧美日韩国产bt| 成人一区二区视频| 日本欧美一区二区三区| 一区精品在线播放| 日韩欧美在线影院| 91看片淫黄大片一级| 青草av.久久免费一区| 亚洲欧美一区二区三区久本道91 | 国内精品久久久久影院薰衣草| 樱桃国产成人精品视频| 2020国产精品自拍| 欧美日本在线看| av在线免费不卡| 久久99精品国产.久久久久久| 亚洲男同性视频| 欧美国产精品一区二区| 欧美一区二区在线播放| 99国产精品99久久久久久| 韩国精品一区二区| 亚洲电影在线免费观看| 亚洲天堂成人在线观看| 国产三区在线成人av| 日韩一区二区精品葵司在线| 色婷婷综合久久久中文一区二区|