On 5/6/18 10:38 PM, vdi...@akamai.com wrote: > From: Vishwanath Dixit <vdi...@akamai.com> > > Forced key frames generation functionality was assuming the first PTS > value as zero, but, when 'copyts' is enabled, the first PTS can be any > big number. This was eventually forcing all the frames as key frames. > To resolve this issue, update has been made to use first input pts as > reference pts. > --- > fftools/ffmpeg.c | 6 +++++- > fftools/ffmpeg.h | 1 + > fftools/ffmpeg_opt.c | 1 + > 3 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c > index 5a19a09..10f3012 100644 > --- a/fftools/ffmpeg.c > +++ b/fftools/ffmpeg.c > @@ -1236,8 +1236,12 @@ static void do_video_out(OutputFile *of, > in_picture->quality = enc->global_quality; > in_picture->pict_type = 0; > > + if (ost->forced_kf_ref_pts == AV_NOPTS_VALUE && > + in_picture->pts != AV_NOPTS_VALUE) > + ost->forced_kf_ref_pts = in_picture->pts; > + > pts_time = in_picture->pts != AV_NOPTS_VALUE ? > - in_picture->pts * av_q2d(enc->time_base) : NAN; > + (in_picture->pts - ost->forced_kf_ref_pts) * > av_q2d(enc->time_base) : NAN; > if (ost->forced_kf_index < ost->forced_kf_count && > in_picture->pts >= ost->forced_kf_pts[ost->forced_kf_index]) { > ost->forced_kf_index++; > diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h > index d44b7a5..eb1eaf6 100644 > --- a/fftools/ffmpeg.h > +++ b/fftools/ffmpeg.h > @@ -484,6 +484,7 @@ typedef struct OutputStream { > AVRational frame_aspect_ratio; > > /* forced key frames */ > + int64_t forced_kf_ref_pts; > int64_t *forced_kf_pts; > int forced_kf_count; > int forced_kf_index; > diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c > index 8ae68ae..36bce44 100644 > --- a/fftools/ffmpeg_opt.c > +++ b/fftools/ffmpeg_opt.c > @@ -1324,6 +1324,7 @@ static OutputStream *new_output_stream(OptionsContext > *o, AVFormatContext *oc, e > ost->file_index = nb_output_files - 1; > ost->index = idx; > ost->st = st; > + ost->forced_kf_ref_pts = AV_NOPTS_VALUE; > st->codecpar->codec_type = type; > > ret = choose_encoder(o, oc, ost);
Hi Michael Niedermayer Could you please push this patch? I had sent this revised patch based on your review comments earlier. Regards, Vishwanath _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel