mirror of
https://github.com/Ryujinx/libsoundio.git
synced 2024-12-22 18:55:38 +00:00
microphone example: detect incompatible in/out devices
This commit is contained in:
parent
5048d7aa57
commit
d6fcef468b
20
README.md
20
README.md
|
@ -10,7 +10,7 @@ exposed.
|
|||
|
||||
**This library is a work-in-progress.**
|
||||
|
||||
## Why libsoundio?
|
||||
## Alternatives
|
||||
|
||||
* [PortAudio](http://www.portaudio.com/)
|
||||
- It does not support [PulseAudio](http://www.freedesktop.org/wiki/Software/PulseAudio/).
|
||||
|
@ -97,6 +97,22 @@ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/mxe/usr/i686-w64-mingw32.static/share/c
|
|||
make
|
||||
```
|
||||
|
||||
#### Running the Tests
|
||||
|
||||
```
|
||||
make test
|
||||
```
|
||||
|
||||
For more detailed output:
|
||||
|
||||
```
|
||||
make
|
||||
./unit_tests
|
||||
```
|
||||
|
||||
To see test coverage, install lcov, run `make coverage` and then
|
||||
view `coverage/index.html` in a browser.
|
||||
|
||||
## Roadmap
|
||||
|
||||
0. pipe record to playback example working with dummy linux, osx, windows
|
||||
|
@ -112,6 +128,8 @@ make
|
|||
0. -fvisibility=hidden and then explicitly export stuff
|
||||
0. Integrate into libgroove and test with Groove Basin
|
||||
0. Consider testing on FreeBSD
|
||||
0. look at microphone example and determine if fewer memcpys can be done
|
||||
with the audio data
|
||||
|
||||
## Planned Uses for libsoundio
|
||||
|
||||
|
|
|
@ -71,12 +71,23 @@ int main(int argc, char **argv) {
|
|||
soundio_device_name(out_device),
|
||||
soundio_device_description(out_device));
|
||||
|
||||
const struct SoundIoChannelLayout *in_layout = soundio_device_channel_layout(in_device);
|
||||
const struct SoundIoChannelLayout *out_layout = soundio_device_channel_layout(out_device);
|
||||
|
||||
if (!soundio_channel_layout_equal(in_layout, out_layout))
|
||||
panic("channel layouts not compatible");
|
||||
|
||||
if (soundio_device_sample_rate(in_device) != soundio_device_sample_rate(out_device))
|
||||
panic("sample rates not compatible");
|
||||
|
||||
double latency = 0.1;
|
||||
|
||||
struct SoundIoInputDevice *input_device;
|
||||
soundio_input_device_create(in_device, SoundIoSampleFormatFloat, 0.1, NULL,
|
||||
soundio_input_device_create(in_device, SoundIoSampleFormatFloat, latency, NULL,
|
||||
read_callback, &input_device);
|
||||
|
||||
struct SoundIoOutputDevice *output_device;
|
||||
soundio_output_device_create(out_device, SoundIoSampleFormatFloat, 0.1, NULL,
|
||||
soundio_output_device_create(out_device, SoundIoSampleFormatFloat, latency, NULL,
|
||||
write_callback, underrun_callback, &output_device);
|
||||
|
||||
if ((err = soundio_input_device_start(input_device)))
|
||||
|
|
|
@ -314,8 +314,10 @@ int soundio_input_device_create(struct SoundIoDevice *device,
|
|||
void soundio_input_device_destroy(struct SoundIoInputDevice *input_device);
|
||||
|
||||
int soundio_input_device_start(struct SoundIoInputDevice *input_device);
|
||||
|
||||
void soundio_input_device_peek(struct SoundIoInputDevice *input_device,
|
||||
const char **data, int *frame_count);
|
||||
const char **data, int *out_frame_count);
|
||||
// this will drop all of the frames from when you called soundio_input_device_peek
|
||||
void soundio_input_device_drop(struct SoundIoInputDevice *input_device);
|
||||
|
||||
void soundio_input_device_clear_buffer(struct SoundIoInputDevice *input_device);
|
||||
|
|
Loading…
Reference in a new issue