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

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

?? hac.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁 / 共 4 頁
字號:
*   FUNCTION :  	private_ChangeSampleRate
*   DESCRIPTION :   Change sampling rate for DAC
*   INPUTS :		None
*   OUTPUTS :     	None
*   DESIGN NOTES :
*   CAUTIONS :		
*****************************************************************************/
BOOL private_ChangeSampleRate(
		ULONG SampleRate
		)
{
	ULONG	Loop_r;

#ifdef	DEBUG
Wait_Status((ULONG)0x0002C000);
DEBUGMSG(ZONE_TEST, (TEXT("CODEC Play Sample rate(before) =%08x [%d]\r\n"),(ULONG)READ_REGISTER_ULONG((PULONG)pHAC_CSDR ))); 
#endif
	if( ulCurrentPlaySamplingRate == (SampleRate << 4) )
		return TRUE;

	Loop_r = 0;

retry_change_samprate:
	Loop_r++;

	if (Write_codec( (ULONG)0x00002000, (ULONG)0x00080000 ) == FALSE)		// Mute Master Volume
		goto error_ret5;

	if (Write_codec( (ULONG)0x0002C000, ((ULONG)SampleRate << 4) ) == FALSE)	// Set Sample rate
		goto error_ret5;

	if (Write_codec( (ULONG)0x00002000, (ULONG)ulMasterVol ) == FALSE)		// Set Master Volume
		goto error_ret5;

	if ( Wait_Status((ULONG)0x0002C000) == FALSE )	goto error_ret5;
	ulCurrentPlaySamplingRate = (ULONG)READ_REGISTER_ULONG((PULONG)pHAC_CSDR );

	DEBUGMSG(ZONE_TEST, (TEXT("CODEC Play Sample rate   =%08x [%d]\r\n"), 
								(ULONG)ulCurrentPlaySamplingRate,
								(ULONG)ulCurrentPlaySamplingRate ));
	DEBUGMSG(ZONE_TEST, (TEXT("Required Play Sample rate=%08x [%d]\r\n"),	((ULONG)SampleRate << 4),
										((ULONG)SampleRate << 4) ));

	return TRUE;

error_ret5:
	if(Loop_r < AC97_RETRTY_MAX) goto retry_change_samprate;
	RETAILMSG(1, (TEXT("AC97: Change Sample Rate Error!\r\n")));
	return	FALSE;
}


/*****************************************************************************
*   FUNCTION :  	private_ChangeRecSampleRate
*   DESCRIPTION :   Change sampling rate for ADC
*   INPUTS :		None
*   OUTPUTS :     	None
*   DESIGN NOTES :
*   CAUTIONS :		
*****************************************************************************/
BOOL private_ChangeRecSampleRate(
		ULONG SampleRate
		)
{
	ULONG	Loop_r;

	if (ulCurrentRecSamplingRate == (SampleRate << 4) )
		return	TRUE;

	Loop_r = 0;

retry_change_recsamprate:
	Loop_r++;

	if (Write_codec( (ULONG)0x00002000, (ULONG)0x00080000 ) == FALSE)		// Mute Master Volume
		goto error_ret6;

	if (Write_codec( (ULONG)0x00032000, ((ULONG)SampleRate << 4) ) == FALSE)	// Set Sample rate
		goto error_ret6;
	if (Write_codec( (ULONG)0x00032000, ((ULONG)SampleRate << 4) ) == FALSE)	// Set Sample rate
		goto error_ret6;
	if (Write_codec( (ULONG)0x00032000, ((ULONG)SampleRate << 4) ) == FALSE)	// Set Sample rate
		goto error_ret6;

	if (Write_codec( (ULONG)0x00002000, (ULONG)ulMasterVol ) == FALSE)		// Set Master Volume
		goto error_ret6;

	if ( Wait_Status((ULONG)0x00032000) == FALSE )
		goto error_ret6;

	ulCurrentRecSamplingRate = (ULONG)READ_REGISTER_ULONG((PULONG)pHAC_CSDR );

	DEBUGMSG(ZONE_TEST, (TEXT("CODEC Rec Sample rate   =%08x [%d]\r\n"), 
								(ULONG)ulCurrentRecSamplingRate,
								(ULONG)ulCurrentRecSamplingRate ));
	DEBUGMSG(ZONE_TEST, (TEXT("Required Rec Sample rate=%08x [%d]\r\n"),	((ULONG)SampleRate << 4),
										((ULONG)SampleRate << 4) ));

	return TRUE;

error_ret6:
	if(Loop_r < AC97_RETRTY_MAX) goto retry_change_recsamprate;
	RETAILMSG(1, (TEXT("AC97: Change Rec Sample Rate Error!\r\n")));
	return	FALSE;
}

/*****************************************************************************
*   FUNCTION :  	AudioFillBuffer_M8
*   DESCRIPTION :	convert sample and fill audio DMA buffer(8bit Mono)
*   INPUTS :		pSrcPtr - wave audio data Address
*                   pDstPtr - Audio Buffer Address
*                   ulSrcSampleCount - Sampling count
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert 8bit mono to packed 16bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioFillBuffer_M8 (
	PBYTE pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    USHORT       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = ((PPCM_SAMPLE)pSrcPtr)->m8.sample;
		ulSample -= 128;
		ulSample <<= 8;
		*pDstPtr++ = ulSample;
        *pDstPtr++ = ulSample;
		pSrcPtr++;
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	AudioFillBuffer_S8
*   DESCRIPTION :	convert sample and fill audio DMA buffer(8bit Stereo)
*   INPUTS :		pSrcPtr - wave audio data Address
*                   pDstPtr - Audio Buffer Address
*                   ulSrcSampleCount - Sampling count
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert 8bit stereo to packed 16bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioFillBuffer_S8 (
	PUSHORT pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    USHORT       ulSample;

    while (ulSrcSampleCount > 0) {
		ulSample = ((PPCM_SAMPLE)pSrcPtr)->s8.sample_right;
		ulSample -= 128;
		*pDstPtr++ = ulSample <<  8;
		ulSample = ((PPCM_SAMPLE)pSrcPtr)->s8.sample_left;
		ulSample -= 128;
		*pDstPtr++ = ulSample <<  8;
		pSrcPtr++;
		ulSrcSampleCount--;
    }


}

/*****************************************************************************
*   FUNCTION :  	AudioFillBuffer_M16
*   DESCRIPTION :	convert sample and fill audio DMA buffer(16bit Mono)
*   INPUTS :		pSrcPtr - wave audio data Address
*                   pDstPtr - Audio Buffer Address
*                   ulSrcSampleCount - Sampling count
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert 16bit mono to packed 16bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioFillBuffer_M16 (
	PUSHORT pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    while (ulSrcSampleCount > 0) {
		*pDstPtr++ = ((PPCM_SAMPLE)pSrcPtr)->m16.sample;
		*pDstPtr++ = ((PPCM_SAMPLE)pSrcPtr)->m16.sample;
		pSrcPtr++;
		ulSrcSampleCount--;
    }
}

/*****************************************************************************
*   FUNCTION :  	AudioFillBuffer_S16
*   DESCRIPTION :	convert sample and fill audio DMA buffer(16bit Stereo)
*   INPUTS :		pSrcPtr - wave audio data Address
*                   pDstPtr - Audio Buffer Address
*                   ulSrcSampleCount - Sampling count
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert 16bit stereo to packed 16bit
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioFillBuffer_S16 (
	PULONG pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    while (ulSrcSampleCount > 0) {
		*pDstPtr++ = ((PPCM_SAMPLE)pSrcPtr)->s16.sample_right;
		*pDstPtr++ = ((PPCM_SAMPLE)pSrcPtr)->s16.sample_left;
		pSrcPtr++;
		ulSrcSampleCount--;
    }
}


/*****************************************************************************
*   FUNCTION :  	private_AudioFillBuffer
*   DESCRIPTION :   fills next buffer from given wave
*					toggles ready/empty pointers to double buffer
*   INPUTS :		wave
*   OUTPUTS :     	None
*   DESIGN NOTES :
*   CAUTIONS :
*****************************************************************************/
VOID
private_AudioFillBuffer (
    PWAVEHDR pwh
    )
{
	ULONG		*lpAudioBuffer;
	LONG nDstLen, nSrcLen;
	ULONG nSampleCount,nSampleUnit;
    volatile DWORD dwDummy; // used to synchronize data fill and DMA

	FUNC_VERBOSE("+PDD_AudioFillBuffer");
 
	//Set terminal condition for double-buffer and exit if no data remains
	if (pwh == NULL) 
	{
		pDriverGlobals->aud[AUDIO_NO].play_address = (ULONG)NULL;
		return;
	}

	//
	// For this line, the number of bytes from this audio stream
	// depends on the dma_buffer_size and the sample rate of the stream
	//
	// What's the maximum number of samples from this stream are needed
	// to fill the DMA buffer?
	//
	lpAudioBuffer = (ULONG *)(pAudioBufferBase  + v_nNextPage * AUDIO_DMA_PAGE_SIZE);

	//
	// For each sample in the buffer...
	//
    nDstLen = AUDIO_DMA_PAGE_SIZE / sizeof(ULONG);
	switch (g_pcmtype[WAPI_OUT])
	{
	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

    while (nDstLen > 0) {
        nSrcLen = pwh->dwBufferLength - pwh->dwBytesRecorded;

		if (nSrcLen <= 0)
		{
			pwh = pwh->lpNext;
            if (pwh == NULL)
				break; // The rest of the buffer will be cleared later.
		}
		else
		{
            nSampleCount = nSrcLen / nSampleUnit;
            if (nDstLen < (LONG)nSampleCount) nSampleCount = nDstLen;
			switch (g_pcmtype[WAPI_OUT])
			{
			case PCM_TYPE_S16:
				AudioFillBuffer_S16((PULONG)(pwh->lpData + pwh->dwBytesRecorded), (PUSHORT)lpAudioBuffer, nSampleCount);
				break;

			case PCM_TYPE_M16:
				AudioFillBuffer_M16((PUSHORT)(pwh->lpData + pwh->dwBytesRecorded), (PUSHORT)lpAudioBuffer, nSampleCount);
				break;

			case PCM_TYPE_S8:
				AudioFillBuffer_S8((PUSHORT)(pwh->lpData + pwh->dwBytesRecorded), (PUSHORT)lpAudioBuffer, nSampleCount);
				break;

			case PCM_TYPE_M8:
				AudioFillBuffer_M8((PBYTE)(pwh->lpData + pwh->dwBytesRecorded), (PUSHORT)lpAudioBuffer, nSampleCount);
				break;

			}  // end switch
			pwh->dwBytesRecorded += nSampleCount * nSampleUnit;

            nDstLen -= nSampleCount;
            lpAudioBuffer += nSampleCount;
		}  // endif
	}

    // pad with silence if necessary
    memset(lpAudioBuffer, 0, nDstLen * sizeof(ULONG));
    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
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert packed 16bit to 8bit mono
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_M8 (
	PUSHORT pSrcPtr,
	PBYTE pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		pSrcPtr++;
		ulSample = READ_REGISTER_USHORT(pSrcPtr++);
		ulSample = (ulSample >> 8) + 128;
		((PPCM_SAMPLE)pDstPtr)->m8.sample = (BYTE)ulSample;
		pDstPtr++;
		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
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert packed 16bit to 8bit stereo
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_S8 (
	PUSHORT pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		// Mic
		if( g_VolumeSettings.dwInputSelect == WPDMX_LINE_MIC ){
			pSrcPtr++;
			ulSample = READ_REGISTER_USHORT(pSrcPtr++);
			ulSample = (ulSample >> 8) + 128;
			((PPCM_SAMPLE)pDstPtr)->s8.sample_left = (BYTE)ulSample;
			((PPCM_SAMPLE)pDstPtr)->s8.sample_right = (BYTE)ulSample;
		}
		// Line In
		else{
			ulSample = READ_REGISTER_USHORT(pSrcPtr++);
			ulSample = (ulSample >> 8) + 128;
			((PPCM_SAMPLE)pDstPtr)->s8.sample_right = (BYTE)ulSample;
			ulSample = READ_REGISTER_USHORT(pSrcPtr++);
			ulSample = (ulSample >> 8) + 128;
			((PPCM_SAMPLE)pDstPtr)->s8.sample_left = (BYTE)ulSample;
		}
		pDstPtr++;
		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
*   OUTPUTS :     	None
*   DESIGN NOTES :  convert packed 16bit to 16bit mono
*   CAUTIONS :		
*****************************************************************************/
VOID
AudioGetBuffer_M16 (
	PUSHORT pSrcPtr,
	PUSHORT pDstPtr,
	ULONG ulSrcSampleCount
    )
{
    ULONG       ulSample;

    while (ulSrcSampleCount > 0) {
		pSrcPtr++;
		ulSample = READ_REGISTER_USHORT(pSrcPtr++);
		((PPCM_SAMPLE)pDstPtr)->m16.sample = (USHORT)ulSample;
		pDstPtr++;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频香蕉人妖| 国产精品久久久爽爽爽麻豆色哟哟| 成+人+亚洲+综合天堂| 国内精品久久久久影院一蜜桃| 日韩vs国产vs欧美| 久久超碰97人人做人人爱| 午夜在线成人av| 蜜臀av性久久久久av蜜臀妖精| 日日夜夜免费精品| 黄色小说综合网站| 东方aⅴ免费观看久久av| 成人国产精品视频| 日本伦理一区二区| 欧美日韩不卡视频| 欧美精品一区二区三区视频| 久久久久久久精| 亚洲精品自拍动漫在线| 一区二区在线观看免费| 日本午夜一本久久久综合| 精品伊人久久久久7777人| 国产福利一区二区三区| 在线视频观看一区| 日韩精品一区二区三区在线播放| 久久久久国产免费免费| 一区二区三区四区在线播放 | 欧美精品一区二区三区很污很色的| 日韩女优制服丝袜电影| 国产精品区一区二区三| 一区二区三区在线观看动漫| 丝袜a∨在线一区二区三区不卡| 日韩精品电影在线观看| 国产91精品露脸国语对白| 欧美视频精品在线观看| 久久影院午夜片一区| 欧美韩日一区二区三区四区| 亚洲一区在线看| 国产一区二区三区av电影| 色偷偷成人一区二区三区91| 精品国产髙清在线看国产毛片| 国产精品久久久久久久久快鸭 | 2023国产一二三区日本精品2022| 中文字幕欧美日本乱码一线二线| 亚洲一区二区视频在线观看| 国产中文一区二区三区| 欧美日韩久久一区二区| 国产精品久久久久三级| 激情五月播播久久久精品| 色综合久久久久综合| 久久久国产一区二区三区四区小说 | 欧美色网一区二区| 国产欧美va欧美不卡在线| 日韩精品欧美精品| 91在线视频免费观看| 久久伊人蜜桃av一区二区| 天堂成人免费av电影一区| 色天使色偷偷av一区二区| 国产亚洲欧美在线| 久久疯狂做爰流白浆xx| 欧美久久婷婷综合色| 亚洲一区二区三区不卡国产欧美| 成人免费av网站| 国产亚洲一二三区| 精品无人码麻豆乱码1区2区| 欧美日韩国产精品成人| 一区二区欧美国产| 色婷婷精品大在线视频 | 91麻豆高清视频| 国产精品久久久久四虎| 懂色av一区二区三区免费观看| 欧美日韩激情在线| 亚洲成av人影院| 欧美日韩精品是欧美日韩精品| 国产精品黄色在线观看| 99久久精品国产观看| 亚洲女与黑人做爰| 欧美最新大片在线看| 亚洲黄色录像片| 欧美午夜精品一区二区三区| 亚洲美女视频在线观看| 在线免费观看一区| 亚洲综合一二三区| 91麻豆精品国产91久久久| 蜜臀99久久精品久久久久久软件| 正在播放一区二区| 激情久久五月天| 国产亚洲精品aa| 97久久超碰国产精品| 亚洲高清不卡在线| 69堂成人精品免费视频| 国产中文一区二区三区| 中文字幕一区二区三区视频| 不卡一区中文字幕| 亚洲欧美日韩中文播放| 在线综合视频播放| 国产精品综合二区| 亚洲色图在线播放| 欧美久久久久久蜜桃| 国产自产2019最新不卡| 亚洲视频一区二区免费在线观看| 欧美日韩在线播放一区| 国产一区二区三区在线观看免费| 久久久久97国产精华液好用吗| 白白色亚洲国产精品| 午夜精品久久久久影视| 久久亚洲精品国产精品紫薇| av成人免费在线| 日韩黄色免费网站| 国产精品美女一区二区在线观看| 色香色香欲天天天影视综合网| 日本一区中文字幕| 国产精品久线观看视频| 91精品视频网| 成a人片国产精品| 久久福利资源站| 亚洲一卡二卡三卡四卡无卡久久| 欧美人xxxx| 91亚洲国产成人精品一区二区三| 日本在线不卡一区| 一级中文字幕一区二区| 久久色中文字幕| 欧美伦理电影网| 99视频超级精品| 国产一区日韩二区欧美三区| 玉足女爽爽91| 中文字幕制服丝袜成人av| 欧美一区二区视频网站| 色94色欧美sute亚洲线路一ni| 久久99国产精品久久99果冻传媒| 亚洲精品高清在线观看| 欧美激情一区三区| www国产成人| 欧美人妇做爰xxxⅹ性高电影| 91啪亚洲精品| 九九视频精品免费| 青青青爽久久午夜综合久久午夜 | 91高清视频免费看| aaa欧美日韩| 成人亚洲一区二区一| 国内精品免费**视频| 麻豆极品一区二区三区| 天天综合色天天综合| 亚洲综合色噜噜狠狠| 亚洲精品视频观看| 亚洲人成网站精品片在线观看| 国产三级三级三级精品8ⅰ区| 欧美大片日本大片免费观看| 欧美日韩综合不卡| 制服丝袜亚洲精品中文字幕| 亚洲精品一区二区三区四区高清| 欧美日韩国产另类一区| 欧美日韩精品一区二区三区| 在线观看91视频| 欧美在线观看一区| 91捆绑美女网站| 在线看国产一区二区| 欧美综合视频在线观看| 欧美日韩精品免费| 日韩欧美一二三| 日韩欧美一级精品久久| 欧美一区二区三区在线观看| 91精品国产全国免费观看| 欧美精品在线一区二区三区| 91精品国产免费| 精品久久国产老人久久综合| 国产亚洲精品7777| 亚洲天天做日日做天天谢日日欢 | 亚洲第一电影网| 日本中文字幕一区二区视频| 亚洲一区二区黄色| 亚洲成人一区二区| 麻豆久久久久久久| 国产91露脸合集magnet | 成人免费看黄yyy456| 91在线你懂得| 91精品福利在线一区二区三区| 日韩免费高清视频| 久久精品欧美一区二区三区麻豆| 日本一区二区三区免费乱视频| 国产精品电影一区二区三区| 亚洲精品成人精品456| 香蕉成人啪国产精品视频综合网 | 亚洲私人影院在线观看| 亚洲午夜三级在线| 国产精品综合在线视频| 日本乱人伦aⅴ精品| 精品伦理精品一区| 综合在线观看色| 看片的网站亚洲| 99久久99久久综合| 日韩免费电影一区| 中文字幕制服丝袜成人av| 日本sm残虐另类| 91最新地址在线播放| 日韩午夜av一区| 一区二区三区日韩| 极品销魂美女一区二区三区| 欧美色图12p| 亚洲欧洲日韩一区二区三区| 欧美aa在线视频| 欧美色综合影院|