2
0

encoding.odin 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package miniaudio
  2. import "core:c"
  3. when ODIN_OS == .Windows {
  4. foreign import lib "lib/miniaudio.lib"
  5. } else {
  6. foreign import lib "lib/miniaudio.a"
  7. }
  8. /************************************************************************************************************************************************************
  9. Encoding
  10. ========
  11. Encoders do not perform any format conversion for you. If your target format does not support the format, and error will be returned.
  12. ************************************************************************************************************************************************************/
  13. encoder_write_proc :: proc "c" (pEncoder: ^encoder, pBufferIn: rawptr, bytesToWrite: c.size_t, pBytesWritten: ^c.size_t) -> result
  14. encoder_seek_proc :: proc "c" (pEncoder: ^encoder, offset: i64, origin: seek_origin) -> result
  15. encoder_init_proc :: proc "c" (pEncoder: ^encoder) -> result
  16. encoder_uninit_proc :: proc "c" (pEncoder: ^encoder)
  17. encoder_write_pcm_frames_proc :: proc "c" (pEncoder: ^encoder, pFramesIn: rawptr, frameCount: u64, pFramesWritten: ^u64) -> result
  18. encoder_config :: struct {
  19. encodingFormat: encoding_format,
  20. format: format,
  21. channels: u32,
  22. sampleRate: u32,
  23. allocationCallbacks: allocation_callbacks,
  24. }
  25. encoder :: struct {
  26. config: encoder_config,
  27. onWrite: encoder_write_proc,
  28. onSeek: encoder_seek_proc,
  29. onInit: encoder_init_proc,
  30. onUninit: encoder_uninit_proc,
  31. onWritePCMFrames: encoder_write_pcm_frames_proc,
  32. pUserData: rawptr,
  33. pInternalEncoder: rawptr,
  34. data: struct #raw_union {
  35. vfs: struct {
  36. pVFS: ^vfs,
  37. file: vfs_file,
  38. },
  39. },
  40. }
  41. @(default_calling_convention="c", link_prefix="ma_")
  42. foreign lib {
  43. encoder_config_init :: proc(encodingFormat: encoding_format, format: format, channels: u32, sampleRate: u32) -> encoder_config ---
  44. encoder_init :: proc(onWrite: encoder_write_proc, onSeek: encoder_seek_proc, pUserData: rawptr, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
  45. encoder_init_vfs :: proc(pVFS: ^vfs, pFilePath: cstring, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
  46. encoder_init_vfs_w :: proc(pVFS: ^vfs, pFilePath: [^]c.wchar_t, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
  47. encoder_init_file :: proc(pFilePath: cstring, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
  48. encoder_init_file_w :: proc(pFilePath: [^]c.wchar_t, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
  49. encoder_uninit :: proc(pEncoder: ^encoder) ---
  50. encoder_write_pcm_frames :: proc(pEncoder: ^encoder, FramesIn: rawptr, frameCount: u64, pFramesWritten: ^u64) -> result ---
  51. }