mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-11 06:05:21 -05:00
Explain the stride and fix the player.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22616 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
25123570c7
commit
067172ae54
1 changed files with 62 additions and 19 deletions
|
|
@ -46,6 +46,68 @@ struct viewport {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Frame buffer stride
|
||||||
|
*
|
||||||
|
* Stride describes the amount that you need to increment to get to the next
|
||||||
|
* line. For screens that have the pixels in contiguous horizontal strips
|
||||||
|
* stride should be equal to the image width.
|
||||||
|
*
|
||||||
|
* For example, if the screen pixels are layed out as follows:
|
||||||
|
*
|
||||||
|
* width0 width1 width2 widthX-1
|
||||||
|
* ------ ------ ------ ------------------ --------
|
||||||
|
* height0 | pixel0 pixel1 pixel2 ----------------> pixelX-1
|
||||||
|
* height1 | pixelX
|
||||||
|
*
|
||||||
|
* then you need to add X pixels to get to the next line. (the next line
|
||||||
|
* in this case is height1).
|
||||||
|
*
|
||||||
|
* Similarly, if the screens is has the pixels in contiguous vertical strips
|
||||||
|
* the stride would be equal to the image height.
|
||||||
|
*
|
||||||
|
* For example if the screen pixels are layed out as follows:
|
||||||
|
*
|
||||||
|
* width0 width1
|
||||||
|
* ------ ------
|
||||||
|
* height0 | pixel0 pixelY
|
||||||
|
* height1 | pixel1
|
||||||
|
* height2 | pixel2
|
||||||
|
* | | |
|
||||||
|
* \|/ | \|/
|
||||||
|
* heightY-1 | pixelY-1
|
||||||
|
*
|
||||||
|
* then you would need to add Y pixels to get to the next line (the next
|
||||||
|
* line in this case is from width0 to width1).
|
||||||
|
*
|
||||||
|
* The remote might have a different stride than the main screen so the screen
|
||||||
|
* number needs to be passed to the STRIDE macro so that the appropriate height
|
||||||
|
* or width can be passed to the lcd_bitmap, or lcd_remote_bitmap calls.
|
||||||
|
*
|
||||||
|
* STRIDE_REMOTE and STRIDE_MAIN should never used when it is not clear whether
|
||||||
|
* lcd_remote_bitmap calls or lcd_bitmap calls are being made (for example the
|
||||||
|
* screens api).
|
||||||
|
*
|
||||||
|
* Screen should always use the screen_type enum that is at the top of this
|
||||||
|
* header.
|
||||||
|
*/
|
||||||
|
enum screen_type {
|
||||||
|
SCREEN_MAIN
|
||||||
|
#ifdef HAVE_REMOTE_LCD
|
||||||
|
,SCREEN_REMOTE
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
|
||||||
|
#define STRIDE_MAIN(w, h) (h)
|
||||||
|
#else
|
||||||
|
#define STRIDE_MAIN(w, h) (w)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define STRIDE_REMOTE(w, h) (w)
|
||||||
|
|
||||||
|
#define STRIDE(screen, w, h) (screen==SCREEN_MAIN?STRIDE_MAIN((w), \
|
||||||
|
(h)):STRIDE_REMOTE((w),(h)))
|
||||||
|
|
||||||
#define STYLE_DEFAULT 0x00000000
|
#define STYLE_DEFAULT 0x00000000
|
||||||
#define STYLE_COLORED 0x10000000
|
#define STYLE_COLORED 0x10000000
|
||||||
#define STYLE_INVERT 0x20000000
|
#define STYLE_INVERT 0x20000000
|
||||||
|
|
@ -306,25 +368,6 @@ static inline unsigned lcd_color_to_native(unsigned color)
|
||||||
|
|
||||||
#endif /* HAVE_LCD_COLOR */
|
#endif /* HAVE_LCD_COLOR */
|
||||||
|
|
||||||
enum screen_type {
|
|
||||||
SCREEN_MAIN
|
|
||||||
#ifdef HAVE_REMOTE_LCD
|
|
||||||
,SCREEN_REMOTE
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Frame buffer stride */
|
|
||||||
#define STRIDE_REMOTE(w, h) (w)
|
|
||||||
|
|
||||||
#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
|
|
||||||
#define STRIDE_MAIN(w, h) (h)
|
|
||||||
#else
|
|
||||||
#define STRIDE_MAIN(w, h) (w)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STRIDE(screen, w, h) (screen==SCREEN_MAIN?STRIDE_MAIN((w), \
|
|
||||||
(h)):STRIDE_REMOTE((w),(h)))
|
|
||||||
|
|
||||||
/* Frame buffer dimensions */
|
/* Frame buffer dimensions */
|
||||||
#if LCD_DEPTH == 1
|
#if LCD_DEPTH == 1
|
||||||
#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
|
#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue