X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/blobdiff_plain/d3f3eea92d47c3c3250ffc7cf567ed44bf31615a..d0ce212a7ae2e98e5d9c04a5d38896c1993f50f1:/libswscale/yuv2rgb_bfin.c diff --git a/libswscale/yuv2rgb_bfin.c b/libswscale/yuv2rgb_bfin.c index 98c86c0..2cc6962 100644 --- a/libswscale/yuv2rgb_bfin.c +++ b/libswscale/yuv2rgb_bfin.c @@ -1,9 +1,8 @@ /* * Copyright (C) 2007 Marc Hoffman - * April 20, 2007 * - * Blackfin Video Color Space Converters Operations - * convert I420 YV12 to RGB in various formats, + * Blackfin video color space converter operations + * convert I420 YV12 to RGB in various formats * * This file is part of FFmpeg. * @@ -28,32 +27,31 @@ #include #include #include "config.h" -#ifdef HAVE_MALLOC_H -#include -#endif #include -#include #include "rgb2rgb.h" #include "swscale.h" #include "swscale_internal.h" - +#ifdef __FDPIC__ #define L1CODE __attribute__ ((l1_text)) +#else +#define L1CODE +#endif -extern void ff_bfin_yuv2rgb555_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, - int w, uint32_t *coeffs) L1CODE; +void ff_bfin_yuv2rgb555_line(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, + int w, uint32_t *coeffs) L1CODE; -extern void ff_bfin_yuv2rgb565_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, - int w, uint32_t *coeffs) L1CODE; +void ff_bfin_yuv2rgb565_line(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, + int w, uint32_t *coeffs) L1CODE; -extern void ff_bfin_yuv2rgb24_line (uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, - int w, uint32_t *coeffs) L1CODE; +void ff_bfin_yuv2rgb24_line(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, + int w, uint32_t *coeffs) L1CODE; -typedef void (* ltransform_t)(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, - int w, uint32_t *coeffs); +typedef void (* ltransform)(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, + int w, uint32_t *coeffs); -static void bfin_prepare_coefficients (SwsContext *c, int rgb, int masks) +static void bfin_prepare_coefficients(SwsContext *c, int rgb, int masks) { int oy; oy = c->yOffset&0xffff; @@ -90,18 +88,18 @@ static void bfin_prepare_coefficients (SwsContext *c, int rgb, int masks) } } -static int core_yuv420_rgb (SwsContext *c, - uint8_t **in, int *instrides, - int srcSliceY, int srcSliceH, - uint8_t **oplanes, int *outstrides, - ltransform_t lcscf, int rgb, int masks) +static int core_yuv420_rgb(SwsContext *c, + uint8_t **in, int *instrides, + int srcSliceY, int srcSliceH, + uint8_t **oplanes, int *outstrides, + ltransform lcscf, int rgb, int masks) { uint8_t *py,*pu,*pv,*op; int w = instrides[0]; int h2 = srcSliceH>>1; int i; - bfin_prepare_coefficients (c, rgb, masks); + bfin_prepare_coefficients(c, rgb, masks); py = in[0]; pu = in[1+(1^rgb)]; @@ -111,12 +109,12 @@ static int core_yuv420_rgb (SwsContext *c, for (i=0;ioy); + lcscf(py, pu, pv, op, w, &c->oy); py += instrides[0]; op += outstrides[0]; - lcscf (py,pu,pv,op,w,&c->oy); + lcscf(py, pu, pv, op, w, &c->oy); py += instrides[0]; pu += instrides[1]; @@ -128,62 +126,62 @@ static int core_yuv420_rgb (SwsContext *c, } -static int bfin_yuv420_rgb555 (SwsContext *c, - uint8_t **in, int *instrides, - int srcSliceY, int srcSliceH, - uint8_t **oplanes, int *outstrides) -{ - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb555_line, 1, 555); -} - -static int bfin_yuv420_bgr555 (SwsContext *c, - uint8_t **in, int *instrides, - int srcSliceY, int srcSliceH, - uint8_t **oplanes, int *outstrides) -{ - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb555_line, 0, 555); -} - -static int bfin_yuv420_rgb24 (SwsContext *c, +static int bfin_yuv420_rgb555(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb24_line, 1, 888); + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb555_line, 1, 555); } -static int bfin_yuv420_bgr24 (SwsContext *c, +static int bfin_yuv420_bgr555(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb24_line, 0, 888); + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb555_line, 0, 555); } -static int bfin_yuv420_rgb565 (SwsContext *c, - uint8_t **in, int *instrides, - int srcSliceY, int srcSliceH, - uint8_t **oplanes, int *outstrides) +static int bfin_yuv420_rgb24(SwsContext *c, + uint8_t **in, int *instrides, + int srcSliceY, int srcSliceH, + uint8_t **oplanes, int *outstrides) { - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb565_line, 1, 565); + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb24_line, 1, 888); } -static int bfin_yuv420_bgr565 (SwsContext *c, - uint8_t **in, int *instrides, - int srcSliceY, int srcSliceH, - uint8_t **oplanes, int *outstrides) +static int bfin_yuv420_bgr24(SwsContext *c, + uint8_t **in, int *instrides, + int srcSliceY, int srcSliceH, + uint8_t **oplanes, int *outstrides) +{ + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb24_line, 0, 888); +} + +static int bfin_yuv420_rgb565(SwsContext *c, + uint8_t **in, int *instrides, + int srcSliceY, int srcSliceH, + uint8_t **oplanes, int *outstrides) +{ + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb565_line, 1, 565); +} + +static int bfin_yuv420_bgr565(SwsContext *c, + uint8_t **in, int *instrides, + int srcSliceY, int srcSliceH, + uint8_t **oplanes, int *outstrides) { - return core_yuv420_rgb (c,in,instrides,srcSliceY,srcSliceH,oplanes,outstrides, - ff_bfin_yuv2rgb565_line, 0, 565); + return core_yuv420_rgb(c, in, instrides, srcSliceY, srcSliceH, oplanes, + outstrides, ff_bfin_yuv2rgb565_line, 0, 565); } -SwsFunc ff_bfin_yuv2rgb_get_func_ptr (SwsContext *c) +SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c) { SwsFunc f; @@ -198,7 +196,7 @@ SwsFunc ff_bfin_yuv2rgb_get_func_ptr (SwsContext *c) return 0; } - av_log(c, AV_LOG_INFO, "BlackFin Accelerated Color Space Converter %s\n", + av_log(c, AV_LOG_INFO, "BlackFin accelerated color space converter %s\n", sws_format_name (c->dstFormat)); return f;