libgpac
Documentation of the core library of GPAC
raster_yuv.c File Reference
#include "rast_soft.h"
+ Include dependency graph for raster_yuv.c:

Macros

#define mul255(_a, _b)   ( (((u32)(_a) + 1) * (u32)(_b) ) >> 8)
 
#define YUV_USE_INT
 
#define TRUNC_8BIT(_a)   if (_a<0) {_a = 0;} else { u32 __a = (u32) _a; __a>>=10; if (__a>255) {__a=255;} _a = __a; }
 
#define TRUNC_16BIT(_a)   if (_a<0) {_a = 0;} else { u32 __a = (u32) _a; __a>>=10; if (__a>32768) {__a=32768;} _a = __a; }
 
#define set_u16_le(_ptr, val)   { (*(u16 *) _ptr) = (u16) val; }
 
#define set_u16_be(_ptr, val)   { ((u8 *)_ptr)[0] = (val>>8)&0xFF; ((u8 *)_ptr)[1] = (val&0xFF); }
 
#define get_u16_le(val, _ptr)   { val = *(u16 *) (_ptr); }
 
#define get_u16_be(val, _ptr)   { val = ((u32) (*(u8 *) _ptr)<< 8) | *(u8 *) _ptr+1; }
 

Functions

static s32 mul255_zero (s32 a, s32 b)
 
void gf_evg_rgb_to_yuv (GF_EVGSurface *surf, GF_Color col, u8 *y, u8 *cb, u8 *cr)
 
GF_Color gf_evg_argb_to_ayuv (GF_EVGSurface *surf, GF_Color col)
 
GF_Err gf_gf_evg_rgb_to_yuv_f (GF_EVGSurface *surf, Float r, Float g, Float b, Float *y, Float *cb, Float *cr)
 
GF_Err gf_evg_yuv_to_rgb_f (GF_EVGSurface *surf, Float y, Float cb, Float cr, Float *r, Float *g, Float *b)
 
GF_Color gf_evg_ayuv_to_argb (GF_EVGSurface *surf, GF_Color col)
 
u64 gf_evg_argb_to_ayuv_wide (GF_EVGSurface *surf, u64 col)
 
u64 gf_evg_ayuv_to_argb_wide (GF_EVGSurface *surf, u64 col)
 
static void overmask_yuv420p (u8 col_a, u8 cy, char *dst, u32 alpha)
 
static void overmask_yuv420p_const_run (u8 a, u8 val, u8 *ptr, u32 count, short x)
 
void evg_yuv420p_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_yuv420p_fill_const (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv420p_fill_const_a (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv420p_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 _cu, s32 _cv, s32 y)
 
void evg_yuv420p_fill_var (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
GF_Err evg_surface_clear_yuv420p (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
void evg_nv12_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_nv12_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
GF_Err evg_surface_clear_nv12 (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col, Bool swap_uv)
 
void evg_yuv422p_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_yuv422p_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *surf_uv_alpha, s32 _cu, s32 _cv, s32 y)
 
GF_Err evg_surface_clear_yuv422p (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
void evg_yuv444p_fill_const (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv444p_fill_const_a (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv444p_fill_var (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
GF_Err evg_surface_clear_yuv444p (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
static void overmask_yuvy (char *dst, u8 c, u32 alpha)
 
void evg_yuyv_fill_const (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuyv_fill_const_a (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuyv_fill_var (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
GF_Err evg_surface_clear_yuyv (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
static s32 mul_10 (s64 a, s64 b)
 
static s32 mul_10_zero (s64 a, s64 b)
 
static void overmask_yuv420p_10 (u16 col_a, u16 cy, u16 *dst, u32 alpha)
 
static void overmask_yuv420p_10_const_run (u16 a, u16 val, u16 *ptr, u32 count, short x)
 
void evg_yuv420p_10_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_yuv420p_10_fill_const (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv420p_10_fill_const_a (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv420p_10_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 _cu, s32 _cv, s32 y)
 
void evg_yuv420p_10_fill_var (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
GF_Err evg_surface_clear_yuv420p_10 (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
void evg_nv12_10_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_nv12_10_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
GF_Err evg_surface_clear_nv12_10 (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col, Bool swap_uv)
 
void evg_yuv422p_10_flush_uv_const (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 cu, s32 cv, s32 y)
 
void evg_yuv422p_10_flush_uv_var (GF_EVGSurface *surf, EVGRasterCtx *rctx, u8 *_surf_uv_alpha, s32 _cu, s32 _cv, s32 y)
 
GF_Err evg_surface_clear_yuv422p_10 (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 
void evg_yuv444p_10_fill_const (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv444p_10_fill_const_a (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
void evg_yuv444p_10_fill_var (s32 y, s32 count, EVG_Span *spans, GF_EVGSurface *surf, EVGRasterCtx *rctx)
 
GF_Err evg_surface_clear_yuv444p_10 (GF_EVGSurface *_surf, GF_IRect rc, GF_Color col)
 

Macro Definition Documentation

◆ mul255

#define mul255 (   _a,
  _b 
)    ( (((u32)(_a) + 1) * (u32)(_b) ) >> 8)

◆ YUV_USE_INT

#define YUV_USE_INT

◆ TRUNC_8BIT

#define TRUNC_8BIT (   _a)    if (_a<0) {_a = 0;} else { u32 __a = (u32) _a; __a>>=10; if (__a>255) {__a=255;} _a = __a; }

◆ TRUNC_16BIT

#define TRUNC_16BIT (   _a)    if (_a<0) {_a = 0;} else { u32 __a = (u32) _a; __a>>=10; if (__a>32768) {__a=32768;} _a = __a; }

◆ set_u16_le

#define set_u16_le (   _ptr,
  val 
)    { (*(u16 *) _ptr) = (u16) val; }

◆ set_u16_be

#define set_u16_be (   _ptr,
  val 
)    { ((u8 *)_ptr)[0] = (val>>8)&0xFF; ((u8 *)_ptr)[1] = (val&0xFF); }

◆ get_u16_le

#define get_u16_le (   val,
  _ptr 
)    { val = *(u16 *) (_ptr); }

◆ get_u16_be

#define get_u16_be (   val,
  _ptr 
)    { val = ((u32) (*(u8 *) _ptr)<< 8) | *(u8 *) _ptr+1; }

Function Documentation

◆ mul255_zero()

static s32 mul255_zero ( s32  a,
s32  b 
)
static
+ Here is the caller graph for this function:

◆ overmask_yuv420p()

static void overmask_yuv420p ( u8  col_a,
u8  cy,
char *  dst,
u32  alpha 
)
static
+ Here is the caller graph for this function:

◆ overmask_yuv420p_const_run()

static void overmask_yuv420p_const_run ( u8  a,
u8  val,
u8 ptr,
u32  count,
short  x 
)
static
+ Here is the caller graph for this function:

◆ evg_yuv420p_flush_uv_const()

void evg_yuv420p_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the caller graph for this function:

◆ evg_yuv420p_fill_const()

void evg_yuv420p_fill_const ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_fill_const_a()

void evg_yuv420p_fill_const_a ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_flush_uv_var()

void evg_yuv420p_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  _cu,
s32  _cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_fill_var()

void evg_yuv420p_fill_var ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv420p()

GF_Err evg_surface_clear_yuv420p ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_nv12_flush_uv_const()

void evg_nv12_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the caller graph for this function:

◆ evg_nv12_flush_uv_var()

void evg_nv12_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_nv12()

GF_Err evg_surface_clear_nv12 ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col,
Bool  swap_uv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv422p_flush_uv_const()

void evg_yuv422p_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the caller graph for this function:

◆ evg_yuv422p_flush_uv_var()

void evg_yuv422p_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 surf_uv_alpha,
s32  _cu,
s32  _cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv422p()

GF_Err evg_surface_clear_yuv422p ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_fill_const()

void evg_yuv444p_fill_const ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_fill_const_a()

void evg_yuv444p_fill_const_a ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_fill_var()

void evg_yuv444p_fill_var ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv444p()

GF_Err evg_surface_clear_yuv444p ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ overmask_yuvy()

static void overmask_yuvy ( char *  dst,
u8  c,
u32  alpha 
)
static
+ Here is the caller graph for this function:

◆ evg_yuyv_fill_const()

void evg_yuyv_fill_const ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuyv_fill_const_a()

void evg_yuyv_fill_const_a ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuyv_fill_var()

void evg_yuyv_fill_var ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuyv()

GF_Err evg_surface_clear_yuyv ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mul_10()

static s32 mul_10 ( s64  a,
s64  b 
)
static
+ Here is the caller graph for this function:

◆ mul_10_zero()

static s32 mul_10_zero ( s64  a,
s64  b 
)
static
+ Here is the caller graph for this function:

◆ overmask_yuv420p_10()

static void overmask_yuv420p_10 ( u16  col_a,
u16  cy,
u16 dst,
u32  alpha 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ overmask_yuv420p_10_const_run()

static void overmask_yuv420p_10_const_run ( u16  a,
u16  val,
u16 ptr,
u32  count,
short  x 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_10_flush_uv_const()

void evg_yuv420p_10_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_10_fill_const()

void evg_yuv420p_10_fill_const ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_10_fill_const_a()

void evg_yuv420p_10_fill_const_a ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_10_flush_uv_var()

void evg_yuv420p_10_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  _cu,
s32  _cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv420p_10_fill_var()

void evg_yuv420p_10_fill_var ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv420p_10()

GF_Err evg_surface_clear_yuv420p_10 ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_nv12_10_flush_uv_const()

void evg_nv12_10_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_nv12_10_flush_uv_var()

void evg_nv12_10_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_nv12_10()

GF_Err evg_surface_clear_nv12_10 ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col,
Bool  swap_uv 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv422p_10_flush_uv_const()

void evg_yuv422p_10_flush_uv_const ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  cu,
s32  cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv422p_10_flush_uv_var()

void evg_yuv422p_10_flush_uv_var ( GF_EVGSurface *  surf,
EVGRasterCtx *  rctx,
u8 _surf_uv_alpha,
s32  _cu,
s32  _cv,
s32  y 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv422p_10()

GF_Err evg_surface_clear_yuv422p_10 ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_10_fill_const()

void evg_yuv444p_10_fill_const ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_10_fill_const_a()

void evg_yuv444p_10_fill_const_a ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_yuv444p_10_fill_var()

void evg_yuv444p_10_fill_var ( s32  y,
s32  count,
EVG_Span spans,
GF_EVGSurface *  surf,
EVGRasterCtx *  rctx 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ evg_surface_clear_yuv444p_10()

GF_Err evg_surface_clear_yuv444p_10 ( GF_EVGSurface *  _surf,
GF_IRect  rc,
GF_Color  col 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function: