[FFmpeg-devel] [WARNING! RECEIVED FROM EXTERNAL SENDER] [PATCH 1/1] fftools/ffmpeg: fix for all forced key frames when 'copyts' is enabled

Dixit, Vishwanath vdixit at akamai.com
Mon Jun 4 08:38:01 EEST 2018



On 5/6/18 10:38 PM, vdixit at akamai.com wrote:
> From: Vishwanath Dixit <vdixit at 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



More information about the ffmpeg-devel mailing list