19 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
20 |
*/ |
*/ |
21 |
|
|
22 |
|
#include <assert.h> |
23 |
|
|
24 |
#include "rdesktop.h" |
#include "rdesktop.h" |
25 |
#include "rdpsnd.h" |
#include "rdpsnd.h" |
26 |
#include "rdpsnd_dsp.h" |
#include "rdpsnd_dsp.h" |
318 |
reg = &drivers; |
reg = &drivers; |
319 |
#if defined(RDPSND_ALSA) |
#if defined(RDPSND_ALSA) |
320 |
*reg = alsa_register(options); |
*reg = alsa_register(options); |
321 |
|
assert(*reg); |
322 |
reg = &((*reg)->next); |
reg = &((*reg)->next); |
323 |
#endif |
#endif |
324 |
#if defined(RDPSND_SUN) |
#if defined(RDPSND_SUN) |
325 |
*reg = sun_register(options); |
*reg = sun_register(options); |
326 |
|
assert(*reg); |
327 |
reg = &((*reg)->next); |
reg = &((*reg)->next); |
328 |
#endif |
#endif |
329 |
#if defined(RDPSND_OSS) |
#if defined(RDPSND_OSS) |
330 |
*reg = oss_register(options); |
*reg = oss_register(options); |
331 |
|
assert(*reg); |
332 |
reg = &((*reg)->next); |
reg = &((*reg)->next); |
333 |
#endif |
#endif |
334 |
#if defined(RDPSND_SGI) |
#if defined(RDPSND_SGI) |
335 |
*reg = sgi_register(options); |
*reg = sgi_register(options); |
336 |
|
assert(*reg); |
337 |
reg = &((*reg)->next); |
reg = &((*reg)->next); |
338 |
#endif |
#endif |
339 |
#if defined(RDPSND_LIBAO) |
#if defined(RDPSND_LIBAO) |
340 |
*reg = libao_register(options); |
*reg = libao_register(options); |
341 |
|
assert(*reg); |
342 |
reg = &((*reg)->next); |
reg = &((*reg)->next); |
343 |
#endif |
#endif |
344 |
} |
} |
423 |
current_driver->wave_out_play(); |
current_driver->wave_out_play(); |
424 |
} |
} |
425 |
|
|
426 |
inline void |
void |
427 |
rdpsnd_queue_write(STREAM s, uint16 tick, uint8 index) |
rdpsnd_queue_write(STREAM s, uint16 tick, uint8 index) |
428 |
{ |
{ |
429 |
struct audio_packet *packet = &packet_queue[queue_hi]; |
struct audio_packet *packet = &packet_queue[queue_hi]; |
445 |
current_driver->wave_out_play(); |
current_driver->wave_out_play(); |
446 |
} |
} |
447 |
|
|
448 |
inline struct audio_packet * |
struct audio_packet * |
449 |
rdpsnd_queue_current_packet(void) |
rdpsnd_queue_current_packet(void) |
450 |
{ |
{ |
451 |
return &packet_queue[queue_lo]; |
return &packet_queue[queue_lo]; |
452 |
} |
} |
453 |
|
|
454 |
inline BOOL |
BOOL |
455 |
rdpsnd_queue_empty(void) |
rdpsnd_queue_empty(void) |
456 |
{ |
{ |
457 |
return (queue_lo == queue_hi); |
return (queue_lo == queue_hi); |
458 |
} |
} |
459 |
|
|
460 |
inline void |
void |
461 |
rdpsnd_queue_init(void) |
rdpsnd_queue_init(void) |
462 |
{ |
{ |
463 |
queue_lo = queue_hi = 0; |
queue_lo = queue_hi = 0; |
464 |
} |
} |
465 |
|
|
466 |
inline void |
void |
467 |
rdpsnd_queue_next(void) |
rdpsnd_queue_next(void) |
468 |
{ |
{ |
469 |
xfree(packet_queue[queue_lo].s.data); |
xfree(packet_queue[queue_lo].s.data); |
470 |
queue_lo = (queue_lo + 1) % MAX_QUEUE; |
queue_lo = (queue_lo + 1) % MAX_QUEUE; |
471 |
} |
} |
472 |
|
|
473 |
inline int |
int |
474 |
rdpsnd_queue_next_tick(void) |
rdpsnd_queue_next_tick(void) |
475 |
{ |
{ |
476 |
if (((queue_lo + 1) % MAX_QUEUE) != queue_hi) |
if (((queue_lo + 1) % MAX_QUEUE) != queue_hi) |