Changeset 466:cffb75652a09 in roaraudio for libroararts
- Timestamp:
- 08/12/08 17:40:25 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroararts/libartsc.c
r465 r466 10 10 int fh; 11 11 int blocking; 12 int block_size; 13 int dir; 12 14 }; 13 15 … … 61 63 struct _libroarartsc_stream * s = malloc(sizeof(struct _libroarartsc_stream)); 62 64 struct roar_meta meta; 65 struct roar_stream_info info; 63 66 64 67 if ( !s ) … … 71 74 } 72 75 76 s->dir = ROAR_DIR_PLAY; 77 73 78 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 } 74 87 75 88 if ( name && *name ) { … … 98 111 struct _libroarartsc_stream * s = malloc(sizeof(struct _libroarartsc_stream)); 99 112 struct roar_meta meta; 113 struct roar_stream_info info; 100 114 101 115 if ( !s ) … … 108 122 } 109 123 124 s->dir = ROAR_DIR_RECORD; 125 110 126 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 } 111 135 112 136 if ( name && *name ) { … … 189 213 } 190 214 191 return -1;215 return arts_stream_get(stream, param); 192 216 } 193 217 … … 202 226 int arts_stream_get(arts_stream_t stream, arts_parameter_t param) { 203 227 struct _libroarartsc_stream * s = (struct _libroarartsc_stream *) stream; 204 struct roar_stream_info info; 228 fd_set sl; 229 struct timeval tv; 205 230 206 231 if ( !stream ) … … 208 233 209 234 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; 212 249 } 213 return -1; 250 251 return 0; 252 } else if ( param == ARTS_P_BUFFER_SIZE ) { 253 return s->block_size*2; 214 254 } else if ( param == ARTS_P_PACKET_COUNT ) { 215 255 return 1;
Note: See TracChangeset
for help on using the changeset viewer.