filename | src/drivers/audio_esd.c |
changeset | 66:2ec5b6eb75e5 |
next | 73:0bb57e51ac9e |
author | nkeynes |
date | Tue Jan 10 13:58:35 2006 +0000 (18 years ago) |
permissions | -rw-r--r-- |
last change | Force redisasm when switching cpus Handle emits when gui hasn't been created yet (dump to stderr) |
view | annotate | diff | log | raw |
1 /**
2 * $Id: audio_esd.c,v 1.1 2006-01-10 13:56:54 nkeynes Exp $
3 *
4 * The esd (esound) audio driver
5 *
6 * Copyright (c) 2005 Nathan Keynes.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 */
18 #include <esd.h>
19 #include "aica/audio.h"
20 #include "dream.h"
22 int esd_handle = -1;
23 int esd_sample_size = 1;
25 gboolean esd_audio_set_format( uint32_t rate, uint32_t format )
26 {
27 if( esd_handle != -1 ) {
28 esd_close(esd_handle);
29 }
30 esd_format_t esd_format = 0;
31 esd_sample_size = 1;
32 if( format & AUDIO_FMT_16BIT ) {
33 esd_format |= ESD_BITS16;
34 esd_sample_size = 1;
35 } else esd_format |= ESD_BITS8;
36 if( format & AUDIO_FMT_STEREO ) {
37 esd_format |= ESD_STEREO;
38 esd_sample_size = esd_sample_size << 1 ;
39 }
40 else esd_format |= ESD_MONO;
42 esd_handle = esd_play_stream( esd_format, rate, "localhost", "dreamon" );
43 return TRUE;
44 }
46 gboolean esd_audio_process_buffer( audio_buffer_t buffer )
47 {
48 if( esd_handle != -1 ) {
49 write( esd_handle, buffer->data, buffer->length * esd_sample_size );
50 DEBUG("Wrote buffer" );
51 } else {
52 ERROR( "ESD not initialized" );
53 }
54 return TRUE;
55 }
57 struct audio_driver esd_audio_driver = { esd_audio_set_format, esd_audio_process_buffer };
.