winepulse: Wrap unix call parameters in structs.
[wine.git] / dlls / winepulse.drv / unixlib.h
blob237413c237f975da0dfc892cdc78a1538a1e4a23
1 /*
2 * Copyright 2021 Jacek Caban 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 #include "wine/list.h"
21 struct pulse_stream;
23 struct pulse_config
25 struct
27 WAVEFORMATEXTENSIBLE format;
28 REFERENCE_TIME def_period;
29 REFERENCE_TIME min_period;
30 } modes[2];
31 unsigned int speakers_mask;
34 struct main_loop_params
36 HANDLE event;
39 struct create_stream_params
41 const char *name;
42 EDataFlow dataflow;
43 AUDCLNT_SHAREMODE mode;
44 DWORD flags;
45 REFERENCE_TIME duration;
46 const WAVEFORMATEX *fmt;
47 HRESULT result;
48 UINT32 *channel_count;
49 struct pulse_stream **stream;
52 struct release_stream_params
54 struct pulse_stream *stream;
55 HANDLE timer;
56 HRESULT result;
59 struct start_params
61 struct pulse_stream *stream;
62 HRESULT result;
65 struct stop_params
67 struct pulse_stream *stream;
68 HRESULT result;
71 struct reset_params
73 struct pulse_stream *stream;
74 HRESULT result;
77 struct timer_loop_params
79 struct pulse_stream *stream;
82 struct get_render_buffer_params
84 struct pulse_stream *stream;
85 UINT32 frames;
86 HRESULT result;
87 BYTE **data;
90 struct release_render_buffer_params
92 struct pulse_stream *stream;
93 UINT32 written_frames;
94 DWORD flags;
95 HRESULT result;
98 struct get_capture_buffer_params
100 struct pulse_stream *stream;
101 HRESULT result;
102 BYTE **data;
103 UINT32 *frames;
104 DWORD *flags;
105 UINT64 *devpos;
106 UINT64 *qpcpos;
109 struct release_capture_buffer_params
111 struct pulse_stream *stream;
112 BOOL done;
113 HRESULT result;
116 struct get_buffer_size_params
118 struct pulse_stream *stream;
119 HRESULT result;
120 UINT32 *size;
123 struct get_latency_params
125 struct pulse_stream *stream;
126 HRESULT result;
127 REFERENCE_TIME *latency;
130 struct get_current_padding_params
132 struct pulse_stream *stream;
133 HRESULT result;
134 UINT32 *padding;
137 struct get_next_packet_size_params
139 struct pulse_stream *stream;
140 HRESULT result;
141 UINT32 *frames;
144 struct get_frequency_params
146 struct pulse_stream *stream;
147 HRESULT result;
148 UINT64 *freq;
151 struct get_position_params
153 struct pulse_stream *stream;
154 BOOL device;
155 HRESULT result;
156 UINT64 *pos;
157 UINT64 *qpctime;
160 struct set_volumes_params
162 struct pulse_stream *stream;
163 float master_volume;
164 const float *volumes;
165 const float *session_volumes;
168 struct set_event_handle_params
170 struct pulse_stream *stream;
171 HANDLE event;
172 HRESULT result;
175 struct test_connect_params
177 const char *name;
178 HRESULT result;
179 struct pulse_config *config;
182 struct is_started_params
184 struct pulse_stream *stream;
185 BOOL started;
188 struct unix_funcs
190 void (WINAPI *main_loop)(struct main_loop_params *params);
191 void (WINAPI *create_stream)(struct create_stream_params *params);
192 void (WINAPI *release_stream)(struct release_stream_params *params);
193 void (WINAPI *start)(struct start_params *params);
194 void (WINAPI *stop)(struct stop_params *params);
195 void (WINAPI *reset)(struct reset_params *params);
196 void (WINAPI *timer_loop)(struct timer_loop_params *params);
197 void (WINAPI *get_render_buffer)(struct get_render_buffer_params *params);
198 void (WINAPI *release_render_buffer)(struct release_render_buffer_params *params);
199 void (WINAPI *get_capture_buffer)(struct get_capture_buffer_params *params);
200 void (WINAPI *release_capture_buffer)(struct release_capture_buffer_params *params);
201 void (WINAPI *get_buffer_size)(struct get_buffer_size_params *params);
202 void (WINAPI *get_latency)(struct get_latency_params *params);
203 void (WINAPI *get_current_padding)(struct get_current_padding_params *params);
204 void (WINAPI *get_next_packet_size)(struct get_next_packet_size_params *params);
205 void (WINAPI *get_frequency)(struct get_frequency_params *params);
206 void (WINAPI *get_position)(struct get_position_params *params);
207 void (WINAPI *set_volumes)(struct set_volumes_params *params);
208 void (WINAPI *set_event_handle)(struct set_event_handle_params *params);
209 void (WINAPI *test_connect)(struct test_connect_params *params);
210 void (WINAPI *is_started)(struct is_started_params *params);