123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- /*
- * Blade Type of DLL Interface for Lame encoder
- *
- * Copyright (c) 1999-2002 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.
- */
- //#define _BLADEDLL 1
- #ifndef ___BLADEDLL_H_INCLUDED___
- #define ___BLADEDLL_H_INCLUDED___
- #ifdef __GNUC__
- //#define ATTRIBUTE_PACKED __attribute__((packed))
- #define ATTRIBUTE_PACKED
- #else
- #define ATTRIBUTE_PACKED
- #pragma pack(push)
- #pragma pack(1)
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* 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
- 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 = 1,
- LQP_HIGH_QUALITY = 2,
- LQP_VOICE_QUALITY = 3,
- LQP_R3MIX = 4,
- LQP_VERYHIGH_QUALITY = 5,
- LQP_STANDARD = 6,
- LQP_FAST_STANDARD = 7,
- LQP_EXTREME = 8,
- LQP_FAST_EXTREME = 9,
- LQP_INSANE = 10,
- LQP_ABR = 11,
- LQP_CBR = 12,
- LQP_MEDIUM = 13,
- LQP_FAST_MEDIUM = 14,
- // 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_QUALITY_PRESET;
- typedef struct {
- unsigned long dwConfig; // BE_CONFIG_XXXXX
- // Currently only BE_CONFIG_MP3 is supported
- union {
- struct {
- unsigned long dwSampleRate; // 48000, 44100 and 32000 allowed
- unsigned char byMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
- unsigned short wBitrate; // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
- int bPrivate;
- int bCRC;
- int bCopyright;
- int bOriginal;
- } mp3; // BE_CONFIG_MP3
- struct
- {
- // STRUCTURE INFORMATION
- unsigned long dwStructVersion;
- unsigned long dwStructSize;
- // BASIC ENCODER SETTINGS
- unsigned long dwSampleRate; // SAMPLERATE OF INPUT FILE
- unsigned long dwReSampleRate; // DOWNSAMPLERATE, 0=ENCODER DECIDES
- long nMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
- unsigned long dwBitrate; // CBR bitrate, VBR min bitrate
- unsigned long dwMaxBitrate; // CBR ignored, VBR Max bitrate
- long nPreset; // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum
- unsigned long dwMpegVersion; // FUTURE USE, MPEG-1 OR MPEG-2
- unsigned long dwPsyModel; // FUTURE USE, SET TO 0
- unsigned long dwEmphasis; // FUTURE USE, SET TO 0
- // BIT STREAM SETTINGS
- int bPrivate; // Set Private Bit (TRUE/FALSE)
- int bCRC; // Insert CRC (TRUE/FALSE)
- int bCopyright; // Set Copyright Bit (TRUE/FALSE)
- int bOriginal; // Set Original Bit (TRUE/FALSE)
-
- // VBR STUFF
- int bWriteVBRHeader; // WRITE XING VBR HEADER (TRUE/FALSE)
- int bEnableVBR; // USE VBR ENCODING (TRUE/FALSE)
- int nVBRQuality; // VBR QUALITY 0..9
- unsigned long dwVbrAbr_bps; // Use ABR in stead of nVBRQuality
- VBRMETHOD nVbrMethod;
- int bNoRes; // Disable Bit resorvoir (TRUE/FALSE)
- // MISC SETTINGS
- int bStrictIso; // Use strict ISO encoding rules (TRUE/FALSE)
- unsigned short nQuality; // Quality Setting, HIGH unsigned char should be NOT LOW byte, otherwhise quality=5
- // FUTURE USE, SET TO 0, align strucutre to 331 bytes
- unsigned char btReserved[255-4*sizeof(unsigned long) - sizeof( unsigned short )];
- } LHV1; // LAME header version 1
- struct {
- unsigned long dwSampleRate;
- unsigned char byMode;
- unsigned short wBitrate;
- unsigned char byEncodingMethod;
- } aac;
- } format;
-
- } BE_CONFIG, *PBE_CONFIG ATTRIBUTE_PACKED;
- typedef struct {
- // BladeEnc DLL Version number
- unsigned char byDLLMajorVersion;
- unsigned char byDLLMinorVersion;
- // BladeEnc Engine Version Number
- unsigned char byMajorVersion;
- unsigned char byMinorVersion;
- // DLL Release date
- unsigned char byDay;
- unsigned char byMonth;
- unsigned short wYear;
- // BladeEnc Homepage URL
- char zHomepage[BE_MAX_HOMEPAGE + 1];
- unsigned char byAlphaLevel;
- unsigned char byBetaLevel;
- unsigned char byMMXEnabled;
- unsigned char btReserved[125];
- } BE_VERSION, *PBE_VERSION ATTRIBUTE_PACKED;
- #ifndef _BLADEDLL
- typedef unsigned long (*BEINITSTREAM) (PBE_CONFIG, unsigned long *, unsigned long *, PHBE_STREAM);
- typedef unsigned long (*BEENCODECHUNK) (HBE_STREAM, unsigned long, short *, unsigned char *, unsigned long *);
- // added for floating point audio -- DSPguru, jd
- typedef unsigned long (*BEENCODECHUNKFLOATS16NI) (HBE_STREAM, unsigned long, float *, float *, unsigned char *, unsigned long *);
- typedef unsigned long (*BEDEINITSTREAM) (HBE_STREAM, unsigned char *, unsigned long *);
- typedef unsigned long (*BECLOSESTREAM) (HBE_STREAM);
- typedef void (*BEVERSION) (PBE_VERSION);
- typedef unsigned long (*BEWRITEVBRHEADER) (const char*);
- typedef unsigned long (*BEWRITEINFOTAG) (HBE_STREAM, const char * );
- #define TEXT_BEINITSTREAM "beInitStream"
- #define TEXT_BEENCODECHUNK "beEncodeChunk"
- #define TEXT_BEENCODECHUNKFLOATS16NI "beEncodeChunkFloatS16NI"
- #define TEXT_BEDEINITSTREAM "beDeinitStream"
- #define TEXT_BECLOSESTREAM "beCloseStream"
- #define TEXT_BEVERSION "beVersion"
- #define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader"
- #define TEXT_BEFLUSHNOGAP "beFlushNoGap"
- #define TEXT_BEWRITEINFOTAG "beWriteInfoTag"
- #else
- __declspec(dllexport) unsigned long beInitStream(PBE_CONFIG pbeConfig, Punsigned long dwSamples, Punsigned long dwBufferSize, PHBE_STREAM phbeStream);
- __declspec(dllexport) unsigned long beEncodeChunk(HBE_STREAM hbeStream, unsigned long nSamples, PSHORT pSamples, Punsigned char pOutput, Punsigned long pdwOutput);
- // added for floating point audio -- DSPguru, jd
- __declspec(dllexport) unsigned long beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, unsigned long nSamples, PFLOAT buffer_l, PFLOAT buffer_r, Punsigned char pOutput, Punsigned long pdwOutput);
- __declspec(dllexport) unsigned long beDeinitStream(HBE_STREAM hbeStream, Punsigned char pOutput, Punsigned long pdwOutput);
- __declspec(dllexport) unsigned long beCloseStream(HBE_STREAM hbeStream);
- __declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion);
- __declspec(dllexport) unsigned long beWriteVBRHeader(LPCSTR lpszFileName);
- __declspec(dllexport) unsigned long beFlushNoGap(HBE_STREAM hbeStream, Punsigned char pOutput, Punsigned long pdwOutput);
- __declspec(dllexport) unsigned long beWriteInfoTag( HBE_STREAM hbeStream, LPCSTR lpszFileName );
- #endif
- #ifndef __GNUC__
- #pragma pack(pop)
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|