mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-02 20:35:37 +02:00
lavfi/showspectrum: raise filter_frame() error.
This commit is contained in:
parent
df5be5e275
commit
27ce858c98
@ -242,7 +242,7 @@ static int config_output(AVFilterLink *outlink)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static void push_frame(AVFilterLink *outlink)
|
inline static int push_frame(AVFilterLink *outlink)
|
||||||
{
|
{
|
||||||
ShowSpectrumContext *showspectrum = outlink->src->priv;
|
ShowSpectrumContext *showspectrum = outlink->src->priv;
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ inline static void push_frame(AVFilterLink *outlink)
|
|||||||
showspectrum->filled = 0;
|
showspectrum->filled = 0;
|
||||||
showspectrum->req_fullfilled = 1;
|
showspectrum->req_fullfilled = 1;
|
||||||
|
|
||||||
ff_filter_frame(outlink, av_frame_clone(showspectrum->outpicref));
|
return ff_filter_frame(outlink, av_frame_clone(showspectrum->outpicref));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int request_frame(AVFilterLink *outlink)
|
static int request_frame(AVFilterLink *outlink)
|
||||||
@ -273,6 +273,7 @@ static int request_frame(AVFilterLink *outlink)
|
|||||||
|
|
||||||
static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples, int nb_samples)
|
static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples, int nb_samples)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
AVFilterContext *ctx = inlink->dst;
|
AVFilterContext *ctx = inlink->dst;
|
||||||
AVFilterLink *outlink = ctx->outputs[0];
|
AVFilterLink *outlink = ctx->outputs[0];
|
||||||
ShowSpectrumContext *showspectrum = ctx->priv;
|
ShowSpectrumContext *showspectrum = ctx->priv;
|
||||||
@ -455,7 +456,9 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples, int nb
|
|||||||
av_rescale_q(showspectrum->consumed,
|
av_rescale_q(showspectrum->consumed,
|
||||||
(AVRational){ 1, inlink->sample_rate },
|
(AVRational){ 1, inlink->sample_rate },
|
||||||
outlink->time_base);
|
outlink->time_base);
|
||||||
push_frame(outlink);
|
ret = push_frame(outlink);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return add_samples;
|
return add_samples;
|
||||||
@ -465,17 +468,19 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
|
|||||||
{
|
{
|
||||||
AVFilterContext *ctx = inlink->dst;
|
AVFilterContext *ctx = inlink->dst;
|
||||||
ShowSpectrumContext *showspectrum = ctx->priv;
|
ShowSpectrumContext *showspectrum = ctx->priv;
|
||||||
int left_samples = insamples->nb_samples;
|
int ret = 0, left_samples = insamples->nb_samples;
|
||||||
|
|
||||||
showspectrum->consumed = 0;
|
showspectrum->consumed = 0;
|
||||||
while (left_samples) {
|
while (left_samples) {
|
||||||
const int added_samples = plot_spectrum_column(inlink, insamples, left_samples);
|
int ret = plot_spectrum_column(inlink, insamples, left_samples);
|
||||||
showspectrum->consumed += added_samples;
|
if (ret < 0)
|
||||||
left_samples -= added_samples;
|
break;
|
||||||
|
showspectrum->consumed += ret;
|
||||||
|
left_samples -= ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_frame_free(&insamples);
|
av_frame_free(&insamples);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const AVFilterPad showspectrum_inputs[] = {
|
static const AVFilterPad showspectrum_inputs[] = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user