[RFC PATCH v2 1/3] dxva2: Introduce DXVAHD_CreateDevice() stub.

Jeff Smith whydoubt at gmail.com
Mon Aug 10 11:33:51 CDT 2020


Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
 dlls/dxva2/Makefile.in |  3 +-
 dlls/dxva2/dxva2.spec  |  1 +
 dlls/dxva2/dxvahd.c    | 65 ++++++++++++++++++++++++++++++++++++++++++
 include/Makefile.in    |  1 +
 include/dxvahd.idl     | 65 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 134 insertions(+), 1 deletion(-)
 create mode 100644 dlls/dxva2/dxvahd.c
 create mode 100644 include/dxvahd.idl

diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
index e3fc2fd6c3..0248c7f20b 100644
--- a/dlls/dxva2/Makefile.in
+++ b/dlls/dxva2/Makefile.in
@@ -5,4 +5,5 @@ IMPORTLIB = dxva2
 EXTRADLLFLAGS = -mno-cygwin
 
 C_SRCS = \
-	main.c
+	main.c \
+	dxvahd.c
diff --git a/dlls/dxva2/dxva2.spec b/dlls/dxva2/dxva2.spec
index 024a972697..ea7a98718b 100644
--- a/dlls/dxva2/dxva2.spec
+++ b/dlls/dxva2/dxva2.spec
@@ -1,6 +1,7 @@
 @ stdcall CapabilitiesRequestAndCapabilitiesReply(ptr ptr long)
 @ stdcall DXVA2CreateDirect3DDeviceManager9(ptr ptr)
 @ stdcall DXVA2CreateVideoService(ptr ptr ptr)
+@ stdcall DXVAHD_CreateDevice(ptr ptr long ptr ptr)
 @ stdcall DegaussMonitor(ptr)
 @ stdcall DestroyPhysicalMonitor(ptr)
 @ stdcall DestroyPhysicalMonitors(long ptr)
diff --git a/dlls/dxva2/dxvahd.c b/dlls/dxva2/dxvahd.c
new file mode 100644
index 0000000000..ac67f9e5a7
--- /dev/null
+++ b/dlls/dxva2/dxvahd.c
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2020 Jeff Smith
+ *
+ * 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 "d3d9.h"
+#include "dxvahd.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dxva2);
+
+
+/********************************************
+ * Utility functions
+ */
+
+static const char *debug_dxvahd_device_usage(DXVAHD_DEVICE_USAGE usage)
+{
+    switch (usage)
+    {
+#define USAGE_TO_STR(e) case e: return #e
+        USAGE_TO_STR(DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL);
+        USAGE_TO_STR(DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED);
+        USAGE_TO_STR(DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY);
+#undef USAGE_TO_STR
+        default:
+            FIXME("Unrecognized device usage %#x.\n", usage);
+            return "unrecognized";
+    }
+}
+
+
+/********************************************
+ * DXVA-HD device creation function
+ */
+
+HRESULT WINAPI DXVAHD_CreateDevice(IDirect3DDevice9Ex *d3d_device, const DXVAHD_CONTENT_DESC *desc,
+        DXVAHD_DEVICE_USAGE usage, PDXVAHDSW_Plugin plugin, IDXVAHD_Device **device)
+{
+    FIXME("%p, %p, %s, %p, %p. stub.\n", d3d_device, desc, debug_dxvahd_device_usage(usage), plugin, device);
+
+    TRACE("Frame Format %d  Input %ux%u @%.2f  Output %ux%u @%.2f\n",
+            desc->InputFrameFormat, desc->InputWidth, desc->InputHeight,
+            (double)desc->InputFrameRate.Numerator / desc->InputFrameRate.Denominator,
+            desc->OutputWidth, desc->OutputHeight,
+            (double)desc->OutputFrameRate.Numerator / desc->OutputFrameRate.Denominator);
+
+    *device = NULL;
+
+    return E_NOINTERFACE;
+}
diff --git a/include/Makefile.in b/include/Makefile.in
index 216adf0d7a..f986ef42dd 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -268,6 +268,7 @@ SOURCES = \
 	dxgitype.idl \
 	dxva.h \
 	dxva2api.idl \
+	dxvahd.idl \
 	dyngraph.idl \
 	endpointvolume.idl \
 	errorrep.h \
diff --git a/include/dxvahd.idl b/include/dxvahd.idl
new file mode 100644
index 0000000000..cd6de6eab3
--- /dev/null
+++ b/include/dxvahd.idl
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2020 Jeff Smith
+ *
+ * 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
+ */
+
+import "unknwn.idl";
+
+cpp_quote("#if 0")
+interface IDirect3DDevice9Ex;
+cpp_quote("#endif")
+
+
+typedef enum _DXVAHD_FRAME_FORMAT
+{
+    DXVAHD_FRAME_FORMAT_PROGRESSIVE                   = 0,
+    DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST    = 1,
+    DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
+} DXVAHD_FRAME_FORMAT;
+
+typedef enum _DXVAHD_DEVICE_USAGE
+{
+    DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL = 0,
+    DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED   = 1,
+    DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY = 2
+} DXVAHD_DEVICE_USAGE;
+
+
+typedef struct _DXVAHD_RATIONAL
+{
+    UINT Numerator;
+    UINT Denominator;
+} DXVAHD_RATIONAL;
+
+typedef struct _DXVAHD_CONTENT_DESC
+{
+    DXVAHD_FRAME_FORMAT InputFrameFormat;
+    DXVAHD_RATIONAL     InputFrameRate;
+    UINT                InputWidth;
+    UINT                InputHeight;
+    DXVAHD_RATIONAL     OutputFrameRate;
+    UINT                OutputWidth;
+    UINT                OutputHeight;
+} DXVAHD_CONTENT_DESC;
+
+
+/* FIXME */
+typedef void* PDXVAHDSW_Plugin;
+
+
+interface IDXVAHD_Device;
+
+cpp_quote("HRESULT WINAPI DXVAHD_CreateDevice(IDirect3DDevice9Ex *d3d_device, const DXVAHD_CONTENT_DESC *desc, DXVAHD_DEVICE_USAGE usage, PDXVAHDSW_Plugin plugin, IDXVAHD_Device **device);")
-- 
2.23.0




More information about the wine-devel mailing list