porcupine/demo/c/dr_libs/tests/external/miniaudio/examples/simple_duplex.c
Go to the documentation of this file.
1 #define MINIAUDIO_IMPLEMENTATION
2 #include "../miniaudio.h"
3 
4 #define DR_WAV_IMPLEMENTATION
5 #include "../extras/dr_wav.h"
6 
7 #include <stdio.h>
8 
9 #ifdef __EMSCRIPTEN__
10 void main_loop__em()
11 {
12 }
13 #endif
14 
15 void data_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount)
16 {
17  MA_ASSERT(pDevice->capture.format == pDevice->playback.format);
18  MA_ASSERT(pDevice->capture.channels == pDevice->playback.channels);
19 
20  /* In this example the format and channel count are the same for both input and output which means we can just memcpy(). */
21  MA_COPY_MEMORY(pOutput, pInput, frameCount * ma_get_bytes_per_frame(pDevice->capture.format, pDevice->capture.channels));
22 }
23 
24 int main(int argc, char** argv)
25 {
26  ma_result result;
27  ma_device_config deviceConfig;
29 
31  deviceConfig.capture.pDeviceID = NULL;
32  deviceConfig.capture.format = ma_format_s16;
33  deviceConfig.capture.channels = 2;
34  deviceConfig.capture.shareMode = ma_share_mode_shared;
35  deviceConfig.playback.pDeviceID = NULL;
36  deviceConfig.playback.format = ma_format_s16;
37  deviceConfig.playback.channels = 2;
38  deviceConfig.dataCallback = data_callback;
39  result = ma_device_init(NULL, &deviceConfig, &device);
40  if (result != MA_SUCCESS) {
41  return result;
42  }
43 
44 #ifdef __EMSCRIPTEN__
45  getchar();
46 #endif
47 
49 
50 #ifdef __EMSCRIPTEN__
51  emscripten_set_main_loop(main_loop__em, 0, 1);
52 #else
53  printf("Press Enter to quit...\n");
54  getchar();
55 #endif
56 
58 
59  (void)argc;
60  (void)argv;
61  return 0;
62 }
ma_get_bytes_per_frame
static MA_INLINE ma_uint32 ma_get_bytes_per_frame(ma_format format, ma_uint32 channels)
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:2673
ma_device_config::pDeviceID
ma_device_id * pDeviceID
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3127
ma_device_config::shareMode
ma_share_mode shareMode
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3131
ma_device_uninit
void ma_device_uninit(ma_device *pDevice)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:27425
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_device::channels
ma_uint32 channels
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3626
data_callback
void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uint32 frameCount)
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/examples/simple_duplex.c:15
ma_device::format
ma_format format
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3625
ma_device_config::dataCallback
ma_device_callback_proc dataCallback
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3110
device
ma_device device
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/tests/test_deviceio/ma_test_deviceio.c:57
ma_device_config::capture
struct ma_device_config::@98 capture
MA_COPY_MEMORY
#define MA_COPY_MEMORY(dst, src, sz)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:754
ma_result
int ma_result
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1658
ma_share_mode_shared
@ ma_share_mode_shared
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3020
ma_format_s16
@ ma_format_s16
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1787
MA_ASSERT
#define MA_ASSERT(condition)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:770
main
int main(int argc, char **argv)
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/examples/simple_duplex.c:24
ma_uint32
uint32_t ma_uint32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1503
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
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::capture
struct ma_device::@116 capture
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_type_duplex
@ ma_device_type_duplex
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3014
ma_device::playback
struct ma_device::@115 playback


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:50