Module: wine Branch: master Commit: 4d30c057bf2aaad7985713cd98000756d2e6b61a URL: http://source.winehq.org/git/wine.git/?a=commit;h=4d30c057bf2aaad7985713cd98...
Author: Vincent Povirk vincent@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)