On Wed, May 06, 2020 at 09:43:32PM +0200, Marton Balint wrote: > > > On Tue, 5 May 2020, lance.lmw...@gmail.com wrote: > > > On Mon, May 04, 2020 at 09:34:02PM +0200, Marton Balint wrote: > > > > > > > > > On Mon, 4 May 2020, lance.lmw...@gmail.com wrote: > > > > > > > On Sun, May 03, 2020 at 07:10:07PM +0200, Marton Balint wrote: > > > > > > > > > On Sun, 3 May 2020, lance.lmw...@gmail.com wrote: > > > > > > > > On Tue, Mar 17, 2020 at 06:55:00PM +0800, > > > lance.lmw...@gmail.com wrote: > > > > > > > From: Limin Wang <lance.lmw...@gmail.com> > > > > > > > > > The following command will attempt to create the input and > > > > > overlay test sequence for you. > > > > > > > ./ffmpeg -f lavfi -i color=white:duration=100:r=25:size=1280x720 > > > > > > > input.mkv > > > > > > > ./ffmpeg -f lavfi -i "testsrc=duration=5:size=320x240:rate=25" > > > > > > > overlay.mkv > > > > > > > > > Please try with below command and compare the final output. > > > > > > > ./ffmpeg -y -filter_complex > > > > > > > "movie=./input.mkv,setpts=PTS-STARTPTS[main];movie=./overlay.mkv:loop=5,setpts=PTS-STARTPTS[overlay];[main][overlay]overlay=10:10: > > > > > > > enable='between(t,0,25)" test.mkv > > > > > > > > > Without the patch applied, the overlay will repeat the last > > > > > frame in overlay.mkv after the first loop. > > > > > > > Why? > > > > > I haven't clear about the question yet, if you try to insert a > > > dynamic logo > > > > repeatly, without the patch, the dynamic logo will not overlay repeatly. > > > > > > But why is that? You explained what this patch fixes. But you have not > > > explained why the error is happening and what goes wrong in the current > > > code. I am asking, because there is some timestamp discontinuity handling > > > in > > > src_movie, shouldn't that handle the timestamp discontinuity caused by > > > looping? > > > > When the dynamic logo is end for reading, the pts will not accumulate with > > the > > first loop, so it'll failed to overlay. > > That is intentional, that is how the src_movie works. It passes on source > pts values by default. If you want discontinuty handling to kick in either > for seeking or looping, you should use the discontinuity option. > > E.g: > > ./ffmpeg -y -filter_complex > "movie=./input.mkv[main];movie=./overlay.mkv:loop=5:discontinuity=0.04[overlay];[main][overlay]overlay=10:10:enable='between(t,0,25)" > test.mkv > > So this patch is wrong I am afraid.
Thanks for the comments, I'm clear for the discontinuity flag now. Please ignore the patch. > > Regards, > Marton > > > > > > > > > > Thanks, > > > Marton > > > > > > > > > > > > > > > Thanks, > > > > > Marton > > > > > > > > > > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > > > > > > --- > > > > > > > libavfilter/src_movie.c | 6 ++++++ > > > > > > > 1 file changed, 6 insertions(+) > > > > > > > > > diff --git a/libavfilter/src_movie.c > > > > > b/libavfilter/src_movie.c > > > > > > > index 79423a8..2327046 100644 > > > > > > > --- a/libavfilter/src_movie.c > > > > > > > +++ b/libavfilter/src_movie.c > > > > > > > @@ -68,6 +68,8 @@ typedef struct MovieContext { > > > > > > > int loop_count; > > > > > > > int64_t discontinuity_threshold; > > > > > > > int64_t ts_offset; > > > > > > > + int64_t last_pts; > > > > > > > + int64_t last_loop_pts; > > > > > > > > > AVFormatContext *format_ctx; > > > > > > > int eof; > > > > > > > @@ -455,6 +457,7 @@ static int rewind_file(AVFilterContext *ctx) > > > > > > > movie->st[i].done = 0; > > > > > > > } > > > > > > > movie->eof = 0; > > > > > > > + movie->last_loop_pts = movie->last_pts; > > > > > > > return 0; > > > > > > > } > > > > > > > > > @@ -565,6 +568,8 @@ static int > > > > > movie_push_frame(AVFilterContext *ctx, unsigned out_id) > > > > > > > if (frame->pts != AV_NOPTS_VALUE) { > > > > > > > if (movie->ts_offset) > > > > > > > frame->pts += av_rescale_q_rnd(movie->ts_offset, > > > > > > > AV_TIME_BASE_Q, outlink->time_base, AV_ROUND_UP); > > > > > > > + if (movie->last_loop_pts) > > > > > > > + frame->pts += movie->last_loop_pts; > > > > > > > if (st->discontinuity_threshold) { > > > > > > > if (st->last_pts != AV_NOPTS_VALUE) { > > > > > > > int64_t diff = frame->pts - st->last_pts; > > > > > > > @@ -575,6 +580,7 @@ static int movie_push_frame(AVFilterContext > > > > > > > *ctx, unsigned out_id) > > > > > > > } > > > > > > > } > > > > > > > } > > > > > > > + movie->last_pts = > > > > > > > st->last_pts = frame->pts; > > > > > > > } > > > > > > > ff_dlog(ctx, "movie_push_frame(): file:'%s' %s\n", > > > > > > > movie->file_name, > > > > > > > -- > > 2.9.5 > > > > > > > > > ping > > > > > > > -- > Thanks, > > > > > > Limin Wang > > > > > > _______________________________________________ > > > > > > ffmpeg-devel mailing list > > > > > > ffmpeg-devel@ffmpeg.org > > > > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > > > To unsubscribe, visit link above, or email > > > > > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > > > _______________________________________________ > > > > > ffmpeg-devel mailing list > > > > > ffmpeg-devel@ffmpeg.org > > > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > > > To unsubscribe, visit link above, or email > > > > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > > > -- > Thanks, > > > > Limin Wang > > > > _______________________________________________ > > > > ffmpeg-devel mailing list > > > > ffmpeg-devel@ffmpeg.org > > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > To unsubscribe, visit link above, or email > > > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > _______________________________________________ > > > ffmpeg-devel mailing list > > > ffmpeg-devel@ffmpeg.org > > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > > > To unsubscribe, visit link above, or email > > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > > -- > > Thanks, > > Limin Wang > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". -- Thanks, Limin Wang _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".