Changeset 466:cffb75652a09 in roaraudio


Ignore:
Timestamp:
08/12/08 17:40:25 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added some more calls to arts_stream_get() and arts_stream_set(), XMMS is working now!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroararts/libartsc.c

    r465 r466  
    1010 int fh; 
    1111 int blocking; 
     12 int block_size; 
     13 int dir; 
    1214}; 
    1315 
     
    6163 struct _libroarartsc_stream * s = malloc(sizeof(struct _libroarartsc_stream)); 
    6264 struct roar_meta meta; 
     65 struct roar_stream_info info; 
    6366 
    6467 if ( !s ) 
     
    7174 } 
    7275 
     76 s->dir = ROAR_DIR_PLAY; 
     77 
    7378 s->blocking = 1; 
     79 
     80 if ( roar_stream_get_info(_libroarartsc_connection, &(s->stream), &info) != -1 ) { 
     81  s->block_size = info.block_size; 
     82 } else { 
     83  close(s->fh); 
     84  free(s); 
     85  return NULL; 
     86 } 
    7487 
    7588 if ( name && *name ) { 
     
    98111 struct _libroarartsc_stream * s = malloc(sizeof(struct _libroarartsc_stream)); 
    99112 struct roar_meta meta; 
     113 struct roar_stream_info info; 
    100114 
    101115 if ( !s ) 
     
    108122 } 
    109123 
     124 s->dir = ROAR_DIR_RECORD; 
     125 
    110126 s->blocking = 1; 
     127 
     128 if ( roar_stream_get_info(_libroarartsc_connection, &(s->stream), &info) != -1 ) { 
     129  s->block_size = info.block_size; 
     130 } else { 
     131  close(s->fh); 
     132  free(s); 
     133  return NULL; 
     134 } 
    111135 
    112136 if ( name && *name ) { 
     
    189213 } 
    190214 
    191  return -1; 
     215 return arts_stream_get(stream, param); 
    192216} 
    193217 
     
    202226int arts_stream_get(arts_stream_t stream, arts_parameter_t param) { 
    203227 struct _libroarartsc_stream * s = (struct _libroarartsc_stream *) stream; 
    204  struct roar_stream_info info; 
     228 fd_set sl; 
     229 struct timeval tv; 
    205230 
    206231 if ( !stream ) 
     
    208233 
    209234 if ( param == ARTS_P_PACKET_SIZE ) { 
    210   if ( roar_stream_get_info(_libroarartsc_connection, &(s->stream), &info) != -1 ) { 
    211    return info.block_size; 
     235   return s->block_size; 
     236 } else if ( param == ARTS_P_BUFFER_SPACE ) { 
     237  FD_ZERO(&sl); 
     238  FD_SET(s->fh, &sl); 
     239 
     240  tv.tv_sec  = 0; 
     241  tv.tv_usec = 1; 
     242 
     243  if ( s->dir == ROAR_DIR_PLAY ) { 
     244   if (select(s->fh + 1, NULL, &sl, NULL, &tv) > 0) 
     245    return s->block_size; 
     246  } else { 
     247   if (select(s->fh + 1, &sl, NULL, NULL, &tv) > 0) 
     248    return s->block_size; 
    212249  } 
    213   return -1; 
     250 
     251  return 0; 
     252 } else if ( param == ARTS_P_BUFFER_SIZE ) { 
     253   return s->block_size*2; 
    214254 } else if ( param == ARTS_P_PACKET_COUNT ) { 
    215255  return 1; 
Note: See TracChangeset for help on using the changeset viewer.