Changes between Initial Version and Version 4 of Ticket #10658
- Timestamp:
- Jul 24, 2012, 6:41:56 PM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #10658
-
Property
Status
changed from
new
toaccepted
-
Property
Summary
changed from
Rework AVFRingBuffer to return -EAGAIN when there is no data
toAllow partial AVFRingBuffer reads
-
Property
Version
changed from
Unspecified
toMaster Head
-
Property
Milestone
changed from
0.26
to0.27
- Property Owner set to danielk
-
Property
Type
changed from
Bug Report - General
toDeveloper Task
-
Property
Status
changed from
-
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.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 as long as we have at least 1 byte of data.