00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ___BLADEDLL_H_INCLUDED___
00024 #define ___BLADEDLL_H_INCLUDED___
00025
00026 #pragma pack(push)
00027 #pragma pack(1)
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033
00034
00035 #define BE_CONFIG_MP3 0
00036 #define BE_CONFIG_LAME 256
00037
00038
00039
00040 typedef unsigned long HBE_STREAM;
00041 typedef HBE_STREAM *PHBE_STREAM;
00042 typedef unsigned long BE_ERR;
00043
00044
00045
00046 #define BE_ERR_SUCCESSFUL 0x00000000
00047 #define BE_ERR_INVALID_FORMAT 0x00000001
00048 #define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002
00049 #define BE_ERR_NO_MORE_HANDLES 0x00000003
00050 #define BE_ERR_INVALID_HANDLE 0x00000004
00051 #define BE_ERR_BUFFER_TOO_SMALL 0x00000005
00052
00053
00054
00055 #define BE_MAX_HOMEPAGE 128
00056
00057
00058
00059 #define BE_MP3_MODE_STEREO 0
00060 #define BE_MP3_MODE_JSTEREO 1
00061 #define BE_MP3_MODE_DUALCHANNEL 2
00062 #define BE_MP3_MODE_MONO 3
00063
00064
00065
00066 #define MPEG1 1
00067 #define MPEG2 0
00068
00069 #ifdef _BLADEDLL
00070 #undef FLOAT
00071 #include <Windows.h>
00072 #endif
00073
00074 #define CURRENT_STRUCT_VERSION 1
00075 #define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG) // is currently 331 bytes
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 typedef enum
00090 {
00091 VBR_METHOD_NONE = -1,
00092 VBR_METHOD_DEFAULT = 0,
00093 VBR_METHOD_OLD = 1,
00094 VBR_METHOD_NEW = 2,
00095 VBR_METHOD_MTRH = 3,
00096 VBR_METHOD_ABR = 4
00097 } VBRMETHOD;
00098
00099 typedef enum
00100 {
00101 LQP_NOPRESET=-1,
00102
00103
00104 LQP_NORMAL_QUALITY=0,
00105 LQP_LOW_QUALITY,
00106 LQP_HIGH_QUALITY,
00107 LQP_VOICE_QUALITY,
00108 LQP_R3MIX_QUALITY,
00109 LQP_VERYHIGH_QUALITY,
00110
00111
00112 LQP_PHONE =1000,
00113 LQP_SW =2000,
00114 LQP_AM =3000,
00115 LQP_FM =4000,
00116 LQP_VOICE =5000,
00117 LQP_RADIO =6000,
00118 LQP_TAPE =7000,
00119 LQP_HIFI =8000,
00120 LQP_CD =9000,
00121 LQP_STUDIO =10000
00122
00123 } LAME_QUALTIY_PRESET;
00124
00125
00126
00127 typedef struct {
00128 DWORD dwConfig;
00129
00130 union {
00131
00132 struct {
00133
00134 DWORD dwSampleRate;
00135 BYTE byMode;
00136 WORD wBitrate;
00137 BOOL bPrivate;
00138 BOOL bCRC;
00139 BOOL bCopyright;
00140 BOOL bOriginal;
00141
00142 } mp3;
00143
00144 struct
00145 {
00146
00147 DWORD dwStructVersion;
00148 DWORD dwStructSize;
00149
00150
00151 DWORD dwSampleRate;
00152 DWORD dwReSampleRate;
00153 LONG nMode;
00154 DWORD dwBitrate;
00155 DWORD dwMaxBitrate;
00156 LONG nPreset;
00157 DWORD dwMpegVersion;
00158 DWORD dwPsyModel;
00159 DWORD dwEmphasis;
00160
00161
00162 BOOL bPrivate;
00163 BOOL bCRC;
00164 BOOL bCopyright;
00165 BOOL bOriginal;
00166
00167
00168 BOOL bWriteVBRHeader;
00169 BOOL bEnableVBR;
00170 INT nVBRQuality;
00171 DWORD dwVbrAbr_bps;
00172 VBRMETHOD nVbrMethod;
00173 BOOL bNoRes;
00174
00175 BYTE btReserved[255-3*sizeof(DWORD)];
00176
00177 } LHV1;
00178
00179 struct {
00180
00181 DWORD dwSampleRate;
00182 BYTE byMode;
00183 WORD wBitrate;
00184 BYTE byEncodingMethod;
00185
00186 } aac;
00187
00188 } format;
00189
00190 } BE_CONFIG, *PBE_CONFIG;
00191
00192
00193 typedef struct {
00194
00195
00196
00197 BYTE byDLLMajorVersion;
00198 BYTE byDLLMinorVersion;
00199
00200
00201
00202 BYTE byMajorVersion;
00203 BYTE byMinorVersion;
00204
00205
00206
00207 BYTE byDay;
00208 BYTE byMonth;
00209 WORD wYear;
00210
00211
00212
00213 CHAR zHomepage[BE_MAX_HOMEPAGE + 1];
00214
00215 BYTE byAlphaLevel;
00216 BYTE byBetaLevel;
00217 BYTE byMMXEnabled;
00218
00219 BYTE btReserved[125];
00220
00221
00222 } BE_VERSION, *PBE_VERSION;
00223
00224 #ifndef _BLADEDLL
00225
00226 typedef BE_ERR (*BEINITSTREAM) (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM);
00227 typedef BE_ERR (*BEENCODECHUNK) (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD);
00228 typedef BE_ERR (*BEDEINITSTREAM) (HBE_STREAM, PBYTE, PDWORD);
00229 typedef BE_ERR (*BECLOSESTREAM) (HBE_STREAM);
00230 typedef VOID (*BEVERSION) (PBE_VERSION);
00231 typedef VOID (*BEWRITEVBRHEADER) (LPCSTR);
00232
00233 #define TEXT_BEINITSTREAM "beInitStream"
00234 #define TEXT_BEENCODECHUNK "beEncodeChunk"
00235 #define TEXT_BEDEINITSTREAM "beDeinitStream"
00236 #define TEXT_BECLOSESTREAM "beCloseStream"
00237 #define TEXT_BEVERSION "beVersion"
00238 #define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader"
00239
00240 #else
00241
00242 __declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream);
00243 __declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput);
00244 __declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput);
00245 __declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream);
00246 __declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion);
00247 __declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName);
00248
00249
00250 #endif
00251
00252 #pragma pack(pop)
00253
00254 #ifdef __cplusplus
00255 }
00256 #endif
00257
00258 #endif