diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-01-10 17:35:23 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-01-10 17:35:23 +0100 |
commit | 90c973307607be9ed8f943a79a36a28a46c07502 (patch) | |
tree | 6f9d9cc7187e3c4f6fb11a95462c341998017049 | |
parent | e4821033a325b748c1c69848554b349c76ba6f59 (diff) | |
download | ODR-AudioEnc-90c973307607be9ed8f943a79a36a28a46c07502.tar.gz ODR-AudioEnc-90c973307607be9ed8f943a79a36a28a46c07502.tar.bz2 ODR-AudioEnc-90c973307607be9ed8f943a79a36a28a46c07502.zip |
Fix VLC queue fill and increase queue size
-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); |