aboutsummaryrefslogtreecommitdiffstats
path: root/mediaplugin/src/media/UMediaPlugin.pas
diff options
context:
space:
mode:
authortobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-10-27 20:09:47 +0000
committertobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-10-27 20:09:47 +0000
commit5315ce20f8730c13c3b79f98d90caf8ce74f9cae (patch)
tree2f449ffc04a6d570e95730e0c45198acb64733c7 /mediaplugin/src/media/UMediaPlugin.pas
parent9dad0e6acee4ca2d511334438b8e4417214fd93f (diff)
downloadusdx-5315ce20f8730c13c3b79f98d90caf8ce74f9cae.tar.gz
usdx-5315ce20f8730c13c3b79f98d90caf8ce74f9cae.tar.xz
usdx-5315ce20f8730c13c3b79f98d90caf8ce74f9cae.zip
ffmpeg audio converter moved to media plugin
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/experimental@2690 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'mediaplugin/src/media/UMediaPlugin.pas')
-rw-r--r--mediaplugin/src/media/UMediaPlugin.pas40
1 files changed, 35 insertions, 5 deletions
diff --git a/mediaplugin/src/media/UMediaPlugin.pas b/mediaplugin/src/media/UMediaPlugin.pas
index 8e2708bf..c676619c 100644
--- a/mediaplugin/src/media/UMediaPlugin.pas
+++ b/mediaplugin/src/media/UMediaPlugin.pas
@@ -36,6 +36,7 @@ interface
{$ENDIF}
uses
+ UMusic,
ctypes;
type
@@ -78,7 +79,7 @@ type
end;
PAudioDecodeStream = Pointer;
- PAudioResampleStream = Pointer;
+ PAudioConvertStream = Pointer;
PCAudioFormatInfo = ^TCAudioFormatInfo;
TCAudioFormatInfo = record
@@ -104,9 +105,11 @@ type
PAudioConverterInfo = ^TAudioConverterInfo;
TAudioConverterInfo = record
- open: function(inputFormat: PCAudioFormatInfo; outputFormat: PCAudioFormatInfo): PAudioResampleStream; cdecl;
- close: procedure(stream: PAudioResampleStream); cdecl;
- convert: function(stream: PAudioResampleStream; input, output: PCuint8; numSamples: cint): cint; cdecl;
+ open: function(inputFormat: PCAudioFormatInfo; outputFormat: PCAudioFormatInfo): PAudioConvertStream; cdecl;
+ close: procedure(stream: PAudioConvertStream); cdecl;
+ convert: function(stream: PAudioConvertStream; input, output: PCuint8; numSamples: PCint): cint; cdecl;
+ getOutputBufferSize: function(stream: PAudioConvertStream; inputSize: cint): cint; cdecl;
+ getRatio: function(stream: PAudioConvertStream): double; cdecl;
end;
PMediaPluginInfo = ^TMediaPluginInfo;
@@ -119,10 +122,29 @@ type
audioConverter: PAudioConverterInfo;
end;
- Plugin_register = function(core: PMediaPluginCore): PMediaPluginInfo; cdecl;
+ Plugin_registerFunc = function(core: PMediaPluginCore): PMediaPluginInfo; cdecl;
+
+const
+{$IFDEF MSWINDOWS}
+ ffmpegPlugin = 'ffmpeg_playback.dll';
+{$ENDIF}
+{$IFDEF LINUX}
+ ffmpegPlugin = 'ffmpeg_playback';
+{$ENDIF}
+{$IFDEF DARWIN}
+ ffmpegPlugin = 'ffmpeg_playback.dylib';
+ {$linklib ffmpegPlugin}
+{$ENDIF}
+
+function Plugin_register(core: PMediaPluginCore): PMediaPluginInfo;
+ cdecl; external ffmpegPlugin;
+
function MediaPluginCore: PMediaPluginCore;
+procedure AudioFormatInfoToCStruct(
+ const Info: TAudioFormatInfo; var CInfo: TCAudioFormatInfo);
+
implementation
uses
@@ -147,6 +169,14 @@ begin
Result := @MediaPluginCore_Instance;
end;
+procedure AudioFormatInfoToCStruct(
+ const Info: TAudioFormatInfo; var CInfo: TCAudioFormatInfo);
+begin
+ CInfo.sampleRate := Info.SampleRate;
+ CInfo.channels := Info.Channels;
+ CInfo.format := Ord(Info.Format);
+end;
+
{* Misc *}
procedure Core_log(level: cint; msg: PChar; context: PChar); cdecl;