Changeset 5624:ec1593cc8525 in roaraudio for roard
- Timestamp:
- 08/18/12 02:04:07 (12 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter_flac.c
r5381 r5624 116 116 const FLAC__StreamMetadata_VorbisComment * vc; 117 117 FLAC__uint32 i; 118 struct roar_stream_rpg rpg; 118 119 const char * key, * value; 119 120 char keycopy[ROAR_META_MAX_NAMELEN]; 120 121 int type; 121 float rpg_track = 0, rpg_album = 0 ;122 float rpg_track = 0, rpg_album = 0, rpg_final = 0; 122 123 123 124 if ( metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT ) { … … 171 172 } 172 173 173 if ( rpg_album ) { 174 self->ss->mixer.rpg_div = 2718; // = int(exp(1)*1000) 175 self->ss->mixer.rpg_mul = (float)rpg_album*2718; 176 } else if ( rpg_track ) { 177 self->ss->mixer.rpg_div = 2718; 178 self->ss->mixer.rpg_mul = (float)rpg_track*2718; 174 if ( streams_get_rpg(ROAR_STREAM(self->ss)->id, &rpg) != -1 ) { 175 rpg_final = 0; 176 177 switch (rpg.mode) { 178 case ROAR_RPGMODE_NONE: rpg_final = 0.; break; 179 case ROAR_RPGMODE_USER: rpg_final = -1.; break; 180 case ROAR_RPGMODE_ALBUM: rpg_final = rpg_album; break; 181 case ROAR_RPGMODE_TRACK: rpg_final = rpg_track; break; 182 case ROAR_RPGMODE_ALBUMTRACK: rpg_final = rpg_album ? rpg_album : rpg_track; break; 183 case ROAR_RPGMODE_TRACKALBUM: rpg_final = rpg_track ? rpg_track : rpg_album; break; 184 } 185 186 if ( rpg_final > 0 ) { 187 self->ss->mixer.rpg_div = 2718; 188 self->ss->mixer.rpg_mul = (float)rpg_final*2718; 189 } else if ( !rpg_final ) { 190 self->ss->mixer.rpg_div = 1; 191 self->ss->mixer.rpg_mul = 1; 192 } 179 193 } 180 194 -
roard/codecfilter_vorbis.c
r5381 r5624 305 305 char key[ROAR_META_MAX_NAMELEN] = {0}, value[LIBROAR_BUFFER_MSGDATA] = {0}; 306 306 struct roar_stream * s = ROAR_STREAM(self->stream); 307 struct roar_stream_rpg rpg; 307 308 int type; 308 309 int j, h = 0; 309 float rpg_track = 0, rpg_album = 0 ;310 float rpg_track = 0, rpg_album = 0, rpg_final; 310 311 int meta_ok; 311 312 … … 373 374 } 374 375 375 if ( rpg_album ) { 376 self->stream->mixer.rpg_div = 2718; // = int(exp(1)*1000) 377 self->stream->mixer.rpg_mul = (float)rpg_album*2718; 378 } else if ( rpg_track ) { 379 self->stream->mixer.rpg_div = 2718; 380 self->stream->mixer.rpg_mul = (float)rpg_track*2718; 376 if ( streams_get_rpg(ROAR_STREAM(self->stream)->id, &rpg) != -1 ) { 377 rpg_final = 0; 378 379 switch (rpg.mode) { 380 case ROAR_RPGMODE_NONE: rpg_final = 0.; break; 381 case ROAR_RPGMODE_USER: rpg_final = -1.; break; 382 case ROAR_RPGMODE_ALBUM: rpg_final = rpg_album; break; 383 case ROAR_RPGMODE_TRACK: rpg_final = rpg_track; break; 384 case ROAR_RPGMODE_ALBUMTRACK: rpg_final = rpg_album ? rpg_album : rpg_track; break; 385 case ROAR_RPGMODE_TRACKALBUM: rpg_final = rpg_track ? rpg_track : rpg_album; break; 386 } 387 388 if ( rpg_final > 0 ) { 389 self->stream->mixer.rpg_div = 2718; 390 self->stream->mixer.rpg_mul = (float)rpg_final*2718; 391 } else if ( !rpg_final ) { 392 self->stream->mixer.rpg_div = 1; 393 self->stream->mixer.rpg_mul = 1; 394 } 381 395 } 382 396 -
roard/include/roard.h
r5414 r5624 196 196 uint32_t flags; 197 197 struct { 198 uint32_t flags;198 uint32_t flags; 199 199 struct roar_mixer_settings mixer; 200 200 int mixer_channels; 201 int rpgmode; 201 202 } streams[ROAR_DIR_DIRIDS]; 202 203 char * location; -
roard/include/streams.h
r5381 r5624 116 116 size_t single_sink_c; 117 117 size_t single_sink_self_c; 118 int rpgmode; 118 119 } * g_streams[ROAR_STREAMS_MAX]; 119 120 … … 177 178 int streams_set_map (int id, char * map, size_t len); 178 179 180 int streams_get_rpg (int id, struct roar_stream_rpg * rpg); 181 int streams_set_rpg (int id, const struct roar_stream_rpg * rpg); 182 179 183 int streams_ltm_ctl (int id, int mt, int window, int cmd); 180 184 int streams_ltm_calc (int id, struct roar_audio_info * info, void * data, size_t len); -
roard/req.c
r5608 r5624 1118 1118 struct roar_audio_info * audio_info; 1119 1119 struct roar_stream_ltm * ltm; 1120 struct roar_stream_rpg rpg; 1120 1121 uint16_t * d = (uint16_t *) mes->data; 1121 1122 int64_t * d64 = ( int64_t *) mes->data; … … 1348 1349 break; 1349 1350 1351 case ROAR_STREAM_PARA_RPG: 1352 if ( streams_get_rpg(mes->stream, &rpg) == -1 ) { 1353 return -1; 1354 } 1355 1356 mes->datalen = 2*5; 1357 1358 d[2] = rpg.mode; 1359 d[3] = rpg.mul; 1360 d[4] = rpg.div; 1361 1362 for (i = 0; i < mes->datalen/2; i++) { 1363 d[i] = ROAR_HOST2NET16(d[i]); 1364 } 1365 break; 1366 1350 1367 default: 1351 1368 ROAR_WARN("req_on_get_stream_para(*): unsupported command: %i", d[1]); … … 1360 1377 int req_on_set_stream_para (int client, struct roar_message * mes, char ** data, uint32_t flags[2]) { 1361 1378 struct roar_stream_server * ss; 1379 struct roar_stream_rpg rpg; 1362 1380 uint16_t * d = (uint16_t *) mes->data; 1363 1381 uint32_t tmp, tmp2, flagstore; … … 1470 1488 } 1471 1489 break; 1490 case ROAR_STREAM_PARA_RPG: 1491 if ( mes->datalen != (5 * 2) ) 1492 return -1; 1493 1494 for (i = 2; i < mes->datalen/2; i++) { 1495 d[i] = ROAR_NET2HOST16(d[i]); 1496 } 1497 1498 rpg.mode = d[2]; 1499 rpg.mul = d[3]; 1500 rpg.div = d[4]; 1501 1502 if ( streams_set_rpg(mes->stream, &rpg) == -1 ) 1503 return -1; 1504 break; 1472 1505 default: 1473 1506 ROAR_WARN("req_on_set_stream_para(*): unsupported command version: %i, %i", d[0], d[1]); -
roard/roard.c
r5619 r5624 523 523 g_config->streams[i].mixer.scale = 65535; 524 524 g_config->streams[i].mixer.mixer[0] = g_config->streams[i].mixer.scale; 525 g_config->streams[i].rpgmode = ROAR_RPGMODE_ALBUMTRACK; 525 526 } 526 527 -
roard/streams.c
r5415 r5624 234 234 s->mixerstream = NULL; 235 235 #endif 236 237 s->rpgmode = ROAR_RPGMODE_DEFAULT; 236 238 237 239 //roardsp_fchain_init(&(s->fc)); … … 1508 1510 } 1509 1511 1512 int streams_get_rpg (int id, struct roar_stream_rpg * rpg) { 1513 _CHECK_SID(id); 1514 1515 if ( rpg == NULL ) { 1516 roar_err_set(ROAR_ERROR_FAULT); 1517 return -1; 1518 } 1519 1520 rpg->mode = g_streams[id]->rpgmode; 1521 rpg->mul = g_streams[id]->mixer.rpg_mul; 1522 rpg->div = g_streams[id]->mixer.rpg_div; 1523 1524 if ( rpg->mode == ROAR_RPGMODE_DEFAULT ) 1525 rpg->mode = g_config->streams[ROAR_STREAM(g_streams[id])->dir].rpgmode; 1526 1527 return 0; 1528 } 1529 1530 int streams_set_rpg (int id, const struct roar_stream_rpg * rpg) { 1531 int mode; 1532 1533 _CHECK_SID(id); 1534 1535 if ( rpg == NULL ) { 1536 roar_err_set(ROAR_ERROR_FAULT); 1537 return -1; 1538 } 1539 1540 // test if we have a valid value at all. 1541 if ( rpg->mode > ROAR_RPGMODE_TRACKALBUM || rpg->mode < ROAR_RPGMODE_DEFAULT ) { 1542 roar_err_set(ROAR_ERROR_RANGE); 1543 return -1; 1544 } 1545 1546 mode = g_streams[id]->rpgmode = rpg->mode; 1547 1548 if ( mode == ROAR_RPGMODE_DEFAULT ) 1549 mode = g_config->streams[ROAR_STREAM(g_streams[id])->dir].rpgmode; 1550 1551 switch (mode) { 1552 case ROAR_RPGMODE_NONE: 1553 g_streams[id]->mixer.rpg_mul = 1; 1554 g_streams[id]->mixer.rpg_div = 1; 1555 break; 1556 case ROAR_RPGMODE_USER: 1557 g_streams[id]->mixer.rpg_mul = rpg->mul; 1558 g_streams[id]->mixer.rpg_div = rpg->div; 1559 break; 1560 } 1561 1562 return 0; 1563 } 1564 1565 1510 1566 int streams_ltm_ctl (int id, int mt, int window, int cmd) { 1511 1567 struct roar_stream_server * ss;
Note: See TracChangeset
for help on using the changeset viewer.