Changeset 3542:4a10d68e4c70 in roaraudio for roard/streams.c
- Timestamp:
- 02/20/10 01:28:43 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/streams.c
r3539 r3542 318 318 roardsp_chanlist_init(ss->chanmap.in, ROAR_STREAM(ss)->info.channels, ROARDSP_CHANLIST_MAP_ROARAUDIO); 319 319 roardsp_chanlist_init(ss->chanmap.out, ROAR_STREAM(ss)->info.channels, ROARDSP_CHANLIST_MAP_ROARAUDIO); 320 roardsp_chanmap_calc(&(ss->chanmap), ROARDSP_CHANMAP_MAP, 0); 320 roardsp_chanmap_calc(&(ss->chanmap), ROARDSP_CHANMAP_MAP, 0); // MAP and INVMAP are the same when in==out 321 321 break; 322 322 #ifndef ROAR_WITHOUT_DCOMP_MIDI … … 415 415 } 416 416 417 int streams_get_ssdir (int id) { 418 struct roar_stream_server * ss; 419 420 _CHECK_SID(id); 421 422 if ( (ss = g_streams[id]) == NULL ) 423 return -1; 424 425 switch (ROAR_STREAM(ss)->dir) { 426 case ROAR_DIR_PLAY: 427 case ROAR_DIR_MIDI_IN: 428 case ROAR_DIR_LIGHT_IN: 429 case ROAR_DIR_RAW_IN: 430 case ROAR_DIR_COMPLEX_IN: 431 return STREAM_DIR_IN; 432 break; 433 case ROAR_DIR_RECORD: 434 case ROAR_DIR_MONITOR: 435 case ROAR_DIR_OUTPUT: 436 case ROAR_DIR_MIDI_OUT: 437 case ROAR_DIR_LIGHT_OUT: 438 case ROAR_DIR_RAW_OUT: 439 case ROAR_DIR_COMPLEX_OUT: 440 return STREAM_DIR_OUT; 441 break; 442 case ROAR_DIR_MIXING: 443 return STREAM_DIR_NONE; 444 break; 445 case ROAR_DIR_FILTER: 446 case ROAR_DIR_BIDIR: 447 return STREAM_DIR_BIDIR; 448 break; 449 case ROAR_DIR_THRU: 450 return streams_get_ssdir(ROAR_STREAM(ss)->pos_rel_id); 451 break; 452 } 453 454 return -1; 455 } 456 417 457 #define _err() streams_delete(id); return -1; 418 458 int streams_new_virtual (int parent, struct roar_stream_server ** stream) { … … 895 935 896 936 return driver_set_volume(id, &(ss->mixer)); 937 } 938 939 int streams_set_map (int id, char * map, size_t len) { 940 struct roar_stream_server * ss; 941 int ssdir; 942 943 _CHECK_SID(id); 944 945 if ( (ss = g_streams[id]) == NULL ) 946 return -1; 947 948 ssdir = streams_get_ssdir(id); 949 if ( ssdir != STREAM_DIR_IN && ssdir != STREAM_DIR_OUT ) 950 return -1; 951 952 if ( map != NULL ) { 953 if ( ROAR_STREAM(ss)->info.channels != len ) 954 return -1; 955 956 memcpy(ss->chanmap.in, map, len); 957 } 958 959 switch (ssdir) { 960 case STREAM_DIR_IN: 961 roardsp_chanmap_calc(&(ss->chanmap), ROARDSP_CHANMAP_MAP, 0); 962 break; 963 case STREAM_DIR_OUT: 964 roardsp_chanmap_calc(&(ss->chanmap), ROARDSP_CHANMAP_INVMAP, 0); 965 break; 966 } 967 968 return 0; 897 969 } 898 970
Note: See TracChangeset
for help on using the changeset viewer.