diff --git a/lime/_backend/native/NativeCFFI.hx b/lime/_backend/native/NativeCFFI.hx index 0c9c9664d..d63a23864 100644 --- a/lime/_backend/native/NativeCFFI.hx +++ b/lime/_backend/native/NativeCFFI.hx @@ -22,6 +22,7 @@ import lime.math.Matrix3; import lime.math.Vector2; import lime.media.openal.ALContext; import lime.media.openal.ALDevice; +import lime.media.AudioBuffer; import lime.system.DisplayMode; import lime.utils.ArrayBufferView; #end @@ -58,6 +59,8 @@ class NativeCFFI { @:cffi private static function lime_application_set_frame_rate (handle:Dynamic, value:Float):Void; @:cffi private static function lime_application_update (handle:Dynamic):Bool; @:cffi private static function lime_audio_load (data:Dynamic, buffer:Dynamic):Dynamic; + @:cffi private static function lime_audio_load_bytes (data:Dynamic, buffer:Dynamic):Dynamic; + @:cffi private static function lime_audio_load_file (path:Dynamic, buffer:Dynamic):Dynamic; @:cffi private static function lime_bytes_from_data_pointer (data:Float, length:Int, bytes:Dynamic):Dynamic; @:cffi private static function lime_bytes_get_data_pointer (data:Dynamic):Float; @:cffi private static function lime_bytes_get_data_pointer_offset (data:Dynamic, offset:Int):Float; @@ -211,7 +214,9 @@ class NativeCFFI { @:hlNative("lime", "lime_application_quit") private static function lime_application_quit (handle:CFFIPointer):Int { return 0; } @:hlNative("lime", "lime_application_set_frame_rate") private static function lime_application_set_frame_rate (handle:CFFIPointer, value:Float):Void {} @:hlNative("lime", "lime_application_update") private static function lime_application_update (handle:CFFIPointer):Bool { return false; } - @:cffi private static function lime_audio_load (data:Dynamic, buffer:Dynamic):Dynamic; + // @:cffi private static function lime_audio_load (data:Dynamic, buffer:Dynamic):Dynamic; + @:hlNative("lime", "lime_audio_load_bytes") private static function lime_audio_load_bytes (data:Bytes, buffer:AudioBuffer):AudioBuffer { return null; } + @:hlNative("lime", "lime_audio_load_file") private static function lime_audio_load_file (path:String, buffer:AudioBuffer):AudioBuffer { return null; } @:hlNative("lime", "lime_bytes_from_data_pointer") private static function lime_bytes_from_data_pointer (data:Float, length:Int, bytes:Bytes):Bytes { return null; } @:hlNative("lime", "lime_bytes_get_data_pointer") private static function lime_bytes_get_data_pointer (data:Bytes):Float { return 0; } @:hlNative("lime", "lime_bytes_get_data_pointer_offset") private static function lime_bytes_get_data_pointer_offset (data:Bytes, offset:Int):Float { return 0; } @@ -258,7 +263,7 @@ class NativeCFFI { @:hlNative("lime", "lime_gzip_decompress") private static function lime_gzip_decompress (data:Bytes, bytes:Bytes):Bytes { return null; } @:hlNative("lime", "lime_haptic_vibrate") private static function lime_haptic_vibrate (period:Int, duration:Int):Void {} @:hlNative("lime", "lime_image_encode") private static function lime_image_encode (data:ImageBuffer, type:Int, quality:Int, bytes:Bytes):Bytes { return null; } - @:cffi private static function lime_image_load (data:Dynamic, buffer:Dynamic):Dynamic; + // @:cffi private static function lime_image_load (data:Dynamic, buffer:Dynamic):Dynamic; @:hlNative("lime", "lime_image_load_bytes") private static function lime_image_load_bytes (data:Bytes, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_image_load_file") private static function lime_image_load_file (path:String, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_image_data_util_color_transform") private static function lime_image_data_util_color_transform (image:Image, rect:Rectangle, colorMatrix:ArrayBufferView):Void {} @@ -299,7 +304,7 @@ class NativeCFFI { @:hlNative("lime", "lime_mouse_show") private static function lime_mouse_show ():Void {} @:hlNative("lime", "lime_mouse_warp") private static function lime_mouse_warp (x:Int, y:Int, window:CFFIPointer):Void {} @:hlNative("lime", "lime_mouse_event_manager_register") private static function lime_mouse_event_manager_register (callback:Void->Void, eventObject:MouseEventInfo):Void {} - @:cffi private static function lime_neko_execute (module:String):Void; + // @:cffi private static function lime_neko_execute (module:String):Void; @:hlNative("lime", "lime_png_decode_bytes") private static function lime_png_decode_bytes (data:Bytes, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_png_decode_file") private static function lime_png_decode_file (path:String, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_renderer_create") private static function lime_renderer_create (window:CFFIPointer):CFFIPointer { return null; } diff --git a/lime/media/AudioBuffer.hx b/lime/media/AudioBuffer.hx index 704a24e30..bd1da9c90 100644 --- a/lime/media/AudioBuffer.hx +++ b/lime/media/AudioBuffer.hx @@ -136,7 +136,7 @@ class AudioBuffer { var audioBuffer = new AudioBuffer (); audioBuffer.data = new UInt8Array (Bytes.alloc (0)); - return NativeCFFI.lime_audio_load (bytes, audioBuffer); + return NativeCFFI.lime_audio_load_bytes (bytes, audioBuffer); #else @@ -144,7 +144,7 @@ class AudioBuffer { var base64StringSplit = base64String.split (","); var base64StringNoEncoding = base64StringSplit[base64StringSplit.length - 1]; var bytes: Bytes = Base64.decode (base64StringNoEncoding); - var data:Dynamic = NativeCFFI.lime_audio_load (bytes, null); + var data:Dynamic = NativeCFFI.lime_audio_load_bytes (bytes, null); if (data != null) { @@ -186,11 +186,11 @@ class AudioBuffer { var audioBuffer = new AudioBuffer (); audioBuffer.data = new UInt8Array (Bytes.alloc (0)); - return NativeCFFI.lime_audio_load (bytes, audioBuffer); + return NativeCFFI.lime_audio_load_bytes (bytes, audioBuffer); #else - var data:Dynamic = NativeCFFI.lime_audio_load (bytes, null); + var data:Dynamic = NativeCFFI.lime_audio_load_bytes (bytes, null); if (data != null) { @@ -265,11 +265,11 @@ class AudioBuffer { var audioBuffer = new AudioBuffer (); audioBuffer.data = new UInt8Array (Bytes.alloc (0)); - return NativeCFFI.lime_audio_load (path, audioBuffer); + return NativeCFFI.lime_audio_load_file (path, audioBuffer); #else - var data:Dynamic = NativeCFFI.lime_audio_load (path, null); + var data:Dynamic = NativeCFFI.lime_audio_load_file (path, null); if (data != null) { diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index a6c0da4c0..42fa0a30b 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -3948,6 +3948,8 @@ namespace lime { DEFINE_PRIME2v (lime_application_set_frame_rate); DEFINE_PRIME1 (lime_application_update); DEFINE_PRIME2 (lime_audio_load); + DEFINE_PRIME2 (lime_audio_load_bytes); + DEFINE_PRIME2 (lime_audio_load_file); DEFINE_PRIME3 (lime_bytes_from_data_pointer); DEFINE_PRIME1 (lime_bytes_get_data_pointer); DEFINE_PRIME2 (lime_bytes_get_data_pointer_offset); @@ -4117,10 +4119,11 @@ namespace lime { #define _TTEXT_EVENT _OBJ (_I32 _I32 _I32 _STRING _I32 _I32) #define _TTOUCH_EVENT _OBJ (_I32 _F64 _F64 _I32 _F64 _I32 _F64 _F64) #define _TVECTOR2 _OBJ (_I32 _I32 _I32) + #define _TVORBISFILE _OBJ (_I32 _DYN) #define _TWINDOW_EVENT _OBJ (_I32 _I32 _I32 _I32 _I32 _I32) #define _TARRAYBUFFERVIEW _OBJ (_I32 _TARRAYBUFFER _I32 _I32 _I32 _I32) - #define _TAUDIOBUFFER _OBJ (_I32 _I32 _TARRAYBUFFERVIEW _I32 _DYN _DYN _DYN _DYN _DYN _DYN _DYN) + #define _TAUDIOBUFFER _OBJ (_I32 _I32 _TARRAYBUFFERVIEW _I32 _DYN _DYN _DYN _DYN _DYN _DYN _TVORBISFILE) #define _TIMAGEBUFFER _OBJ (_I32 _TARRAYBUFFERVIEW _I32 _I32 _BOOL _BOOL _I32 _DYN _DYN _DYN _DYN _DYN _DYN) #define _TIMAGE _OBJ (_TIMAGEBUFFER _BOOL _I32 _I32 _I32 _TRECTANGLE _ENUM _I32 _I32 _F64 _F64)