Vincent Povirk : windowscodecs: Implement WICSetEncoderFormat_Proxy.

Alexandre Julliard julliard at winehq.org
Tue Oct 29 15:12:25 CDT 2013


Module: wine
Branch: master
Commit: 4d30c057bf2aaad7985713cd98000756d2e6b61a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4d30c057bf2aaad7985713cd98000756d2e6b61a

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Mon Oct 28 16:43:22 2013 -0500

windowscodecs: Implement WICSetEncoderFormat_Proxy.

---

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

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)




More information about the wine-cvs mailing list