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

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

?? amrplugin.cpp

?? 實現了錄音,放音功能!在evc4.0下編譯功過,wince5.0下能正常錄音,放音,暫停錄放音!
?? CPP
字號:

#include <windows.h>
#include "stdafx.h"
//#include "AMRPlugin.h"
//#include "interf_enc.h"
//#include "sp_enc.h"
// #include "interf_rom.h"

#define CODEC_ID_AMR      0x1234
// #define OUTFRAMES         16
#define FRAMMAXSIZ        32


static INT32 read_size[16] = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 };

typedef struct AMREnc_stru 
{
	INT32 bytesLeft;
	INT32 outOfData;                  //readBuf 是否不足一幀的數據
	INT32 eofReached;
	INT32 nFrames;
	UINT8 *readBuf;
	UINT8 *readPtr;
	UINT8 *outBuf;
	INT32 outBufSize;
	INT32 BytesFilled;
	UINT16 framerate;                 //播放器的播放幀率(一個FRAMES_FILLED相當于播放器的一幀)
	AMR_Encode_State *encInterface;
	INT32 usedBytes;
	INT32 start_tag;
} AMREnc_Stru;

static AMREnc_Stru* AMR_EncStru_Init()
{
	AMREnc_Stru *AMREncStru;

	AMREncStru = ( AMREnc_Stru * )new AMREnc_Stru;
	if ( AMREncStru == NULL )
	{
		return NULL;
	}

	AMREncStru->bytesLeft = 0;
	AMREncStru->outOfData = 0;
    AMREncStru->eofReached = 0;
	AMREncStru->nFrames = 0;
	AMREncStru->readBuf = NULL;
	AMREncStru->readPtr = NULL;
	AMREncStru->outBuf = NULL;
	AMREncStru->outBufSize = 0;
	AMREncStru->framerate = 50;
	AMREncStru->usedBytes = 0;
	AMREncStru->BytesFilled = 0;
	AMREncStru->start_tag = 1;
	
	AMREncStru->encInterface = (AMR_Encode_State*)Encoder_Interface_init(0);
	if ( AMREncStru->encInterface == NULL )
	{
		delete AMREncStru;
		AMREncStru = NULL;
		return NULL;
	}
	
//	AMREncStru->outBufSize = SPCH_BUF_SIZE * OUTFRAMES;
//	AMREncStru->outBuf = (UINT8 *)malloc( AMREncStru->outBufSize );
//	if ( AMREncStru->outBuf == NULL )
//	{
//		Encoder_Interface_exit(AMREncStru->encInterface);
//		AMREncStru->encInterface = NULL;
//		delete AMREncStru;
//		AMREncStru = NULL;
//	}
	return AMREncStru;
}

static void AMR_EncStru_Clos(AMREnc_Stru* AMREncStru)
{
	if ( AMREncStru->encInterface )
	{
		Encoder_Interface_exit(AMREncStru->encInterface);
	}
	if ( AMREncStru->outBuf )
	{
		free(AMREncStru->outBuf);
		AMREncStru->outBuf = NULL;
	}
	delete AMREncStru;
	AMREncStru = NULL;
	return;
}

static INT32 AMR_EncStru_Enc( AMREnc_Stru *AMREncStru )
{
	INT32 nRead;
	INT32 BytesCounter;
	
// 	enum Mode dec_mode;
	AMR_Encode_State *encInterface = NULL;
	
	UINT8 *inbuf = NULL;
	UINT8 outbuf[FRAMMAXSIZ];
	
	if ( AMREncStru == NULL )
	{
		return -1;
	}
	
	nRead = SPCH_BUF_SIZE;
	AMREncStru->usedBytes = 0;
	encInterface = AMREncStru->encInterface;
		
	do 
	{ 
		if ( AMREncStru->bytesLeft < 0 )
		{
			return -2;
		}
		else if ( 0 == AMREncStru->bytesLeft )
		{
			AMREncStru->outOfData = 1;
			memset(AMREncStru->outBuf + AMREncStru->BytesFilled, 0, AMREncStru->outBufSize - AMREncStru->BytesFilled);
			break;
		}
		
		inbuf = AMREncStru->readPtr;
		if ( nRead > AMREncStru->bytesLeft ) 
		{
			AMREncStru->outOfData = 1;
			memset(AMREncStru->outBuf + AMREncStru->BytesFilled, 0, AMREncStru->outBufSize - AMREncStru->BytesFilled);
			break;
		}
		
		BytesCounter = Encoder_Interface_Encode(encInterface, ENCMODE, (INT16*)inbuf, outbuf, 0);
		
		AMREncStru->readPtr += nRead;
		AMREncStru->bytesLeft -= nRead;
		
		memcpy(AMREncStru->outBuf + AMREncStru->BytesFilled, outbuf, BytesCounter);
		
		AMREncStru->nFrames++;
		AMREncStru->BytesFilled += BytesCounter;
		
//		if ( AMREncStru->BytesFilled == OUTFRAMES * SPCH_BUF_SIZE )
//		{
//			AMREncStru->usedBytes = AMREncStru->readPtr - AMREncStru->readBuf;
//			return 1;
//		}		
	} while( !AMREncStru->outOfData );
	
	AMREncStru->usedBytes = AMREncStru->readPtr - AMREncStru->readBuf;
	return 2;
}

static INT32 amr_enc_init(CodecContext *Data)
{
	AMREnc_Stru* AMREncStru;

	memset(Data, 0, sizeof( CodecContext ));
	Data->bits_per_sample = 16;
	Data->channels = 1;
	Data->codec_id = CODEC_ID_AMR;
	Data->codec_type = CODEC_TYPE_AUDIO;
	Data->sample_fmt = 0x01;
	Data->sample_rate = 8000;
	Data->magic_code = (('!'<<24) | ('R'<<16) | ('M'<<8) | 'A');
	AMREncStru = AMR_EncStru_Init();
	if ( NULL == AMREncStru )
	{
		return -1;
	}
	Data->priv_data = AMREncStru;
	return 0;
}

static INT32 amr_enc_close(CodecContext *Data)
{
	AMREnc_Stru* AMREncStru;

	AMREncStru = (AMREnc_Stru*)Data->priv_data;
	if ( AMREncStru )
	{
		AMR_EncStru_Clos(AMREncStru);
	}
	Data->priv_data = NULL;
	return 0;
}

static INT32 amr_enc_encode(CodecContext *Data, void** outdata, INT32* outdata_size, UINT8* inbuf, INT32* inbuf_size)
{
	INT32 iJudg;
	AMREnc_Stru* AMREncStru;
	UINT8* pTemp;

	if (NULL != *outdata) 
	{
		free(*outdata);
		*outdata = NULL;
	}
	
	AMREncStru = ( AMREnc_Stru* )Data->priv_data;
	if ( NULL == AMREncStru )
	{
		return -1;
	}
	pTemp = (UINT8 *)malloc(*inbuf_size + AMREncStru->bytesLeft);
	if ( NULL == pTemp )
	{
		return -1;
	}
	memcpy(pTemp, AMREncStru->readPtr, AMREncStru->bytesLeft);
	memcpy(pTemp + AMREncStru->bytesLeft, inbuf, *inbuf_size);
	AMREncStru->readBuf = pTemp;
	AMREncStru->readPtr = AMREncStru->readBuf;
	AMREncStru->bytesLeft += *inbuf_size;
	AMREncStru->BytesFilled = 0;
	AMREncStru->outOfData = 0;
	AMREncStru->outBufSize = ((AMREncStru->bytesLeft) / SPCH_BUF_SIZE + 1) * FRAMMAXSIZ;   //根據inbufsize決定最大outbufsize
	AMREncStru->outBuf = (UINT8 *)malloc( AMREncStru->outBufSize );
	if ( AMREncStru->outBuf == NULL )
	{
		return -1;
	}

	iJudg = AMR_EncStru_Enc(AMREncStru);
	if ( iJudg < 0 )
	{
		return -2;
	}
	*outdata = AMREncStru->outBuf;
//	memcpy(outdata, AMREncStru->outBuf, AMREncStru->BytesFilled);
	*outdata_size = AMREncStru->BytesFilled;

	return AMREncStru->usedBytes;
}

static CodecInterfaceType amr_codec = 
{
	( CHAR* )"AMR",
	CODEC_TYPE_AUDIO,
	CODEC_ID_AMR,
	sizeof( AMREnc_Stru ),
	amr_enc_init,
	amr_enc_close,
	NULL,
	amr_enc_encode,
	NULL,
	NULL,
};

CodecInterfaceType* Get_AMR_EncInterface(void)
{
	CodecInterfaceType* pInterface;
	pInterface = (CodecInterfaceType*)malloc(sizeof(CodecInterfaceType));
	if (NULL == pInterface)
	{
		return NULL;
	}
	memcpy(pInterface, &amr_codec, sizeof(CodecInterfaceType));
	return pInterface;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频精品在线观看| 欧美mv和日韩mv国产网站| 一区二区三区欧美日| 九九热在线视频观看这里只有精品| 91香蕉视频黄| 亚洲图片另类小说| 天堂va蜜桃一区二区三区漫画版| 天堂一区二区在线| 成人av免费网站| 奇米四色…亚洲| 国产精品一二三四区| 99久久婷婷国产| 欧美日韩国产精选| 国产精品全国免费观看高清| 综合亚洲深深色噜噜狠狠网站| 午夜久久久影院| 91色综合久久久久婷婷| 日韩视频一区二区三区在线播放| 中文字幕色av一区二区三区| 亚洲色图在线看| 国产成人免费9x9x人网站视频| 色噜噜偷拍精品综合在线| 6080午夜不卡| 亚洲午夜免费视频| 国产成人自拍网| 日韩午夜在线影院| 18成人在线观看| 国产成人精品一区二区三区网站观看| 色婷婷一区二区| 中国色在线观看另类| 日韩激情av在线| 在线免费不卡电影| 亚洲免费毛片网站| 国产成人夜色高潮福利影视| 日韩你懂的电影在线观看| 日本欧美一区二区| 51午夜精品国产| 卡一卡二国产精品 | 国产一区二区调教| 91蝌蚪porny九色| 亚洲精品高清在线| 在线成人免费观看| 国产一区在线不卡| 中文在线一区二区| 在线观看亚洲专区| 久久精品999| 中文字幕亚洲精品在线观看| 99精品黄色片免费大全| 亚洲黄色尤物视频| 日韩欧美在线一区二区三区| 丰满少妇久久久久久久| 亚洲成人午夜影院| 久久青草欧美一区二区三区| 91麻豆国产精品久久| 亚洲国产精品嫩草影院| 精品国产一区二区三区av性色| 国产一区二区三区黄视频| 自拍偷拍亚洲欧美日韩| 日韩亚洲欧美在线| 色综合色综合色综合| 毛片av中文字幕一区二区| 亚洲天堂av老司机| 337p日本欧洲亚洲大胆精品| 91免费版在线| heyzo一本久久综合| 国产成人综合精品三级| 日韩高清不卡一区二区三区| 国产精品久久久久久久久快鸭| 欧美一区国产二区| 欧美日韩三级视频| 欧洲亚洲国产日韩| 欧美三级电影在线看| 91小视频在线| 欧美做爰猛烈大尺度电影无法无天| 国产精品原创巨作av| 精品影院一区二区久久久| 日本伊人精品一区二区三区观看方式| 一区二区三区小说| 亚洲婷婷综合色高清在线| 中文字幕一区二区三区在线播放 | 亚洲国产aⅴ天堂久久| 一个色在线综合| 日韩高清不卡一区二区三区| 午夜精品一区二区三区三上悠亚| 一区二区三区在线观看视频| 亚洲欧美激情插| 天天综合色天天综合色h| 日韩av在线免费观看不卡| 极品少妇xxxx精品少妇偷拍| 香蕉av福利精品导航| 美女久久久精品| 国产成人精品www牛牛影视| 国产精品一区二区黑丝| 成人99免费视频| 欧美视频一区二区在线观看| 欧美日韩国产综合一区二区 | 亚洲美女屁股眼交3| 亚洲精品你懂的| 天堂蜜桃91精品| 国产成人在线色| 在线精品视频一区二区三四| 67194成人在线观看| 中文无字幕一区二区三区| 亚洲制服丝袜av| 国产精品一区免费在线观看| 91亚洲国产成人精品一区二三| 91精品国产综合久久久蜜臀粉嫩 | 婷婷久久综合九色国产成人| 国产大陆亚洲精品国产| 欧洲国内综合视频| 久久天天做天天爱综合色| 亚洲高清在线精品| av成人老司机| 国产丝袜在线精品| 免费人成精品欧美精品 | 欧美国产日韩精品免费观看| 天天色天天操综合| 色激情天天射综合网| 久久久久久麻豆| 经典一区二区三区| 欧美xxxx老人做受| 美女mm1313爽爽久久久蜜臀| 欧美视频一区在线| 午夜av区久久| 91麻豆精品国产自产在线| 日本视频中文字幕一区二区三区| 欧美性色黄大片| 亚洲国产毛片aaaaa无费看| 在线欧美日韩精品| 亚洲欧美日韩国产综合| 91论坛在线播放| 亚洲综合小说图片| 欧美猛男gaygay网站| 日韩高清国产一区在线| 亚洲精品一区二区三区在线观看| 国产在线播放一区三区四| 国产精品美日韩| 欧美日韩一区不卡| 麻豆精品一区二区综合av| 日韩视频不卡中文| 国产成人在线视频网址| 亚洲人成网站影音先锋播放| 欧美亚洲国产一区二区三区| 午夜视频一区二区| 国产精品美日韩| 日韩一区二区精品在线观看| 国内偷窥港台综合视频在线播放| 久久精品一区二区三区不卡牛牛| 色天使色偷偷av一区二区| 奇米影视在线99精品| 亚洲同性gay激情无套| 日韩一卡二卡三卡四卡| 色综合婷婷久久| 粉嫩嫩av羞羞动漫久久久| 偷拍一区二区三区| 成人免费在线观看入口| 91麻豆精品国产自产在线观看一区| 国产精品一区二区免费不卡| 亚洲丰满少妇videoshd| 亚洲色图另类专区| 中文字幕亚洲在| 国产亚洲一区二区三区在线观看| 欧美日韩精品欧美日韩精品一综合| 成人毛片在线观看| 国产.精品.日韩.另类.中文.在线.播放| 视频一区二区不卡| 亚洲成人激情社区| 亚洲成va人在线观看| 亚洲一区二区欧美激情| 亚洲成人动漫av| 亚洲第一精品在线| 无吗不卡中文字幕| 伦理电影国产精品| 国产又黄又大久久| 成人高清在线视频| 91久久人澡人人添人人爽欧美| a4yy欧美一区二区三区| 色狠狠av一区二区三区| 欧美三级视频在线| 久久丝袜美腿综合| 中文字幕一区二区三区不卡| 亚洲综合在线五月| 麻豆精品一二三| 成人avav影音| 欧美一区二区在线看| 国产人伦精品一区二区| 亚洲精品一二三区| 久草在线在线精品观看| 97se狠狠狠综合亚洲狠狠| 5566中文字幕一区二区电影| 国产女人水真多18毛片18精品视频 | 欧美一区三区二区| 亚洲色图在线播放| 国精产品一区一区三区mba视频| 成人中文字幕合集| 欧美成人三级电影在线| 亚洲精品伦理在线| 国产麻豆视频精品| 精品精品国产高清一毛片一天堂| 一区二区三区四区高清精品免费观看 |