Browse Source

lavfi/showspectrum: raise filter_frame() error.

tags/n2.0
Clément Bœsch 12 years ago
parent
commit
27ce858c98
1 changed files with 13 additions and 8 deletions
  1. +13
    -8
      libavfilter/avf_showspectrum.c

+ 13
- 8
libavfilter/avf_showspectrum.c View File

@@ -242,7 +242,7 @@ static int config_output(AVFilterLink *outlink)
return 0;
}

inline static void push_frame(AVFilterLink *outlink)
inline static int push_frame(AVFilterLink *outlink)
{
ShowSpectrumContext *showspectrum = outlink->src->priv;

@@ -252,7 +252,7 @@ inline static void push_frame(AVFilterLink *outlink)
showspectrum->filled = 0;
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)
@@ -273,6 +273,7 @@ static int request_frame(AVFilterLink *outlink)

static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples, int nb_samples)
{
int ret;
AVFilterContext *ctx = inlink->dst;
AVFilterLink *outlink = ctx->outputs[0];
ShowSpectrumContext *showspectrum = ctx->priv;
@@ -455,7 +456,9 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples, int nb
av_rescale_q(showspectrum->consumed,
(AVRational){ 1, inlink->sample_rate },
outlink->time_base);
push_frame(outlink);
ret = push_frame(outlink);
if (ret < 0)
return ret;
}

return add_samples;
@@ -465,17 +468,19 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
{
AVFilterContext *ctx = inlink->dst;
ShowSpectrumContext *showspectrum = ctx->priv;
int left_samples = insamples->nb_samples;
int ret = 0, left_samples = insamples->nb_samples;

showspectrum->consumed = 0;
while (left_samples) {
const int added_samples = plot_spectrum_column(inlink, insamples, left_samples);
showspectrum->consumed += added_samples;
left_samples -= added_samples;
int ret = plot_spectrum_column(inlink, insamples, left_samples);
if (ret < 0)
break;
showspectrum->consumed += ret;
left_samples -= ret;
}

av_frame_free(&insamples);
return 0;
return ret;
}

static const AVFilterPad showspectrum_inputs[] = {


Loading…
Cancel
Save