Refactor part of PortAudioIO::pcm_setup into new method
This commit is contained in:
parent
58cfd00e5a
commit
8e0e3fcdee
@ -559,6 +559,31 @@ PortAudioIO::pcm_start()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PortAudioIO::set_sample_rate_and_latency_from_stream ()
|
||||||
|
{
|
||||||
|
const PaStreamInfo* nfo_s = Pa_GetStreamInfo(_stream);
|
||||||
|
|
||||||
|
if (nfo_s == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_cur_sample_rate = nfo_s->sampleRate;
|
||||||
|
_cur_input_latency = nfo_s->inputLatency * _cur_sample_rate;
|
||||||
|
_cur_output_latency = nfo_s->outputLatency * _cur_sample_rate;
|
||||||
|
|
||||||
|
DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate));
|
||||||
|
|
||||||
|
DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n",
|
||||||
|
1e3 * nfo_s->inputLatency,
|
||||||
|
_cur_input_latency));
|
||||||
|
|
||||||
|
DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n",
|
||||||
|
1e3 * nfo_s->outputLatency,
|
||||||
|
_cur_output_latency));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PortAudioIO::allocate_buffers_for_blocking_api (uint32_t samples_per_period)
|
PortAudioIO::allocate_buffers_for_blocking_api (uint32_t samples_per_period)
|
||||||
{
|
{
|
||||||
@ -592,7 +617,6 @@ PortAudioIO::pcm_setup (
|
|||||||
PaError err = paNoError;
|
PaError err = paNoError;
|
||||||
const PaDeviceInfo *nfo_in = NULL;
|
const PaDeviceInfo *nfo_in = NULL;
|
||||||
const PaDeviceInfo *nfo_out = NULL;
|
const PaDeviceInfo *nfo_out = NULL;
|
||||||
const PaStreamInfo *nfo_s = NULL;
|
|
||||||
|
|
||||||
if (!initialize_pa()) {
|
if (!initialize_pa()) {
|
||||||
DEBUG_AUDIO ("PortAudio Initialization Failed\n");
|
DEBUG_AUDIO ("PortAudio Initialization Failed\n");
|
||||||
@ -693,27 +717,12 @@ PortAudioIO::pcm_setup (
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
nfo_s = Pa_GetStreamInfo (_stream);
|
if (!set_sample_rate_and_latency_from_stream()) {
|
||||||
if (!nfo_s) {
|
|
||||||
DEBUG_AUDIO ("PortAudio failed to query stream information.\n");
|
DEBUG_AUDIO ("PortAudio failed to query stream information.\n");
|
||||||
pcm_stop();
|
pcm_stop();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_cur_sample_rate = nfo_s->sampleRate;
|
|
||||||
_cur_input_latency = nfo_s->inputLatency * _cur_sample_rate;
|
|
||||||
_cur_output_latency = nfo_s->outputLatency * _cur_sample_rate;
|
|
||||||
|
|
||||||
DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate));
|
|
||||||
|
|
||||||
DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n",
|
|
||||||
1e3 * nfo_s->inputLatency,
|
|
||||||
_cur_input_latency));
|
|
||||||
|
|
||||||
DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n",
|
|
||||||
1e3 * nfo_s->outputLatency,
|
|
||||||
_cur_output_latency));
|
|
||||||
|
|
||||||
_state = 0;
|
_state = 0;
|
||||||
|
|
||||||
if (!allocate_buffers_for_blocking_api(samples_per_period)) {
|
if (!allocate_buffers_for_blocking_api(samples_per_period)) {
|
||||||
|
@ -106,6 +106,7 @@ private: // Methods
|
|||||||
void add_devices ();
|
void add_devices ();
|
||||||
std::string get_host_api_name_from_index (PaHostApiIndex index);
|
std::string get_host_api_name_from_index (PaHostApiIndex index);
|
||||||
|
|
||||||
|
bool set_sample_rate_and_latency_from_stream ();
|
||||||
bool allocate_buffers_for_blocking_api (uint32_t samples_per_period);
|
bool allocate_buffers_for_blocking_api (uint32_t samples_per_period);
|
||||||
|
|
||||||
static void get_default_sample_rates(std::vector<float>&);
|
static void get_default_sample_rates(std::vector<float>&);
|
||||||
|
Loading…
Reference in New Issue
Block a user