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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? audiolibrary.c

?? samsung 最新芯片2450 的測試程序.
?? C
?? 第 1 頁 / 共 2 頁
字號:
			paddrorg++;
			//printf("%d paddrorg:0x%x \n", i, paddrorg);
			paddrorg++;
			//printf("%d paddrorg:0x%x \n", i, paddrorg);
		}
	}
	
	*destsizeByte = (unsigned int)((unsigned char* )paddr - (unsigned char* )pstartaddr);	
	printf("Expanding from 2ch size:0x%x (%d byte) @0x%x to %d ch size: 0x%x (%d byte) @0x%x is finished\n",
								orgsizeByte, orgsizeByte, orgaddr, 		destTotch, *destsizeByte, *destsizeByte, destaddr);
	return 1;
	
}


//masking certain channels of pcm fifo format data
//
//output 
//		- bool : succuss or fail
//		- pcm data at destaddr will be masked.
//
//input 
//		- destaddr : starting address of destination where pcm fifo format data is located.
//		- datasizeByte : size(byte) of orginal pcm data
//		- bit : bit per channels of original pcm data
//		- Totalch : total channels of original pcm data
//		- maskingch
//			[5][4][3][2][1][0]
//			 r  l  r  l  r  l
//	channel	 6  5  4  3  2  1
//			0:no masking
//			1:maksing - block channel so it doesn't make sound out
bool PCM_DATA_masking(unsigned int destaddr, unsigned int datasizeByte, int bit, int Totalch, int maskingch)
{
	unsigned char* 	pstartaddr=(unsigned char *)destaddr;
	unsigned int* paddr=(unsigned int*)destaddr;
	unsigned int wsize = datasizeByte/4;
	unsigned int	destdatasizebyte;
	unsigned int i;
	
	//assert
	if(destaddr == 0) return 0;
	if(maskingch<0 || maskingch>0x3f) return 0;
	
	
	if(bit == 16 || bit == 8)
	{
		int masking12=0xffffffff;//1ch(l) low 16bit, 2ch(r) high 16bit
		int masking34=0xffffffff;
		int masking56=0xffffffff;


		if(maskingch & 0x1) {
			masking12 = masking12 & 0xffff0000;	
			printf("ch 1(Front left) blocked\n");
		}
		if(maskingch & 0x2) {
			masking12 = masking12 & 0x0000ffff;
			printf("ch 2(Front right) blocked\n");			
		}
		if(maskingch & 0x4) {
			masking34 = masking34 & 0xffff0000;
			printf("ch 3(Center left) blocked\n");			
		}
		if(maskingch & 0x8) {
			masking34 = masking34 & 0x0000ffff;
			printf("ch 4(Center right) blocked\n");			
		}
		if(maskingch & 0x10) {
			masking56 = masking56 & 0xffff0000;
			printf("ch 5(Rear left) blocked\n");						
		}
		if(maskingch & 0x20) {
			masking56 = masking56 & 0x0000ffff;
			printf("ch 6(Rear right) blocked\n");
		}
		printf("masking12 : %x \n",masking12);
		printf("masking34 : %x \n",masking34);
		printf("masking56 : %x \n",masking56);
	
		switch(Totalch)
		{
		case 2:
			for(i=0; i<wsize; i++)
			{
				*paddr = *paddr & masking12;
				paddr++;			
			}
		break;
		
		case 4:
			for(i=0; i<wsize; i+=2)
			{
				*paddr = *paddr & masking12;
				paddr++;			
				*paddr = *paddr & masking34;
				paddr++;						
			}
		break;

		case 6:
			for(i=0; i<wsize; i+=3)
			{
				*paddr = *paddr & masking12;
				paddr++;			
				*paddr = *paddr & masking34;
				paddr++;			
				*paddr = *paddr & masking56;
				paddr++;				
			}
		break;		
		}
	}
	else
	if(bit == 24)
	{
		int masking120=0xffffffff;//1ch(l) low 16bit, 2ch(r) high 16bit
		int masking121=0xffffffff;//1ch(l) low 16bit, 2ch(r) high 16bit
		int masking340=0xffffffff;
		int masking341=0xffffffff;
		int masking560=0xffffffff;
		int masking561=0xffffffff;


		if(maskingch & 0x1) {
			masking120 = 0xff000000;	
			printf("ch 1(Front left) blocked\n");
		}
		if(maskingch & 0x2) {
			masking121 = 0xff000000;
			printf("ch 2(Front right) blocked\n");			
		}
		if(maskingch & 0x4) {
			masking340 = 0xff000000;
			printf("ch 3(Center left) blocked\n");			
		}
		if(maskingch & 0x8) {
			masking341 = 0xff000000;
			printf("ch 4(Center right) blocked\n");			
		}
		if(maskingch & 0x10) {
			masking560 = 0xff000000;
			printf("ch 5(Rear left) blocked\n");						
		}
		if(maskingch & 0x20) {
			masking561 = 0xff000000;
			printf("ch 6(Rear right) blocked\n");
		}
		printf("masking12L : %x \n",masking120);
		printf("masking12R : %x \n",masking121);
		printf("masking34L : %x \n",masking340);
		printf("masking34R : %x \n",masking341);
		printf("masking56L : %x \n",masking560);
		printf("masking56R : %x \n",masking561);
	
		switch(Totalch)
		{
		case 2:
			for(i=0; i<wsize; i+=2)
			{
				*paddr = *paddr & masking120;
				paddr++;
				*paddr = *paddr & masking121;
				paddr++;
			}
		break;
		
		case 4:
			for(i=0; i<wsize; i+=4)
			{
				*paddr = *paddr & masking120;
				paddr++;			
				*paddr = *paddr & masking121;
				paddr++;							
				*paddr = *paddr & masking340;
				paddr++;						
				*paddr = *paddr & masking341;
				paddr++;										
			}
		break;

		case 6:
			for(i=0; i<wsize; i+=6)
			{
				*paddr = *paddr & masking120;
				paddr++;			
				*paddr = *paddr & masking121;
				paddr++;						
				*paddr = *paddr & masking340;
				paddr++;			
				*paddr = *paddr & masking341;
				paddr++;							
				*paddr = *paddr & masking560;
				paddr++;				
				*paddr = *paddr & masking561;
				paddr++;								
			}
		break;		
		}
	}	
	
	destdatasizebyte = (unsigned int) ((unsigned char* )paddr - (unsigned char* )pstartaddr);	
	printf("Masking [size: 0x%x (%d byte)] is finished. \n\
orginal data: %d ch, %d bit, 0x%x (%d byte) @ 0x%x\n",
					destdatasizebyte,destdatasizebyte,
			Totalch, bit, datasizeByte, datasizeByte, pstartaddr);	
	return 1;
}



//pcm : little endian continous format => little endian fifo format(2byte, 4byte seperated format) 
// converting and copy
//          L         R        L          R 
//ex) byte# 0        1        2          3 	    		8bit
//			0 1      2 3      4 5        6 7    		16bit
//          0 1 2    3 4 5    6 7 8      9 10 11 		24bit
//          0 1 2 3  4 5 6 7  8 9 10 11  12 13 14 15	32bit

//orgsize : byte
bool PCM_ContinuousPCM2FifoFormat_converting(unsigned int destaddr, unsigned int* destsizeByte, int destbit,
						unsigned int orgaddr, int orgsizeByte, int orgbit)
{
	unsigned char* 	pstartaddr=(unsigned char *)destaddr;
	unsigned int* pdestaddr = (unsigned int* )destaddr;
	unsigned char* porgaddr = (unsigned char* )orgaddr;
	int i;	
	bool bprint=0;

	printf("original is pcm continous format!!!\n");
	if(orgbit == 8)
	{
		printf("not yet supported\n");
		return;
	}
	
	if(orgbit == 16)
	{
		if(destbit == 24)
		{
			for(i=0; i<orgsizeByte; i+=2)
			{
				*pdestaddr = (porgaddr[i]<<8) | (porgaddr[i+1]<<16);		
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
				
			}
		}
		else
		if(destbit == 16 || destbit == 8)
		{
			for(i=0; i<orgsizeByte; i+=4)
			{
				*pdestaddr = (porgaddr[i]<<0) | (porgaddr[i+1]<<8) | (porgaddr[i+2]<<16) | (porgaddr[i+3]<<24);
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}
			
		}
	}
	else
	if(orgbit == 24)
	{
		if(destbit == 24)
		{
			for(i=0; i<orgsizeByte; i+=3)
			{
				*pdestaddr = (porgaddr[i]<<0) |(porgaddr[i+1]<<8) | (porgaddr[i+2]<<16);		
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}
		}
		else
		if(destbit == 16)
		{
			for(i=0; i<orgsizeByte; i+=6)
			{
				*pdestaddr = (porgaddr[i+1]<<0) | (porgaddr[i+2]<<8) |  (porgaddr[i+4]<<16) | (porgaddr[i+5]<<24);		
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}			
		}
		else
		if(destbit == 8)
		{
			for(i=0; i<orgsizeByte; i+=12)
			{
				*pdestaddr = (porgaddr[i+2]<<0) | (porgaddr[i+5]<<8) |  (porgaddr[i+8]<<16) | (porgaddr[i+11]<<24);		
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}			
		}
		
	}
	else
	if(orgbit == 32)
	{
		if(destbit == 24)
		{
			for(i=0; i<orgsizeByte; i+=4)
			{
				*pdestaddr = (porgaddr[i+1]<<0) | (porgaddr[i+2]<<8) | (porgaddr[i+3]<<16);
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}
		}			
		else
		if(destbit == 16 || destbit == 8)
		{
			for(i=0; i<orgsizeByte; i+=8)
			{
				*pdestaddr = (porgaddr[i+2]<<0) | (porgaddr[i+3]<<8) |  (porgaddr[i+6]<<16) | (porgaddr[i+7]<<24);		
				pdestaddr++;
				if(bprint)printf("%x : %x\n", pdestaddr, *pdestaddr);
			}			
		}
	}	
	
	*destsizeByte = (unsigned int)((unsigned char* )pdestaddr - (unsigned char* )pstartaddr);		
	
	printf("Converting from %d bit(size:0x%x-%d byte) to %d bit(size:0x%x %dbyte) is finished\n",
			orgbit, orgsizeByte, orgsizeByte, destbit, *destsizeByte, *destsizeByte);
	
	return 1;
}


//pcm : little endian continous format => little endian fifo format(2byte, 4byte seperated format) 
// converting and copy
//          L         R        L          R 
//ex) byte# 0 1      2 3      4 5        6 7    		16bit
//          0 1 2    3 4 5    6 7 8      9 10 11 		24bit
//          0 1 2 3  4 5 6 7  8 9 10 11  12 13 14 15	32bit

//orgsize : byte
bool PCM_Resampling(unsigned int destaddr, unsigned int* destsizeByte, unsigned int destSamplerate,
						unsigned int orgaddr, int orgsizeByte, unsigned int orgSamplerate, int orgbit)
{
	unsigned char* 	pstartaddr=(unsigned char *)destaddr;
	unsigned int* pdestaddr = (unsigned int* )destaddr;
	unsigned short int* pdestaddrHalf = (unsigned short int* )destaddr;
	unsigned int* porgaddr = (unsigned int* )orgaddr;
	int i;	
	unsigned int  orgsizeWord = orgsizeByte/4;
	unsigned int  orgsizeHalfWord = orgsizeByte/2;
	unsigned int  downsampleratio;
	
	//
	if(destSamplerate == orgSamplerate) 
	{
		printf("same sampling rate, return\n");
		return;		
	}
	
	//downsampling
	downsampleratio = orgSamplerate / destSamplerate;
	if(downsampleratio<1) 
	{
		printf("downsampling is supported, \n");
		return;
	}
	
	if(orgSamplerate==96000 && destSamplerate ==64000 && orgbit==24)
		return PCM_Resampling96to64(destaddr, destsizeByte, orgaddr, orgsizeByte);
	
	if(downsampleratio * destSamplerate != orgSamplerate)
	{
		printf("please choose destSamplerate as a propotional of orgsamplerate(%d)\n", orgSamplerate );
		return;
	}
	
	if(orgbit == 16)
	{
		for(i=0; i<orgsizeWord; i+=downsampleratio)
		{
			*pdestaddr = porgaddr[i];
			pdestaddr++;
		}
	}
	else
	if(orgbit == 24)
	{
		for(i=0; i<orgsizeWord; i+=2*downsampleratio)
		{
			*pdestaddr = porgaddr[i];
			pdestaddr++;
			*pdestaddr = porgaddr[i+1];
			pdestaddr++;
		}
	}
	else	
	if(orgbit == 8)
	{
		for(i=0; i<orgsizeHalfWord; i+=downsampleratio )
		{
			*pdestaddrHalf = porgaddr[i];
			pdestaddrHalf++;
		}
	}	
	
	if(orgbit == 16 || orgbit == 24)
		*destsizeByte = (unsigned int)((unsigned char* )pdestaddr - (unsigned char* )pstartaddr);		
	else
		*destsizeByte = (unsigned int)((unsigned char* )pdestaddrHalf - (unsigned char* )pstartaddr);		
	
	printf("Resampling %d bit from %d Hz(size:0x%x - %dbyte) to %d Hz(size:0x%x - %d byte) is finished\n",
			orgbit, orgSamplerate, orgsizeByte, orgsizeByte, destSamplerate, *destsizeByte, *destsizeByte);
	
	return 1;
}

bool PCM_Resampling96to64(unsigned int destaddr, unsigned int* destsizeByte, 
						unsigned int orgaddr, int orgsizeByte)
{
	unsigned char* 	pstartaddr=(unsigned char *)destaddr;
	unsigned int* pdestaddr = (unsigned int* )destaddr;
	unsigned int* porgaddr = (unsigned int* )orgaddr;
	int i;	
	unsigned int  orgsizeWord = (orgsizeByte-orgsizeByte%6)/4;
	unsigned int  downsampleratio;


	unsigned int 	destSamplerate=64000;
	unsigned int 	orgSamplerate=96000;
	int 			orgbit=24;

	int 			unitcnt;//0,1,2
	
	unitcnt=0;
	for(i=0; i<orgsizeWord; i+=2)
	{
		if(unitcnt!=2)
		{
			*pdestaddr = porgaddr[i];
			pdestaddr++;
			*pdestaddr = porgaddr[i+1];
			pdestaddr++;
			
		}		
		unitcnt = (unitcnt>=2)? 0 : unitcnt+1;
	}

	
	*destsizeByte = (unsigned int)((unsigned char* )pdestaddr - (unsigned char* )pstartaddr);		
	
	printf("Resampling %d bit from %d Hz(size:0x%x) to %d Hz(size:0x%x) is finished\n",
			orgbit, orgSamplerate, orgsizeByte, destSamplerate, *destsizeByte);
	
	return 1;
}



//end of file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模娜娜一区二区三区| 国产精品三级视频| 亚洲一区二区视频在线观看| 91猫先生在线| 日韩不卡一区二区| 国产精品久久久久久久久免费相片 | 成人福利电影精品一区二区在线观看| 亚洲精品一区二区三区在线观看| 日韩国产精品久久久久久亚洲| 欧美精品久久天天躁| 国产一区二区日韩精品| 亚洲色图.com| 成人免费视频网站在线观看| 激情亚洲综合在线| 中文字幕第一区二区| 3d动漫精品啪啪一区二区竹菊| 韩国精品在线观看| 欧美日韩高清一区二区不卡| 福利一区在线观看| 美女视频网站黄色亚洲| 亚洲国产日韩a在线播放性色| 国产精品人成在线观看免费 | 欧美主播一区二区三区美女| 国产黑丝在线一区二区三区| 美国av一区二区| 粉嫩欧美一区二区三区高清影视| 一区二区在线观看视频| 成人动漫视频在线| 美女视频第一区二区三区免费观看网站| 国产精品影视天天线| 国产白丝网站精品污在线入口| 久久综合色之久久综合| 成人午夜免费电影| 亚洲一区二三区| 久久一留热品黄| 欧美日韩国产美女| 国产偷国产偷精品高清尤物 | 久久久久久久久久久99999| 欧美老女人第四色| 精品视频在线视频| 在线电影国产精品| 在线播放亚洲一区| 欧美一区二区在线免费播放| 欧美一区二区黄色| 欧美成人艳星乳罩| 精品美女在线观看| 久久久不卡网国产精品一区| 国产三级一区二区三区| 国产日韩欧美综合在线| 国产精品久久久久久久午夜片| 国产精品毛片无遮挡高清| 国产精品久久久久aaaa| 亚洲综合一区在线| 日韩精品一级二级 | 久久成人免费日本黄色| 国产一区二三区好的| 成人精品在线视频观看| 91黄色激情网站| 欧美日本高清视频在线观看| 日韩三级在线观看| 欧美激情在线一区二区| 亚洲精品欧美专区| 日本网站在线观看一区二区三区| 激情六月婷婷久久| 99久久精品国产一区二区三区| 在线免费观看视频一区| 日韩精品一区第一页| 亚洲6080在线| 国精产品一区一区三区mba视频| 国产精品中文字幕一区二区三区| 成人黄色在线网站| 欧美喷水一区二区| 久久综合给合久久狠狠狠97色69| 国产精品黄色在线观看| 五月天久久比比资源色| 国产美女精品在线| 欧美亚洲综合久久| 国产婷婷一区二区| 亚洲一区二区三区中文字幕在线| 美国十次了思思久久精品导航| 粉嫩av亚洲一区二区图片| 欧美日韩一区二区在线观看 | 一区二区三区不卡视频| 精品中文字幕一区二区小辣椒| 99久久久精品| 欧美大胆人体bbbb| 亚洲男人都懂的| 狠狠色2019综合网| 欧美日韩一区成人| 国产精品毛片久久久久久| 日韩经典一区二区| 色综合久久久久网| 国产肉丝袜一区二区| 日本伊人精品一区二区三区观看方式| 成人美女在线视频| 欧美草草影院在线视频| 亚洲最色的网站| 成人在线综合网站| 一区二区三区四区不卡视频| 91国偷自产一区二区三区观看| 日韩免费福利电影在线观看| 一区二区三区视频在线看| 国产精品系列在线播放| 日韩欧美在线不卡| 亚洲.国产.中文慕字在线| 成人性视频免费网站| 欧美成人伊人久久综合网| 亚洲国产毛片aaaaa无费看| 本田岬高潮一区二区三区| 亚洲精品在线免费播放| 香蕉久久一区二区不卡无毒影院| 99国产精品久久| 国产日产亚洲精品系列| 裸体一区二区三区| 4438x亚洲最大成人网| 亚洲夂夂婷婷色拍ww47| 91丨porny丨国产入口| 国产欧美一区二区三区沐欲| 九九视频精品免费| 日韩免费高清电影| 免费观看久久久4p| 制服丝袜在线91| 五月天一区二区三区| 在线观看一区不卡| 一区二区三区四区国产精品| 色婷婷综合久久久中文字幕| 亚洲欧洲日本在线| 色综合激情久久| 亚洲毛片av在线| 91麻豆自制传媒国产之光| 国产精品久久久久久久久免费樱桃 | 欧美激情综合五月色丁香| 国模娜娜一区二区三区| 久久先锋资源网| 国产精品18久久久久久久久 | 国产人成亚洲第一网站在线播放 | 香蕉加勒比综合久久| 在线精品视频免费观看| 一区二区三区**美女毛片| 91福利小视频| 亚洲aaa精品| 日韩精品一区二区三区swag | 国产在线播精品第三| 久久夜色精品国产噜噜av| 国产成人在线观看| 亚洲国产精品成人综合| 91一区二区在线| 亚洲va欧美va人人爽| 欧美一区二区三区性视频| 久久国产免费看| 中文字幕免费一区| 日本伦理一区二区| 视频一区在线播放| 精品国产一区二区三区久久久蜜月| 国产一区二区三区在线观看免费 | 日本成人在线视频网站| 精品欧美一区二区在线观看| 国产高清不卡一区二区| 亚洲人成7777| 欧美高清视频不卡网| 国产麻豆视频一区二区| 亚洲欧洲精品一区二区三区不卡| 91麻豆国产福利精品| 肉色丝袜一区二区| 国产亚洲人成网站| 91蝌蚪国产九色| 蜜桃av噜噜一区二区三区小说| 久久亚洲精精品中文字幕早川悠里| 成人免费高清视频在线观看| 亚洲h动漫在线| 久久精品日产第一区二区三区高清版| 91麻豆国产福利精品| 美女高潮久久久| 亚洲免费av网站| 精品乱码亚洲一区二区不卡| 99视频精品免费视频| 日韩经典一区二区| 欧美国产日韩a欧美在线观看| 在线区一区二视频| 国产精品综合视频| 午夜精品久久久久久久久| 国产亚洲va综合人人澡精品| 欧美偷拍一区二区| 国产aⅴ综合色| 午夜久久电影网| 日韩久久免费av| 久久99精品久久久久婷婷| 中文字幕亚洲欧美在线不卡| 欧美一级在线视频| 91麻豆免费观看| 国产福利不卡视频| 婷婷国产v国产偷v亚洲高清| 国产精品国产自产拍高清av| 日韩三级视频在线看| 欧美在线观看视频一区二区| 国产精品影视天天线| 日韩精品三区四区| 亚洲精品国产无天堂网2021 | 久久精品视频在线免费观看| 欧美一区二区三区视频免费|