(* delphi/kylix headers for oggvorbis software codec. translated from vorbisenc.h header by andrei borovsky, acs@compiler4.net the original c/c++ headers and libraries (c) copyright 1994-2001 by the xiphophorus company http://www.xiph.org/ *) { $Log: vorbisenc.pas,v $ Revision 1.2 2005/12/29 20:46:00 z0m3ie fixed some problems with vorbis in lazarus Revision 1.1 2005/12/19 18:36:56 z0m3ie *** empty log message *** Revision 1.1 2005/09/12 22:04:53 z0m3ie modified structure again, fileformats are now in an sperat folder. all File In/Out classes are capsulated from TFileIn and TFileOut Revision 1.1 2005/08/25 20:18:00 z0m3ie Version 2.4 restructure TCDPlayer removed (fits not in component structure) TMP3ToWavConverter removed (fits not in component structure) Revision 1.2 2005/08/22 20:17:01 z0m3ie changed Headers to log changed mail adress } unit vorbisenc; {$ifdef fpc} {$mode delphi} {$endif} interface uses ACS_Procs, {$IFDEF LINUX} baseunix,dl, {$ENDIF} {$IFDEF WIN32} Windows, {$ENDIF} vorbiscodec; const {$IFDEF LINUX} LibvorbisencPath = 'libvorbisenc.so*'; //'/usr/lib/libvorbisenc.so'; {$DEFINE SEARCH_LIBS} {$ENDIF} {$IFDEF WIN32} LibvorbisencPath = 'vorbisenc.dll'; {$ENDIF} OV_ECTL_RATEMANAGE2_GET = $14; OV_ECTL_RATEMANAGE2_SET = $15; var LibvorbisencLoaded : Boolean = False; type vorbis_encode_init_t = function(var vi: VORBIS_INFO; channels: LongInt; rate: LongInt; max_bitrate: LongInt; nominal_bitrate: LongInt; min_bitrate: LongInt): Integer cdecl; vorbis_encode_setup_managed_t = function(var vi: VORBIS_INFO; channels: LongInt; rate: LongInt; max_bitrate: LongInt; nominal_bitrate: LongInt; min_bitrate: LongInt): Integer; cdecl; vorbis_encode_setup_vbr_t = function(var vi: VORBIS_INFO; channels: LongInt; rate: LongInt; fl: Single): Integer; cdecl; vorbis_encode_init_vbr_t = function(var vi: VORBIS_INFO; channels: LongInt; rate: LongInt; base_quality: Single): Integer; cdecl; vorbis_encode_setup_init_t = function(var vi: VORBIS_INFO): Integer; cdecl; vorbis_encode_ctl_t = function(var vi: VORBIS_INFO; number: Integer; arg: Pointer): Integer; cdecl; ovectl_ratemanage2_arg = record management_active : Integer; bitrate_limit_min_kbps : LongWord; bitrate_limit_max_kbps : LongWord; bitrate_limit_reservoir_bits : LongWord; bitrate_limit_reservoir_bias : Double; bitrate_average_kbps : LongWord; bitrate_average_damping : Double; end; var vorbis_encode_init : vorbis_encode_init_t; vorbis_encode_setup_managed : vorbis_encode_setup_managed_t; vorbis_encode_setup_vbr : vorbis_encode_setup_vbr_t; vorbis_encode_init_vbr : vorbis_encode_init_vbr_t; vorbis_encode_setup_init : vorbis_encode_setup_init_t; vorbis_encode_ctl : vorbis_encode_ctl_t; implementation {$IFDEF LINUX} var Libhandle : Pointer; {$IFDEF SEARCH_LIBS} Path : String; {$ENDIF} initialization {$IFDEF SEARCH_LIBS} Libhandle := nil; Path := FindLibs(LibvorbisencPath); if Path <> '' then Libhandle := dlopen(@Path[1], RTLD_NOW or RTLD_GLOBAL); {$ELSE} Libhandle := dlopen(LibvorbisencPath, RTLD_NOW or RTLD_GLOBAL); {$ENDIF} if Libhandle <> nil then begin LibvorbisencLoaded := True; vorbis_encode_init := dlsym(Libhandle, 'vorbis_encode_init'); vorbis_encode_setup_managed := dlsym(Libhandle, 'vorbis_encode_setup_managed'); vorbis_encode_setup_vbr := dlsym(Libhandle, 'vorbis_encode_setup_vbr'); vorbis_encode_init_vbr := dlsym(Libhandle, 'vorbis_encode_init_vbr'); vorbis_encode_setup_init := dlsym(Libhandle, 'vorbis_encode_setup_init'); vorbis_encode_ctl := dlsym(Libhandle, 'vorbis_encode_ctl'); end; finalization if libhandle <> nil then dlclose(Libhandle); {$ENDIF} {$IFDEF WIN32} var Libhandle : HMODULE; initialization Libhandle := LoadLibraryEx(LibvorbisencPath, 0, 0); if Libhandle <> 0 then begin LibvorbisencLoaded := True; vorbis_encode_init := GetProcAddress(Libhandle, 'vorbis_encode_init'); vorbis_encode_setup_managed := GetProcAddress(Libhandle, 'vorbis_encode_setup_managed'); vorbis_encode_setup_vbr := GetProcAddress(Libhandle, 'vorbis_encode_setup_vbr'); vorbis_encode_init_vbr := GetProcAddress(Libhandle, 'vorbis_encode_init_vbr'); vorbis_encode_setup_init := GetProcAddress(Libhandle, 'vorbis_encode_setup_init'); vorbis_encode_ctl := GetProcAddress(Libhandle, 'vorbis_encode_ctl'); end; finalization if libhandle <> 0 then FreeLibrary(Libhandle); {$ENDIF} end.