#include "avfilter.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 | 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 | |
static const char * | mandelbrot_get_name (void *ctx) |
static av_cold int | init (AVFilterContext *ctx, const char *args, void *opaque) |
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 [] |
static const AVClass | mandelbrot_class |
AVFilter | avfilter_vsrc_mandelbrot |
Definition in file vsrc_mandelbrot.c.
#define OFFSET | ( | x | ) | offsetof(MBContext, x) |
Definition at line 78 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 | ) |
Value:
Z_Z2_C(outr,outi,inr,ini)\ if(use_zyklus){\ if(Z && fabs(mb->zyklus[i>>1][0]-outr)+fabs(mb->zyklus[i>>1][1]-outi) <= epsilon)\ break;\ }\ mb->zyklus[i][0]= outr;\ mb->zyklus[i][1]= outi;\
Referenced by draw_mandelbrot().
enum Inner |
enum Outer |
Definition at line 38 of file vsrc_mandelbrot.c.
static int config_props | ( | AVFilterLink * | inlink | ) | [static] |
Definition at line 178 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, | |||
void * | opaque | |||
) | [static] |
Definition at line 117 of file vsrc_mandelbrot.c.
static int interpol | ( | MBContext * | mb, | |
uint32_t * | color, | |||
int | x, | |||
int | y, | |||
int | linesize | |||
) | [static] |
Definition at line 209 of file vsrc_mandelbrot.c.
Referenced by dequant_lsp10r(), dequant_lsp16r(), and draw_mandelbrot().
static const char* mandelbrot_get_name | ( | void * | ctx | ) | [static] |
Definition at line 106 of file vsrc_mandelbrot.c.
static int query_formats | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 167 of file vsrc_mandelbrot.c.
static int request_frame | ( | AVFilterLink * | link | ) | [static] |
Definition at line 395 of file vsrc_mandelbrot.c.
static av_cold void uninit | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 156 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 412 of file vsrc_mandelbrot.c.
const AVClass mandelbrot_class [static] |
Initial value:
{ "MBContext", mandelbrot_get_name, mandelbrot_options }
Definition at line 111 of file vsrc_mandelbrot.c.
const AVOption mandelbrot_options[] [static] |
Initial value:
{ {"size", "set frame size", OFFSET(size), AV_OPT_TYPE_STRING, {.str="640x480"}, CHAR_MIN, CHAR_MAX }, {"s", "set frame size", OFFSET(size), AV_OPT_TYPE_STRING, {.str="640x480"}, CHAR_MIN, CHAR_MAX }, {"rate", "set frame rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str="25"}, CHAR_MIN, CHAR_MAX }, {"r", "set frame rate", OFFSET(rate), AV_OPT_TYPE_STRING, {.str="25"}, CHAR_MIN, CHAR_MAX }, {"maxiter", "set max iterations number", OFFSET(maxiter), AV_OPT_TYPE_INT, {.dbl=7189}, 1, INT_MAX }, {"start_x", "set the initial x position", OFFSET(start_x), AV_OPT_TYPE_DOUBLE, {.dbl=-0.743643887037158704752191506114774}, -100, 100 }, {"start_y", "set the initial y position", OFFSET(start_y), AV_OPT_TYPE_DOUBLE, {.dbl=-0.131825904205311970493132056385139}, -100, 100 }, {"start_scale", "set the initial scale value", OFFSET(start_scale), AV_OPT_TYPE_DOUBLE, {.dbl=3.0}, 0, FLT_MAX }, {"end_scale", "set the terminal scale value", OFFSET(end_scale), AV_OPT_TYPE_DOUBLE, {.dbl=0.3}, 0, FLT_MAX }, {"end_pts", "set the terminal pts value", OFFSET(end_pts), AV_OPT_TYPE_DOUBLE, {.dbl=400}, 0, INT64_MAX }, {"bailout", "set the bailout value", OFFSET(bailout), AV_OPT_TYPE_DOUBLE, {.dbl=10}, 0, FLT_MAX }, {"outer", "set outer coloring mode", OFFSET(outer), AV_OPT_TYPE_INT, {.dbl=NORMALIZED_ITERATION_COUNT}, 0, INT_MAX, 0, "outer"}, {"iteration_count", "set iteration count mode", 0, AV_OPT_TYPE_CONST, {.dbl=ITERATION_COUNT}, INT_MIN, INT_MAX, 0, "outer" }, {"normalized_iteration_count", "set normalized iteration count mode", 0, AV_OPT_TYPE_CONST, {.dbl=NORMALIZED_ITERATION_COUNT}, INT_MIN, INT_MAX, 0, "outer" }, {"inner", "set inner coloring mode", OFFSET(inner), AV_OPT_TYPE_INT, {.dbl=MINCOL}, 0, INT_MAX, 0, "inner"}, {"black", "set black mode", 0, AV_OPT_TYPE_CONST, {.dbl=BLACK}, INT_MIN, INT_MAX, 0, "inner" }, {"period", "set period mode", 0, AV_OPT_TYPE_CONST, {.dbl=PERIOD}, INT_MIN, INT_MAX, 0, "inner" }, {"convergence", "show time until convergence", 0, AV_OPT_TYPE_CONST, {.dbl=CONVTIME}, INT_MIN, INT_MAX, 0, "inner" }, {"mincol", "color based on point closest to the origin of the iterations", 0, AV_OPT_TYPE_CONST, {.dbl=MINCOL}, INT_MIN, INT_MAX, 0, "inner" }, {NULL}, }
Definition at line 80 of file vsrc_mandelbrot.c.