[FFmpeg-devel,0/5] FIFO meta muxer related improvements

Message ID 20201207100845.17520-1-jeebjp@gmail.com
Headers show


Jan Ekström Dec. 7, 2020, 10:08 a.m. UTC
The primary parts of this are patches 1,4,5. 2 and 3 were just noticed when
poking at the recovery timestamp logic, where the stream-time comparison logic
seemed somewhat weird (such as comparing the pts to last_recovery_ts only if
last_recovery_ts == AV_NOPTS_VALUE). If they seem incorrectly understood,
they can be left out.

As for the rest of the patches, they address the following issues:
1. Even if the header and the first packet get written out, the muxer might
   still fail at writing to a server when it actually decides to do I/O.
   Currently (for example with the MP4 muxer) this leads to a constant retry
   loop as each recovery is actually "successful". This patch makes sure that
   even if a recovery is "successful", the following recovery will only happen
   after the configured time, easing the load on any receiving server.
4. In case of avformat_write_header failing, the fifo muxer until now would not
   close the avformat context and its underlying I/O. This is now added, so
   that file sockets do not keep creeping up.
5. Unset a configured codec_tag if it is not supported by the underlying muxer,
   as the API client has no visibility regarding whether a codec tag is
   acceptable in cases of meta-muxers such as fifo.


Bernard Boulay (1):
  avformat/fifo: always wait recovery_wait_time between recoveries

Jan Ekström (4):
  avformat/fifo: fix handling of stream-time non-NOPTS recovery
  avformat/fifo: cause immediate stream-time recovery if time went
  avformat/fifo: close IO in case header writing fails
  avformat/fifo: unset codec tag if unsupported by underlying muxer

 libavformat/fifo.c | 77 ++++++++++++++++++++++++++++++----------------
 1 file changed, 51 insertions(+), 26 deletions(-)