Changes between Initial Version and Version 4 of Ticket #10658


Ignore:
Timestamp:
Jul 24, 2012, 6:41:56 PM (8 years ago)
Author:
danielk
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #10658

    • Property Status changed from new to accepted
    • Property Summary changed from Rework AVFRingBuffer to return -EAGAIN when there is no data to Allow partial AVFRingBuffer reads
    • Property Version changed from Unspecified to Master Head
    • Property Milestone changed from 0.26 to 0.27
    • Property Owner set to danielk
    • Property Type changed from Bug Report - General to Developer Task
  • Ticket #10658 – Description

    initial v4  
    1 Traditionally we've always had RingBuffer::Read() return the number of bytes requested unless we are at the end of the file. But this blocks libav which expects this the read to complete fairly quickly even if it is a blocking read. Instead we should block for only a short time waiting for more data and then return what data we do have. To avoid premature exit from the decoder loop we also need to add EAGAIN returns so that if we don't have more data right now, but expect to have some in the near future we can signal this to libav.
     1Traditionally we've always had RingBuffer::Read() return the number of bytes requested unless we are at the end of the file. But this blocks libav which expects this the read to complete fairly quickly even if it is a blocking read. Instead we should block for only a short time waiting for more data and then return what data we do have as long as we have at least 1 byte of data.