FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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)
 

Functions

const int * sws_getCoefficients (int colorspace)
 Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails().
 
 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 [8][4]
 
 pa_1 = 8
 
 pa_2 = 8
 
const uint8_td16 = ff_dither_2x2_8[y & 1]
 
const uint8_te16 = ff_dither_2x2_4[y & 1]
 
const uint8_tf16 = ff_dither_2x2_8[(y & 1)^1]
 
const uint8_td32 = ff_dither_8x8_32[y & 7]
 
const uint8_td64 = ff_dither_8x8_73[y & 7]
 
const uint8_td128 = ff_dither_8x8_220[y & 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

#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 56 of file yuv2rgb.c.

#define PUTRGB (   dst,
  src,
 
)
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 63 of file yuv2rgb.c.

#define PUTRGB24 (   dst,
  src,
 
)
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 69 of file yuv2rgb.c.

#define PUTBGR24 (   dst,
  src,
 
)
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 79 of file yuv2rgb.c.

#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 89 of file yuv2rgb.c.

#define PUTRGB48 (   dst,
  src,
 
)
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 95 of file yuv2rgb.c.

#define PUTBGR48 (   dst,
  src,
 
)
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 105 of file yuv2rgb.c.

#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) { \
dst_type *dst_1 = \
(dst_type *)(dst[0] + (y + srcSliceY) * dstStride[0]); \
dst_type *dst_2 = \
(dst_type *)(dst[0] + (y + srcSliceY + 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 115 of file yuv2rgb.c.

#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 145 of file yuv2rgb.c.

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

Definition at line 156 of file yuv2rgb.c.

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

Definition at line 162 of file yuv2rgb.c.

#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 390 of file yuv2rgb.c.

#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 420 of file yuv2rgb.c.

#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 450 of file yuv2rgb.c.

#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 482 of file yuv2rgb.c.

#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 514 of file yuv2rgb.c.

#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 546 of file yuv2rgb.c.

#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 578 of file yuv2rgb.c.

Function Documentation

LOADCHROMA ( )
PUTRGB48 ( dst_1  ,
py_1  ,
 
)
PUTRGB48 ( dst_2  ,
py_2  ,
 
)
LOADCHROMA ( )
PUTRGB48 ( dst_2  ,
py_2  ,
 
)
PUTRGB48 ( dst_1  ,
py_1  ,
 
)
LOADCHROMA ( )
PUTRGB48 ( dst_1  ,
py_1  ,
 
)
PUTRGB48 ( dst_2  ,
py_2  ,
 
)
LOADCHROMA ( )
PUTRGB48 ( dst_2  ,
py_2  ,
 
)
PUTRGB48 ( dst_1  ,
py_1  ,
 
)
PUTBGR48 ( dst_1  ,
py_1  ,
 
)
PUTBGR48 ( dst_2  ,
py_2  ,
 
)
PUTBGR48 ( dst_2  ,
py_2  ,
 
)
PUTBGR48 ( dst_1  ,
py_1  ,
 
)
PUTBGR48 ( dst_1  ,
py_1  ,
 
)
PUTBGR48 ( dst_2  ,
py_2  ,
 
)
PUTBGR48 ( dst_2  ,
py_2  ,
 
)
PUTBGR48 ( dst_1  ,
py_1  ,
 
)
PUTRGB ( dst_1  ,
py_1  ,
 
)
PUTRGB ( dst_2  ,
py_2  ,
 
)
PUTRGB ( dst_2  ,
py_2  ,
 
)
PUTRGB ( dst_1  ,
py_1  ,
 
)
PUTRGB ( dst_1  ,
py_1  ,
 
)
PUTRGB ( dst_2  ,
py_2  ,
 
)
PUTRGB ( dst_2  ,
py_2  ,
 
)
PUTRGB ( dst_1  ,
py_1  ,
 
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
24   
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
24   
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)
PUTRGBA ( dst_2  ,
py_2  ,
pa_2  ,
,
 
)
PUTRGBA ( dst_1  ,
py_1  ,
pa_1  ,
,
 
)
PUTRGB24 ( dst_1  ,
py_1  ,
 
)
PUTRGB24 ( dst_2  ,
py_2  ,
 
)
PUTRGB24 ( dst_2  ,
py_2  ,
 
)
PUTRGB24 ( dst_1  ,
py_1  ,
 
)
PUTRGB24 ( dst_1  ,
py_1  ,
 
)
PUTRGB24 ( dst_2  ,
py_2  ,
 
)
PUTRGB24 ( dst_2  ,
py_2  ,
 
)
PUTRGB24 ( dst_1  ,
py_1  ,
 
)
PUTBGR24 ( dst_1  ,
py_1  ,
 
)
PUTBGR24 ( dst_2  ,
py_2  ,
 
)
PUTBGR24 ( dst_2  ,
py_2  ,
 
)
PUTBGR24 ( dst_1  ,
py_1  ,
 
)
PUTBGR24 ( dst_1  ,
py_1  ,
 
)
PUTBGR24 ( dst_2  ,
py_2  ,
 
)
PUTBGR24 ( dst_2  ,
py_2  ,
 
)
PUTBGR24 ( dst_1  ,
py_1  ,
 
)
PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB16 ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB16 ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB16 ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB16 ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB16 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB15 ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB15 ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB15 ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB15 ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB15 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB12 ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB12 ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB12 ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB12 ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB12 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB8 ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB8 ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB8 ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB8 ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB8 ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4D ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB4D ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4D ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB4D ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB4D ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4DB ( dst_2  ,
py_2  ,
,
0+  8 
)
PUTRGB4DB ( dst_2  ,
py_2  ,
,
2+  8 
)
PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)
PUTRGB4DB ( dst_2  ,
py_2  ,
,
4+  8 
)
PUTRGB4DB ( dst_2  ,
py_2  ,
,
6+  8 
)
PUTRGB4DB ( dst_1  ,
py_1  ,
,
 
)
PUTRGB1 ( out_1  ,
py_1  ,
,
 
)
PUTRGB1 ( out_2  ,
py_2  ,
,
0+  8 
)
PUTRGB1 ( out_2  ,
py_2  ,
,
2+  8 
)
PUTRGB1 ( out_1  ,
py_1  ,
,
 
)
PUTRGB1 ( out_1  ,
py_1  ,
,
 
)
PUTRGB1 ( out_2  ,
py_2  ,
,
4+  8 
)
PUTRGB1 ( out_2  ,
py_2  ,
,
6+  8 
)
PUTRGB1 ( out_1  ,
py_1  ,
,
 
)
SwsFunc ff_yuv2rgb_get_func_ptr ( SwsContext c)

Definition at line 600 of file yuv2rgb.c.

Referenced by ff_get_unscaled_swscale().

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 660 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

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

Definition at line 674 of file yuv2rgb.c.

Referenced by ff_yuv2rgb_c_init_tables().

static uint16_t roundToInt16 ( int64_t  f)
static

Definition at line 685 of file yuv2rgb.c.

Referenced by 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 697 of file yuv2rgb.c.

Referenced by sws_setColorspaceDetails().

Variable Documentation

const int32_t ff_yuv2rgb_coeffs[8][4]
Initial value:
= {
{ 117504, 138453, 13954, 34903 },
{ 117504, 138453, 13954, 34903 },
{ 104597, 132201, 25675, 53279 },
{ 104597, 132201, 25675, 53279 },
{ 104448, 132798, 24759, 53109 },
{ 104597, 132201, 25675, 53279 },
{ 104597, 132201, 25675, 53279 },
{ 117579, 136230, 16907, 35559 }
}

Definition at line 38 of file yuv2rgb.c.

Referenced by sws_getCoefficients(), and sws_init_context().

pa_1 = 8

Definition at line 272 of file yuv2rgb.c.

pa_2 = 8

Definition at line 273 of file yuv2rgb.c.

const uint8_t * d16 = ff_dither_2x2_8[y & 1]

Definition at line 386 of file yuv2rgb.c.

const uint8_t * e16 = ff_dither_2x2_4[y & 1]

Definition at line 387 of file yuv2rgb.c.

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

Definition at line 388 of file yuv2rgb.c.

const uint8_t* d32 = ff_dither_8x8_32[y & 7]

Definition at line 479 of file yuv2rgb.c.

Referenced by av_image_copy_to_buffer(), and yuv2rgb_write().

const uint8_t * d64 = ff_dither_8x8_73[y & 7]

Definition at line 480 of file yuv2rgb.c.

Referenced by yuv2rgb_write().

const uint8_t * d128 = ff_dither_8x8_220[y & 7]
int acc
char out_1 = 0

Definition at line 575 of file yuv2rgb.c.

char out_2 = 0

Definition at line 575 of file yuv2rgb.c.

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

Definition at line 576 of file yuv2rgb.c.

dst_1[0] = out_1

Definition at line 596 of file yuv2rgb.c.

dst_2[0] = out_2

Definition at line 597 of file yuv2rgb.c.