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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? main.cpp

?? EM8511s中使用的mp3播放器
?? CPP
字號(hào):
// sample mp3 player to demonstrate the usage of the [software] mp3 // decoder.// you can use this code as a base when implementing your own audio// software decoder - this samples sends PCM to the mpeg engine#include <stdio.h>#include <stdlib.h>#include <sys/time.h>#include "mpegdec/mpegdec.h"#include "mpegdec/em85xx.h"#include "mp3/mp3.h"#include "dac/dac.h"#include "mpegdec/myfont.c"#if 0static void debug_break (void){}#define ASSERT(exp)					((void)((exp)?1:(printf ("***ASSERT failed: line %d, file %s\n", __LINE__,__FILE__), debug_break(), 0)))#define DEBUGMSG(cond,printf_exp)	((void)((cond)?(printf printf_exp),1:0))#else#define ASSERT(exp)#define DEBUGMSG(cond,printf_exp)#endif//////////////////////////////////////////////////////////////////////// global datastatic MP3Decoder *pMP3Decoder;static RMuint32 databuffers[1024*1024/4];static BufferPool BPmp3;static BufferPool BPpcm;static RMuint32 *mp3_buffer = (databuffers);static RMuint32 *pcm_buffer = (databuffers+(1024*1024/8));static MpegDecoder *pMpegDecoder;static RMuint32 NumberOfBitsPerSample = 0;static RMuint32 NumberOfChannels = 0;static RMuint32 SamplesPerSecond = 0;static RMuint32 BytesPerSecond = 0;static RMuint32 prebuffering = 0;// end global data////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// file system callbacks required by the mp3 decoderstatic RMuint32 fs_fopen (RMint8 *filename, void *context){	return (RMuint32)fopen (filename, "rb");}static RMuint32 fs_fread (RMuint32 handle, void *buf, RMuint32 length, void *context){	return fread (buf, 1, length, (FILE *)handle);}static RMuint32 fs_fseek (RMuint32 handle, RMuint32 pos, RMuint32 whence, void *context){	return (RMuint32)fseek ((FILE *)handle, pos, whence);}static RMuint32 fs_ftell (RMuint32 handle, void *context){	return (RMuint32)ftell ((FILE *)handle);}static RMuint32 fs_feof (RMuint32 handle, void *context){	return (RMuint32)feof ((FILE *)handle);}static RMuint32 fs_fclose (RMuint32 handle, void *context){	return (RMuint32)fclose ((FILE *)handle);}// end file system callbacks required by mp3 decoder//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// callbacks required by the mp3 decoderRMuint32 my_addref (RMuint8 *pBuffer, void *context){	BufferPool *BP;	if ((RMuint32)pBuffer < (RMuint32)pcm_buffer)		BP = &BPmp3;	else		BP = &BPpcm;	RMint32 idx = ((RMint32)pBuffer - (RMint32)BP->start_address) / BP->buffers_size;	ASSERT (idx >= 0);	addref_buffer (&(BP->B[idx]));	return 0;}RMuint32 my_release (RMuint8 *pBuffer, void *context){	BufferPool *BP;	if ((RMuint32)pBuffer < (RMuint32)pcm_buffer)		BP = &BPmp3;	else		BP = &BPpcm;	RMint32 idx = ((RMint32)pBuffer - (RMint32)BP->start_address) / BP->buffers_size;	ASSERT (idx >= 0);	release_buffer (&(BP->B[idx]));	return 0;}// mp3 callback - the mp3 decoder is informing teh application of // some useful mp3 informationstatic RMuint32 mp3_info (RMint32 msg, void *info, void *context){	DEBUGMSG (0, ("mp3_info:\n"));	if (msg == MP3_MSG_MP3_DECODE_INFO)	{		MP3_DECODE_INFO *pInfo = (MP3_DECODE_INFO *)info;		if ((pInfo->NumberOfBitsPerSample != NumberOfBitsPerSample) ||			(pInfo->NumberOfChannels != NumberOfChannels) ||			(pInfo->SamplesPerSecond != SamplesPerSecond))		{			PCM_PARAMETERS pcmparams;			pcmparams.NumberOfBitsPerSample = pInfo->NumberOfBitsPerSample;			pcmparams.NumberOfChannels = pInfo->NumberOfChannels;			pcmparams.SamplesPerSecond = pInfo->SamplesPerSecond;			DEBUGMSG (1, ("PCM update:\n"));			DEBUGMSG (1, (" NumberOfBitsPerSample: %lu\n", pcmparams.NumberOfBitsPerSample));			DEBUGMSG (1, (" NumberOfChannels:      %lu\n", pcmparams.NumberOfChannels));			DEBUGMSG (1, (" SamplesPerSecond:      %lu\n", pcmparams.SamplesPerSecond));			pMpegDecoder->SetPCMParameters (&pcmparams);			NumberOfBitsPerSample = pInfo->NumberOfBitsPerSample;			NumberOfChannels = pInfo->NumberOfChannels;			SamplesPerSecond = pInfo->SamplesPerSecond;			BytesPerSecond = (NumberOfBitsPerSample / 8) * NumberOfChannels * SamplesPerSecond;			if (prebuffering)				pMpegDecoder->Pause ();			}	}	return 0;}// mp3 callback - the mp3 decoding object is requesting// the application render some pcm samplesstatic RMuint32 mp3_putPCM (RMuint8 *pBuffer, RMuint32 length, void *context){	BufferPool *BP;	BP = &BPpcm;	ASSERT ((RMuint32)pBuffer >= (RMuint32)pcm_buffer);	ASSERT ((RMuint32)pBuffer >= (RMuint32)BP->start_address);	RMint32 idx = ((RMuint32)pBuffer - (RMuint32)BP->start_address) / BP->buffers_size;	addref_buffer (&(BP->B[idx]));	DEBUGMSG (1, ("mp3_putPCM (%d)\n", idx));	DEBUGMSG (1, ("mp3_putPCM: address = 0x%08lx, length = %d, idx = %d\n", 		(RMuint32)pBuffer, (RMint32)length, idx));	// no need to send a timestamp when dealing with only PCM samples	if (pMpegDecoder->WritePCM (pBuffer, length, &(BP->B[idx]), 0, 0, 0) == MPEG_DECODER_ERROR_NO_ERROR)	{		ASSERT (BytesPerSecond);		return 0;	}	if (prebuffering)	{		prebuffering = 0;		pMpegDecoder->Play ();	}	release_buffer (&(BP->B[idx]));	return 1;}// mp3 callback - the mp3 decoding object is requesting// the application to provide a buffer to place the decoded// pcm samples intostatic RMuint32 mp3_getPCM (RMuint8 **pBuffer, RMuint32 *plength, void *context){	DEBUGMSG (0, ("mp3wma_getPCM\n"));	int idx = find_free_buffer (&BPpcm, 0);	if (idx < 0)	{		if (prebuffering)		{			prebuffering = 0;			pMpegDecoder->Play ();		}		return 1;	}	DEBUGMSG (1, ("mp3_getPCM (%d)\n", idx));	*plength = (RMuint32)BPpcm.buffers_size;	*pBuffer = (RMuint8 *)get_buffer_address (&BPpcm, idx);	ASSERT ((RMuint32)*pBuffer >= (RMuint32)pcm_buffer);	return 0;}// mp3 decode callback - the mp3 decoding object is requesting the// application to provide a buffer to read mp3 data intostatic RMuint32 mp3_getMP3 (RMuint8 **pBuffer, RMuint32 *plength, void *context){	DEBUGMSG (1, ("mp3_getMP3\n"));	int idx = find_free_buffer (&BPmp3, 0);	if (idx < 0)	{		if (prebuffering)		{			prebuffering = 0;			pMpegDecoder->Play ();		}		return 1;	}	*plength = (RMuint32)BPmp3.buffers_size;	*pBuffer = (RMuint8 *)get_buffer_address (&BPmp3, idx);	return 0;}// end decoding callbacks required by mp3 decoder//////////////////////////////////////////////////////////////////////static int gettime (){	struct timeval tv1, tv2;	struct timezone tz;	gettimeofday (&tv1, &tz);	return (tv1.tv_sec * 1000 + tv1.tv_usec/1000);}// entry pointint main (int argc, char *argv[]){	int seconds = 0, t0;	if (argc < 2)	{		printf ("usage: mp3play.bin <filename> <seek to seconds>\n");		return -1;	}	if (argc > 2)	{		seconds = atoi (argv[2]);		printf ("seek to %d seconds after 5 seconds of playback\n", seconds);	}	// create an instance of the mpeg decoder	pMpegDecoder = (MpegDecoder *) new MpegDecoder;	ASSERT (pMpegDecoder);	pMpegDecoder->Init ();	// ntsc	pMpegDecoder->SetupDisplay (1);	// create an instance of the mp3 decoder	pMP3Decoder = (MP3Decoder *) new MP3Decoder;	MP3_CALLBACK_TABLE callback_table;	callback_table.context = &BPmp3;		// saved context information for application	callback_table.fopen = fs_fopen;		// fopen for file decoding	callback_table.fseek = fs_fseek;		// fseek for file decoding	callback_table.ftell = fs_ftell;		// tell for file decoding	callback_table.fread = fs_fread;		// fread for file decoding	callback_table.fclose = fs_fclose;		// fclose for file decoding	callback_table.addref = my_addref;		// addref a buffer	callback_table.release = my_release;	// release a buffer	callback_table.info = mp3_info;			// inform app of some mp3 information	callback_table.putPCM = mp3_putPCM;		// output PCM bytes	callback_table.getPCM = mp3_getPCM;		// get a buffer for PCM data	callback_table.getMP3 = mp3_getMP3;		// get a buffer for reading MP3 data	init_buffer_pool (&BPmp3, mp3_buffer, 256*1024, 2);	init_buffer_pool (&BPpcm, pcm_buffer, 1152*4, 64);	pMP3Decoder->Init ();	pMP3Decoder->InitCallbackTable (&callback_table);	prebuffering = 1;	if (pMP3Decoder->DecodeFile (argv[1]) != MP3_DECODER_ERROR_NO_ERROR)	{		DEBUGMSG (1, ("pMP3Decoder->DecodeFile (%s) failed\n", argv[1]));		delete pMP3Decoder;		pMP3Decoder = 0;		deinit_buffer_pool (&BPmp3);		deinit_buffer_pool (&BPpcm);		return -1;	}		// initialize the dac	dac_init ();	t0 = gettime ();	// play the stream	while (1)	{		if (pMP3Decoder->Schedule () == MP3_DECODER_ERROR_FILE_DONE)		{			if (prebuffering)			{				prebuffering = 0;				pMpegDecoder->Play ();			}			if (pMpegDecoder->EndOfStream (-1, 0) == MPEG_DECODER_ERROR_EOF)			{				sleep (1);				delete pMP3Decoder;				pMP3Decoder = 0;				deinit_buffer_pool (&BPmp3);				deinit_buffer_pool (&BPpcm);				pMpegDecoder->Stop ();				break;			}		}		if (seconds && ((gettime () - t0) > 5000))		{			printf ("seeking to %d seconds\n");			if (pMP3Decoder->Seek (seconds) == 0)			{				prebuffering = 1;				pMpegDecoder->Stop ();				pMpegDecoder->Pause ();			}			seconds = 0;		}	}	delete pMpegDecoder;	return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区二区三区| 亚洲亚洲人成综合网络| 欧美中文字幕亚洲一区二区va在线| 香蕉加勒比综合久久| 久久久亚洲高清| 欧美日韩另类国产亚洲欧美一级| 国产精品自在在线| 一区二区三区丝袜| 国产日韩欧美精品一区| 欧美日韩卡一卡二| 成人av小说网| 韩国成人福利片在线播放| 亚洲伊人色欲综合网| 国产精品午夜在线观看| 日韩精品在线看片z| 欧美在线免费观看视频| 成人av在线资源网站| 久久99国产精品免费| 亚洲电影视频在线| 综合婷婷亚洲小说| 久久久久国产精品人| 欧美成人三级电影在线| 欧美日韩美少妇| 在线日韩国产精品| av电影在线观看不卡 | 视频在线观看一区二区三区| 中文字幕欧美三区| 久久久久久夜精品精品免费| 日韩欧美一区二区三区在线| 欧美视频你懂的| 91久久精品一区二区二区| 成人免费观看视频| 成人午夜电影网站| 成人av综合在线| 国产成a人亚洲精| 国产成人精品影视| 国产成人免费视频网站高清观看视频 | 久久久久久97三级| 久久这里只精品最新地址| 日韩视频在线永久播放| 日韩午夜中文字幕| 欧美videos中文字幕| 精品国产91亚洲一区二区三区婷婷| 91麻豆精品国产无毒不卡在线观看 | 亚洲一区二区四区蜜桃| 一区二区成人在线视频| 亚洲精品免费电影| 亚洲第一精品在线| 五月婷婷激情综合网| 日韩高清在线不卡| 美女精品自拍一二三四| 国内精品写真在线观看| 国产寡妇亲子伦一区二区| 成人黄色777网| 日本伦理一区二区| 欧美日韩在线播放三区四区| 欧美日本在线观看| 欧美一区二区视频网站| 久久综合av免费| 欧美国产日韩在线观看| 亚洲激情在线激情| 亚洲一区二区在线免费看| 亚洲国产cao| 麻豆精品一区二区| 国产成人自拍高清视频在线免费播放 | 久久成人精品无人区| 国产激情精品久久久第一区二区| 97精品视频在线观看自产线路二| 在线免费视频一区二区| 欧美精品18+| 国产日韩欧美亚洲| 亚洲一卡二卡三卡四卡| 日韩中文字幕一区二区三区| 国产又粗又猛又爽又黄91精品| 成人三级伦理片| 在线不卡中文字幕| 久久精品一区二区三区不卡牛牛| 亚洲精品国产无套在线观| 亚洲成人动漫一区| 国产盗摄一区二区三区| 色中色一区二区| 日韩欧美一级二级| 亚洲视频 欧洲视频| 午夜av区久久| thepron国产精品| 制服.丝袜.亚洲.中文.综合 | 性感美女极品91精品| 国产一区二区三区最好精华液| 91免费观看在线| 精品精品国产高清一毛片一天堂| 亚洲视频一区二区在线| 久久精品国产一区二区三| 97久久精品人人澡人人爽| 精品日韩一区二区三区| 一区二区三区精密机械公司| 久久99久久久欧美国产| 在线亚洲人成电影网站色www| 26uuu亚洲| 亚洲电影欧美电影有声小说| 成人黄色一级视频| 久久一留热品黄| 午夜精品久久久久影视| 99视频一区二区| 久久亚洲精华国产精华液| 亚洲电影第三页| 91偷拍与自偷拍精品| 精品成人私密视频| 日韩av在线免费观看不卡| 日本久久一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 午夜精品视频一区| 色天使色偷偷av一区二区| 中文字幕欧美区| 国产精品88av| 日韩欧美国产1| 日本色综合中文字幕| 欧美亚洲图片小说| 亚洲精品大片www| 波多野结衣精品在线| 欧美激情在线一区二区三区| 狠狠色丁香婷婷综合| 日韩一级黄色大片| 五月激情综合色| 欧美日韩免费观看一区三区| 亚洲一本大道在线| 日本二三区不卡| 亚洲综合在线电影| 91农村精品一区二区在线| 综合分类小说区另类春色亚洲小说欧美| 国产尤物一区二区在线| 久久免费午夜影院| 国产一级精品在线| 精品国产sm最大网站| 韩国av一区二区三区在线观看| 日韩午夜中文字幕| 久久99精品久久久| 精品国产不卡一区二区三区| 国产一区二区福利视频| 精品第一国产综合精品aⅴ| 久久99精品国产.久久久久 | 一区二区三区中文在线观看| 91麻豆视频网站| 一级日本不卡的影视| 欧美亚州韩日在线看免费版国语版| 一区二区三区鲁丝不卡| 欧美视频一区二区三区四区| 亚洲成人精品一区| 欧美一区二区在线看| 麻豆精品国产91久久久久久| 精品女同一区二区| 国产91精品精华液一区二区三区| 中文字幕精品在线不卡| 一本一道久久a久久精品| 一区二区三区成人在线视频 | 中文字幕一区日韩精品欧美| av资源网一区| 亚洲影院免费观看| 日韩一区二区免费电影| 国产麻豆精品在线| 中文字幕日韩av资源站| 91电影在线观看| 蜜臀av性久久久久蜜臀aⅴ| 久久久精品中文字幕麻豆发布| 波多野结衣中文一区| 亚洲精品高清在线观看| 日韩免费电影一区| 顶级嫩模精品视频在线看| 亚洲激情第一区| 日韩一区二区三区在线| 国产+成+人+亚洲欧洲自线| 艳妇臀荡乳欲伦亚洲一区| 91精品国产91热久久久做人人| 国产麻豆日韩欧美久久| 亚洲欧美日韩综合aⅴ视频| 91精品国产综合久久福利软件 | 久久久精品tv| 91社区在线播放| 日韩综合小视频| 欧美高清在线视频| 欧美日韩视频在线观看一区二区三区| 九九**精品视频免费播放| 亚洲婷婷综合色高清在线| 欧美一区二区福利视频| 成年人午夜久久久| 美女一区二区三区在线观看| 一色桃子久久精品亚洲| 欧美成人vps| 欧美在线视频日韩| 国产成人免费xxxxxxxx| 视频一区二区三区中文字幕| 中文字幕一区二区三区精华液| 91精品国产综合久久精品app| 丁香六月综合激情| 日韩中文字幕区一区有砖一区| 欧美激情一区二区在线| 欧美一区二区视频在线观看2020| av电影在线观看一区| 国内精品视频一区二区三区八戒| 亚洲国产乱码最新视频| 国产欧美综合在线观看第十页|