[PATCH 1/5] include: Add some interface definitions for axextend.idl.

Jactry Zeng jzeng at codeweavers.com
Tue May 12 08:35:14 CDT 2020


Signed-off-by: Jactry Zeng <jzeng at codeweavers.com>
---
 include/Makefile.in             |   3 +
 include/axextend.idl            | 183 ++++++++++++++++++++++++++++++++
 include/axextendenums.h         |  32 ++++++
 include/exposeenums2managed.h   |  29 +++++
 include/unexposeenums2managed.h |  20 ++++
 5 files changed, 267 insertions(+)
 create mode 100644 include/axextendenums.h
 create mode 100644 include/exposeenums2managed.h
 create mode 100644 include/unexposeenums2managed.h

diff --git a/include/Makefile.in b/include/Makefile.in
index 07ab7b7e8f..9c64ca293d 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -36,6 +36,7 @@ SOURCES = \
 	avrt.h \
 	axcore.idl \
 	axextend.idl \
+	axextendenums.h \
 	basetsd.h \
 	basetyps.h \
 	bcrypt.h \
@@ -268,6 +269,7 @@ SOURCES = \
 	errorrep.h \
 	errors.h \
 	errrec.idl \
+	exposeenums2managed.h \
 	evcode.h \
 	evntprov.h \
 	evntrace.h \
@@ -680,6 +682,7 @@ SOURCES = \
 	uiautomationcoreapi.h \
 	uiribbon.idl \
 	unknwn.idl \
+	unexposeenums2managed.h \
 	urlhist.idl \
 	urlmon.idl \
 	userenv.h \
diff --git a/include/axextend.idl b/include/axextend.idl
index 6efe659fda..8b46d665b5 100644
--- a/include/axextend.idl
+++ b/include/axextend.idl
@@ -20,6 +20,8 @@
 #pragma makedep install
 #endif
 
+#include <axextendenums.h>
+
 interface IAMAnalogVideoDecoder;
 interface IAMAnalogVideoEncoder;
 interface IAMAudioInputMixer;
@@ -1288,3 +1290,184 @@ interface IAMVfwCaptureDialogs : IUnknown
             [in] long data1,
             [in] long data2);
 }
+
+[
+    local,
+    object,
+    uuid(6a2e0670-28e4-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMVideoControl : IUnknown
+{
+    HRESULT GetCaps([in] IPin *pin, [out] long *flags);
+    HRESULT SetMode([in] IPin *pin, long mode);
+    HRESULT GetMode([in] IPin *pin, [out] long *mode);
+    HRESULT GetCurrentActualFrameRate([in] IPin *pin, [out] LONGLONG *frame_rate);
+    HRESULT GetMaxAvailableFrameRate([in] IPin *pin, [in] long index,
+            [in] SIZE dimensions, [out] LONGLONG *frame_rate);
+    HRESULT GetFrameRateList([in] IPin *pin, [in] long index, [in] SIZE dimensions,
+            [out] long *list_size, [out] LONGLONG **frame_rate);
+}
+
+[
+    local,
+    object,
+    uuid(56ed71a0-af5f-11d0-b3f0-00aa003761c5),
+    pointer_default(unique)
+]
+interface IAMBufferNegotiation : IUnknown
+{
+    HRESULT SuggestAllocatorProperties([in] const ALLOCATOR_PROPERTIES *prop);
+    HRESULT GetAllocatorProperties([out] ALLOCATOR_PROPERTIES *prop);
+}
+
+[
+    local,
+    object,
+    uuid(c6e13344-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMDroppedFrames : IUnknown
+{
+    HRESULT GetNumDropped([out] long *number);
+    HRESULT GetNumNotDropped([out] long *number);
+    HRESULT GetDroppedInfo([in] long size, [out] long *array, [out] long *copied);
+    HRESULT GetAverageFrameSize([out] long *size);
+}
+
+[
+    local,
+    object,
+    uuid(62ea93ba-ec62-11d2-b770-00c04fb6bd3d),
+    pointer_default(unique)
+]
+interface IAMLatency : IUnknown
+{
+    HRESULT GetLatency([in, out] REFERENCE_TIME *latency);
+}
+
+[
+    local,
+    object,
+    uuid(f185fe76-e64e-11d2-b76e-00c04fb6bd3d),
+    pointer_default(unique)
+]
+interface IAMPushSource : IAMLatency
+{
+    HRESULT GetPushSourceFlags([out] ULONG *flags);
+    HRESULT SetPushSourceFlags([in] ULONG flags);
+    HRESULT SetStreamOffset([in] REFERENCE_TIME offset);
+    HRESULT GetStreamOffset([out] REFERENCE_TIME *offset);
+    HRESULT GetMaxStreamOffset([out] REFERENCE_TIME *offset);
+    HRESULT SetMaxStreamOffset([in] REFERENCE_TIME offset);
+};
+
+[
+    local,
+    object,
+    uuid(c6e13343-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMVideoCompression : IUnknown
+{
+    HRESULT put_KeyFrameRate([in] long frame_rate);
+    HRESULT get_KeyFrameRate([out] long *frame_rate);
+    HRESULT put_PFramesPerKeyFrame([in] long frame);
+    HRESULT get_PFramesPerKeyFrame([out] long *frame);
+    HRESULT put_Quality([in] double quality);
+    HRESULT get_Quality([out] double *quality);
+    HRESULT put_WindowSize([in] DWORDLONG size);
+    HRESULT get_WindowSize([out] DWORDLONG *size);
+    HRESULT GetInfo([out, size_is(*version_size)] LPWSTR version, [in, out] int *version_size,
+            [out, size_is(*description_size)] LPWSTR description, [in, out] int *description_size,
+            [out] long *frame_rate, [out] long *key, [out] double *quality, [out] long *capabilities);
+    HRESULT OverrideKeyFrame([in] long number);
+    HRESULT OverrideFrameSize([in] long number, [in] long size);
+}
+
+[
+    local,
+    object,
+    uuid(c6e13380-30ac-11d0-a18c-00a0c9118956),
+    pointer_default(unique)
+]
+interface IAMCrossbar : IUnknown
+{
+    HRESULT get_PinCounts([out] long *output, [out] long *intput);
+    HRESULT CanRoute([in] long output, [in] long input);
+    HRESULT Route([in] long output, [in] long input);
+    HRESULT get_IsRoutedTo([in] long output, [out] long *input);
+    HRESULT get_CrossbarPinInfo([in] BOOL is_input, [in] long index,
+            [out] long *related, [out] long *type);
+}
+
+typedef enum tagAMTunerEventType
+{
+    AMTUNER_EVENT_CHANGED = 0x0001,
+} AMTunerEventType;
+
+[
+    local,
+    object,
+    uuid(211a8760-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTunerNotification : IUnknown
+{
+    HRESULT OnEvent([in] AMTunerEventType event);
+}
+
+typedef enum tagAMTunerModeType
+{
+    AMTUNER_MODE_DEFAULT  = 0x0000,
+    AMTUNER_MODE_TV       = 0x0001,
+    AMTUNER_MODE_FM_RADIO = 0x0002,
+    AMTUNER_MODE_AM_RADIO = 0x0004,
+    AMTUNER_MODE_DSS      = 0x0008,
+} AMTunerModeType;
+
+[
+    local,
+    object,
+    uuid(211a8761-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTuner : IUnknown
+{
+    HRESULT put_Channel([in] long channel, [in] long video, [in] long audio);
+    HRESULT get_Channel([out] long *channel, [out] long *video, [out] long *audio);
+    HRESULT ChannelMinMax([out] long *min, [out] long *max);
+    HRESULT put_CountryCode([in] long country);
+    HRESULT get_CountryCode([out] long *country);
+    HRESULT put_TuningSpace([in] long tuning_space);
+    HRESULT get_TuningSpace([out] long *tuning_space);
+    [local] HRESULT Logon([in] HANDLE user);
+    HRESULT Logout();
+    HRESULT SignalPresent([out] long *signal_strength);
+    HRESULT put_Mode([in] AMTunerModeType mode);
+    HRESULT get_Mode([out] AMTunerModeType *mode);
+    HRESULT GetAvailableModes([out] long *modes);
+    HRESULT RegisterNotificationCallBack([in] IAMTunerNotification *notify, [in] long events);
+    HRESULT UnRegisterNotificationCallBack([in] IAMTunerNotification *notify);
+}
+
+[
+    local,
+    object,
+    uuid(211a8766-03ac-11d1-8d13-00aa00bd8339),
+    pointer_default(unique)
+]
+interface IAMTVTuner : IAMTuner
+{
+    HRESULT get_AvailableTVFormats([out] long *standard);
+    HRESULT get_TVFormat([out] long *standard);
+    HRESULT AutoTune([in] long channel, [out] long *signal);
+    HRESULT StoreAutoTune();
+    HRESULT get_NumInputConnections([out] long *number);
+    HRESULT put_InputType([in] long index, [in] TunerInputType type);
+    HRESULT get_InputType([in] long index, [out] TunerInputType *type);
+    HRESULT put_ConnectInput([in] long index);
+    HRESULT get_ConnectInput([out] long *index);
+    HRESULT get_VideoFrequency([out] long *freq);
+    HRESULT get_AudioFrequency([out] long *freq);
+}
diff --git a/include/axextendenums.h b/include/axextendenums.h
new file mode 100644
index 0000000000..add145a37b
--- /dev/null
+++ b/include/axextendenums.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 Jactry Zeng for CodeWeavers
+ *
+ * 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
+ */
+
+#ifndef AXEXTEND_ENUM_H
+#define AXEXTEND_ENUM_H
+
+#include <exposeenums2managed.h>
+
+ENUM16 TAG(TunerInputType)
+{
+    TunerInputCable,
+    TunerInputAntenna
+} TunerInputType;
+
+#include <unexposeenums2managed.h>
+
+#endif /* AXEXTEND_ENUM_H */
diff --git a/include/exposeenums2managed.h b/include/exposeenums2managed.h
new file mode 100644
index 0000000000..3f2e17cfc5
--- /dev/null
+++ b/include/exposeenums2managed.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Jactry Zeng for CodeWeavers
+ *
+ * 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
+ */
+
+#ifdef MANAGED_ENUMS
+
+#define TAG(x) x
+#define ENUM16 ENUM
+
+#else /* MANAGED_ENUMS */
+
+#define TAG(x) tag##x
+#define ENUM16 typedef enum
+
+#endif  /* MANAGED_ENUMS */
diff --git a/include/unexposeenums2managed.h b/include/unexposeenums2managed.h
new file mode 100644
index 0000000000..e38149c5ea
--- /dev/null
+++ b/include/unexposeenums2managed.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2020 Jactry Zeng for CodeWeavers
+ *
+ * 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
+ */
+
+#undef ENUM16
+#undef TAG
-- 
2.26.2




More information about the wine-devel mailing list