TESTING -- override pthreads to fix gstreamer v5
[wine/multimedia.git] / include / xapo.idl
blobde09ba0c91d2e34a58b86b58c5b16812f34e21f6
1 /*
2 * Copyright (c) 2015 Andrew Eikum for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 import "unknwn.idl";
21 #define XAPO_REGISTRATION_STRING_LENGTH 256
23 cpp_quote("#if 0")
24 typedef struct WAVEFORMATEX
26 WORD wFormatTag;
27 WORD nChannels;
28 DWORD nSamplesPerSec;
29 DWORD nAvgBytesPerSec;
30 WORD nBlockAlign;
31 WORD wBitsPerSample;
32 WORD cbSize;
33 } WAVEFORMATEX;
35 typedef struct {
36 WAVEFORMATEX Format;
37 union {
38 WORD wValidBitsPerSample;
39 WORD wSamplesPerBlock;
40 WORD wReserved;
41 } Samples;
42 DWORD dwChannelMask;
43 GUID SubFormat;
44 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
45 cpp_quote("#else")
46 cpp_quote("#include <mmreg.h>")
47 cpp_quote("#endif")
49 typedef struct XAPO_REGISTRATION_PROPERTIES
51 CLSID clsid;
52 WCHAR FriendlyName[XAPO_REGISTRATION_STRING_LENGTH];
53 WCHAR CopyrightInfo[XAPO_REGISTRATION_STRING_LENGTH];
54 UINT32 MajorVersion;
55 UINT32 MinorVersion;
56 UINT32 Flags;
57 UINT32 MinInputBufferCount;
58 UINT32 MaxInputBufferCount;
59 UINT32 MinOutputBufferCount;
60 UINT32 MaxOutputBufferCount;
61 } XAPO_REGISTRATION_PROPERTIES;
63 typedef struct XAPO20_REGISTRATION_PROPERTIES
65 CLSID clsid;
66 WCHAR FriendlyName[XAPO_REGISTRATION_STRING_LENGTH];
67 WCHAR CopyrightInfo[XAPO_REGISTRATION_STRING_LENGTH];
68 UINT32 MajorVersion;
69 UINT32 MinorVersion;
70 UINT32 Flags;
71 UINT32 MinInputBufferCount;
72 UINT32 MaxInputBufferCount;
73 UINT32 MinOutputBufferCount;
74 UINT32 MaxOutputBufferCount;
75 UINT32 InterfaceCount;
76 IID InterfaceArray[1];
77 } XAPO20_REGISTRATION_PROPERTIES;
79 typedef struct XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS {
80 const WAVEFORMATEX *pFormat;
81 UINT32 MaxFrameCount;
82 } XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;
84 typedef enum XAPO_BUFFER_FLAGS {
85 XAPO_BUFFER_SILENT,
86 XAPO_BUFFER_VALID
87 } XAPO_BUFFER_FLAGS;
89 typedef struct XAPO_PROCESS_BUFFER_PARAMETERS {
90 void *pBuffer;
91 XAPO_BUFFER_FLAGS BufferFlags;
92 UINT32 ValidFrameCount;
93 } XAPO_PROCESS_BUFFER_PARAMETERS;
95 /* XAudio2 2.8 version of IXAPO */
97 object,
98 local,
99 uuid(a410b984-9839-4819-a0be-2856ae6b3adb)
101 interface IXAPO : IUnknown
103 HRESULT GetRegistrationProperties([out] XAPO_REGISTRATION_PROPERTIES **props);
105 HRESULT IsInputFormatSupported(const WAVEFORMATEX *output_fmt,
106 const WAVEFORMATEX *input_fmt, WAVEFORMATEX **supported_fmt);
108 HRESULT IsOutputFormatSupported(const WAVEFORMATEX *input_fmt,
109 const WAVEFORMATEX *output_fmt, WAVEFORMATEX **supported_fmt);
111 HRESULT Initialize(const void *data, UINT32 data_len);
113 HRESULT Reset(void);
115 HRESULT LockForProcess(UINT32 in_params_count, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *in_params,
116 UINT32 out_params_count, const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *out_params);
118 void UnlockForProcess(void);
120 void Process(UINT32 in_params_count, const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
121 UINT32 out_params_count, const XAPO_PROCESS_BUFFER_PARAMETERS *out_params,
122 BOOL enabled);
124 UINT32 CalcInputFrames(UINT32 output_frames);
126 UINT32 CalcOutputFrames(UINT32 input_frames);
129 /* XAudio2 2.7 version of IXAPO is identical to 2.8 */
130 cpp_quote("DEFINE_GUID(IID_IXAPO27, 0xa90bc001, 0xe897, 0xe897, 0x55, 0xe4, 0x9e, 0x47, 0x00, 0x00, 0x00, 0x00);")
133 /* XAudio2 2.8 version of IXAPOParameters */
135 object,
136 local,
137 uuid(26d95c66-80f2-499a-ad54-5ae7f01c6d98)
139 interface IXAPOParameters : IUnknown
141 void SetParameters(const void *params, UINT32 params_len);
143 void GetParameters(void *params, UINT32 params_len);
146 /* XAudio2 2.7 version of IXAPOParameters is identical to 2.8 */
147 cpp_quote("DEFINE_GUID(IID_IXAPO27Parameters, 0xa90bc001, 0xe897, 0xe897, 0x55, 0xe4, 0x9e, 0x47, 0x00, 0x00, 0x00, 0x01);")