首页  编辑  

MP3编码器DLL的接口

Tags: /超级猛料/Multi-Media.多媒体相关/   Date Created:

/*

* Blade DLL Interface for LAME.

*

* Copyright (c) 1999 A.L. Faber

* Based on bladedll.h version 1.0 written by Jukka Poikolainen

*

* 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.

*/

#ifndef ___BLADEDLL_H_INCLUDED___

#define ___BLADEDLL_H_INCLUDED___

#pragma pack(push)

#pragma pack(1)

/* encoding formats */

#define                BE_CONFIG_MP3                        0                                                                                

#define                BE_CONFIG_LAME                        256                

/* type definitions */

typedef                unsigned long                        HBE_STREAM;

typedef                HBE_STREAM                                *PHBE_STREAM;

typedef                unsigned long                        BE_ERR;

/* error codes */

#define                BE_ERR_SUCCESSFUL                                        0x00000000

#define                BE_ERR_INVALID_FORMAT                                0x00000001

#define                BE_ERR_INVALID_FORMAT_PARAMETERS        0x00000002

#define                BE_ERR_NO_MORE_HANDLES                                0x00000003

#define                BE_ERR_INVALID_HANDLE                                0x00000004

#define                BE_ERR_BUFFER_TOO_SMALL                                0x00000005

/* other constants */

#define                BE_MAX_HOMEPAGE                        128

/* format specific variables */

#define                BE_MP3_MODE_STEREO                0

#define                BE_MP3_MODE_JSTEREO                1

#define                BE_MP3_MODE_DUALCHANNEL        2

#define                BE_MP3_MODE_MONO                3

#define                MPEG1        1

#define                MPEG2        0

#ifdef _BLADEDLL

#undef FLOAT

       #include <Windows.h>

#endif

#define CURRENT_STRUCT_VERSION 1

#define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG)        // is currently 331 bytes

/* OBSOLETE, VALUES STILL WORK

typedef enum

{

       NORMAL_QUALITY=0,

       LOW_QUALITY,

       HIGH_QUALITY,

       VOICE_QUALITY

} LAME_QUALTIY_PRESET;

*/

typedef enum

{

       VBR_METHOD_NONE                        = -1,

       VBR_METHOD_DEFAULT                =  0,

       VBR_METHOD_OLD                        =  1,

       VBR_METHOD_NEW                        =  2,

       VBR_METHOD_MTRH                        =  3,

       VBR_METHOD_ABR                        =  4

} VBRMETHOD;

typedef enum

{

       LQP_NOPRESET=-1,

       // QUALITY PRESETS

       LQP_NORMAL_QUALITY=0,

       LQP_LOW_QUALITY,

       LQP_HIGH_QUALITY,

       LQP_VOICE_QUALITY,

       LQP_R3MIX_QUALITY,

       // NEW PRESET VALUES

       LQP_PHONE        =1000,

       LQP_SW                =2000,

       LQP_AM                =3000,

       LQP_FM                =4000,

       LQP_VOICE        =5000,

       LQP_RADIO        =6000,

       LQP_TAPE        =7000,

       LQP_HIFI        =8000,

       LQP_CD                =9000,

       LQP_STUDIO        =10000

} LAME_QUALTIY_PRESET;

typedef struct        {

       DWORD        dwConfig;                        // BE_CONFIG_XXXXX

                                                               // Currently only BE_CONFIG_MP3 is supported

       union        {

               struct        {

                       DWORD        dwSampleRate;        // 48000, 44100 and 32000 allowed

                       BYTE        byMode;                        // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO

                       WORD        wBitrate;                // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed

                       BOOL        bPrivate;                

                       BOOL        bCRC;

                       BOOL        bCopyright;

                       BOOL        bOriginal;

                       } mp3;                                        // BE_CONFIG_MP3

                       struct

                       {

                       // STRUCTURE INFORMATION

                       DWORD                        dwStructVersion;        

                       DWORD                        dwStructSize;

                       // BASIC ENCODER SETTINGS

                       DWORD                        dwSampleRate;        // SAMPLERATE OF INPUT FILE

                       DWORD                        dwReSampleRate;        // DOWNSAMPLERATE, 0=ENCODER DECIDES  

                       LONG                        nMode;                        // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO

                       DWORD                        dwBitrate;                // CBR bitrate, VBR min bitrate

                       DWORD                        dwMaxBitrate;        // CBR ignored, VBR Max bitrate

                       LONG                        nPreset;                // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum

                       DWORD                        dwMpegVersion;        // FUTURE USE, MPEG-1 OR MPEG-2

                       DWORD                        dwPsyModel;                // FUTURE USE, SET TO 0

                       DWORD                        dwEmphasis;                // FUTURE USE, SET TO 0

                       // BIT STREAM SETTINGS

                       BOOL                        bPrivate;                // Set Private Bit (TRUE/FALSE)

                       BOOL                        bCRC;                        // Insert CRC (TRUE/FALSE)

                       BOOL                        bCopyright;                // Set Copyright Bit (TRUE/FALSE)

                       BOOL                        bOriginal;                // Set Original Bit (TRUE/FALSE)

                       

                       // VBR STUFF

                       BOOL                        bWriteVBRHeader;        // WRITE XING VBR HEADER (TRUE/FALSE)

                       BOOL                        bEnableVBR;                        // USE VBR ENCODING (TRUE/FALSE)

                       INT                                nVBRQuality;                // VBR QUALITY 0..9

                       DWORD                        dwVbrAbr_bps;                // Use ABR in stead of nVBRQuality

                       VBRMETHOD                nVbrMethod;

                       BOOL                        bNoRes;                                // Disable Bit resorvoir

                       BYTE                        btReserved[255-3*sizeof(DWORD)];        // FUTURE USE, SET TO 0

                       } LHV1;                                        // LAME header version 1

               struct        {

                       DWORD        dwSampleRate;

                       BYTE        byMode;

                       WORD        wBitrate;

                       BYTE        byEncodingMethod;

               } aac;

       } format;

               

} BE_CONFIG, *PBE_CONFIG;

typedef struct        {

       // BladeEnc DLL Version number

       BYTE        byDLLMajorVersion;

       BYTE        byDLLMinorVersion;

       // BladeEnc Engine Version Number

       BYTE        byMajorVersion;

       BYTE        byMinorVersion;

       // DLL Release date

       BYTE        byDay;

       BYTE        byMonth;

       WORD        wYear;

       // BladeEnc        Homepage URL

       CHAR        zHomepage[BE_MAX_HOMEPAGE + 1];        

       BYTE        byAlphaLevel;

       BYTE        byBetaLevel;

       BYTE        byMMXEnabled;

       BYTE        btReserved[125];

} BE_VERSION, *PBE_VERSION;                        

#ifndef _BLADEDLL

typedef BE_ERR        (*BEINITSTREAM)                        (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM);

typedef BE_ERR        (*BEENCODECHUNK)                (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD);

typedef BE_ERR        (*BEDEINITSTREAM)                (HBE_STREAM, PBYTE, PDWORD);

typedef BE_ERR        (*BECLOSESTREAM)                (HBE_STREAM);

typedef VOID        (*BEVERSION)                        (PBE_VERSION);

typedef VOID        (*BEWRITEVBRHEADER)                (LPCSTR);

#define        TEXT_BEINITSTREAM                "beInitStream"

#define        TEXT_BEENCODECHUNK                "beEncodeChunk"

#define        TEXT_BEDEINITSTREAM                "beDeinitStream"

#define        TEXT_BECLOSESTREAM                "beCloseStream"

#define        TEXT_BEVERSION                        "beVersion"

#define        TEXT_BEWRITEVBRHEADER        "beWriteVBRHeader"

#else

__declspec(dllexport) BE_ERR        beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream);

__declspec(dllexport) BE_ERR        beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput);

__declspec(dllexport) BE_ERR        beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput);

__declspec(dllexport) BE_ERR        beCloseStream(HBE_STREAM hbeStream);

__declspec(dllexport) VOID                beVersion(PBE_VERSION pbeVersion);

__declspec(dllexport) BE_ERR        beWriteVBRHeader(LPCSTR lpszFileName);

#endif

#pragma pack(pop)

#endif

lame-3.96.tar.gz (1.2MB)
lame_enc.dll (84.5KB)