|
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.
1.8.2