[FFmpeg-devel] [PATCH] avfilter/af_atempo: fix assertion failure on empty input

Pavel Koshevoy pkoshevoy at gmail.com
Thu Dec 15 07:10:49 EET 2016


On Wed, Dec 14, 2016 at 7:27 PM, Marton Balint <cus at passwd.hu> wrote:
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  libavfilter/af_atempo.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
> index 59b08ec..93a9c05 100644
> --- a/libavfilter/af_atempo.c
> +++ b/libavfilter/af_atempo.c
> @@ -74,6 +74,7 @@ typedef struct {
>   * Filter state machine states
>   */
>  typedef enum {
> +    YAE_NEW,
>      YAE_LOAD_FRAGMENT,
>      YAE_ADJUST_POSITION,
>      YAE_RELOAD_FRAGMENT,
> @@ -180,7 +181,7 @@ static void yae_clear(ATempoContext *atempo)
>      atempo->tail = 0;
>
>      atempo->nfrag = 0;
> -    atempo->state = YAE_LOAD_FRAGMENT;
> +    atempo->state = YAE_NEW;
>
>      atempo->position[0] = 0;
>      atempo->position[1] = 0;
> @@ -828,6 +829,9 @@ yae_apply(ATempoContext *atempo,
>            uint8_t *dst_end)
>  {
>      while (1) {
> +        if (atempo->state == YAE_NEW)
> +            atempo->state = YAE_LOAD_FRAGMENT;
> +
>          if (atempo->state == YAE_LOAD_FRAGMENT) {
>              // load additional data for the current fragment:
>              if (yae_load_frag(atempo, src_ref, src_end) != 0) {
> @@ -983,7 +987,7 @@ static av_cold int init(AVFilterContext *ctx)
>  {
>      ATempoContext *atempo = ctx->priv;
>      atempo->format = AV_SAMPLE_FMT_NONE;
> -    atempo->state  = YAE_LOAD_FRAGMENT;
> +    atempo->state  = YAE_NEW;
>      return 0;
>  }
>
> @@ -1123,7 +1127,7 @@ static int request_frame(AVFilterLink *outlink)
>
>      ret = ff_request_frame(ctx->inputs[0]);
>
> -    if (ret == AVERROR_EOF) {
> +    if (ret == AVERROR_EOF && atempo->state != YAE_NEW) {
>          // flush the filter:
>          int n_max = atempo->ring;
>          int n_out;


I'd like to understand these changes a little better ... how can I
reproduce the problem this is trying to fix?

    Pavel.


More information about the ffmpeg-devel mailing list