-
Notifications
You must be signed in to change notification settings - Fork 3
/
BassEnc_OPUS.pas
101 lines (82 loc) · 3.03 KB
/
BassEnc_OPUS.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
{
BassEnc_OPUS 2.4 Delphi unit
Copyright (c) 2016-2020 Un4seen Developments Ltd.
See the BASSENC_OPUS.CHM file for more detailed documentation
NOTE: Delphi users should use the BASS_UNICODE flag where possible
}
{
TDDung - Vietnam, May 2021
}
unit BassEnc_OPUS;
interface
uses
{$IFDEF MSWINDOWS}
Windows,
{$ENDIF}
SysUtils, Bass, BassEnc;
const
{$IFDEF MSWINDOWS}
BassEncOpusDLL = 'bassenc_opus.dll';
{$ENDIF}
{$IFDEF LINUX}
BassEncOpusDLL = 'libbassenc_opus.so';
{$ENDIF}
{$IFDEF MACOS}
{$IFDEF IOS} // Needed frameworks: AudioToolbox, SystemConfiguration, CFNetwork, Accelerate, CoreMIDI (if using BASSMIDI)
BassEncOpusDLL = 'Bass\Add-ons\Libs\iOS\libbassenc_opus.a'; // Full path for static linking
{$ELSE}
BassEncOpusDLL = 'libbassenc_opus.dylib';
{$ENDIF}
{$ENDIF}
{$IFDEF ANDROID}
BassEncOpusDLL = 'libbassenc_opus.so';
{$ENDIF}
{$IFDEF IOS}
function BASS_Encode_OPUS_GetVersion: Cardinal; cdecl; external BassEncOpusDLL;
function BASS_Encode_OPUS_NewStream(handle: HENCODE; options: PChar; flags: Cardinal): BOOL; cdecl; external BassEncOpusDLL;
function BASS_Encode_OPUS_Start(handle:Cardinal; options:PChar; flags:Cardinal; proc:ENCODEPROC; user:Pointer): HENCODE; cdecl; external BassEncOpusDLL;
function BASS_Encode_OPUS_StartFile(handle:Cardinal; options:PChar; flags:Cardinal; filename:PChar): HENCODE; cdecl; external BassEncOpusDLL;
{$ELSE}
var
BASS_Encode_OPUS_GetVersion:function:Cardinal; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
BASS_Encode_OPUS_NewStream:function(handle: HENCODE; options: PChar; flags: Cardinal): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
BASS_Encode_OPUS_Start:function(handle:Cardinal; options:PChar; flags:Cardinal; proc:ENCODEPROC; user:Pointer): HENCODE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
BASS_Encode_OPUS_StartFile:function(handle:Cardinal; options:PChar; flags:Cardinal; filename:PChar): HENCODE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
var
FBassEncOpusDLL : THandle = 0;
{$ENDIF}
function BassEncOPUS_IsAvailable: Boolean;
implementation
function BassEncOPUS_IsAvailable: Boolean;
begin
{$IFDEF IOS}
Result := True;
{$ELSE}
Result := FBassEncOpusDLL <> 0;
{$ENDIF}
end;
{$IFNDEF IOS}
procedure LoadBassEncOpusDLL;
begin
FBassEncOpusDLL := LoadLibrary(PChar(BassEncOpusDLL));
if FBassEncOpusDLL = 0 then
Exit;
BASS_Encode_OPUS_GetVersion:= GetProcAddress(FBassEncOpusDLL, PChar('BASS_Encode_OPUS_GetVersion'));
BASS_Encode_OPUS_NewStream:= GetProcAddress(FBassEncOpusDLL, PChar('BASS_Encode_OPUS_NewStream'));
BASS_Encode_OPUS_Start:= GetProcAddress(FBassEncOpusDLL, PChar('BASS_Encode_OPUS_Start'));
BASS_Encode_OPUS_StartFile:= GetProcAddress(FBassEncOpusDLL, PChar('BASS_Encode_OPUS_StartFile'));
end;
procedure UnloadBassEncOpusDLL;
begin
FreeLibrary(FBassEncOpusDLL);
end;
{$ENDIF}
initialization
{$IFNDEF IOS}
LoadBassEncOpusDLL;
{$ENDIF}
finalization
{$IFNDEF IOS}
UnloadBassEncOpusDLL;
{$ENDIF}
end.