FFmpeg
|
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/avutil.h"
#include "libavutil/csp.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/pixdesc.h"
#include "colorspace.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 AVPixelFormat pix_fmt) |
int | ff_draw_init2 (FFDrawContext *draw, enum AVPixelFormat format, enum AVColorSpace csp, enum AVColorRange range, unsigned flags) |
Init a draw context. More... | |
int | ff_draw_init (FFDrawContext *draw, enum AVPixelFormat format, unsigned flags) |
void | ff_draw_color (FFDrawContext *draw, FFDrawColor *color, const uint8_t rgba[4]) |
Prepare a color. More... | |
static uint8_t * | pointer_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. More... | |
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. More... | |
static void | clip_interval (int wmax, int *x, int *w, int *dx) |
Clip interval [x; x+w[ within [0; wmax[. More... | |
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. More... | |
static void | blend_line (uint8_t *dst, unsigned src, unsigned alpha, int dx, int w, unsigned hsub, int left, int right) |
static void | blend_line16 (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. More... | |
static void | blend_pixel16 (uint8_t *dst, unsigned src, unsigned alpha, const uint8_t *mask, int mask_linesize, int l2depth, unsigned w, unsigned h, unsigned shift, unsigned xm0) |
static void | blend_pixel (uint8_t *dst, unsigned src, unsigned alpha, const uint8_t *mask, int mask_linesize, int l2depth, unsigned w, unsigned h, unsigned shift, unsigned xm0) |
static void | blend_line_hv16 (uint8_t *dst, int dst_delta, unsigned src, unsigned alpha, const uint8_t *mask, int mask_linesize, int l2depth, int w, unsigned hsub, unsigned vsub, int xm, int left, int right, int hband) |
static void | blend_line_hv (uint8_t *dst, int dst_delta, unsigned src, unsigned alpha, const 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, const 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. More... | |
int | ff_draw_round_to_sub (FFDrawContext *draw, int sub_dir, int round_dir, int value) |
Round a dimension according to subsampling. More... | |
AVFilterFormats * | ff_draw_supported_pixel_formats (unsigned flags) |
Return the list of pixel formats supported by the draw functions. More... | |
anonymous enum |
Enumerator | |
---|---|
RED | |
GREEN | |
BLUE | |
ALPHA |
Definition at line 33 of file drawutils.c.
int ff_fill_rgba_map | ( | uint8_t * | rgba_map, |
enum AVPixelFormat | pix_fmt | ||
) |
Definition at line 35 of file drawutils.c.
Referenced by config_input(), config_input_main(), config_input_overlay(), config_input_ref(), config_output(), config_props(), oscilloscope_config_input(), pad_opencl_init(), pixscope_config_input(), and remap_opencl_load().
int ff_draw_init2 | ( | FFDrawContext * | draw, |
enum AVPixelFormat | format, | ||
enum AVColorSpace | csp, | ||
enum AVColorRange | range, | ||
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.
format | pixel format of the frames that will be drawn onto |
csp | color space of the frames that will be drawn onto, defaulting to BT601 or RGB depending on the specified format when AVCOL_SPC_UNSPECIFIED is passed. |
range | sample value range of the frames that will be drawn onto, defaulting to TV-range unless using a legacy J format when AVCOL_RANGE_UNSPECIFIED is passed. |
flags | combination of FF_DRAW_* flags. |
Definition at line 80 of file drawutils.c.
Referenced by ff_draw_init().
int ff_draw_init | ( | FFDrawContext * | draw, |
enum AVPixelFormat | format, | ||
unsigned | flags | ||
) |
Definition at line 151 of file drawutils.c.
Referenced by config_input(), config_out_props(), config_output(), config_props(), ff_draw_supported_pixel_formats(), main(), oscilloscope_config_input(), and pixscope_config_input().
void ff_draw_color | ( | FFDrawContext * | draw, |
FFDrawColor * | color, | ||
const uint8_t | rgba[4] | ||
) |
Prepare a color.
The rgba value passed is always 8-bit full-range in the RGB space corresponding to the space set at initialization.
Definition at line 156 of file drawutils.c.
Referenced by config_input(), config_out_props(), config_output(), config_props(), draw_text(), main(), oscilloscope_config_input(), overlay_ass_image(), pixscope_config_input(), process_command(), update_color_with_alpha(), and update_oscilloscope().
|
static |
Definition at line 201 of file drawutils.c.
Referenced by ff_blend_mask(), ff_blend_rectangle(), ff_copy_rectangle2(), and ff_fill_rectangle().
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 209 of file drawutils.c.
Referenced by filter_frame().
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 231 of file drawutils.c.
Referenced by activate(), config_out_props(), draw_blank_frame(), filter_color2(), filter_frame(), oscilloscope_filter_frame(), pixscope_filter_frame(), process_frame(), and video_frame().
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 272 of file drawutils.c.
Referenced by ff_blend_mask(), and ff_blend_rectangle().
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 291 of file drawutils.c.
Referenced by ff_blend_mask(), and ff_blend_rectangle().
|
static |
Definition at line 306 of file drawutils.c.
Referenced by ff_blend_rectangle().
|
static |
Definition at line 328 of file drawutils.c.
Referenced by ff_blend_rectangle().
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 353 of file drawutils.c.
Referenced by draw_text(), oscilloscope_filter_frame(), and pixscope_filter_frame().
|
static |
Definition at line 437 of file drawutils.c.
Referenced by blend_line_hv16().
|
static |
Definition at line 461 of file drawutils.c.
Referenced by blend_line_hv().
|
static |
Definition at line 484 of file drawutils.c.
Referenced by ff_blend_mask().
|
static |
Definition at line 509 of file drawutils.c.
Referenced by ff_blend_mask().
void ff_blend_mask | ( | FFDrawContext * | draw, |
FFDrawColor * | color, | ||
uint8_t * | dst[], | ||
int | dst_linesize[], | ||
int | dst_w, | ||
int | dst_h, | ||
const 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.
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 534 of file drawutils.c.
Referenced by draw_glyphs(), draw_text(), and overlay_ass_image().
int ff_draw_round_to_sub | ( | FFDrawContext * | draw, |
int | sub_dir, | ||
int | round_dir, | ||
int | value | ||
) |
Round a dimension according to subsampling.
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 |
Definition at line 635 of file drawutils.c.
Referenced by config_input().
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 647 of file drawutils.c.
Referenced by query_formats().