From 5315ce20f8730c13c3b79f98d90caf8ce74f9cae Mon Sep 17 00:00:00 2001 From: tobigun Date: Wed, 27 Oct 2010 20:09:47 +0000 Subject: 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 --- mediaplugin/src/media/UMediaPlugin.pas | 40 +++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'mediaplugin/src/media/UMediaPlugin.pas') 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; -- cgit v1.2.3