diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp index 3d5b807c7f0..b65b28d270a 100644 --- a/mythtv/libs/libmythtv/avformatdecoder.cpp +++ b/mythtv/libs/libmythtv/avformatdecoder.cpp @@ -1768,14 +1768,14 @@ int AvFormatDecoder::ScanStreams(bool novideo) codec_is_mpeg = CODEC_IS_FFMPEG_MPEG(enc->codec_id); + // ffmpeg does not return a bitrate for several codecs and + // formats. Forcing it to 500000 ensures the ringbuffer does not + // use optimisations for low bitrate (audio and data) streams. if (enc->bit_rate == 0) - unknownbitrate = true; - - // HACK -- begin - // ffmpeg is unable to compute H.264 bitrates in mpegts? - if (CODEC_IS_H264(enc->codec_id) && enc->bit_rate == 0) + { enc->bit_rate = 500000; - // HACK -- end + unknownbitrate = true; + } StreamInfo si(i, 0, 0, 0, 0); tracks[kTrackTypeVideo].push_back(si); diff --git a/mythtv/libs/libmythtv/ringbuffer.cpp b/mythtv/libs/libmythtv/ringbuffer.cpp index 96115b2b55c..e9171171a98 100644 --- a/mythtv/libs/libmythtv/ringbuffer.cpp +++ b/mythtv/libs/libmythtv/ringbuffer.cpp @@ -352,7 +352,6 @@ void RingBuffer::CalcReadAheadThresh(void) const uint KB2 = 2*1024; const uint KB4 = 4*1024; const uint KB8 = 8*1024; - const uint KB16 = 16*1024; const uint KB32 = 32*1024; const uint KB64 = 64*1024; const uint KB128 = 128*1024; @@ -366,8 +365,7 @@ void RingBuffer::CalcReadAheadThresh(void) (estbitrate > 9000) ? KB256 : (estbitrate > 5000) ? KB128 : (estbitrate > 2500) ? KB64 : - (estbitrate > 1000) ? KB32 : - (estbitrate > 500) ? KB16 : + (estbitrate >= 500) ? KB32 : (estbitrate > 250) ? KB8 : (estbitrate > 125) ? KB4 : KB2; if (rbs < CHUNK)