Ticket #9511: 103-livetv_buffer_underrun_v3.patch

File 103-livetv_buffer_underrun_v3.patch, 1.7 KB (added by Jiri Fojtasek <jiri.fojtasek@…>, 9 years ago)

patch v3

  • libs/libmythtv/avformatdecoder.cpp

    diff -u -r -p mythtv.102/libs/libmythtv/avformatdecoder.cpp mythtv/libs/libmythtv/avformatdecoder.cpp
    old new bool AvFormatDecoder::GetFrame(DecodeTyp 
    39133913                if (retval == -EAGAIN)
    39143914                    continue;
    39153915
    3916                 ateof = true;
    3917                 m_parent->SetEof();
     3916                if (livetv)
     3917                    // When video synchronization is fater than than stream bitrate
     3918                    // playback thread will drain ringbuffer at edge and in very rare
     3919                    // situation it crash playback. This hack will recover playback
     3920                    // from this issue
     3921                    VERBOSE(VB_IMPORTANT, LOC_ERR + "hardware timing error detected");
     3922                    ic->pb->eof_reached = 0;
     3923                else
     3924                {
     3925                    ateof = true;
     3926                    m_parent->SetEof();
     3927                }
    39183928                delete pkt;
    39193929                return false;
    39203930            }
  • libs/libmythtv/ringbuffer.cpp

    diff -u -r -p mythtv.102/libs/libmythtv/ringbuffer.cpp mythtv/libs/libmythtv/ringbuffer.cpp
    old new bool RingBuffer::WaitForAvail(int count) 
    942942           !request_pause && !commserror && readaheadrunning)
    943943    {
    944944        wanttoread = count;
    945         generalWait.wait(&rwlock, 250);
    946         avail = ReadBufAvail();
    947945
    948946        if ((ateof || setswitchtonext) && avail < count)
    949947            count = avail;
     948        else
     949            generalWait.wait(&rwlock, 250);
     950
     951        avail = ReadBufAvail();
    950952
    951953        if (avail < count)
    952954        {