Changeset 4820:2cff11e64bae in roaraudio
- Timestamp:
- 03/28/11 13:49:21 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r4818 r4820 8 8 * added support to roard for record streams. 9 9 * Added commands clientinfo and streaminfo to roarctl. 10 * Added Record Bridge to roard. 10 11 11 12 v. 0.4beta4 - Sun Mar 20 2011 12:15 CET -
roard/include/waveform.h
r4708 r4820 34 34 } g_waveform_mixer; 35 35 36 struct { 37 int stream; 38 struct roar_stream_server * ss; 39 } g_waveform_recbridge; 40 36 41 int waveform_init (void); 37 42 int waveform_free (void); 38 43 39 int waveform_update_mixer (void); 44 int waveform_update_inputs (void); 45 int waveform_update_mixer (void); 40 46 41 47 #endif -
roard/loop.c
r4811 r4820 91 91 midi_update(); 92 92 #endif 93 94 if ( waveform_update_inputs() == -1 ) 95 alive = 0; 93 96 94 97 ROAR_DBG("main_loop(*): mixing clients..."); -
roard/waveform.c
r4819 r4820 26 26 #include "roard.h" 27 27 28 static int waveform_init_recbridge (void) { 29 struct roar_stream * s; 30 31 if ( (g_waveform_recbridge.stream = streams_new()) == -1 ) 32 return -1; 33 34 client_stream_add(g_self_client, g_waveform_recbridge.stream); 35 36 streams_get(g_waveform_recbridge.stream, &(g_waveform_recbridge.ss)); 37 38 s = ROAR_STREAM(g_waveform_recbridge.ss); 39 40 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 41 42 s->pos_rel_id = g_waveform_mixer.stream; 43 44 if ( streams_set_dir(g_waveform_recbridge.stream, ROAR_DIR_BRIDGE, 1) == -1 ) { 45 streams_delete(g_waveform_recbridge.stream); 46 g_waveform_recbridge.stream = -1; 47 g_waveform_recbridge.ss = NULL; 48 return -1; 49 } 50 51 streams_set_name(g_waveform_recbridge.stream, "Record Bridge"); 52 53 streams_set_flag(g_waveform_recbridge.stream, ROAR_FLAG_PRIMARY); 54 streams_set_flag(g_waveform_recbridge.stream, ROAR_FLAG_SYNC); 55 streams_set_flag(g_waveform_recbridge.stream, ROAR_FLAG_MUTE); 56 57 return 0; 58 } 59 28 60 int waveform_init (void) { 29 61 struct roar_stream_server * ss; … … 32 64 char cmap[ROAR_MAX_CHANNELS]; 33 65 66 // setup mixer: 34 67 if ( (g_waveform_mixer.stream = add_mixer(ROAR_SUBSYS_WAVEFORM, _MIXER_NAME("Waveform"), &ss)) == -1 ) 35 68 return -1; … … 46 79 ss->state = ROAR_STREAMSTATE_OLD; 47 80 81 82 // setup Record Bridge: 83 if ( waveform_init_recbridge() == -1 ) { 84 ROAR_WARN("waveform_init(void): Can not setup Record Bridge."); 85 streams_delete(g_waveform_mixer.stream); 86 g_waveform_mixer.stream = -1; 87 g_waveform_mixer.ss = NULL; 88 return -1; 89 } 90 91 streams_set_mixer_stream(g_waveform_recbridge.stream, g_waveform_mixer.stream); 92 93 // attach all waveform streams to the mixer. 48 94 for (i = 0; i < ROAR_STREAMS_MAX; i++) { 49 95 if ( g_streams[i] != NULL ) { … … 61 107 } 62 108 63 int waveform_update_mixer (void) { 109 int waveform_update_inputs (void) { 110 struct roar_buffer * buf; 64 111 size_t len; 65 112 … … 81 128 } 82 129 130 if ( !(g_waveform_recbridge.ss->flags & (ROAR_FLAG_PAUSE|ROAR_FLAG_MUTE)) ) { 131 if ( roar_buffer_new_no_ma(&buf, g_input_buffer_len, g_input_buffer) == -1 ) { 132 ROAR_ERR("waveform_update_inputs(void): Can not create a new buffer object for Record Bridge. Bad."); 133 return -1; 134 } 135 136 if ( stream_add_buffer(g_waveform_recbridge.stream, buf) == -1 ) { 137 ROAR_ERR("waveform_update_inputs(void): Can not attach a new buffer object to the Record Bridge. Bad."); 138 roar_buffer_free(buf); 139 return -1; 140 } 141 } 142 143 return 0; 144 } 145 146 int waveform_update_mixer (void) { 83 147 if ( streams_get_flag(g_waveform_mixer.stream, ROAR_FLAG_MUTE) == 1 ) { 84 148 memset(g_output_buffer, 0, (g_sa->bits*ROAR_OUTPUT_BUFFER_SAMPLES*g_sa->channels)/8);
Note: See TracChangeset
for help on using the changeset viewer.