[FFmpeg-trac] #3079(FFmpeg:open): libavfilter caches and drops frames with multiple desynched input streams
FFmpeg
trac at avcodec.org
Fri Oct 25 11:06:47 CEST 2013
#3079: libavfilter caches and drops frames with multiple desynched input streams
------------------------------------+----------------------------------
Reporter: richardpl | Owner:
Type: defect | Status: open
Priority: normal | Component: FFmpeg
Version: git-master | Resolution:
Keywords: bounty | Blocked By:
Blocking: | Reproduced by developer: 1
Analyzed by developer: 1 |
------------------------------------+----------------------------------
Comment (by michael):
If i understand the issue correctly then a possible solution might be
* add a source identifier to AVFrame, so that at the filtergraphs output
as well as in every fifo filter we know precissely from which input how
many frames are stored. These source identifiers would have to be lists as
filters like overlay, produce frames that combine 2 sources.
* Give fifos some means to export these statistics so that we can easily
check how many frames from input X are in memory for a filtergraph.
* Use these statistics to guide the inputs, like for example stop a thread
when many more of its frames are held in memory than another thread.
With this inputs can run in multiple threads and at different speeds as
long as it doesnt cause frames to accumulate in buffers, when such
accumulation occurs due to interconnects in a complex filtergraph than the
affected input threads would get paused
The alternative would be to disallow inputs to run at different speeds and
pause threads that get too far ahead. But this could cause problems if
timestamps get changed inside the filter graph or future filters send seek
commands to the source somehow ...
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/3079#comment:18>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list