libavfilter/vf_thumbnail.c File Reference

Potential thumbnail lookup filter to reduce the risk of an inappropriate selection (such as a black frame) we could get with an absolute seek. More...

#include "avfilter.h"

Go to the source code of this file.

Data Structures

struct  thumb_frame
struct  ThumbContext

Defines

#define HIST_SIZE   (3*256)

Functions

static av_cold int init (AVFilterContext *ctx, const char *args, void *opaque)
static void draw_slice (AVFilterLink *inlink, int y, int h, int slice_dir)
static double frame_sum_square_err (const int *hist, const double *median)
 Compute Sum-square deviation to estimate "closeness".
static void end_frame (AVFilterLink *inlink)
static av_cold void uninit (AVFilterContext *ctx)
static void null_start_frame (AVFilterLink *link, AVFilterBufferRef *picref)
static int request_frame (AVFilterLink *link)
static int poll_frame (AVFilterLink *link)
static int query_formats (AVFilterContext *ctx)

Variables

AVFilter avfilter_vf_thumbnail


Detailed Description

Potential thumbnail lookup filter to reduce the risk of an inappropriate selection (such as a black frame) we could get with an absolute seek.

Simplified version of algorithm by Vadim Zaliva <lord@crocodile.org>. http://notbrainsurgery.livejournal.com/29773.html

Definition in file vf_thumbnail.c.


Define Documentation

#define HIST_SIZE   (3*256)

Definition at line 32 of file vf_thumbnail.c.

Referenced by end_frame(), and frame_sum_square_err().


Function Documentation

static void draw_slice ( AVFilterLink inlink,
int  y,
int  h,
int  slice_dir 
) [static]

Definition at line 70 of file vf_thumbnail.c.

static void end_frame ( AVFilterLink inlink  )  [static]

Definition at line 108 of file vf_thumbnail.c.

static double frame_sum_square_err ( const int *  hist,
const double *  median 
) [static]

Compute Sum-square deviation to estimate "closeness".

Parameters:
hist color distribution histogram
median average color distribution histogram
Returns:
sum of squared errors

Definition at line 96 of file vf_thumbnail.c.

Referenced by end_frame().

static av_cold int init ( AVFilterContext ctx,
const char *  args,
void *  opaque 
) [static]

Definition at line 45 of file vf_thumbnail.c.

static void null_start_frame ( AVFilterLink link,
AVFilterBufferRef picref 
) [static]

Definition at line 171 of file vf_thumbnail.c.

static int poll_frame ( AVFilterLink link  )  [static]

Definition at line 187 of file vf_thumbnail.c.

static int query_formats ( AVFilterContext ctx  )  [static]

Definition at line 209 of file vf_thumbnail.c.

static int request_frame ( AVFilterLink link  )  [static]

Definition at line 173 of file vf_thumbnail.c.

static av_cold void uninit ( AVFilterContext ctx  )  [static]

Definition at line 160 of file vf_thumbnail.c.


Variable Documentation

Initial value:

 {
    .name          = "thumbnail",
    .description   = NULL_IF_CONFIG_SMALL("Select the most representative frame in a given sequence of consecutive frames."),
    .priv_size     = sizeof(ThumbContext),
    .init          = init,
    .uninit        = uninit,
    .query_formats = query_formats,
    .inputs        = (const AVFilterPad[]) {
        {   .name             = "default",
            .type             = AVMEDIA_TYPE_VIDEO,
            .get_video_buffer = avfilter_null_get_video_buffer,
            .start_frame      = null_start_frame,
            .draw_slice       = draw_slice,
            .end_frame        = end_frame,
        },{ .name = NULL }
    },
    .outputs       = (const AVFilterPad[]) {
        {   .name             = "default",
            .type             = AVMEDIA_TYPE_VIDEO,
            .request_frame    = request_frame,
            .poll_frame       = poll_frame,
            .rej_perms        = AV_PERM_REUSE2,
        },{ .name = NULL }
    },
}

Definition at line 219 of file vf_thumbnail.c.


Generated on Fri Oct 26 02:46:12 2012 for FFmpeg by  doxygen 1.5.8