Le duodi 2 frimaire, an CCXXIV, Mort Yao a écrit :
> Whenever an error occurred in get_input_packet(), process_input() used to
> attempt to mark all outputs that didn't go through lavfi as finished. However,
> for a concat demuxer, doing so might drop the rest of input streams (in case 
> of
> an error such like EINVAL returned by av_read_frame()) and produce incomplete
> outputs unexpectedly. This patch shall allow for only finishing outputs when
> end-of-file encountered, by checking whether the return code is AVERROR_EOF.

I do not think this is acceptable as default behaviour. Some (most?) errors
will persist: not marking the stream finished will let ffmpeg try over and
over again to read a packet from the same place in the same file.

It could be a per-stream or per-file option, though.

> -        for (i = 0; i < ifile->nb_streams; i++) {
> -            ist = input_streams[ifile->ist_index + i];
> -            if (ist->decoding_needed) {
> -                ret = process_input_packet(ist, NULL, 0);
> -                if (ret>0)
> -                    return 0;
> -            }
> +        } else {
> +            for (i = 0; i < ifile->nb_streams; i++) {
> +                ist = input_streams[ifile->ist_index + i];
> +                if (ist->decoding_needed) {
> +                    ret = process_input_packet(ist, NULL, 0);
> +                    if (ret>0)
> +                        return 0;

In the future, please remember to reindent blocks of lines in a separate
patch, that makes the functional patch much easier to check.

Regards,

-- 
  Nicolas George

Attachment: signature.asc
Description: Digital signature

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

Reply via email to