From fba6eb6a957f3147c6d66e49227db3079a6449ea Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 3 May 2018 20:24:40 +0000 Subject: [PATCH] added high latency PA option, tracking down cause of missing samples git-svn-id: https://svn.code.sf.net/p/freetel/code@3567 01035d8c-6547-0410-b346-abe4f91aad63 --- freedv-dev/src/fdmdv2_main.cpp | 4 +++- freedv-dev/src/fdmdv2_pa_wrapper.cpp | 16 ++++++++++++++++ freedv-dev/src/fdmdv2_pa_wrapper.h | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/freedv-dev/src/fdmdv2_main.cpp b/freedv-dev/src/fdmdv2_main.cpp index 0b5824ab..ee0718f5 100644 --- a/freedv-dev/src/fdmdv2_main.cpp +++ b/freedv-dev/src/fdmdv2_main.cpp @@ -2599,6 +2599,7 @@ void MainFrame::initPortAudioDevice(PortAudioWrap *pa, int inDevice, int outDev pa->setInputChannelCount(inputChannels); // stereo input pa->setInputSampleFormat(PA_SAMPLE_TYPE); pa->setInputLatency(pa->getInputDefaultLowLatency()); + fprintf(stderr,"PA in; low: %f high: %f\n", pa->getInputDefaultLowLatency(), pa->getInputDefaultHighLatency()); pa->setInputHostApiStreamInfo(NULL); } @@ -2611,6 +2612,7 @@ void MainFrame::initPortAudioDevice(PortAudioWrap *pa, int inDevice, int outDev pa->setOutputChannelCount(2); // stereo output pa->setOutputSampleFormat(PA_SAMPLE_TYPE); pa->setOutputLatency(pa->getOutputDefaultLowLatency()); + fprintf(stderr,"PA out; low: %f high: %f\n", pa->getOutputDefaultLowLatency(), pa->getOutputDefaultHighLatency()); pa->setOutputHostApiStreamInfo(NULL); } @@ -2620,7 +2622,7 @@ void MainFrame::initPortAudioDevice(PortAudioWrap *pa, int inDevice, int outDev On Linux, setting this to wxGetApp().m_framesPerBuffer caused intermittant break up on the audio from my IC7200 on Ubuntu 14. After a day of bug hunting I found that 0, as recommended by the - PortAudio docunmentation, fixed the problem. + PortAudio documentation, fixed the problem. */ //pa->setFramesPerBuffer(wxGetApp().m_framesPerBuffer); diff --git a/freedv-dev/src/fdmdv2_pa_wrapper.cpp b/freedv-dev/src/fdmdv2_pa_wrapper.cpp index 2f67ca26..95eee5cb 100644 --- a/freedv-dev/src/fdmdv2_pa_wrapper.cpp +++ b/freedv-dev/src/fdmdv2_pa_wrapper.cpp @@ -207,6 +207,14 @@ PaTime PortAudioWrap::getInputDefaultLowLatency() return Pa_GetDeviceInfo(m_inputBuffer.device)->defaultLowInputLatency; } +//---------------------------------------------------------------- +// getInputDefaultHighLatency() +//---------------------------------------------------------------- +PaTime PortAudioWrap::getInputDefaultHighLatency() +{ + return Pa_GetDeviceInfo(m_inputBuffer.device)->defaultHighInputLatency; +} + //---------------------------------------------------------------- // setOutputChannelCount() //---------------------------------------------------------------- @@ -268,6 +276,14 @@ PaTime PortAudioWrap::getOutputDefaultLowLatency() return Pa_GetDeviceInfo(m_outputBuffer.device)->defaultLowOutputLatency; } +//---------------------------------------------------------------- +// getOutputDefaultHighLatency() +//---------------------------------------------------------------- +PaTime PortAudioWrap::getOutputDefaultHighLatency() +{ + return Pa_GetDeviceInfo(m_outputBuffer.device)->defaultHighOutputLatency; +} + //---------------------------------------------------------------- // setFramesPerBuffer() //---------------------------------------------------------------- diff --git a/freedv-dev/src/fdmdv2_pa_wrapper.h b/freedv-dev/src/fdmdv2_pa_wrapper.h index 3d216c0d..b666beb5 100644 --- a/freedv-dev/src/fdmdv2_pa_wrapper.h +++ b/freedv-dev/src/fdmdv2_pa_wrapper.h @@ -78,6 +78,7 @@ class PortAudioWrap PaError setInputLatency(PaTime latency); void setInputHostApiStreamInfo(void *info = NULL); PaTime getInputDefaultLowLatency(); + PaTime getInputDefaultHighLatency(); const char *getDeviceName(PaDeviceIndex dev); PaError setOutputDevice(PaDeviceIndex dev); @@ -87,6 +88,7 @@ class PortAudioWrap PaError setOutputLatency(PaTime latency); void setOutputHostApiStreamInfo(void *info = NULL); PaTime getOutputDefaultLowLatency(); + PaTime getOutputDefaultHighLatency(); void setFdmdvState(FDMDV* fdmdv_state) {this->m_pFDMDV_state = fdmdv_state;} void setOutputBuffer(const PaStreamParameters& outputBuffer) {this->m_outputBuffer = outputBuffer;} -- 2.25.1