Advertisement
Guest User

Lame header

a guest
Dec 17th, 2011
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.75 KB | None | 0 0
  1. /*
  2.  * Blade Type of DLL Interface for Lame encoder
  3.  *
  4.  * Copyright (c) 1999-2002 A.L. Faber
  5.  * Based on bladedll.h version 1.0 written by Jukka Poikolainen
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Library General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2 of the License, or (at your option) any later version.
  11.  *
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Library General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Library General Public
  18.  * License along with this library; if not, write to the
  19.  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  20.  * Boston, MA  02111-1307, USA.
  21.  */
  22.  
  23. #ifndef ___BLADEDLL_H_INCLUDED___
  24. #define ___BLADEDLL_H_INCLUDED___
  25.  
  26. #ifdef __GNUC__
  27. #define ATTRIBUTE_PACKED    __attribute__((packed))
  28. #else
  29. #define ATTRIBUTE_PACKED
  30. #pragma pack(push)
  31. #pragma pack(1)
  32. #endif
  33.  
  34. #ifdef  __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. /* encoding formats */
  39.  
  40. #define     BE_CONFIG_MP3           0                                      
  41. #define     BE_CONFIG_LAME          256    
  42.  
  43. /* type definitions */
  44.  
  45. typedef     void*           HBE_STREAM;
  46. typedef     HBE_STREAM              *PHBE_STREAM;
  47. typedef     unsigned long           BE_ERR;
  48.  
  49. /* error codes */
  50.  
  51. #define     BE_ERR_SUCCESSFUL                   0x00000000
  52. #define     BE_ERR_INVALID_FORMAT               0x00000001
  53. #define     BE_ERR_INVALID_FORMAT_PARAMETERS    0x00000002
  54. #define     BE_ERR_NO_MORE_HANDLES              0x00000003
  55. #define     BE_ERR_INVALID_HANDLE               0x00000004
  56. #define     BE_ERR_BUFFER_TOO_SMALL             0x00000005
  57.  
  58. /* other constants */
  59.  
  60. #define     BE_MAX_HOMEPAGE         128
  61.  
  62. /* format specific variables */
  63.  
  64. #define     BE_MP3_MODE_STEREO      0
  65. #define     BE_MP3_MODE_JSTEREO     1
  66. #define     BE_MP3_MODE_DUALCHANNEL 2
  67. #define     BE_MP3_MODE_MONO        3
  68.  
  69.  
  70.  
  71. #define     MPEG1   1
  72. #define     MPEG2   0
  73.  
  74. #ifdef _BLADEDLL
  75. #undef FLOAT
  76.     #include <Windows.h>
  77. #endif
  78.  
  79. #define CURRENT_STRUCT_VERSION 1
  80. #define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG)   // is currently 331 bytes
  81.  
  82.  
  83. typedef enum
  84. {
  85.     VBR_METHOD_NONE         = -1,
  86.     VBR_METHOD_DEFAULT      =  0,
  87.     VBR_METHOD_OLD          =  1,
  88.     VBR_METHOD_NEW          =  2,
  89.     VBR_METHOD_MTRH         =  3,
  90.     VBR_METHOD_ABR          =  4
  91. } VBRMETHOD;
  92.  
  93. typedef enum
  94. {
  95.     LQP_NOPRESET            =-1,
  96.  
  97.     // QUALITY PRESETS
  98.     LQP_NORMAL_QUALITY      = 0,
  99.     LQP_LOW_QUALITY         = 1,
  100.     LQP_HIGH_QUALITY        = 2,
  101.     LQP_VOICE_QUALITY       = 3,
  102.     LQP_R3MIX               = 4,
  103.     LQP_VERYHIGH_QUALITY    = 5,
  104.     LQP_STANDARD            = 6,
  105.     LQP_FAST_STANDARD       = 7,
  106.     LQP_EXTREME             = 8,
  107.     LQP_FAST_EXTREME        = 9,
  108.     LQP_INSANE              = 10,
  109.     LQP_ABR                 = 11,
  110.     LQP_CBR                 = 12,
  111.     LQP_MEDIUM              = 13,
  112.     LQP_FAST_MEDIUM         = 14,
  113.  
  114.     // NEW PRESET VALUES
  115.     LQP_PHONE   =1000,
  116.     LQP_SW      =2000,
  117.     LQP_AM      =3000,
  118.     LQP_FM      =4000,
  119.     LQP_VOICE   =5000,
  120.     LQP_RADIO   =6000,
  121.     LQP_TAPE    =7000,
  122.     LQP_HIFI    =8000,
  123.     LQP_CD      =9000,
  124.     LQP_STUDIO  =10000
  125.  
  126. } LAME_QUALITY_PRESET;
  127.  
  128.  
  129.  
  130. typedef struct  {
  131.     DWORD   dwConfig;           // BE_CONFIG_XXXXX
  132.                                 // Currently only BE_CONFIG_MP3 is supported
  133.     union   {
  134.  
  135.         struct  {
  136.  
  137.             DWORD   dwSampleRate;       // 48000, 44100 and 32000 allowed
  138.             BYTE    byMode;         // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
  139.             WORD    wBitrate;       // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
  140.             BOOL    bPrivate;      
  141.             BOOL    bCRC;
  142.             BOOL    bCopyright;
  143.             BOOL    bOriginal;
  144.  
  145.             } mp3;                  // BE_CONFIG_MP3
  146.  
  147.             struct
  148.             {
  149.             // STRUCTURE INFORMATION
  150.             DWORD           dwStructVersion;   
  151.             DWORD           dwStructSize;
  152.  
  153.             // BASIC ENCODER SETTINGS
  154.             DWORD           dwSampleRate;       // SAMPLERATE OF INPUT FILE
  155.             DWORD           dwReSampleRate;     // DOWNSAMPLERATE, 0=ENCODER DECIDES  
  156.             LONG            nMode;              // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
  157.             DWORD           dwBitrate;          // CBR bitrate, VBR min bitrate
  158.             DWORD           dwMaxBitrate;       // CBR ignored, VBR Max bitrate
  159.             LONG            nPreset;            // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum
  160.             DWORD           dwMpegVersion;      // FUTURE USE, MPEG-1 OR MPEG-2
  161.             DWORD           dwPsyModel;         // FUTURE USE, SET TO 0
  162.             DWORD           dwEmphasis;         // FUTURE USE, SET TO 0
  163.  
  164.             // BIT STREAM SETTINGS
  165.             BOOL            bPrivate;           // Set Private Bit (TRUE/FALSE)
  166.             BOOL            bCRC;               // Insert CRC (TRUE/FALSE)
  167.             BOOL            bCopyright;         // Set Copyright Bit (TRUE/FALSE)
  168.             BOOL            bOriginal;          // Set Original Bit (TRUE/FALSE)
  169.            
  170.             // VBR STUFF
  171.             BOOL            bWriteVBRHeader;    // WRITE XING VBR HEADER (TRUE/FALSE)
  172.             BOOL            bEnableVBR;         // USE VBR ENCODING (TRUE/FALSE)
  173.             INT             nVBRQuality;        // VBR QUALITY 0..9
  174.             DWORD           dwVbrAbr_bps;       // Use ABR in stead of nVBRQuality
  175.             VBRMETHOD       nVbrMethod;
  176.             BOOL            bNoRes;             // Disable Bit resorvoir (TRUE/FALSE)
  177.  
  178.             // MISC SETTINGS
  179.             BOOL            bStrictIso;         // Use strict ISO encoding rules (TRUE/FALSE)
  180.             WORD            nQuality;           // Quality Setting, HIGH BYTE should be NOT LOW byte, otherwhise quality=5
  181.  
  182.             // FUTURE USE, SET TO 0, align strucutre to 331 bytes
  183.             BYTE            btReserved[255-4*sizeof(DWORD) - sizeof( WORD )];
  184.  
  185.             } LHV1;                 // LAME header version 1
  186.  
  187.         struct  {
  188.  
  189.             DWORD   dwSampleRate;
  190.             BYTE    byMode;
  191.             WORD    wBitrate;
  192.             BYTE    byEncodingMethod;
  193.  
  194.         } aac;
  195.  
  196.     } format;
  197.        
  198. } BE_CONFIG, *PBE_CONFIG ATTRIBUTE_PACKED;
  199.  
  200.  
  201. typedef struct  {
  202.  
  203.     // BladeEnc DLL Version number
  204.  
  205.     BYTE    byDLLMajorVersion;
  206.     BYTE    byDLLMinorVersion;
  207.  
  208.     // BladeEnc Engine Version Number
  209.  
  210.     BYTE    byMajorVersion;
  211.     BYTE    byMinorVersion;
  212.  
  213.     // DLL Release date
  214.  
  215.     BYTE    byDay;
  216.     BYTE    byMonth;
  217.     WORD    wYear;
  218.  
  219.     // BladeEnc Homepage URL
  220.  
  221.     CHAR    zHomepage[BE_MAX_HOMEPAGE + 1];
  222.  
  223.     BYTE    byAlphaLevel;
  224.     BYTE    byBetaLevel;
  225.     BYTE    byMMXEnabled;
  226.  
  227.     BYTE    btReserved[125];
  228.  
  229.  
  230. } BE_VERSION, *PBE_VERSION ATTRIBUTE_PACKED;
  231.  
  232. #ifndef _BLADEDLL
  233.  
  234. typedef BE_ERR  (*BEINITSTREAM)         (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM);
  235. typedef BE_ERR  (*BEENCODECHUNK)        (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD);
  236.  
  237. // added for floating point audio  -- DSPguru, jd
  238. typedef BE_ERR  (*BEENCODECHUNKFLOATS16NI)  (HBE_STREAM, DWORD, PFLOAT, PFLOAT, PBYTE, PDWORD);
  239. typedef BE_ERR  (*BEDEINITSTREAM)           (HBE_STREAM, PBYTE, PDWORD);
  240. typedef BE_ERR  (*BECLOSESTREAM)            (HBE_STREAM);
  241. typedef VOID    (*BEVERSION)                (PBE_VERSION);
  242. typedef BE_ERR  (*BEWRITEVBRHEADER)         (LPCSTR);
  243. typedef BE_ERR  (*BEWRITEINFOTAG)           (HBE_STREAM, LPCSTR );
  244.  
  245. #define TEXT_BEINITSTREAM               "beInitStream"
  246. #define TEXT_BEENCODECHUNK              "beEncodeChunk"
  247. #define TEXT_BEENCODECHUNKFLOATS16NI    "beEncodeChunkFloatS16NI"
  248. #define TEXT_BEDEINITSTREAM             "beDeinitStream"
  249. #define TEXT_BECLOSESTREAM              "beCloseStream"
  250. #define TEXT_BEVERSION                  "beVersion"
  251. #define TEXT_BEWRITEVBRHEADER           "beWriteVBRHeader"
  252. #define TEXT_BEFLUSHNOGAP               "beFlushNoGap"
  253. #define TEXT_BEWRITEINFOTAG             "beWriteInfoTag"
  254.  
  255.  
  256. #else
  257.  
  258. __declspec(dllexport) BE_ERR    beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream);
  259. __declspec(dllexport) BE_ERR    beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput);
  260.  
  261. // added for floating point audio  -- DSPguru, jd
  262. __declspec(dllexport) BE_ERR    beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput);
  263. __declspec(dllexport) BE_ERR    beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput);
  264. __declspec(dllexport) BE_ERR    beCloseStream(HBE_STREAM hbeStream);
  265. __declspec(dllexport) VOID  beVersion(PBE_VERSION pbeVersion);
  266. __declspec(dllexport) BE_ERR    beWriteVBRHeader(LPCSTR lpszFileName);
  267. __declspec(dllexport) BE_ERR    beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput);
  268. __declspec(dllexport) BE_ERR    beWriteInfoTag( HBE_STREAM hbeStream, LPCSTR lpszFileName );
  269.  
  270. #endif
  271.  
  272. #ifdef  __cplusplus
  273. }
  274. #endif
  275.  
  276. #ifndef __GNUC__
  277. #pragma pack(pop)
  278. #endif
  279.  
  280. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement