#include "avfilter.h"
#include "formats.h"
#include "video.h"
#include "internal.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include <float.h>
#include <math.h>
Go to the source code of this file.
Data Structures | |
| struct | Point |
| struct | MBContext |
Defines | |
| #define | SQR(a) ((a)*(a)) |
| #define | OFFSET(x) offsetof(MBContext, x) |
| #define | FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM |
| #define | Z_Z2_C(outr, outi, inr, ini) |
| #define | Z_Z2_C_ZYKLUS(outr, outi, inr, ini, Z) |
Enumerations | |
| enum | Outer { ITERATION_COUNT, NORMALIZED_ITERATION_COUNT } |
| enum | Inner { BLACK, PERIOD, CONVTIME, MINCOL } |
Functions | |
| AVFILTER_DEFINE_CLASS (mandelbrot) | |
| static av_cold int | init (AVFilterContext *ctx, const char *args) |
| static av_cold void | uninit (AVFilterContext *ctx) |
| static int | query_formats (AVFilterContext *ctx) |
| static int | config_props (AVFilterLink *inlink) |
| static void | fill_from_cache (AVFilterContext *ctx, uint32_t *color, int *in_cidx, int *out_cidx, double py, double scale) |
| static int | interpol (MBContext *mb, uint32_t *color, int x, int y, int linesize) |
| static void | draw_mandelbrot (AVFilterContext *ctx, uint32_t *color, int linesize, int64_t pts) |
| static int | request_frame (AVFilterLink *link) |
Variables | |
| static const AVOption | mandelbrot_options [] |
| AVFilter | avfilter_vsrc_mandelbrot |
Definition in file vsrc_mandelbrot.c.
| #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM |
Definition at line 82 of file vsrc_mandelbrot.c.
| #define OFFSET | ( | x | ) | offsetof(MBContext, x) |
Definition at line 81 of file vsrc_mandelbrot.c.
| #define SQR | ( | a | ) | ((a)*(a)) |
| #define Z_Z2_C | ( | outr, | |||
| outi, | |||||
| inr, | |||||
| ini | ) |
Value:
outr= inr*inr - ini*ini + cr;\ outi= 2*inr*ini + ci;
| #define Z_Z2_C_ZYKLUS | ( | outr, | |||
| outi, | |||||
| inr, | |||||
| ini, | |||||
| Z | ) |
| enum Inner |
| enum Outer |
Definition at line 41 of file vsrc_mandelbrot.c.
| AVFILTER_DEFINE_CLASS | ( | mandelbrot | ) |
| static int config_props | ( | AVFilterLink * | inlink | ) | [static] |
Definition at line 165 of file vsrc_mandelbrot.c.
| static void draw_mandelbrot | ( | AVFilterContext * | ctx, | |
| uint32_t * | color, | |||
| int | linesize, | |||
| int64_t | pts | |||
| ) | [static] |
| static void fill_from_cache | ( | AVFilterContext * | ctx, | |
| uint32_t * | color, | |||
| int * | in_cidx, | |||
| int * | out_cidx, | |||
| double | py, | |||
| double | scale | |||
| ) | [static] |
| static av_cold int init | ( | AVFilterContext * | ctx, | |
| const char * | args | |||
| ) | [static] |
Definition at line 112 of file vsrc_mandelbrot.c.
Definition at line 196 of file vsrc_mandelbrot.c.
Referenced by dequant_lsp10r(), dequant_lsp16r(), and draw_mandelbrot().
| static int query_formats | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 154 of file vsrc_mandelbrot.c.
| static int request_frame | ( | AVFilterLink * | link | ) | [static] |
Definition at line 382 of file vsrc_mandelbrot.c.
| static av_cold void uninit | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 144 of file vsrc_mandelbrot.c.
Initial value:
{
.name = "mandelbrot",
.description = NULL_IF_CONFIG_SMALL("Render a Mandelbrot fractal."),
.priv_size = sizeof(MBContext),
.init = init,
.uninit = uninit,
.query_formats = query_formats,
.inputs = (const AVFilterPad[]) {{ .name = NULL}},
.outputs = (const AVFilterPad[]) {{ .name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.request_frame = request_frame,
.config_props = config_props },
{ .name = NULL}},
}
Definition at line 399 of file vsrc_mandelbrot.c.
const AVOption mandelbrot_options[] [static] |
Initial value:
{
{"size", "set frame size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str="640x480"}, CHAR_MIN, CHAR_MAX, FLAGS },
{"s", "set frame size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, {.str="640x480"}, CHAR_MIN, CHAR_MAX, FLAGS },
{"rate", "set frame rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str="25"}, CHAR_MIN, CHAR_MAX, FLAGS },
{"r", "set frame rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str="25"}, CHAR_MIN, CHAR_MAX, FLAGS },
{"maxiter", "set max iterations number", OFFSET(maxiter), AV_OPT_TYPE_INT, {.i64=7189}, 1, INT_MAX, FLAGS },
{"start_x", "set the initial x position", OFFSET(start_x), AV_OPT_TYPE_DOUBLE, {.dbl=-0.743643887037158704752191506114774}, -100, 100, FLAGS },
{"start_y", "set the initial y position", OFFSET(start_y), AV_OPT_TYPE_DOUBLE, {.dbl=-0.131825904205311970493132056385139}, -100, 100, FLAGS },
{"start_scale", "set the initial scale value", OFFSET(start_scale), AV_OPT_TYPE_DOUBLE, {.dbl=3.0}, 0, FLT_MAX, FLAGS },
{"end_scale", "set the terminal scale value", OFFSET(end_scale), AV_OPT_TYPE_DOUBLE, {.dbl=0.3}, 0, FLT_MAX, FLAGS },
{"end_pts", "set the terminal pts value", OFFSET(end_pts), AV_OPT_TYPE_DOUBLE, {.dbl=400}, 0, INT64_MAX, FLAGS },
{"bailout", "set the bailout value", OFFSET(bailout), AV_OPT_TYPE_DOUBLE, {.dbl=10}, 0, FLT_MAX, FLAGS },
{"outer", "set outer coloring mode", OFFSET(outer), AV_OPT_TYPE_INT, {.i64=NORMALIZED_ITERATION_COUNT}, 0, INT_MAX, FLAGS, "outer" },
{"iteration_count", "set iteration count mode", 0, AV_OPT_TYPE_CONST, {.i64=ITERATION_COUNT}, INT_MIN, INT_MAX, FLAGS, "outer" },
{"normalized_iteration_count", "set normalized iteration count mode", 0, AV_OPT_TYPE_CONST, {.i64=NORMALIZED_ITERATION_COUNT}, INT_MIN, INT_MAX, FLAGS, "outer" },
{"inner", "set inner coloring mode", OFFSET(inner), AV_OPT_TYPE_INT, {.i64=MINCOL}, 0, INT_MAX, FLAGS, "inner" },
{"black", "set black mode", 0, AV_OPT_TYPE_CONST, {.i64=BLACK}, INT_MIN, INT_MAX, FLAGS, "inner"},
{"period", "set period mode", 0, AV_OPT_TYPE_CONST, {.i64=PERIOD}, INT_MIN, INT_MAX, FLAGS, "inner"},
{"convergence", "show time until convergence", 0, AV_OPT_TYPE_CONST, {.i64=CONVTIME}, INT_MIN, INT_MAX, FLAGS, "inner"},
{"mincol", "color based on point closest to the origin of the iterations", 0, AV_OPT_TYPE_CONST, {.i64=MINCOL}, INT_MIN, INT_MAX, FLAGS, "inner"},
{NULL},
}
Definition at line 84 of file vsrc_mandelbrot.c.
1.5.8