Jacek Caban : msrle32: Get rid of ICM_GETQUALITY and ICM_SET_QUALITY that should not be supported .
Alexandre Julliard
julliard at winehq.org
Thu Jan 2 13:13:48 CST 2014
Module: wine
Branch: master
Commit: f9be296be40e8a948a1d3821c49a195818e1a28c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f9be296be40e8a948a1d3821c49a195818e1a28c
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jan 2 14:16:31 2014 +0100
msrle32: Get rid of ICM_GETQUALITY and ICM_SET_QUALITY that should not be supported.
---
dlls/msrle32/msrle32.c | 45 +++++++----------------------------------
dlls/msrle32/msrle_private.h | 1 -
dlls/msrle32/tests/msrle.c | 9 ++++++++
3 files changed, 17 insertions(+), 38 deletions(-)
diff --git a/dlls/msrle32/msrle32.c b/dlls/msrle32/msrle32.c
index 882b5d2..645e323 100644
--- a/dlls/msrle32/msrle32.c
+++ b/dlls/msrle32/msrle32.c
@@ -39,7 +39,6 @@ static HINSTANCE MSRLE32_hModule = 0;
#define ABS(a) ((a) < 0 ? -(a) : (a))
#define SQR(a) ((a) * (a))
-#define QUALITY_to_DIST(q) (ICQUALITY_HIGH - q)
static inline WORD ColorCmp(WORD clr1, WORD clr2)
{
UINT a = clr1 - clr2;
@@ -547,7 +546,7 @@ LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
LPBYTE lpOut, BOOL isKey)
{
LPWORD lpC;
- LONG lLine, lInLine, lDist;
+ LONG lLine, lInLine;
LPBYTE lpOutStart = lpOut;
/* pre-conditions */
@@ -556,7 +555,6 @@ LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
assert(pi->pCurFrame != NULL);
lpC = pi->pCurFrame;
- lDist = QUALITY_to_DIST(pi->dwQuality);
lInLine = DIBWIDTHBYTES(*lpbiIn);
lLine = WIDTHBYTES(lpbiOut->biWidth * 16) / 2;
@@ -569,7 +567,7 @@ LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
x = 0;
do {
- x = MSRLE32_CompressRLE4Line(pi, NULL, lpC, lpbiIn, lpIn, lDist, x,
+ x = MSRLE32_CompressRLE4Line(pi, NULL, lpC, lpbiIn, lpIn, 0, x,
&lpOut, &lpbiOut->biSizeImage);
} while (x < lpbiOut->biWidth);
@@ -603,7 +601,7 @@ LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
if (jumpx == -1)
jumpx = x;
for (count = 0, pos = x; pos < lpbiOut->biWidth; pos++, count++) {
- if (ColorCmp(lpP[pos], lpC[pos]) > lDist)
+ if (ColorCmp(lpP[pos], lpC[pos]) > 0)
break;
}
@@ -663,7 +661,7 @@ LRESULT MSRLE32_CompressRLE4(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
if (x < lpbiOut->biWidth) {
/* skipped the 'same' things corresponding to previous frame */
- x = MSRLE32_CompressRLE4Line(pi, lpP, lpC, lpbiIn, lpIn, lDist, x,
+ x = MSRLE32_CompressRLE4Line(pi, lpP, lpC, lpbiIn, lpIn, 0, x,
&lpOut, &lpbiOut->biSizeImage);
}
} while (x < lpbiOut->biWidth);
@@ -701,7 +699,7 @@ LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
LPBYTE lpOut, BOOL isKey)
{
LPWORD lpC;
- LONG lDist, lInLine, lLine;
+ LONG lInLine, lLine;
LPBYTE lpOutStart = lpOut;
assert(pi != NULL && lpbiOut != NULL);
@@ -709,7 +707,6 @@ LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
assert(pi->pCurFrame != NULL);
lpC = pi->pCurFrame;
- lDist = QUALITY_to_DIST(pi->dwQuality);
lInLine = DIBWIDTHBYTES(*lpbiIn);
lLine = WIDTHBYTES(lpbiOut->biWidth * 16) / 2;
@@ -722,7 +719,7 @@ LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
x = 0;
do {
- x = MSRLE32_CompressRLE8Line(pi, NULL, lpC, lpbiIn, lpIn, lDist, x,
+ x = MSRLE32_CompressRLE8Line(pi, NULL, lpC, lpbiIn, lpIn, 0, x,
&lpOut, &lpbiOut->biSizeImage);
assert(lpOut == (lpOutStart + lpbiOut->biSizeImage));
} while (x < lpbiOut->biWidth);
@@ -757,7 +754,7 @@ LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
if (jumpx == -1)
jumpx = x;
for (count = 0, pos = x; pos < lpbiOut->biWidth; pos++, count++) {
- if (ColorCmp(lpP[pos], lpC[pos]) > lDist)
+ if (ColorCmp(lpP[pos], lpC[pos]) > 0)
break;
}
@@ -804,7 +801,7 @@ LRESULT MSRLE32_CompressRLE8(const CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
if (x < lpbiOut->biWidth) {
/* skip the 'same' things corresponding to previous frame */
- x = MSRLE32_CompressRLE8Line(pi, lpP, lpC, lpbiIn, lpIn, lDist, x,
+ x = MSRLE32_CompressRLE8Line(pi, lpP, lpC, lpbiIn, lpIn, 0, x,
&lpOut, &lpbiOut->biSizeImage);
assert(lpOut == (lpOutStart + lpbiOut->biSizeImage));
}
@@ -1144,7 +1141,6 @@ static CodecInfo* Open(LPICOPEN icinfo)
pi->fccHandler = icinfo->fccHandler;
pi->bCompress = FALSE;
- pi->dwQuality = MSRLE32_DEFAULTQUALITY;
pi->nPrevFrame = -1;
pi->pPrevFrame = pi->pCurFrame = NULL;
@@ -1195,21 +1191,6 @@ static LRESULT GetInfo(const CodecInfo *pi, ICINFO *icinfo, DWORD dwSize)
return sizeof(ICINFO);
}
-static LRESULT SetQuality(CodecInfo *pi, LONG lQuality)
-{
- /* pre-condition */
- assert(pi != NULL);
-
- if (lQuality == -1)
- lQuality = MSRLE32_DEFAULTQUALITY;
- else if (ICQUALITY_LOW > lQuality || lQuality > ICQUALITY_HIGH)
- return ICERR_BADPARAM;
-
- pi->dwQuality = (DWORD)lQuality;
-
- return ICERR_OK;
-}
-
static LRESULT Configure(const CodecInfo *pi, HWND hWnd)
{
/* pre-condition */
@@ -1494,8 +1475,6 @@ static LRESULT Compress(CodecInfo *pi, ICCOMPRESS* lpic, DWORD dwSize)
}
for (i = 0; i < 3; i++) {
- SetQuality(pi, lpic->dwQuality);
-
lpic->lpbiOutput->biSizeImage = 0;
if (lpic->lpbiOutput->biBitCount == 4)
@@ -1850,14 +1829,6 @@ LRESULT CALLBACK MSRLE32_DriverProc(DWORD_PTR dwDrvID, HDRVR hDrv, UINT uMsg,
return ICERR_OK;
}
break;
- case ICM_GETQUALITY:
- if ((LPVOID)lParam1 != NULL) {
- *((LPDWORD)lParam1) = pi->dwQuality;
- return ICERR_OK;
- }
- break;
- case ICM_SETQUALITY:
- return SetQuality(pi, *(LPLONG)lParam1);
case ICM_COMPRESS_GET_FORMAT:
return CompressGetFormat(pi, (LPCBITMAPINFOHEADER)lParam1,
(LPBITMAPINFOHEADER)lParam2);
diff --git a/dlls/msrle32/msrle_private.h b/dlls/msrle32/msrle_private.h
index 1ff6cbe..d182fef 100644
--- a/dlls/msrle32/msrle_private.h
+++ b/dlls/msrle32/msrle_private.h
@@ -46,7 +46,6 @@
typedef struct _CodecInfo {
FOURCC fccHandler;
- DWORD dwQuality;
BOOL bCompress;
LONG nPrevFrame;
diff --git a/dlls/msrle32/tests/msrle.c b/dlls/msrle32/tests/msrle.c
index 819cb34..58dcc41 100644
--- a/dlls/msrle32/tests/msrle.c
+++ b/dlls/msrle32/tests/msrle.c
@@ -46,6 +46,15 @@ static void test_encode(void)
ok(res == ICERR_OK, "ICSendMessage(ICM_GETDEFAULTQUALITY) failed: %ld\n", res);
ok(quality == 8500, "quality = %d\n", quality);
+ quality = 0xdeadbeef;
+ res = ICSendMessage(hic, ICM_GETQUALITY, (DWORD_PTR)&quality, 0);
+ ok(res == ICERR_UNSUPPORTED, "ICSendMessage(ICM_GETQUALITY) failed: %ld\n", res);
+ ok(quality == 0xdeadbeef, "quality = %d\n", quality);
+
+ quality = ICQUALITY_HIGH;
+ res = ICSendMessage(hic, ICM_SETQUALITY, (DWORD_PTR)&quality, 0);
+ ok(res == ICERR_UNSUPPORTED, "ICSendMessage(ICM_SETQUALITY) failed: %ld\n", res);
+
ICClose(hic);
}
More information about the wine-cvs
mailing list