libavfilter/drawutils.c File Reference

#include <string.h>
#include "libavutil/avutil.h"
#include "libavutil/colorspace.h"
#include "libavutil/mem.h"
#include "libavutil/pixdesc.h"
#include "drawutils.h"
#include "formats.h"

Go to the source code of this file.

Enumerations

enum  { RED = 0, GREEN, BLUE, ALPHA }

Functions

int ff_fill_rgba_map (uint8_t *rgba_map, enum PixelFormat pix_fmt)
int ff_fill_line_with_color (uint8_t *line[4], int pixel_step[4], int w, uint8_t dst_color[4], enum PixelFormat pix_fmt, uint8_t rgba_color[4], int *is_packed_rgba, uint8_t rgba_map_ptr[4])
void ff_draw_rectangle (uint8_t *dst[4], int dst_linesize[4], uint8_t *src[4], int pixelstep[4], int hsub, int vsub, int x, int y, int w, int h)
void ff_copy_rectangle (uint8_t *dst[4], int dst_linesize[4], uint8_t *src[4], int src_linesize[4], int pixelstep[4], int hsub, int vsub, int x, int y, int y2, int w, int h)
int ff_draw_init (FFDrawContext *draw, enum PixelFormat format, unsigned flags)
 Init a draw context.
void ff_draw_color (FFDrawContext *draw, FFDrawColor *color, const uint8_t rgba[4])
 Prepare a color.
static uint8_tpointer_at (FFDrawContext *draw, uint8_t *data[], int linesize[], int plane, int x, int y)
void ff_copy_rectangle2 (FFDrawContext *draw, uint8_t *dst[], int dst_linesize[], uint8_t *src[], int src_linesize[], int dst_x, int dst_y, int src_x, int src_y, int w, int h)
 Copy a rectangle from an image to another.
void ff_fill_rectangle (FFDrawContext *draw, FFDrawColor *color, uint8_t *dst[], int dst_linesize[], int dst_x, int dst_y, int w, int h)
 Fill a rectangle with an uniform color.
static void clip_interval (int wmax, int *x, int *w, int *dx)
 Clip interval [x; x+w[ within [0; wmax[.
static void subsampling_bounds (int sub, int *x, int *w, int *start, int *end)
 Decompose w pixels starting at x into start + (w starting at x) + end with x and w aligned on multiples of 1<<sub.
static int component_used (FFDrawContext *draw, int plane, int comp)
static void blend_line (uint8_t *dst, unsigned src, unsigned alpha, int dx, int w, unsigned hsub, int left, int right)
void ff_blend_rectangle (FFDrawContext *draw, FFDrawColor *color, uint8_t *dst[], int dst_linesize[], int dst_w, int dst_h, int x0, int y0, int w, int h)
 Blend a rectangle with an uniform color.
static void blend_pixel (uint8_t *dst, unsigned src, unsigned alpha, uint8_t *mask, int mask_linesize, int l2depth, unsigned w, unsigned h, unsigned shift, unsigned xm0)
static void blend_line_hv (uint8_t *dst, int dst_delta, unsigned src, unsigned alpha, uint8_t *mask, int mask_linesize, int l2depth, int w, unsigned hsub, unsigned vsub, int xm, int left, int right, int hband)
void ff_blend_mask (FFDrawContext *draw, FFDrawColor *color, uint8_t *dst[], int dst_linesize[], int dst_w, int dst_h, uint8_t *mask, int mask_linesize, int mask_w, int mask_h, int l2depth, unsigned endianness, int x0, int y0)
 Blend an alpha mask with an uniform color.
int ff_draw_round_to_sub (FFDrawContext *draw, int sub_dir, int round_dir, int value)
 Round a dimension according to subsampling.
AVFilterFormatsff_draw_supported_pixel_formats (unsigned flags)
 Return the list of pixel formats supported by the draw functions.


Enumeration Type Documentation

anonymous enum

Enumerator:
RED 
GREEN 
BLUE 
ALPHA 

Definition at line 31 of file drawutils.c.


Function Documentation

static void blend_line ( uint8_t dst,
unsigned  src,
unsigned  alpha,
int  dx,
int  w,
unsigned  hsub,
int  left,
int  right 
) [static]

Definition at line 309 of file drawutils.c.

Referenced by ff_blend_rectangle().

static void blend_line_hv ( uint8_t dst,
int  dst_delta,
unsigned  src,
unsigned  alpha,
uint8_t mask,
int  mask_linesize,
int  l2depth,
int  w,
unsigned  hsub,
unsigned  vsub,
int  xm,
int  left,
int  right,
int  hband 
) [static]

Definition at line 405 of file drawutils.c.

Referenced by ff_blend_mask().

static void blend_pixel ( uint8_t dst,
unsigned  src,
unsigned  alpha,
uint8_t mask,
int  mask_linesize,
int  l2depth,
unsigned  w,
unsigned  h,
unsigned  shift,
unsigned  xm0 
) [static]

Definition at line 382 of file drawutils.c.

Referenced by blend_line_hv().

static void clip_interval ( int  wmax,
int x,
int w,
int dx 
) [static]

Clip interval [x; x+w[ within [0; wmax[.

The resulting w may be negative if the final interval is empty. dx, if not null, return the difference between in and out value of x.

Definition at line 270 of file drawutils.c.

Referenced by ff_blend_mask(), and ff_blend_rectangle().

static int component_used ( FFDrawContext draw,
int  plane,
int  comp 
) [static]

Definition at line 301 of file drawutils.c.

Referenced by ff_blend_mask(), and ff_blend_rectangle().

void ff_blend_mask ( FFDrawContext draw,
FFDrawColor color,
uint8_t dst[],
int  dst_linesize[],
int  dst_w,
int  dst_h,
uint8_t mask,
int  mask_linesize,
int  mask_w,
int  mask_h,
int  l2depth,
unsigned  endianness,
int  x0,
int  y0 
)

Blend an alpha mask with an uniform color.

Parameters:
draw draw context
color color for the overlay;
dst destination image
dst_linesize line stride of the destination
dst_w width of the destination image
dst_h height of the destination image
mask mask
mask_linesize line stride of the mask
mask_w width of the mask
mask_h height of the mask
l2depth log2 of depth of the mask (0 for 1bpp, 3 for 8bpp)
endianness bit order of the mask (0: MSB to the left)
x0 horizontal position of the overlay
y0 vertical position of the overlay

Definition at line 430 of file drawutils.c.

Referenced by draw_glyphs(), and overlay_ass_image().

void ff_blend_rectangle ( FFDrawContext draw,
FFDrawColor color,
uint8_t dst[],
int  dst_linesize[],
int  dst_w,
int  dst_h,
int  x0,
int  y0,
int  w,
int  h 
)

Blend a rectangle with an uniform color.

Definition at line 332 of file drawutils.c.

Referenced by draw_text().

void ff_copy_rectangle ( uint8_t dst[4],
int  dst_linesize[4],
uint8_t src[4],
int  src_linesize[4],
int  pixelstep[4],
int  hsub,
int  vsub,
int  x,
int  y,
int  y2,
int  w,
int  h 
)

Definition at line 115 of file drawutils.c.

void ff_copy_rectangle2 ( FFDrawContext draw,
uint8_t dst[],
int  dst_linesize[],
uint8_t src[],
int  src_linesize[],
int  dst_x,
int  dst_y,
int  src_x,
int  src_y,
int  w,
int  h 
)

Copy a rectangle from an image to another.

The coordinates must be as even as the subsampling requires.

Definition at line 214 of file drawutils.c.

Referenced by draw_slice().

void ff_draw_color ( FFDrawContext draw,
FFDrawColor color,
const uint8_t  rgba[4] 
)

Prepare a color.

Definition at line 179 of file drawutils.c.

Referenced by config_input(), and overlay_ass_image().

int ff_draw_init ( FFDrawContext draw,
enum PixelFormat  format,
unsigned  flags 
)

Init a draw context.

Only a limited number of pixel formats are supported, if format is not supported the function will return an error. No flags currently defined.

Returns:
0 for success, < 0 for error

Definition at line 135 of file drawutils.c.

Referenced by config_input(), and ff_draw_supported_pixel_formats().

void ff_draw_rectangle ( uint8_t dst[4],
int  dst_linesize[4],
uint8_t src[4],
int  pixelstep[4],
int  hsub,
int  vsub,
int  x,
int  y,
int  w,
int  h 
)

Definition at line 95 of file drawutils.c.

int ff_draw_round_to_sub ( FFDrawContext draw,
int  sub_dir,
int  round_dir,
int  value 
)

Round a dimension according to subsampling.

Parameters:
draw draw context
sub_dir 0 for horizontal, 1 for vertical
round_dir 0 nearest, -1 round down, +1 round up
value value to round
Returns:
the rounded value

Definition at line 490 of file drawutils.c.

Referenced by config_input(), and draw_slice().

AVFilterFormats* ff_draw_supported_pixel_formats ( unsigned  flags  ) 

Return the list of pixel formats supported by the draw functions.

The flags are the same as ff_draw_init, i.e., none currently.

Definition at line 502 of file drawutils.c.

Referenced by query_formats().

int ff_fill_line_with_color ( uint8_t line[4],
int  pixel_step[4],
int  w,
uint8_t  dst_color[4],
enum PixelFormat  pix_fmt,
uint8_t  rgba_color[4],
int is_packed_rgba,
uint8_t  rgba_map_ptr[4] 
)

Definition at line 52 of file drawutils.c.

void ff_fill_rectangle ( FFDrawContext draw,
FFDrawColor color,
uint8_t dst[],
int  dst_linesize[],
int  dst_x,
int  dst_y,
int  w,
int  h 
)

Fill a rectangle with an uniform color.

The coordinates must be as even as the subsampling requires. The color needs to be inited with ff_draw_color.

Definition at line 236 of file drawutils.c.

Referenced by draw_blank_frame(), draw_send_bar_slice(), and draw_slice().

int ff_fill_rgba_map ( uint8_t rgba_map,
enum PixelFormat  pix_fmt 
)

static uint8_t* pointer_at ( FFDrawContext draw,
uint8_t data[],
int  linesize[],
int  plane,
int  x,
int  y 
) [static]

static void subsampling_bounds ( int  sub,
int x,
int w,
int start,
int end 
) [static]

Decompose w pixels starting at x into start + (w starting at x) + end with x and w aligned on multiples of 1<<sub.

Definition at line 289 of file drawutils.c.

Referenced by ff_blend_mask(), and ff_blend_rectangle().


Generated on Fri Oct 26 02:50:09 2012 for FFmpeg by  doxygen 1.5.8