From 6d1bc935a6982f045298dc074f0867c2431c3d24 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 1 Oct 2014 18:56:24 +0200 Subject: Use buffer size from audiobackend in output code. --- src/audioinputhandler.cc | 9 ++++++--- src/inputstreamer.cc | 7 +++++-- src/soundplayer.cc | 4 ++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/audioinputhandler.cc b/src/audioinputhandler.cc index 2961289..1a87f8c 100644 --- a/src/audioinputhandler.cc +++ b/src/audioinputhandler.cc @@ -46,15 +46,18 @@ AudioInputHandler::~AudioInputHandler() void AudioInputHandler::run() { - char pcm[4096]; running = true; + int buffer_size = g_audiobackend->getBufferSize(); + short *pcm = (short*)calloc(buffer_size, sizeof(short)); while(running) { - int sz = g_audiobackend->read(pcm, sizeof(pcm)); + int sz = g_audiobackend->read((char*)pcm, buffer_size * sizeof(short)); //printf("sz: %d\n", sz); if(sz > 0) { - framelist_t fl = oe.encode(pcm, sz); + framelist_t fl = oe.encode((char*)pcm, sz); if(fl.size()) emit newAudio(fl); } } + + free(pcm); } diff --git a/src/inputstreamer.cc b/src/inputstreamer.cc index c7e5986..3eef76a 100644 --- a/src/inputstreamer.cc +++ b/src/inputstreamer.cc @@ -142,13 +142,16 @@ void InputStreamer::run() lrtp_unpack(lrtp, packet, packetsize); int n = 0; int ret; - char frame[512 * 1024]; // 512kbyte should be enough for even the larges + char frame[512 * 1024 * 4]; // 512kbyte should be enough for even the larges // JPEG frames... unsigned int csrc; unsigned int ts; while((ret = lrtp_dequeue_frame(lrtp, frame, sizeof(frame), &csrc, &ts)) != 0) { - if(ret < 0) printf("I:lrtp_dequeue_frame: %d\n", ret); + if(ret < 0) { + printf("I:lrtp_dequeue_frame: %d (frame skipped)\n", ret); + continue; + } if(csrc == CSRC_V) { // Video frame Frame f(frame, ret); diff --git a/src/soundplayer.cc b/src/soundplayer.cc index 0ae978f..f54ff90 100644 --- a/src/soundplayer.cc +++ b/src/soundplayer.cc @@ -48,8 +48,8 @@ void SoundPlayer::run() { running = true; - short *s = (short*)malloc(buffer_size * sizeof(short)); - memset(s, 0, sizeof(s)); + short *s = (short*)calloc(buffer_size, sizeof(short)); + while(running) { for(int i = 0; i < buffer_size; i++) { s[i] = ringbuffer[pread % RINGBUFFER]; -- cgit v1.2.3