Remove previous dxva2 patch (accepted upstream), added additional dxva2 implementation patches.

This commit is contained in:
Sebastian Lackner 2014-03-26 22:28:10 +01:00
parent 86c9842e64
commit 3c6c730333
9 changed files with 1656 additions and 133 deletions

View File

@ -1,129 +0,0 @@
From 6a0540157019fee86dab35dd5e5f8891aa93c3e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 24 Mar 2014 00:05:38 +0100
Subject: dxva2: Added stub dll.
---
configure.ac | 1 +
dlls/dxva2/Makefile.in | 4 ++++
dlls/dxva2/dxva2.spec | 37 +++++++++++++++++++++++++++++++++++++
dlls/dxva2/main.c | 40 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 82 insertions(+)
create mode 100644 dlls/dxva2/Makefile.in
create mode 100644 dlls/dxva2/dxva2.spec
create mode 100644 dlls/dxva2/main.c
diff --git a/configure.ac b/configure.ac
index fc425c6..34d2aa2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2889,6 +2889,7 @@ WINE_CONFIG_LIB(dxerr9)
WINE_CONFIG_DLL(dxgi,,[implib])
WINE_CONFIG_TEST(dlls/dxgi/tests)
WINE_CONFIG_LIB(dxguid)
+WINE_CONFIG_DLL(dxva2)
WINE_CONFIG_DLL(explorerframe,,[clean])
WINE_CONFIG_TEST(dlls/explorerframe/tests)
WINE_CONFIG_DLL(ext-ms-win-gdi-devcaps-l1-1-0)
diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
new file mode 100644
index 0000000..7b9ef6f
--- /dev/null
+++ b/dlls/dxva2/Makefile.in
@@ -0,0 +1,4 @@
+MODULE = dxva2.dll
+
+C_SRCS = \
+ main.c
diff --git a/dlls/dxva2/dxva2.spec b/dlls/dxva2/dxva2.spec
new file mode 100644
index 0000000..da94df3
--- /dev/null
+++ b/dlls/dxva2/dxva2.spec
@@ -0,0 +1,37 @@
+@ stub CapabilitiesRequestAndCapabilitiesReply
+@ stub DXVA2CreateDirect3DDeviceManager9
+@ stub DXVA2CreateVideoService
+@ stub DegaussMonitor
+@ stub DestroyPhysicalMonitor
+@ stub DestroyPhysicalMonitors
+@ stub GetCapabilitiesStringLength
+@ stub GetMonitorBrightness
+@ stub GetMonitorCapabilities
+@ stub GetMonitorColorTemperature
+@ stub GetMonitorContrast
+@ stub GetMonitorDisplayAreaPosition
+@ stub GetMonitorDisplayAreaSize
+@ stub GetMonitorRedGreenOrBlueDrive
+@ stub GetMonitorRedGreenOrBlueGain
+@ stub GetMonitorTechnologyType
+@ stub GetNumberOfPhysicalMonitorsFromHMONITOR
+@ stub GetNumberOfPhysicalMonitorsFromIDirect3DDevice9
+@ stub GetPhysicalMonitorsFromHMONITOR
+@ stub GetPhysicalMonitorsFromIDirect3DDevice9
+@ stub GetTimingReport
+@ stub GetVCPFeatureAndVCPFeatureReply
+@ stub OPMGetVideoOutputsFromHMONITOR
+@ stub OPMGetVideoOutputsFromIDirect3DDevice9Object
+@ stub RestoreMonitorFactoryColorDefaults
+@ stub RestoreMonitorFactoryDefaults
+@ stub SaveCurrentMonitorSettings
+@ stub SaveCurrentSettings
+@ stub SetMonitorBrightness
+@ stub SetMonitorColorTemperature
+@ stub SetMonitorContrast
+@ stub SetMonitorDisplayAreaPosition
+@ stub SetMonitorDisplayAreaSize
+@ stub SetMonitorRedGreenOrBlueDrive
+@ stub SetMonitorRedGreenOrBlueGain
+@ stub SetVCPFeature
+@ stub UABGetCertificate
diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
new file mode 100644
index 0000000..d16320f
--- /dev/null
+++ b/dlls/dxva2/main.c
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2014 Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dxva2);
+
+BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
+
+ switch (fdwReason) {
+ case DLL_WINE_PREATTACH:
+ return FALSE; /* prefer native version */
+ case DLL_PROCESS_ATTACH:
+ DisableThreadLibraryCalls(hinstDLL);
+ break;
+ }
+
+ return TRUE;
+}
--
1.8.3.2

View File

@ -0,0 +1,493 @@
From fea79238dba89c6233b58cbb86b3702f91f5be24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 21:09:24 +0100
Subject: include: Add dxva2api.idl
---
include/Makefile.in | 1 +
include/dxva2api.idl | 461 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 462 insertions(+)
create mode 100644 include/dxva2api.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index ebdc96b..d6997db 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -40,6 +40,7 @@ PUBLIC_IDL_H_SRCS = \
dwrite_1.idl \
dxgi.idl \
dxgi1_2.idl \
+ dxva2api.idl \
endpointvolume.idl \
exdisp.idl \
fusion.idl \
diff --git a/include/dxva2api.idl b/include/dxva2api.idl
new file mode 100644
index 0000000..274cccf
--- /dev/null
+++ b/include/dxva2api.idl
@@ -0,0 +1,461 @@
+/*
+ * Copyright Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+cpp_quote("#include <d3d9.h>")
+import "unknwn.idl";
+
+cpp_quote("#if 0")
+typedef DWORD IDirect3DDevice9;
+typedef DWORD IDirect3DSurface9;
+
+typedef DWORD D3DFORMAT;
+typedef DWORD D3DPOOL;
+cpp_quote("#endif")
+
+typedef LONGLONG REFERENCE_TIME;
+
+enum
+{
+ DXVA2_VideoDecoderRenderTarget = 0,
+ DXVA2_VideoProcessorRenderTarget = 1,
+ DXVA2_VideoSoftwareRenderTarget = 2
+};
+
+typedef struct _DXVA2_ExtendedFormat
+{
+ union
+ {
+ struct
+ {
+ UINT SampleFormat :8;
+ UINT VideoChromaSubsampling :4;
+ UINT NominalRange :3;
+ UINT VideoTransferMatrix :3;
+ UINT VideoLighting :4;
+ UINT VideoPrimaries :5;
+ UINT VideoTransferFunction :5;
+ };
+ UINT value;
+ };
+} DXVA2_ExtendedFormat;
+
+typedef struct _DXVA2_Frequency
+{
+ UINT Numerator;
+ UINT Denominator;
+} DXVA2_Frequency;
+
+typedef struct _DXVA2_ConfigPictureDecode
+{
+ GUID guidConfigBitstreamEncryption;
+ GUID guidConfigMBcontrolEncryption;
+ GUID guidConfigResidDiffEncryption;
+ UINT ConfigBitstreamRaw;
+ UINT ConfigMBcontrolRasterOrder;
+ UINT ConfigResidDiffHost;
+ UINT ConfigSpatialResid8;
+ UINT ConfigResid8Subtraction;
+ UINT ConfigSpatialHost8or9Clipping;
+ UINT ConfigSpatialResidInterleaved;
+ UINT ConfigIntraResidUnsigned;
+ UINT ConfigResidDiffAccelerator;
+ UINT ConfigHostInverseScan;
+ UINT ConfigSpecificIDCT;
+ UINT Config4GroupedCoefs;
+ UINT ConfigMinRenderTargetBuffCount;
+ USHORT ConfigDecoderSpecific;
+} DXVA2_ConfigPictureDecode;
+
+typedef struct _DXVA2_VideoDesc
+{
+ UINT SampleWidth;
+ UINT SampleHeight;
+ DXVA2_ExtendedFormat SampleFormat;
+ D3DFORMAT Format;
+ DXVA2_Frequency InputSampleFreq;
+ DXVA2_Frequency OutputFrameFreq;
+ UINT UABProtectionLevel;
+ UINT Reserved;
+} DXVA2_VideoDesc;
+
+typedef struct _DXVA2_DecodeBufferDesc
+{
+ DWORD CompressedBufferType;
+ UINT BufferIndex;
+ UINT DataOffset;
+ UINT DataSize;
+ UINT FirstMBaddress;
+ UINT NumMBsInBuffer;
+ UINT Width;
+ UINT Height;
+ UINT Stride;
+ UINT ReservedBits;
+ PVOID pvPVPState;
+} DXVA2_DecodeBufferDesc;
+
+typedef struct _DXVA2_DecodeExtensionData
+{
+ UINT Function;
+ PVOID pPrivateInputData;
+ UINT PrivateInputDataSize;
+ PVOID pPrivateOutputData;
+ UINT PrivateOutputDataSize;
+} DXVA2_DecodeExtensionData;
+
+typedef struct _DXVA2_DecodeExecuteParams
+{
+ UINT NumCompBuffers;
+ DXVA2_DecodeBufferDesc* pCompressedBuffers;
+ DXVA2_DecodeExtensionData* pExtensionData;
+} DXVA2_DecodeExecuteParams;
+
+typedef struct _DXVA2_VideoProcessorCaps
+{
+ UINT DeviceCaps;
+ D3DPOOL InputPool;
+ UINT NumForwardRefSamples;
+ UINT NumBackwardRefSamples;
+ UINT Reserved;
+ UINT DeinterlaceTechnology;
+ UINT ProcAmpControlCaps;
+ UINT VideoProcessorOperations;
+ UINT NoiseFilterTechnology;
+ UINT DetailFilterTechnology;
+} DXVA2_VideoProcessorCaps;
+
+typedef struct _DXVA2_Fixed32
+{
+ union
+ {
+ struct
+ {
+ USHORT Fraction;
+ SHORT Value;
+ };
+ LONG ll;
+ };
+} DXVA2_Fixed32;
+
+typedef struct _DXVA2_ValueRange
+{
+ DXVA2_Fixed32 MinValue;
+ DXVA2_Fixed32 MaxValue;
+ DXVA2_Fixed32 DefaultValue;
+ DXVA2_Fixed32 StepSize;
+} DXVA2_ValueRange;
+
+typedef struct _DXVA2_AYUVSample8
+{
+ UCHAR Cr;
+ UCHAR Cb;
+ UCHAR Y;
+ UCHAR Alpha;
+} DXVA2_AYUVSample8;
+
+typedef struct _DXVA2_AYUVSample16
+{
+ USHORT Cr;
+ USHORT Cb;
+ USHORT Y;
+ USHORT Alpha;
+} DXVA2_AYUVSample16;
+
+typedef struct _DXVA2_ProcAmpValues
+{
+ DXVA2_Fixed32 Brightness;
+ DXVA2_Fixed32 Contrast;
+ DXVA2_Fixed32 Hue;
+ DXVA2_Fixed32 Saturation;
+} DXVA2_ProcAmpValues;
+
+typedef struct _DXVA2_FilterValues
+{
+ DXVA2_Fixed32 Level;
+ DXVA2_Fixed32 Threshold;
+ DXVA2_Fixed32 Radius;
+} DXVA2_FilterValues;
+
+typedef struct _DXVA2_VideoProcessBltParams
+{
+ REFERENCE_TIME TargetFrame;
+ RECT TargetRect;
+ SIZE ConstrictionSize;
+ UINT StreamingFlags;
+ DXVA2_AYUVSample16 BackgroundColor;
+ DXVA2_ExtendedFormat DestFormat;
+ DXVA2_ProcAmpValues ProcAmpValues;
+ DXVA2_Fixed32 Alpha;
+ DXVA2_FilterValues NoiseFilterLuma;
+ DXVA2_FilterValues NoiseFilterChroma;
+ DXVA2_FilterValues DetailFilterLuma;
+ DXVA2_FilterValues DetailFilterChroma;
+ DWORD DestData;
+} DXVA2_VideoProcessBltParams;
+
+typedef struct _DXVA2_VideoSample
+{
+ REFERENCE_TIME Start;
+ REFERENCE_TIME End;
+ DXVA2_ExtendedFormat SampleFormat;
+ IDirect3DSurface9* SrcSurface;
+ RECT SrcRect;
+ RECT DstRect;
+ DXVA2_AYUVSample8 Pal[16];
+ DXVA2_Fixed32 PlanarAlpha;
+ DWORD SampleData;
+} DXVA2_VideoSample;
+
+interface IDirectXVideoDecoder;
+interface IDirectXVideoProcessor;
+
+/*****************************************************************************
+ * IDirect3DDeviceManager9 interface
+ */
+[
+ object,
+ uuid(a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75),
+ helpstring("IDirect3DDeviceManager9 Interface"),
+ local
+]
+interface IDirect3DDeviceManager9 : IUnknown
+{
+ HRESULT ResetDevice(
+ [in] IDirect3DDevice9* pDevice,
+ [in] UINT resetToken);
+
+ HRESULT OpenDeviceHandle(
+ [out] HANDLE* phDevice);
+
+ HRESULT CloseDeviceHandle(
+ [in] HANDLE hDevice);
+
+ HRESULT TestDevice(
+ [in] HANDLE hDevice);
+
+ HRESULT LockDevice(
+ [in] HANDLE hDevice,
+ [out] IDirect3DDevice9** ppDevice,
+ [in] BOOL fBlock);
+
+ HRESULT UnlockDevice(
+ [in] HANDLE hDevice,
+ [in] BOOL fSaveState);
+
+ HRESULT GetVideoService(
+ [in] HANDLE hDevice,
+ [in] REFIID riid,
+ [out] void** ppService);
+};
+
+/*****************************************************************************
+ * IDirectXVideoAccelerationService interface
+ */
+[
+ object,
+ uuid(fc51a550-d5e7-11d9-af55-00054e43ff02),
+ helpstring("IDirectXVideoAccelerationService Interface"),
+ local
+]
+interface IDirectXVideoAccelerationService : IUnknown
+{
+ HRESULT CreateSurface(
+ [in] UINT width,
+ [in] UINT height,
+ [in] UINT backBuffers,
+ [in] D3DFORMAT format,
+ [in] D3DPOOL pool,
+ [in] DWORD usage,
+ [in] DWORD dxvaType,
+ [out] IDirect3DSurface9 **ppSurface,
+ [in, out] HANDLE *pSharedHandle);
+};
+
+/*****************************************************************************
+ * IDirectXVideoDecoderService interface
+ */
+[
+ object,
+ uuid(fc51a551-d5e7-11d9-af55-00054e43ff02),
+ helpstring("IDirectXVideoDecoderService Interface"),
+ local
+]
+interface IDirectXVideoDecoderService : IDirectXVideoAccelerationService
+{
+ HRESULT CreateVideoDecoder(
+ [in] REFGUID guid,
+ [in] const DXVA2_VideoDesc *pVideoDesc,
+ [in] DXVA2_ConfigPictureDecode *pConfig,
+ [in] IDirect3DSurface9 **ppDecoderRenderTargets,
+ [in] UINT NumSurfaces,
+ [out] IDirectXVideoDecoder **ppDecode);
+
+ HRESULT GetDecoderConfigurations(
+ [in] REFGUID guid,
+ [in] const DXVA2_VideoDesc *pVideoDesc,
+ [in] IUnknown *pReserved,
+ [out] UINT *pCount,
+ [out] DXVA2_ConfigPictureDecode **ppConfigs);
+
+ HRESULT GetDecoderDeviceGuids(
+ [out] UINT *count,
+ [out] GUID **pGuids);
+
+ HRESULT GetDecoderRenderTargets(
+ [in] REFGUID guid,
+ [out] UINT *pCount,
+ [out] D3DFORMAT **pFormats);
+};
+
+/*****************************************************************************
+ * IDirectXVideoDecoder interface
+ */
+[
+ object,
+ uuid(f2b0810a-fd00-43c9-918c-df94e2d8ef7d),
+ helpstring("IDirectXVideoDecoder Interface"),
+ local
+]
+interface IDirectXVideoDecoder : IUnknown
+{
+ HRESULT GetVideoDecoderService(
+ [out] IDirectXVideoDecoderService** ppService);
+
+ HRESULT GetCreationParameters(
+ [out] GUID* pDeviceGuid,
+ [out] DXVA2_VideoDesc* pVideoDesc,
+ [out] DXVA2_ConfigPictureDecode* pConfig,
+ [out] IDirect3DSurface9*** pDecoderRenderTargets,
+ [out] UINT* pNumSurfaces);
+
+ HRESULT GetBuffer(
+ [in] UINT BufferType,
+ [out] void** ppBuffer,
+ [out] UINT* pBufferSize);
+
+ HRESULT ReleaseBuffer(
+ [in] UINT BufferType);
+
+ HRESULT BeginFrame(
+ [in] IDirect3DSurface9* pRenderTarget,
+ [in] void* pvPVPData);
+
+ HRESULT EndFrame(
+ [out] HANDLE* pHandleComplete);
+
+ HRESULT Execute(
+ [in] const DXVA2_DecodeExecuteParams* pExecuteParams);
+};
+
+/*****************************************************************************
+ * IDirectXVideoProcessorService interface
+ */
+[
+ object,
+ uuid(fc51a551-d5e7-11d9-af55-00054e43ff02),
+ helpstring("IDirectXVideoProcessorService Interface"),
+ local
+]
+interface IDirectXVideoProcessorService : IDirectXVideoAccelerationService
+{
+ HRESULT RegisterVideoProcessorSoftwareDevice(
+ [in] void* pCallbacks);
+
+ HRESULT GetVideoProcessorDeviceGuids(
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [out] UINT* pCount,
+ [out] GUID** pGuids);
+
+ HRESULT GetVideoProcessorRenderTargets(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [out] UINT* pCount,
+ [out] D3DFORMAT** pFormats);
+
+ HRESULT GetVideoProcessorSubStreamFormats(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [in] D3DFORMAT RenderTargetFormat,
+ [out] UINT* pCount,
+ [out] D3DFORMAT** pFormats);
+
+ HRESULT GetVideoProcessorCaps(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [in] D3DFORMAT RenderTargetFormat,
+ [out] DXVA2_VideoProcessorCaps* pCaps);
+
+ HRESULT GetProcAmpRange(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [in] D3DFORMAT RenderTargetFormat,
+ [in] UINT ProcAmpCap,
+ [out] DXVA2_ValueRange* pRange);
+
+ HRESULT GetFilterPropertyRange(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [in] D3DFORMAT renderTargetFormat,
+ [in] UINT FilterSetting,
+ [out] DXVA2_ValueRange* pRange);
+
+ HRESULT CreateVideoProcessor(
+ [in] REFGUID VideoProcDeviceGuid,
+ [in] const DXVA2_VideoDesc* pVideoDesc,
+ [in] D3DFORMAT RenderTargetFormat,
+ [in] UINT MaxNumSubStreams,
+ [out] IDirectXVideoProcessor** ppVidProcess);
+};
+
+/*****************************************************************************
+ * IDirectXVideoProcessor interface
+ */
+[
+ object,
+ uuid(8c3a39f0-916e-4690-804f-4c8001355d25),
+ helpstring("IDirectXVideoProcessor Interface"),
+ local
+]
+interface IDirectXVideoProcessor : IUnknown
+{
+ HRESULT GetVideoProcessorService(
+ [out] IDirectXVideoProcessorService** ppService);
+
+ HRESULT GetCreationParameters(
+ [out] GUID* pDeviceGuid,
+ [out] DXVA2_VideoDesc* pVideoDesc,
+ [out] D3DFORMAT* pRenderTargetFormat,
+ [out] UINT* pMaxNumSubStreams);
+
+ HRESULT GetVideoProcessorCaps(
+ [out] DXVA2_VideoProcessorCaps* pCaps);
+
+ HRESULT GetProcAmpRange(
+ [in] UINT ProcAmpCap,
+ [out] DXVA2_ValueRange* pRange);
+
+ HRESULT GetFilterPropertyRange(
+ [in] UINT FilterSetting,
+ [out] DXVA2_ValueRange* pRange);
+
+ HRESULT VideoProcessBlt(
+ [in] IDirect3DSurface9* pRenderTarget,
+ [in] const DXVA2_VideoProcessBltParams* pBltParams,
+ [in] const DXVA2_VideoSample* pSamples,
+ [in] UINT NumSamples,
+ [out] HANDLE* pHandleCompleteIDirect3DDeviceManager9);
+};
--
1.7.9.5

View File

@ -0,0 +1,60 @@
From e9681f3d80f1900071d56a5a008424453f39a304 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 05:20:09 +0100
Subject: include: Add PhysicalMonitorEnumerationAPI.h
---
include/Makefile.in | 1 +
include/PhysicalMonitorEnumerationAPI.h | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 include/PhysicalMonitorEnumerationAPI.h
diff --git a/include/Makefile.in b/include/Makefile.in
index d6997db..fd4f7c1 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -475,6 +475,7 @@ SRCDIR_INCLUDES = \
patchapi.h \
pdh.h \
pdhmsg.h \
+ PhysicalMonitorEnumerationAPI.h \
pktdef.h \
poppack.h \
powrprof.h \
diff --git a/include/PhysicalMonitorEnumerationAPI.h b/include/PhysicalMonitorEnumerationAPI.h
new file mode 100644
index 0000000..33b1c68
--- /dev/null
+++ b/include/PhysicalMonitorEnumerationAPI.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <windows.h>
+
+#define PHYSICAL_MONITOR_DESCRIPTION_SIZE 128
+
+typedef struct _PHYSICAL_MONITOR
+{
+ HANDLE hPhysicalMonitor;
+ WCHAR szPhysicalMonitorDescription[PHYSICAL_MONITOR_DESCRIPTION_SIZE];
+} PHYSICAL_MONITOR, *LPPHYSICAL_MONITOR;
\ No newline at end of file
--
1.7.9.5

View File

@ -0,0 +1,62 @@
From 1e3a30b0fac3c5a9d8283f404334ade4e4f44104 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 05:24:03 +0100
Subject: include: Add LowLevelMonitorConfigurationAPI.h
---
include/LowLevelMonitorConfigurationAPI.h | 30 +++++++++++++++++++++++++++++
include/Makefile.in | 1 +
2 files changed, 31 insertions(+)
create mode 100644 include/LowLevelMonitorConfigurationAPI.h
diff --git a/include/LowLevelMonitorConfigurationAPI.h b/include/LowLevelMonitorConfigurationAPI.h
new file mode 100644
index 0000000..dda1174
--- /dev/null
+++ b/include/LowLevelMonitorConfigurationAPI.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+typedef struct _MC_TIMING_REPORT
+{
+ BYTE bTimingStatusByte;
+ DWORD dwHorizontalFrequencyInHZ;
+ DWORD dwVerticalFrequencyInHZ;
+} MC_TIMING_REPORT, *LPMC_TIMING_REPORT;
+
+typedef enum _MC_VCP_CODE_TYPE
+{
+ MC_MOMENTARY,
+ MC_SET_PARAMETER
+} MC_VCP_CODE_TYPE, *LPMC_VCP_CODE_TYPE;
diff --git a/include/Makefile.in b/include/Makefile.in
index fd4f7c1..ce30aa6 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -373,6 +373,7 @@ SRCDIR_INCLUDES = \
lmuseflg.h \
lmwksta.h \
loadperf.h \
+ LowLevelMonitorConfigurationAPI.h \
lzexpand.h \
mapi.h \
mapicode.h \
--
1.7.9.5

View File

@ -0,0 +1,101 @@
From 505fa26a6bf60858f35c45982fefcba41cd27d5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 05:26:25 +0100
Subject: include: Add HighLevelMonitorConfigurationAPI.h
---
include/HighLevelMonitorConfigurationAPI.h | 69 ++++++++++++++++++++++++++++
include/Makefile.in | 1 +
2 files changed, 70 insertions(+)
create mode 100644 include/HighLevelMonitorConfigurationAPI.h
diff --git a/include/HighLevelMonitorConfigurationAPI.h b/include/HighLevelMonitorConfigurationAPI.h
new file mode 100644
index 0000000..edcc1d2
--- /dev/null
+++ b/include/HighLevelMonitorConfigurationAPI.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+typedef enum _MC_COLOR_TEMPERATURE
+{
+ MC_COLOR_TEMPERATURE_UNKNOWN,
+ MC_COLOR_TEMPERATURE_4000K,
+ MC_COLOR_TEMPERATURE_5000K,
+ MC_COLOR_TEMPERATURE_6500K,
+ MC_COLOR_TEMPERATURE_7500K,
+ MC_COLOR_TEMPERATURE_8200K,
+ MC_COLOR_TEMPERATURE_9300K,
+ MC_COLOR_TEMPERATURE_10000K,
+ MC_COLOR_TEMPERATURE_11500K
+} MC_COLOR_TEMPERATURE, *LPMC_COLOR_TEMPERATURE;
+
+typedef enum _MC_POSITION_TYPE
+{
+ MC_HORIZONTAL_POSITION = 0,
+ MC_VERTICAL_POSITION = 1
+} MC_POSITION_TYPE;
+
+typedef enum _MC_SIZE_TYPE
+{
+ MC_WIDTH = 0,
+ MC_HEIGHT = 1
+} MC_SIZE_TYPE;
+
+typedef enum _MC_DRIVE_TYPE
+{
+ MC_RED_DRIVE = 0,
+ MC_GREEN_DRIVE = 1,
+ MC_BLUE_DRIVE = 2
+} MC_DRIVE_TYPE;
+
+typedef enum _MC_GAIN_TYPE
+{
+ MC_RED_GAIN = 0,
+ MC_GREEN_GAIN = 1,
+ MC_BLUE_GAIN = 2
+} MC_GAIN_TYPE;
+
+typedef enum _MC_DISPLAY_TECHNOLOGY_TYPE
+{
+ MC_SHADOW_MASK_CATHODE_RAY_TUBE,
+ MC_APERTURE_GRILL_CATHODE_RAY_TUBE,
+ MC_THIN_FILM_TRANSISTOR,
+ MC_LIQUID_CRYSTAL_ON_SILICON,
+ MC_PLASMA,
+ MC_ORGANIC_LIGHT_EMITTING_DIODE,
+ MC_ELECTROLUMINESCENT,
+ MC_MICROELECTROMECHANICAL,
+ MC_FIELD_EMISSION_DEVICE
+} MC_DISPLAY_TECHNOLOGY_TYPE, *LPMC_DISPLAY_TECHNOLOGY_TYPE;
diff --git a/include/Makefile.in b/include/Makefile.in
index ce30aa6..da8e75d 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -330,6 +330,7 @@ SRCDIR_INCLUDES = \
gdipluspixelformats.h \
gdiplustypes.h \
guiddef.h \
+ HighLevelMonitorConfigurationAPI.h \
hlguids.h \
htmlhelp.h \
http.h \
--
1.7.9.5

View File

@ -0,0 +1,400 @@
From 1c3379da1c8615f03acce7c441b3d511245212eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 05:32:36 +0100
Subject: dxva2: Add implementation for stub functions
---
dlls/dxva2/dxva2.spec | 72 ++++++------
dlls/dxva2/main.c | 295 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 331 insertions(+), 36 deletions(-)
diff --git a/dlls/dxva2/dxva2.spec b/dlls/dxva2/dxva2.spec
index da94df3..024a972 100644
--- a/dlls/dxva2/dxva2.spec
+++ b/dlls/dxva2/dxva2.spec
@@ -1,37 +1,37 @@
-@ stub CapabilitiesRequestAndCapabilitiesReply
-@ stub DXVA2CreateDirect3DDeviceManager9
-@ stub DXVA2CreateVideoService
-@ stub DegaussMonitor
-@ stub DestroyPhysicalMonitor
-@ stub DestroyPhysicalMonitors
-@ stub GetCapabilitiesStringLength
-@ stub GetMonitorBrightness
-@ stub GetMonitorCapabilities
-@ stub GetMonitorColorTemperature
-@ stub GetMonitorContrast
-@ stub GetMonitorDisplayAreaPosition
-@ stub GetMonitorDisplayAreaSize
-@ stub GetMonitorRedGreenOrBlueDrive
-@ stub GetMonitorRedGreenOrBlueGain
-@ stub GetMonitorTechnologyType
-@ stub GetNumberOfPhysicalMonitorsFromHMONITOR
-@ stub GetNumberOfPhysicalMonitorsFromIDirect3DDevice9
-@ stub GetPhysicalMonitorsFromHMONITOR
-@ stub GetPhysicalMonitorsFromIDirect3DDevice9
-@ stub GetTimingReport
-@ stub GetVCPFeatureAndVCPFeatureReply
-@ stub OPMGetVideoOutputsFromHMONITOR
-@ stub OPMGetVideoOutputsFromIDirect3DDevice9Object
-@ stub RestoreMonitorFactoryColorDefaults
-@ stub RestoreMonitorFactoryDefaults
-@ stub SaveCurrentMonitorSettings
-@ stub SaveCurrentSettings
-@ stub SetMonitorBrightness
-@ stub SetMonitorColorTemperature
-@ stub SetMonitorContrast
-@ stub SetMonitorDisplayAreaPosition
-@ stub SetMonitorDisplayAreaSize
-@ stub SetMonitorRedGreenOrBlueDrive
-@ stub SetMonitorRedGreenOrBlueGain
-@ stub SetVCPFeature
+@ stdcall CapabilitiesRequestAndCapabilitiesReply(ptr ptr long)
+@ stdcall DXVA2CreateDirect3DDeviceManager9(ptr ptr)
+@ stdcall DXVA2CreateVideoService(ptr ptr ptr)
+@ stdcall DegaussMonitor(ptr)
+@ stdcall DestroyPhysicalMonitor(ptr)
+@ stdcall DestroyPhysicalMonitors(long ptr)
+@ stdcall GetCapabilitiesStringLength(ptr ptr)
+@ stdcall GetMonitorBrightness(ptr ptr ptr ptr)
+@ stdcall GetMonitorCapabilities(ptr ptr ptr)
+@ stdcall GetMonitorColorTemperature(ptr ptr)
+@ stdcall GetMonitorContrast(ptr ptr ptr ptr)
+@ stdcall GetMonitorDisplayAreaPosition(ptr long ptr ptr ptr)
+@ stdcall GetMonitorDisplayAreaSize(ptr long ptr ptr ptr)
+@ stdcall GetMonitorRedGreenOrBlueDrive(ptr long ptr ptr ptr)
+@ stdcall GetMonitorRedGreenOrBlueGain(ptr long ptr ptr ptr)
+@ stdcall GetMonitorTechnologyType(ptr ptr)
+@ stdcall GetNumberOfPhysicalMonitorsFromHMONITOR(ptr ptr)
+@ stdcall GetNumberOfPhysicalMonitorsFromIDirect3DDevice9(ptr ptr)
+@ stdcall GetPhysicalMonitorsFromHMONITOR(ptr long ptr)
+@ stdcall GetPhysicalMonitorsFromIDirect3DDevice9(ptr long ptr)
+@ stdcall GetTimingReport(ptr ptr)
+@ stdcall GetVCPFeatureAndVCPFeatureReply(ptr long ptr ptr ptr)
+@ stdcall OPMGetVideoOutputsFromHMONITOR(ptr long ptr ptr)
+@ stdcall OPMGetVideoOutputsFromIDirect3DDevice9Object(ptr long ptr ptr)
+@ stdcall RestoreMonitorFactoryColorDefaults(ptr)
+@ stdcall RestoreMonitorFactoryDefaults(ptr)
+@ stdcall SaveCurrentMonitorSettings(ptr)
+@ stdcall SaveCurrentSettings(ptr)
+@ stdcall SetMonitorBrightness(ptr long)
+@ stdcall SetMonitorColorTemperature(ptr long)
+@ stdcall SetMonitorContrast(ptr long)
+@ stdcall SetMonitorDisplayAreaPosition(ptr long long)
+@ stdcall SetMonitorDisplayAreaSize(ptr long long)
+@ stdcall SetMonitorRedGreenOrBlueDrive(ptr long long)
+@ stdcall SetMonitorRedGreenOrBlueGain(ptr long long)
+@ stdcall SetVCPFeature(ptr long long)
@ stub UABGetCertificate
diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index d16320f..f22e5d1 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -21,9 +21,304 @@
#include "winbase.h"
#include "wine/debug.h"
+#include "dxva2api.h"
+#include "PhysicalMonitorEnumerationAPI.h"
+#include "LowLevelMonitorConfigurationAPI.h"
+#include "HighLevelMonitorConfigurationAPI.h"
WINE_DEFAULT_DEBUG_CHANNEL(dxva2);
+BOOL WINAPI CapabilitiesRequestAndCapabilitiesReply( HMONITOR monitor, LPSTR buffer, DWORD length )
+{
+ FIXME("(%p, %p, %d): stub\n", monitor, buffer, length);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9( UINT *resetToken, IDirect3DDeviceManager9 **dxvManager )
+{
+ FIXME("(%p, %p): stub\n", resetToken, dxvManager);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI DXVA2CreateVideoService( IDirect3DDevice9 *device, REFIID riid, void **ppv )
+{
+ FIXME("(%p, %s, %p): stub\n", device, debugstr_guid(riid), ppv);
+
+ return E_NOTIMPL;
+}
+
+BOOL WINAPI DegaussMonitor( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI DestroyPhysicalMonitor( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI DestroyPhysicalMonitors( DWORD arraySize, LPPHYSICAL_MONITOR array )
+{
+ FIXME("(0x%x, %p): stub\n", arraySize, array);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetCapabilitiesStringLength( HMONITOR monitor, LPDWORD length )
+{
+ FIXME("(%p, %p): stub\n", monitor, length);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorBrightness( HMONITOR monitor, LPDWORD minimum, LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, %p, %p, %p): stub\n", monitor, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorCapabilities( HMONITOR monitor, LPDWORD capabilities, LPDWORD temperatures )
+{
+ FIXME("(%p, %p, %p): stub\n", monitor, capabilities, temperatures);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+
+BOOL WINAPI GetMonitorColorTemperature( HMONITOR monitor, LPMC_COLOR_TEMPERATURE temperature )
+{
+ FIXME("(%p, %p): stub\n", monitor, temperature);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorContrast( HMONITOR monitor, LPDWORD minimum, LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, %p, %p, %p): stub\n", monitor, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorDisplayAreaPosition( HMONITOR monitor, MC_POSITION_TYPE type, LPDWORD minimum,
+ LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorDisplayAreaSize( HMONITOR monitor, MC_SIZE_TYPE type, LPDWORD minimum,
+ LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorRedGreenOrBlueDrive( HMONITOR monitor, MC_DRIVE_TYPE type, LPDWORD minimum,
+ LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorRedGreenOrBlueGain( HMONITOR monitor, MC_GAIN_TYPE type, LPDWORD minimum,
+ LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetMonitorTechnologyType( HMONITOR monitor, LPMC_DISPLAY_TECHNOLOGY_TYPE type )
+{
+ FIXME("(%p, %p): stub\n", monitor, type);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetNumberOfPhysicalMonitorsFromHMONITOR( HMONITOR monitor, LPDWORD number )
+{
+ FIXME("(%p, %p): stub\n", monitor, number);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+HRESULT WINAPI GetNumberOfPhysicalMonitorsFromIDirect3DDevice9( IDirect3DDevice9 *device, LPDWORD number )
+{
+ FIXME("(%p, %p): stub\n", device, number);
+
+ return E_NOTIMPL;
+}
+
+BOOL WINAPI GetPhysicalMonitorsFromHMONITOR( HMONITOR monitor, DWORD arraySize, LPPHYSICAL_MONITOR array )
+{
+ FIXME("(%p, 0x%x, %p): stub\n", monitor, arraySize, array);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+HRESULT WINAPI GetPhysicalMonitorsFromIDirect3DDevice9( IDirect3DDevice9 *device, DWORD arraySize, LPPHYSICAL_MONITOR array )
+{
+ FIXME("(%p, 0x%x, %p): stub\n", device, arraySize, array);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetTimingReport( HMONITOR monitor, LPMC_TIMING_REPORT timingReport )
+{
+ FIXME("(%p, %p): stub\n", monitor, timingReport);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI GetVCPFeatureAndVCPFeatureReply( HMONITOR monitor, BYTE vcpCode, LPMC_VCP_CODE_TYPE pvct,
+ LPDWORD current, LPDWORD maximum )
+{
+ FIXME("(%p, 0x%02x, %p, %p, %p): stub\n", monitor, vcpCode, pvct, current, maximum);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+HRESULT WINAPI OPMGetVideoOutputsFromHMONITOR( HMONITOR monitor, /* OPM_VIDEO_OUTPUT_SEMANTICS */ int vos,
+ ULONG *numVideoOutputs, /* IOPMVideoOutput */ void ***videoOutputs )
+{
+ FIXME("(%p, 0x%x, %p, %p): stub\n", monitor, vos, numVideoOutputs, videoOutputs);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI OPMGetVideoOutputsFromIDirect3DDevice9Object( IDirect3DDevice9 *device, /* OPM_VIDEO_OUTPUT_SEMANTICS */ int vos,
+ ULONG *numVideoOutputs, /* IOPMVideoOutput */ void ***videoOutputs )
+{
+ FIXME("(%p, 0x%x, %p, %p): stub\n", device, vos, numVideoOutputs, videoOutputs);
+
+ return E_NOTIMPL;
+}
+
+BOOL WINAPI RestoreMonitorFactoryColorDefaults( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI RestoreMonitorFactoryDefaults( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SaveCurrentMonitorSettings( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SaveCurrentSettings( HMONITOR monitor )
+{
+ FIXME("(%p): stub\n", monitor);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorBrightness( HMONITOR monitor, DWORD brightness )
+{
+ FIXME("(%p, 0x%x): stub\n", monitor, brightness);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorColorTemperature( HMONITOR monitor, MC_COLOR_TEMPERATURE temperature )
+{
+ FIXME("(%p, 0x%x): stub\n", monitor, temperature);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorContrast( HMONITOR monitor, DWORD contrast )
+{
+ FIXME("(%p, 0x%x): stub\n", monitor, contrast);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorDisplayAreaPosition( HMONITOR monitor, MC_POSITION_TYPE type, DWORD position )
+{
+ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, position);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorDisplayAreaSize( HMONITOR monitor, MC_SIZE_TYPE type, DWORD size )
+{
+ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, size);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorRedGreenOrBlueDrive( HMONITOR monitor, MC_DRIVE_TYPE type, DWORD drive )
+{
+ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, drive);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetMonitorRedGreenOrBlueGain( HMONITOR monitor, MC_GAIN_TYPE type, DWORD gain )
+{
+ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, gain);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+BOOL WINAPI SetVCPFeature( HMONITOR monitor, BYTE vcpCode, DWORD value )
+{
+ FIXME("(%p, 0x%02x, 0x%x): stub\n", monitor, vcpCode, value);
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
--
1.7.9.5

View File

@ -0,0 +1,537 @@
From a2ecf8ef503fea27bc72a6d0e690d43a5c44be54 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 26 Mar 2014 22:23:52 +0100
Subject: dxva2: Implement stubs for IDirectXVideo{Acceleration, Decoder,
Processor}Service interfaces
---
dlls/dxva2/Makefile.in | 4 +-
dlls/dxva2/dxva2_private.h | 3 +
dlls/dxva2/main.c | 5 +-
dlls/dxva2/videoservices.c | 467 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 476 insertions(+), 3 deletions(-)
create mode 100644 dlls/dxva2/dxva2_private.h
create mode 100644 dlls/dxva2/videoservices.c
diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
index 7b9ef6f..4b4d24f 100644
--- a/dlls/dxva2/Makefile.in
+++ b/dlls/dxva2/Makefile.in
@@ -1,4 +1,6 @@
MODULE = dxva2.dll
+IMPORTS = ole32
C_SRCS = \
- main.c
+ main.c \
+ videoservices.c
diff --git a/dlls/dxva2/dxva2_private.h b/dlls/dxva2/dxva2_private.h
new file mode 100644
index 0000000..55e84c2
--- /dev/null
+++ b/dlls/dxva2/dxva2_private.h
@@ -0,0 +1,3 @@
+#include "dxva2api.h"
+
+HRESULT videoservices_create( IDirect3DDevice9 *device, REFIID riid, void **ppv );
\ No newline at end of file
diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c
index f22e5d1..7d23d1f 100644
--- a/dlls/dxva2/main.c
+++ b/dlls/dxva2/main.c
@@ -22,6 +22,7 @@
#include "wine/debug.h"
#include "dxva2api.h"
+#include "dxva2_private.h"
#include "PhysicalMonitorEnumerationAPI.h"
#include "LowLevelMonitorConfigurationAPI.h"
#include "HighLevelMonitorConfigurationAPI.h"
@@ -45,9 +46,9 @@ HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9( UINT *resetToken, IDirect3DDev
HRESULT WINAPI DXVA2CreateVideoService( IDirect3DDevice9 *device, REFIID riid, void **ppv )
{
- FIXME("(%p, %s, %p): stub\n", device, debugstr_guid(riid), ppv);
+ TRACE("(%p, %s, %p)\n", device, debugstr_guid(riid), ppv);
- return E_NOTIMPL;
+ return videoservices_create( device, riid, ppv );
}
BOOL WINAPI DegaussMonitor( HMONITOR monitor )
diff --git a/dlls/dxva2/videoservices.c b/dlls/dxva2/videoservices.c
new file mode 100644
index 0000000..0374260
--- /dev/null
+++ b/dlls/dxva2/videoservices.c
@@ -0,0 +1,467 @@
+/*
+ * Copyright 2014 Michael Müller for Pipelight
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+#define INITGUID
+
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+
+#include "wine/debug.h"
+#include "dxva2api.h"
+#include "dxva2_private.h"
+#include "PhysicalMonitorEnumerationAPI.h"
+#include "LowLevelMonitorConfigurationAPI.h"
+#include "HighLevelMonitorConfigurationAPI.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dxva2);
+
+/*****************************************************************************
+ * IDirectXVideoAccelerationService interface
+ */
+
+typedef struct
+{
+ const IDirectXVideoAccelerationServiceVtbl* lpVtbl;
+ LONG refCount;
+} DirectXVideoAccelerationServiceImpl;
+
+static inline DirectXVideoAccelerationServiceImpl *impl_from_IDirectXVideoAccelerationService( IDirectXVideoAccelerationService *iface )
+{
+ return (DirectXVideoAccelerationServiceImpl *)iface;
+}
+
+static HRESULT WINAPI DirectXVideoAccelerationService_QueryInterface( IDirectXVideoAccelerationService *iface, REFIID riid, LPVOID *ppv )
+{
+ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface);
+ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv);
+
+ *ppv = NULL;
+
+ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoAccelerationService))
+ *ppv = (LPVOID)iface;
+
+ if (*ppv)
+ {
+ IUnknown_AddRef((IUnknown *)(*ppv));
+ return S_OK;
+ }
+
+ FIXME("No interface for %s\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI DirectXVideoAccelerationService_AddRef( IDirectXVideoAccelerationService *iface )
+{
+ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface);
+ ULONG refCount = InterlockedIncrement(&This->refCount);
+
+ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1);
+
+ return refCount;
+}
+
+static ULONG WINAPI DirectXVideoAccelerationService_Release( IDirectXVideoAccelerationService *iface )
+{
+ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface);
+ ULONG refCount = InterlockedDecrement(&This->refCount);
+
+ TRACE("(%p)->() Release from %d\n", This, refCount + 1);
+
+ if (!refCount)
+ {
+ TRACE("Destroying\n");
+ CoTaskMemFree(This);
+ }
+
+ return refCount;
+}
+
+static HRESULT WINAPI DirectXVideoAccelerationService_CreateSurface( IDirectXVideoAccelerationService *iface, UINT width, UINT height,
+ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage,
+ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle )
+{
+ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface);
+
+ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n",
+ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle);
+
+ return E_NOTIMPL;
+}
+
+static const IDirectXVideoAccelerationServiceVtbl DirectXVideoAccelerationService_VTable =
+{
+ DirectXVideoAccelerationService_QueryInterface,
+ DirectXVideoAccelerationService_AddRef,
+ DirectXVideoAccelerationService_Release,
+ DirectXVideoAccelerationService_CreateSurface
+};
+
+
+/*****************************************************************************
+ * IDirectXVideoDecoderService interface
+ */
+
+typedef struct
+{
+ const IDirectXVideoDecoderServiceVtbl* lpVtbl;
+ LONG refCount;
+} DirectXVideoDecoderServiceImpl;
+
+static inline DirectXVideoDecoderServiceImpl *impl_from_IDirectXVideoDecoderService( IDirectXVideoDecoderService *iface )
+{
+ return (DirectXVideoDecoderServiceImpl *)iface;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_QueryInterface( IDirectXVideoDecoderService *iface, REFIID riid, LPVOID * ppv )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv);
+
+ *ppv = NULL;
+
+ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoDecoderService))
+ *ppv = (LPVOID)iface;
+
+ if (*ppv)
+ {
+ IUnknown_AddRef((IUnknown *)(*ppv));
+ return S_OK;
+ }
+
+ FIXME("No interface for %s\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI DirectXVideoDecoderService_AddRef( IDirectXVideoDecoderService *iface )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+ ULONG refCount = InterlockedIncrement(&This->refCount);
+
+ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1);
+
+ return refCount;
+}
+
+static ULONG WINAPI DirectXVideoDecoderService_Release( IDirectXVideoDecoderService *iface )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+ ULONG refCount = InterlockedDecrement(&This->refCount);
+
+ TRACE("(%p)->() Release from %d\n", This, refCount + 1);
+
+ if (!refCount)
+ {
+ TRACE("Destroying\n");
+ CoTaskMemFree(This);
+ }
+
+ return refCount;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_CreateSurface( IDirectXVideoDecoderService *iface, UINT width, UINT height,
+ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage,
+ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+
+ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n",
+ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_CreateVideoDecoder( IDirectXVideoDecoderService *iface, REFGUID guid, const DXVA2_VideoDesc *pVideoDesc,
+ DXVA2_ConfigPictureDecode *pConfig, IDirect3DSurface9 **ppDecoderRenderTargets,
+ UINT NumSurfaces, IDirectXVideoDecoder **ppDecode )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+
+ FIXME("(%p)->(%s, %p, %p, %p, %u, %p): stub\n", This, debugstr_guid(guid), pVideoDesc, pConfig, ppDecoderRenderTargets, NumSurfaces, ppDecode);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderConfigurations( IDirectXVideoDecoderService *iface, REFGUID guid, const DXVA2_VideoDesc *pVideoDesc,
+ IUnknown *pReserved, UINT *pCount, DXVA2_ConfigPictureDecode **ppConfigs )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+
+ FIXME("(%p)->(%s, %p, %p, %p, %p): stub\n", This, debugstr_guid(guid), pVideoDesc, pReserved, pCount, ppConfigs);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderDeviceGuids( IDirectXVideoDecoderService *iface, UINT *count, GUID **pGuids )
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+
+ FIXME("(%p)->(%p, %p): stub\n", This, count, pGuids);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderRenderTargets( IDirectXVideoDecoderService *iface, REFGUID guid, UINT *pCount, D3DFORMAT **pFormats)
+{
+ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface);
+
+ FIXME("(%p)->(%s, %p, %p): stub\n", This, debugstr_guid(guid), pCount, pFormats);
+
+ return E_NOTIMPL;
+}
+
+static const IDirectXVideoDecoderServiceVtbl DirectXVideoDecoderService_VTable =
+{
+ DirectXVideoDecoderService_QueryInterface,
+ DirectXVideoDecoderService_AddRef,
+ DirectXVideoDecoderService_Release,
+ DirectXVideoDecoderService_CreateSurface,
+ DirectXVideoDecoderService_CreateVideoDecoder,
+ DirectXVideoDecoderService_GetDecoderConfigurations,
+ DirectXVideoDecoderService_GetDecoderDeviceGuids,
+ DirectXVideoDecoderService_GetDecoderRenderTargets
+};
+
+/*****************************************************************************
+ * IDirectXVideoProcessorService interface
+ */
+
+typedef struct
+{
+ const IDirectXVideoProcessorServiceVtbl* lpVtbl;
+ LONG refCount;
+} DirectXVideoProcessorServiceImpl;
+
+static inline DirectXVideoProcessorServiceImpl *impl_from_IDirectXVideoProcessorService( IDirectXVideoProcessorService *iface )
+{
+ return (DirectXVideoProcessorServiceImpl *)iface;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_QueryInterface( IDirectXVideoProcessorService *iface, REFIID riid, LPVOID * ppv )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv);
+
+ *ppv = NULL;
+
+ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoProcessorService))
+ *ppv = (LPVOID)iface;
+
+ if (*ppv)
+ {
+ IUnknown_AddRef((IUnknown *)(*ppv));
+ return S_OK;
+ }
+
+ FIXME("No interface for %s\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI DirectXVideoProcessorService_AddRef( IDirectXVideoProcessorService *iface )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+ ULONG refCount = InterlockedIncrement(&This->refCount);
+
+ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1);
+
+ return refCount;
+}
+
+static ULONG WINAPI DirectXVideoProcessorService_Release( IDirectXVideoProcessorService *iface )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+ ULONG refCount = InterlockedDecrement(&This->refCount);
+
+ TRACE("(%p)->() Release from %d\n", This, refCount + 1);
+
+ if (!refCount)
+ {
+ TRACE("Destroying\n");
+ CoTaskMemFree(This);
+ }
+
+ return refCount;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_CreateSurface( IDirectXVideoProcessorService *iface, UINT width, UINT height,
+ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage,
+ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n",
+ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice( IDirectXVideoProcessorService *iface, void* pCallbacks)
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%p): stub\n", This, pCallbacks );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorDeviceGuids( IDirectXVideoProcessorService *iface, const DXVA2_VideoDesc* pVideoDesc,
+ UINT* pCount, GUID** pGuids )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%p, %p, %p): stub\n", This, pVideoDesc, pCount, pGuids );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorRenderTargets( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, UINT* pCount, D3DFORMAT** pFormats )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %p, %p, %p): stub\n",
+ This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, pCount, pFormats );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorSubStreamFormats( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT* pCount,
+ D3DFORMAT** pFormats )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %p, %#x, %p, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, pCount, pFormats );
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorCaps( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat,
+ DXVA2_VideoProcessorCaps* pCaps)
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %p, %#x, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, pCaps);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetProcAmpRange( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT ProcAmpCap,
+ DXVA2_ValueRange* pRange )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %p, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, ProcAmpCap, pRange);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_GetFilterPropertyRange( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT FilterSetting,
+ DXVA2_ValueRange* pRange )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %p, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, FilterSetting, pRange);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DirectXVideoProcessorService_CreateVideoProcessor( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid,
+ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT MaxNumSubStreams,
+ IDirectXVideoProcessor** ppVidProcess )
+{
+ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface);
+
+ FIXME("(%p)->(%s, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), RenderTargetFormat, MaxNumSubStreams, ppVidProcess);
+
+ return E_NOTIMPL;
+}
+
+static const IDirectXVideoProcessorServiceVtbl DirectXVideoProcessorService_VTable =
+{
+ DirectXVideoProcessorService_QueryInterface,
+ DirectXVideoProcessorService_AddRef,
+ DirectXVideoProcessorService_Release,
+ DirectXVideoProcessorService_CreateSurface,
+ DirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice,
+ DirectXVideoProcessorService_GetVideoProcessorDeviceGuids,
+ DirectXVideoProcessorService_GetVideoProcessorRenderTargets,
+ DirectXVideoProcessorService_GetVideoProcessorSubStreamFormats,
+ DirectXVideoProcessorService_GetVideoProcessorCaps,
+ DirectXVideoProcessorService_GetProcAmpRange,
+ DirectXVideoProcessorService_GetFilterPropertyRange,
+ DirectXVideoProcessorService_CreateVideoProcessor
+};
+
+
+HRESULT videoservices_create( IDirect3DDevice9 *device, REFIID riid, void **ppv )
+{
+ HRESULT hr = S_OK;
+
+ if (!riid || !ppv)
+ return E_INVALIDARG;
+
+ *ppv = NULL;
+
+ /* IDirectXVideoAccelerationService */
+ if (IsEqualIID(riid, &IID_IDirectXVideoAccelerationService))
+ {
+ DirectXVideoAccelerationServiceImpl* accelerator = CoTaskMemAlloc(sizeof(DirectXVideoAccelerationServiceImpl));
+ if (!accelerator)
+ return E_OUTOFMEMORY;
+
+ accelerator->lpVtbl = &DirectXVideoAccelerationService_VTable;
+ accelerator->refCount = 1;
+
+ *ppv = accelerator;
+ }
+
+ /* IDirectXVideoDecoderService */
+ else if (IsEqualIID(riid, &IID_IDirectXVideoDecoderService))
+ {
+ DirectXVideoDecoderServiceImpl* decoder = CoTaskMemAlloc(sizeof(DirectXVideoDecoderServiceImpl));
+ if (!decoder)
+ return E_OUTOFMEMORY;
+
+ decoder->lpVtbl = &DirectXVideoDecoderService_VTable;
+ decoder->refCount = 1;
+ *ppv = decoder;
+ }
+
+ /* IDirectXVideoProcessorService */
+ else if (IsEqualIID(riid, &IID_IDirectXVideoProcessorService))
+ {
+ DirectXVideoProcessorServiceImpl* processor = CoTaskMemAlloc(sizeof(DirectXVideoProcessorServiceImpl));
+ if (!processor)
+ return E_OUTOFMEMORY;
+
+ processor->lpVtbl = &DirectXVideoProcessorService_VTable;
+ processor->refCount = 1;
+
+ *ppv = processor;
+ }
+
+ else
+ hr = E_NOINTERFACE;
+
+ return hr;
+}
--
1.7.9.5

View File

@ -1,4 +1,3 @@
Revision: 1
Revision: 2
Author: Michael Müller
Title: Added DXVA2 stub dll.
Title: Added DXVA2 stub implementation.

View File

@ -57,7 +57,7 @@ index a273502..5fa0cd5 100644
+ { "4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5:1", "Erich E. Hoover", "Support for junction points/reparse points." },
+ { "5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5:1", "Erich E. Hoover", "Implement TransmitFile." },
+ { "3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5:1", "Erich E. Hoover", "Implement missing fonts expected by Silverlight." },
+ { "39ca2373-65c1-4d01-8ba0-1c2007cbbc59:1", "Michael Müller", "Added DXVA2 stub dll." },
+ { "39ca2373-65c1-4d01-8ba0-1c2007cbbc59:2", "Michael Müller", "Added DXVA2 stub implementation." },
+ { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:1", "Michael Müller", "Decrease minimum SetTimer interval from 15 to 5 ms." },
+ { "19835498-8d90-4673-867e-2376af4d7c76:1", "Sebastian Lackner", "Allow to set wined3d strictDrawOrdering via environment variable." },
+ { "59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0:1", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." },