FFmpeg
Classes | Macros | Typedefs | Enumerations | Functions | Variables
vf_paletteuse.c File Reference

Use a palette to downsample an input video stream. More...

#include "libavutil/bprint.h"
#include "libavutil/internal.h"
#include "libavutil/opt.h"
#include "libavutil/qsort.h"
#include "avfilter.h"
#include "filters.h"
#include "framesync.h"
#include "internal.h"

Classes

struct  color_node
 
struct  cached_color
 
struct  cache_node
 
struct  PaletteUseContext
 
struct  nearest_color
 
struct  stack_node
 
struct  color
 
struct  color_rect
 

Macros

#define NBITS   5
 
#define CACHE_SIZE   (1<<(3*NBITS))
 
#define OFFSET(x)   offsetof(PaletteUseContext, x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
 
#define COLORMAP_NEAREST(search, palette, root, target, trans_thresh)
 
#define INDENT   4
 
#define DECLARE_CMP_FUNC(name, pos)
 
#define DEFINE_SET_FRAME(color_search, name, value)
 
#define DEFINE_SET_FRAME_COLOR_SEARCH(color_search, color_search_macro)
 
#define DITHERING_ENTRIES(color_search)
 

Typedefs

typedef int(* set_frame_func) (struct PaletteUseContext *s, AVFrame *out, AVFrame *in, int x_start, int y_start, int width, int height)
 
typedef struct PaletteUseContext PaletteUseContext
 
typedef int(* cmp_func) (const void *, const void *)
 

Enumerations

enum  dithering_mode {
  DITHERING_NONE, DITHERING_BAYER, DITHERING_HECKBERT, DITHERING_FLOYD_STEINBERG,
  DITHERING_SIERRA2, DITHERING_SIERRA2_4A, NB_DITHERING
}
 
enum  color_search_method { COLOR_SEARCH_NNS_ITERATIVE, COLOR_SEARCH_NNS_RECURSIVE, COLOR_SEARCH_BRUTEFORCE, NB_COLOR_SEARCHES }
 
enum  diff_mode { DIFF_MODE_NONE, DIFF_MODE_RECTANGLE, NB_DIFF_MODE }
 

Functions

 AVFILTER_DEFINE_CLASS (paletteuse)
 

Variables

AVFilter ff_vf_paletteuse
 

Detailed Description

Use a palette to downsample an input video stream.

Macro Definition Documentation

§ COLORMAP_NEAREST

#define COLORMAP_NEAREST (   search,
  palette,
  root,
  target,
  trans_thresh 
)
Value:
search == COLOR_SEARCH_NNS_ITERATIVE ? colormap_nearest_iterative(root, target, trans_thresh) : \
search == COLOR_SEARCH_NNS_RECURSIVE ? colormap_nearest_recursive(root, target, trans_thresh) : \
colormap_nearest_bruteforce(palette, target, trans_thresh)

§ DECLARE_CMP_FUNC

#define DECLARE_CMP_FUNC (   name,
  pos 
)
Value:
static int cmp_##name(const void *pa, const void *pb) \
{ \
const struct color *a = pa; \
const struct color *b = pb; \
return (a->value >> (8 * (3 - (pos))) & 0xff) \
- (b->value >> (8 * (3 - (pos))) & 0xff); \
}
Definition: vf_paletteuse.c:588

§ DEFINE_SET_FRAME

#define DEFINE_SET_FRAME (   color_search,
  name,
  value 
)
Value:
static int set_frame_##name(PaletteUseContext *s, AVFrame *out, AVFrame *in, \
int x_start, int y_start, int w, int h) \
{ \
return set_frame(s, out, in, x_start, y_start, w, h, value, color_search); \
}
This structure describes decoded (raw) audio or video data.
Definition: frame.h:218
Definition: vf_paletteuse.c:83

§ DEFINE_SET_FRAME_COLOR_SEARCH

#define DEFINE_SET_FRAME_COLOR_SEARCH (   color_search,
  color_search_macro 
)
Value:
DEFINE_SET_FRAME(color_search_macro, color_search##_##none, DITHERING_NONE) \
DEFINE_SET_FRAME(color_search_macro, color_search##_##bayer, DITHERING_BAYER) \
DEFINE_SET_FRAME(color_search_macro, color_search##_##heckbert, DITHERING_HECKBERT) \
DEFINE_SET_FRAME(color_search_macro, color_search##_##floyd_steinberg, DITHERING_FLOYD_STEINBERG) \
DEFINE_SET_FRAME(color_search_macro, color_search##_##sierra2, DITHERING_SIERRA2) \
DEFINE_SET_FRAME(color_search_macro, color_search##_##sierra2_4a, DITHERING_SIERRA2_4A) \

§ DITHERING_ENTRIES

#define DITHERING_ENTRIES (   color_search)
Value:
{ \
set_frame_##color_search##_none, \
set_frame_##color_search##_bayer, \
set_frame_##color_search##_heckbert, \
set_frame_##color_search##_floyd_steinberg, \
set_frame_##color_search##_sierra2, \
set_frame_##color_search##_sierra2_4a, \
}

Variable Documentation

§ ff_vf_paletteuse

AVFilter ff_vf_paletteuse
Initial value:
= {
.name = "paletteuse",
.description = NULL_IF_CONFIG_SMALL("Use a palette to downsample an input video stream."),
.priv_size = sizeof(PaletteUseContext),
.query_formats = query_formats,
.init = init,
.uninit = uninit,
.activate = activate,
.inputs = paletteuse_inputs,
.outputs = paletteuse_outputs,
.priv_class = &paletteuse_class,
}
Definition: vf_paletteuse.c:83
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186