56 #define OFFSET(x) offsetof(SierpinskiContext, x) 57 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM 92 while (pos_x != 0 && pos_y != 0) {
93 if (
FFABS(pos_x % 3) == 1 &&
FFABS(pos_y % 3) == 1)
109 const int start = (height * job ) / nb_jobs;
110 const int end = (height * (job+1)) / nb_jobs;
113 for (
int y = start; y <
end; y++) {
114 for (
int x = 0; x <
width; x++) {
116 AV_WL32(&dst[x*4], 0x00000000);
118 AV_WL32(&dst[x*4], 0xFFFFFFFF);
134 const int start = (height * job ) / nb_jobs;
135 const int end = (height * (job+1)) / nb_jobs;
138 for (
int y = start; y <
end; y++) {
139 for (
int x = 0; x <
width; x++) {
141 AV_WL32(&dst[x*4], 0x00000000);
143 AV_WL32(&dst[x*4], 0xFFFFFFFF);
184 s->
dest_y += (
int)((rnd >> 16) % mod) - s->
jump;
227 .
name =
"sierpinski",
230 .priv_class = &sierpinski_class,
Context structure for the Lagged Fibonacci PRNG.
This structure describes decoded (raw) audio or video data.
Main libavfilter public API header.
static int draw_carpet_slice(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
AVFilter ff_vsrc_sierpinski
int h
agreed upon image height
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions.
static int config_output(AVFilterLink *inlink)
const char * name
Pad name.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
static av_cold int end(AVCodecContext *avctx)
int(* draw_slice)(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
static int sierpinski_request_frame(AVFilterLink *link)
static int draw_triangle_slice(AVFilterContext *ctx, void *arg, int job, int nb_jobs)
A filter pad used for either input or output.
A link between two filters.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
AVRational time_base
Define the time base used by the PTS of the frames/samples which will pass through this link...
static const AVFilterPad sierpinski_outputs[]
#define AV_PIX_FMT_0BGR32
int w
agreed upon image width
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
int ff_filter_get_nb_threads(AVFilterContext *ctx)
Get number of threads for current filter instance.
static const AVOption sierpinski_options[]
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
AVFilterContext * src
source filter
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
AVFILTER_DEFINE_CLASS(sierpinski)
static int query_formats(AVFilterContext *ctx)
static void draw_sierpinski(AVFilterContext *ctx, AVFrame *frame)
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
static int mod(int a, int b)
Modulo operation with only positive remainders.
AVRational sample_aspect_ratio
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
Describe the class of an AVClass context structure.
Rational number (pair of numerator and denominator).
offset must point to AVRational
const char * name
Filter name.
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
offset must point to two consecutive integers
AVFilterLink ** outputs
array of pointers to output links
static enum AVPixelFormat pix_fmts[]
#define flags(name, subs,...)
AVFilterInternal * internal
An opaque struct for libavfilter internal use.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static av_always_inline AVRational av_inv_q(AVRational q)
Invert a rational.
avfilter_execute_func * execute
static int fill_sierpinski(SierpinskiContext *s, int x, int y)
uint32_t av_get_random_seed(void)
Get a seed to use in conjunction with random functions.
AVPixelFormat
Pixel format.