Marton Balint (12018-12-30):
> This allows the underlying files to change their duration on subsequent
> avformat context opens.
> 
> An example use case where this matters:
> 
> ffconcat version 1.0
> file dummy.mxf
> file dummy.mxf
> 
> ffmpeg -re -stream_loop -1 -i dummy.ffconcat -f sdl2 none
> 
> The user can seamlessly change the input by atomically replacing dummy.mxf.
> 
> v2: Set ConcatFile duration in read_header for all segments with known
> durations because from now on we always recalculate the start time in
> open_file, and an instant seek could have caused unset ConcatFile durations.
> 
> Signed-off-by: Marton Balint <c...@passwd.hu>
> ---
>  libavformat/concatdec.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)

I am sorry, but it still feels like a fragile solution, and I think it
can leave the context in an inconsistent state. Maybe it works now, but
it is a bad surprise left for somebody who wants to extend this demuxer
in another way later.

Also, I think the duration detected from the file should never override
the duration provided by the script.

What about this:

        if the user_duration is set to a special value then
          each time the file is opened and closed
            if the duration has changed
              update the duration
              update the start time of all subsequent files

?

The "user_duration is set to a special value" condition also addresses
another concern I have: this feature conflicts with the (net yet
implemented) option of keeping the files open, as a LRU-style
optimization for when much seeking is expected.

Regards,

-- 
  Nicolas George

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to