summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-10-09 03:49:53 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-10-09 03:49:53 +0000
commitd9c1bba0c6693fdce5d6e72232efaec2602b3beb (patch)
tree1fc3da35b530f2b5d2c5d9f6d52e19d89f301991
parent162d3c6a097a7596e5f45afeb132b728a269fcc6 (diff)
downloadrockbox-d9c1bba0c6693fdce5d6e72232efaec2602b3beb.zip
rockbox-d9c1bba0c6693fdce5d6e72232efaec2602b3beb.tar.gz
rockbox-d9c1bba0c6693fdce5d6e72232efaec2602b3beb.tar.bz2
rockbox-d9c1bba0c6693fdce5d6e72232efaec2602b3beb.tar.xz
Vertical Stride: Add support for yuv to native output.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23024 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/resize.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/apps/recorder/resize.c b/apps/recorder/resize.c
index 1846f5a..49b8980 100644
--- a/apps/recorder/resize.c
+++ b/apps/recorder/resize.c
@@ -649,15 +649,22 @@ static inline bool scale_v_linear(struct rowset *rset,
static void output_row_32_native_fromyuv(uint32_t row, void * row_in,
struct scaler_context *ctx)
{
+#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
+#define DEST_STEP (ctx->bm->height)
+#define Y_STEP (1)
+#else
+#define DEST_STEP (1)
+#define Y_STEP (BM_WIDTH(ctx->bm->width,FORMAT_NATIVE,0))
+#endif
+
int col;
- int fb_width = BM_WIDTH(ctx->bm->width,FORMAT_NATIVE,0);
uint8_t dy = DITHERY(row);
struct uint32_rgb *qp = (struct uint32_rgb *)row_in;
SDEBUGF("output_row: y: %lu in: %p\n",row, row_in);
- fb_data *dest = (fb_data *)ctx->bm->data + fb_width * row;
+ fb_data *dest = (fb_data *)ctx->bm->data + Y_STEP * row;
int delta = 127;
unsigned r, g, b, y, u, v;
-
+
for (col = 0; col < ctx->bm->width; col++) {
if (ctx->dither)
delta = DITHERXDY(col,dy);
@@ -669,7 +676,8 @@ static void output_row_32_native_fromyuv(uint32_t row, void * row_in,
r = (31 * r + (r >> 3) + delta) >> 8;
g = (63 * g + (g >> 2) + delta) >> 8;
b = (31 * b + (b >> 3) + delta) >> 8;
- *dest++ = LCD_RGBPACK_LCD(r, g, b);
+ *dest = LCD_RGBPACK_LCD(r, g, b);
+ dest += DEST_STEP;
}
}
#endif