FFmpeg
Macros | Functions
rgb2rgb_template.c File Reference
#include <stddef.h>
#include "libavutil/attributes.h"

Go to the source code of this file.

Macros

#define DEFINE_SHUFFLE_BYTES(name, a, b, c, d)
 

Functions

static void rgb24tobgr32_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32tobgr24_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb15to16_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb16to15_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32to16_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32tobgr16_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32to15_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb32tobgr15_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24tobgr16_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24to16_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24tobgr15_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24to15_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb15tobgr24_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb16tobgr24_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb15to32_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb16to32_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void shuffle_bytes_2103_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void shuffle_bytes_0321_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void rgb24tobgr24_c (const uint8_t *src, uint8_t *dst, int src_size)
 
static void yuvPlanartoyuy2_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride, int vertLumPerChroma)
 
static void yv12toyuy2_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
 Height should be a multiple of 2 and width should be a multiple of 16. More...
 
static void yuvPlanartouyvy_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride, int vertLumPerChroma)
 
static void yv12touyvy_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
 Height should be a multiple of 2 and width should be a multiple of 16 (If this is a problem for anyone then tell me, and I will fix it.) More...
 
static void yuv422ptouyvy_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
 Width should be a multiple of 16. More...
 
static void yuv422ptoyuy2_c (const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, int width, int height, int lumStride, int chromStride, int dstStride)
 Width should be a multiple of 16. More...
 
static void yuy2toyv12_c (const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride)
 Height should be a multiple of 2 and width should be a multiple of 16. More...
 
static void planar2x_c (const uint8_t *src, uint8_t *dst, int srcWidth, int srcHeight, int srcStride, int dstStride)
 
static void uyvytoyv12_c (const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride)
 Height should be a multiple of 2 and width should be a multiple of 16. More...
 
void ff_rgb24toyv12_c (const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride, int32_t *rgb2yuv)
 Height should be a multiple of 2 and width should be a multiple of 2. More...
 
static void interleaveBytes_c (const uint8_t *src1, const uint8_t *src2, uint8_t *dest, int width, int height, int src1Stride, int src2Stride, int dstStride)
 
static void deinterleaveBytes_c (const uint8_t *src, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride, int dst1Stride, int dst2Stride)
 
static void vu9_to_vu12_c (const uint8_t *src1, const uint8_t *src2, uint8_t *dst1, uint8_t *dst2, int width, int height, int srcStride1, int srcStride2, int dstStride1, int dstStride2)
 
static void yvu9_to_yuy2_c (const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, uint8_t *dst, int width, int height, int srcStride1, int srcStride2, int srcStride3, int dstStride)
 
static void extract_even_c (const uint8_t *src, uint8_t *dst, int count)
 
static void extract_even2_c (const uint8_t *src, uint8_t *dst0, uint8_t *dst1, int count)
 
static void extract_even2avg_c (const uint8_t *src0, const uint8_t *src1, uint8_t *dst0, uint8_t *dst1, int count)
 
static void extract_odd2_c (const uint8_t *src, uint8_t *dst0, uint8_t *dst1, int count)
 
static void extract_odd2avg_c (const uint8_t *src0, const uint8_t *src1, uint8_t *dst0, uint8_t *dst1, int count)
 
static void yuyvtoyuv420_c (uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
static void yuyvtoyuv422_c (uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
static void uyvytoyuv420_c (uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
static void uyvytoyuv422_c (uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
 
static av_cold void rgb2rgb_init_c (void)
 

Macro Definition Documentation

#define DEFINE_SHUFFLE_BYTES (   name,
  a,
  b,
  c,
 
)
Value:
static void shuffle_bytes_##name (const uint8_t *src, \
uint8_t *dst, int src_size) \
{ \
for (i = 0; i < src_size; i += 4) { \
dst[i + 0] = src[i + a]; \
dst[i + 1] = src[i + b]; \
dst[i + 2] = src[i + c]; \
dst[i + 3] = src[i + d]; \
} \
}
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:36
uint8_t
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
#define src
Definition: vp8dsp.c:254
#define b
Definition: input.c:41
int
for(j=16;j >0;--j)
int i
Definition: input.c:406
const char * name
Definition: opengl_enc.c:102

Definition at line 346 of file rgb2rgb_template.c.

Function Documentation

static void rgb24tobgr32_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 31 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb32tobgr24_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 55 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb15to16_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 85 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb16to15_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 104 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb32to16_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 123 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb32tobgr16_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 138 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb32to15_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 154 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb32tobgr15_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 169 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb24tobgr16_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 185 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb24to16_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 200 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb24tobgr15_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 214 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb24to15_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 229 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb15tobgr24_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 243 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb16tobgr24_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 258 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb15to32_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 273 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb16to32_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 295 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void shuffle_bytes_2103_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 317 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void shuffle_bytes_0321_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 331 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void rgb24tobgr24_c ( const uint8_t src,
uint8_t dst,
int  src_size 
)
inlinestatic

Definition at line 365 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuvPlanartoyuy2_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride,
int  vertLumPerChroma 
)
inlinestatic

Definition at line 377 of file rgb2rgb_template.c.

Referenced by yuv422ptoyuy2_c(), and yv12toyuy2_c().

static void yv12toyuy2_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride 
)
inlinestatic

Height should be a multiple of 2 and width should be a multiple of 16.

(If this is a problem for anyone then tell me, and I will fix it.)

Definition at line 431 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuvPlanartouyvy_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride,
int  vertLumPerChroma 
)
inlinestatic

Definition at line 441 of file rgb2rgb_template.c.

Referenced by yuv422ptouyvy_c(), and yv12touyvy_c().

static void yv12touyvy_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride 
)
inlinestatic

Height should be a multiple of 2 and width should be a multiple of 16 (If this is a problem for anyone then tell me, and I will fix it.)

Definition at line 495 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuv422ptouyvy_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride 
)
inlinestatic

Width should be a multiple of 16.

Definition at line 508 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuv422ptoyuy2_c ( const uint8_t ysrc,
const uint8_t usrc,
const uint8_t vsrc,
uint8_t dst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  dstStride 
)
inlinestatic

Width should be a multiple of 16.

Definition at line 520 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuy2toyv12_c ( const uint8_t src,
uint8_t ydst,
uint8_t udst,
uint8_t vdst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
inlinestatic

Height should be a multiple of 2 and width should be a multiple of 16.

(If this is a problem for anyone then tell me, and I will fix it.)

Definition at line 533 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void planar2x_c ( const uint8_t src,
uint8_t dst,
int  srcWidth,
int  srcHeight,
int  srcStride,
int  dstStride 
)
inlinestatic

Definition at line 563 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void uyvytoyv12_c ( const uint8_t src,
uint8_t ydst,
uint8_t udst,
uint8_t vdst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
inlinestatic

Height should be a multiple of 2 and width should be a multiple of 16.

(If this is a problem for anyone then tell me, and I will fix it.) Chrominance data is only taken from every second line, others are ignored. FIXME: Write HQ version.

Definition at line 614 of file rgb2rgb_template.c.

void ff_rgb24toyv12_c ( const uint8_t src,
uint8_t ydst,
uint8_t udst,
uint8_t vdst,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride,
int32_t rgb2yuv 
)

Height should be a multiple of 2 and width should be a multiple of 2.

(If this is a problem for anyone then tell me, and I will fix it.) Chrominance data is only taken from every second line, others are ignored in the C version. FIXME: Write HQ version.

Definition at line 651 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c(), and uyvytoyv12_TMPL().

static void interleaveBytes_c ( const uint8_t src1,
const uint8_t src2,
uint8_t dest,
int  width,
int  height,
int  src1Stride,
int  src2Stride,
int  dstStride 
)
static

Definition at line 712 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void deinterleaveBytes_c ( const uint8_t src,
uint8_t dst1,
uint8_t dst2,
int  width,
int  height,
int  srcStride,
int  dst1Stride,
int  dst2Stride 
)
static

Definition at line 730 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void vu9_to_vu12_c ( const uint8_t src1,
const uint8_t src2,
uint8_t dst1,
uint8_t dst2,
int  width,
int  height,
int  srcStride1,
int  srcStride2,
int  dstStride1,
int  dstStride2 
)
inlinestatic

Definition at line 748 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yvu9_to_yuy2_c ( const uint8_t src1,
const uint8_t src2,
const uint8_t src3,
uint8_t dst,
int  width,
int  height,
int  srcStride1,
int  srcStride2,
int  srcStride3,
int  dstStride 
)
inlinestatic

Definition at line 772 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void extract_even_c ( const uint8_t src,
uint8_t dst,
int  count 
)
static

Definition at line 801 of file rgb2rgb_template.c.

Referenced by uyvytoyuv420_c(), uyvytoyuv422_c(), yuyvtoyuv420_c(), and yuyvtoyuv422_c().

static void extract_even2_c ( const uint8_t src,
uint8_t dst0,
uint8_t dst1,
int  count 
)
static

Definition at line 812 of file rgb2rgb_template.c.

Referenced by uyvytoyuv422_c().

static void extract_even2avg_c ( const uint8_t src0,
const uint8_t src1,
uint8_t dst0,
uint8_t dst1,
int  count 
)
static

Definition at line 826 of file rgb2rgb_template.c.

Referenced by uyvytoyuv420_c().

static void extract_odd2_c ( const uint8_t src,
uint8_t dst0,
uint8_t dst1,
int  count 
)
static

Definition at line 841 of file rgb2rgb_template.c.

Referenced by yuyvtoyuv422_c().

static void extract_odd2avg_c ( const uint8_t src0,
const uint8_t src1,
uint8_t dst0,
uint8_t dst1,
int  count 
)
static

Definition at line 856 of file rgb2rgb_template.c.

Referenced by yuyvtoyuv420_c().

static void yuyvtoyuv420_c ( uint8_t ydst,
uint8_t udst,
uint8_t vdst,
const uint8_t src,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
static

Definition at line 873 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void yuyvtoyuv422_c ( uint8_t ydst,
uint8_t udst,
uint8_t vdst,
const uint8_t src,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
static

Definition at line 893 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void uyvytoyuv420_c ( uint8_t ydst,
uint8_t udst,
uint8_t vdst,
const uint8_t src,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
static

Definition at line 911 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static void uyvytoyuv422_c ( uint8_t ydst,
uint8_t udst,
uint8_t vdst,
const uint8_t src,
int  width,
int  height,
int  lumStride,
int  chromStride,
int  srcStride 
)
static

Definition at line 931 of file rgb2rgb_template.c.

Referenced by rgb2rgb_init_c().

static av_cold void rgb2rgb_init_c ( void  )
static

Definition at line 949 of file rgb2rgb_template.c.

Referenced by ff_sws_rgb2rgb_init().