load_vorbis.monkey2 669 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. Namespace std.audio
  2. Function LoadAudioData_OGG:AudioData( path:String )
  3. Local buf:=std.memory.DataBuffer.Load( path )
  4. If Not buf Return Null
  5. Local channels:Int
  6. Local hertz:Int
  7. Local samples:Short Ptr
  8. Local length:=stb.vorbis.stb_vorbis_decode_memory( buf.Data,buf.Length,Varptr channels,Varptr hertz,Varptr samples )
  9. If length=-1 Return Null
  10. Local format:AudioFormat
  11. Select channels
  12. Case 1
  13. format=AudioFormat.Mono16
  14. Case 2
  15. format=AudioFormat.Mono16
  16. Default
  17. libc.free( samples )
  18. Return Null
  19. End
  20. Local data:=New AudioData( length,format,hertz,samples )
  21. data.OnDiscarded+=Lambda()
  22. libc.free( samples )
  23. End
  24. Return data
  25. End