FFmpeg
Macros | Functions | Variables
yuv2rgb.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include "libavutil/bswap.h"
#include "config.h"
#include "rgb2rgb.h"
#include "swscale.h"
#include "swscale_internal.h"
#include "libavutil/pixdesc.h"

Go to the source code of this file.

Macros

#define LOADCHROMA(i)
 
#define PUTRGB(dst, src, i)
 
#define PUTRGB24(dst, src, i)
 
#define PUTBGR24(dst, src, i)
 
#define PUTRGBA(dst, ysrc, asrc, i, s)
 
#define PUTRGB48(dst, src, i)
 
#define PUTBGR48(dst, src, i)
 
#define YUV2RGBFUNC(func_name, dst_type, alpha)
 
#define ENDYUV2RGBLINE(dst_delta, ss)
 
#define ENDYUV2RGBFUNC()
 
#define CLOSEYUV2RGBFUNC(dst_delta)
 
#define PUTRGB16(dst, src, i, o)
 
#define PUTRGB15(dst, src, i, o)
 
#define PUTRGB12(dst, src, i, o)
 
#define PUTRGB8(dst, src, i, o)
 
#define PUTRGB4D(dst, src, i, o)
 
#define PUTRGB4DB(dst, src, i, o)
 
#define PUTRGB1(out, src, i, o)
 
#define ALLOC_YUV_TABLE(x)
 

Functions

const intsws_getCoefficients (int colorspace)
 Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails(). More...
 
 LOADCHROMA (0)
 
 PUTRGB48 (dst_1, py_1, 0)
 
 PUTRGB48 (dst_2, py_2, 0)
 
 LOADCHROMA (1)
 
 PUTRGB48 (dst_2, py_2, 1)
 
 PUTRGB48 (dst_1, py_1, 1)
 
 LOADCHROMA (2)
 
 PUTRGB48 (dst_1, py_1, 2)
 
 PUTRGB48 (dst_2, py_2, 2)
 
 LOADCHROMA (3)
 
 PUTRGB48 (dst_2, py_2, 3)
 
 PUTRGB48 (dst_1, py_1, 3)
 
 PUTBGR48 (dst_1, py_1, 0)
 
 PUTBGR48 (dst_2, py_2, 0)
 
 PUTBGR48 (dst_2, py_2, 1)
 
 PUTBGR48 (dst_1, py_1, 1)
 
 PUTBGR48 (dst_1, py_1, 2)
 
 PUTBGR48 (dst_2, py_2, 2)
 
 PUTBGR48 (dst_2, py_2, 3)
 
 PUTBGR48 (dst_1, py_1, 3)
 
 PUTRGB (dst_1, py_1, 0)
 
 PUTRGB (dst_2, py_2, 0)
 
 PUTRGB (dst_2, py_2, 1)
 
 PUTRGB (dst_1, py_1, 1)
 
 PUTRGB (dst_1, py_1, 2)
 
 PUTRGB (dst_2, py_2, 2)
 
 PUTRGB (dst_2, py_2, 3)
 
 PUTRGB (dst_1, py_1, 3)
 
 PUTRGBA (dst_1, py_1, pa_1, 0, 24)
 
 PUTRGBA (dst_2, py_2, pa_2, 0, 24)
 
 PUTRGBA (dst_2, py_2, pa_2, 1, 24)
 
 PUTRGBA (dst_1, py_1, pa_1, 1, 24)
 
 PUTRGBA (dst_1, py_1, pa_1, 2, 24)
 
 PUTRGBA (dst_2, py_2, pa_2, 2, 24)
 
 PUTRGBA (dst_2, py_2, pa_2, 3, 24)
 
 PUTRGBA (dst_1, py_1, pa_1, 3, 24)
 
 PUTRGBA (dst_1, py_1, pa_1, 0, 0)
 
 PUTRGBA (dst_2, py_2, pa_2, 0, 0)
 
 PUTRGBA (dst_2, py_2, pa_2, 1, 0)
 
 PUTRGBA (dst_1, py_1, pa_1, 1, 0)
 
 PUTRGBA (dst_1, py_1, pa_1, 2, 0)
 
 PUTRGBA (dst_2, py_2, pa_2, 2, 0)
 
 PUTRGBA (dst_2, py_2, pa_2, 3, 0)
 
 PUTRGBA (dst_1, py_1, pa_1, 3, 0)
 
 PUTRGB24 (dst_1, py_1, 0)
 
 PUTRGB24 (dst_2, py_2, 0)
 
 PUTRGB24 (dst_2, py_2, 1)
 
 PUTRGB24 (dst_1, py_1, 1)
 
 PUTRGB24 (dst_1, py_1, 2)
 
 PUTRGB24 (dst_2, py_2, 2)
 
 PUTRGB24 (dst_2, py_2, 3)
 
 PUTRGB24 (dst_1, py_1, 3)
 
 PUTBGR24 (dst_1, py_1, 0)
 
 PUTBGR24 (dst_2, py_2, 0)
 
 PUTBGR24 (dst_2, py_2, 1)
 
 PUTBGR24 (dst_1, py_1, 1)
 
 PUTBGR24 (dst_1, py_1, 2)
 
 PUTBGR24 (dst_2, py_2, 2)
 
 PUTBGR24 (dst_2, py_2, 3)
 
 PUTBGR24 (dst_1, py_1, 3)
 
 PUTRGB16 (dst_1, py_1, 0, 0)
 
 PUTRGB16 (dst_2, py_2, 0, 0+8)
 
 PUTRGB16 (dst_2, py_2, 1, 2+8)
 
 PUTRGB16 (dst_1, py_1, 1, 2)
 
 PUTRGB16 (dst_1, py_1, 2, 4)
 
 PUTRGB16 (dst_2, py_2, 2, 4+8)
 
 PUTRGB16 (dst_2, py_2, 3, 6+8)
 
 PUTRGB16 (dst_1, py_1, 3, 6)
 
 PUTRGB15 (dst_1, py_1, 0, 0)
 
 PUTRGB15 (dst_2, py_2, 0, 0+8)
 
 PUTRGB15 (dst_2, py_2, 1, 2+8)
 
 PUTRGB15 (dst_1, py_1, 1, 2)
 
 PUTRGB15 (dst_1, py_1, 2, 4)
 
 PUTRGB15 (dst_2, py_2, 2, 4+8)
 
 PUTRGB15 (dst_2, py_2, 3, 6+8)
 
 PUTRGB15 (dst_1, py_1, 3, 6)
 
 PUTRGB12 (dst_1, py_1, 0, 0)
 
 PUTRGB12 (dst_2, py_2, 0, 0+8)
 
 PUTRGB12 (dst_2, py_2, 1, 2+8)
 
 PUTRGB12 (dst_1, py_1, 1, 2)
 
 PUTRGB12 (dst_1, py_1, 2, 4)
 
 PUTRGB12 (dst_2, py_2, 2, 4+8)
 
 PUTRGB12 (dst_2, py_2, 3, 6+8)
 
 PUTRGB12 (dst_1, py_1, 3, 6)
 
 PUTRGB8 (dst_1, py_1, 0, 0)
 
 PUTRGB8 (dst_2, py_2, 0, 0+8)
 
 PUTRGB8 (dst_2, py_2, 1, 2+8)
 
 PUTRGB8 (dst_1, py_1, 1, 2)
 
 PUTRGB8 (dst_1, py_1, 2, 4)
 
 PUTRGB8 (dst_2, py_2, 2, 4+8)
 
 PUTRGB8 (dst_2, py_2, 3, 6+8)
 
 PUTRGB8 (dst_1, py_1, 3, 6)
 
 PUTRGB4D (dst_1, py_1, 0, 0)
 
 PUTRGB4D (dst_2, py_2, 0, 0+8)
 
 PUTRGB4D (dst_2, py_2, 1, 2+8)
 
 PUTRGB4D (dst_1, py_1, 1, 2)
 
 PUTRGB4D (dst_1, py_1, 2, 4)
 
 PUTRGB4D (dst_2, py_2, 2, 4+8)
 
 PUTRGB4D (dst_2, py_2, 3, 6+8)
 
 PUTRGB4D (dst_1, py_1, 3, 6)
 
 PUTRGB4DB (dst_1, py_1, 0, 0)
 
 PUTRGB4DB (dst_2, py_2, 0, 0+8)
 
 PUTRGB4DB (dst_2, py_2, 1, 2+8)
 
 PUTRGB4DB (dst_1, py_1, 1, 2)
 
 PUTRGB4DB (dst_1, py_1, 2, 4)
 
 PUTRGB4DB (dst_2, py_2, 2, 4+8)
 
 PUTRGB4DB (dst_2, py_2, 3, 6+8)
 
 PUTRGB4DB (dst_1, py_1, 3, 6)
 
 PUTRGB1 (out_1, py_1, 0, 0)
 
 PUTRGB1 (out_2, py_2, 0, 0+8)
 
 PUTRGB1 (out_2, py_2, 1, 2+8)
 
 PUTRGB1 (out_1, py_1, 1, 2)
 
 PUTRGB1 (out_1, py_1, 2, 4)
 
 PUTRGB1 (out_2, py_2, 2, 4+8)
 
 PUTRGB1 (out_2, py_2, 3, 6+8)
 
 PUTRGB1 (out_1, py_1, 3, 6)
 
SwsFunc ff_yuv2rgb_get_func_ptr (SwsContext *c)
 
static void fill_table (uint8_t *table[256+2 *YUVRGB_TABLE_HEADROOM], const int elemsize, const int64_t inc, void *y_tab)
 
static void fill_gv_table (int table[256+2 *YUVRGB_TABLE_HEADROOM], const int elemsize, const int64_t inc)
 
static uint16_t roundToInt16 (int64_t f)
 
av_cold int ff_yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation)
 

Variables

const int32_t ff_yuv2rgb_coeffs [11][4]
 
 pa_1 = 8
 
 pa_2 = 8
 
const uint8_t * d16 = ff_dither_2x2_8[y & 1]
 
const uint8_t * e16 = ff_dither_2x2_4[y & 1]
 
const uint8_t * f16 = ff_dither_2x2_8[(y & 1)^1]
 
const uint8_t * d32 = ff_dither_8x8_32[yd & 7]
 
const uint8_t * d64 = ff_dither_8x8_73[yd & 7]
 
const uint8_t * d128 = ff_dither_8x8_220[yd & 7]
 
int acc
 
char out_1 = 0
 
char out_2 = 0
 
 g = c->table_gU[128 + YUVRGB_TABLE_HEADROOM] + c->table_gV[128 + YUVRGB_TABLE_HEADROOM]
 
 dst_1 [0] = out_1
 
 dst_2 [0] = out_2
 

Macro Definition Documentation

◆ LOADCHROMA

#define LOADCHROMA (   i)
Value:
U = pu[i]; \
V = pv[i]; \
r = (void *)c->table_rV[V+YUVRGB_TABLE_HEADROOM]; \
g = (void *)(c->table_gU[U+YUVRGB_TABLE_HEADROOM] + c->table_gV[V+YUVRGB_TABLE_HEADROOM]); \
b = (void *)c->table_bU[U+YUVRGB_TABLE_HEADROOM];

Definition at line 69 of file yuv2rgb.c.

◆ PUTRGB

#define PUTRGB (   dst,
  src,
  i 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y] + g[Y] + b[Y]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y] + g[Y] + b[Y];

Definition at line 76 of file yuv2rgb.c.

◆ PUTRGB24

#define PUTRGB24 (   dst,
  src,
  i 
)
Value:
Y = src[2 * i]; \
dst[6 * i + 0] = r[Y]; \
dst[6 * i + 1] = g[Y]; \
dst[6 * i + 2] = b[Y]; \
Y = src[2 * i + 1]; \
dst[6 * i + 3] = r[Y]; \
dst[6 * i + 4] = g[Y]; \
dst[6 * i + 5] = b[Y];

Definition at line 82 of file yuv2rgb.c.

◆ PUTBGR24

#define PUTBGR24 (   dst,
  src,
  i 
)
Value:
Y = src[2 * i]; \
dst[6 * i + 0] = b[Y]; \
dst[6 * i + 1] = g[Y]; \
dst[6 * i + 2] = r[Y]; \
Y = src[2 * i + 1]; \
dst[6 * i + 3] = b[Y]; \
dst[6 * i + 4] = g[Y]; \
dst[6 * i + 5] = r[Y];

Definition at line 92 of file yuv2rgb.c.

◆ PUTRGBA

#define PUTRGBA (   dst,
  ysrc,
  asrc,
  i,
  s 
)
Value:
Y = ysrc[2 * i]; \
dst[2 * i] = r[Y] + g[Y] + b[Y] + (asrc[2 * i] << s); \
Y = ysrc[2 * i + 1]; \
dst[2 * i + 1] = r[Y] + g[Y] + b[Y] + (asrc[2 * i + 1] << s);

Definition at line 102 of file yuv2rgb.c.

◆ PUTRGB48

#define PUTRGB48 (   dst,
  src,
  i 
)
Value:
Y = src[ 2 * i]; \
dst[12 * i + 0] = dst[12 * i + 1] = r[Y]; \
dst[12 * i + 2] = dst[12 * i + 3] = g[Y]; \
dst[12 * i + 4] = dst[12 * i + 5] = b[Y]; \
Y = src[ 2 * i + 1]; \
dst[12 * i + 6] = dst[12 * i + 7] = r[Y]; \
dst[12 * i + 8] = dst[12 * i + 9] = g[Y]; \
dst[12 * i + 10] = dst[12 * i + 11] = b[Y];

Definition at line 108 of file yuv2rgb.c.

◆ PUTBGR48

#define PUTBGR48 (   dst,
  src,
  i 
)
Value:
Y = src[2 * i]; \
dst[12 * i + 0] = dst[12 * i + 1] = b[Y]; \
dst[12 * i + 2] = dst[12 * i + 3] = g[Y]; \
dst[12 * i + 4] = dst[12 * i + 5] = r[Y]; \
Y = src[2 * i + 1]; \
dst[12 * i + 6] = dst[12 * i + 7] = b[Y]; \
dst[12 * i + 8] = dst[12 * i + 9] = g[Y]; \
dst[12 * i + 10] = dst[12 * i + 11] = r[Y];

Definition at line 118 of file yuv2rgb.c.

◆ YUV2RGBFUNC

#define YUV2RGBFUNC (   func_name,
  dst_type,
  alpha 
)
Value:
static int func_name(SwsContext *c, const uint8_t *src[], \
int srcStride[], int srcSliceY, int srcSliceH, \
uint8_t *dst[], int dstStride[]) \
{ \
int y; \
if (!alpha && c->srcFormat == AV_PIX_FMT_YUV422P) { \
srcStride[1] *= 2; \
srcStride[2] *= 2; \
} \
for (y = 0; y < srcSliceH; y += 2) { \
int yd = y + srcSliceY; \
dst_type *dst_1 = \
(dst_type *)(dst[0] + (yd) * dstStride[0]); \
dst_type *dst_2 = \
(dst_type *)(dst[0] + (yd + 1) * dstStride[0]); \
dst_type av_unused *r, *g, *b; \
const uint8_t *py_1 = src[0] + y * srcStride[0]; \
const uint8_t *py_2 = py_1 + srcStride[0]; \
const uint8_t *pu = src[1] + (y >> 1) * srcStride[1]; \
const uint8_t *pv = src[2] + (y >> 1) * srcStride[2]; \
const uint8_t av_unused *pa_1, *pa_2; \
unsigned int h_size = c->dstW >> 3; \
if (alpha) { \
pa_1 = src[3] + y * srcStride[3]; \
pa_2 = pa_1 + srcStride[3]; \
} \
while (h_size--) { \
int av_unused U, V, Y; \

Definition at line 128 of file yuv2rgb.c.

◆ ENDYUV2RGBLINE

#define ENDYUV2RGBLINE (   dst_delta,
  ss 
)
Value:
pu += 4 >> ss; \
pv += 4 >> ss; \
py_1 += 8 >> ss; \
py_2 += 8 >> ss; \
dst_1 += dst_delta >> ss; \
dst_2 += dst_delta >> ss; \
} \
if (c->dstW & (4 >> ss)) { \
int av_unused Y, U, V; \

Definition at line 159 of file yuv2rgb.c.

◆ ENDYUV2RGBFUNC

#define ENDYUV2RGBFUNC ( )
Value:
} \
} \
return srcSliceH; \
}

Definition at line 170 of file yuv2rgb.c.

◆ CLOSEYUV2RGBFUNC

#define CLOSEYUV2RGBFUNC (   dst_delta)
Value:
ENDYUV2RGBLINE(dst_delta, 0) \
ENDYUV2RGBFUNC()

Definition at line 176 of file yuv2rgb.c.

◆ PUTRGB16

#define PUTRGB16 (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y + d16[0 + o]] + \
g[Y + e16[0 + o]] + \
b[Y + f16[0 + o]]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y + d16[1 + o]] + \
g[Y + e16[1 + o]] + \
b[Y + f16[1 + o]];

Definition at line 412 of file yuv2rgb.c.

◆ PUTRGB15

#define PUTRGB15 (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y + d16[0 + o]] + \
g[Y + d16[1 + o]] + \
b[Y + e16[0 + o]]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y + d16[1 + o]] + \
g[Y + d16[0 + o]] + \
b[Y + e16[1 + o]];

Definition at line 442 of file yuv2rgb.c.

◆ PUTRGB12

#define PUTRGB12 (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y + d16[0 + o]] + \
g[Y + d16[0 + o]] + \
b[Y + d16[0 + o]]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y + d16[1 + o]] + \
g[Y + d16[1 + o]] + \
b[Y + d16[1 + o]];

Definition at line 472 of file yuv2rgb.c.

◆ PUTRGB8

#define PUTRGB8 (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y + d32[0 + o]] + \
g[Y + d32[0 + o]] + \
b[Y + d64[0 + o]]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y + d32[1 + o]] + \
g[Y + d32[1 + o]] + \
b[Y + d64[1 + o]];

Definition at line 504 of file yuv2rgb.c.

◆ PUTRGB4D

#define PUTRGB4D (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
acc = r[Y + d128[0 + o]] + \
g[Y + d64[0 + o]] + \
b[Y + d128[0 + o]]; \
Y = src[2 * i + 1]; \
acc |= (r[Y + d128[1 + o]] + \
g[Y + d64[1 + o]] + \
b[Y + d128[1 + o]]) << 4; \
dst[i] = acc;

Definition at line 556 of file yuv2rgb.c.

◆ PUTRGB4DB

#define PUTRGB4DB (   dst,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
dst[2 * i] = r[Y + d128[0 + o]] + \
g[Y + d64[0 + o]] + \
b[Y + d128[0 + o]]; \
Y = src[2 * i + 1]; \
dst[2 * i + 1] = r[Y + d128[1 + o]] + \
g[Y + d64[1 + o]] + \
b[Y + d128[1 + o]];

Definition at line 608 of file yuv2rgb.c.

◆ PUTRGB1

#define PUTRGB1 (   out,
  src,
  i,
 
)
Value:
Y = src[2 * i]; \
out += out + g[Y + d128[0 + o]]; \
Y = src[2 * i + 1]; \
out += out + g[Y + d128[1 + o]];

Definition at line 656 of file yuv2rgb.c.

◆ ALLOC_YUV_TABLE

#define ALLOC_YUV_TABLE (   x)
Value:
c->yuvTable = av_malloc(x); \
if (!c->yuvTable) \
return AVERROR(ENOMEM);

Function Documentation

◆ LOADCHROMA() [1/4]

LOADCHROMA ( )

◆ PUTRGB48() [1/8]

PUTRGB48 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB48() [2/8]

PUTRGB48 ( dst_2  ,
py_2  ,
 
)

◆ LOADCHROMA() [2/4]

LOADCHROMA ( )

◆ PUTRGB48() [3/8]

PUTRGB48 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB48() [4/8]

PUTRGB48 ( dst_1  ,
py_1  ,
 
)

◆ LOADCHROMA() [3/4]

LOADCHROMA ( )

◆ PUTRGB48() [5/8]

PUTRGB48 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB48() [6/8]

PUTRGB48 ( dst_2  ,
py_2  ,
 
)

◆ LOADCHROMA() [4/4]

LOADCHROMA ( )

◆ PUTRGB48() [7/8]

PUTRGB48 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB48() [8/8]

PUTRGB48 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR48() [1/8]

PUTBGR48 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR48() [2/8]

PUTBGR48 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR48() [3/8]

PUTBGR48 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR48() [4/8]

PUTBGR48 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR48() [5/8]

PUTBGR48 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR48() [6/8]

PUTBGR48 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR48() [7/8]

PUTBGR48 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR48() [8/8]

PUTBGR48 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB() [1/8]

PUTRGB ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB() [2/8]

PUTRGB ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB() [3/8]

PUTRGB ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB() [4/8]

PUTRGB ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB() [5/8]

PUTRGB ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB() [6/8]

PUTRGB ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB() [7/8]

PUTRGB ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB() [8/8]

PUTRGB ( dst_1  ,
py_1  ,
 
)

◆ PUTRGBA() [1/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)

◆ PUTRGBA() [2/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)

◆ PUTRGBA() [3/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)

◆ PUTRGBA() [4/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)

◆ PUTRGBA() [5/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)

◆ PUTRGBA() [6/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)

◆ PUTRGBA() [7/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)

◆ PUTRGBA() [8/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)

◆ PUTRGBA() [9/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)

◆ PUTRGBA() [10/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)

◆ PUTRGBA() [11/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)

◆ PUTRGBA() [12/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)

◆ PUTRGBA() [13/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)

◆ PUTRGBA() [14/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)

◆ PUTRGBA() [15/16]

PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)

◆ PUTRGBA() [16/16]

PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)

◆ PUTRGB24() [1/8]

PUTRGB24 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB24() [2/8]

PUTRGB24 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB24() [3/8]

PUTRGB24 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB24() [4/8]

PUTRGB24 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB24() [5/8]

PUTRGB24 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB24() [6/8]

PUTRGB24 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB24() [7/8]

PUTRGB24 ( dst_2  ,
py_2  ,
 
)

◆ PUTRGB24() [8/8]

PUTRGB24 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR24() [1/8]

PUTBGR24 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR24() [2/8]

PUTBGR24 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR24() [3/8]

PUTBGR24 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR24() [4/8]

PUTBGR24 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR24() [5/8]

PUTBGR24 ( dst_1  ,
py_1  ,
 
)

◆ PUTBGR24() [6/8]

PUTBGR24 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR24() [7/8]

PUTBGR24 ( dst_2  ,
py_2  ,
 
)

◆ PUTBGR24() [8/8]

PUTBGR24 ( dst_1  ,
py_1  ,
 
)

◆ PUTRGB16() [1/8]

PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB16() [2/8]

PUTRGB16 ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB16() [3/8]

PUTRGB16 ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB16() [4/8]

PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB16() [5/8]

PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB16() [6/8]

PUTRGB16 ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB16() [7/8]

PUTRGB16 ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB16() [8/8]

PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB15() [1/8]

PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB15() [2/8]

PUTRGB15 ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB15() [3/8]

PUTRGB15 ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB15() [4/8]

PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB15() [5/8]

PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB15() [6/8]

PUTRGB15 ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB15() [7/8]

PUTRGB15 ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB15() [8/8]

PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB12() [1/8]

PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB12() [2/8]

PUTRGB12 ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB12() [3/8]

PUTRGB12 ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB12() [4/8]

PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB12() [5/8]

PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB12() [6/8]

PUTRGB12 ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB12() [7/8]

PUTRGB12 ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB12() [8/8]

PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB8() [1/8]

PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB8() [2/8]

PUTRGB8 ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB8() [3/8]

PUTRGB8 ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB8() [4/8]

PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB8() [5/8]

PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB8() [6/8]

PUTRGB8 ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB8() [7/8]

PUTRGB8 ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB8() [8/8]

PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4D() [1/8]

PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4D() [2/8]

PUTRGB4D ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB4D() [3/8]

PUTRGB4D ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB4D() [4/8]

PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4D() [5/8]

PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4D() [6/8]

PUTRGB4D ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB4D() [7/8]

PUTRGB4D ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB4D() [8/8]

PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4DB() [1/8]

PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4DB() [2/8]

PUTRGB4DB ( dst_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB4DB() [3/8]

PUTRGB4DB ( dst_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB4DB() [4/8]

PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4DB() [5/8]

PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB4DB() [6/8]

PUTRGB4DB ( dst_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB4DB() [7/8]

PUTRGB4DB ( dst_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB4DB() [8/8]

PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)

◆ PUTRGB1() [1/8]

PUTRGB1 ( out_1  ,
py_1  ,
,
 
)

◆ PUTRGB1() [2/8]

PUTRGB1 ( out_2  ,
py_2  ,
,
0+  8 
)

◆ PUTRGB1() [3/8]

PUTRGB1 ( out_2  ,
py_2  ,
,
2+  8 
)

◆ PUTRGB1() [4/8]

PUTRGB1 ( out_1  ,
py_1  ,
,
 
)

◆ PUTRGB1() [5/8]

PUTRGB1 ( out_1  ,
py_1  ,
,
 
)

◆ PUTRGB1() [6/8]

PUTRGB1 ( out_2  ,
py_2  ,
,
4+  8 
)

◆ PUTRGB1() [7/8]

PUTRGB1 ( out_2  ,
py_2  ,
,
6+  8 
)

◆ PUTRGB1() [8/8]

PUTRGB1 ( out_1  ,
py_1  ,
,
 
)

◆ ff_yuv2rgb_get_func_ptr()

SwsFunc ff_yuv2rgb_get_func_ptr ( SwsContext c)

Definition at line 678 of file yuv2rgb.c.

Referenced by ff_get_unscaled_swscale().

◆ fill_table()

static void fill_table ( uint8_t *  table[256+2 *YUVRGB_TABLE_HEADROOM],
const int  elemsize,
const int64_t  inc,
void *  y_tab 
)
static

Definition at line 736 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

◆ fill_gv_table()

static void fill_gv_table ( int  table[256+2 *YUVRGB_TABLE_HEADROOM],
const int  elemsize,
const int64_t  inc 
)
static

Definition at line 750 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

◆ roundToInt16()

static uint16_t roundToInt16 ( int64_t  f)
static

Definition at line 761 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

◆ ff_yuv2rgb_c_init_tables()

av_cold int ff_yuv2rgb_c_init_tables ( SwsContext c,
const int  inv_table[4],
int  fullRange,
int  brightness,
int  contrast,
int  saturation 
)

Definition at line 773 of file yuv2rgb.c.

Referenced by sws_setColorspaceDetails().

Variable Documentation

◆ ff_yuv2rgb_coeffs

const int32_t ff_yuv2rgb_coeffs[11][4]
Initial value:
= {
{ 117489, 138438, 13975, 34925 },
{ 117489, 138438, 13975, 34925 },
{ 104597, 132201, 25675, 53279 },
{ 104597, 132201, 25675, 53279 },
{ 104448, 132798, 24759, 53109 },
{ 104597, 132201, 25675, 53279 },
{ 104597, 132201, 25675, 53279 },
{ 117579, 136230, 16907, 35559 },
{ 0 },
{ 110013, 140363, 12277, 42626 },
{ 110013, 140363, 12277, 42626 },
}

Definition at line 48 of file yuv2rgb.c.

Referenced by sws_getCoefficients(), and sws_init_context().

◆ pa_1

pa_1 = 8

Definition at line 290 of file yuv2rgb.c.

◆ pa_2

pa_2 = 8

Definition at line 291 of file yuv2rgb.c.

◆ d16

const uint8_t * d16 = ff_dither_2x2_8[y & 1]

Definition at line 408 of file yuv2rgb.c.

◆ e16

const uint8_t * e16 = ff_dither_2x2_4[y & 1]

Definition at line 409 of file yuv2rgb.c.

◆ f16

const uint8_t* f16 = ff_dither_2x2_8[(y & 1)^1]

Definition at line 410 of file yuv2rgb.c.

◆ d32

const uint8_t * d32 = ff_dither_8x8_32[yd & 7]

Definition at line 501 of file yuv2rgb.c.

Referenced by av_image_copy_to_buffer(), and yuv2rgb_write().

◆ d64

const uint8_t * d64 = ff_dither_8x8_73[yd & 7]

Definition at line 502 of file yuv2rgb.c.

Referenced by yuv2rgb_write().

◆ d128

const uint8_t * d128 = ff_dither_8x8_220[yd & 7]

◆ acc

int acc

◆ out_1

char out_1 = 0

Definition at line 653 of file yuv2rgb.c.

◆ out_2

char out_2 = 0

Definition at line 653 of file yuv2rgb.c.

◆ g

g = c->table_gU[128 + YUVRGB_TABLE_HEADROOM] + c->table_gV[128 + YUVRGB_TABLE_HEADROOM]

Definition at line 654 of file yuv2rgb.c.

◆ dst_1

dst_1[0] = out_1

Definition at line 674 of file yuv2rgb.c.

◆ dst_2

dst_2[0] = out_2

Definition at line 675 of file yuv2rgb.c.

r
const char * r
Definition: vf_curves.c:116
acc
int acc
Definition: yuv2rgb.c:554
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
out
FILE * out
Definition: movenc.c:54
av_unused
#define av_unused
Definition: attributes.h:131
b
#define b
Definition: input.c:40
e16
const uint8_t * e16
Definition: yuv2rgb.c:409
av_malloc
#define av_malloc(s)
Definition: tableprint_vlc.h:31
pa_1
pa_1
Definition: yuv2rgb.c:290
U
#define U(x)
Definition: vp56_arith.h:37
ss
#define ss(width, name, subs,...)
Definition: cbs_vp9.c:261
YUVRGB_TABLE_HEADROOM
#define YUVRGB_TABLE_HEADROOM
Definition: swscale_internal.h:43
s
#define s(width, name)
Definition: cbs_vp9.c:257
if
if(ret)
Definition: filter_design.txt:179
d16
const uint8_t * d16
Definition: yuv2rgb.c:408
V
#define V
Definition: avdct.c:30
src
#define src
Definition: vp8dsp.c:255
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
d64
const uint8_t * d64
Definition: yuv2rgb.c:502
g
g
Definition: yuv2rgb.c:654
srcSliceH
return srcSliceH
Definition: yuv2rgb_template.c:87
Y
#define Y
Definition: boxblur.h:37
f16
const uint8_t * f16
Definition: yuv2rgb.c:410
pa_2
pa_2
Definition: yuv2rgb.c:291
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:271
pv
#define pv
Definition: regdef.h:60
d128
const uint8_t * d128
Definition: yuv2rgb.c:553
d32
const uint8_t * d32
Definition: yuv2rgb.c:501
AV_PIX_FMT_YUV422P
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition: pixfmt.h:70
dst_2
dst_2[0]
Definition: yuv2rgb.c:675
ENDYUV2RGBLINE
#define ENDYUV2RGBLINE(dst_delta, ss)
Definition: yuv2rgb.c:159
alpha
static const int16_t alpha[]
Definition: ilbcdata.h:55
dst_1
dst_1[0]
Definition: yuv2rgb.c:674
SwsContext
Definition: swscale_internal.h:300