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

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

?? mchannel.c

?? Jepg2000的壓縮解壓
?? C
字號(hào):
 
#include "wavelet.h"
#include "mchannel.h"


// 顏色空間轉(zhuǎn)換(數(shù)據(jù)類型:16.16浮點(diǎn)型)
#define RGB_Y(r, g, b) ((int)(r) * 19595 + (int)(g) * 38470 + (int)(b) * 7471)
#define RGB_Cb(r, g, b) ((int)(r) * -11059 + (int)(g) * -21709 + (int)(b) * 32768)
#define RGB_Cr(r, g, b) ((int)(r) * 32768 + (int)(g) * -27439 + (int)(b) * -5329)
 
#define YCbCr_R(y, cb, cr) ((int)(y) * 65536 + (int)(cb) * 0 + (int)(cr) * 91881)
#define YCbCr_G(y, cb, cr) ((int)(y) * 65536 + (int)(cb) * -22554 + (int)(cr) * -46802)
#define YCbCr_B(y, cb, cr) ((int)(y) * 65536 + (int)(cb) * 116130 + (int)(cr) * 0)


/***************************************************************************
函數(shù)功能:	將給定的不同分離位平面的像素?cái)?shù)列從RGB轉(zhuǎn)換為YCrCb 
函數(shù)輸出:	函數(shù)返回轉(zhuǎn)換象素的數(shù)目 
函數(shù)輸入:	1) Num:需要轉(zhuǎn)換的連續(xù)象素的署名女 
			2)R, G, B:分別表示紅、綠、藍(lán)三色的數(shù)列首地址指針 
			3)Y, Cb, Cr:同樣是指針,分別指向三個(gè)結(jié)果的存放空間 
***************************************************************************/
WAVELET_DLL_API int WAVELET_DLL_CC wv_rgb_to_ycbcr(const int Num, const wv_pel* R, const wv_pel* G, const wv_pel* B, wv_pel* Y, wv_pel* Cb, wv_pel* Cr)
{
	if (Num > 0 && R && G && B && Y && Cb && Cr)
	{
		int i;

		for (i = 0; i < Num; i++)
		{
			Y[i] = (RGB_Y(R[i], G[i], B[i]) + 32768) >> 16;
			Cb[i] = ((RGB_Cb(R[i], G[i], B[i]) + 32767) >> 16) + 128;
			Cr[i] = ((RGB_Cr(R[i], G[i], B[i]) + 32767) >> 16) + 128;
		}
		return Num;
	}
	return 0;
}


/***************************************************************************
函數(shù)功能:	從YCrCb轉(zhuǎn)換成RGB 
函數(shù)輸出:	函數(shù)返回所轉(zhuǎn)換像素的數(shù)目 
函數(shù)輸入:	1) Num:需要轉(zhuǎn)換的連續(xù)象素的署名女 
			2)R, G, B:分別表示紅、綠、藍(lán)三色的數(shù)列首地址指針 
			3)Y, Cb, Cr:同樣是指針,分別指向三個(gè)結(jié)果的存放空間 
*****************************************************************************/
WAVELET_DLL_API int WAVELET_DLL_CC wv_ycbcr_to_rgb(const int Num, const wv_pel* Y, const wv_pel* Cb, const wv_pel* Cr, wv_pel* R, wv_pel* G, wv_pel* B)
{
	if (Num > 0 && Y && Cb && Cr && R && G && B)
	{
		int i;

		for (i = 0; i < Num; i++)
		{
			R[i] = min(255, max(0, (YCbCr_R(Y[i], Cb[i] - 128, Cr[i] - 128) + 32768) >> 16));
			G[i] = min(255, max(0, (YCbCr_G(Y[i], Cb[i] - 128, Cr[i] - 128) + 32768) >> 16));
			B[i] = min(255, max(0, (YCbCr_B(Y[i], Cb[i] - 128, Cr[i] - 128) + 32768) >> 16));
		}
		return Num;
	}
	return 0;
}
 
/**********************************************************************************
功能描述:	本函數(shù)試圖找到固定數(shù)目信道所能匹配的設(shè)置(即滿足所有給定限制條件)
函數(shù)輸出:	函數(shù)返回信道所需的比特位的數(shù)目(這個(gè)數(shù)目有可能大于最大比特?cái)?shù)目)
函數(shù)輸入:	略
**********************************************************************************/
WAVELET_DLL_API int WAVELET_DLL_CC wv_init_multi_channels(const int MaxBits, const float Threshold, const int NumChannels, t_wv_mchannel_params* Channels, t_wv_csettings** Sets)
{
	int bits = 0;

	if (NumChannels > 0 && Channels && Sets)
	{
		int i;

		for (i = 0; i < NumChannels; i++)
			Sets[i] = NULL;
		if (MaxBits <= 0)
		{ 
			//加強(qiáng)mse的限制 
			for (i = 0; i < NumChannels; i++)
			{
				bits = wv_init_channel_settings(Channels[i].cc, 0, Channels[i].max_mse, &Sets[i]);
				if (bits <= 0)
					break;
			}
		}
		else
		{ 
			//平衡信道,這樣各信道的MSE大體相等(包括了最值) 
			int num_iter = 0, adjustment;
			int omin_idx = -1, omax_idx = -1;
			t_wv_csettings* lsets[wv_MAX_CHANNELS];
			float closest_match = 65536.0f;

			for (i = 0; i < NumChannels; i++)
			{
				Channels[i].bits_unused = Channels[i].old_bits = 0;
				Sets[i] = NULL;
				lsets[i] = NULL;
			}
		
			//類型初始狀態(tài),均勻的分配比特位 
			adjustment = 0;
			for (i = 1; i < NumChannels; i++)
			{
				Channels[i].bits_alloced = MaxBits / NumChannels;
				adjustment += Channels[i].bits_alloced;
			}
			Channels[0].bits_alloced = MaxBits - adjustment;
			adjustment = 1;
			
			do
			{
				float bmin_mse = 65536.0f, bmax_mse = -1.0f;
				int bmin_idx = -1, bmax_idx = -1;
				int bits_available;

				for (i = 0; i < NumChannels; i++)
				{
					if (lsets[i] && Channels[i].bits_alloced != Channels[i].old_bits)
					{
						wv_done_channel_settings(lsets[i]);
						lsets[i] = NULL;
					}
					if (!lsets[i])
						bits = wv_init_channel_settings(Channels[i].cc, Channels[i].bits_alloced, 65536.0f, &lsets[i]);
					else
						bits = lsets[i]->num_bits;
					if (bits > 0 && lsets[i])
					{
 						Channels[i].old_bits = bits; //將重新分配那些未用的比特位 
						Channels[i].bits_unused = Channels[i].bits_alloced - bits;
						//找出最佳和最差的信道 
						if (lsets[i]->emse - Channels[i].max_mse <= bmin_mse)
						{
							bmin_mse = lsets[i]->emse - Channels[i].max_mse;
							bmin_idx = i;
						}
						if (lsets[i]->emse - Channels[i].max_mse >= bmax_mse)
						{
							bmax_mse = lsets[i]->emse - Channels[i].max_mse;
							bmax_idx = i;
						}
					}
					else
						break;
				}
						
				if (i != NumChannels || bmin_idx == -1 || bmax_idx == -1)
				{ 
					bits = 0;
					break; //沒有比特流,退出 
				}
				if (bmax_mse - bmin_mse <= closest_match)
				{  
					for (i = 0; i < NumChannels; i++)
					{
						Sets[i] = lsets[i]; //拷貝設(shè)置 
						lsets[i] = NULL; //保存不被刪除 
					}
					closest_match = bmax_mse - bmin_mse;
				}
				if ((bmin_idx == bmax_idx) || (bmax_mse - bmin_mse <= Threshold))
					break; //平衡 

				if (bmin_idx == omax_idx && bmax_idx == omin_idx)
				{
					adjustment++;
					if (adjustment > 256)
						break;  
				}

				//重新分配比特位 
				bits_available = 0; //統(tǒng)計(jì)所有未用比特位 
				for (i = 0; i < NumChannels; i++)
					if (i != bmin_idx && i != bmax_idx)
					{
						bits_available += Channels[i].bits_unused;
						Channels[i].bits_alloced -= Channels[i].bits_unused;
					}
				
 
				bits_available += Channels[bmin_idx].bits_alloced + Channels[bmax_idx].bits_alloced;

				Channels[bmin_idx].bits_alloced = (Channels[bmin_idx].bits_alloced * adjustment) / (adjustment + 1);
				Channels[bmax_idx].bits_alloced = bits_available - Channels[bmin_idx].bits_alloced; // gets the rest

				omin_idx = bmin_idx;
				omax_idx = bmax_idx;

				num_iter++;
			} while (num_iter < 1024);

			//釋放設(shè)置空間 (最佳設(shè)置已經(jīng)拷貝保存)
			for (i = 0; i < NumChannels; i++)
				if (lsets[i] != NULL)
					wv_done_channel_settings(lsets[i]);
		}
		
		if (bits != 0)
		{ 
			//重新計(jì)算最終的使用比特位的數(shù)目 
			bits = 0;
			for (i = 0; i < NumChannels; i++)
				if (Sets[i])
					bits += Sets[i]->num_bits;
		}
	}
	return bits;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99免费精品视频| 一本到不卡精品视频在线观看 | 国产欧美日韩综合精品一区二区| 97se亚洲国产综合自在线不卡| 成人国产精品免费观看视频| 国产成人av电影| 一本一道久久a久久精品| 欧美最新大片在线看| 56国语精品自产拍在线观看| 制服丝袜亚洲精品中文字幕| 国产高清精品在线| 国产一区二区福利| av资源站一区| 日韩无一区二区| 国产欧美一区二区精品忘忧草| 亚洲精品老司机| 久久精品99国产精品| aaa亚洲精品一二三区| 91成人免费网站| 精品国产电影一区二区| 国产精品视频在线看| 午夜精品爽啪视频| www.欧美精品一二区| 欧美大度的电影原声| 一区二区视频免费在线观看| 免费观看在线色综合| 色美美综合视频| 中文字幕在线不卡视频| 国产高清精品网站| 日韩一区二区在线免费观看| 亚洲伦在线观看| 国产麻豆精品视频| 精品国产伦一区二区三区免费| 亚洲午夜久久久久久久久电影网 | 成人av网站大全| 国产视频一区在线观看| 一区二区三区四区在线播放 | 国产精品99久| 日韩美女一区二区三区四区| 中文字幕日韩一区| 东方欧美亚洲色图在线| 欧美精品一区二区三区蜜桃视频| 亚洲欧美日韩国产综合在线 | 久久久久久久综合| 久久国产人妖系列| 精品美女一区二区三区| 毛片av一区二区三区| 日韩欧美一区电影| 国产精品亚洲一区二区三区在线| 精品盗摄一区二区三区| 国产91露脸合集magnet| 日韩久久一区二区| 欧美精品国产精品| 国内精品免费**视频| 日本一区二区三区四区在线视频| 国产自产高清不卡| 中文字幕一区二| 九九视频精品免费| 欧美日韩不卡在线| 免费在线观看成人| 中文字幕精品在线不卡| 欧美日韩视频在线一区二区| 免费看日韩精品| 亚洲日本电影在线| 日韩视频123| 色妞www精品视频| 久久爱www久久做| 亚洲国产精品人人做人人爽| 久久美女高清视频| 欧美色综合久久| 成人在线视频首页| 黑人精品欧美一区二区蜜桃| 亚洲国产美国国产综合一区二区| 国产三级一区二区| 久久久影视传媒| 91精品国产色综合久久| 色婷婷香蕉在线一区二区| 国产成人午夜高潮毛片| 久久精品国产一区二区| 亚洲精品国产品国语在线app| 国产视频一区在线播放| 欧美成人伊人久久综合网| 91麻豆精品国产91久久久久久久久| 成人免费毛片片v| 99热精品国产| bt欧美亚洲午夜电影天堂| 99这里只有精品| 91色在线porny| 欧美午夜精品电影| 欧美日韩中文另类| 欧美日韩国产不卡| 国产视频亚洲色图| 久久精品视频一区| 综合欧美亚洲日本| 五月综合激情婷婷六月色窝| 日本aⅴ免费视频一区二区三区| 日韩精品久久久久久| 激情综合色综合久久| 本田岬高潮一区二区三区| 91精品国产综合久久久久久久| 欧美老女人第四色| 欧美成人猛片aaaaaaa| 中文字幕av资源一区| 一区二区在线免费观看| 日本特黄久久久高潮| 成人看片黄a免费看在线| 欧洲av一区二区嗯嗯嗯啊| 久久久精品日韩欧美| 亚洲美女视频一区| 国产在线播放一区三区四| 欧洲一区二区三区在线| 久久伊99综合婷婷久久伊| 自拍av一区二区三区| 美女免费视频一区| 欧美亚洲高清一区| 亚洲欧美日韩国产成人精品影院 | 日本一区二区三区四区在线视频| 一区二区成人在线观看| 韩国成人精品a∨在线观看| 欧美在线999| 亚洲欧美日韩国产手机在线 | 久久一区二区视频| 日韩国产一区二| 91精品国产综合久久久久久| 亚洲欧美一区二区不卡| 成人av网站免费观看| 中文字幕高清一区| 国产剧情在线观看一区二区| 91精品国产色综合久久ai换脸 | 欧美色区777第一页| 亚洲一区在线视频观看| 日本电影欧美片| 亚洲一区二区三区四区五区黄 | 香蕉成人伊视频在线观看| 欧洲一区在线电影| 爽好多水快深点欧美视频| 欧美丝袜自拍制服另类| 午夜一区二区三区在线观看| 欧美午夜视频网站| av一区二区三区四区| 国产欧美一区二区在线观看| 成人精品国产一区二区4080| 国产亚洲精品中文字幕| 91偷拍与自偷拍精品| 亚洲一区视频在线观看视频| 欧美日韩精品欧美日韩精品一 | 91精品91久久久中77777| 亚洲美女免费在线| 欧美疯狂性受xxxxx喷水图片| 日韩成人免费电影| 国产人成一区二区三区影院| 日本韩国一区二区| 日韩中文字幕区一区有砖一区 | 亚洲123区在线观看| 日韩精品一区二区三区视频| 成人app软件下载大全免费| 亚洲香肠在线观看| 国产精品乱码人人做人人爱 | 精品亚洲成a人| 天天操天天色综合| 亚洲日本在线天堂| 久久综合九色综合欧美就去吻| 色综合视频在线观看| 久久国产精品72免费观看| 亚洲综合色视频| 国产亚洲一本大道中文在线| 亚洲午夜激情av| 久久久综合视频| 日韩一级二级三级| 欧美日韩精品综合在线| 色婷婷激情综合| 国产成人丝袜美腿| 国产a视频精品免费观看| 奇米一区二区三区av| 午夜精品久久久久久久久久| 亚洲人亚洲人成电影网站色| 中文字幕亚洲一区二区av在线| 国产色产综合色产在线视频| 久久蜜桃av一区精品变态类天堂| 日韩美女天天操| 国产日韩欧美制服另类| 久久亚洲免费视频| 久久精品一区二区三区四区| 精品国精品国产尤物美女| 精品国产一区二区三区四区四| 欧美日韩精品一区二区三区蜜桃| 欧美在线观看你懂的| 欧美日韩美少妇| 精品粉嫩超白一线天av| 国产网站一区二区| 一区二区三区日本| 日韩 欧美一区二区三区| 美女看a上一区| 91麻豆免费在线观看| 欧美久久高跟鞋激| 中文字幕亚洲欧美在线不卡| 久久精品免费看| 99久久国产免费看| 欧洲一区二区三区免费视频| 久久久亚洲精品一区二区三区|