Recently, I was able to compile rockbox following the
LinuxSimpleGuideToCompiling tutorial. And I decided to test differents revisions of rockbox from git.rockbox.org. to find in which one the problem started. And I found it, it was this commit:
2022-11-14 Remove some shadowed variables identified by -Wshadow
https://git.rockbox.org/cgit/rockbox.git/commit/?id=034b6d5bfb5bdedaf843079a02ff6df31488f394The bug is in the file "firmware/drivers/lcd-color-common.c" in the function:
void lcd_blit_yuv(unsigned char * const src[3],
int src_x, int src_y, int stride,
int x, int y, int width, int height)
In the previous version of this file, inside this function there are two vars with the name "y" that are used for different porpouses. The first "y" is a parameter of the function "lcd_blit_yuv" and the other one is defined inside two do{ }while blocks. I think the first "y" represents a coordinate and the other "y" stands for "luma" and is used during the YUV->RGB conversion. And because de second "y" was defined inside the do{}while blocks it didn't overwrite the first one. But now, the second "y" is not declarated inside the do{}while blocks and the parameter "y" is overwrited during YUY->RGB conversion. A quick fix could be adding again "int y;" inside the do{}while blocks which I know it works. Or maybe the second "y" should be renamed.
I know this bug affects clip zip and fuze+ but somehow it doesn't affect fuze v1.
Here, I have uploaded a video for the fuze+ and another for the clip zip that can be used for testing. It contains the same movie that appears in the
PluginMpegplayer wiki but with the proper resolution for these players.