diff --git a/include/Makefile.in b/include/Makefile.in index 07ab7b7e8f9..6ab53a95af7 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 \ @@ -275,6 +276,7 @@ SOURCES = \ excpt.h \ exdisp.idl \ exdispid.h \ + exposeenums2managed.h \ fci.h \ fdi.h \ fileapi.h \ @@ -679,6 +681,7 @@ SOURCES = \ uiautomationcore.idl \ uiautomationcoreapi.h \ uiribbon.idl \ + unexposeenums2managed.h \ unknwn.idl \ urlhist.idl \ urlmon.idl \ diff --git a/include/axextend.idl b/include/axextend.idl index 6efe659fdab..8b46d665b5d 100644 --- a/include/axextend.idl +++ b/include/axextend.idl @@ -20,6 +20,8 @@ #pragma makedep install #endif +#include + 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 00000000000..add145a37b3 --- /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 + +ENUM16 TAG(TunerInputType) +{ + TunerInputCable, + TunerInputAntenna +} TunerInputType; + +#include + +#endif /* AXEXTEND_ENUM_H */ diff --git a/include/exposeenums2managed.h b/include/exposeenums2managed.h new file mode 100644 index 00000000000..3f2e17cfc59 --- /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 00000000000..e38149c5ea6 --- /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