nanogui: patch for microwindows in wdtv live
Subject:
patch for microwindows in wdtv live
From:
"yut616" ####@####.####
Date:
21 Feb 2010 12:25:34 -0000
Message-Id: <201002212025136871545@21cn.com>
Hi Greg:
WDTV live is a HD media player, which is mass production.
http://www.wdc.com/en/products/Products.asp?DriveID=735
It releases GPL source code which includes microwindows 0.90
GPL:
http://support.wdc.com/product/download.asp?groupid=1003&sid=120&lang=en
WDTV_Live_GPL_Code_package.1.01.24.zip (ZIP 219 MB)
1. devdraw better performance
in include\device.h , it defines several macros:
MACRO_DRAWPIXEL, BPP32_DRAWPIXEL etc.
in engine\devdraw.c, GdDrawImage, it has performance issue.
in git source code:
===================
} else if (bpp > 8) { /* 16, 18, 24, or 32bpp*/
while (height > 0) {
===================
It will check the switch condition in this "while (height > 0)" loop frequently, which has performance issue.
Maybe you could merge wdtv code to git, this is a critical issue.
2. JPEG EOI
in engine\devimage.c, LoadJPEG , it checks the EOI (end of image) of jpeg, which will make system hang in jpeg lib for certain platform, (which is happened in network image transport), but in x86 it will not hang.
Maybe you could merge this wdtv code to git, but this is not a critical issue.
3. png alpha blending
in engine\devimage.c, it adds
#if defined(ALPHA_BLENDING_FOR_PNG)
and it will check "pnginfo->num_trans > 0" which is used for PNG_EXPAND_tRNS.
===================
/* set load image pixel format 'BGRA' */
if ((colourtype == PNG_COLOR_TYPE_RGB && pnginfo->num_trans > 0) ||
colourtype == PNG_COLOR_TYPE_RGB_ALPHA)
png_set_bgr(state);
===================
Support 24bits RGB and tRNS type png in load_png function. which will handle it as 32bits and set a bgr for drawing (which will do a bgr to rgb swap for 32 bits again)
BTW:
Glad to see the web site is updated in 2010.