FFmpeg
|
Use a palette to downsample an input video stream. More...
#include "libavutil/bprint.h"
#include "libavutil/opt.h"
#include "libavutil/qsort.h"
#include "dualinput.h"
#include "avfilter.h"
Go to the source code of this file.
Data Structures | |
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) |
#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 int(* | cmp_func )(const void *, const void *) |
Functions | |
AVFILTER_DEFINE_CLASS (paletteuse) | |
static int | query_formats (AVFilterContext *ctx) |
static av_always_inline int | dither_color (uint32_t px, int er, int eg, int eb, int scale, int shift) |
static av_always_inline int | diff (const uint8_t *c1, const uint8_t *c2) |
static av_always_inline uint8_t | colormap_nearest_bruteforce (const uint32_t *palette, const uint8_t *rgb) |
static void | colormap_nearest_node (const struct color_node *map, const int node_pos, const uint8_t *target, struct nearest_color *nearest) |
static av_always_inline uint8_t | colormap_nearest_recursive (const struct color_node *node, const uint8_t *rgb) |
static av_always_inline uint8_t | colormap_nearest_iterative (const struct color_node *root, const uint8_t *target) |
static av_always_inline int | color_get (struct cache_node *cache, uint32_t color, uint8_t r, uint8_t g, uint8_t b, const struct color_node *map, const uint32_t *palette, const enum color_search_method search_method) |
Check if the requested color is in the cache already. | |
static av_always_inline int | get_dst_color_err (struct cache_node *cache, uint32_t c, const struct color_node *map, const uint32_t *palette, int *er, int *eg, int *eb, const enum color_search_method search_method) |
static av_always_inline int | set_frame (PaletteUseContext *s, AVFrame *out, AVFrame *in, int x_start, int y_start, int w, int h, enum dithering_mode dither, const enum color_search_method search_method) |
static void | disp_node (AVBPrint *buf, const struct color_node *map, int parent_id, int node_id, int depth) |
static int | disp_tree (const struct color_node *node, const char *fname) |
static int | debug_accuracy (const struct color_node *node, const uint32_t *palette, const enum color_search_method search_method) |
static int | get_next_color (const uint8_t *color_used, const uint32_t *palette, int *component, const struct color_rect *box) |
static int | colormap_insert (struct color_node *map, uint8_t *color_used, int *nb_used, const uint32_t *palette, const struct color_rect *box) |
static int | cmp_pal_entry (const void *a, const void *b) |
static void | load_colormap (PaletteUseContext *s) |
static void | debug_mean_error (PaletteUseContext *s, const AVFrame *in1, const AVFrame *in2, int frame_count) |
static void | set_processing_window (enum diff_mode diff_mode, const AVFrame *prv_src, const AVFrame *cur_src, const AVFrame *prv_dst, AVFrame *cur_dst, int *xp, int *yp, int *wp, int *hp) |
static AVFrame * | apply_palette (AVFilterLink *inlink, AVFrame *in) |
static int | config_output (AVFilterLink *outlink) |
static int | config_input_palette (AVFilterLink *inlink) |
static void | load_palette (PaletteUseContext *s, const AVFrame *palette_frame) |
static AVFrame * | load_apply_palette (AVFilterContext *ctx, AVFrame *main, const AVFrame *second) |
static int | filter_frame (AVFilterLink *inlink, AVFrame *in) |
static int | dither_value (int p) |
static av_cold int | init (AVFilterContext *ctx) |
static int | request_frame (AVFilterLink *outlink) |
static av_cold void | uninit (AVFilterContext *ctx) |
Variables | |
static const AVOption | paletteuse_options [] |
static const cmp_func | cmp_funcs [] = {cmp_r, cmp_g, cmp_b} |
static const set_frame_func | set_frame_lut [NB_COLOR_SEARCHES][NB_DITHERING] |
static const AVFilterPad | paletteuse_inputs [] |
static const AVFilterPad | paletteuse_outputs [] |
AVFilter | ff_vf_paletteuse |
Use a palette to downsample an input video stream.
Definition in file vf_paletteuse.c.
#define NBITS 5 |
Definition at line 62 of file vf_paletteuse.c.
Referenced by color_get().
#define CACHE_SIZE (1<<(3*NBITS)) |
Definition at line 63 of file vf_paletteuse.c.
Referenced by uninit().
#define OFFSET | ( | x | ) | offsetof(PaletteUseContext, x) |
Definition at line 103 of file vf_paletteuse.c.
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM |
Definition at line 104 of file vf_paletteuse.c.
#define COLORMAP_NEAREST | ( | search, | |
palette, | |||
root, | |||
target | |||
) |
Definition at line 308 of file vf_paletteuse.c.
Referenced by color_get(), and debug_accuracy().
#define INDENT 4 |
Definition at line 476 of file vf_paletteuse.c.
Referenced by disp_node().
#define DECLARE_CMP_FUNC | ( | name, | |
pos | |||
) |
#define DEFINE_SET_FRAME_COLOR_SEARCH | ( | color_search, | |
color_search_macro | |||
) |
Definition at line 964 of file vf_paletteuse.c.
#define DITHERING_ENTRIES | ( | color_search | ) |
Definition at line 976 of file vf_paletteuse.c.
typedef int(* set_frame_func)(struct PaletteUseContext *s, AVFrame *out, AVFrame *in, int x_start, int y_start, int width, int height) |
Definition at line 77 of file vf_paletteuse.c.
Definition at line 571 of file vf_paletteuse.c.
enum dithering_mode |
DITHERING_NONE | |
DITHERING_BAYER | |
DITHERING_HECKBERT | |
DITHERING_FLOYD_STEINBERG | |
DITHERING_SIERRA2 | |
DITHERING_SIERRA2_4A | |
NB_DITHERING |
Definition at line 32 of file vf_paletteuse.c.
enum color_search_method |
COLOR_SEARCH_NNS_ITERATIVE | |
COLOR_SEARCH_NNS_RECURSIVE | |
COLOR_SEARCH_BRUTEFORCE | |
NB_COLOR_SEARCHES |
Definition at line 42 of file vf_paletteuse.c.
enum diff_mode |
Definition at line 49 of file vf_paletteuse.c.
AVFILTER_DEFINE_CLASS | ( | paletteuse | ) |
|
static |
Definition at line 129 of file vf_paletteuse.c.
|
static |
Definition at line 149 of file vf_paletteuse.c.
Referenced by set_frame().
|
static |
Definition at line 156 of file vf_paletteuse.c.
Referenced by colormap_nearest_bruteforce(), colormap_nearest_iterative(), colormap_nearest_node(), debug_accuracy(), and debug_mean_error().
|
static |
Definition at line 165 of file vf_paletteuse.c.
Referenced by debug_accuracy().
|
static |
Definition at line 194 of file vf_paletteuse.c.
Referenced by colormap_nearest_recursive().
|
static |
Definition at line 224 of file vf_paletteuse.c.
|
static |
Definition at line 236 of file vf_paletteuse.c.
|
static |
Check if the requested color is in the cache already.
If not, find it in the color tree and cache it. Note: r, g, and b are the component of c but are passed as well to avoid recomputing them (they are generally computed by the caller for other uses).
Definition at line 319 of file vf_paletteuse.c.
Referenced by get_dst_color_err(), and set_frame().
|
static |
Definition at line 349 of file vf_paletteuse.c.
Referenced by set_frame().
|
static |
Definition at line 366 of file vf_paletteuse.c.
|
static |
Definition at line 477 of file vf_paletteuse.c.
Referenced by disp_tree().
|
static |
Definition at line 505 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 530 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 588 of file vf_paletteuse.c.
Referenced by colormap_insert().
|
static |
Definition at line 645 of file vf_paletteuse.c.
Referenced by load_colormap().
Definition at line 689 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 696 of file vf_paletteuse.c.
Referenced by load_palette().
|
static |
Definition at line 732 of file vf_paletteuse.c.
Referenced by apply_palette().
|
static |
Definition at line 762 of file vf_paletteuse.c.
Referenced by apply_palette().
|
static |
Definition at line 851 of file vf_paletteuse.c.
Referenced by load_apply_palette().
|
static |
Definition at line 892 of file vf_paletteuse.c.
|
static |
Definition at line 907 of file vf_paletteuse.c.
|
static |
Definition at line 922 of file vf_paletteuse.c.
Referenced by load_apply_palette().
|
static |
Definition at line 940 of file vf_paletteuse.c.
Referenced by init().
|
static |
Definition at line 951 of file vf_paletteuse.c.
|
static |
Definition at line 991 of file vf_paletteuse.c.
Referenced by init().
|
static |
Definition at line 999 of file vf_paletteuse.c.
|
static |
Definition at line 1018 of file vf_paletteuse.c.
|
static |
Definition at line 1024 of file vf_paletteuse.c.
|
static |
Definition at line 105 of file vf_paletteuse.c.
|
static |
Definition at line 586 of file vf_paletteuse.c.
Referenced by get_next_color().
|
static |
Definition at line 985 of file vf_paletteuse.c.
|
static |
Definition at line 1036 of file vf_paletteuse.c.
|
static |
Definition at line 1051 of file vf_paletteuse.c.
AVFilter ff_vf_paletteuse |
Definition at line 1061 of file vf_paletteuse.c.