libswscale/yuv2rgb_template.c File Reference

Go to the source code of this file.

Defines

#define EMMS   "femms"
#define MOVNTQ   "movq"
#define SFENCE   "/nop"
#define YUV2RGB
#define YUV422_UNSHIFT
#define YUV2RGB_LOOP(depth)
#define YUV2RGB_INIT
#define YUV2RGB_ENDLOOP(depth)
#define RGB_PLANAR2PACKED32

Functions

static int yuv420_rgb16_TMPL (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
static int yuv420_rgb15_TMPL (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
static int yuv420_rgb24_TMPL (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
static int yuv420_rgb32_TMPL (SwsContext *c, uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])


Define Documentation

#define EMMS   "femms"

Definition at line 35 of file yuv2rgb_template.c.

#define MOVNTQ   "movq"

Definition at line 44 of file yuv2rgb_template.c.

#define RGB_PLANAR2PACKED32

Definition at line 390 of file yuv2rgb_template.c.

Referenced by yuv420_rgb32_TMPL().

#define SFENCE   "/nop"

Definition at line 45 of file yuv2rgb_template.c.

#define YUV2RGB

Definition at line 48 of file yuv2rgb_template.c.

Referenced by yuv420_rgb16_TMPL(), and yuv420_rgb32_TMPL().

#define YUV2RGB_ENDLOOP ( depth   ) 

Value:

"add $"AV_STRINGIFY(depth*8)", %1    \n\t" \
        "add                       $4, %0    \n\t" \
        " js                       1b        \n\t" \
\
        : "+r" (index), "+r" (image) \
        : "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) \
        ); \
    } \
    __asm__ volatile (EMMS); \
    return srcSliceH; \

Definition at line 152 of file yuv2rgb_template.c.

Referenced by yuv420_rgb32_TMPL().

#define YUV2RGB_INIT

Value:

/* This MMX assembly code deals with a SINGLE scan line at a time, \
         * it converts 8 pixels in each iteration. */                      \
        __asm__ volatile (                                                 \
        /* load data for start of next scan line */                        \
        "movd    (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */ \
        "movd    (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */ \
        "movq (%5, %0, 2), %%mm6;" /* Load 8  Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */ \
        /*                                                                 \
        ".balign 16     \n\t"                                              \
        */                                                                 \
        "1:             \n\t"                                              \

Definition at line 135 of file yuv2rgb_template.c.

Referenced by vis_420P_ARGB32(), vis_422P_ARGB32(), yuv420_rgb16_TMPL(), and yuv420_rgb32_TMPL().

#define YUV2RGB_LOOP ( depth   ) 

Value:

h_size= (c->dstW+7)&~7;                                   \
    if(h_size*depth > FFABS(dstStride[0])) h_size-=8;         \
\
    __asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );    \
    for (y= 0; y<srcSliceH; y++ ) {                           \
        uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; \
        uint8_t *py = src[0] + y*srcStride[0];                \
        uint8_t *pu = src[1] + (y>>1)*srcStride[1];           \
        uint8_t *pv = src[2] + (y>>1)*srcStride[2];           \
        long index= -h_size/2;                                \

Definition at line 123 of file yuv2rgb_template.c.

Referenced by yuv420_rgb16_TMPL(), and yuv420_rgb32_TMPL().

#define YUV422_UNSHIFT

Value:

if(c->srcFormat == PIX_FMT_YUV422P){ \
        srcStride[1] *= 2;               \
        srcStride[2] *= 2;               \
    }                                    \

Definition at line 117 of file yuv2rgb_template.c.

Referenced by yuv420_rgb16_TMPL(), and yuv420_rgb32_TMPL().


Function Documentation

static int yuv420_rgb15_TMPL ( SwsContext c,
uint8_t *  src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t *  dst[],
int  dstStride[] 
) [inline, static]

Definition at line 219 of file yuv2rgb_template.c.

static int yuv420_rgb16_TMPL ( SwsContext c,
uint8_t *  src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t *  dst[],
int  dstStride[] 
) [inline, static]

Definition at line 164 of file yuv2rgb_template.c.

static int yuv420_rgb24_TMPL ( SwsContext c,
uint8_t *  src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t *  dst[],
int  dstStride[] 
) [inline, static]

Definition at line 276 of file yuv2rgb_template.c.

static int yuv420_rgb32_TMPL ( SwsContext c,
uint8_t *  src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t *  dst[],
int  dstStride[] 
) [inline, static]

Definition at line 429 of file yuv2rgb_template.c.


Generated on Fri Oct 26 02:35:46 2012 for FFmpeg by  doxygen 1.5.8