bladedll.pas
上传用户:bjsgzm
上传日期:2007-01-08
资源大小:256k
文件大小:4k
源码类别:

mpeg/mp3

开发平台:

Visual C++

  1. unit bladedll;
  2. (*
  3.     Bladedll.h
  4.     +++++++++++++++++++++++++++
  5.     +   Blade's Encoder DLL   +
  6.     +++++++++++++++++++++++++++
  7.     ------------------------------------------------------
  8.     - Version 1.00 (7 November 1998) - Jukka Poikolainen -
  9.     ------------------------------------------------------
  10.     Initial version
  11.     ------------------------------------------------------
  12.     - Version x.xx (x xxxxxxxx xxxx) - xxxxx xxxxxxxxxxx -
  13.     ------------------------------------------------------
  14.     Delphi Version (D3 and D4).
  15.     Jack Kallestrup (jack.kallestrup@vip.cybercity.dk)
  16.     thanks to Leif Lundberg for helping with the calling convension.
  17.     Changes :
  18.     Calling convention changed from stdcall to cdecl.
  19.     Added TFormat record
  20. *)
  21. interface
  22. uses windows;  //type definitions
  23. const
  24.   // encoding formats
  25.   BE_CONFIG_MP3 = 0;
  26.   BE_CONFIG_ACC = 1;
  27. type
  28.   // type definitions
  29.   THBeStream = ULONG;
  30.   PHBeStream = ^THBEStream;
  31.   TBeErr      = ULONG;
  32.   PSHORT      = ^SHORT;
  33.   PBYTE       = ^Byte;
  34. // error codes
  35. const
  36.   BE_ERR_SUCCESSFUL        = $00000000;
  37.   BE_ERR_INVALID_FORMAT    = $00000001;
  38.   BE_ERR_INVALID_FORMAT_PARAMETERS = $00000002;
  39.   BE_ERR_NO_MORE_HANDLES    = $00000003;
  40.   BE_ERR_INVALID_HANDLE    = 400000004;
  41. // other constants
  42.   BE_MAX_HOMEPAGE    = 256;
  43. // format specific variables
  44.   BE_MP3_MODE_STEREO            = 0;
  45.   BE_MP3_MODE_DUALCHANNEL          = 2;
  46.   BE_MP3_MODE_MONO            = 3;
  47. type
  48.   PMP3 = ^TMP3;
  49.   TMP3 = packed record
  50.     dwSampleRate : DWORD;  // 48000, 44100 and 32000 allowed
  51.     byMode       : Byte;   // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
  52.     wBitrate     : Word;   // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
  53.     bPrivate,
  54.     bCRC,
  55.     bCopyright,
  56.     bOriginal    : Boolean;
  57.   end;
  58.   PAAC = ^TAAC;
  59.   TAAC = packed record
  60.     dwSampleRate : DWORD;
  61.     byMode : Byte;
  62.     wBitrate : Word;
  63.     byEncodingMethod : Byte;
  64.   end;
  65.   PFormat = ^TFormat;
  66.   TFormat = packed record
  67.     case dwConfig : DWord of // BE_CONFIG_XXXXX
  68.       BE_CONFIG_MP3 : (mp3 : TMp3);
  69.       BE_CONFIG_ACC : (acc : TAac);
  70.   end;
  71.   PBEConfig = ^TBEConfig;
  72.   TBEConfig = packed record
  73.     Format   : TFormat; // Currently only BE_CONFIG_MP3 is supported
  74.   end;
  75.   PBEVersion = ^TBEVersion;
  76.   TBEVersion = packed record
  77.     // BladeEnc DLL Version number
  78.     byDLLMajorVersion,
  79.     byDLLMinorVersion,
  80.     // BladeEnc Engine Version Number
  81.     byMajorVersion,
  82.     byMinorVersion,
  83.     // DLL Release date
  84.     byDay,
  85.     byMonth : Byte;
  86.     wYear : Word;
  87.     // BladeEnc Homepage URL
  88.     zHomepage : Array[0..BE_MAX_HOMEPAGE] of char;
  89.   end;
  90.   function beInitStream(var pbeConfig : TBEConfig; var dwSamples : DWORD; var dwBufferSize : DWORD; var phbeStream : THBESTREAM) : TBeErr; cdecl; external 'BLADEENC.DLL';
  91.   (*
  92.     pbeConfig    = Type of mp3
  93.     dwSamples    = Maximum number of samples to encode
  94.     dwBufferSize = Maximum mp3 buffer size
  95.     hbeStream    = BladeEnc-stream
  96.   *)
  97.   function beEncodeChunk(hbeStream : THBEStream; nSamples : DWORD; pSamples : PShort;  pOutput : PByte; var pdwOutput : DWORD) : TBeErr; cdecl; external 'BLADEENC.DLL';
  98.   (*
  99.     hbeStream    =
  100.     nSamples     = Number of samples to encode
  101.     pSamples  = Pointer to buffer with Samples to encode
  102.     pOutput  = Pointer to buffer to recieve encoded samples
  103.     pdwOutput  = number of samples encoded
  104.   *)
  105.   function beDeinitStream(hbeStream : THBEStream;  pOutput : PByte; var pdwOutput : DWORD) : TBeErr; cdecl; external 'BLADEENC.DLL';
  106.   (*
  107.     hbeStream    =
  108.     pOutput  = Pointer to buffer holding encoded samples
  109.     pdwOutput  = Number of samples to write
  110.   *)
  111.   function beCloseStream(hbeStream : THBEStream) : TBeErr; cdecl; external 'BLADEENC.DLL';
  112.   procedure beVersion(var pbeVersion : TBEVersion); cdecl; external 'BLADEENC.DLL';
  113. implementation
  114. end.