summaryrefslogtreecommitdiff
path: root/libswscale/bfin
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2012-01-18 23:56:49 +0100
committerDiego Biurrun <diego@biurrun.de>2012-02-02 18:50:12 +0100
commit148bc235b0dbf5e3dcd12fc4480475008a719576 (patch)
treebbd6a3fe85fe7ab17ad90872bd8d6aaa3f9fced8 /libswscale/bfin
parent3f57bde1f2a2538d46e1f26a1b0a773a89beaa67 (diff)
swscale: K&R formatting cosmetics for Blackfin code
Also prettyprint some comments in Assembly code.
Diffstat (limited to 'libswscale/bfin')
-rw-r--r--libswscale/bfin/internal_bfin.S12
-rw-r--r--libswscale/bfin/swscale_bfin.c48
-rw-r--r--libswscale/bfin/yuv2rgb_bfin.c91
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;
}