nkeynes@66: /** nkeynes@66: * $Id: audio_esd.c,v 1.1 2006-01-10 13:56:54 nkeynes Exp $ nkeynes@66: * nkeynes@66: * The esd (esound) audio driver nkeynes@66: * nkeynes@66: * Copyright (c) 2005 Nathan Keynes. nkeynes@66: * nkeynes@66: * This program is free software; you can redistribute it and/or modify nkeynes@66: * it under the terms of the GNU General Public License as published by nkeynes@66: * the Free Software Foundation; either version 2 of the License, or nkeynes@66: * (at your option) any later version. nkeynes@66: * nkeynes@66: * This program is distributed in the hope that it will be useful, nkeynes@66: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@66: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@66: * GNU General Public License for more details. nkeynes@66: */ nkeynes@66: #include nkeynes@66: #include "aica/audio.h" nkeynes@66: #include "dream.h" nkeynes@66: nkeynes@66: int esd_handle = -1; nkeynes@66: int esd_sample_size = 1; nkeynes@66: nkeynes@66: gboolean esd_audio_set_format( uint32_t rate, uint32_t format ) nkeynes@66: { nkeynes@66: if( esd_handle != -1 ) { nkeynes@66: esd_close(esd_handle); nkeynes@66: } nkeynes@66: esd_format_t esd_format = 0; nkeynes@66: esd_sample_size = 1; nkeynes@66: if( format & AUDIO_FMT_16BIT ) { nkeynes@66: esd_format |= ESD_BITS16; nkeynes@66: esd_sample_size = 1; nkeynes@66: } else esd_format |= ESD_BITS8; nkeynes@66: if( format & AUDIO_FMT_STEREO ) { nkeynes@66: esd_format |= ESD_STEREO; nkeynes@66: esd_sample_size = esd_sample_size << 1 ; nkeynes@66: } nkeynes@66: else esd_format |= ESD_MONO; nkeynes@66: nkeynes@66: esd_handle = esd_play_stream( esd_format, rate, "localhost", "dreamon" ); nkeynes@66: return TRUE; nkeynes@66: } nkeynes@66: nkeynes@66: gboolean esd_audio_process_buffer( audio_buffer_t buffer ) nkeynes@66: { nkeynes@66: if( esd_handle != -1 ) { nkeynes@66: write( esd_handle, buffer->data, buffer->length * esd_sample_size ); nkeynes@66: DEBUG("Wrote buffer" ); nkeynes@66: } else { nkeynes@66: ERROR( "ESD not initialized" ); nkeynes@66: } nkeynes@66: return TRUE; nkeynes@66: } nkeynes@66: nkeynes@66: struct audio_driver esd_audio_driver = { esd_audio_set_format, esd_audio_process_buffer }; nkeynes@66: