return 0;
}
-static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
+static int draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
{
int i, j;
AVFilterContext *ctx = inlink->dst;
}
p += picref->linesize[0];
}
+ return 0;
}
/**
return sum_sq_err;
}
-static void end_frame(AVFilterLink *inlink)
+static int end_frame(AVFilterLink *inlink)
{
int i, j, best_frame_idx = 0;
double avg_hist[HIST_SIZE] = {0}, sq_err, min_sq_err = -1;
// keep a reference of each frame
thumb->frames[thumb->n].buf = inlink->cur_buf;
+ inlink->cur_buf = NULL;
// no selection until the buffer of N frames is filled up
if (thumb->n < thumb->n_frames - 1) {
thumb->n++;
- return;
+ return 0;
}
// average histogram of the N frames
ff_start_frame(outlink, picref);
thumb->frames[best_frame_idx].buf = NULL;
ff_draw_slice(outlink, 0, inlink->h, 1);
- ff_end_frame(outlink);
+ return ff_end_frame(outlink);
}
static av_cold void uninit(AVFilterContext *ctx)
av_freep(&thumb->frames);
}
-static void null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) { }
+static int null_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) { return 0; }
static int request_frame(AVFilterLink *link)
{