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

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

?? sound.cpp

?? 瑞星微公司RK27XX系列芯片的SDK開發(fā)包
?? CPP
字號:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File		:	ide\rk27dll\src\lib\sound\sound.cpp
Desc	 	:	PC音頻接口.


Author	   	:   huangsl
Date	 	:	080626
Notes	  	:   用于 PC仿真模擬 音頻播放.
				為了支持 C++,該文件直接通過 PCCORE.CPP包含編譯.
$Log	 :
sound.cpp,v $
Revision 1.2  2007/10/08 02:06:22  Lingzhaojun
添加CVS版本自動注釋

*	080626	huangsl 	增加 PC仿真的音頻支持.
*/
/***************************************************************************/
/***************************************************************************/

#include "mmsystem.h"

#include "..\application\audio\include\audio_Globals.h"
/***************************************************************************/
// Our supported sample rates
// Note that sndRate5K is really 5512.5khz
// Use defines instead of an enum since these must be 32 bits on all platforms
#define sndRate5K	5512L
#define sndRate11K	11025L
#define sndRate22K	22050L
#define sndRate44K	44100L

const int sndMono			= 0x0;
const int sndStereo 		= 0x1;

const int snd8Bit			= 0x0;
const int snd16Bit			= 0x2;

const int snd5K 			= 0<<2;
const int snd11K			= 1<<2;
const int snd22K			= 2<<2;
const int snd44K			= 3<<2;

const int sndCompressNone	= 0x00; // we could add 14 more compression types here...
const int sndCompressADPCM	= 0x10;
const int sndCompressMP3	= 0x20;
const int sndCompressNoneI	= 0x30; // save out in intel byte order
const int sndRateMask		= 0x3 << 2;
const int sndCompressMask	= 0xF0;

typedef int (*DMACallBack)(void);	   /*DMA 回調(diào)函數(shù)*/
#define MIN(a,b) ((a)>(b)?(b):(a))

/***************************************************************************/
HWAVEOUT 			hWaveOut;
signed long			gPCWaveDevFormat;
WAVEHDR 			gPCWaveHDR[AUDIO_OUT_BUF_NUM];
int 				gPCWaveHDRIndex;

DMACallBack			gPCWaveOutCallBack;

void CALLBACK PCSoundCallback(HWAVEOUT hwo, UINT uMsg, 
	unsigned long dwInstance, unsigned long dwParam1, unsigned long dwParam2 )
{
	if ( uMsg == WOM_DONE )
		{
	//	WAVEHDR* hdr = (WAVEHDR*)dwParam1;
	//	int res = waveOutUnprepareHeader(hWaveOut, hdr, sizeof(WAVEHDR));
	//	ASSERT(res == MMSYSERR_NOERROR);
		
		gPCWaveOutCallBack();
		}
}


/***************************************************************************/

void PCSoundGetCap( signed long* format )
{
	// Check to capabilities of the waveform device
	WAVEOUTCAPS caps;
	waveOutGetDevCaps(WAVE_MAPPER, &caps, sizeof(caps));

	// the desired format
	*format = sndStereo | snd16Bit | snd22K;

	// Check for sample rate support
	if ( (caps.dwFormats & WAVE_FORMAT_4M16) == 0 ) {
		*format = (*format & ~sndRateMask) | MIN(*format & sndRateMask, snd22K);
	}

	if ( (caps.dwFormats & WAVE_FORMAT_2M16) == 0 ) {
		*format = (*format & ~sndRateMask) | MIN(*format & sndRateMask, snd11K);
	}

	// Check to turn off stereo support
	if ( (caps.dwFormats & WAVE_FORMAT_2S16) == 0 )
		*format &= ~sndStereo;

	// Check to turn off 16 bit sound
	if ( (caps.dwFormats & WAVE_FORMAT_2M16) == 0 )
		*format &= ~snd16Bit;
}

BOOLEAN PCSoundOpenDevice( DWORD SamplesPerSec,
	WORD Channels, WORD BitsPerSample , DMACallBack	callBack )
{
	
	// Open a waveform device for output
	WAVEFORMATEX pcmWaveFormat;
	
	pcmWaveFormat.wFormatTag		= WAVE_FORMAT_PCM;
	pcmWaveFormat.nSamplesPerSec	= SamplesPerSec;
	pcmWaveFormat.nChannels			= Channels;
	pcmWaveFormat.wBitsPerSample	= BitsPerSample;
	pcmWaveFormat.nBlockAlign		= (WORD)( ( SamplesPerSec * Channels ) / 8 );
	pcmWaveFormat.nAvgBytesPerSec	= pcmWaveFormat.nBlockAlign * pcmWaveFormat.nSamplesPerSec;
	
	if ( waveOutOpen(	&hWaveOut, 
						WAVE_MAPPER, 
						&pcmWaveFormat, 	
						(unsigned long)PCSoundCallback, 
						(unsigned long)0, 
						CALLBACK_FUNCTION) == MMSYSERR_NOERROR )
	{
		gPCWaveOutCallBack = callBack;
		gPCWaveHDRIndex = 0;
		return true;
	}
	return false;
}

void PCSoundCloseDevice()
{
	
	HWAVEOUT hW = hWaveOut;
	hWaveOut = 0;	// flag that we are shutting down so PollSound will bail
	
	int res = waveOutReset(hW);
	ASSERT(res == MMSYSERR_NOERROR);

	for( int i = 0 ; i < AUDIO_OUT_BUF_NUM ; i++ )
	{
		//等待播放完成.
		int limit = 50;
		while ( limit-- ) 
		{
			int res = waveOutUnprepareHeader(hW, gPCWaveHDR , sizeof(WAVEHDR));
			if ( res != WAVERR_STILLPLAYING ) 
			{
				ASSERT(res == MMSYSERR_NOERROR);
				break;
			}
		}
	}
	
	res = waveOutClose(hW);
	ASSERT(res == MMSYSERR_NOERROR);
	
}


void PCSoundPlayWave( void *waveOutBuffer , long bufferLen ,
	DMACallBack	callBack )
{
	WAVEHDR* hdr = &gPCWaveHDR[gPCWaveHDRIndex];

	gPCWaveOutCallBack = callBack;

	gPCWaveHDRIndex++;
	if( gPCWaveHDRIndex == AUDIO_OUT_BUF_NUM )
		gPCWaveHDRIndex = 0;
	
	// Clean up the header
	int res = waveOutUnprepareHeader(hWaveOut, hdr, sizeof(WAVEHDR));
	ASSERT(res == MMSYSERR_NOERROR);
	
	hdr->lpData = (char*)waveOutBuffer;
	hdr->dwBufferLength = bufferLen;
	
	res = waveOutPrepareHeader(hWaveOut, hdr, sizeof(WAVEHDR));
	ASSERT(res == MMSYSERR_NOERROR);
	res = waveOutWrite(hWaveOut, hdr, sizeof(WAVEHDR)); 
	ASSERT(res == MMSYSERR_NOERROR);

	
}

void PCSoundSetVolume( int volume )
{
	DWORD 	v;

	//change from 0 -- MAX_VOLUME to 0x00 -- 0xff
	volume = volume*0xff/MAX_VOLUME;
	v = ( ((DWORD)volume)<<16)|volume;
	int res = waveOutSetVolume(hWaveOut,v);
	ASSERT(res == MMSYSERR_NOERROR);
	
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜亚洲天天久久| 欧美xxxxxxxx| 亚洲精品伦理在线| 色综合久久综合网97色综合 | 91精品欧美一区二区三区综合在 | 国产精品美女久久久久aⅴ| 成人午夜视频福利| 亚洲私人黄色宅男| 欧美喷潮久久久xxxxx| 免费在线一区观看| 久久久精品免费网站| 97国产精品videossex| 亚洲一区二区三区激情| 日韩视频在线一区二区| 国产乱码精品一区二区三区av| 国产精品欧美一区二区三区| 日本福利一区二区| 玖玖九九国产精品| 中文字幕免费观看一区| 欧美亚洲动漫另类| 极品少妇xxxx精品少妇偷拍| 亚洲同性gay激情无套| 欧美吞精做爰啪啪高潮| 精品亚洲成a人在线观看| 亚洲人成影院在线观看| 91精品婷婷国产综合久久性色| 国产一区二区三区四区五区美女 | 亚洲午夜影视影院在线观看| 欧美一区二区三区系列电影| 成人中文字幕合集| 日韩黄色免费电影| 国产精品毛片a∨一区二区三区| 欧美日免费三级在线| 国产一区二区在线观看免费| 一级中文字幕一区二区| 精品国产乱码久久| 91久久精品午夜一区二区| 蜜桃一区二区三区四区| 亚洲人123区| 337p粉嫩大胆噜噜噜噜噜91av| 一本久久综合亚洲鲁鲁五月天 | 欧美综合一区二区三区| 国产精品一线二线三线| 亚洲国产精品久久不卡毛片| 国产欧美精品在线观看| 欧美一区二区三区在| 色视频一区二区| 成人综合激情网| 久久99热这里只有精品| 亚洲成a人v欧美综合天堂| 国产精品人成在线观看免费| 欧美成人在线直播| 欧美日韩国产精选| 色天使色偷偷av一区二区| 大陆成人av片| 国产激情一区二区三区四区| 美国十次了思思久久精品导航| 亚洲精品国产a| 中文字幕一区在线观看视频| 国产偷国产偷精品高清尤物| 欧美成人精品二区三区99精品| 欧美久久久久久久久中文字幕| 91网站在线播放| 97久久超碰精品国产| 高清日韩电视剧大全免费| 久久精品国产秦先生| 日韩国产一区二| 亚洲超碰精品一区二区| 亚洲自拍偷拍欧美| 夜色激情一区二区| 亚洲一区二区偷拍精品| 亚洲精品福利视频网站| 亚洲男人的天堂av| 亚洲男女一区二区三区| 亚洲欧美日韩小说| 亚洲美女少妇撒尿| 亚洲激情av在线| 亚洲一二三四在线观看| 亚洲免费观看高清| 亚洲激情五月婷婷| 亚洲一区二区视频在线观看| 一区二区三区四区视频精品免费 | 亚洲精品在线网站| 日韩午夜在线影院| 欧美mv日韩mv| 久久久九九九九| 中国色在线观看另类| 国产精品福利影院| 亚洲女同ⅹxx女同tv| 亚洲永久免费av| 午夜视频在线观看一区| 秋霞成人午夜伦在线观看| 久久精品国产亚洲一区二区三区| 理论电影国产精品| 高清国产午夜精品久久久久久| 成人在线视频首页| 91国产福利在线| 91精品国产欧美一区二区| 欧美成人免费网站| 国产精品国产三级国产三级人妇 | 一本色道亚洲精品aⅴ| 欧美视频一区二| 精品欧美乱码久久久久久 | 国产精品国产三级国产专播品爱网 | 国产美女在线精品| 91在线观看高清| 欧美日本一区二区三区四区| 欧美成人一区二区三区| 亚洲欧洲日韩综合一区二区| 亚洲国产成人tv| 国产剧情一区二区| 色香色香欲天天天影视综合网| 91麻豆精品久久久久蜜臀| 久久综合色之久久综合| 亚洲精品国产a久久久久久 | 亚洲一区二区三区四区在线观看| 免费在线欧美视频| 91在线视频18| 日韩欧美电影一区| 国产精品久久久久久久久免费桃花 | 亚洲国产电影在线观看| 一区二区在线观看免费| 久草这里只有精品视频| 99re热这里只有精品免费视频| 91精品国产91久久综合桃花| 日本一区二区三区高清不卡| 亚洲妇熟xx妇色黄| 国产成人在线网站| 欧美日韩成人激情| 综合中文字幕亚洲| 久久国产精品99久久久久久老狼| 91在线观看地址| 久久久久久久久久久久久夜| 一区二区三区中文字幕在线观看| 国产在线不卡一区| 欧美日韩国产经典色站一区二区三区| 欧美精彩视频一区二区三区| 免费在线观看不卡| 色婷婷久久久亚洲一区二区三区| 久久久精品天堂| 日本不卡视频一二三区| 色视频成人在线观看免| 国产欧美综合在线观看第十页 | 麻豆国产精品777777在线| 99久久婷婷国产综合精品| 精品欧美一区二区在线观看| 亚洲综合在线免费观看| 波多野结衣精品在线| 精品999久久久| 日韩电影一二三区| 日本精品一级二级| 国产精品美女久久久久久2018| 精品一区二区三区在线观看| 在线不卡一区二区| 亚洲一区二区三区不卡国产欧美| 97aⅴ精品视频一二三区| 国产人久久人人人人爽| 国产麻豆精品久久一二三| 日韩一区二区三区视频在线 | 日韩欧美中文一区| 午夜精品一区在线观看| 欧美色倩网站大全免费| 夜夜嗨av一区二区三区网页| 色婷婷精品大在线视频| 亚洲裸体xxx| 日本道精品一区二区三区 | 精品国产99国产精品| 美女脱光内衣内裤视频久久影院| 91精品国产aⅴ一区二区| 视频一区欧美精品| 欧美一区二区久久| 美女尤物国产一区| 精品国产sm最大网站| 国内国产精品久久| 久久嫩草精品久久久久| 国产一区二区导航在线播放| 国产欧美一区二区三区在线老狼| 国产精品一区二区三区99| 国产日韩欧美高清在线| 丁香婷婷综合激情五月色| 国产精品成人免费| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲综合激情网| 欧美一区午夜视频在线观看| 久久成人精品无人区| 国产欧美综合色| 色妞www精品视频| 日韩在线观看一区二区| 欧美成人aa大片| 成人午夜激情片| 一区二区三区四区亚洲| 91精品在线麻豆| 国产一区二区剧情av在线| 国产精品久久久久久久第一福利 | 国产偷国产偷亚洲高清人白洁| 国产福利精品一区二区| 亚洲男同性恋视频| 欧美一级久久久久久久大片| 国产乱淫av一区二区三区 | 欧美日本免费一区二区三区|