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.tar.gz
rockbox-d9c1bba0c6693fdce5d6e72232efaec2602b3beb.zip
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 1846f5acb1..49b8980ceb 100644
--- a/apps/recorder/resize.c
+++ b/apps/recorder/resize.c
@@ -649,15 +649,22 @@ static inline bool scale_v_linear(struct rowset *rset,
649static void output_row_32_native_fromyuv(uint32_t row, void * row_in, 649static void output_row_32_native_fromyuv(uint32_t row, void * row_in,
650 struct scaler_context *ctx) 650 struct scaler_context *ctx)
651{ 651{
652#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
653#define DEST_STEP (ctx->bm->height)
654#define Y_STEP (1)
655#else
656#define DEST_STEP (1)
657#define Y_STEP (BM_WIDTH(ctx->bm->width,FORMAT_NATIVE,0))
658#endif
659
652 int col; 660 int col;
653 int fb_width = BM_WIDTH(ctx->bm->width,FORMAT_NATIVE,0);
654 uint8_t dy = DITHERY(row); 661 uint8_t dy = DITHERY(row);
655 struct uint32_rgb *qp = (struct uint32_rgb *)row_in; 662 struct uint32_rgb *qp = (struct uint32_rgb *)row_in;
656 SDEBUGF("output_row: y: %lu in: %p\n",row, row_in); 663 SDEBUGF("output_row: y: %lu in: %p\n",row, row_in);
657 fb_data *dest = (fb_data *)ctx->bm->data + fb_width * row; 664 fb_data *dest = (fb_data *)ctx->bm->data + Y_STEP * row;
658 int delta = 127; 665 int delta = 127;
659 unsigned r, g, b, y, u, v; 666 unsigned r, g, b, y, u, v;
660 667
661 for (col = 0; col < ctx->bm->width; col++) { 668 for (col = 0; col < ctx->bm->width; col++) {
662 if (ctx->dither) 669 if (ctx->dither)
663 delta = DITHERXDY(col,dy); 670 delta = DITHERXDY(col,dy);
@@ -669,7 +676,8 @@ static void output_row_32_native_fromyuv(uint32_t row, void * row_in,
669 r = (31 * r + (r >> 3) + delta) >> 8; 676 r = (31 * r + (r >> 3) + delta) >> 8;
670 g = (63 * g + (g >> 2) + delta) >> 8; 677 g = (63 * g + (g >> 2) + delta) >> 8;
671 b = (31 * b + (b >> 3) + delta) >> 8; 678 b = (31 * b + (b >> 3) + delta) >> 8;
672 *dest++ = LCD_RGBPACK_LCD(r, g, b); 679 *dest = LCD_RGBPACK_LCD(r, g, b);
680 dest += DEST_STEP;
673 } 681 }
674} 682}
675#endif 683#endif