diff options
author | Diego Biurrun <diego@biurrun.de> | 2012-01-19 02:56:49 +0400 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-02-02 21:50:12 +0400 |
commit | 148bc235b0dbf5e3dcd12fc4480475008a719576 (patch) | |
tree | bbd6a3fe85fe7ab17ad90872bd8d6aaa3f9fced8 /libswscale | |
parent | 3f57bde1f2a2538d46e1f26a1b0a773a89beaa67 (diff) |
swscale: K&R formatting cosmetics for Blackfin code
Also prettyprint some comments in Assembly code.
Diffstat (limited to 'libswscale')
-rw-r--r-- | libswscale/bfin/internal_bfin.S | 12 | ||||
-rw-r--r-- | libswscale/bfin/swscale_bfin.c | 48 | ||||
-rw-r--r-- | libswscale/bfin/yuv2rgb_bfin.c | 91 |
3 files changed, 78 insertions, 73 deletions
diff --git a/libswscale/bfin/internal_bfin.S b/libswscale/bfin/internal_bfin.S index 9f985e7824..b007f07f53 100644 --- a/libswscale/bfin/internal_bfin.S +++ b/libswscale/bfin/internal_bfin.S @@ -30,11 +30,11 @@ and converts it to RGB565. R:5 bits, G:6 bits, B:5 bits.. packed into shorts. The following calculation is used for the conversion: - r = clipz((y-oy)*cy + crv*(v-128)) - g = clipz((y-oy)*cy + cgv*(v-128) + cgu*(u-128)) - b = clipz((y-oy)*cy + cbu*(u-128)) + r = clipz((y - oy) * cy + crv * (v - 128)) + g = clipz((y - oy) * cy + cgv * (v - 128) + cgu * (u - 128)) + b = clipz((y - oy) * cy + cbu * (u - 128)) -y,u,v are prescaled by a factor of 4 i.e. left-shifted to gain precision. +y, u, v are prescaled by a factor of 4 i.e. left-shifted to gain precision. New factorization to eliminate the truncation error which was @@ -47,7 +47,7 @@ occurring due to the byteop3p. 2) Scale operands up by a factor of 4 not 8 because Blackfin multiplies include a shift. -3) Compute into the accumulators cy*yx0, cy*yx1. +3) Compute into the accumulators cy * yx0, cy * yx1. 4) Compute each of the linear equations: r = clipz((y - oy) * cy + crv * (v - 128)) @@ -73,7 +73,7 @@ occurring due to the byteop3p. Where coeffs have the following layout in memory. -uint32_t oy,oc,zero,cy,crv,rmask,cbu,bmask,cgu,cgv; +uint32_t oy, oc, zero, cy, crv, rmask, cbu, bmask, cgu, cgv; coeffs is a pointer to oy. diff --git a/libswscale/bfin/swscale_bfin.c b/libswscale/bfin/swscale_bfin.c index 0c5f004930..f9eba1e41b 100644 --- a/libswscale/bfin/swscale_bfin.c +++ b/libswscale/bfin/swscale_bfin.c @@ -27,32 +27,34 @@ #include <assert.h> #include "config.h" #include <unistd.h> + #include "libswscale/rgb2rgb.h" #include "libswscale/swscale.h" #include "libswscale/swscale_internal.h" #if defined (__FDPIC__) && CONFIG_SRAM -#define L1CODE __attribute__ ((l1_text)) +#define L1CODE __attribute__((l1_text)) #else #define L1CODE #endif -int ff_bfin_uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, - int width, int height, +int ff_bfin_uyvytoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, + uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride) L1CODE; -int ff_bfin_yuyvtoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, - int width, int height, +int ff_bfin_yuyvtoyv12(const uint8_t *src, uint8_t *ydst, uint8_t *udst, + uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride) L1CODE; -static int uyvytoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int uyvytoyv12_unscaled(SwsContext *c, uint8_t *src[], int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *dst[], + int dstStride[]) { - uint8_t *dsty = dst[0] + dstStride[0]*srcSliceY; - uint8_t *dstu = dst[1] + dstStride[1]*srcSliceY/2; - uint8_t *dstv = dst[2] + dstStride[2]*srcSliceY/2; - uint8_t *ip = src[0] + srcStride[0]*srcSliceY; - int w = dstStride[0]; + uint8_t *dsty = dst[0] + dstStride[0] * srcSliceY; + uint8_t *dstu = dst[1] + dstStride[1] * srcSliceY / 2; + uint8_t *dstv = dst[2] + dstStride[2] * srcSliceY / 2; + uint8_t *ip = src[0] + srcStride[0] * srcSliceY; + int w = dstStride[0]; ff_bfin_uyvytoyv12(ip, dsty, dstu, dstv, w, srcSliceH, dstStride[0], dstStride[1], srcStride[0]); @@ -60,14 +62,15 @@ static int uyvytoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], i return srcSliceH; } -static int yuyvtoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int yuyvtoyv12_unscaled(SwsContext *c, uint8_t *src[], int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *dst[], + int dstStride[]) { - uint8_t *dsty = dst[0] + dstStride[0]*srcSliceY; - uint8_t *dstu = dst[1] + dstStride[1]*srcSliceY/2; - uint8_t *dstv = dst[2] + dstStride[2]*srcSliceY/2; - uint8_t *ip = src[0] + srcStride[0]*srcSliceY; - int w = dstStride[0]; + uint8_t *dsty = dst[0] + dstStride[0] * srcSliceY; + uint8_t *dstu = dst[1] + dstStride[1] * srcSliceY / 2; + uint8_t *dstv = dst[2] + dstStride[2] * srcSliceY / 2; + uint8_t *ip = src[0] + srcStride[0] * srcSliceY; + int w = dstStride[0]; ff_bfin_yuyvtoyv12(ip, dsty, dstu, dstv, w, srcSliceH, dstStride[0], dstStride[1], srcStride[0]); @@ -75,15 +78,16 @@ static int yuyvtoyv12_unscaled(SwsContext *c, uint8_t* src[], int srcStride[], i return srcSliceH; } - void ff_bfin_get_unscaled_swscale(SwsContext *c) { if (c->dstFormat == PIX_FMT_YUV420P && c->srcFormat == PIX_FMT_UYVY422) { - av_log (NULL, AV_LOG_VERBOSE, "selecting Blackfin optimized uyvytoyv12_unscaled\n"); + av_log(NULL, AV_LOG_VERBOSE, + "selecting Blackfin optimized uyvytoyv12_unscaled\n"); c->swScale = uyvytoyv12_unscaled; } if (c->dstFormat == PIX_FMT_YUV420P && c->srcFormat == PIX_FMT_YUYV422) { - av_log (NULL, AV_LOG_VERBOSE, "selecting Blackfin optimized yuyvtoyv12_unscaled\n"); + av_log(NULL, AV_LOG_VERBOSE, + "selecting Blackfin optimized yuyvtoyv12_unscaled\n"); c->swScale = yuyvtoyv12_unscaled; } } diff --git a/libswscale/bfin/yuv2rgb_bfin.c b/libswscale/bfin/yuv2rgb_bfin.c index 68af522642..91a7aeea79 100644 --- a/libswscale/bfin/yuv2rgb_bfin.c +++ b/libswscale/bfin/yuv2rgb_bfin.c @@ -26,14 +26,15 @@ #include <string.h> #include <inttypes.h> #include <assert.h> -#include "config.h" #include <unistd.h> + +#include "config.h" #include "libswscale/rgb2rgb.h" #include "libswscale/swscale.h" #include "libswscale/swscale_internal.h" #if defined(__FDPIC__) && CONFIG_SRAM -#define L1CODE __attribute__ ((l1_text)) +#define L1CODE __attribute__((l1_text)) #else #define L1CODE #endif @@ -47,21 +48,20 @@ void ff_bfin_yuv2rgb565_line(uint8_t *Y, uint8_t *U, uint8_t *V, uint8_t *out, 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)(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) { int oy; - oy = c->yOffset&0xffff; - oy = oy >> 3; // keep everything U8.0 for offset calculation + oy = c->yOffset & 0xffff; + oy = oy >> 3; // keep everything U8.0 for offset calculation - c->oc = 128*0x01010101U; - c->oy = oy*0x01010101U; + c->oc = 128 * 0x01010101U; + c->oy = oy * 0x01010101U; /* copy 64bit vector coeffs down to 32bit vector coeffs */ - c->cy = c->yCoeff; + c->cy = c->yCoeff; c->zero = 0; if (rgb) { @@ -76,7 +76,6 @@ static void bfin_prepare_coefficients(SwsContext *c, int rgb, int masks) c->cgv = c->ugCoeff; } - if (masks == 555) { c->rmask = 0x001f * 0x00010001U; c->gmask = 0x03e0 * 0x00010001U; @@ -88,27 +87,25 @@ 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 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; + uint8_t *py, *pu, *pv, *op; int w = instrides[0]; - int h2 = srcSliceH>>1; + int h2 = srcSliceH >> 1; int i; bfin_prepare_coefficients(c, rgb, masks); py = in[0]; - pu = in[1+(1^rgb)]; - pv = in[1+(0^rgb)]; - - op = oplanes[0] + srcSliceY*outstrides[0]; + pu = in[1 + (1 ^ rgb)]; + pv = in[1 + (0 ^ rgb)]; - for (i=0;i<h2;i++) { + op = oplanes[0] + srcSliceY * outstrides[0]; + for (i = 0; i < h2; i++) { lcscf(py, pu, pv, op, w, &c->oy); py += instrides[0]; @@ -125,9 +122,7 @@ static int core_yuv420_rgb(SwsContext *c, return srcSliceH; } - -static int bfin_yuv420_rgb555(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_rgb555(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -135,8 +130,7 @@ static int bfin_yuv420_rgb555(SwsContext *c, outstrides, ff_bfin_yuv2rgb555_line, 1, 555); } -static int bfin_yuv420_bgr555(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_bgr555(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -144,8 +138,7 @@ static int bfin_yuv420_bgr555(SwsContext *c, outstrides, ff_bfin_yuv2rgb555_line, 0, 555); } -static int bfin_yuv420_rgb24(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_rgb24(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -153,8 +146,7 @@ static int bfin_yuv420_rgb24(SwsContext *c, outstrides, ff_bfin_yuv2rgb24_line, 1, 888); } -static int bfin_yuv420_bgr24(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_bgr24(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -162,8 +154,7 @@ static int bfin_yuv420_bgr24(SwsContext *c, outstrides, ff_bfin_yuv2rgb24_line, 0, 888); } -static int bfin_yuv420_rgb565(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_rgb565(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -171,8 +162,7 @@ static int bfin_yuv420_rgb565(SwsContext *c, outstrides, ff_bfin_yuv2rgb565_line, 1, 565); } -static int bfin_yuv420_bgr565(SwsContext *c, - uint8_t **in, int *instrides, +static int bfin_yuv420_bgr565(SwsContext *c, uint8_t **in, int *instrides, int srcSliceY, int srcSliceH, uint8_t **oplanes, int *outstrides) { @@ -180,24 +170,35 @@ static int bfin_yuv420_bgr565(SwsContext *c, outstrides, ff_bfin_yuv2rgb565_line, 0, 565); } - SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c) { SwsFunc f; - switch(c->dstFormat) { - case PIX_FMT_RGB555: f = bfin_yuv420_rgb555; break; - case PIX_FMT_BGR555: f = bfin_yuv420_bgr555; break; - case PIX_FMT_RGB565: f = bfin_yuv420_rgb565; break; - case PIX_FMT_BGR565: f = bfin_yuv420_bgr565; break; - case PIX_FMT_RGB24: f = bfin_yuv420_rgb24; break; - case PIX_FMT_BGR24: f = bfin_yuv420_bgr24; break; + switch (c->dstFormat) { + case PIX_FMT_RGB555: + f = bfin_yuv420_rgb555; + break; + case PIX_FMT_BGR555: + f = bfin_yuv420_bgr555; + break; + case PIX_FMT_RGB565: + f = bfin_yuv420_rgb565; + break; + case PIX_FMT_BGR565: + f = bfin_yuv420_bgr565; + break; + case PIX_FMT_RGB24: + f = bfin_yuv420_rgb24; + break; + case PIX_FMT_BGR24: + f = bfin_yuv420_bgr24; + break; default: return 0; } av_log(c, AV_LOG_INFO, "BlackFin accelerated color space converter %s\n", - sws_format_name (c->dstFormat)); + sws_format_name(c->dstFormat)); return f; } |