Changeset 491:9f0ecaa578d4 in roaraudio
- Timestamp:
- 08/14/08 05:06:07 (16 years ago)
- Branch:
- default
- Phase:
- public
- Tags:
- current-working
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/streams.c
r389 r491 66 66 67 67 g_streams[i] = (struct roar_stream_server*)n; 68 ROAR_DBG("streams_new(void): n->id=%i", n->id); 68 69 ROAR_DBG("streams_new(void) = %i", i); 69 70 return i; … … 79 80 80 81 ROAR_DBG("streams_delete(id=%i) = ?", id); 82 ROAR_DBG("streams_delete(id=%i): g_streams[id]->id=%i", id, ROAR_STREAM(g_streams[id])->id); 81 83 82 84 if ( g_streams[id]->codecfilter != -1 ) { … … 112 114 return -1; 113 115 116 ROAR_DBG("streams_set_client(id=%i): g_streams[id]->id=%i", id, ROAR_STREAM(g_streams[id])->id); 114 117 g_streams[id]->client = client; 115 118 … … 123 126 return -1; 124 127 128 ROAR_DBG("streams_set_fh(id=%i): g_streams[id]->id=%i", id, ROAR_STREAM(g_streams[id])->id); 129 125 130 ((struct roar_stream *)g_streams[id])->fh = fh; 126 131 127 132 codecfilter_open(&(g_streams[id]->codecfilter_inst), &(g_streams[id]->codecfilter), NULL, 128 ((struct roar_stream *)g_streams[id])->info.codec, g_streams[id]);129 130 dir = ((struct roar_stream *)g_streams[id])->dir;133 ROAR_STREAM(g_streams[id])->info.codec, g_streams[id]); 134 135 dir = ROAR_STREAM(g_streams[id])->dir; 131 136 132 137 if ( dir == ROAR_DIR_MONITOR || dir == ROAR_DIR_RECORD ) { … … 204 209 size_t todo_in; 205 210 size_t len, outlen; 211 size_t mul = 1, div = 1; 206 212 void * rest = NULL; 207 213 void * in = NULL; … … 226 232 227 233 // calc todo_in 228 todo_in = (todo*stream_info->rate)/info->rate; 229 // todo_in = ROAR_OUTPUT_CALC_OUTBUFSIZE(stream_info); 234 todo_in = ROAR_OUTPUT_CALC_OUTBUFSIZE(stream_info); 235 236 // calc mul and div: 237 mul = todo / todo_in; 238 div = todo_in / todo; 239 240 if ( mul == 0 ) { 241 mul = 1; 242 } else { 243 div = 1; 244 } 245 246 ROAR_DBG("streams_fill_mixbuffer(*): mul=%i, div=%i", mul, div); 230 247 231 248 ROAR_DBG("streams_fill_mixbuffer(*): rest=%p, todo=%i->%i (in->out)", rest, todo_in, todo); … … 303 320 304 321 // calc how much outlen this has... 305 outlen = (len * info->rate)/stream_info->rate;322 outlen = (len * mul) / div; 306 323 307 324 ROAR_DBG("streams_fill_mixbuffer(*): outlen = %i, buf = %p, len = %i", outlen, in, len); … … 349 366 // hey! we have roar_conv() :) 350 367 351 if ( roar_conv(rest, in, 8*len / stream_info->bits, stream_info, info) == -1 ) { 352 ROAR_WARN("streams_fill_mixbuffer(*): can not convert input!"); 353 return -1; 354 } 355 356 if ( change_vol(rest, info->bits, rest, 8*outlen / info->bits, info->channels, &(((struct roar_stream_server*)g_streams[id])->mixer)) == -1 ) { 357 ROAR_WARN("streams_fill_mixbuffer(*): can not change volume"); 358 return -1; 359 } 368 if ( roar_conv(rest, in, 8*len / stream_info->bits, stream_info, info) == -1 ) 369 return -1; 370 } 371 372 if ( change_vol(rest, info->bits, rest, 8*outlen / info->bits, info->channels, &(((struct roar_stream_server*)g_streams[id])->mixer)) == -1 ) 373 return -1; 360 374 361 375 // we habe outlen bytes more... 362 todo -= outlen; 363 rest += outlen; 364 todo_in -= len; 365 366 roar_buffer_get_len(buf, &len); 367 ROAR_DBG("streams_fill_mixbuffer(*): New length of buffer %p is %i", buf, len); 368 if ( len == 0 ) { 369 roar_buffer_delete(buf, NULL); 370 } else { 371 stream_unshift_buffer(id, buf); 372 } 376 todo -= outlen; 377 rest += outlen; 378 todo_in -= len; 379 380 roar_buffer_get_len(buf, &len); 381 ROAR_DBG("streams_fill_mixbuffer(*): New length of buffer %p is %i", buf, len); 382 if ( len == 0 ) { 383 roar_buffer_delete(buf, NULL); 384 } else { 385 stream_unshift_buffer(id, buf); 373 386 } 374 387 } … … 404 417 return 0; 405 418 } 419 406 420 407 421 int streams_get_mixbuffers (void *** bufferlist, struct roar_audio_info * info, unsigned int pos) {
Note: See TracChangeset
for help on using the changeset viewer.