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?
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".