Changeset 1499:e5cd1b5eb592 in roaraudio


Ignore:
Timestamp:
03/31/09 20:51:09 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

check for ROAR_HAVE_IO_POSIX, converted source cf to new vio interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/sources.c

    r1186 r1499  
    4444 
    4545int sources_add (char * driver, char * device, char * container, char * options, int primary) { 
    46  if ( strcmp(driver, "raw") == 0 ) { 
     46 if (0) { 
     47#ifdef ROAR_HAVE_IO_POSIX 
     48 } else if ( strcmp(driver, "raw") == 0 ) { 
    4749  return sources_add_raw(driver, device, container, options, primary); 
    4850 } else if ( strcmp(driver, "wav") == 0 ) { 
    4951  return sources_add_wav(driver, device, container, options, primary); 
     52#endif 
    5053 } else if ( strcmp(driver, "cf") == 0 ) { 
    5154  return sources_add_cf(driver, device, container, options, primary); 
     
    5760} 
    5861 
     62#ifdef ROAR_HAVE_IO_POSIX 
    5963int sources_add_raw (char * driver, char * device, char * container, char * options, int primary) { 
    6064 int stream; 
     
    8791 return 0; 
    8892} 
    89  
     93#endif 
     94 
     95#ifdef ROAR_HAVE_IO_POSIX 
    9096int sources_add_wav (char * driver, char * device, char * container, char * options, int primary) { 
    9197 int stream; 
     
    114120 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    115121 
    116   memcpy(&(s->info.rate    ), buf+24, 4); 
    117   memcpy(&(s->info.channels), buf+22, 2); 
    118   memcpy(&(s->info.bits    ), buf+34, 2); 
     122 memcpy(&(s->info.rate    ), buf+24, 4); 
     123 memcpy(&(s->info.channels), buf+22, 2); 
     124 memcpy(&(s->info.bits    ), buf+34, 2); 
    119125 
    120126 s->dir        = ROAR_DIR_PLAY; 
     
    128134 return 0; 
    129135} 
     136#endif 
     137 
     138#define _ret(x) roar_vio_close(vio); streams_delete(stream); return (x) 
    130139 
    131140int sources_add_cf (char * driver, char * device, char * container, char * options, int primary) { 
    132141 int  stream; 
    133  int  fh; 
    134142 int  codec; 
    135143 int  len; 
    136144 char buf[64]; 
    137  struct roar_stream * s; 
    138  
     145 struct roar_stream    * s; 
     146 struct roar_vio_calls * vio; 
     147 
     148 if ( (stream = streams_new()) == -1 ) { 
     149  return -1; 
     150 } 
     151 
     152 streams_get(stream, (struct roar_stream_server **)&s); 
     153 
     154 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
     155 
     156 s->dir        = ROAR_DIR_PLAY; 
     157 s->pos_rel_id = -1; 
     158 
     159/* 
    139160 if ( (fh = open(device, O_RDONLY, 0644)) == -1 ) { 
    140161  return -1; 
     162 } 
     163*/ 
     164 
     165 vio = &(ROAR_STREAM_SERVER(s)->vio); 
     166 
     167 if ( roar_vio_open_file(vio, device, O_RDONLY, 0644) == -1 ) { 
     168  _ret(-1); 
    141169 } 
    142170 
    143171 // TODO: finy out a better way of doing auto detetion without need for seek! 
    144172 if ( options == NULL ) { 
    145   if ( (len = read(fh, buf, 64)) < 1 ) { 
    146    close(fh); 
    147    return -1; 
    148   } 
    149  
    150   if ( lseek(fh, -len, SEEK_CUR) == (off_t)-1 ) { 
    151    close(fh); 
    152    return -1; 
     173  if ( (len = roar_vio_read(vio, buf, 64)) < 1 ) { 
     174   _ret(-1); 
     175  } 
     176 
     177  if ( roar_vio_lseek(vio, -len, SEEK_CUR) == (off_t)-1 ) { 
     178   _ret(-1); 
    153179  } 
    154180 
    155181  if ( (codec = roar_file_codecdetect(buf, len)) == -1 ) { 
    156    close(fh); 
    157    return -1; 
     182   _ret(-1); 
    158183  } 
    159184 } else { 
     
    162187 
    163188  if ( (codec = roar_str2codec(options)) == -1 ) { 
    164    close(fh); 
    165    return -1; 
    166   } 
    167  } 
    168  
    169  if ( (stream = streams_new()) == -1 ) { 
    170   close(fh); 
    171   return -1; 
    172  } 
    173  
    174  streams_get(stream, (struct roar_stream_server **)&s); 
    175  
    176  memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
    177  
    178  s->dir        = ROAR_DIR_PLAY; 
    179  s->pos_rel_id = -1; 
     189   _ret(-1); 
     190  } 
     191 } 
     192 
    180193 s->info.codec = codec; 
    181194 
    182195 ROAR_STREAM_SERVER(s)->codec_orgi = codec; 
    183196 
    184  streams_set_fh(stream, fh); 
     197 streams_set_fh(stream, -1); 
    185198 streams_set_socktype(stream, ROAR_SOCKET_TYPE_FILE); 
    186199 
     
    193206 return 0; 
    194207} 
     208 
     209#undef _ret 
     210 
    195211 
    196212int sources_add_roar (char * driver, char * device, char * container, char * options, int primary) { 
Note: See TracChangeset for help on using the changeset viewer.