2 * Copyright 2022 Huw Davies
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 "audioclient.h"
29 struct get_endpoint_ids_params
32 struct endpoint
*endpoints
;
36 unsigned int default_idx
;
39 struct create_stream_params
41 const char *alsa_name
;
43 AUDCLNT_SHAREMODE share
;
45 REFERENCE_TIME duration
;
46 REFERENCE_TIME period
;
47 const WAVEFORMATEX
*fmt
;
49 struct alsa_stream
**stream
;
52 struct release_stream_params
54 struct alsa_stream
*stream
;
61 struct alsa_stream
*stream
;
67 struct alsa_stream
*stream
;
73 struct alsa_stream
*stream
;
77 struct timer_loop_params
79 struct alsa_stream
*stream
;
82 struct get_render_buffer_params
84 struct alsa_stream
*stream
;
90 struct release_render_buffer_params
92 struct alsa_stream
*stream
;
93 UINT32 written_frames
;
98 struct get_capture_buffer_params
100 struct alsa_stream
*stream
;
109 struct release_capture_buffer_params
111 struct alsa_stream
*stream
;
116 struct is_format_supported_params
118 const char *alsa_name
;
120 AUDCLNT_SHAREMODE share
;
121 const WAVEFORMATEX
*fmt_in
;
122 WAVEFORMATEXTENSIBLE
*fmt_out
;
126 struct get_mix_format_params
128 const char *alsa_name
;
130 WAVEFORMATEXTENSIBLE
*fmt
;
134 struct get_buffer_size_params
136 struct alsa_stream
*stream
;
141 struct get_latency_params
143 struct alsa_stream
*stream
;
145 REFERENCE_TIME
*latency
;
148 struct get_current_padding_params
150 struct alsa_stream
*stream
;
155 struct get_next_packet_size_params
157 struct alsa_stream
*stream
;
162 struct get_frequency_params
164 struct alsa_stream
*stream
;
169 struct get_position_params
171 struct alsa_stream
*stream
;
177 struct set_volumes_params
179 struct alsa_stream
*stream
;
181 const float *volumes
;
182 const float *session_volumes
;
185 struct set_event_handle_params
187 struct alsa_stream
*stream
;
192 struct is_started_params
194 struct alsa_stream
*stream
;
198 struct get_prop_value_params
200 const char *alsa_name
;
203 const PROPERTYKEY
*prop
;
206 void *buffer
; /* caller allocated buffer to hold value's strings */
207 unsigned int *buffer_size
;
210 struct notify_context
223 struct midi_out_message_params
231 struct notify_context
*notify
;
234 struct midi_in_message_params
242 struct notify_context
*notify
;
245 struct midi_notify_wait_params
248 struct notify_context
*notify
;
253 alsa_get_endpoint_ids
,
260 alsa_get_render_buffer
,
261 alsa_release_render_buffer
,
262 alsa_get_capture_buffer
,
263 alsa_release_capture_buffer
,
264 alsa_is_format_supported
,
266 alsa_get_buffer_size
,
268 alsa_get_current_padding
,
269 alsa_get_next_packet_size
,
273 alsa_set_event_handle
,
277 alsa_midi_out_message
,
278 alsa_midi_in_message
,
279 alsa_midi_notify_wait
,
282 NTSTATUS
midi_release(void *args
) DECLSPEC_HIDDEN
;
283 NTSTATUS
midi_out_message(void *args
) DECLSPEC_HIDDEN
;
284 NTSTATUS
midi_in_message(void *args
) DECLSPEC_HIDDEN
;
285 NTSTATUS
midi_notify_wait(void *args
) DECLSPEC_HIDDEN
;
287 extern unixlib_handle_t alsa_handle
;
289 #define ALSA_CALL(func, params) __wine_unix_call(alsa_handle, alsa_ ## func, params)