1
0
Fork 0
forked from len0rd/rockbox

cleanup for core-file-in-pluginlib compilation:

wrapper C files in pluginlib renamed to the same name as the core files they
wrap

pluginlib-only init functions for resize and bmp moved into the wrapper files,
and declared in the associated header files

API() macro removed entirely, in favor of a core-only header file that
redefines core function names to use a plugin_api pointer

some unnecessary uses of PLUGIN in apps/recorder/bmp.c removed


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19712 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Andrew Mahone 2009-01-08 02:49:23 +00:00
parent c38815aa29
commit 07e982df8a
11 changed files with 107 additions and 66 deletions

View file

@ -5,8 +5,7 @@ playback_control.c
rgb_hsv.c rgb_hsv.c
#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4) #if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4)
#if LCD_DEPTH == 1 #if LCD_DEPTH == 1
core_bmp.c resize.c
core_resize.c
#endif #endif
grey_core.c grey_core.c
grey_draw.c grey_draw.c
@ -34,9 +33,7 @@ picture.c
xlcd_core.c xlcd_core.c
xlcd_draw.c xlcd_draw.c
xlcd_scroll.c xlcd_scroll.c
#if LCD_DEPTH>1
bmp.c bmp.c
#endif
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
bmp_smooth_scale.c bmp_smooth_scale.c
#endif #endif

View file

@ -8,6 +8,7 @@
* $Id$ * $Id$
* *
* Copyright (C) 2006 by Antoine Cellerier <dionoea -at- videolan -dot- org> * Copyright (C) 2006 by Antoine Cellerier <dionoea -at- videolan -dot- org>
* Copyright (C) 2009 by Andrew Mahone
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -26,6 +27,7 @@
#include "lcd.h" #include "lcd.h"
#include "system.h" #include "system.h"
#if LCD_DEPTH > 1
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
#define LE16(x) (htole16(x))&0xff, ((htole16(x))>>8)&0xff #define LE16(x) (htole16(x))&0xff, ((htole16(x))>>8)&0xff
#define LE32(x) (htole32(x))&0xff, ((htole32(x))>>8)&0xff, ((htole32(x))>>16)&0xff, ((htole32(x))>>24)&0xff #define LE32(x) (htole32(x))&0xff, ((htole32(x))>>8)&0xff, ((htole32(x))>>16)&0xff, ((htole32(x))>>24)&0xff
@ -119,3 +121,16 @@ void simple_resize_bitmap(struct bitmap *src, struct bitmap *dst)
yr += yrstep; yr += yrstep;
} }
} }
#else
#include "wrappers.h"
static const struct plugin_api *rb;
#include "../../recorder/bmp.c"
void bmp_init(const struct plugin_api *api)
{
rb = api;
}
#endif

View file

@ -24,6 +24,7 @@
#include "lcd.h" #include "lcd.h"
#include "plugin.h" #include "plugin.h"
#if LCD_DEPTH > 1
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
/** /**
* Save bitmap to file * Save bitmap to file
@ -43,4 +44,8 @@ void simple_resize_bitmap(struct bitmap *src, struct bitmap *dst);
*/ */
void smooth_resize_bitmap(struct bitmap *src, struct bitmap *dst); void smooth_resize_bitmap(struct bitmap *src, struct bitmap *dst);
#else
void bmp_init(const struct plugin_api *api);
#endif
#endif #endif

View file

@ -7,7 +7,9 @@
* \/ \/ \/ \/ \/ * \/ \/ \/ \/ \/
* $Id$ * $Id$
* *
* This is a wrapper for the core bmp.c * Copyright (C) 2009 by Andrew Mahone
*
* This is a wrapper for the core resize.c
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -20,5 +22,13 @@
****************************************************************************/ ****************************************************************************/
#include <plugin.h> #include <plugin.h>
#include "wrappers.h"
static const struct plugin_api *rb;
#include "../../recorder/resize.c" #include "../../recorder/resize.c"
void resize_init(const struct plugin_api *api)
{
rb = api;
}

View file

@ -7,7 +7,9 @@
* \/ \/ \/ \/ \/ * \/ \/ \/ \/ \/
* $Id$ * $Id$
* *
* This is a wrapper for the core bmp.c * Copyright (C) 2009 by Andrew Mahone
*
* This is a header for the pluginlib extensions to the core resize.c file
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -19,6 +21,11 @@
* *
****************************************************************************/ ****************************************************************************/
#include <plugin.h> #ifndef _LIB_RESIZE_H_
#include "../../recorder/bmp.c" #define _LIB_RESIZE_H_
#if LCD_DEPTH == 1
void resize_init(const struct plugin_api *api);
#endif
#endif

View file

@ -0,0 +1,44 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2009 by Andrew Mahone
*
* This header redefines some core functions as calls via the plugin_api, to
* allow easy compilation of core source files in the pluginlib with different
* features from the version built for the core, or when a core object file is
* not built for a particular target.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _LIB_WRAPPERS_H_
#define _LIB_WRAPPERS_H_
#define open rb->open
#define close rb->close
#define read rb->read
#define lseek rb->lseek
#define memset rb->memset
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
#define cpu_boost rb->cpu_boost
#endif
#define yield rb->yield
#if CONFIG_CODEC == SWCODEC
#define align_buffer rb->align_buffer
#endif
#endif

View file

@ -21,6 +21,8 @@
#include "plugin.h" #include "plugin.h"
#include "lib/grey.h" #include "lib/grey.h"
#include "lib/resize.h"
#include "lib/bmp.h"
#if LCD_DEPTH == 1 #if LCD_DEPTH == 1
#define BMP_LOAD read_bmp_file #define BMP_LOAD read_bmp_file

View file

@ -72,19 +72,6 @@
#pragma pack (push, 2) #pragma pack (push, 2)
#endif #endif
#ifndef PLUGIN
#define API(x) x
#else
#define API(x) rb->x
static const struct plugin_api *rb;
void bmp_init(const struct plugin_api * api)
{
rb = api;
}
#endif
/* BMP header structure */ /* BMP header structure */
struct bmp_header { struct bmp_header {
uint16_t type; /* signature - 'BM' */ uint16_t type; /* signature - 'BM' */
@ -137,15 +124,13 @@ static const struct uint8_rgb bitfields[3][3] = {
}, },
}; };
#if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) || \ #if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)
defined(PLUGIN)
/* the full 16x16 Bayer dither matrix may be calculated quickly with this table /* the full 16x16 Bayer dither matrix may be calculated quickly with this table
*/ */
const unsigned char dither_table[16] = const unsigned char dither_table[16] =
{ 0,192, 48,240, 12,204, 60,252, 3,195, 51,243, 15,207, 63,255 }; { 0,192, 48,240, 12,204, 60,252, 3,195, 51,243, 15,207, 63,255 };
#endif #endif
#ifndef PLUGIN
#if ((LCD_DEPTH == 2) && (LCD_PIXELFORMAT == VERTICAL_INTERLEAVED)) \ #if ((LCD_DEPTH == 2) && (LCD_PIXELFORMAT == VERTICAL_INTERLEAVED)) \
|| (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH == 2) \ || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH == 2) \
&& (LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED)) && (LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED))
@ -153,7 +138,6 @@ const unsigned short vi_pattern[4] = {
0x0101, 0x0100, 0x0001, 0x0000 0x0101, 0x0100, 0x0001, 0x0000
}; };
#endif #endif
#endif
/****************************************************************************** /******************************************************************************
* read_bmp_file() * read_bmp_file()
@ -168,7 +152,7 @@ int read_bmp_file(const char* filename,
const struct custom_format *cformat) const struct custom_format *cformat)
{ {
int fd, ret; int fd, ret;
fd = API(open)(filename, O_RDONLY); fd = open(filename, O_RDONLY);
/* Exit if file opening failed */ /* Exit if file opening failed */
if (fd < 0) { if (fd < 0) {
@ -180,7 +164,7 @@ int read_bmp_file(const char* filename,
filename, !!(format & FORMAT_REMOTE), !!(format & FORMAT_RESIZE), filename, !!(format & FORMAT_REMOTE), !!(format & FORMAT_RESIZE),
!!(format & FORMAT_KEEP_ASPECT)); !!(format & FORMAT_KEEP_ASPECT));
ret = read_bmp_fd(fd, bm, maxsize, format, cformat); ret = read_bmp_fd(fd, bm, maxsize, format, cformat);
API(close)(fd); close(fd);
return ret; return ret;
} }
@ -237,7 +221,7 @@ static unsigned int read_part_line(struct bmp_args *ba)
#endif #endif
ibuf = ((unsigned char *)buf) + (BM_MAX_WIDTH << 2) - len; ibuf = ((unsigned char *)buf) + (BM_MAX_WIDTH << 2) - len;
BDEBUGF("read_part_line: cols=%d len=%d\n",cols,len); BDEBUGF("read_part_line: cols=%d len=%d\n",cols,len);
ret = API(read)(fd, ibuf, len); ret = read(fd, ibuf, len);
if (ret != len) if (ret != len)
{ {
DEBUGF("read_part_line: error reading image, read returned %d " DEBUGF("read_part_line: error reading image, read returned %d "
@ -324,7 +308,7 @@ static unsigned int read_part_line(struct bmp_args *ba)
if (pad > 0) if (pad > 0)
{ {
BDEBUGF("seeking %d bytes to next line\n",pad); BDEBUGF("seeking %d bytes to next line\n",pad);
API(lseek)(fd, pad, SEEK_CUR); lseek(fd, pad, SEEK_CUR);
} }
#if LCD_DEPTH > 1 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) || \ #if LCD_DEPTH > 1 || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) || \
defined(PLUGIN) defined(PLUGIN)
@ -422,7 +406,7 @@ int read_bmp_fd(int fd,
#endif /*(LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)*/ #endif /*(LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)*/
/* read fileheader */ /* read fileheader */
ret = API(read)(fd, &bmph, sizeof(struct bmp_header)); ret = read(fd, &bmph, sizeof(struct bmp_header));
if (ret < 0) { if (ret < 0) {
return ret * 10 - 2; return ret * 10 - 2;
} }
@ -531,7 +515,7 @@ int read_bmp_fd(int fd,
int i; int i;
union rgb_union pal; union rgb_union pal;
for (i = 0; i < numcolors; i++) { for (i = 0; i < numcolors; i++) {
if (API(read)(fd, &pal, sizeof(pal)) != (int)sizeof(pal)) if (read(fd, &pal, sizeof(pal)) != (int)sizeof(pal))
{ {
DEBUGF("read_bmp_fd: Can't read color palette\n"); DEBUGF("read_bmp_fd: Can't read color palette\n");
return -7; return -7;
@ -589,9 +573,9 @@ int read_bmp_fd(int fd,
} }
/* Search to the beginning of the image data */ /* Search to the beginning of the image data */
API(lseek)(fd, (off_t)letoh32(bmph.off_bits), SEEK_SET); lseek(fd, (off_t)letoh32(bmph.off_bits), SEEK_SET);
API(memset)(bitmap, 0, totalsize); memset(bitmap, 0, totalsize);
struct bmp_args ba = { struct bmp_args ba = {
.fd = fd, .padded_width = padded_width, .read_width = read_width, .fd = fd, .padded_width = padded_width, .read_width = read_width,

View file

@ -52,8 +52,7 @@ struct rowset {
short rowstop; short rowstop;
}; };
#if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) || \ #if (LCD_DEPTH > 1) || defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)
defined(PLUGIN)
extern const unsigned char dither_table[16]; extern const unsigned char dither_table[16];
#define DITHERY(y) (dither_table[(y) & 15] & 0xAA) #define DITHERY(y) (dither_table[(y) & 15] & 0xAA)
#define DITHERX(x) (dither_table[(x) & 15]) #define DITHERX(x) (dither_table[(x) & 15])
@ -212,9 +211,5 @@ int read_bmp_fd(int fd,
int maxsize, int maxsize,
int format, int format,
const struct custom_format *cformat); const struct custom_format *cformat);
#ifdef PLUGIN
struct plugin_api;
void bmp_init(const struct plugin_api * api);
#endif
#endif #endif

View file

@ -59,19 +59,6 @@
#define DEBUGF(...) #define DEBUGF(...)
#endif #endif
#ifndef PLUGIN
#define API(x) x
#else
#define API(x) rb->x
static const struct plugin_api *rb;
void resize_init(const struct plugin_api *api)
{
rb = api;
}
#endif
/* calculate the maximum dimensions which will preserve the aspect ration of /* calculate the maximum dimensions which will preserve the aspect ration of
src while fitting in the constraints passed in dst, and store result in dst, src while fitting in the constraints passed in dst, and store result in dst,
returning 0 if rounding and 1 if not rounding. returning 0 if rounding and 1 if not rounding.
@ -154,7 +141,7 @@ static bool scale_h_area(void *out_line_ptr,
oxe = 0; oxe = 0;
mul = 0; mul = 0;
/* give other tasks a chance to run */ /* give other tasks a chance to run */
API(yield)(); yield();
for (ix = 0; ix < (unsigned int)ctx->src->width; ix++) for (ix = 0; ix < (unsigned int)ctx->src->width; ix++)
{ {
oxe += ctx->bm->width; oxe += ctx->bm->width;
@ -257,11 +244,11 @@ static inline bool scale_v_area(struct rowset *rset, struct scaler_context *ctx)
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
uint32_t *rowacc = (uint32_t *) ctx->buf, uint32_t *rowacc = (uint32_t *) ctx->buf,
*rowtmp = rowacc + 3 * ctx->bm->width; *rowtmp = rowacc + 3 * ctx->bm->width;
API(memset)((void *)ctx->buf, 0, ctx->bm->width * 2 * sizeof(struct uint32_rgb)); memset((void *)ctx->buf, 0, ctx->bm->width * 2 * sizeof(struct uint32_rgb));
#else #else
uint32_t *rowacc = (uint32_t *) ctx->buf, uint32_t *rowacc = (uint32_t *) ctx->buf,
*rowtmp = rowacc + ctx->bm->width; *rowtmp = rowacc + ctx->bm->width;
API(memset)((void *)ctx->buf, 0, ctx->bm->width * 2 * sizeof(uint32_t)); memset((void *)ctx->buf, 0, ctx->bm->width * 2 * sizeof(uint32_t));
#endif #endif
SDEBUGF("scale_v_area\n"); SDEBUGF("scale_v_area\n");
/* zero the accumulator and temp rows */ /* zero the accumulator and temp rows */
@ -298,9 +285,9 @@ static inline bool scale_v_area(struct rowset *rset, struct scaler_context *ctx)
ctx->output_row(oy, (void*)rowacc, ctx); ctx->output_row(oy, (void*)rowacc, ctx);
/* clear accumulator row, store partial coverage for next row */ /* clear accumulator row, store partial coverage for next row */
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
API(memset)((void *)rowacc, 0, ctx->bm->width * sizeof(uint32_t) * 3); memset((void *)rowacc, 0, ctx->bm->width * sizeof(uint32_t) * 3);
#else #else
API(memset)((void *)rowacc, 0, ctx->bm->width * sizeof(uint32_t)); memset((void *)rowacc, 0, ctx->bm->width * sizeof(uint32_t));
#endif #endif
mul = oye; mul = oye;
oy += rset->rowstep; oy += rset->rowstep;
@ -346,7 +333,7 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
/* The error is set so that values are initialized on the first pass. */ /* The error is set so that values are initialized on the first pass. */
ixe = ctx->bm->width - 1; ixe = ctx->bm->width - 1;
/* give other tasks a chance to run */ /* give other tasks a chance to run */
API(yield)(); yield();
for (ox = 0; ox < (uint32_t)ctx->bm->width; ox++) for (ox = 0; ox < (uint32_t)ctx->bm->width; ox++)
{ {
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
@ -630,7 +617,7 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
0 : needed]; 0 : needed];
#endif #endif
#if CONFIG_CODEC == SWCODEC #if CONFIG_CODEC == SWCODEC
len = (unsigned int)API(align_buffer)(PUN_PTR(void**, &buf), len, len = (unsigned int)align_buffer(PUN_PTR(void**, &buf), len,
sizeof(uint32_t)); sizeof(uint32_t));
#endif #endif
if (needed > len) if (needed > len)
@ -659,7 +646,7 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
struct scaler_context ctx; struct scaler_context ctx;
#ifdef HAVE_ADJUSTABLE_CPU_FREQ #ifdef HAVE_ADJUSTABLE_CPU_FREQ
API(cpu_boost)(true); cpu_boost(true);
#endif #endif
ctx.store_part = store_part; ctx.store_part = store_part;
ctx.args = args; ctx.args = args;
@ -698,7 +685,7 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
ret = scale_v_linear(rset, &ctx); ret = scale_v_linear(rset, &ctx);
#endif #endif
#ifdef HAVE_ADJUSTABLE_CPU_FREQ #ifdef HAVE_ADJUSTABLE_CPU_FREQ
API(cpu_boost)(false); cpu_boost(false);
#endif #endif
if (!ret) if (!ret)
return 0; return 0;

View file

@ -95,9 +95,4 @@ int resize_on_load(struct bitmap *bm, bool dither,
struct img_part* (*store_part)(void *args), struct img_part* (*store_part)(void *args),
void *args); void *args);
#ifdef PLUGIN
struct plugin_api;
void resize_init(const struct plugin_api *api);
#endif
#endif /* _RESIZE_H_ */ #endif /* _RESIZE_H_ */