From 3dab9e5e6bfc029a5d3ca901b2902dcc0e27f4f0 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Date: Wed, 6 Feb 2019 14:27:30 +1100 Subject: [PATCH] Rebase against 6b76648a8b773838ecde00719ca54a433edf5ce6 --- patches/patchinstall.sh | 19 +- ...i-Add-SetupDiInstallDeviceInterfaces.patch | 14 +- ...CConvertBitmapSource-should-ask-IWIC.patch | 28 - ...x-behaviour-of-format-converter-for-.patch | 100 ---- ...sts-Add-a-bunch-of-new-tests-for-ind.patch | 529 ------------------ ...sts-Add-some-tests-for-converting-24.patch | 189 ------- ...sts-Add-a-missing-check-for-IWICBitm.patch | 25 - 7 files changed, 11 insertions(+), 893 deletions(-) delete mode 100644 patches/windowscodecs-GIF_Encoder/0016-windowscodecs-WICConvertBitmapSource-should-ask-IWIC.patch delete mode 100644 patches/windowscodecs-GIF_Encoder/0023-windowscodecs-Fix-behaviour-of-format-converter-for-.patch delete mode 100644 patches/windowscodecs-GIF_Encoder/0024-windowscodecs-tests-Add-a-bunch-of-new-tests-for-ind.patch delete mode 100644 patches/windowscodecs-GIF_Encoder/0025-windowscodecs-tests-Add-some-tests-for-converting-24.patch delete mode 100644 patches/windowscodecs-GIF_Encoder/0027-windowscodecs-tests-Add-a-missing-check-for-IWICBitm.patch diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 31f9c64f..ea89d85b 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "152cda38df79cf04aae589f1d721de3cac1cd49e" + echo "6b76648a8b773838ecde00719ca54a433edf5ce6" } # Show version information @@ -2568,7 +2568,7 @@ fi # | # | Modified files: # | * dlls/bcrypt/bcrypt.spec, dlls/bcrypt/bcrypt_internal.h, dlls/bcrypt/bcrypt_main.c, dlls/bcrypt/gnutls.c, -# | dlls/bcrypt/tests/bcrypt.c, dlls/ncrypt/ncrypt.spec, include/bcrypt.h +# | dlls/bcrypt/macos.c, dlls/bcrypt/tests/bcrypt.c, dlls/ncrypt/ncrypt.spec, include/bcrypt.h # | if test "$enable_bcrypt_BCryptGenerateKeyPair" -eq 1; then patch_apply bcrypt-BCryptGenerateKeyPair/0001-bcrypt-Implement-BCryptGenerate-FinalizeKeyPair-for-.patch @@ -6862,38 +6862,27 @@ fi # Patchset windowscodecs-GIF_Encoder # | # | Modified files: -# | * dlls/gdiplus/tests/image.c, dlls/windowscodecs/clsfactory.c, dlls/windowscodecs/converter.c, -# | dlls/windowscodecs/gifformat.c, dlls/windowscodecs/info.c, dlls/windowscodecs/regsvr.c, -# | dlls/windowscodecs/tests/converter.c, dlls/windowscodecs/wincodecs_private.h, +# | * dlls/gdiplus/tests/image.c, dlls/windowscodecs/clsfactory.c, dlls/windowscodecs/gifformat.c, +# | dlls/windowscodecs/regsvr.c, dlls/windowscodecs/tests/converter.c, dlls/windowscodecs/wincodecs_private.h, # | dlls/windowscodecs/windowscodecs_wincodec.idl # | if test "$enable_windowscodecs_GIF_Encoder" -eq 1; then patch_apply windowscodecs-GIF_Encoder/0007-windowscodecs-tests-Add-IWICBitmapEncoderInfo-test.patch patch_apply windowscodecs-GIF_Encoder/0008-windowscodecs-Add-initial-implementation-of-the-GIF-.patch patch_apply windowscodecs-GIF_Encoder/0010-windowscodecs-Initialize-empty-property-bag-in-GIF-e.patch - patch_apply windowscodecs-GIF_Encoder/0016-windowscodecs-WICConvertBitmapSource-should-ask-IWIC.patch patch_apply windowscodecs-GIF_Encoder/0020-windowscodecs-Add-registration-of-the-GIF-encoder.patch patch_apply windowscodecs-GIF_Encoder/0021-windowscodecs-Fix-IWICBitmapDecoder-CopyPalette-for-.patch patch_apply windowscodecs-GIF_Encoder/0022-windowscodecs-Better-follow-the-GIF-spec-and-don-t-s.patch - patch_apply windowscodecs-GIF_Encoder/0023-windowscodecs-Fix-behaviour-of-format-converter-for-.patch - patch_apply windowscodecs-GIF_Encoder/0024-windowscodecs-tests-Add-a-bunch-of-new-tests-for-ind.patch - patch_apply windowscodecs-GIF_Encoder/0025-windowscodecs-tests-Add-some-tests-for-converting-24.patch patch_apply windowscodecs-GIF_Encoder/0026-windowscodecs-tests-Add-the-tests-for-GIF-encoder-an.patch - patch_apply windowscodecs-GIF_Encoder/0027-windowscodecs-tests-Add-a-missing-check-for-IWICBitm.patch patch_apply windowscodecs-GIF_Encoder/0028-windowscodecs-Correctly-indicate-that-the-global-inf.patch ( printf '%s\n' '+ { "Alistair Leslie-Hughes", "windowscodecs/tests: Add IWICBitmapEncoderInfo test.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add initial implementation of the GIF encoder.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Initialize empty property bag in GIF encoder'\''s CreateNewFrame implementation.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: WICConvertBitmapSource should ask IWICFormatConverter::Initialize to use an optimized palette.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add registration of the GIF encoder.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Fix IWICBitmapDecoder::CopyPalette for a not initialized case in the GIF decoder.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Better follow the GIF spec and don'\''t specify the local color table size if there is no local palette.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Fix behaviour of format converter for indexed formats when NULL or empty palette has been provided.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs/tests: Add a bunch of new tests for indexed format conversions.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs/tests: Add some tests for converting 24bppBGR to 8bppIndexed format.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs/tests: Add the tests for GIF encoder and decoder.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs/tests: Add a missing check for IWICBitmapFrameDecode::GetPixelFormat return value.", 1 },'; printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Correctly indicate that the global info was written even without the global palette.", 1 },'; ) >> "$patchlist" fi diff --git a/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0001-setupapi-Add-SetupDiInstallDeviceInterfaces.patch b/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0001-setupapi-Add-SetupDiInstallDeviceInterfaces.patch index 975456fa..4b10dcc1 100644 --- a/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0001-setupapi-Add-SetupDiInstallDeviceInterfaces.patch +++ b/patches/setupapi-SetupDiGetDeviceInterfaceDetail/0001-setupapi-Add-SetupDiInstallDeviceInterfaces.patch @@ -1,4 +1,4 @@ -From b396392de5b090fb78a358dec7a8790ecedf2240 Mon Sep 17 00:00:00 2001 +From dd19f26a49f288dec1d287ebaaeb7a2dd2e7f0cd Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Date: Mon, 15 Oct 2018 12:05:41 +1100 Subject: [PATCH] setupapi: Add SetupDiInstallDeviceInterfaces @@ -11,12 +11,12 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> 2 files changed, 13 insertions(+) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c -index 771fc70..b15e580 100644 +index 632d704c9bd..129b7384162 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c -@@ -4020,3 +4020,15 @@ BOOL WINAPI SetupDiGetDevicePropertyW(HDEVINFO info_set, PSP_DEVINFO_DATA info_d - SetLastError(ERROR_NOT_FOUND); - return FALSE; +@@ -4002,3 +4002,15 @@ BOOL WINAPI SetupDiGetDevicePropertyW(HDEVINFO devinfo, PSP_DEVINFO_DATA device_ + SetLastError(ls); + return !ls; } + +/*********************************************************************** @@ -31,7 +31,7 @@ index 771fc70..b15e580 100644 +} + diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec -index 99509e1..3f906ed 100644 +index 3cd5663a01e..984f2218f02 100644 --- a/dlls/setupapi/setupapi.spec +++ b/dlls/setupapi/setupapi.spec @@ -367,6 +367,7 @@ @@ -43,5 +43,5 @@ index 99509e1..3f906ed 100644 @ stdcall SetupDiLoadClassIcon(ptr ptr ptr) @ stub SetupDiMoveDuplicateDevice -- -1.9.1 +2.20.1 diff --git a/patches/windowscodecs-GIF_Encoder/0016-windowscodecs-WICConvertBitmapSource-should-ask-IWIC.patch b/patches/windowscodecs-GIF_Encoder/0016-windowscodecs-WICConvertBitmapSource-should-ask-IWIC.patch deleted file mode 100644 index 5e8fea41..00000000 --- a/patches/windowscodecs-GIF_Encoder/0016-windowscodecs-WICConvertBitmapSource-should-ask-IWIC.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 8d2a6325a891a2fab8bf7c091cb8fb73468ae1ea Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov <dmitry@baikal.ru> -Date: Thu, 20 Oct 2016 16:57:51 +0800 -Subject: windowscodecs: WICConvertBitmapSource should ask - IWICFormatConverter::Initialize to use an optimized palette. - -This matches Windows' behaviour, and makes a simple test application that converts -any WIC compatible RGB(A) source image to 8bppIndexed format (GIF for instance) work. ---- - dlls/windowscodecs/info.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dlls/windowscodecs/info.c b/dlls/windowscodecs/info.c -index 1a93491..c1e8a66 100644 ---- a/dlls/windowscodecs/info.c -+++ b/dlls/windowscodecs/info.c -@@ -2336,7 +2336,7 @@ HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitma - - if (SUCCEEDED(res) && canconvert) - res = IWICFormatConverter_Initialize(converter, pISrc, dstFormat, WICBitmapDitherTypeNone, -- NULL, 0.0, WICBitmapPaletteTypeCustom); -+ NULL, 0.0, WICBitmapPaletteTypeMedianCut); - - if (FAILED(res) || !canconvert) - { --- -2.9.0 - diff --git a/patches/windowscodecs-GIF_Encoder/0023-windowscodecs-Fix-behaviour-of-format-converter-for-.patch b/patches/windowscodecs-GIF_Encoder/0023-windowscodecs-Fix-behaviour-of-format-converter-for-.patch deleted file mode 100644 index 6b7b859a..00000000 --- a/patches/windowscodecs-GIF_Encoder/0023-windowscodecs-Fix-behaviour-of-format-converter-for-.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 9ddafc9d2cd0fc899e513807a34ef4e875851fca Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov <dmitry@baikal.ru> -Date: Thu, 27 Oct 2016 14:55:03 +0800 -Subject: windowscodecs: Fix behaviour of format converter for indexed formats - when NULL or empty palette has been provided. - ---- - dlls/windowscodecs/converter.c | 32 ++++++++++++++++++++++++-------- - 1 file changed, 24 insertions(+), 8 deletions(-) - -diff --git a/dlls/windowscodecs/converter.c b/dlls/windowscodecs/converter.c -index c6a2514..4ee980e 100644 ---- a/dlls/windowscodecs/converter.c -+++ b/dlls/windowscodecs/converter.c -@@ -1240,7 +1240,6 @@ static HRESULT copypixels_to_8bppIndexed(struct FormatConverter *This, const WIC - - hr = IWICPalette_GetColors(This->palette, 256, colors, &count); - if (hr != S_OK) return hr; -- if (!count) return WINCODEC_ERR_WRONGSTATE; - - srcstride = 3 * prc->Width; - srcdatasize = srcstride * prc->Height; -@@ -1409,7 +1408,18 @@ static HRESULT WINAPI FormatConverter_CopyPalette(IWICFormatConverter *iface, - TRACE("(%p,%p)\n", iface, palette); - - if (!palette) return E_INVALIDARG; -- if (!This->palette) return WINCODEC_ERR_WRONGSTATE; -+ if (!This->source) return WINCODEC_ERR_WRONGSTATE; -+ -+ if (!This->palette) -+ { -+ HRESULT hr; -+ UINT bpp; -+ -+ hr = get_pixelformat_bpp(This->dst_format->guid, &bpp); -+ if (hr != S_OK) return hr; -+ if (bpp <= 8) return WINCODEC_ERR_WRONGSTATE; -+ return IWICBitmapSource_CopyPalette(This->source, palette); -+ } - - return IWICPalette_InitializeFromPalette(palette, This->palette); - } -@@ -1440,7 +1450,7 @@ static HRESULT WINAPI FormatConverter_CopyPixels(IWICFormatConverter *iface, - pbBuffer, This->src_format->format); - } - else -- return WINCODEC_ERR_NOTINITIALIZED; -+ return WINCODEC_ERR_WRONGSTATE; - } - - static HRESULT WINAPI FormatConverter_Initialize(IWICFormatConverter *iface, -@@ -1457,6 +1467,10 @@ static HRESULT WINAPI FormatConverter_Initialize(IWICFormatConverter *iface, - - if (!palette) - { -+ UINT bpp; -+ res = get_pixelformat_bpp(dstFormat, &bpp); -+ if (res != S_OK) return res; -+ - res = PaletteImpl_Create(&palette); - if (res != S_OK) return res; - -@@ -1465,20 +1479,19 @@ static HRESULT WINAPI FormatConverter_Initialize(IWICFormatConverter *iface, - case WICBitmapPaletteTypeCustom: - IWICPalette_Release(palette); - palette = NULL; -- res = S_OK; -+ if (bpp <= 8) return E_INVALIDARG; - break; - - case WICBitmapPaletteTypeMedianCut: - { -- UINT bpp; -- res = get_pixelformat_bpp(dstFormat, &bpp); -- if (res == S_OK && bpp <= 8) -+ if (bpp <= 8) - res = IWICPalette_InitializeFromBitmap(palette, source, 1 << bpp, FALSE); - break; - } - - default: -- res = IWICPalette_InitializePredefined(palette, palette_type, FALSE); -+ if (bpp <= 8) -+ res = IWICPalette_InitializePredefined(palette, palette_type, FALSE); - break; - } - -@@ -1538,6 +1551,9 @@ end: - - LeaveCriticalSection(&This->lock); - -+ if (res != S_OK && palette) -+ IWICPalette_Release(palette); -+ - return res; - } - --- -2.9.0 - diff --git a/patches/windowscodecs-GIF_Encoder/0024-windowscodecs-tests-Add-a-bunch-of-new-tests-for-ind.patch b/patches/windowscodecs-GIF_Encoder/0024-windowscodecs-tests-Add-a-bunch-of-new-tests-for-ind.patch deleted file mode 100644 index 65b0b038..00000000 --- a/patches/windowscodecs-GIF_Encoder/0024-windowscodecs-tests-Add-a-bunch-of-new-tests-for-ind.patch +++ /dev/null @@ -1,529 +0,0 @@ -From e80477c69984c1f188de779fbf7559dd17d61416 Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov <dmitry@baikal.ru> -Date: Thu, 27 Oct 2016 15:10:09 +0800 -Subject: [PATCH] windowscodecs/tests: Add a bunch of new tests for indexed - format conversions. - ---- - dlls/windowscodecs/tests/converter.c | 269 ++++++++++++++++++++------- - 1 file changed, 201 insertions(+), 68 deletions(-) - -diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c -index 4eea13b8..925d97ea 100644 ---- a/dlls/windowscodecs/tests/converter.c -+++ b/dlls/windowscodecs/tests/converter.c -@@ -118,9 +118,30 @@ static HRESULT WINAPI BitmapTestSrc_GetResolution(IWICBitmapSource *iface, - } - - static HRESULT WINAPI BitmapTestSrc_CopyPalette(IWICBitmapSource *iface, -- IWICPalette *pIPalette) -+ IWICPalette *palette) - { -- return E_NOTIMPL; -+ BitmapTestSrc *This = impl_from_IWICBitmapSource(iface); -+ -+ if (IsEqualGUID(This->data->format, &GUID_WICPixelFormat1bppIndexed) || -+ IsEqualGUID(This->data->format, &GUID_WICPixelFormat2bppIndexed) || -+ IsEqualGUID(This->data->format, &GUID_WICPixelFormat4bppIndexed) || -+ IsEqualGUID(This->data->format, &GUID_WICPixelFormat8bppIndexed)) -+ { -+ WICColor colors[8]; -+ -+ colors[0] = 0xff0000ff; -+ colors[1] = 0xff00ff00; -+ colors[2] = 0xffff0000; -+ colors[3] = 0xff000000; -+ colors[4] = 0xffffff00; -+ colors[5] = 0xffff00ff; -+ colors[6] = 0xff00ffff; -+ colors[7] = 0xffffffff; -+ return IWICPalette_InitializeCustom(palette, colors, 8); -+ } -+ -+ /* unique error marker */ -+ return 0xdeadbeef; - } - - static HRESULT WINAPI BitmapTestSrc_CopyPixels(IWICBitmapSource *iface, -@@ -252,6 +273,21 @@ static BOOL compare_bits(const struct bitmap_data *expect, UINT buffersize, cons - break; - } - } -+ else if (IsEqualGUID(expect->format, &GUID_WICPixelFormat2bppIndexed) || -+ IsEqualGUID(expect->format, &GUID_WICPixelFormat4bppIndexed) || -+ IsEqualGUID(expect->format, &GUID_WICPixelFormat8bppIndexed)) -+ { -+ UINT i; -+ const BYTE *a=(const BYTE*)expect->bits, *b=(const BYTE*)converted_bits; -+ equal=TRUE; -+ -+ for (i=0; i<buffersize; i++) -+ if (a[i] != b[i]) -+ { -+ equal = FALSE; -+ break; -+ } -+ } - else - equal = (memcmp(expect->bits, converted_bits, buffersize) == 0); - -@@ -261,7 +297,19 @@ static BOOL compare_bits(const struct bitmap_data *expect, UINT buffersize, cons - return equal; - } - --static void compare_bitmap_data(const struct bitmap_data *expect, IWICBitmapSource *source, const char *name) -+static BOOL is_indexed_format(const GUID *format) -+{ -+ if (IsEqualGUID(format, &GUID_WICPixelFormat1bppIndexed) || -+ IsEqualGUID(format, &GUID_WICPixelFormat2bppIndexed) || -+ IsEqualGUID(format, &GUID_WICPixelFormat4bppIndexed) || -+ IsEqualGUID(format, &GUID_WICPixelFormat8bppIndexed)) -+ return TRUE; -+ -+ return FALSE; -+} -+ -+static void compare_bitmap_data(const struct bitmap_data *src, const struct bitmap_data *expect, -+ IWICBitmapSource *source, const char *name) - { - BYTE *converted_bits; - UINT width, height; -@@ -294,15 +342,24 @@ static void compare_bitmap_data(const struct bitmap_data *expect, IWICBitmapSour - buffersize = stride * expect->height; - - converted_bits = HeapAlloc(GetProcessHeap(), 0, buffersize); -+ memset(converted_bits, 0xaa, buffersize); - hr = IWICBitmapSource_CopyPixels(source, &prc, stride, buffersize, converted_bits); - ok(SUCCEEDED(hr), "CopyPixels(%s) failed, hr=%x\n", name, hr); -- ok(compare_bits(expect, buffersize, converted_bits), "unexpected pixel data (%s)\n", name); -+ -+ /* The result of conversion of color to indexed formats depends on -+ * optimized palette generation implementation. We either need to -+ * assign our own palette, or just skip the comparison. -+ */ -+ if (!(!is_indexed_format(src->format) && is_indexed_format(expect->format))) -+ ok(compare_bits(expect, buffersize, converted_bits), "unexpected pixel data (%s)\n", name); - - /* Test with NULL rectangle - should copy the whole bitmap */ - memset(converted_bits, 0xaa, buffersize); - hr = IWICBitmapSource_CopyPixels(source, NULL, stride, buffersize, converted_bits); - ok(SUCCEEDED(hr), "CopyPixels(%s,rc=NULL) failed, hr=%x\n", name, hr); -- ok(compare_bits(expect, buffersize, converted_bits), "unexpected pixel data (%s)\n", name); -+ /* see comment above */ -+ if (!(!is_indexed_format(src->format) && is_indexed_format(expect->format))) -+ ok(compare_bits(expect, buffersize, converted_bits), "unexpected pixel data (%s)\n", name); - - HeapFree(GetProcessHeap(), 0, converted_bits); - } -@@ -318,78 +375,137 @@ static const struct bitmap_data testdata_1bppIndexed = { - - /* some encoders (like BMP) require data to be 4-bytes aligned */ - static const BYTE bits_2bpp[] = { -- 0x55,0x55,0x55,0x55, -- 0xaa,0xaa,0xaa,0xaa}; -+ 0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb, -+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24}; - static const struct bitmap_data testdata_2bppIndexed = { -- &GUID_WICPixelFormat2bppIndexed, 2, bits_2bpp, 16, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat2bppIndexed, 2, bits_2bpp, 32, 2, 96.0, 96.0}; - - /* some encoders (like BMP) require data to be 4-bytes aligned */ - static const BYTE bits_4bpp[] = { -- 0x55,0x55,0x55,0x55, -- 0xaa,0xaa,0xaa,0xaa}; -+ 0x01,0x23,0x01,0x23,0x01,0x23,0x01,0x23,0x01,0x23,0x01,0x23,0x01,0x23,0x01,0x23, -+ 0x45,0x67,0x45,0x67,0x45,0x67,0x45,0x67,0x45,0x67,0x45,0x67,0x45,0x67,0x45,0x67}; -+ - static const struct bitmap_data testdata_4bppIndexed = { -- &GUID_WICPixelFormat4bppIndexed, 4, bits_4bpp, 8, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat4bppIndexed, 4, bits_4bpp, 32, 2, 96.0, 96.0}; -+ -+static const BYTE bits_8bpp_BW[] = { -+ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, -+ 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0}; -+static const struct bitmap_data testdata_8bppIndexed_BW = { -+ &GUID_WICPixelFormat8bppIndexed, 8, bits_8bpp_BW, 32, 2, 96.0, 96.0}; -+ -+static const BYTE bits_8bpp_4colors[] = { -+ 0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0,0,1,2,0, -+ 3,2,1,3,3,2,1,3,3,2,1,3,3,2,1,3,3,2,1,3,3,2,1,3,3,2,1,3,3,2,1,3}; -+static const struct bitmap_data testdata_8bppIndexed_4colors = { -+ &GUID_WICPixelFormat8bppIndexed, 8, bits_8bpp_4colors, 32, 2, 96.0, 96.0}; - - static const BYTE bits_8bpp[] = { -- 0,1,2,3, -- 4,5,6,7}; -+ 0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3, -+ 4,5,6,7,4,5,6,7,4,5,6,7,4,5,6,7,4,5,6,7,4,5,6,7,4,5,6,7,4,5,6,7}; - static const struct bitmap_data testdata_8bppIndexed = { -- &GUID_WICPixelFormat8bppIndexed, 8, bits_8bpp, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat8bppIndexed, 8, bits_8bpp, 32, 2, 96.0, 96.0}; - - static const BYTE bits_24bppBGR[] = { -- 255,0,0, 0,255,0, 0,0,255, 0,0,0, -- 0,255,255, 255,0,255, 255,255,0, 255,255,255}; -+ 255,0,0, 0,255,0, 0,0,255, 0,0,0, 255,0,0, 0,255,0, 0,0,255, 0,0,0, -+ 255,0,0, 0,255,0, 0,0,255, 0,0,0, 255,0,0, 0,255,0, 0,0,255, 0,0,0, -+ 255,0,0, 0,255,0, 0,0,255, 0,0,0, 255,0,0, 0,255,0, 0,0,255, 0,0,0, -+ 255,0,0, 0,255,0, 0,0,255, 0,0,0, 255,0,0, 0,255,0, 0,0,255, 0,0,0, -+ 0,255,255, 255,0,255, 255,255,0, 255,255,255, 0,255,255, 255,0,255, 255,255,0, 255,255,255, -+ 0,255,255, 255,0,255, 255,255,0, 255,255,255, 0,255,255, 255,0,255, 255,255,0, 255,255,255, -+ 0,255,255, 255,0,255, 255,255,0, 255,255,255, 0,255,255, 255,0,255, 255,255,0, 255,255,255, -+ 0,255,255, 255,0,255, 255,255,0, 255,255,255, 0,255,255, 255,0,255, 255,255,0, 255,255,255}; - static const struct bitmap_data testdata_24bppBGR = { -- &GUID_WICPixelFormat24bppBGR, 24, bits_24bppBGR, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat24bppBGR, 24, bits_24bppBGR, 32, 2, 96.0, 96.0}; - - static const BYTE bits_24bppRGB[] = { -- 0,0,255, 0,255,0, 255,0,0, 0,0,0, -- 255,255,0, 255,0,255, 0,255,255, 255,255,255}; -+ 0,0,255, 0,255,0, 255,0,0, 0,0,0, 0,0,255, 0,255,0, 255,0,0, 0,0,0, -+ 0,0,255, 0,255,0, 255,0,0, 0,0,0, 0,0,255, 0,255,0, 255,0,0, 0,0,0, -+ 0,0,255, 0,255,0, 255,0,0, 0,0,0, 0,0,255, 0,255,0, 255,0,0, 0,0,0, -+ 0,0,255, 0,255,0, 255,0,0, 0,0,0, 0,0,255, 0,255,0, 255,0,0, 0,0,0, -+ 255,255,0, 255,0,255, 0,255,255, 255,255,255, 255,255,0, 255,0,255, 0,255,255, 255,255,255, -+ 255,255,0, 255,0,255, 0,255,255, 255,255,255, 255,255,0, 255,0,255, 0,255,255, 255,255,255, -+ 255,255,0, 255,0,255, 0,255,255, 255,255,255, 255,255,0, 255,0,255, 0,255,255, 255,255,255, -+ 255,255,0, 255,0,255, 0,255,255, 255,255,255, 255,255,0, 255,0,255, 0,255,255, 255,255,255 }; - static const struct bitmap_data testdata_24bppRGB = { -- &GUID_WICPixelFormat24bppRGB, 24, bits_24bppRGB, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat24bppRGB, 24, bits_24bppRGB, 32, 2, 96.0, 96.0}; - - static const BYTE bits_32bppBGR[] = { -- 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, -- 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80}; -+ 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, -+ 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, -+ 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, -+ 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, 255,0,0,80, 0,255,0,80, 0,0,255,80, 0,0,0,80, -+ 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, -+ 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, -+ 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, -+ 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80}; - static const struct bitmap_data testdata_32bppBGR = { -- &GUID_WICPixelFormat32bppBGR, 32, bits_32bppBGR, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat32bppBGR, 32, bits_32bppBGR, 32, 2, 96.0, 96.0}; - - static const BYTE bits_32bppBGRA[] = { -- 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, -- 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255}; -+ 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, -+ 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, -+ 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, -+ 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, -+ 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, -+ 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, -+ 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, -+ 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255}; - static const struct bitmap_data testdata_32bppBGRA = { -- &GUID_WICPixelFormat32bppBGRA, 32, bits_32bppBGRA, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat32bppBGRA, 32, bits_32bppBGRA, 32, 2, 96.0, 96.0}; - - /* XP and 2003 use linear color conversion, later versions use sRGB gamma */ - static const float bits_32bppGrayFloat_xp[] = { -- 0.114000f,0.587000f,0.299000f,0.000000f, -- 0.886000f,0.413000f,0.701000f,1.000000f}; -+ 0.114000f,0.587000f,0.299000f,0.000000f,0.114000f,0.587000f,0.299000f,0.000000f, -+ 0.114000f,0.587000f,0.299000f,0.000000f,0.114000f,0.587000f,0.299000f,0.000000f, -+ 0.114000f,0.587000f,0.299000f,0.000000f,0.114000f,0.587000f,0.299000f,0.000000f, -+ 0.114000f,0.587000f,0.299000f,0.000000f,0.114000f,0.587000f,0.299000f,0.000000f, -+ 0.886000f,0.413000f,0.701000f,1.000000f,0.886000f,0.413000f,0.701000f,1.000000f, -+ 0.886000f,0.413000f,0.701000f,1.000000f,0.886000f,0.413000f,0.701000f,1.000000f, -+ 0.886000f,0.413000f,0.701000f,1.000000f,0.886000f,0.413000f,0.701000f,1.000000f, -+ 0.886000f,0.413000f,0.701000f,1.000000f,0.886000f,0.413000f,0.701000f,1.000000f}; - static const struct bitmap_data testdata_32bppGrayFloat_xp = { -- &GUID_WICPixelFormat32bppGrayFloat, 32, (const BYTE *)bits_32bppGrayFloat_xp, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat32bppGrayFloat, 32, (const BYTE *)bits_32bppGrayFloat_xp, 32, 2, 96.0, 96.0}; - - static const float bits_32bppGrayFloat[] = { -- 0.072200f,0.715200f,0.212600f,0.000000f, -- 0.927800f,0.284800f,0.787400f,1.000000f}; -+ 0.072200f,0.715200f,0.212600f,0.000000f,0.072200f,0.715200f,0.212600f,0.000000f, -+ 0.072200f,0.715200f,0.212600f,0.000000f,0.072200f,0.715200f,0.212600f,0.000000f, -+ 0.072200f,0.715200f,0.212600f,0.000000f,0.072200f,0.715200f,0.212600f,0.000000f, -+ 0.072200f,0.715200f,0.212600f,0.000000f,0.072200f,0.715200f,0.212600f,0.000000f, -+ 0.927800f,0.284800f,0.787400f,1.000000f,0.927800f,0.284800f,0.787400f,1.000000f, -+ 0.927800f,0.284800f,0.787400f,1.000000f,0.927800f,0.284800f,0.787400f,1.000000f, -+ 0.927800f,0.284800f,0.787400f,1.000000f,0.927800f,0.284800f,0.787400f,1.000000f, -+ 0.927800f,0.284800f,0.787400f,1.000000f,0.927800f,0.284800f,0.787400f,1.000000f}; - static const struct bitmap_data testdata_32bppGrayFloat = { -- &GUID_WICPixelFormat32bppGrayFloat, 32, (const BYTE *)bits_32bppGrayFloat, 4, 2, 96.0, 96.0, &testdata_32bppGrayFloat_xp}; -+ &GUID_WICPixelFormat32bppGrayFloat, 32, (const BYTE *)bits_32bppGrayFloat, 32, 2, 96.0, 96.0, &testdata_32bppGrayFloat_xp}; - - static const BYTE bits_8bppGray_xp[] = { -- 29,150,76,0, -- 226,105,179,255}; -+ 29,150,76,0,29,150,76,0,29,150,76,0,29,150,76,0, -+ 29,150,76,0,29,150,76,0,29,150,76,0,29,150,76,0, -+ 226,105,179,255,226,105,179,255,226,105,179,255,226,105,179,255, -+ 226,105,179,255,226,105,179,255,226,105,179,255,226,105,179,255}; - static const struct bitmap_data testdata_8bppGray_xp = { -- &GUID_WICPixelFormat8bppGray, 8, bits_8bppGray_xp, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat8bppGray, 8, bits_8bppGray_xp, 32, 2, 96.0, 96.0}; - - static const BYTE bits_8bppGray[] = { -- 76,220,127,0, -- 247,145,230,255}; -+ 76,220,127,0,76,220,127,0,76,220,127,0,76,220,127,0, -+ 76,220,127,0,76,220,127,0,76,220,127,0,76,220,127,0, -+ 247,145,230,255,247,145,230,255,247,145,230,255,247,145,230,255, -+ 247,145,230,255,247,145,230,255,247,145,230,255,247,145,230,255}; - static const struct bitmap_data testdata_8bppGray = { -- &GUID_WICPixelFormat8bppGray, 8, bits_8bppGray, 4, 2, 96.0, 96.0, &testdata_8bppGray_xp}; -+ &GUID_WICPixelFormat8bppGray, 8, bits_8bppGray, 32, 2, 96.0, 96.0, &testdata_8bppGray_xp}; - - static const BYTE bits_24bppBGR_gray[] = { -- 76,76,76, 220,220,220, 127,127,127, 0,0,0, -- 247,247,247, 145,145,145, 230,230,230, 255,255,255}; -+ 76,76,76, 220,220,220, 127,127,127, 0,0,0, 76,76,76, 220,220,220, 127,127,127, 0,0,0, -+ 76,76,76, 220,220,220, 127,127,127, 0,0,0, 76,76,76, 220,220,220, 127,127,127, 0,0,0, -+ 76,76,76, 220,220,220, 127,127,127, 0,0,0, 76,76,76, 220,220,220, 127,127,127, 0,0,0, -+ 76,76,76, 220,220,220, 127,127,127, 0,0,0, 76,76,76, 220,220,220, 127,127,127, 0,0,0, -+ 247,247,247, 145,145,145, 230,230,230, 255,255,255, 247,247,247, 145,145,145, 230,230,230, 255,255,255, -+ 247,247,247, 145,145,145, 230,230,230, 255,255,255, 247,247,247, 145,145,145, 230,230,230, 255,255,255, -+ 247,247,247, 145,145,145, 230,230,230, 255,255,255, 247,247,247, 145,145,145, 230,230,230, 255,255,255, -+ 247,247,247, 145,145,145, 230,230,230, 255,255,255, 247,247,247, 145,145,145, 230,230,230, 255,255,255}; - static const struct bitmap_data testdata_24bppBGR_gray = { -- &GUID_WICPixelFormat24bppBGR, 24, bits_24bppBGR_gray, 4, 2, 96.0, 96.0}; -+ &GUID_WICPixelFormat24bppBGR, 24, bits_24bppBGR_gray, 32, 2, 96.0, 96.0}; - - static void test_conversion(const struct bitmap_data *src, const struct bitmap_data *dst, const char *name, BOOL todo) - { -@@ -401,11 +517,12 @@ static void test_conversion(const struct bitmap_data *src, const struct bitmap_d - - hr = WICConvertBitmapSource(dst->format, &src_obj->IWICBitmapSource_iface, &dst_bitmap); - todo_wine_if (todo) -- ok(SUCCEEDED(hr), "WICConvertBitmapSource(%s) failed, hr=%x\n", name, hr); -+ ok(hr == S_OK || -+ broken(hr == E_INVALIDARG) /* XP */, "WICConvertBitmapSource(%s) failed, hr=%x\n", name, hr); - -- if (SUCCEEDED(hr)) -+ if (hr == S_OK) - { -- compare_bitmap_data(dst, dst_bitmap, name); -+ compare_bitmap_data(src, dst, dst_bitmap, name); - - IWICBitmapSource_Release(dst_bitmap); - } -@@ -453,7 +570,7 @@ static void test_default_converter(void) - ok(SUCCEEDED(hr), "Initialize returned %x\n", hr); - - if (SUCCEEDED(hr)) -- compare_bitmap_data(&testdata_32bppBGR, (IWICBitmapSource*)converter, "default converter"); -+ compare_bitmap_data(&testdata_32bppBGRA, &testdata_32bppBGR, (IWICBitmapSource*)converter, "default converter"); - - IWICFormatConverter_Release(converter); - } -@@ -752,7 +869,7 @@ static void check_tiff_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat4bppIndexed)) - { -- ok(width == 8, "wrong width %u\n", width); -+ ok(width == 32, "wrong width %u\n", width); - ok(height == 2, "wrong height %u\n", height); - - ok(bps == 4, "wrong bps %d\n", bps); -@@ -762,7 +879,7 @@ static void check_tiff_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat8bppIndexed)) - { -- ok(width == 4, "wrong width %u\n", width); -+ ok(width == 32, "wrong width %u\n", width); - ok(height == 2, "wrong height %u\n", height); - - ok(bps == 8, "wrong bps %d\n", bps); -@@ -772,7 +889,7 @@ static void check_tiff_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat24bppBGR)) - { -- ok(width == 4, "wrong width %u\n", width); -+ ok(width == 32, "wrong width %u\n", width); - ok(height == 2, "wrong height %u\n", height); - - ok(bps == 3, "wrong bps %d\n", bps); -@@ -790,7 +907,6 @@ static void check_bmp_format(IStream *stream, const WICPixelFormatGUID *format) - BITMAPFILEHEADER bfh; - BITMAPV5HEADER bih; - -- memset(&bfh, 0, sizeof(bfh)); - hr = IStream_Read(stream, &bfh, sizeof(bfh), NULL); - ok(hr == S_OK, "IStream_Read error %#x\n", hr); - -@@ -798,13 +914,12 @@ static void check_bmp_format(IStream *stream, const WICPixelFormatGUID *format) - ok(bfh.bfReserved1 == 0, "wrong bfReserved1 %02x\n", bfh.bfReserved1); - ok(bfh.bfReserved2 == 0, "wrong bfReserved2 %02x\n", bfh.bfReserved2); - -- memset(&bih, 0, sizeof(bih)); - hr = IStream_Read(stream, &bih, sizeof(bih), NULL); - ok(hr == S_OK, "IStream_Read error %#x\n", hr); - - if (IsEqualGUID(format, &GUID_WICPixelFormat1bppIndexed)) - { -- ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %02x\n", bfh.bfOffBits); -+ ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %08x\n", bfh.bfOffBits); - - ok(bih.bV5Width == 32, "wrong width %u\n", bih.bV5Width); - ok(bih.bV5Height == 2, "wrong height %u\n", bih.bV5Height); -@@ -816,9 +931,9 @@ static void check_bmp_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat4bppIndexed)) - { -- ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %02x\n", bfh.bfOffBits); -+ ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %08x\n", bfh.bfOffBits); - -- ok(bih.bV5Width == 8, "wrong width %u\n", bih.bV5Width); -+ ok(bih.bV5Width == 32, "wrong width %u\n", bih.bV5Width); - ok(bih.bV5Height == 2, "wrong height %u\n", bih.bV5Height); - - ok(bih.bV5Planes == 1, "wrong Planes %d\n", bih.bV5Planes); -@@ -828,9 +943,9 @@ static void check_bmp_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat8bppIndexed)) - { -- ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %02x\n", bfh.bfOffBits); -+ ok(bfh.bfOffBits == 0x0436, "wrong bfOffBits %08x\n", bfh.bfOffBits); - -- ok(bih.bV5Width == 4, "wrong width %u\n", bih.bV5Width); -+ ok(bih.bV5Width == 32, "wrong width %u\n", bih.bV5Width); - ok(bih.bV5Height == 2, "wrong height %u\n", bih.bV5Height); - - ok(bih.bV5Planes == 1, "wrong Planes %d\n", bih.bV5Planes); -@@ -840,9 +955,9 @@ static void check_bmp_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat32bppBGR)) - { -- ok(bfh.bfOffBits == 0x0036, "wrong bfOffBits %02x\n", bfh.bfOffBits); -+ ok(bfh.bfOffBits == 0x0036, "wrong bfOffBits %08x\n", bfh.bfOffBits); - -- ok(bih.bV5Width == 4, "wrong width %u\n", bih.bV5Width); -+ ok(bih.bV5Width == 32, "wrong width %u\n", bih.bV5Width); - ok(bih.bV5Height == 2, "wrong height %u\n", bih.bV5Height); - - ok(bih.bV5Planes == 1, "wrong Planes %d\n", bih.bV5Planes); -@@ -910,7 +1025,7 @@ static void check_png_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat2bppIndexed)) - { -- ok(be_uint(png.width) == 16, "wrong width %u\n", be_uint(png.width)); -+ ok(be_uint(png.width) == 32, "wrong width %u\n", be_uint(png.width)); - ok(be_uint(png.height) == 2, "wrong height %u\n", be_uint(png.height)); - - ok(png.bit_depth == 2, "wrong bit_depth %d\n", png.bit_depth); -@@ -921,7 +1036,7 @@ static void check_png_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat4bppIndexed)) - { -- ok(be_uint(png.width) == 8, "wrong width %u\n", be_uint(png.width)); -+ ok(be_uint(png.width) == 32, "wrong width %u\n", be_uint(png.width)); - ok(be_uint(png.height) == 2, "wrong height %u\n", be_uint(png.height)); - - ok(png.bit_depth == 4, "wrong bit_depth %d\n", png.bit_depth); -@@ -932,7 +1047,7 @@ static void check_png_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat8bppIndexed)) - { -- ok(be_uint(png.width) == 4, "wrong width %u\n", be_uint(png.width)); -+ ok(be_uint(png.width) == 32, "wrong width %u\n", be_uint(png.width)); - ok(be_uint(png.height) == 2, "wrong height %u\n", be_uint(png.height)); - - ok(png.bit_depth == 8, "wrong bit_depth %d\n", png.bit_depth); -@@ -943,7 +1058,7 @@ static void check_png_format(IStream *stream, const WICPixelFormatGUID *format) - } - else if (IsEqualGUID(format, &GUID_WICPixelFormat24bppBGR)) - { -- ok(be_uint(png.width) == 4, "wrong width %u\n", be_uint(png.width)); -+ ok(be_uint(png.width) == 32, "wrong width %u\n", be_uint(png.width)); - ok(be_uint(png.height) == 2, "wrong height %u\n", be_uint(png.height)); - - ok(png.bit_depth == 8, "wrong bit_depth %d\n", png.bit_depth); -@@ -1250,7 +1365,8 @@ static void test_multi_encoder(const struct bitmap_data **srcs, const CLSID* cls - hr = IWICBitmapEncoder_Commit(encoder); - ok(SUCCEEDED(hr), "Commit failed, hr=%x\n", hr); - -- check_bitmap_format(stream, clsid_encoder, dsts[0]->format); -+ if (IsEqualGUID(&pixelformat, dsts[0]->format)) -+ check_bitmap_format(stream, clsid_encoder, dsts[0]->format); - } - - if (SUCCEEDED(hr)) -@@ -1285,7 +1401,9 @@ static void test_multi_encoder(const struct bitmap_data **srcs, const CLSID* cls - - if (SUCCEEDED(hr)) - { -- compare_bitmap_data(dsts[i], (IWICBitmapSource*)framedecode, name); -+ hr = IWICBitmapFrameDecode_GetPixelFormat(framedecode, &pixelformat); -+ if (IsEqualGUID(&pixelformat, dsts[i]->format)) -+ compare_bitmap_data(srcs[i], dsts[i], (IWICBitmapSource*)framedecode, name); - - hr = IWICBitmapFrameDecode_CopyPalette(framedecode, frame_palette); - if (winetest_debug > 1) -@@ -1333,8 +1451,8 @@ static void test_multi_encoder(const struct bitmap_data **srcs, const CLSID* cls - else if (IsEqualGUID(clsid_decoder, &CLSID_WICBmpDecoder) || - IsEqualGUID(clsid_decoder, &CLSID_WICTiffDecoder)) - { -- if (IsEqualGUID(dsts[i]->format, &GUID_WICPixelFormatBlackWhite) || -- IsEqualGUID(dsts[i]->format, &GUID_WICPixelFormat8bppIndexed)) -+ if (IsEqualGUID(&pixelformat, &GUID_WICPixelFormatBlackWhite) || -+ IsEqualGUID(&pixelformat, &GUID_WICPixelFormat8bppIndexed)) - { - ok(count == 256, "expected 256, got %u (%s)\n", count, name); - -@@ -1345,7 +1463,7 @@ static void test_multi_encoder(const struct bitmap_data **srcs, const CLSID* cls - ok(colors[4] == 0xff555555, "got %08x (%s)\n", colors[4], name); - ok(colors[5] == 0xff000000, "got %08x (%s)\n", colors[5], name); - } -- else if (IsEqualGUID(dsts[i]->format, &GUID_WICPixelFormat4bppIndexed)) -+ else if (IsEqualGUID(&pixelformat, &GUID_WICPixelFormat4bppIndexed)) - { - ok(count == 16, "expected 16, got %u (%s)\n", count, name); - -@@ -1435,7 +1553,7 @@ static void test_encoder_rects(void) - - rc.X = 0; - rc.Y = 0; -- rc.Width = 4; -+ rc.Width = 32; - rc.Height = 2; - - test_multi_encoder(srcs, &CLSID_WICTiffEncoder, dsts, &CLSID_WICTiffDecoder, &rc, NULL, "test_encoder_rects full", NULL); -@@ -1446,7 +1564,7 @@ static void test_encoder_rects(void) - rc.Width = -1; - test_multi_encoder(srcs, &CLSID_WICTiffEncoder, dsts, &CLSID_WICTiffDecoder, &rc, NULL, "test_encoder_rects width=-1", NULL); - -- rc.Width = 4; -+ rc.Width = 32; - rc.Height = 0; - test_multi_encoder(srcs, &CLSID_WICTiffEncoder, dsts, &CLSID_WICTiffDecoder, &rc, NULL, "test_encoder_rects height=0", NULL); - -@@ -1478,6 +1596,16 @@ START_TEST(converter) - &IID_IWICImagingFactory, (void **)&factory); - ok(hr == S_OK, "failed to create factory: %#x\n", hr); - -+ test_conversion(&testdata_24bppRGB, &testdata_1bppIndexed, "24bppRGB -> 1bppIndexed", TRUE); -+ test_conversion(&testdata_24bppRGB, &testdata_2bppIndexed, "24bppRGB -> 2bppIndexed", TRUE); -+ test_conversion(&testdata_24bppRGB, &testdata_4bppIndexed, "24bppRGB -> 4bppIndexed", TRUE); -+ test_conversion(&testdata_24bppRGB, &testdata_8bppIndexed, "24bppRGB -> 8bppIndexed", FALSE); -+ -+ test_conversion(&testdata_BlackWhite, &testdata_8bppIndexed_BW, "BlackWhite -> 8bppIndexed", TRUE); -+ test_conversion(&testdata_1bppIndexed, &testdata_8bppIndexed_BW, "1bppIndexed -> 8bppIndexed", TRUE); -+ test_conversion(&testdata_2bppIndexed, &testdata_8bppIndexed_4colors, "2bppIndexed -> 8bppIndexed", TRUE); -+ test_conversion(&testdata_4bppIndexed, &testdata_8bppIndexed, "4bppIndexed -> 8bppIndexed", TRUE); -+ - test_conversion(&testdata_32bppBGRA, &testdata_32bppBGR, "BGRA -> BGR", FALSE); - test_conversion(&testdata_32bppBGR, &testdata_32bppBGRA, "BGR -> BGRA", FALSE); - test_conversion(&testdata_32bppBGRA, &testdata_32bppBGRA, "BGRA -> BGRA", FALSE); -@@ -1515,6 +1643,11 @@ START_TEST(converter) - &testdata_8bppIndexed, &CLSID_WICPngDecoder, "PNG encoder 8bppIndexed"); - test_encoder(&testdata_24bppBGR, &CLSID_WICPngEncoder, - &testdata_24bppBGR, &CLSID_WICPngDecoder, "PNG encoder 24bppBGR"); -+if (!strcmp(winetest_platform, "windows")) /* FIXME: enable once implemented in Wine */ -+{ -+ test_encoder(&testdata_32bppBGR, &CLSID_WICPngEncoder, -+ &testdata_24bppBGR, &CLSID_WICPngDecoder, "PNG encoder 32bppBGR"); -+} - - test_encoder(&testdata_BlackWhite, &CLSID_WICBmpEncoder, - &testdata_1bppIndexed, &CLSID_WICBmpDecoder, "BMP encoder BlackWhite"); --- -2.19.1 - diff --git a/patches/windowscodecs-GIF_Encoder/0025-windowscodecs-tests-Add-some-tests-for-converting-24.patch b/patches/windowscodecs-GIF_Encoder/0025-windowscodecs-tests-Add-some-tests-for-converting-24.patch deleted file mode 100644 index 027d449c..00000000 --- a/patches/windowscodecs-GIF_Encoder/0025-windowscodecs-tests-Add-some-tests-for-converting-24.patch +++ /dev/null @@ -1,189 +0,0 @@ -From e27b9d2889f424ecffabc57e449e995fab80274f Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov <dmitry@baikal.ru> -Date: Thu, 27 Oct 2016 15:13:24 +0800 -Subject: [PATCH] windowscodecs/tests: Add some tests for converting - 24bppBGR to 8bppIndexed format. - ---- - dlls/windowscodecs/tests/converter.c | 158 +++++++++++++++++++++++++++++++++++ - 1 file changed, 158 insertions(+) - -diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c -index 4eea13b..089926b 100644 ---- a/dlls/windowscodecs/tests/converter.c -+++ b/dlls/windowscodecs/tests/converter.c -@@ -1468,6 +1468,163 @@ static const struct setting png_interlace_settings[] = { - {NULL} - }; - -+static void test_converter_8bppIndexed(void) -+{ -+ HRESULT hr; -+ BitmapTestSrc *src_obj; -+ IWICFormatConverter *converter; -+ IWICPalette *palette; -+ UINT count, i; -+ BYTE buf[32 * 2 * 3]; /* enough to hold 32x2 24bppBGR data */ -+ -+ CreateTestBitmap(&testdata_24bppBGR, &src_obj); -+ -+ hr = IWICImagingFactory_CreatePalette(factory, &palette); -+ ok(hr == S_OK, "CreatePalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 0, "expected 0, got %u\n", count); -+ -+ /* NULL palette + Custom type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat24bppBGR, WICBitmapDitherTypeNone, -+ NULL, 0.0, WICBitmapPaletteTypeCustom); -+ ok(hr == S_OK, "Initialize error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == 0xdeadbeef, "unexpected error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32 * 3, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ IWICFormatConverter_Release(converter); -+ -+ /* NULL palette + Custom type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ NULL, 0.0, WICBitmapPaletteTypeCustom); -+ ok(hr == E_INVALIDARG, "unexpected error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == WINCODEC_ERR_WRONGSTATE, "unexpected error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == WINCODEC_ERR_WRONGSTATE, "unexpected error %#x\n", hr); -+ IWICFormatConverter_Release(converter); -+ -+ /* empty palette + Custom type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ palette, 0.0, WICBitmapPaletteTypeCustom); -+ ok(hr == S_OK, "Initialize error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == S_OK, "CopyPalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 0, "expected 0, got %u\n", count); -+ memset(buf, 0xaa, sizeof(buf)); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ count = 0; -+ for (i = 0; i < 32 * 2; i++) -+ if (buf[i] != 0) count++; -+ ok(count == 0, "expected 0\n"); -+ IWICFormatConverter_Release(converter); -+ -+ /* NULL palette + Predefined type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ NULL, 0.0, WICBitmapPaletteTypeFixedGray16); -+ ok(hr == S_OK, "Initialize error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == S_OK, "CopyPalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 16, "expected 16, got %u\n", count); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ count = 0; -+ for (i = 0; i < 32 * 2; i++) -+ if (buf[i] != 0) count++; -+ ok(count != 0, "expected != 0\n"); -+ IWICFormatConverter_Release(converter); -+ -+ /* not empty palette + Predefined type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ palette, 0.0, WICBitmapPaletteTypeFixedHalftone64); -+ ok(hr == S_OK, "Initialize error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == S_OK, "CopyPalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 16, "expected 16, got %u\n", count); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ count = 0; -+ for (i = 0; i < 32 * 2; i++) -+ if (buf[i] != 0) count++; -+ ok(count != 0, "expected != 0\n"); -+ IWICFormatConverter_Release(converter); -+ -+ /* not empty palette + MedianCut type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ palette, 0.0, WICBitmapPaletteTypeMedianCut); -+ ok(hr == S_OK, "Initialize error %#x\n", hr); -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == S_OK, "CopyPalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 16, "expected 16, got %u\n", count); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ count = 0; -+ for (i = 0; i < 32 * 2; i++) -+ if (buf[i] != 0) count++; -+ ok(count != 0, "expected != 0\n"); -+ IWICFormatConverter_Release(converter); -+ -+ /* NULL palette + MedianCut type*/ -+ hr = IWICImagingFactory_CreateFormatConverter(factory, &converter); -+ ok(hr == S_OK, "CreateFormatConverter error %#x\n", hr); -+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface, -+ &GUID_WICPixelFormat8bppIndexed, WICBitmapDitherTypeNone, -+ NULL, 0.0, WICBitmapPaletteTypeMedianCut); -+ ok(hr == S_OK || broken(hr == E_INVALIDARG) /* XP */, "Initialize error %#x\n", hr); -+ if (hr == S_OK) -+ { -+ hr = IWICFormatConverter_CopyPalette(converter, palette); -+ ok(hr == S_OK, "CopyPalette error %#x\n", hr); -+ count = 0xdeadbeef; -+ hr = IWICPalette_GetColorCount(palette, &count); -+ ok(hr == S_OK, "GetColorCount error %#x\n", hr); -+ ok(count == 8, "expected 8, got %u\n", count); -+ hr = IWICFormatConverter_CopyPixels(converter, NULL, 32, sizeof(buf), buf); -+ ok(hr == S_OK, "CopyPixels error %#x\n", hr); -+ count = 0; -+ for (i = 0; i < 32 * 2; i++) -+ if (buf[i] != 0) count++; -+ ok(count != 0, "expected != 0\n"); -+ } -+ IWICFormatConverter_Release(converter); -+ -+ IWICPalette_Release(palette); -+ DeleteTestBitmap(src_obj); -+} -+ - START_TEST(converter) - { - HRESULT hr; -@@ -1502,6 +1659,7 @@ START_TEST(converter) - - test_invalid_conversion(); - test_default_converter(); -+ test_converter_8bppIndexed(); - - test_encoder(&testdata_BlackWhite, &CLSID_WICPngEncoder, - &testdata_BlackWhite, &CLSID_WICPngDecoder, "PNG encoder BlackWhite"); --- -1.9.1 - diff --git a/patches/windowscodecs-GIF_Encoder/0027-windowscodecs-tests-Add-a-missing-check-for-IWICBitm.patch b/patches/windowscodecs-GIF_Encoder/0027-windowscodecs-tests-Add-a-missing-check-for-IWICBitm.patch deleted file mode 100644 index 7df83d87..00000000 --- a/patches/windowscodecs-GIF_Encoder/0027-windowscodecs-tests-Add-a-missing-check-for-IWICBitm.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 18eb6add9eac40d84a809d75d340600e44cc1dae Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov <dmitry@baikal.ru> -Date: Sun, 6 Nov 2016 16:25:12 +0800 -Subject: windowscodecs/tests: Add a missing check for - IWICBitmapFrameDecode::GetPixelFormat return value. - ---- - dlls/windowscodecs/tests/converter.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c -index 430c0ed..6d782f3 100644 ---- a/dlls/windowscodecs/tests/converter.c -+++ b/dlls/windowscodecs/tests/converter.c -@@ -1311,6 +1311,7 @@ static void test_multi_encoder(const struct bitmap_data **srcs, const CLSID* cls - if (SUCCEEDED(hr)) - { - hr = IWICBitmapFrameDecode_GetPixelFormat(framedecode, &pixelformat); -+ ok(hr == S_OK, "GetPixelFormat) failed, hr=%x (%s)\n", hr, name); - if (IsEqualGUID(&pixelformat, dsts[i]->format)) - compare_bitmap_data(srcs[i], dsts[i], (IWICBitmapSource*)framedecode, name); - --- -2.9.0 -