diff -u -r -p mythtv.102/libs/libmythtv/avformatdecoder.cpp mythtv/libs/libmythtv/avformatdecoder.cpp
|
old
|
new
|
bool AvFormatDecoder::GetFrame(DecodeTyp
|
| 3913 | 3913 | if (retval == -EAGAIN) |
| 3914 | 3914 | continue; |
| 3915 | 3915 | |
| 3916 | | ateof = true; |
| 3917 | | m_parent->SetEof(); |
| | 3916 | if (livetv) |
| | 3917 | { |
| | 3918 | // When video synchronization is fater than than stream bitrate |
| | 3919 | // playback thread will drain ringbuffer at edge and in very rare |
| | 3920 | // situation it crash playback. This hack will recover playback |
| | 3921 | // from this issue |
| | 3922 | VERBOSE(VB_IMPORTANT, LOC_ERR + "hardware timing error detected"); |
| | 3923 | ic->pb->eof_reached = 0; |
| | 3924 | } |
| | 3925 | else |
| | 3926 | { |
| | 3927 | ateof = true; |
| | 3928 | m_parent->SetEof(); |
| | 3929 | } |
| 3918 | 3930 | delete pkt; |
| 3919 | 3931 | return false; |
| 3920 | 3932 | } |
diff -u -r -p mythtv.102/libs/libmythtv/ringbuffer.cpp mythtv/libs/libmythtv/ringbuffer.cpp
|
old
|
new
|
bool RingBuffer::WaitForAvail(int count)
|
| 942 | 942 | !request_pause && !commserror && readaheadrunning) |
| 943 | 943 | { |
| 944 | 944 | wanttoread = count; |
| 945 | | generalWait.wait(&rwlock, 250); |
| 946 | | avail = ReadBufAvail(); |
| 947 | 945 | |
| 948 | 946 | if ((ateof || setswitchtonext) && avail < count) |
| 949 | 947 | count = avail; |
| | 948 | else |
| | 949 | generalWait.wait(&rwlock, 250); |
| | 950 | |
| | 951 | avail = ReadBufAvail(); |
| 950 | 952 | |
| 951 | 953 | if (avail < count) |
| 952 | 954 | { |