diff options
| -rw-r--r-- | src/VLCInput.cpp | 10 | ||||
| -rw-r--r-- | src/VLCInput.h | 4 | ||||
| -rw-r--r-- | src/dabplus-enc.cpp | 2 | 
3 files changed, 9 insertions, 7 deletions
diff --git a/src/VLCInput.cpp b/src/VLCInput.cpp index 890de01..4ec9208 100644 --- a/src/VLCInput.cpp +++ b/src/VLCInput.cpp @@ -368,11 +368,15 @@ void VLCInputThreaded::start()      }  } +// How many samples we insert into the queue each call +// 10 samples @ 32kHz = 3.125ms +#define NUM_BYTES_PER_CALL (10 * BYTES_PER_SAMPLE) +  void VLCInputThreaded::process()  { -    uint8_t samplebuf[NUM_SAMPLES_PER_CALL * BYTES_PER_SAMPLE * m_channels]; +    uint8_t samplebuf[NUM_BYTES_PER_CALL];      while (m_running) { -        ssize_t n = m_read(samplebuf, NUM_SAMPLES_PER_CALL); +        ssize_t n = m_read(samplebuf, NUM_BYTES_PER_CALL);          if (n < 0) {              m_running = false; @@ -380,7 +384,7 @@ void VLCInputThreaded::process()              break;          } -        m_queue.push(samplebuf, BYTES_PER_SAMPLE*m_channels*n); +        m_queue.push(samplebuf, n);      }  } diff --git a/src/VLCInput.h b/src/VLCInput.h index f880642..27d6237 100644 --- a/src/VLCInput.h +++ b/src/VLCInput.h @@ -38,9 +38,6 @@  // 16 bits per sample is fine for now  #define BYTES_PER_SAMPLE 2 -// How many samples we insert into the queue each call -#define NUM_SAMPLES_PER_CALL 10 // 10 samples @ 32kHz = 3.125ms -  /* Common functionality for the direct libvlc input and the   * threaded libvlc input   */ @@ -93,6 +90,7 @@ class VLCInput      protected:          void cleanup(void); +        // Fill exactly length bytes into buf. Blocking.          ssize_t m_read(uint8_t* buf, size_t length);          std::vector<uint8_t> m_current_buf; diff --git a/src/dabplus-enc.cpp b/src/dabplus-enc.cpp index 2e7f4fa..ff84de3 100644 --- a/src/dabplus-enc.cpp +++ b/src/dabplus-enc.cpp @@ -582,7 +582,7 @@ int main(int argc, char *argv[])      uint8_t input_buf[input_size]; -    int max_size = 2*input_size + NUM_SAMPLES_PER_CALL; +    int max_size = 4*input_size + NUM_SAMPLES_PER_CALL;      SampleQueue<uint8_t> queue(BYTES_PER_SAMPLE, channels, max_size);  | 
