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

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

?? blademp3encdll.c

?? 音頻編碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *	Blade DLL Interface for LAME. * *	Copyright (c) 1999 - 2002 A.L. Faber * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA  02111-1307, USA. */#include <windows.h>#include <Windef.h>#include "BladeMP3EncDLL.h"#include <assert.h>#include "lame.h"#include "config.h"// sample_t should not be needed by any libmp3lame wrapper://#include "machine.h" /* for sample_t type */#define         Min(A, B)       ((A) < (B) ? (A) : (B))#define         Max(A, B)       ((A) > (B) ? (A) : (B))#define _RELEASEDEBUG 0// lame_enc DLL version numberconst int MAJORVERSION = 1;const int MINORVERSION = 32;// Local variablesstatic DWORD				dwSampleBufferSize=0;static HANDLE				gs_hModule=NULL;static BOOL					gs_bLogFile=FALSE;static lame_global_flags*	gfp_save = NULL;// Local function prototypesstatic void dump_config( 	lame_global_flags*	gfp );static void DebugPrintf( const char* pzFormat, ... );static void DispErr( LPSTR strErr );static void PresetOptions( lame_global_flags *gfp, LONG myPreset );static void DebugPrintf(const char* pzFormat, ...){    char	szBuffer[1024]={'\0',};	char	szFileName[MAX_PATH+1]={'\0',};    va_list ap;	// Get the full module (DLL) file name	GetModuleFileName(	gs_hModule, 						szFileName,						sizeof( szFileName ) );	// change file name extention	szFileName[ strlen(szFileName) - 3 ] = 't';	szFileName[ strlen(szFileName) - 2 ] = 'x';	szFileName[ strlen(szFileName) - 1 ] = 't';	// start at beginning of the list	va_start(ap, pzFormat);	// copy it to the string buffer	_vsnprintf(szBuffer, sizeof(szBuffer), pzFormat, ap);	// log it to the file?	if ( gs_bLogFile ) 	{	        FILE* fp = NULL;				// try to open the log file		fp=fopen( szFileName, "a+" );		// check file open result        if (fp)		{			// write string to the file            fputs(szBuffer,fp);			// close the file            fclose(fp);        }    }#if defined _DEBUG || defined _RELEASEDEBUG    OutputDebugString( szBuffer );#endif	va_end(ap);}static void PresetOptions( lame_global_flags *gfp, LONG myPreset ){	switch (myPreset)	{/*-1*/		case LQP_NOPRESET:			break;/*0*/		case LQP_NORMAL_QUALITY:			/*	lame_set_quality( gfp, 5 );*/			break;/*1*/		case LQP_LOW_QUALITY:				lame_set_quality( gfp, 9 );			break;/*2*/		case LQP_HIGH_QUALITY:				lame_set_quality( gfp, 2 );			break;/*3*/		case LQP_VOICE_QUALITY:				// --voice flag for experimental voice mode				lame_set_mode( gfp, MONO );		        lame_set_preset( gfp, 56);			break;/*4*/		case LQP_R3MIX:					// --R3MIX		        lame_set_preset( gfp, R3MIX);			break;/*5*/		case LQP_VERYHIGH_QUALITY:				lame_set_quality( gfp, 0 );			break;/*6*/		case LQP_STANDARD:				// --PRESET STANDARD		        lame_set_preset( gfp, STANDARD);			break;/*7*/		case LQP_FAST_STANDARD:				// --PRESET FAST STANDARD		        lame_set_preset( gfp, STANDARD_FAST);			break;/*8*/		case LQP_EXTREME:				// --PRESET EXTREME		        lame_set_preset( gfp, EXTREME);			break;/*9*/		case LQP_FAST_EXTREME:				// --PRESET FAST EXTREME:		        lame_set_preset( gfp, EXTREME_FAST);			break;/*10*/		case LQP_INSANE:				// --PRESET INSANE		        lame_set_preset( gfp, INSANE);			break;/*11*/		case LQP_ABR:					// --PRESET ABR				// handled in beInitStream			break;/*12*/		case LQP_CBR:					// --PRESET CBR				// handled in beInitStream			break;/*13*/		case LQP_MEDIUM:					// --PRESET MEDIUM		        lame_set_preset( gfp, MEDIUM);			break;/*14*/		case LQP_FAST_MEDIUM:					// --PRESET FAST MEDIUM		        lame_set_preset( gfp, MEDIUM_FAST);			break;/*1000*/	case LQP_PHONE:				lame_set_mode( gfp, MONO );		        lame_set_preset( gfp, 16);			break;/*2000*/	case LQP_SW:				lame_set_mode( gfp, MONO );		        lame_set_preset( gfp, 24);			break;/*3000*/	case LQP_AM:				lame_set_mode( gfp, MONO );		        lame_set_preset( gfp, 40);			break;/*4000*/	case LQP_FM:		        lame_set_preset( gfp, 112);			break;/*5000*/	case LQP_VOICE:				lame_set_mode( gfp, MONO );		        lame_set_preset( gfp, 56);			break;/*6000*/	case LQP_RADIO:		        lame_set_preset( gfp, 112);			break;/*7000*/	case LQP_TAPE:		        lame_set_preset( gfp, 112);			break;/*8000*/	case LQP_HIFI:		        lame_set_preset( gfp, 160);			break;/*9000*/	case LQP_CD:		        lame_set_preset( gfp, 192);			break;/*10000*/	case LQP_STUDIO:		        lame_set_preset( gfp, 256);			break;	}}__declspec(dllexport) BE_ERR	beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream){	int actual_bitrate;//2001-12-18	int					nDllArgC = 0;	BE_CONFIG			lameConfig = { 0, };	int					nInitReturn = 0;	lame_global_flags*	gfp = NULL;	// Init the global flags structure	gfp = lame_init();	*phbeStream = (HBE_STREAM)gfp;	// clear out structure	memset(&lameConfig,0x00,CURRENT_STRUCT_SIZE);	// Check if this is a regular BLADE_ENCODER header	if (pbeConfig->dwConfig!=BE_CONFIG_LAME)	{		int nCRC=pbeConfig->format.mp3.bCRC;		int nVBR=(nCRC>>12)&0x0F;		// Copy parameter from old Blade structure		lameConfig.format.LHV1.dwSampleRate	=pbeConfig->format.mp3.dwSampleRate;		//for low bitrates, LAME will automatically downsample for better		//sound quality.  Forcing output samplerate = input samplerate is not a good idea 		//unless the user specifically requests it:		//lameConfig.format.LHV1.dwReSampleRate=pbeConfig->format.mp3.dwSampleRate;		lameConfig.format.LHV1.nMode		=(pbeConfig->format.mp3.byMode&0x0F);		lameConfig.format.LHV1.dwBitrate	=pbeConfig->format.mp3.wBitrate;		lameConfig.format.LHV1.bPrivate		=pbeConfig->format.mp3.bPrivate;		lameConfig.format.LHV1.bOriginal	=pbeConfig->format.mp3.bOriginal;		lameConfig.format.LHV1.bCRC		=nCRC&0x01;		lameConfig.format.LHV1.bCopyright	=pbeConfig->format.mp3.bCopyright;			// Fill out the unknowns		lameConfig.format.LHV1.dwStructSize=CURRENT_STRUCT_SIZE;		lameConfig.format.LHV1.dwStructVersion=CURRENT_STRUCT_VERSION;		// Get VBR setting from fourth nibble		if ( nVBR>0 )		{			lameConfig.format.LHV1.bWriteVBRHeader = TRUE;			lameConfig.format.LHV1.bEnableVBR = TRUE;			lameConfig.format.LHV1.nVBRQuality = nVBR-1;		}		// Get Quality from third nibble		lameConfig.format.LHV1.nPreset=((nCRC>>8)&0x0F);	}	else	{		// Copy the parameters		memcpy(&lameConfig,pbeConfig,pbeConfig->format.LHV1.dwStructSize);	}	// --------------- Set arguments to LAME encoder -------------------------	// Set input sample frequency	lame_set_in_samplerate( gfp, lameConfig.format.LHV1.dwSampleRate );        // disable INFO/VBR tag by default.          // if this tag is used, the calling program must call beWriteVBRTag()        // after encoding.  But the original DLL documentation does not         // require the         // app to call beWriteVBRTag() unless they have specifically        // set LHV1.bWriteVBRHeader=TRUE.  Thus the default setting should        // be disabled.  	lame_set_bWriteVbrTag( gfp, 0 );//2001-12-18 Dibrom's ABR preset stuff	if(lameConfig.format.LHV1.nPreset == LQP_ABR)		// --ALT-PRESET ABR	{		actual_bitrate = lameConfig.format.LHV1.dwVbrAbr_bps / 1000;		// limit range		if( actual_bitrate > 320)		{			actual_bitrate = 320;		}		if( actual_bitrate < 8 )		{			actual_bitrate = 8;		}		lame_set_preset( gfp, actual_bitrate );	}    // end Dibrom's ABR preset 2001-12-18 ****** START OF CBR	if(lameConfig.format.LHV1.nPreset == LQP_CBR)		// --ALT-PRESET CBR	{		actual_bitrate = lameConfig.format.LHV1.dwBitrate;        lame_set_preset(gfp, actual_bitrate);        lame_set_VBR(gfp, vbr_off);	}// end Dibrom's CBR preset 2001-12-18	// The following settings only used when preset is not one of the LAME QUALITY Presets	if ( (int)lameConfig.format.LHV1.nPreset < (int) LQP_STANDARD )	{		switch ( lameConfig.format.LHV1.nMode )		{			case BE_MP3_MODE_STEREO:				lame_set_mode( gfp, STEREO );				lame_set_num_channels( gfp, 2 );				break;			case BE_MP3_MODE_JSTEREO:				lame_set_mode( gfp, JOINT_STEREO );				lame_set_num_channels( gfp, 2 );				break;			case BE_MP3_MODE_MONO:				lame_set_mode( gfp, MONO );				lame_set_num_channels( gfp, 1 );				break;			case BE_MP3_MODE_DUALCHANNEL: //warning: there is NO dual channel option working in Lame				lame_set_force_ms( gfp, 1 );				lame_set_mode( gfp, STEREO );				lame_set_num_channels( gfp, 2 );				break;			default:			{				DebugPrintf("Invalid lameConfig.format.LHV1.nMode, value is %d\n",lameConfig.format.LHV1.nMode);				return BE_ERR_INVALID_FORMAT_PARAMETERS;			}		}		if ( lameConfig.format.LHV1.bEnableVBR )		{			/* set VBR quality */			lame_set_VBR_q( gfp, lameConfig.format.LHV1.nVBRQuality );			/* select proper VBR method */			switch ( lameConfig.format.LHV1.nVbrMethod)			{				case VBR_METHOD_NONE:					lame_set_VBR( gfp, vbr_off );				break;				case VBR_METHOD_DEFAULT:					lame_set_VBR( gfp, vbr_default ); 				break;				case VBR_METHOD_OLD:					lame_set_VBR( gfp, vbr_rh ); 				break;				case VBR_METHOD_MTRH:				case VBR_METHOD_NEW:					/*                                					 * the --vbr-mtrh commandline switch is obsolete. 					 * now --vbr-mtrh is known as --vbr-new					 */					lame_set_VBR( gfp, vbr_mtrh ); 				break;				case VBR_METHOD_ABR:					lame_set_VBR( gfp, vbr_abr ); 				break;				default:					/* unsupported VBR method */					assert( FALSE );			}		}		else		{			/* use CBR encoding method, so turn off VBR */			lame_set_VBR( gfp, vbr_off );		}		/* Set bitrate.  (CDex users always specify bitrate=Min bitrate when using VBR) */		lame_set_brate( gfp, lameConfig.format.LHV1.dwBitrate );					/* check if we have to use ABR, in order to backwards compatible, this		 * condition should still be checked indepedent of the nVbrMethod method		 */		if (lameConfig.format.LHV1.dwVbrAbr_bps > 0 )		{			/* set VBR method to ABR */			lame_set_VBR( gfp, vbr_abr );			/* calculate to kbps, round to nearest kbps */			lame_set_VBR_mean_bitrate_kbps( gfp, ( lameConfig.format.LHV1.dwVbrAbr_bps + 500 ) / 1000 );			/* limit range */			if( lame_get_VBR_mean_bitrate_kbps( gfp ) > 320)			{				lame_set_VBR_mean_bitrate_kbps( gfp, 320 );			}			if( lame_get_VBR_mean_bitrate_kbps( gfp ) < 8 )			{				lame_set_VBR_mean_bitrate_kbps( gfp, 8 );			}		}	}    // First set all the preset options    if ( LQP_NOPRESET !=  lameConfig.format.LHV1.nPreset )    {		PresetOptions( gfp, lameConfig.format.LHV1.nPreset );    }	// Set frequency resampling rate, if specified	if ( lameConfig.format.LHV1.dwReSampleRate > 0 )	{		lame_set_out_samplerate( gfp, lameConfig.format.LHV1.dwReSampleRate );	}		    switch ( lameConfig.format.LHV1.nMode )	{		case BE_MP3_MODE_MONO:			lame_set_mode( gfp, MONO );			lame_set_num_channels( gfp, 1 );		break;		default:            break;	}	// Use strict ISO encoding?	lame_set_strict_ISO( gfp, ( lameConfig.format.LHV1.bStrictIso == TRUE ) ? 1 : 0 );		// Set copyright flag?	if ( lameConfig.format.LHV1.bCopyright )	{		lame_set_copyright( gfp, 1 );	}	// Do we have to tag  it as non original 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲精品| 精品一区二区三区在线视频| 国产精品久久久久aaaa| 国产精品免费免费| 婷婷综合久久一区二区三区| 国产一区欧美日韩| 在线视频综合导航| 99精品欧美一区二区三区小说 | 视频一区二区三区中文字幕| 精品一区二区在线播放| 日韩**一区毛片| 99国产精品久久久久| 91精品国产全国免费观看| 国产日产精品1区| 亚洲国产欧美在线| 成人小视频免费在线观看| 日韩欧美123| 日本中文在线一区| 欧美亚洲一区二区三区四区| 中文字幕日韩一区二区| 国产一区二区三区四区在线观看| 欧美精品18+| 亚洲超丰满肉感bbw| 一本一道波多野结衣一区二区| 欧美经典一区二区| 韩国精品主播一区二区在线观看 | 欧美一区二区三区婷婷月色| 亚洲欧美日韩中文播放| 成人国产视频在线观看| 国产精品丝袜一区| 成人精品国产一区二区4080| 久久亚洲精品国产精品紫薇| 国产麻豆精品视频| 亚洲国产精品激情在线观看| 丁香另类激情小说| 亚洲特黄一级片| 色综合天天综合网天天狠天天| 亚洲欧洲国产日韩| 一道本成人在线| 亚洲18影院在线观看| 欧美精品亚洲一区二区在线播放| 日韩 欧美一区二区三区| 日韩视频不卡中文| 国产精品伊人色| 国产精品成人一区二区三区夜夜夜| 成人国产精品免费| 亚洲精品美腿丝袜| 欧美日本在线视频| 蜜臀久久久久久久| 国产女主播一区| 99国产精品一区| 婷婷久久综合九色综合绿巨人 | 18欧美乱大交hd1984| 色综合久久88色综合天天6| 亚洲一区二区欧美日韩| 日韩欧美在线影院| 国产成人av电影在线观看| 中文字幕一区在线观看| 欧美日韩免费观看一区二区三区| 美女国产一区二区| 国产精品久久久久久户外露出| 欧美性生活影院| 蜜臀a∨国产成人精品| 国产精品无人区| 欧美日韩国产片| 国产成人在线电影| 亚洲精品美腿丝袜| 日韩一级欧美一级| 国产suv精品一区二区三区| 国产精品成人免费精品自在线观看 | 国产精品中文字幕一区二区三区| 中文成人av在线| 欧洲一区在线电影| 久久精品国产第一区二区三区 | 亚洲va中文字幕| 色综合久久中文综合久久牛| 日本不卡中文字幕| 国产精品三级视频| 欧美高清视频一二三区 | 国产精品美女www爽爽爽| 99久精品国产| 日本一区中文字幕| 欧美国产日本视频| 不卡的av网站| 捆绑紧缚一区二区三区视频| 中日韩免费视频中文字幕| 欧美三电影在线| 国产91综合网| 日韩二区三区四区| 中文字幕免费不卡| 欧美日韩精品欧美日韩精品| 午夜激情一区二区三区| 亚洲欧洲成人精品av97| 91精品国产品国语在线不卡| 不卡欧美aaaaa| 日本三级韩国三级欧美三级| 国产精品进线69影院| 精品久久99ma| 在线观看日韩电影| 国产一区二区女| 亚洲成人免费看| 亚洲精品美国一| 欧美激情一区二区三区蜜桃视频| 欧美精品xxxxbbbb| 欧美亚洲国产怡红院影院| 丰满亚洲少妇av| 开心九九激情九九欧美日韩精美视频电影 | 在线不卡a资源高清| 成人免费高清视频| 国产一区二区三区在线看麻豆| 午夜免费久久看| 亚洲视频一区在线观看| 欧美国产精品v| 国产精品视频一区二区三区不卡| 精品三级在线观看| 欧美精品在线观看一区二区| 在线观看亚洲一区| 色综合欧美在线视频区| 成人中文字幕合集| 国产在线视频精品一区| 亚洲精品国产第一综合99久久| 精品91自产拍在线观看一区| 日韩一区二区电影| 欧美精选在线播放| 欧美电影一区二区| 欧美日韩高清不卡| 欧美视频完全免费看| 在线观看国产91| 91精品福利视频| 在线视频一区二区免费| 一本到三区不卡视频| 91麻豆成人久久精品二区三区| 粉嫩av一区二区三区粉嫩| 国产不卡免费视频| 成人午夜激情在线| 粉嫩av亚洲一区二区图片| 国产精品一区二区久久不卡| 国产麻豆午夜三级精品| 国产成人亚洲综合a∨婷婷| 成人网在线免费视频| 99国产麻豆精品| 欧美影视一区二区三区| 日韩欧美国产综合一区| 久久久五月婷婷| 国产精品天干天干在线综合| 中文字幕一区在线观看| 亚洲国产精品综合小说图片区| 午夜欧美在线一二页| 久久99国产精品麻豆| av动漫一区二区| 欧美色电影在线| 日韩三级免费观看| 亚洲欧洲美洲综合色网| 尤物在线观看一区| 久久99热这里只有精品| 成人一区二区三区| 欧美日韩情趣电影| 久久久精品中文字幕麻豆发布| 亚洲人成网站在线| 久久国产精品露脸对白| 粗大黑人巨茎大战欧美成人| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品色噜噜| 亚洲制服欧美中文字幕中文字幕| 日韩影院免费视频| 色综合久久久久综合体桃花网| 久久蜜桃av一区精品变态类天堂 | 日本欧美韩国一区三区| 国产精品自产自拍| 欧美午夜精品一区二区蜜桃| 精品欧美乱码久久久久久1区2区| 国产精品免费网站在线观看| 亚洲自拍偷拍欧美| av激情综合网| 久久婷婷综合激情| 久久久久97国产精华液好用吗| 亚洲综合视频在线观看| 图片区小说区国产精品视频| 色综合视频一区二区三区高清| 久久综合色播五月| 艳妇臀荡乳欲伦亚洲一区| 精品一区二区三区在线播放视频 | 一区二区三区在线观看动漫| 精品亚洲免费视频| 欧美日韩国产色站一区二区三区| 国产偷v国产偷v亚洲高清| 亚洲成在人线免费| 欧美在线色视频| 中文字幕一区二区三区在线播放| 久久国产精品99久久久久久老狼| 色天天综合色天天久久| 国产亚洲短视频| 精品一区二区在线观看| 3751色影院一区二区三区| 中文文精品字幕一区二区| 日韩在线观看一区二区| 欧美视频一区二区三区| 亚洲精品视频在线观看网站| 99久久精品国产一区| 亚洲欧美综合网|