rhino/demo/c/dr_libs/tests/wav/dr_wav_playback.c
Go to the documentation of this file.
1 #define MA_NO_DECODING
2 #define MA_NO_ENCODING
3 #define MA_IMPLEMENTATION
4 #include "../../../miniaudio/miniaudio.h"
5 
6 #define DR_WAV_IMPLEMENTATION
7 #include "../../dr_wav.h"
8 #include "../common/dr_common.c"
9 
11 
12 void data_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount)
13 {
14  /* Assuming format is always s16 for now. */
15  if (pDevice->playback.format == ma_format_s16) {
16  drwav_read_pcm_frames_s16(&g_wav, frameCount, (drwav_int16*)pOutput);
17  } else if (pDevice->playback.format == ma_format_f32) {
18  drwav_read_pcm_frames_f32(&g_wav, frameCount, (float*)pOutput);
19  } else {
20  /* Unsupported format. */
21  }
22 
23  (void)pInput;
24 }
25 
26 int main(int argc, char** argv)
27 {
28  ma_result result;
30  ma_device_config deviceConfig;
31 
32  if (argc < 2) {
33  printf("No input file specified.");
34  return -1;
35  }
36 
37  if (!drwav_init_file(&g_wav, argv[1], NULL)) {
38  printf("Failed to load file: %s", argv[1]);
39  return -1;
40  }
41 
43  deviceConfig.playback.format = ma_format_s16;
44  deviceConfig.playback.channels = g_wav.channels;
45  deviceConfig.sampleRate = g_wav.sampleRate;
46  deviceConfig.dataCallback = data_callback;
47 
48  result = ma_device_init(NULL, &deviceConfig, &device);
49  if (result != MA_SUCCESS) {
50  printf("Failed to initialize playback device.");
52  return -1;
53  }
54 
55  result = ma_device_start(&device);
56  if (result != MA_SUCCESS) {
57  printf("Failed to start playback device.");
60  return -1;
61  }
62 
63  printf("Press Enter to quit...");
64  getchar();
65 
68 
69  return 0;
70 }
ma_device_uninit
void ma_device_uninit(ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27425
drwav_read_pcm_frames_f32
DRWAV_API drwav_uint64 drwav_read_pcm_frames_f32(drwav *pWav, drwav_uint64 framesToRead, float *pBufferOut)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:50305
ma_device_start
ma_result ma_device_start(ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27485
NULL
#define NULL
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/speex_resampler/thirdparty/resample.c:92
ma_format_f32
@ ma_format_f32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1790
drwav_read_pcm_frames_s16
DRWAV_API drwav_uint64 drwav_read_pcm_frames_s16(drwav *pWav, drwav_uint64 framesToRead, drwav_int16 *pBufferOut)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:50013
ma_device::format
ma_format format
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3625
data_callback
void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uint32 frameCount)
Definition: rhino/demo/c/dr_libs/tests/wav/dr_wav_playback.c:12
ma_device_type_playback
@ ma_device_type_playback
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3012
ma_device_config::dataCallback
ma_device_callback_proc dataCallback
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3110
drwav::sampleRate
drwav_uint32 sampleRate
Definition: porcupine/demo/c/dr_libs/dr_wav.h:831
device
ma_device device
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/tests/test_deviceio/ma_test_deviceio.c:57
ma_result
int ma_result
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1658
main
int main(int argc, char **argv)
Definition: rhino/demo/c/dr_libs/tests/wav/dr_wav_playback.c:26
ma_format_s16
@ ma_format_s16
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1787
drwav_init_file
DRWAV_API drwav_bool32 drwav_init_file(drwav *pWav, const char *filename, const drwav_allocation_callbacks *pAllocationCallbacks)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:48943
drwav_int16
signed short drwav_int16
Definition: porcupine/demo/c/dr_libs/dr_wav.h:136
drwav::channels
drwav_uint16 channels
Definition: porcupine/demo/c/dr_libs/dr_wav.h:834
drwav_uninit
DRWAV_API drwav_result drwav_uninit(drwav *pWav)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49216
ma_uint32
uint32_t ma_uint32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1503
g_wav
drwav g_wav
Definition: rhino/demo/c/dr_libs/tests/wav/dr_wav_playback.c:10
ma_device_config::format
ma_format format
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3128
ma_device_config_init
ma_device_config ma_device_config_init(ma_device_type deviceType)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27034
drwav
Definition: porcupine/demo/c/dr_libs/dr_wav.h:805
ma_device_config::channels
ma_uint32 channels
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3129
python.test_porcupine.argv
argv
Definition: test_porcupine.py:158
ma_device_init
ma_result ma_device_init(ma_context *pContext, const ma_device_config *pConfig, ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27048
ma_device
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3584
ma_device_config
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3100
ma_device_config::sampleRate
ma_uint32 sampleRate
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3103
MA_SUCCESS
#define MA_SUCCESS
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1659
ma_device_config::playback
struct ma_device_config::@97 playback
ma_device::playback
struct ma_device::@115 playback


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:13:55