Changeset 1842:8c8a003773ca in roaraudio for roard
- Timestamp:
- 05/23/09 04:17:05 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/include/streams.h
r1609 r1842 72 72 int flags; 73 73 uint_least32_t delay; 74 char * name; 74 75 } * g_streams[ROAR_STREAMS_MAX]; 75 76 … … 99 100 int streams_get_flag (int id, int flag); 100 101 102 int streams_set_name (int id, char * name); 103 char * streams_get_name (int id); 104 101 105 int streams_calc_delay (int id); 102 106 int streams_set_mixer (int id); -
roard/req.c
r1840 r1842 508 508 uint16_t * d = (uint16_t *) mes->data; 509 509 int i; 510 char * str; 510 511 511 512 if ( mes->datalen != 4 ) … … 516 517 } 517 518 518 if ( streams_get(mes->stream, &ss) == -1 ) { 519 ROAR_WARN("req_on_get_stream_para(*): request on non existing (or other error?) stream %i", mes->stream); 520 return -1; 521 } 522 523 if ( streams_calc_delay(mes->stream) == -1 ) { 524 ROAR_WARN("req_on_get_stream_para(*): can not calc delay for stream %i", mes->stream); 525 } 526 527 s = ROAR_STREAM(ss); 528 529 audio_info = &(s->info); 530 531 if ( d[0] != 0 || d[1] != 1 ) { 519 if ( d[0] != 0 ) { 532 520 ROAR_WARN("req_on_get_stream_para(*): unsupported command version: %i, %i", d[0], d[1]); 533 521 return -1; 534 522 } 535 523 536 mes->datalen = 2*8; 537 538 d[2] = ROAR_OUTPUT_CALC_OUTBUFSIZE(audio_info); 539 d[3] = ss->pre_underruns; 540 d[4] = ss->post_underruns; 541 d[5] = ss->codec_orgi; 542 d[6] = ss->flags | (ss->primary ? ROAR_FLAG_PRIMARY : 0) | (ss->driver_id != -1 ? ROAR_FLAG_OUTPUT : 0); 543 d[7] = ss->delay/1000; 544 545 ROAR_DBG("req_on_get_stream_para(*): ss->driver_id=%i", ss->driver_id); 546 547 ROAR_DBG("req_on_get_stream_para(*): delay=%i, send delay=%i", ss->delay, d[7]); 548 549 for (i = 0; i < mes->datalen/2; i++) { 550 d[i] = ROAR_HOST2NET16(d[i]); 551 } 552 553 mes->pos = s->pos; 524 switch (d[1]) { 525 case ROAR_STREAM_PARA_INFO: 526 if ( streams_get(mes->stream, &ss) == -1 ) { 527 ROAR_WARN("req_on_get_stream_para(*): request on non existing (or other error?) stream %i", mes->stream); 528 return -1; 529 } 530 531 if ( streams_calc_delay(mes->stream) == -1 ) { 532 ROAR_WARN("req_on_get_stream_para(*): can not calc delay for stream %i", mes->stream); 533 } 534 535 s = ROAR_STREAM(ss); 536 537 audio_info = &(s->info); 538 539 mes->datalen = 2*8; 540 541 d[2] = ROAR_OUTPUT_CALC_OUTBUFSIZE(audio_info); 542 d[3] = ss->pre_underruns; 543 d[4] = ss->post_underruns; 544 d[5] = ss->codec_orgi; 545 d[6] = ss->flags | (ss->primary ? ROAR_FLAG_PRIMARY : 0) | (ss->driver_id != -1 ? ROAR_FLAG_OUTPUT : 0); 546 d[7] = ss->delay/1000; 547 548 ROAR_DBG("req_on_get_stream_para(*): ss->driver_id=%i", ss->driver_id); 549 550 ROAR_DBG("req_on_get_stream_para(*): delay=%i, send delay=%i", ss->delay, d[7]); 551 552 for (i = 0; i < mes->datalen/2; i++) { 553 d[i] = ROAR_HOST2NET16(d[i]); 554 } 555 556 mes->pos = s->pos; 557 break; 558 559 case ROAR_STREAM_PARA_NAME: 560 str = streams_get_name(mes->stream); 561 562 if ( str == NULL ) 563 return -1; 564 565 mes->datalen = 4 + strlen(str); 566 567 if ( mes->datalen > LIBROAR_BUFFER_MSGDATA ) 568 return -1; 569 570 strncpy(((char*)&(mes->data))+4, str, mes->datalen); 571 572 d[0] = ROAR_HOST2NET16(d[0]); 573 d[1] = ROAR_HOST2NET16(d[1]); 574 break; 575 576 default: 577 ROAR_WARN("req_on_get_stream_para(*): unsupported command: %i", d[1]); 578 return -1; 579 } 554 580 555 581 mes->cmd = ROAR_CMD_OK; … … 568 594 } 569 595 570 if ( d[0] != 0 || d[1] != 2) {596 if ( d[0] != 0 || d[1] != ROAR_STREAM_PARA_FLAGS ) { 571 597 ROAR_WARN("req_on_set_stream_para(*): unsupported command version: %i, %i", d[0], d[1]); 572 598 return -1; -
roard/streams.c
r1837 r1842 80 80 n->pos = 0; 81 81 82 s->name = NULL; 83 82 84 s->client = -1; 83 85 s->socktype = ROAR_SOCKET_TYPE_UNKNOWN; … … 190 192 prim = s->primary; 191 193 194 if ( s->name != NULL ) 195 free(s->name); 196 192 197 free(s); 193 198 … … 419 424 return g_streams[id]->flags & flag ? 1 : 0; 420 425 } 426 427 int streams_set_name (int id, char * name) { 428 char * str; 429 430 if ( g_streams[id] == NULL ) 431 return -1; 432 433 if ( (str = strdup(name)) == NULL ) 434 return -1; 435 436 if ( g_streams[id]->name != NULL ) 437 free(g_streams[id]->name); 438 439 g_streams[id]->name = str; 440 } 441 442 char * streams_get_name (int id) { 443 if ( g_streams[id] == NULL ) 444 return NULL; 445 446 return g_streams[id]->name; 447 } 448 421 449 422 450 int streams_calc_delay (int id) {
Note: See TracChangeset
for help on using the changeset viewer.