Changeset 3591:5519fe5c1e85 in roaraudio
- Timestamp:
- 02/28/10 05:55:55 (14 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TODO
r3589 r3591 16 16 * (0.3 W/H/-) Get into Debian 17 17 * (0.3 W/N/-) Clean and update libroarpulse 18 * (0.3 W/h/-) Cleanup driver: DMX, ESD,Roar18 * (0.3 W/h/-) Cleanup driver: DMX, Roar 19 19 * (0.3 W/N/-) Implement ALSA support 20 20 * (0.3 W/L/-) Implement support for ICY Meta Data -
roard/driver.c
r3589 r3591 31 31 #ifdef ROAR_HAVE_ESD 32 32 { "esd", "EsounD audio driver", "localhost, remote.host.dom", DRV_FLAG_NONE, ROAR_SUBSYS_WAVEFORM, 33 NULL, driver_esd_close, driver_esd_open_vio},33 NULL, NULL, driver_esd_open_vio}, 34 34 #endif 35 35 { "roar", "RoarAudio driver", "localhost, remote.host.dom", DRV_FLAG_NONE, -
roard/driver_esd.c
r3517 r3591 2 2 3 3 /* 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008 4 * Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2010 5 5 * 6 6 * This file is part of roard a part of RoarAudio, … … 33 33 */ 34 34 35 int driver_esd_open_ sysio(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info) {35 int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) { 36 36 esd_format_t format = ESD_STREAM | ESD_PLAY; 37 37 char name[80] = "roard"; 38 int * di = malloc(sizeof(int)*2);39 38 40 if ( di == NULL)39 if ( fh != -1 ) 41 40 return -1; 42 41 43 *inst = (DRIVER_USERDATA_T)di; 42 if ( info->bits >= 16 ) { 43 info->bits = 16; 44 format |= ESD_BITS16; 45 info->codec = ROAR_CODEC_PCM_S; 46 } else if ( info->bits < 16 ) { 47 info->bits = 8; 48 format |= ESD_BITS8; 49 info->codec = ROAR_CODEC_PCM_U; 50 } 44 51 45 format |= info->bits == 16 ? ESD_BITS16 : ESD_BITS8; 46 format |= info->channels == 2 ? ESD_STEREO : ESD_MONO; 52 if ( info->channels >= 2 ) { 53 info->channels = 2; 54 format |= ESD_STEREO; 55 } else { 56 info->channels = 1; 57 format |= ESD_MONO; 58 } 47 59 48 di[1] = info->bits == 8;60 fh = esd_play_stream_fallback(format, info->rate, device, name); 49 61 50 di[0] = esd_play_stream_fallback(format, info->rate, device, name);62 shutdown(fh, SHUT_RD); 51 63 52 shutdown(di[0], SHUT_RD); 53 54 if ( di[0] == -1 ) { 55 free(di); 56 *inst = NULL; 57 return -1; 58 } 64 roar_vio_set_fh(inst, fh); 59 65 60 66 return 0; 61 67 } 62 68 63 int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {64 65 if ( fh != -1 )66 return -1;67 68 inst->read = driver_esd_read;69 inst->write = driver_esd_write;70 inst->nonblock = driver_esd_nonblock;71 inst->sync = driver_esd_sync;72 73 return driver_esd_open_sysio(&(inst->inst), device, info);74 }75 76 int driver_esd_close(DRIVER_USERDATA_T inst) {77 int fh;78 79 inst = ((struct roar_vio_calls *)inst)->inst;80 81 fh = *(int*)inst;82 83 free((void*)inst);84 85 return esd_close(fh);86 }87 88 ssize_t driver_esd_write(struct roar_vio_calls * inst, void * buf, size_t len) {89 int * di = (int*)((struct roar_vio_calls *)inst)->inst;90 91 if ( di[1] )92 roar_conv_codec_s2u8(buf, buf, len);93 94 return write(di[0], buf, len);95 }96 97 ssize_t driver_esd_read(struct roar_vio_calls * inst, void * buf, size_t len) {98 return read(*(int*)((struct roar_vio_calls *)inst)->inst, buf, len);99 }100 101 int driver_esd_nonblock(struct roar_vio_calls * vio, int state) {102 return roar_socket_nonblock(*(int*)vio->inst, state);103 }104 105 int driver_esd_sync (struct roar_vio_calls * vio) {106 return ROAR_FDATASYNC(*(int*)vio->inst);107 }108 69 109 70 #endif -
roard/include/driver_esd.h
r3517 r3591 27 27 #define _DRIVER_ESD_H_ 28 28 29 int driver_esd_open_sysio(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info);30 29 int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream); 31 int driver_esd_close(DRIVER_USERDATA_T inst);32 int driver_esd_pause(DRIVER_USERDATA_T inst, int newstate);33 ssize_t driver_esd_write(struct roar_vio_calls * inst, void * buf, size_t len);34 ssize_t driver_esd_read(struct roar_vio_calls * inst, void * buf, size_t len);35 int driver_esd_nonblock(struct roar_vio_calls * vio, int state);36 int driver_esd_sync (struct roar_vio_calls * vio);37 int driver_esd_flush(DRIVER_USERDATA_T inst);38 30 39 31 #endif
Note: See TracChangeset
for help on using the changeset viewer.