lavfi/showwaves: fail in case of push_frame() error
This commit is contained in:
parent
e4e36a4dd2
commit
e80be5a0aa
@ -160,14 +160,16 @@ static int config_output(AVFilterLink *outlink)
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline static void push_frame(AVFilterLink *outlink)
|
||||
inline static int push_frame(AVFilterLink *outlink)
|
||||
{
|
||||
ShowWavesContext *showwaves = outlink->src->priv;
|
||||
int ret;
|
||||
|
||||
ff_filter_frame(outlink, showwaves->outpicref);
|
||||
showwaves->req_fullfilled = 1;
|
||||
if ((ret = ff_filter_frame(outlink, showwaves->outpicref)) >= 0)
|
||||
showwaves->req_fullfilled = 1;
|
||||
showwaves->outpicref = NULL;
|
||||
showwaves->buf_idx = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int request_frame(AVFilterLink *outlink)
|
||||
@ -198,7 +200,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
|
||||
int linesize = outpicref ? outpicref->linesize[0] : 0;
|
||||
int16_t *p = (int16_t *)insamples->data[0];
|
||||
int nb_channels = av_get_channel_layout_nb_channels(insamples->audio->channel_layout);
|
||||
int i, j, k, h;
|
||||
int i, j, k, h, ret = 0;
|
||||
const int n = showwaves->n;
|
||||
const int x = 255 / (nb_channels * n); /* multiplication factor, pre-computed to avoid in-loop divisions */
|
||||
|
||||
@ -244,12 +246,13 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
|
||||
showwaves->buf_idx++;
|
||||
}
|
||||
if (showwaves->buf_idx == showwaves->w)
|
||||
push_frame(outlink);
|
||||
if ((ret = push_frame(outlink)) < 0)
|
||||
break;
|
||||
outpicref = showwaves->outpicref;
|
||||
}
|
||||
|
||||
avfilter_unref_buffer(insamples);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const AVFilterPad showwaves_inputs[] = {
|
||||
|
Loading…
Reference in New Issue
Block a user