windowscodecs: Implement WICSetEncoderFormat_Proxy.

Vincent Povirk madewokherd at gmail.com
Mon Oct 28 16:49:24 CDT 2013


-------------- next part --------------
From bc6a46c8ae4fe8c6ad66888ffa0227216eab1f24 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Mon, 28 Oct 2013 16:43:22 -0500
Subject: [PATCH] windowscodecs: Implement WICSetEncoderFormat_Proxy.

---
 dlls/windowscodecs/proxy.c            | 40 +++++++++++++++++++++++++++++++++++
 dlls/windowscodecs/windowscodecs.spec |  2 +-
 2 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/dlls/windowscodecs/proxy.c b/dlls/windowscodecs/proxy.c
index 2f727b4..91fb6e6 100644
--- a/dlls/windowscodecs/proxy.c
+++ b/dlls/windowscodecs/proxy.c
@@ -633,3 +633,43 @@ HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT SDKVersion, IWICImagingFactory
 
     return ComponentFactory_CreateInstance(NULL, &IID_IWICImagingFactory, (void**)ppIImagingFactory);
 }
+
+HRESULT WINAPI WICSetEncoderFormat_Proxy(IWICBitmapSource *pSourceIn,
+    IWICPalette *pIPalette, IWICBitmapFrameEncode *pIFrameEncode,
+    IWICBitmapSource **ppSourceOut)
+{
+    HRESULT hr;
+    WICPixelFormatGUID pixelformat, framepixelformat;
+
+    TRACE("%p,%p,%p,%p\n", pSourceIn, pIPalette, pIFrameEncode, ppSourceOut);
+
+    if (pIPalette) FIXME("ignoring palette\n");
+
+    if (!pSourceIn || !pIFrameEncode || !ppSourceOut)
+        return E_INVALIDARG;
+
+    *ppSourceOut = NULL;
+
+    hr = IWICBitmapSource_GetPixelFormat(pSourceIn, &pixelformat);
+
+    if (SUCCEEDED(hr))
+    {
+        framepixelformat = pixelformat;
+        hr = IWICBitmapFrameEncode_SetPixelFormat(pIFrameEncode, &framepixelformat);
+    }
+
+    if (SUCCEEDED(hr))
+    {
+        if (IsEqualGUID(&pixelformat, &framepixelformat))
+        {
+            *ppSourceOut = pSourceIn;
+            IWICBitmapSource_AddRef(pSourceIn);
+        }
+        else
+        {
+            hr = WICConvertBitmapSource(&framepixelformat, pSourceIn, ppSourceOut);
+        }
+    }
+
+    return hr;
+}
diff --git a/dlls/windowscodecs/windowscodecs.spec b/dlls/windowscodecs/windowscodecs.spec
index 3d70084..9497aec 100644
--- a/dlls/windowscodecs/windowscodecs.spec
+++ b/dlls/windowscodecs/windowscodecs.spec
@@ -114,4 +114,4 @@
 @ stub WICMapShortNameToGuid
 @ stub WICMatchMetadataContent
 @ stub WICSerializeMetadataContent
-@ stub WICSetEncoderFormat_Proxy
+@ stdcall WICSetEncoderFormat_Proxy(ptr ptr ptr ptr)
-- 
1.8.1.2


More information about the wine-patches mailing list