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

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

?? hssi.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 5 頁
字號:
    dwDummy = *(--lpAudioBuffer);

	// Point AudioPlayingAddress to buffer just filled; toggle v_nNextPage

	pDriverGlobals->aud[AUDIO_NO].play_address = (ULONG)dma_pagePhysicalAddress[v_nNextPage];

	v_nNextPage = 1 - v_nNextPage;

	FUNC_VERBOSE("-PDD_AudioFillBuffer");
}

/*****************************************************************************
*   FUNCTION :  	AudioGetBuffer_M8
*   DESCRIPTION :	get audio DMA buffer and convert sample(8bit Mono)
*   INPUTS :		pSrcPtr - audio buffer address
*                   pDstPtr - wave audio buffer address
*                   ulSrcSampleCount - sampling count
*                   nReducing - The coefficient for reducing data
*   OUTPUTS :     	None
*   DESIGN NOTES :  Soft-ware Sampling Rate Convert
*                   (44.1kHz to 11.025kHz or 22.05kHz)
*                   convert 20bit to 8bit and stereo to mono
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_M8 (
	PULONG pSrcPtr,
	PBYTE pDstPtr,
	ULONG ulSrcSampleCount,
	ULONG nReducing
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = READ_REGISTER_ULONG(pSrcPtr);
		ulSample = ((ulSample + 0x00000800) >> 12) + 128;
		*pDstPtr++ = (BYTE)ulSample;
		pSrcPtr += (nReducing * 2);
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	AudioGetBuffer_S8
*   DESCRIPTION :	get audio DMA buffer and convert sample(8bit Stereo)
*   INPUTS :		pSrcPtr - audio buffer address
*                   pDstPtr - wave audio buffer address
*                   ulSrcSampleCount - sampling count
*                   nReducing - The coefficient for reducing data
*   OUTPUTS :     	None
*   DESIGN NOTES :  Soft-ware Sampling Rate Convert
*                   (44.1kHz to 11.025kHz or 22.05kHz)
*                   convert 20bit to 8bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_S8 (
	PULONG pSrcPtr,
	PBYTE pDstPtr,
	ULONG ulSrcSampleCount,
	ULONG nReducing
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = READ_REGISTER_ULONG(pSrcPtr);
		ulSample = ((ulSample + 0x00000800) >> 12) + 128;
		*pDstPtr++ = (BYTE)ulSample;
		// Mic
		if( g_VolumeSettings.dwInputSelect == WPDMX_LINE_MIC ){
			*pDstPtr++ = (BYTE)ulSample;
		}
		// Line In
		else{
			ulSample = READ_REGISTER_ULONG(pSrcPtr+1);
			ulSample = ((ulSample + 0x00000800) >> 12) + 128;
			*pDstPtr++ = (BYTE)ulSample;
		}
		pSrcPtr += (nReducing * 2);
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	AudioGetBuffer_M16
*   DESCRIPTION :	get audio DMA buffer and convert sample(16bit Mono)
*   INPUTS :		pSrcPtr - audio buffer address
*                   pDstPtr - wave audio buffer address
*                   ulSrcSampleCount - sampling count
*                   nReducing - The coefficient for reducing data
*   OUTPUTS :     	None
*   DESIGN NOTES :  Soft-ware Sampling Rate Convert
*                   (44.1kHz to 11.025kHz or 22.05kHz)
*                   convert 20bit to 16bit and stereo to mono
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_M16 (
	PULONG pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount,
	ULONG nReducing
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = READ_REGISTER_ULONG(pSrcPtr);
		ulSample >>= 4;
		*pDstPtr++ = (USHORT)ulSample;
		pSrcPtr += (nReducing * 2);
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	AudioGetBuffer_S16
*   DESCRIPTION :	get audio DMA buffer and convert sample(16bit Stereo)
*   INPUTS :		pSrcPtr - audio buffer address
*                   pDstPtr - wave audio buffer address
*                   ulSrcSampleCount - sampling count
*                   nReducing - The coefficient for reducing data
*   OUTPUTS :     	None
*   DESIGN NOTES :  Soft-ware Sampling Rate Convert
*                   (44.1kHz to 11.025kHz or 22.05kHz)
*                   convert 20bit to 16bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_S16 (
	PULONG pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount,
	ULONG nReducing
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = READ_REGISTER_ULONG(pSrcPtr);
		ulSample >>= 4;
		*pDstPtr++ = (USHORT)ulSample;
		// Mic
		if( g_VolumeSettings.dwInputSelect == WPDMX_LINE_MIC ){
			*pDstPtr++ = (USHORT)ulSample;
		}
		// Line In
		else{
			ulSample = READ_REGISTER_ULONG(pSrcPtr+1);
			ulSample >>= 4;
			*pDstPtr++ = (USHORT)ulSample;
		}
		pSrcPtr += (nReducing * 2);
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	private_AudioInContinue
*   DESCRIPTION :   continuerecording a sound - occurs at audio in interrupt
*   INPUTS :		pwh: wave header to insert sound into
*   OUTPUTS :     	None
*   DESIGN NOTES :  
*   CAUTIONS :		pwh can be null for no buffers available
*****************************************************************************/
VOID
private_WaveInContinue(
   PWAVEHDR pwh
   )
{
	ULONG		CODEC_SAMPLING_RATE;
	ULONG		*lpAudioBuffer;
	LONG nDstLen, nSrcLen;
	ULONG nSampleCount,nSampleUnit;
	LONG	nReducing = 1;

	FUNC_VERBOSE("+PDD_WaveInContinue");

	switch (g_pcmtype[WAPI_IN])
	{
	case PCM_TYPE_S16:
        nSampleUnit = 4; // 2 words per sample unit
		break;

	case PCM_TYPE_M16:
        nSampleUnit = 2; // 1 word per sample unit
		break;

	case PCM_TYPE_S8:
        nSampleUnit = 2;  // 2 bytes per sample unit
		break;

	case PCM_TYPE_M8:
        nSampleUnit = 1;  // 1 byte per sample unit
		break;

	}  // end switch
	lpAudioBuffer =  (PULONG)(pRecAudioBufferBase + ((1 - v_recPage) * AUDIO_DMA_PAGE_SIZE));

	//
	// Setting for Soft-ware Sampling Rate Convert
	//
	CODEC_SAMPLING_RATE = get_CODEC_SAMPLING_RATE(pDriverGlobals->aud[AUDIO_NO].REC_CH);	// Get CODEC sampling rate for recording
	nReducing = CODEC_SAMPLING_RATE / lpFormat2->nSamplesPerSec ;	// The coefficient for reducing data

	// process raw audio samples 
	// copy processed audio sample into WAVEHDR
	nSrcLen = AUDIO_DMA_PAGE_SIZE / (sizeof(INT32) * 2 * nReducing);
    while (nSrcLen > 0) {
		try
		{
			if( pwh == 0 ) break;

	        nDstLen = pwh->dwBufferLength - pwh->dwBytesRecorded;
			if (nDstLen <= 0)
			{
				DEBUGMSG(ZONE_TEST,(TEXT("WAVE RECORD: NEXT BUFFER\r\n")));
				pwh = pwh->lpNext;

				if( pwh == 0 )
				{
					DEBUGMSG(ZONE_TEST,(TEXT("WAVE RECORD: NO BUFFERS\r\n")));
					break;
				}
			}
			else{
				nSampleCount = nDstLen / nSampleUnit;
	            if (nSrcLen < (LONG)nSampleCount) nSampleCount = nSrcLen;
				switch( g_pcmtype[WAPI_IN] )
				{
					case PCM_TYPE_S16:	// 16 bit stereo
						AudioGetBuffer_S16(lpAudioBuffer, (PUSHORT)(pwh->lpData + pwh->dwBytesRecorded), 
									nSampleCount, nReducing);
						break;

					case PCM_TYPE_M16:	// 16 bit mono
						AudioGetBuffer_M16(lpAudioBuffer, (PUSHORT)(pwh->lpData + pwh->dwBytesRecorded), 
									nSampleCount, nReducing);
						break;

					case PCM_TYPE_S8:	// 8 bit stereo
						AudioGetBuffer_S8(lpAudioBuffer, (PBYTE)(pwh->lpData + pwh->dwBytesRecorded), 
									nSampleCount, nReducing);
						break;

					case PCM_TYPE_M8:	// 8 bit mono
						AudioGetBuffer_M8(lpAudioBuffer, (PBYTE)(pwh->lpData + pwh->dwBytesRecorded), 
									nSampleCount, nReducing);
						break;

					default: // really screwed up if we're here!
						DEBUGMSG(ZONE_ERROR,(TEXT("WAVE RECORD: invalid pcm type %d\r\n"),
							g_pcmtype[WAPI_IN] ));
						break;
				} //end switch
				pwh->dwBytesRecorded += (nSampleCount * nSampleUnit)  ;

	            nSrcLen -= nSampleCount;
	            lpAudioBuffer += (nSampleCount * 2 * nReducing);
			}
		}
		except ( 1 ) 
		{
			DUMPEXCEPTION();
		}
	} // end while

	v_recPage = 1 - v_recPage;
	pDriverGlobals->aud[AUDIO_NO].rec_address = dma_pageRecPhysicalAddress[v_recPage];
	pDriverGlobals->aud[AUDIO_NO].inInt = (USHORT)NULL;

	FUNC_VERBOSE("-PDD_WaveInContinue");
}

/*****************************************************************************
*   FUNCTION :  	set_volume
*   DESCRIPTION :	sample set to DMA Buffer
*   INPUTS :		v - Volume
*   OUTPUTS :     	None
*   DESIGN NOTES :  
*   CAUTIONS :		
*****************************************************************************/
VOID
set_volume( ULONG v )
{
	unsigned char ulLVol, ulRVol;
unsigned char I2CVol[4][2] = {
{CODEC_OADB_1,	0x00},					// 0:(04h)Output Attenuator Data Byte(left ch)
{CODEC_OADB_2,	0x00},					// 1:(05h)Output Attenuator Data Byte(right ch)
{CODEC_DAC_CB,	CS4226_DACCB_NORMAL},	// 2:(03h)DAC Control Byte
{CODEC_NONE,	0x00}};					// 3:delimiter

	ulLVol = (unsigned char)((SSI_VOL_SCALE * LOWORD(v)) / 0xffff);
	ulRVol = (unsigned char)((SSI_VOL_SCALE * HIWORD(v)) / 0xffff);
	DEBUGMSG(ZONE_TEST,(TEXT("set_volume 0x%08x => L:0x%02x R:%02x\r\n"),v ,ulLVol, ulRVol));

	I2CVol[0][1] = SSI_VOL_SCALE - ulLVol;
	I2CVol[1][1] = SSI_VOL_SCALE - ulRVol;
	if(v == 0){
		I2CVol[2][1] = CS4226_DACCB_MUTE;
	}

	I2C_SetCODEC(I2CVol);

	return;
}

/*****************************************************************************
*   FUNCTION :  	SetMute
*   DESCRIPTION :	Mute
*   INPUTS :		Mute
*   OUTPUTS :     	None
*   DESIGN NOTES :  
*   CAUTIONS :		
*****************************************************************************/
void	SetMute(BOOL muted)
{
	MuteSSI(muted);
	return;
}

/*****************************************************************************
*   FUNCTION :  	check_SamplesPerSec
*   DESCRIPTION :	Check Samples Per Sec
*   INPUTS :		ch - DMA Channel Number
*                   s - Samples Per Sec
*   OUTPUTS :     	Return TRUE for normal, FALSE for abnormal
*   DESIGN NOTES :  
*   CAUTIONS :		
*****************************************************************************/
BOOL
check_SamplesPerSec(
	int ch,
	DWORD s
)
{
	BOOL	ret = FALSE;

	// SSI0,1(mono) Samples Per Sec is 11.025kHz(CODEC), 22.050kHz, 44.1kHz
	if( ch == CH_TX_HSSI_1 || ch == CH_RX_HSSI_1 ){
		if( s == Hz11025 || s == Hz22050 || s == Hz44100 ){
			return	TRUE;
		}
	}
	// SSI2,3(stereo) Samples Per Sec is  11.025kHz, 22.050kHz, 44.1kHz(CODEC)
	else if( ch == CH_TX_HSSI_2 || ch == CH_RX_HSSI_2 ){
		if( s == Hz11025 || s == Hz22050 || s == Hz44100 ){
			return	TRUE;
		}
	}

	return	ret;
}


/*****************************************************************************
*   FUNCTION :  	set_aud_index
*   DESCRIPTION :	set aud index
*   INPUTS :		globals - DRIVER_GLOBALS Address
*                   i - Audio NUmber
*   OUTPUTS :     	None
*   DESIGN NOTES :  
*   CAUTIONS :		
*****************************************************************************/
VOID
set_aud_index(
	PDRIVER_GLOBALS	globals,	
	int i
)
{
	int ch;

	ch = globals->aud[i].PLAY_CH;
	if( ch == CH_TX_HSSI_2 ){
		globals->aud_index_hssi2 = i;
	}
	else{
		globals->aud_index_hssi1 = i;
	}
}

/*****************************************************************************
*   FUNCTION :  	I2C_WriteCODEC
*   DESCRIPTION :   set data to cs4226 codec
*   INPUTS :		hCom I2C handle
*                   codec_Map  cs4226 register address
*					codec_Data cs4226 register data
*   OUTPUTS :     	Return TRUE for success, FALSE for failure
*   DESIGN NOTES :
*   CAUTIONS :		
*****************************************************************************/
BOOL I2C_WriteCODEC(
	HANDLE	hCom,
	unsigned char codec_Map,
	unsigned char codec_Data )
{
	DWORD	dwSize = 3;
	DWORD	dwRet;
	unsigned char Buffer[3];

	Buffer[0] = CS4226_WriteADDR;
	Buffer[1] = codec_Map;
	Buffer[2] = codec_Data;
	WriteFile(hCom, (LPVOID)Buffer, dwSize, &dwRet, NULL);
	if ( !dwRet ){
		DEBUGMSG(ZONE_ERROR, (TEXT("I2C_WriteCODEC Error! : <I2C 0x%02x> %02x:%02x (%d)\r\n"), CS4226_WriteADDR, codec_Map, codec_Data, GetLastError()));
		return FALSE;
	}

	return TRUE;
}

/*****************************************************************************
*   FUNCTION :  	I2C_ReadCODEC
*   DESCRIPTION :   get data from cs4226 codec
*   INPUTS :		hCom       I2C handle
*					codec_Map  codec register address
*					bPrint     message on or off
*   OUTPUTS :     	read data
*   DESIGN NOTES :
*   CAUTIONS :		
*****************************************************************************/
BYTE I2C_ReadCODEC(
	HANDLE	hCom,
	unsigned char codec_Map,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色91视频| 亚洲成人黄色小说| 国产精品香蕉一区二区三区| 日韩精品一区二区三区蜜臀| 久久99精品国产.久久久久| 欧美一区二区在线视频| 日韩精品国产欧美| 精品国产一区二区三区av性色| 韩国欧美国产1区| 精品久久99ma| 国产成人aaaa| 亚洲欧洲色图综合| 一本到三区不卡视频| 又紧又大又爽精品一区二区| 欧美日韩一二三区| 图片区小说区国产精品视频| 日韩欧美亚洲国产精品字幕久久久| 青青草97国产精品免费观看| 26uuu久久综合| 9l国产精品久久久久麻豆| 一区二区成人在线| 欧美精品在线一区二区三区| 国产一区二区三区四区五区美女| 欧美激情一区二区三区四区 | 欧美性受xxxx黑人xyx性爽| 亚洲成人免费av| 精品国产免费久久| 91首页免费视频| 日本麻豆一区二区三区视频| 久久久午夜电影| 色94色欧美sute亚洲线路一ni| 日韩电影免费一区| 中文字幕不卡在线观看| 欧美日韩一区二区不卡| 国产精品18久久久久久久久久久久 | 国产精品69久久久久水密桃 | 亚洲精品国产第一综合99久久 | 欧美一个色资源| 成人av午夜电影| 日韩**一区毛片| 中文字幕一区在线观看视频| 91精品国产高清一区二区三区蜜臀| 国产精品18久久久久久久久| 亚洲成人av一区二区三区| 久久精品日产第一区二区三区高清版| 在线欧美小视频| 国产精品一区二区在线播放| 亚洲国产aⅴ天堂久久| 国产欧美日韩激情| 国产欧美日韩精品a在线观看| 欧美日韩亚洲国产综合| 国产91清纯白嫩初高中在线观看| 调教+趴+乳夹+国产+精品| 亚洲视频在线一区二区| 久久久亚洲精华液精华液精华液 | 精品久久久久久久久久久久久久久 | 一本大道久久a久久精品综合| 久久99热这里只有精品| 亚洲地区一二三色| 亚洲男人天堂一区| 国产女主播在线一区二区| 日韩手机在线导航| 欧美精品三级日韩久久| 日本电影欧美片| 成人精品视频一区| 丁香婷婷综合网| 国产美女av一区二区三区| 麻豆91在线播放免费| 香蕉加勒比综合久久| 亚洲高清视频的网址| 亚洲三级在线免费| **欧美大码日韩| 亚洲国产精华液网站w | 制服丝袜日韩国产| 欧美视频你懂的| 色噜噜久久综合| av综合在线播放| 成人激情黄色小说| 99久久99久久精品国产片果冻| 国产成人精品免费网站| 国产精品一区二区三区四区| 国产乱码精品一区二区三区忘忧草| 久久爱另类一区二区小说| 视频一区国产视频| 久久精品国产精品亚洲精品| 久久99久久99| 国产一区三区三区| 国产成人在线免费观看| 国产大陆亚洲精品国产| 国产91露脸合集magnet| av电影天堂一区二区在线| 91丝袜呻吟高潮美腿白嫩在线观看| 国产v综合v亚洲欧| 成人午夜视频网站| 99riav一区二区三区| 色综合天天在线| 欧美亚洲高清一区| 51精品久久久久久久蜜臀| 精品欧美一区二区三区精品久久 | 在线视频你懂得一区| 欧美日韩在线综合| 欧美一级高清片在线观看| 精品国偷自产国产一区| 国产午夜精品理论片a级大结局| 国产精品视频在线看| 亚洲女人小视频在线观看| 亚洲午夜成aⅴ人片| 美女高潮久久久| 国产精品亚洲视频| 在线观看免费亚洲| 日韩欧美中文一区二区| 欧美国产一区视频在线观看| 一区二区成人在线| 久久疯狂做爰流白浆xx| 成人影视亚洲图片在线| 日本丶国产丶欧美色综合| 欧美xxxx在线观看| 亚洲欧美日韩国产综合在线| 日韩电影在线观看电影| 国产大陆亚洲精品国产| 欧美日韩一区二区三区免费看| 精品久久久久久最新网址| 亚洲少妇中出一区| 久久综合综合久久综合| 97精品久久久久中文字幕 | 99精品1区2区| 欧美一三区三区四区免费在线看| 久久欧美一区二区| 亚洲一区二区三区四区中文字幕| 激情亚洲综合在线| 欧美在线影院一区二区| 2024国产精品视频| 美女诱惑一区二区| 97久久超碰国产精品| 精品国产乱码久久| 亚洲一区二区在线免费观看视频 | 欧美日韩免费在线视频| 久久久欧美精品sm网站| 亚洲国产中文字幕| 91丨九色丨黑人外教| 精品国产免费一区二区三区四区 | 91精品欧美久久久久久动漫| 国产精品欧美经典| 韩国欧美国产1区| 欧美美女网站色| 亚洲精品乱码久久久久久| 国产高清精品久久久久| 欧美一区二区在线不卡| 一区二区三区四区蜜桃| 国产suv一区二区三区88区| 精品久久久影院| 蜜臀精品一区二区三区在线观看| 91小视频免费观看| 国产精品丝袜在线| 国产精品一区二区三区99| 欧美成人激情免费网| 午夜欧美大尺度福利影院在线看| 99久久国产综合色|国产精品| 久久精品亚洲国产奇米99| 久久精品国产99| 7777精品伊人久久久大香线蕉的| 亚洲女女做受ⅹxx高潮| 成人免费观看视频| 久久久av毛片精品| 国产精品一区二区三区四区| 精品久久一区二区| 激情五月婷婷综合| 精品剧情在线观看| 狠狠色丁香婷综合久久| 337p亚洲精品色噜噜狠狠| 日韩**一区毛片| 日韩欧美一区二区视频| 久久se精品一区二区| 欧美成人精品高清在线播放| 国产在线一区二区| 精品电影一区二区三区 | 精品国产伦一区二区三区观看体验 | 一区二区三区欧美在线观看| 91在线porny国产在线看| 中文字幕亚洲在| 99精品欧美一区二区蜜桃免费| 成人免费一区二区三区视频| 99精品国产视频| 一区二区成人在线| 欧美日韩精品欧美日韩精品一综合| 亚洲午夜三级在线| 欧美日韩国产另类一区| 日本欧美一区二区三区乱码| 欧美sm美女调教| 国产福利一区二区| 国产精品―色哟哟| 91国产免费看| 日韩成人免费在线| 久久综合资源网| 国产91精品入口| 一区二区三区高清在线| 91精品欧美综合在线观看最新| 国内精品嫩模私拍在线| 国产精品电影一区二区三区| 欧美在线色视频|