libswscale/rgb2rgb.c File Reference

#include <inttypes.h>
#include "libavutil/attributes.h"
#include "libavutil/bswap.h"
#include "config.h"
#include "rgb2rgb.h"
#include "swscale.h"
#include "swscale_internal.h"
#include "rgb2rgb_template.c"

Go to the source code of this file.

Defines

#define RGB2YUV_SHIFT   8
#define BY   ((int)( 0.098 * (1 << RGB2YUV_SHIFT) + 0.5))
#define BV   ((int)(-0.071 * (1 << RGB2YUV_SHIFT) + 0.5))
#define BU   ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))
#define GY   ((int)( 0.504 * (1 << RGB2YUV_SHIFT) + 0.5))
#define GV   ((int)(-0.368 * (1 << RGB2YUV_SHIFT) + 0.5))
#define GU   ((int)(-0.291 * (1 << RGB2YUV_SHIFT) + 0.5))
#define RY   ((int)( 0.257 * (1 << RGB2YUV_SHIFT) + 0.5))
#define RV   ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))
#define RU   ((int)(-0.148 * (1 << RGB2YUV_SHIFT) + 0.5))
#define DEFINE_SHUFFLE_BYTES(a, b, c, d)
#define DEFINE_RGB48TOBGR48(need_bswap, swap)
#define DEFINE_RGB64TOBGR48(need_bswap, swap)
#define DEFINE_RGB64TO48(need_bswap, swap)

Functions

av_cold void sws_rgb2rgb_init (void)
void rgb32to24 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb24to32 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb16tobgr32 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb12to15 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb16to24 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb16tobgr16 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb16tobgr15 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb15tobgr32 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb15to24 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb15tobgr16 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb15tobgr15 (const uint8_t *src, uint8_t *dst, int src_size)
void rgb12tobgr12 (const uint8_t *src, uint8_t *dst, int src_size)

Variables

void(* rgb32tobgr24 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb32tobgr16 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb32tobgr15 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24tobgr32 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24tobgr24 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24tobgr16 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24tobgr15 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb16tobgr24 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb15tobgr24 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb32to16 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb32to15 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24to16 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb24to15 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb16to32 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb16to15 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb15to16 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* rgb15to32 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* shuffle_bytes_2103 )(const uint8_t *src, uint8_t *dst, int src_size)
void(* yv12toyuy2 )(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.
void(* yv12touyvy )(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.
void(* yuv422ptoyuy2 )(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.
void(* yuv422ptouyvy )(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.
void(* yuy2toyv12 )(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.
void(* rgb24toyv12 )(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 2.
void(* planar2x )(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride)
void(* interleaveBytes )(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, int width, int height, int src1Stride, int src2Stride, int dstStride)
void(* vu9_to_vu12 )(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)
void(* yvu9_to_yuy2 )(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)
void(* uyvytoyuv420 )(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
void(* uyvytoyuv422 )(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
void(* yuyvtoyuv420 )(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)
void(* yuyvtoyuv422 )(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, const uint8_t *src, int width, int height, int lumStride, int chromStride, int srcStride)


Define Documentation

#define BU   ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 111 of file rgb2rgb.c.

#define BV   ((int)(-0.071 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 110 of file rgb2rgb.c.

#define BY   ((int)( 0.098 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 109 of file rgb2rgb.c.

#define DEFINE_RGB48TOBGR48 ( need_bswap,
swap   ) 

Value:

void rgb48tobgr48_ ## need_bswap(const uint8_t *src,                    \
                                 uint8_t *dst, int src_size)            \
{                                                                       \
    uint16_t *d = (uint16_t *)dst;                                      \
    uint16_t *s = (uint16_t *)src;                                      \
    int i, num_pixels = src_size >> 1;                                  \
                                                                        \
    for (i = 0; i < num_pixels; i += 3) {                               \
        d[i    ] = swap ? av_bswap16(s[i + 2]) : s[i + 2];              \
        d[i + 1] = swap ? av_bswap16(s[i + 1]) : s[i + 1];              \
        d[i + 2] = swap ? av_bswap16(s[i    ]) : s[i    ];              \
    }                                                                   \
}

Definition at line 338 of file rgb2rgb.c.

#define DEFINE_RGB64TO48 ( need_bswap,
swap   ) 

Value:

void rgb64to48_ ## need_bswap(const uint8_t *src,                       \
                              uint8_t *dst, int src_size)               \
{                                                                       \
    uint16_t *d = (uint16_t *)dst;                                      \
    uint16_t *s = (uint16_t *)src;                                      \
    int i, num_pixels = src_size >> 3;                                  \
                                                                        \
    for (i = 0; i < num_pixels; i++) {                                  \
        d[3 * i    ] = swap ? av_bswap16(s[4 * i    ]) : s[4 * i    ];  \
        d[3 * i + 1] = swap ? av_bswap16(s[4 * i + 1]) : s[4 * i + 1];  \
        d[3 * i + 2] = swap ? av_bswap16(s[4 * i + 2]) : s[4 * i + 2];  \
    }                                                                   \
}

Definition at line 374 of file rgb2rgb.c.

#define DEFINE_RGB64TOBGR48 ( need_bswap,
swap   ) 

Value:

void rgb64tobgr48_ ## need_bswap(const uint8_t *src,                    \
                                 uint8_t *dst, int src_size)            \
{                                                                       \
    uint16_t *d = (uint16_t *)dst;                                      \
    uint16_t *s = (uint16_t *)src;                                      \
    int i, num_pixels = src_size >> 3;                                  \
                                                                        \
    for (i = 0; i < num_pixels; i++) {                                  \
        d[3 * i    ] = swap ? av_bswap16(s[4 * i + 2]) : s[4 * i + 2];  \
        d[3 * i + 1] = swap ? av_bswap16(s[4 * i + 1]) : s[4 * i + 1];  \
        d[3 * i + 2] = swap ? av_bswap16(s[4 * i    ]) : s[4 * i    ];  \
    }                                                                   \
}

Definition at line 356 of file rgb2rgb.c.

#define DEFINE_SHUFFLE_BYTES ( a,
b,
c,
 ) 

Value:

void shuffle_bytes_ ## a ## b ## c ## d(const uint8_t *src,             \
                                        uint8_t *dst, int src_size)     \
{                                                                       \
    int i;                                                              \
                                                                        \
    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];                                        \
    }                                                                   \
}

Definition at line 319 of file rgb2rgb.c.

#define GU   ((int)(-0.291 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 114 of file rgb2rgb.c.

#define GV   ((int)(-0.368 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 113 of file rgb2rgb.c.

#define GY   ((int)( 0.504 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 112 of file rgb2rgb.c.

#define RGB2YUV_SHIFT   8

Definition at line 108 of file rgb2rgb.c.

#define RU   ((int)(-0.148 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 117 of file rgb2rgb.c.

#define RV   ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 116 of file rgb2rgb.c.

#define RY   ((int)( 0.257 * (1 << RGB2YUV_SHIFT) + 0.5))

Definition at line 115 of file rgb2rgb.c.


Function Documentation

void rgb12to15 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 196 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb12tobgr12 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 306 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb15to24 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 271 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb15tobgr15 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 295 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb15tobgr16 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 285 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb15tobgr32 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 249 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb16to24 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 215 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb16tobgr15 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 239 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb16tobgr16 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 229 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb16tobgr32 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 174 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb24to32 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 154 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

void rgb32to24 ( const uint8_t src,
uint8_t dst,
int  src_size 
)

Definition at line 136 of file rgb2rgb.c.

Referenced by findRgbConvFn(), and main().

av_cold void sws_rgb2rgb_init ( void   ) 

Definition at line 129 of file rgb2rgb.c.

Referenced by main(), and sws_init_context().


Variable Documentation

void(* interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, int width, int height, int src1Stride, int src2Stride, int dstStride)

void(* planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride)

void(* rgb15to16)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb15to32)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb15tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb16to15)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb16to32)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb16tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24to15)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24to16)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24tobgr15)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24tobgr16)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24tobgr32)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb24toyv12)(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 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. FIXME: Write high quality version.

Referenced by bgr24ToYv12Wrapper(), rgb2rgb_init_c(), and rgb2rgb_init_TMPL().

void(* rgb32to15)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb32to16)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb32tobgr15)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb32tobgr16)(const uint8_t *src, uint8_t *dst, int src_size)

void(* rgb32tobgr24)(const uint8_t *src, uint8_t *dst, int src_size)

void(* shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, int src_size)

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

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

void(* vu9_to_vu12)(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)

void(* yuv422ptouyvy)(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.

Referenced by rgb2rgb_init_c(), rgb2rgb_init_TMPL(), and yuv422pToUyvyWrapper().

void(* yuv422ptoyuy2)(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.

Referenced by rgb2rgb_init_c(), rgb2rgb_init_TMPL(), and yuv422pToYuy2Wrapper().

void(* yuy2toyv12)(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.

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

Referenced by rgb2rgb_init_c(), and rgb2rgb_init_TMPL().

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

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

void(* yv12touyvy)(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.)

Referenced by planarToUyvyWrapper(), rgb2rgb_init_c(), and rgb2rgb_init_TMPL().

void(* yv12toyuy2)(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.)

Referenced by planarToYuy2Wrapper(), rgb2rgb_init_c(), and rgb2rgb_init_TMPL().

void(* yvu9_to_yuy2)(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)


Generated on Fri Oct 26 02:50:12 2012 for FFmpeg by  doxygen 1.5.8