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

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

?? 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 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69堂国产成人免费视频| 777午夜精品视频在线播放| 亚洲一区二区在线免费看| 这里只有精品视频在线观看| 国产精品中文字幕欧美| 亚洲最大成人网4388xx| 亚洲精品一区在线观看| 欧美日韩一区视频| 91影视在线播放| 国产乱码字幕精品高清av| 午夜精品福利一区二区三区蜜桃| 久久精品免费在线观看| 欧美精选在线播放| 色乱码一区二区三区88| 国产一区中文字幕| 美腿丝袜亚洲三区| 午夜电影网亚洲视频| 亚洲女厕所小便bbb| 国产欧美视频在线观看| 日韩三级在线观看| 欧美人牲a欧美精品| 色综合久久久久久久久| 国产成人夜色高潮福利影视| 日韩av中文字幕一区二区三区| 中文字幕一区二| 国产欧美在线观看一区| 欧美精品一区二区三区蜜臀| 91精品久久久久久久91蜜桃| 欧美三级电影一区| 91久久精品一区二区| gogo大胆日本视频一区| 国产电影精品久久禁18| 国产乱码精品一品二品| 欧美aaa在线| 爽好久久久欧美精品| 亚洲韩国一区二区三区| 亚洲视频一区二区在线观看| 国产精品系列在线| 国产精品美女久久福利网站| 中文乱码免费一区二区| 久久久久99精品一区| 久久久99久久精品欧美| 久久精品人人爽人人爽| 久久精品视频网| 国产日韩欧美制服另类| 国产片一区二区| 国产精品色婷婷| 亚洲视频图片小说| 亚洲欧美日韩国产另类专区| 亚洲日本欧美天堂| 亚洲精品国产成人久久av盗摄| 亚洲视频在线一区| 亚洲国产精品久久艾草纯爱| 午夜精品久久久久久| 蜜桃视频在线一区| 精品在线你懂的| 国产成人av一区二区三区在线| 粉嫩一区二区三区在线看| 粉嫩av一区二区三区粉嫩| 成人黄色小视频| 一本色道综合亚洲| 欧美喷水一区二区| 2欧美一区二区三区在线观看视频| 精品国产免费一区二区三区四区 | 日韩和欧美一区二区三区| 午夜精品成人在线视频| 麻豆传媒一区二区三区| 国产精品99久| 色婷婷激情一区二区三区| 欧美日韩亚洲综合| 精品久久久久久久人人人人传媒 | 中文字幕一区三区| 夜夜精品视频一区二区| 视频一区欧美日韩| 国产麻豆成人精品| 91豆麻精品91久久久久久| 777xxx欧美| 欧美韩国日本一区| 亚洲综合激情网| 久久超碰97中文字幕| www.性欧美| 制服丝袜亚洲网站| 中日韩免费视频中文字幕| 亚洲.国产.中文慕字在线| 激情文学综合网| 在线视频一区二区三区| 精品免费视频一区二区| 亚洲人成人一区二区在线观看| 图片区小说区国产精品视频| 成人一区二区三区中文字幕| 欧美日韩一区二区三区在线看| 久久精品一区二区三区不卡牛牛| 夜夜精品视频一区二区| 国产精品1区2区3区在线观看| 91福利在线看| 国产欧美一区二区精品忘忧草| 石原莉奈一区二区三区在线观看| 亚洲综合色视频| 国产成人av电影在线观看| 欧美巨大另类极品videosbest | 欧美色窝79yyyycom| 久久夜色精品国产噜噜av| 午夜伊人狠狠久久| 国产成人亚洲精品青草天美| 91精品国产aⅴ一区二区| 中文字幕欧美国产| 久久国产三级精品| 欧美色视频一区| 综合欧美亚洲日本| 久久精品99国产精品| 色成人在线视频| 亚洲国产成人午夜在线一区 | 一二三四社区欧美黄| 国产伦精品一区二区三区在线观看| 欧美综合天天夜夜久久| 国产日韩高清在线| 久久国产生活片100| 欧美日韩中文字幕一区| 亚洲欧美日韩精品久久久久| 国产传媒一区在线| 欧美一区二区三区视频在线观看| 一级精品视频在线观看宜春院| av电影天堂一区二区在线| 久久先锋影音av鲁色资源网| 麻豆精品视频在线观看免费| 欧美日韩国产综合视频在线观看| 尤物视频一区二区| www.综合网.com| 国产精品欧美久久久久无广告 | av亚洲精华国产精华精华| 久久美女高清视频| 韩国欧美国产1区| 日韩精品一区二区三区老鸭窝 | 国产一区在线视频| 精品国产3级a| 激情综合一区二区三区| 欧美电影免费观看完整版| 亚洲国产cao| 6080午夜不卡| 日本不卡视频一二三区| 欧美mv和日韩mv的网站| 九色综合狠狠综合久久| 欧美成人女星排名| 国产麻豆视频一区二区| 国产欧美视频在线观看| 成人小视频免费观看| 国产夜色精品一区二区av| 成人久久视频在线观看| 欧美高清一级片在线观看| 99视频在线观看一区三区| 国产精品短视频| 色屁屁一区二区| 香港成人在线视频| 日韩一区二区精品在线观看| 国产综合一区二区| 国产精品无遮挡| 色综合久久久久综合99| 国产99久久久国产精品潘金| 国产精品欧美久久久久无广告| 99久久精品国产网站| 亚洲综合激情网| 日韩精品中午字幕| 成人深夜福利app| 亚洲另类春色校园小说| 51精品视频一区二区三区| 国内精品国产三级国产a久久| 国产女人水真多18毛片18精品视频 | 亚洲成人免费观看| 欧美一级高清片| 大胆欧美人体老妇| 悠悠色在线精品| 欧美一区二区三区在线视频| 国产在线视频一区二区| 国产精品区一区二区三| 欧美精品一卡两卡| 极品美女销魂一区二区三区| 中文字幕在线观看一区| 欧美精品在线一区二区三区| 国产精品夜夜爽| 亚洲电影一级黄| 国产亚洲人成网站| 精品视频资源站| 福利视频网站一区二区三区| 午夜精品免费在线观看| 久久精品一区二区三区不卡| 欧美三级日本三级少妇99| 丁香天五香天堂综合| 亚洲国产中文字幕在线视频综合| 精品福利二区三区| 日本高清不卡aⅴ免费网站| 久久国产欧美日韩精品| 亚洲一区二区欧美日韩| 国产日本亚洲高清| 欧美高清dvd| 色综合天天综合| 国产美女av一区二区三区| 婷婷国产在线综合| 亚洲精品欧美二区三区中文字幕| 2024国产精品| 9191国产精品|