From 0e49bfdb0065e519cf4fb8529ff85b5d3b8df780 Mon Sep 17 00:00:00 2001 From: Stefan Seyfried Date: Sun, 20 Oct 2013 22:36:52 +0200 Subject: [PATCH] raspi/avdec: improve demux read function --- raspi/avdec.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/raspi/avdec.cpp b/raspi/avdec.cpp index 4bdca2b..3ad65aa 100644 --- a/raspi/avdec.cpp +++ b/raspi/avdec.cpp @@ -511,12 +511,15 @@ int Dec::dmx_read(uint8_t *buf, int buf_size) #ifndef EXTRA_BUFFER int tmp, ret = 0, cnt = 0; while (++cnt < 20) { - tmp = dmx->Read(buf + ret, buf_size - ret, 10); + tmp = dmx->Read(buf + ret, buf_size - ret, 50); if (tmp > 0) ret += tmp; - if (ret > buf_size - 512) + if (ret >= buf_size) /* read until buffer is completely full, libavcodec sometimes */ + break; /* requests small blocks and does not like 0 returned */ + if (! dec_running) break; } + //printf("read: cnt %2d buf_size %5d ret %5d audio: %d\n", cnt, buf_size, ret, dmx == audioDemux); return ret; #else int tmp = 0, ret = 0;