FFmpeg
|
#include "libavutil/bprint.h"
#include "libavutil/internal.h"
#include "libavutil/opt.h"
#include "libavutil/qsort.h"
#include "avfilter.h"
#include "framesync.h"
#include "internal.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<<(4*NBITS)) |
#define | OFFSET(x) offsetof(PaletteUseContext, x) |
#define | FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) |
#define | COLORMAP_NEAREST(s, search, 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 | load_apply_palette (FFFrameSync *fs) |
static int | query_formats (AVFilterContext *ctx) |
static av_always_inline uint32_t | 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, const PaletteUseContext *s) |
static av_always_inline uint8_t | colormap_nearest_bruteforce (const PaletteUseContext *s, const uint8_t *argb) |
static void | colormap_nearest_node (const PaletteUseContext *s, 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 PaletteUseContext *s, const struct color_node *node, const uint8_t *rgb) |
static av_always_inline uint8_t | colormap_nearest_iterative (const PaletteUseContext *s, const struct color_node *root, const uint8_t *target) |
static av_always_inline int | color_get (PaletteUseContext *s, uint32_t color, uint8_t a, uint8_t r, uint8_t g, uint8_t b, const enum color_search_method search_method) |
Check if the requested color is in the cache already. More... | |
static av_always_inline int | get_dst_color_err (PaletteUseContext *s, uint32_t c, int *ea, 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 PaletteUseContext *s) |
static int | get_next_color (const uint8_t *color_used, const PaletteUseContext *s, int *component, const struct color_rect *box) |
static int | colormap_insert (struct color_node *map, uint8_t *color_used, int *nb_used, const PaletteUseContext *s, const struct color_rect *box) |
static int | cmp_pal_entry (const void *a, const void *b) |
static int | cmp_pal_entry_alpha (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 int | apply_palette (AVFilterLink *inlink, AVFrame *in, AVFrame **outf) |
static int | config_output (AVFilterLink *outlink) |
static int | config_input_palette (AVFilterLink *inlink) |
static void | load_palette (PaletteUseContext *s, const AVFrame *palette_frame) |
static int | dither_value (int p) |
static av_cold int | init (AVFilterContext *ctx) |
static int | activate (AVFilterContext *ctx) |
static av_cold void | uninit (AVFilterContext *ctx) |
Variables | |
static const AVOption | paletteuse_options [] |
static const cmp_func | cmp_funcs [] = {cmp_a, 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 [] |
const 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 64 of file vf_paletteuse.c.
#define CACHE_SIZE (1<<(4*NBITS)) |
Definition at line 65 of file vf_paletteuse.c.
#define OFFSET | ( | x | ) | offsetof(PaletteUseContext, x) |
Definition at line 109 of file vf_paletteuse.c.
#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) |
Definition at line 110 of file vf_paletteuse.c.
Definition at line 330 of file vf_paletteuse.c.
#define INDENT 4 |
Definition at line 507 of file vf_paletteuse.c.
#define DEFINE_SET_FRAME_COLOR_SEARCH | ( | color_search, | |
color_search_macro | |||
) |
Definition at line 1072 of file vf_paletteuse.c.
#define DITHERING_ENTRIES | ( | color_search | ) |
Definition at line 1084 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 79 of file vf_paletteuse.c.
typedef int(* cmp_func) (const void *, const void *) |
Definition at line 609 of file vf_paletteuse.c.
enum dithering_mode |
Enumerator | |
---|---|
DITHERING_NONE | |
DITHERING_BAYER | |
DITHERING_HECKBERT | |
DITHERING_FLOYD_STEINBERG | |
DITHERING_SIERRA2 | |
DITHERING_SIERRA2_4A | |
NB_DITHERING |
Definition at line 34 of file vf_paletteuse.c.
enum color_search_method |
Enumerator | |
---|---|
COLOR_SEARCH_NNS_ITERATIVE | |
COLOR_SEARCH_NNS_RECURSIVE | |
COLOR_SEARCH_BRUTEFORCE | |
NB_COLOR_SEARCHES |
Definition at line 44 of file vf_paletteuse.c.
enum diff_mode |
Enumerator | |
---|---|
DIFF_MODE_NONE | |
DIFF_MODE_RECTANGLE | |
NB_DIFF_MODE |
Definition at line 51 of file vf_paletteuse.c.
AVFILTER_DEFINE_CLASS | ( | paletteuse | ) |
|
static |
Definition at line 1039 of file vf_paletteuse.c.
Referenced by config_output().
|
static |
Definition at line 140 of file vf_paletteuse.c.
|
static |
Definition at line 156 of file vf_paletteuse.c.
Referenced by set_frame().
|
static |
Definition at line 165 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 185 of file vf_paletteuse.c.
Referenced by debug_accuracy().
|
static |
Definition at line 215 of file vf_paletteuse.c.
Referenced by colormap_nearest_recursive().
|
static |
Definition at line 246 of file vf_paletteuse.c.
|
static |
Definition at line 258 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: a, r, g, and b are the components of color, but are passed as well to avoid recomputing them (they are generally computed by the caller for other uses).
Definition at line 341 of file vf_paletteuse.c.
Referenced by get_dst_color_err(), and set_frame().
|
static |
Definition at line 375 of file vf_paletteuse.c.
Referenced by set_frame().
|
static |
Definition at line 399 of file vf_paletteuse.c.
|
static |
Definition at line 508 of file vf_paletteuse.c.
Referenced by disp_tree().
|
static |
Definition at line 537 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 562 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 627 of file vf_paletteuse.c.
Referenced by colormap_insert().
|
static |
Definition at line 704 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 749 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 756 of file vf_paletteuse.c.
Referenced by load_colormap().
|
static |
Definition at line 763 of file vf_paletteuse.c.
Referenced by load_palette().
|
static |
Definition at line 805 of file vf_paletteuse.c.
Referenced by apply_palette().
|
static |
Definition at line 837 of file vf_paletteuse.c.
Referenced by apply_palette().
|
static |
Definition at line 926 of file vf_paletteuse.c.
Referenced by load_apply_palette().
|
static |
Definition at line 968 of file vf_paletteuse.c.
|
static |
Definition at line 990 of file vf_paletteuse.c.
|
static |
Definition at line 1005 of file vf_paletteuse.c.
Referenced by load_apply_palette().
Definition at line 1099 of file vf_paletteuse.c.
Referenced by init().
|
static |
Definition at line 1107 of file vf_paletteuse.c.
|
static |
Definition at line 1129 of file vf_paletteuse.c.
|
static |
Definition at line 1135 of file vf_paletteuse.c.
|
static |
Definition at line 111 of file vf_paletteuse.c.
|
static |
Definition at line 625 of file vf_paletteuse.c.
Referenced by get_next_color().
|
static |
Definition at line 1093 of file vf_paletteuse.c.
Referenced by init().
|
static |
Definition at line 1147 of file vf_paletteuse.c.
|
static |
Definition at line 1158 of file vf_paletteuse.c.
const AVFilter ff_vf_paletteuse |
Definition at line 1166 of file vf_paletteuse.c.