[FFmpeg-devel] [PATCH] libavfilter/af_atempo: offset output frames' pts by first_frame_pts / tempo

Paul B Mahol onemda at gmail.com
Thu Jan 24 15:46:49 EET 2019


On 1/24/19, Paweł Wegner <pawel.wegner95 at gmail.com> wrote:
> Signed-off-by: Paweł Wegner <pawel.wegner95 at gmail.com>
> ---
>  libavfilter/af_atempo.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
> index bfdad7d76b..1245eae8c1 100644
> --- a/libavfilter/af_atempo.c
> +++ b/libavfilter/af_atempo.c
> @@ -147,6 +147,8 @@ typedef struct ATempoContext {
>      uint8_t *dst_end;
>      uint64_t nsamples_in;
>      uint64_t nsamples_out;
> +
> +    int64_t first_frame_pts;
>  } ATempoContext;
>
>  #define YAE_ATEMPO_MIN 0.5
> @@ -994,6 +996,7 @@ static av_cold int init(AVFilterContext *ctx)
>      ATempoContext *atempo = ctx->priv;
>      atempo->format = AV_SAMPLE_FMT_NONE;
>      atempo->state  = YAE_LOAD_FRAGMENT;
> +    atempo->first_frame_pts = AV_NOPTS_VALUE;
>      return 0;
>  }
>
> @@ -1069,6 +1072,7 @@ static int push_samples(ATempoContext *atempo,
>
>      // adjust the PTS:
>      atempo->dst_buffer->pts =
> +        (atempo->first_frame_pts == AV_NOPTS_VALUE ? 0 :
> atempo->first_frame_pts / atempo->tempo) +
>          av_rescale_q(atempo->nsamples_out,
>                       (AVRational){ 1, outlink->sample_rate },
>                       outlink->time_base);
> @@ -1108,6 +1112,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame
> *src_buffer)
>
>              atempo->dst = atempo->dst_buffer->data[0];
>              atempo->dst_end = atempo->dst + n_out * atempo->stride;
> +
> +            if (atempo->first_frame_pts == AV_NOPTS_VALUE)
> +                atempo->first_frame_pts =
> av_rescale_q(atempo->dst_buffer->pts,
> +                                                       inlink->time_base,
> +                                                       outlink->time_base);
>          }
>
>          yae_apply(atempo, &src, src_end, &atempo->dst, atempo->dst_end);
> --
> 2.17.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

lgtm


More information about the ffmpeg-devel mailing list