Browse Source

Added OGG support to AudioData.Load.

Mark Sibly 9 years ago
parent
commit
e9e1722f87

+ 10 - 5
modules/std/audio/audiodata.monkey2

@@ -7,23 +7,23 @@ Class AudioData
 
 
 	Method New( length:Int,format:AudioFormat,hertz:Int )
 	Method New( length:Int,format:AudioFormat,hertz:Int )
 	
 	
-		Local data:=Cast<UByte Ptr>( libc.malloc( BytesPerSample( format )*length ) )
+		Local data:=libc.malloc( BytesPerSample( format )*length )
 		
 		
 		_length=length
 		_length=length
 		_format=format
 		_format=format
 		_hertz=hertz
 		_hertz=hertz
-		_data=data
+		_data=Cast<UByte Ptr>( data )
 		
 		
 		OnDiscarded=Lambda()
 		OnDiscarded=Lambda()
 			libc.free( data )
 			libc.free( data )
 		End
 		End
 	End
 	End
 
 
-	Method New( length:Int,format:AudioFormat,hertz:Int,data:UByte ptr )
+	Method New( length:Int,format:AudioFormat,hertz:Int,data:Void Ptr )
 		_length=length
 		_length=length
 		_format=format
 		_format=format
 		_hertz=hertz
 		_hertz=hertz
-		_data=data
+		_data=Cast<UByte Ptr>( data )
 	End
 	End
 	
 	
 	Property Length:Int()
 	Property Length:Int()
@@ -62,7 +62,12 @@ Class AudioData
 	
 	
 	Function Load:AudioData( path:String )
 	Function Load:AudioData( path:String )
 	
 	
-		Return wavloader.LoadAudioData( path )
+		Select ExtractExt( path ).ToLower()
+		Case ".wav" Return LoadAudioData_WAV( path )
+		Case ".ogg" Return LoadAudioData_OGG( path )
+		End
+		
+		Return Null
 	End
 	End
 	
 	
 	Private
 	Private

+ 0 - 87
modules/std/audio/audioloader.monkey2

@@ -1,87 +0,0 @@
-
-#include "<libc>"
-
-Namespace std.audio.wavloader
-
-Private
-
-Using std.stream
-
-Struct WAV_Header
-	'
-	Field RIFF:Int
-	Field len:Int
-	Field WAVE:Int
-	Field fmt:Int
-	Field headerLen:Int
-	'
-	Field formatTag:Short
-	Field numChannels:Short
-	Field samplesPerSec:Int
-	Field avgBytesPerSec:Int
-	Field blockalignment:Short
-	Field bitsPerSample:Short
-	'
-End
-
-Function ReadWAV:AudioData( stream:Stream )
-
-	Local header:=New WAV_Header
-	Local header_sz:=libc.sizeof( header )
-	
-	If stream.Read( Varptr header,header_sz )<>header_sz Return null
-
-	If header.RIFF<>$46464952 Return Null
-
-	Local format:AudioFormat
-	
-	If header.numChannels=1 And header.bitsPerSample=8
-		format=AudioFormat.Mono8
-	Else If header.numChannels=1 And header.bitsPerSample=16
-		format=AudioFormat.Mono16
-	Else If header.numChannels=2 And header.bitsPerSample=8
-		format=AudioFormat.Stereo8
-	Else If header.numChannels=2 And header.bitsPerSample=16
-		format=AudioFormat.Stereo16
-	Else
-		Return Null
-	Endif
-	
-	Local skip:=header.headerLen-16
-	If skip>0 stream.Skip( skip )
-	
-	While Not stream.Eof
-	
-		Local tag:=stream.ReadInt()
-		Local size:=stream.ReadInt()
-		
-		If tag<>$61746164	'"DATA"
-			stream.Skip( size )
-			Continue
-		Endif
-		
-		Local data:=New AudioData( size/BytesPerSample( format ),format,header.samplesPerSec )
-		
-		stream.Read( data.Data,size )
-		
-		Return data
-
-	Wend
-	
-	Return Null
-
-End
-
-Public
-
-Function LoadAudioData:AudioData( path:String )
-
-	Local stream:=Stream.Open( path,"r" )
-	If Not stream Return Null
-	
-	Local data:=ReadWAV( stream )
-	
-	stream.Close()
-	Return data
-
-End

+ 1 - 1
modules/std/module.json

@@ -1,5 +1,5 @@
 {
 {
 	"module":"std",
 	"module":"std",
 	"version":"1.0.0",
 	"version":"1.0.0",
-	"depends":["libc","stb-image","stb-image-write","miniz"]
+	"depends":["libc","miniz","stb-image","stb-image-write","stb-vorbis"]
 }
 }

+ 3 - 1
modules/std/std.monkey2

@@ -4,6 +4,7 @@ Namespace std
 #Import "<libc.monkey2>"
 #Import "<libc.monkey2>"
 #Import "<stb-image>"
 #Import "<stb-image>"
 #Import "<stb-image-write>"
 #Import "<stb-image-write>"
+#import "<stb-vorbis>"
 
 
 #Import "collections/container"
 #Import "collections/container"
 #Import "collections/stack"
 #Import "collections/stack"
@@ -37,7 +38,8 @@ Namespace std
 
 
 #import "audio/audioformat"
 #import "audio/audioformat"
 #import "audio/audiodata"
 #import "audio/audiodata"
-#import "audio/audioloader"
+#import "audio/load_wav"
+#import "audio/load_vorbis"
 
 
 #Import "misc/random"
 #Import "misc/random"
 #Import "misc/chartype"
 #Import "misc/chartype"