Changeset 480
- Timestamp:
- 06/11/07 17:53:30 (16 years ago)
- Files:
-
- trunk/libffado/src/libstreaming/MotuStreamProcessor.cpp (modified) (2 diffs)
- trunk/libffado/src/libstreaming/StreamProcessorManager.cpp (modified) (1 diff)
- trunk/libffado/src/motu/motu_avdevice.cpp (modified) (1 diff)
- trunk/libffado/tests/streaming/teststreaming2.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/libstreaming/MotuStreamProcessor.cpp
r445 r480 151 151 m_is_disabled=false; 152 152 153 debugOutput(DEBUG_LEVEL_VERBOSE,"Enabling StreamProcessor %p at %u\n", this, cycle);153 debugOutput(DEBUG_LEVEL_VERBOSE,"Enabling Tx StreamProcessor %p at %u\n", this, cycle); 154 154 155 155 // initialize the buffer head & tail … … 961 961 if (cycle == m_cycle_to_enable_at) { 962 962 m_is_disabled=false; 963 debugOutput(DEBUG_LEVEL_VERBOSE,"Enabling StreamProcessor %p at %d\n",963 debugOutput(DEBUG_LEVEL_VERBOSE,"Enabling Rx StreamProcessor %p at %d\n", 964 964 this, cycle); 965 965 trunk/libffado/src/libstreaming/StreamProcessorManager.cpp
r445 r480 197 197 198 198 m_is_slave=false; 199 if(!getOption("s noopMode", m_is_slave)) {200 debugWarning("Could not retrieve slaveMode parameter, defaul ing to false\n");199 if(!getOption("slaveMode", m_is_slave)) { 200 debugWarning("Could not retrieve slaveMode parameter, defaulting to false\n"); 201 201 } 202 202 trunk/libffado/src/motu/motu_avdevice.cpp
r479 r480 77 77 // Free ieee1394 bus resources if they have been allocated 78 78 if (m_p1394Service != NULL) { 79 if (m_iso_recv_channel>=0 && m_p1394Service->freeIsoChannel(m_iso_recv_channel)) {79 if (m_iso_recv_channel>=0 && !m_p1394Service->freeIsoChannel(m_iso_recv_channel)) { 80 80 debugOutput(DEBUG_LEVEL_VERBOSE, "Could not free recv iso channel %d\n", m_iso_recv_channel); 81 81 } 82 if (m_iso_send_channel>=0 && m_p1394Service->freeIsoChannel(m_iso_send_channel)) {82 if (m_iso_send_channel>=0 && !m_p1394Service->freeIsoChannel(m_iso_send_channel)) { 83 83 debugOutput(DEBUG_LEVEL_VERBOSE, "Could not free send iso channel %d\n", m_iso_send_channel); 84 84 } trunk/libffado/tests/streaming/teststreaming2.c
r445 r480 38 38 #include <signal.h> 39 39 40 #include "libf reebob/freebob_streaming.h"40 #include "libffado/ffado.h" 41 41 42 42 #include "debugtools.h" … … 58 58 int retval=0; 59 59 int i=0; 60 int start_flag=0; 60 61 61 62 int nb_periods=0; 62 63 63 f reebob_sample_t **audiobuffer;64 f reebob_sample_t *nullbuffer;64 ffado_sample_t **audiobuffer; 65 ffado_sample_t *nullbuffer; 65 66 66 67 run=1; 67 68 68 printf("F reebobstreaming test application (2)\n");69 printf("Ffado streaming test application (2)\n"); 69 70 70 71 signal (SIGINT, sighandler); 71 72 signal (SIGPIPE, sighandler); 72 73 73 f reebob_device_info_t device_info;74 75 f reebob_options_t dev_options;74 ffado_device_info_t device_info; 75 76 ffado_options_t dev_options; 76 77 77 78 dev_options.sample_rate=44100; … … 86 87 dev_options.packetizer_priority=60; 87 88 88 f reebob_device_t *dev=freebob_streaming_init(&device_info, dev_options);89 ffado_device_t *dev=ffado_streaming_init(&device_info, dev_options); 89 90 if (!dev) { 90 fprintf(stderr,"Could not init F reebobStreaming layer\n");91 fprintf(stderr,"Could not init Ffado Streaming layer\n"); 91 92 exit(-1); 92 93 } 93 94 94 nb_in_channels=f reebob_streaming_get_nb_capture_streams(dev);95 nb_out_channels=f reebob_streaming_get_nb_playback_streams(dev);95 nb_in_channels=ffado_streaming_get_nb_capture_streams(dev); 96 nb_out_channels=ffado_streaming_get_nb_playback_streams(dev); 96 97 97 98 /* allocate intermediate buffers */ 98 audiobuffer=calloc(nb_in_channels,sizeof(f reebob_sample_t *));99 for (i=0;i<nb_in_channels;i++) { 100 audiobuffer[i]=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));101 102 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {103 case f reebob_stream_type_audio:99 audiobuffer=calloc(nb_in_channels,sizeof(ffado_sample_t *)); 100 for (i=0;i<nb_in_channels;i++) { 101 audiobuffer[i]=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 102 103 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 104 case ffado_stream_type_audio: 104 105 /* assign the audiobuffer to the stream */ 105 f reebob_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffer[i]));106 f reebob_streaming_set_capture_buffer_type(dev, i, freebob_buffer_type_int24);106 ffado_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffer[i])); 107 ffado_streaming_set_capture_buffer_type(dev, i, ffado_buffer_type_int24); 107 108 break; 108 109 // this is done with read/write routines because the nb of bytes can differ. 109 case f reebob_stream_type_midi:110 case ffado_stream_type_midi: 110 111 default: 111 112 break; … … 113 114 } 114 115 115 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));116 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 116 117 117 118 #if 1 118 119 for (i=0;i<nb_out_channels;i++) { 119 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {120 case f reebob_stream_type_audio:120 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 121 case ffado_stream_type_audio: 121 122 if (i<nb_in_channels) { 122 123 /* assign the audiobuffer to the stream */ 123 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)audiobuffer[i]);124 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)audiobuffer[i]); 124 125 } else { 125 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer);126 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer); 126 127 } 127 f reebob_streaming_set_playback_buffer_type(dev, i, freebob_buffer_type_int24);128 ffado_streaming_set_playback_buffer_type(dev, i, ffado_buffer_type_int24); 128 129 break; 129 130 // this is done with read/write routines because the nb of bytes can differ. 130 case f reebob_stream_type_midi:131 case ffado_stream_type_midi: 131 132 default: 132 133 break; … … 145 146 fid_out[i]=fopen(name,"w"); 146 147 147 f reebob_streaming_get_playback_stream_name(dev,i,name,sizeof(name));148 ffado_streaming_get_playback_stream_name(dev,i,name,sizeof(name)); 148 149 fprintf(fid_out[i],"Channel name: %s\n",name); 149 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {150 case f reebob_stream_type_audio:150 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 151 case ffado_stream_type_audio: 151 152 fprintf(fid_out[i],"Channel type: audio\n"); 152 153 break; 153 case f reebob_stream_type_midi:154 case ffado_stream_type_midi: 154 155 fprintf(fid_out[i],"Channel type: midi\n"); 155 156 break; 156 case f reebob_stream_type_unknown:157 case ffado_stream_type_unknown: 157 158 fprintf(fid_out[i],"Channel type: unknown\n"); 158 159 break; 159 160 default: 160 case f reebob_stream_type_invalid:161 case ffado_stream_type_invalid: 161 162 fprintf(fid_out[i],"Channel type: invalid\n"); 162 163 break; … … 168 169 fid_in[i]=fopen(name,"w"); 169 170 170 f reebob_streaming_get_capture_stream_name(dev,i,name,sizeof(name));171 ffado_streaming_get_capture_stream_name(dev,i,name,sizeof(name)); 171 172 fprintf(fid_in[i], "Channel name: %s\n",name); 172 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {173 case f reebob_stream_type_audio:173 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 174 case ffado_stream_type_audio: 174 175 fprintf(fid_in[i], "Channel type: audio\n"); 175 176 break; 176 case f reebob_stream_type_midi:177 case ffado_stream_type_midi: 177 178 fprintf(fid_in[i], "Channel type: midi\n"); 178 179 break; 179 case f reebob_stream_type_unknown:180 case ffado_stream_type_unknown: 180 181 fprintf(fid_in[i],"Channel type: unknown\n"); 181 182 break; 182 183 default: 183 case f reebob_stream_type_invalid:184 case ffado_stream_type_invalid: 184 185 fprintf(fid_in[i],"Channel type: invalid\n"); 185 186 break; … … 190 191 191 192 // prepare and start the streaming layer 192 f reebob_streaming_prepare(dev);193 freebob_streaming_start(dev);193 ffado_streaming_prepare(dev); 194 start_flag = ffado_streaming_start(dev); 194 195 195 196 fprintf(stderr,"Entering receive loop (%d,%d)\n",nb_in_channels,nb_out_channels); 196 while(run ) {197 retval = f reebob_streaming_wait(dev);197 while(run && start_flag==0) { 198 retval = ffado_streaming_wait(dev); 198 199 if (retval < 0) { 199 200 fprintf(stderr,"Xrun\n"); 200 f reebob_streaming_reset(dev);201 ffado_streaming_reset(dev); 201 202 continue; 202 203 } 203 204 204 205 for (i=0;i<nb_in_channels;i++) { 205 memset(audiobuffer[i],0xCC,(PERIOD_SIZE+1)*sizeof(f reebob_sample_t));206 } 207 208 // f reebob_streaming_transfer_buffers(dev);209 f reebob_streaming_transfer_capture_buffers(dev);210 f reebob_streaming_transfer_playback_buffers(dev);206 memset(audiobuffer[i],0xCC,(PERIOD_SIZE+1)*sizeof(ffado_sample_t)); 207 } 208 209 // ffado_streaming_transfer_buffers(dev); 210 ffado_streaming_transfer_capture_buffers(dev); 211 ffado_streaming_transfer_playback_buffers(dev); 211 212 212 213 nb_periods++; … … 219 220 220 221 221 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {222 case f reebob_stream_type_audio:222 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 223 case ffado_stream_type_audio: 223 224 // no need to get the buffers manually, we have set the API internal buffers to the audiobuffer[i]'s 224 // //samplesread=f reebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE);225 // //samplesread=ffado_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 225 226 samplesread=PERIOD_SIZE; 226 227 break; 227 case f reebob_stream_type_midi:228 samplesread=f reebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE);228 case ffado_stream_type_midi: 229 samplesread=ffado_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 229 230 break; 230 231 default: … … 233 234 234 235 // fprintf(fid_in[i], "---- Period read (%d samples) ----\n",samplesread); 235 // hexDumpToFile(fid_in[i],(unsigned char*)audiobuffer[i],samplesread*sizeof(f reebob_sample_t)+1);236 // hexDumpToFile(fid_in[i],(unsigned char*)audiobuffer[i],samplesread*sizeof(ffado_sample_t)+1); 236 237 // FIXME: Dump analog1 as raw data to a separate binary file for testing 237 238 //if (i==2) { 238 // fwrite(audiobuffer[i],sizeof(f reebob_sample_t),samplesread,of);239 // fwrite(audiobuffer[i],sizeof(ffado_sample_t),samplesread,of); 239 240 //} 240 241 } 241 242 242 243 for(i=0;i<nb_out_channels;i++) { 243 f reebob_sample_t *buff;244 ffado_sample_t *buff; 244 245 if (i<nb_in_channels) { 245 246 buff=audiobuffer[i]; … … 248 249 } 249 250 250 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {251 case f reebob_stream_type_audio:252 //// Calling f reebob_streaming_write() causes problems since the buffer is external here.251 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 252 case ffado_stream_type_audio: 253 //// Calling ffado_streaming_write() causes problems since the buffer is external here. 253 254 //// Just mirror the read case since it seems to work. 254 //// sampleswritten=f reebob_streaming_write(dev, i, buff, PERIOD_SIZE);255 //// sampleswritten=ffado_streaming_write(dev, i, buff, PERIOD_SIZE); 255 256 sampleswritten=PERIOD_SIZE; 256 257 break; 257 case f reebob_stream_type_midi:258 sampleswritten=f reebob_streaming_write(dev, i, buff, PERIOD_SIZE);258 case ffado_stream_type_midi: 259 sampleswritten=ffado_streaming_write(dev, i, buff, PERIOD_SIZE); 259 260 break; 260 261 default: … … 262 263 } 263 264 // fprintf(fid_out[i], "---- Period write (%d samples) ----\n",sampleswritten); 264 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(f reebob_sample_t));265 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(ffado_sample_t)); 265 266 } 266 267 … … 271 272 fprintf(stderr,"Exiting receive loop\n"); 272 273 273 f reebob_streaming_stop(dev);274 275 f reebob_streaming_finish(dev);274 ffado_streaming_stop(dev); 275 276 ffado_streaming_finish(dev); 276 277 fclose(of); 277 278