FFmpeg
Macros | Functions | Variables
yuv2rgb.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include "libavutil/cpu.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 70 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 77 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 83 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 93 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 103 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 109 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 119 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 129 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 160 of file yuv2rgb.c.

◆ ENDYUV2RGBFUNC

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

Definition at line 171 of file yuv2rgb.c.

◆ CLOSEYUV2RGBFUNC

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

Definition at line 177 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 413 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 443 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 473 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 505 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 557 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 609 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 657 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 679 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 737 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 751 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

◆ roundToInt16()

static uint16_t roundToInt16 ( int64_t  f)
static

Definition at line 762 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 774 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 49 of file yuv2rgb.c.

Referenced by sws_getCoefficients(), and sws_init_context().

◆ pa_1

pa_1 = 8

Definition at line 291 of file yuv2rgb.c.

◆ pa_2

pa_2 = 8

Definition at line 292 of file yuv2rgb.c.

◆ d16

const uint8_t * d16 = ff_dither_2x2_8[y & 1]

Definition at line 409 of file yuv2rgb.c.

◆ e16

const uint8_t * e16 = ff_dither_2x2_4[y & 1]

Definition at line 410 of file yuv2rgb.c.

◆ f16

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

Definition at line 411 of file yuv2rgb.c.

◆ d32

const uint8_t * d32 = ff_dither_8x8_32[yd & 7]

Definition at line 502 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 503 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 654 of file yuv2rgb.c.

◆ out_2

char out_2 = 0

Definition at line 654 of file yuv2rgb.c.

◆ g

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

Definition at line 655 of file yuv2rgb.c.

◆ dst_1

dst_1[0] = out_1

Definition at line 675 of file yuv2rgb.c.

◆ dst_2

dst_2[0] = out_2

Definition at line 676 of file yuv2rgb.c.

r
const char * r
Definition: vf_curves.c:116
acc
int acc
Definition: yuv2rgb.c:555
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:41
e16
const uint8_t * e16
Definition: yuv2rgb.c:410
av_malloc
#define av_malloc(s)
Definition: tableprint_vlc.h:31
pa_1
pa_1
Definition: yuv2rgb.c:291
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:39
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:409
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:503
g
g
Definition: yuv2rgb.c:655
srcSliceH
return srcSliceH
Definition: yuv2rgb_template.c:87
Y
#define Y
Definition: boxblur.h:38
f16
const uint8_t * f16
Definition: yuv2rgb.c:411
pa_2
pa_2
Definition: yuv2rgb.c:292
i
int i
Definition: input.c:407
pv
#define pv
Definition: regdef.h:60
d128
const uint8_t * d128
Definition: yuv2rgb.c:554
d32
const uint8_t * d32
Definition: yuv2rgb.c:502
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:676
ENDYUV2RGBLINE
#define ENDYUV2RGBLINE(dst_delta, ss)
Definition: yuv2rgb.c:160
alpha
static const int16_t alpha[]
Definition: ilbcdata.h:55
dst_1
dst_1[0]
Definition: yuv2rgb.c:675
SwsContext
Definition: swscale_internal.h:283