Exposes capture methods to AudioServer, variable renames for consistency,

added documentation.
This commit is contained in:
Saracen
2019-07-09 18:11:11 +01:00
parent e6230a36f8
commit c81ec6f26d
9 changed files with 146 additions and 72 deletions

View File

@ -227,8 +227,8 @@ Error AudioDriverPulseAudio::init_device() {
samples_out.resize(pa_buffer_size);
// Reset audio input to keep synchronisation.
input_position = 0;
input_size = 0;
capture_position = 0;
capture_size = 0;
return OK;
}
@ -460,7 +460,7 @@ void AudioDriverPulseAudio::thread_func(void *p_udata) {
size_t bytes = pa_stream_readable_size(ad->pa_rec_str);
if (bytes > 0) {
const void *ptr = NULL;
size_t maxbytes = ad->input_buffer.size() * sizeof(int16_t);
size_t maxbytes = ad->capture_buffer.size() * sizeof(int16_t);
bytes = MIN(bytes, maxbytes);
ret = pa_stream_peek(ad->pa_rec_str, &ptr, &bytes);
@ -470,11 +470,11 @@ void AudioDriverPulseAudio::thread_func(void *p_udata) {
int16_t *srcptr = (int16_t *)ptr;
for (size_t i = bytes >> 1; i > 0; i--) {
int32_t sample = int32_t(*srcptr++) << 16;
ad->input_buffer_write(sample);
ad->capture_buffer_write(sample);
if (ad->pa_rec_map.channels == 1) {
// In case input device is single channel convert it to Stereo
ad->input_buffer_write(sample);
// In case capture device is single channel convert it to Stereo
ad->capture_buffer_write(sample);
}
}
@ -661,7 +661,7 @@ Error AudioDriverPulseAudio::capture_init_device() {
break;
default:
WARN_PRINTS("PulseAudio: Unsupported number of input channels: " + itos(pa_rec_map.channels));
WARN_PRINTS("PulseAudio: Unsupported number of capture channels: " + itos(pa_rec_map.channels));
pa_channel_map_init_stereo(&pa_rec_map);
break;
}
@ -693,10 +693,10 @@ Error AudioDriverPulseAudio::capture_init_device() {
ERR_FAIL_V(ERR_CANT_OPEN);
}
input_buffer_init(input_buffer_frames);
capture_buffer_init(input_buffer_frames);
print_verbose("PulseAudio: detected " + itos(pa_rec_map.channels) + " input channels");
print_verbose("PulseAudio: input buffer frames: " + itos(input_buffer_frames) + " calculated latency: " + itos(input_buffer_frames * 1000 / mix_rate) + "ms");
print_verbose("PulseAudio: detected " + itos(pa_rec_map.channels) + " capture channels");
print_verbose("PulseAudio: capture buffer frames: " + itos(input_buffer_frames) + " calculated latency: " + itos(input_buffer_frames * 1000 / mix_rate) + "ms");
return OK;
}