rhino/demo/c/dr_libs/tests/external/miniaudio/examples/simple_capture.c
Go to the documentation of this file.
1 /* This example simply captures data from your default microphone until you press Enter. The output is saved to the file specified on the command line. */
2 
3 #define MINIAUDIO_IMPLEMENTATION
4 #include "../miniaudio.h"
5 
6 #define DR_WAV_IMPLEMENTATION
7 #include "../extras/dr_wav.h"
8 
9 #include <stdlib.h>
10 #include <stdio.h>
11 
12 void data_callback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount)
13 {
14  drwav* pWav = (drwav*)pDevice->pUserData;
15  MA_ASSERT(pWav != NULL);
16 
17  drwav_write_pcm_frames(pWav, frameCount, pInput);
18 
19  (void)pOutput;
20 }
21 
22 int main(int argc, char** argv)
23 {
24  ma_result result;
25  drwav_data_format wavFormat;
26  drwav wav;
27  ma_device_config deviceConfig;
29 
30  if (argc < 2) {
31  printf("No input file.\n");
32  return -1;
33  }
34 
35  wavFormat.container = drwav_container_riff;
37  wavFormat.channels = 2;
38  wavFormat.sampleRate = 44100;
39  wavFormat.bitsPerSample = 32;
40 
41  if (drwav_init_file_write(&wav, argv[1], &wavFormat, NULL) == DRWAV_FALSE) {
42  printf("Failed to initialize output file.\n");
43  return -1;
44  }
45 
47  deviceConfig.capture.format = ma_format_f32;
48  deviceConfig.capture.channels = wavFormat.channels;
49  deviceConfig.sampleRate = wavFormat.sampleRate;
50  deviceConfig.dataCallback = data_callback;
51  deviceConfig.pUserData = &wav;
52 
53  result = ma_device_init(NULL, &deviceConfig, &device);
54  if (result != MA_SUCCESS) {
55  printf("Failed to initialize capture device.\n");
56  return -2;
57  }
58 
59  result = ma_device_start(&device);
60  if (result != MA_SUCCESS) {
62  printf("Failed to start device.\n");
63  return -3;
64  }
65 
66  printf("Press Enter to stop recording...\n");
67  getchar();
68 
70  drwav_uninit(&wav);
71 
72  return 0;
73 }
DRWAV_FALSE
#define DRWAV_FALSE
Definition: porcupine/demo/c/dr_libs/dr_wav.h:165
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_type_capture
@ ma_device_type_capture
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3013
ma_format_f32
@ ma_format_f32
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1790
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_result
int ma_result
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1658
drwav_data_format::format
drwav_uint32 format
Definition: porcupine/demo/c/dr_libs/dr_wav.h:438
drwav_data_format::channels
drwav_uint32 channels
Definition: porcupine/demo/c/dr_libs/dr_wav.h:439
main
int main(int argc, char **argv)
Definition: rhino/demo/c/dr_libs/tests/external/miniaudio/examples/simple_capture.c:22
ma_device::pUserData
void * pUserData
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3592
data_callback
void data_callback(ma_device *pDevice, void *pOutput, const void *pInput, ma_uint32 frameCount)
Definition: rhino/demo/c/dr_libs/tests/external/miniaudio/examples/simple_capture.c:12
MA_ASSERT
#define MA_ASSERT(condition)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:770
drwav_data_format::container
drwav_container container
Definition: porcupine/demo/c/dr_libs/dr_wav.h:437
drwav_container_riff
@ drwav_container_riff
Definition: porcupine/demo/c/dr_libs/dr_wav.h:276
drwav_data_format::bitsPerSample
drwav_uint32 bitsPerSample
Definition: porcupine/demo/c/dr_libs/dr_wav.h:441
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
ma_device_config::format
ma_format format
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3128
drwav_init_file_write
DRWAV_API drwav_bool32 drwav_init_file_write(drwav *pWav, const char *filename, const drwav_data_format *pFormat, const drwav_allocation_callbacks *pAllocationCallbacks)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49030
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
drwav_data_format::sampleRate
drwav_uint32 sampleRate
Definition: porcupine/demo/c/dr_libs/dr_wav.h:440
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
DR_WAVE_FORMAT_IEEE_FLOAT
#define DR_WAVE_FORMAT_IEEE_FLOAT
Definition: porcupine/demo/c/dr_libs/dr_wav.h:256
MA_SUCCESS
#define MA_SUCCESS
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:1659
drwav_data_format
Definition: porcupine/demo/c/dr_libs/dr_wav.h:435
drwav_write_pcm_frames
DRWAV_API drwav_uint64 drwav_write_pcm_frames(drwav *pWav, drwav_uint64 framesToWrite, const void *pData)
Definition: porcupine/demo/c/pvrecorder/src/miniaudio/extras/miniaudio_split/miniaudio.c:49558
ma_device_config::pUserData
void * pUserData
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/miniaudio.h:3112


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