Changeset 514
- Timestamp:
- 08/09/07 16:15:41 (16 years ago)
- Files:
-
- trunk/libffado/tests/streaming/testmidistreaming1.c (modified) (21 diffs)
- trunk/libffado/tests/streaming/teststreaming.c (modified) (11 diffs)
- trunk/libffado/tests/streaming/teststreaming3.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/tests/streaming/testmidistreaming1.c
r445 r514 45 45 #include <alsa/asoundlib.h> 46 46 47 #include "libf reebob/freebob_streaming.h"47 #include "libffado/ffado.h" 48 48 49 49 #include "debugtools.h" … … 68 68 snd_midi_event_t *parser; 69 69 snd_seq_t *seq_handle; 70 } f reebob_midi_port_t;70 } ffado_midi_port_t; 71 71 72 72 typedef struct { 73 73 snd_seq_t *seq_handle; 74 74 int nb_seq_ports; 75 f reebob_midi_port_t *ports[MAX_MIDI_PORTS];76 } f reebob_midi_ports_t;75 ffado_midi_port_t *ports[MAX_MIDI_PORTS]; 76 } ffado_midi_ports_t; 77 77 78 78 int open_seq(snd_seq_t **seq_handle, int in_ports[], int out_ports[], int num_in, int num_out); … … 113 113 } 114 114 115 void decode_midi_byte (f reebob_midi_port_t *port, int byte) {115 void decode_midi_byte (ffado_midi_port_t *port, int byte) { 116 116 snd_seq_event_t ev; 117 117 if ((snd_midi_event_encode_byte(port->parser,byte, &ev)) > 0) { … … 127 127 } 128 128 129 int encode_midi_bytes(f reebob_midi_port_t *port, unsigned char *byte_buff, int len) {129 int encode_midi_bytes(ffado_midi_port_t *port, unsigned char *byte_buff, int len) { 130 130 return 0; 131 131 } … … 140 140 int retval=0; 141 141 int i=0; 142 int start_flag = 0; 142 143 143 144 int nb_periods=0; 144 145 145 f reebob_sample_t **audiobuffers_in;146 f reebob_sample_t **audiobuffers_out;147 f reebob_sample_t *nullbuffer;146 ffado_sample_t **audiobuffers_in; 147 ffado_sample_t **audiobuffers_out; 148 ffado_sample_t *nullbuffer; 148 149 149 150 run=1; 150 151 151 printf("F reebobMIDI streaming test application (1)\n");152 printf("Ffado MIDI streaming test application (1)\n"); 152 153 153 154 signal (SIGINT, sighandler); 154 155 signal (SIGPIPE, sighandler); 155 156 156 f reebob_device_info_t device_info;157 158 f reebob_options_t dev_options;157 ffado_device_info_t device_info; 158 159 ffado_options_t dev_options; 159 160 160 161 dev_options.sample_rate=-1; // -1 = detect from discovery … … 169 170 dev_options.packetizer_priority=60; 170 171 171 f reebob_device_t *dev=freebob_streaming_init(&device_info, dev_options);172 ffado_device_t *dev=ffado_streaming_init(&device_info, dev_options); 172 173 if (!dev) { 173 fprintf(stderr,"Could not init F reebobStreaming layer\n");174 fprintf(stderr,"Could not init Ffado Streaming layer\n"); 174 175 exit(-1); 175 176 } 176 177 177 nb_in_channels=f reebob_streaming_get_nb_capture_streams(dev);178 nb_out_channels=f reebob_streaming_get_nb_playback_streams(dev);178 nb_in_channels=ffado_streaming_get_nb_capture_streams(dev); 179 nb_out_channels=ffado_streaming_get_nb_playback_streams(dev); 179 180 180 181 int midi_in_nbchannels=0; … … 182 183 183 184 /* allocate intermediate buffers */ 184 audiobuffers_in=calloc(nb_in_channels,sizeof(f reebob_sample_t *));185 audiobuffers_out=calloc(nb_in_channels,sizeof(f reebob_sample_t));185 audiobuffers_in=calloc(nb_in_channels,sizeof(ffado_sample_t *)); 186 audiobuffers_out=calloc(nb_in_channels,sizeof(ffado_sample_t)); 186 187 for (i=0;i<nb_in_channels;i++) { 187 audiobuffers_in[i]=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));188 audiobuffers_out[i]=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));188 audiobuffers_in[i]=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 189 audiobuffers_out[i]=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 189 190 190 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {191 case f reebob_stream_type_audio:191 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 192 case ffado_stream_type_audio: 192 193 /* assign the audiobuffer to the stream */ 193 f reebob_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffers_in[i]));194 f reebob_streaming_set_capture_buffer_type(dev, i, freebob_buffer_type_float);194 ffado_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffers_in[i])); 195 ffado_streaming_set_capture_buffer_type(dev, i, ffado_buffer_type_float); 195 196 break; 196 197 197 198 // this is done with read/write routines because the nb of bytes can differ. 198 case f reebob_stream_type_midi:199 case ffado_stream_type_midi: 199 200 midi_in_nbchannels++; 200 201 default: … … 203 204 } 204 205 205 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));206 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 206 207 207 208 for (i=0;i<nb_out_channels;i++) { 208 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {209 case f reebob_stream_type_audio:209 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 210 case ffado_stream_type_audio: 210 211 if (i<nb_in_channels) { 211 212 /* assign the audiobuffer to the stream */ 212 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)(audiobuffers_in[i]));213 f reebob_streaming_set_playback_buffer_type(dev, i, freebob_buffer_type_float);213 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)(audiobuffers_in[i])); 214 ffado_streaming_set_playback_buffer_type(dev, i, ffado_buffer_type_float); 214 215 } else { 215 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer);216 f reebob_streaming_set_playback_buffer_type(dev, i, freebob_buffer_type_int24);216 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer); 217 ffado_streaming_set_playback_buffer_type(dev, i, ffado_buffer_type_int24); 217 218 } 218 219 break; 219 220 // this is done with read/write routines because the nb of bytes can differ. 220 case f reebob_stream_type_midi:221 case ffado_stream_type_midi: 221 222 midi_out_nbchannels++; 222 223 default: … … 235 236 fid_out[i]=fopen(name,"w"); 236 237 237 f reebob_streaming_get_playback_stream_name(dev,i,name,sizeof(name));238 ffado_streaming_get_playback_stream_name(dev,i,name,sizeof(name)); 238 239 fprintf(fid_out[i],"Channel name: %s\n",name); 239 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {240 case f reebob_stream_type_audio:240 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 241 case ffado_stream_type_audio: 241 242 fprintf(fid_out[i],"Channel type: audio\n"); 242 243 break; 243 case f reebob_stream_type_midi:244 case ffado_stream_type_midi: 244 245 fprintf(fid_out[i],"Channel type: midi\n"); 245 246 break; 246 case f reebob_stream_type_unknown:247 case ffado_stream_type_unknown: 247 248 fprintf(fid_out[i],"Channel type: unknown\n"); 248 249 break; 249 250 default: 250 case f reebob_stream_type_invalid:251 case ffado_stream_type_invalid: 251 252 fprintf(fid_out[i],"Channel type: invalid\n"); 252 253 break; … … 258 259 fid_in[i]=fopen(name,"w"); 259 260 260 f reebob_streaming_get_capture_stream_name(dev,i,name,sizeof(name));261 fprintf(fid_in[i], "Channel name: %s\n" );262 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {263 case f reebob_stream_type_audio:261 ffado_streaming_get_capture_stream_name(dev,i,name,sizeof(name)); 262 fprintf(fid_in[i], "Channel name: %s\n", name); 263 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 264 case ffado_stream_type_audio: 264 265 fprintf(fid_in[i], "Channel type: audio\n"); 265 266 break; 266 case f reebob_stream_type_midi:267 case ffado_stream_type_midi: 267 268 fprintf(fid_in[i], "Channel type: midi\n"); 268 269 break; 269 case f reebob_stream_type_unknown:270 case ffado_stream_type_unknown: 270 271 fprintf(fid_in[i],"Channel type: unknown\n"); 271 272 break; 272 273 default: 273 case f reebob_stream_type_invalid:274 case ffado_stream_type_invalid: 274 275 fprintf(fid_in[i],"Channel type: invalid\n"); 275 276 break; … … 288 289 } 289 290 290 f reebob_midi_port_t* midi_out_portmap[nb_out_channels];291 f reebob_midi_port_t* midi_in_portmap[nb_in_channels];291 ffado_midi_port_t* midi_out_portmap[nb_out_channels]; 292 ffado_midi_port_t* midi_in_portmap[nb_in_channels]; 292 293 293 294 int cnt=0; 294 295 295 296 for (i=0;i<nb_out_channels;i++) { 296 f reebob_midi_port_t *midi_out_port;297 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {298 case f reebob_stream_type_audio:297 ffado_midi_port_t *midi_out_port; 298 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 299 case ffado_stream_type_audio: 299 300 midi_out_portmap[i]=NULL; 300 301 break; 301 case f reebob_stream_type_midi:302 midi_out_port=malloc(sizeof(f reebob_midi_port_t));302 case ffado_stream_type_midi: 303 midi_out_port=malloc(sizeof(ffado_midi_port_t)); 303 304 if(!midi_out_port) { 304 305 fprintf(stderr, "Could not allocate memory for MIDI OUT port %d\n",i); … … 314 315 } 315 316 break; 317 default: break; 316 318 } 317 319 } … … 319 321 cnt=0; 320 322 for (i=0;i<nb_in_channels;i++) { 321 f reebob_midi_port_t *midi_in_port;322 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {323 case f reebob_stream_type_audio:323 ffado_midi_port_t *midi_in_port; 324 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 325 case ffado_stream_type_audio: 324 326 midi_in_portmap[i]=NULL; 325 327 break; 326 case f reebob_stream_type_midi:328 case ffado_stream_type_midi: 327 329 328 midi_in_port=malloc(sizeof(f reebob_midi_port_t));330 midi_in_port=malloc(sizeof(ffado_midi_port_t)); 329 331 if(!midi_in_port) { 330 332 fprintf(stderr, "Could not allocate memory for MIDI IN port %d\n",i); … … 340 342 midi_in_portmap[i]=midi_in_port; 341 343 } 342 break; 344 break; 345 default: break; 343 346 } 344 347 } 345 348 346 349 // start the streaming layer 347 freebob_streaming_start(dev);350 start_flag = ffado_streaming_start(dev); 348 351 349 352 fprintf(stderr,"Entering receive loop (%d,%d)\n",nb_in_channels,nb_out_channels); 350 while(run ) {351 retval = f reebob_streaming_wait(dev);353 while(run && start_flag==0) { 354 retval = ffado_streaming_wait(dev); 352 355 if (retval < 0) { 353 356 fprintf(stderr,"Xrun\n"); 354 f reebob_streaming_reset(dev);357 ffado_streaming_reset(dev); 355 358 continue; 356 359 } 357 360 358 // f reebob_streaming_transfer_buffers(dev);359 f reebob_streaming_transfer_capture_buffers(dev);360 f reebob_streaming_transfer_playback_buffers(dev);361 // ffado_streaming_transfer_buffers(dev); 362 ffado_streaming_transfer_capture_buffers(dev); 363 ffado_streaming_transfer_playback_buffers(dev); 361 364 362 365 nb_periods++; … … 369 372 int s; 370 373 371 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {372 case f reebob_stream_type_audio:374 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 375 case ffado_stream_type_audio: 373 376 // no need to get the buffers manually, we have set the API internal buffers to the audiobuffer[i]'s 374 // //samplesread=f reebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE);377 // //samplesread=ffado_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 375 378 samplesread=PERIOD_SIZE; 376 379 break; 377 case f reebob_stream_type_midi:378 samplesread=f reebob_streaming_read(dev, i, audiobuffers_in[i], PERIOD_SIZE);380 case ffado_stream_type_midi: 381 samplesread=ffado_streaming_read(dev, i, audiobuffers_in[i], PERIOD_SIZE); 379 382 quadlet_t *buff=(quadlet_t *)audiobuffers_in[i]; 380 383 for (s=0;s<samplesread;s++) { … … 385 388 if(samplesread>0) { 386 389 fprintf(fid_in[i], "---- Period read (%d samples) ----\n",samplesread); 387 hexDumpToFile(fid_in[i],(unsigned char*)audiobuffers_in[i],samplesread*sizeof(freebob_sample_t)); 388 } 389 break; 390 hexDumpToFile(fid_in[i],(unsigned char*)audiobuffers_in[i],samplesread*sizeof(ffado_sample_t)); 391 } 392 break; 393 default: break; 390 394 } 391 395 // fprintf(fid_in[i], "---- Period read (%d samples) ----\n",samplesread); 392 // hexDumpToFile(fid_in[i],(unsigned char*)buff,samplesread*sizeof(f reebob_sample_t));396 // hexDumpToFile(fid_in[i],(unsigned char*)buff,samplesread*sizeof(ffado_sample_t)); 393 397 394 398 } 395 399 396 400 for(i=0;i<nb_out_channels;i++) { 397 f reebob_sample_t *buff;401 ffado_sample_t *buff; 398 402 int b=0; 399 403 unsigned char* byte_buff; … … 405 409 } 406 410 407 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {408 case f reebob_stream_type_audio:409 // sampleswritten=f reebob_streaming_write(dev, i, buff, PERIOD_SIZE);411 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 412 case ffado_stream_type_audio: 413 // sampleswritten=ffado_streaming_write(dev, i, buff, PERIOD_SIZE); 410 414 // sampleswritten=PERIOD_SIZE; 411 415 break; 412 case f reebob_stream_type_midi:416 case ffado_stream_type_midi: 413 417 414 418 #define max_midi_bytes_to_write PERIOD_SIZE/8 … … 418 422 419 423 for(b=0;b<sampleswritten;b++) { 420 f reebob_sample_t tmp_event=*(byte_buff+b);421 f reebob_streaming_write(dev, i, &tmp_event, 1);424 ffado_sample_t tmp_event=*(byte_buff+b); 425 ffado_streaming_write(dev, i, &tmp_event, 1); 422 426 } 423 427 424 428 425 429 fprintf(fid_out[i], "---- Period write (%d samples) ----\n",sampleswritten); 426 hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(freebob_sample_t)); 427 break; 430 hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(ffado_sample_t)); 431 break; 432 default: break; 428 433 } 429 434 } … … 435 440 fprintf(stderr,"Exiting receive loop\n"); 436 441 437 f reebob_streaming_stop(dev);438 439 f reebob_streaming_finish(dev);442 ffado_streaming_stop(dev); 443 444 ffado_streaming_finish(dev); 440 445 441 446 for (i=0;i<nb_out_channels;i++) { … … 457 462 // free the MIDI to seq parsers and port structures 458 463 for(i=0;i<midi_in_nbchannels;i++) { 459 f reebob_midi_port_t *midi_in_port=midi_in_portmap[i];464 ffado_midi_port_t *midi_in_port=midi_in_portmap[i]; 460 465 461 466 if(midi_in_port) { … … 466 471 // free the MIDI to seq parsers and port structures 467 472 for(i=0;i<midi_out_nbchannels;i++) { 468 f reebob_midi_port_t *midi_out_port=midi_out_portmap[i];473 ffado_midi_port_t *midi_out_port=midi_out_portmap[i]; 469 474 470 475 if(midi_out_port) { trunk/libffado/tests/streaming/teststreaming.c
r445 r514 36 36 #include <signal.h> 37 37 38 #include "libf reebob/freebob_streaming.h"38 #include "libffado/ffado.h" 39 39 40 40 #include "debugtools.h" … … 56 56 int retval=0; 57 57 int i=0; 58 int start_flag = 0; 58 59 59 60 int nb_periods=0; 60 61 61 f reebob_sample_t **audiobuffer;62 f reebob_sample_t *nullbuffer;62 ffado_sample_t **audiobuffer; 63 ffado_sample_t *nullbuffer; 63 64 64 65 run=1; 65 66 66 printf("F reebobstreaming test application\n");67 printf("Ffado streaming test application\n"); 67 68 68 69 signal (SIGINT, sighandler); 69 70 signal (SIGPIPE, sighandler); 70 71 71 f reebob_device_info_t device_info;72 73 f reebob_options_t dev_options;72 ffado_device_info_t device_info; 73 74 ffado_options_t dev_options; 74 75 75 76 dev_options.sample_rate=44100; … … 84 85 dev_options.packetizer_priority=60; 85 86 86 f reebob_device_t *dev=freebob_streaming_init(&device_info, dev_options);87 ffado_device_t *dev=ffado_streaming_init(&device_info, dev_options); 87 88 if (!dev) { 88 fprintf(stderr,"Could not init F reebobStreaming layer\n");89 fprintf(stderr,"Could not init Ffado Streaming layer\n"); 89 90 exit(-1); 90 91 } 91 92 92 nb_in_channels=f reebob_streaming_get_nb_capture_streams(dev);93 nb_out_channels=f reebob_streaming_get_nb_playback_streams(dev);93 nb_in_channels=ffado_streaming_get_nb_capture_streams(dev); 94 nb_out_channels=ffado_streaming_get_nb_playback_streams(dev); 94 95 95 96 /* allocate intermediate buffers */ 96 audiobuffer=calloc(nb_in_channels,sizeof(f reebob_sample_t *));97 for (i=0;i<nb_in_channels;i++) { 98 audiobuffer[i]=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));99 } 100 101 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));97 audiobuffer=calloc(nb_in_channels,sizeof(ffado_sample_t *)); 98 for (i=0;i<nb_in_channels;i++) { 99 audiobuffer[i]=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 100 } 101 102 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 102 103 103 104 /* open the files to write to*/ … … 111 112 fid_out[i]=fopen(name,"w"); 112 113 113 f reebob_streaming_get_playback_stream_name(dev,i,name,sizeof(name));114 ffado_streaming_get_playback_stream_name(dev,i,name,sizeof(name)); 114 115 fprintf(fid_out[i],"Channel name: %s\n",name); 115 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {116 case f reebob_stream_type_audio:116 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 117 case ffado_stream_type_audio: 117 118 fprintf(fid_out[i],"Channel type: audio\n"); 118 119 break; 119 case f reebob_stream_type_midi:120 case ffado_stream_type_midi: 120 121 fprintf(fid_out[i],"Channel type: midi\n"); 121 122 break; 122 case f reebob_stream_type_unknown:123 case ffado_stream_type_unknown: 123 124 fprintf(fid_out[i],"Channel type: unknown\n"); 124 125 break; 125 126 default: 126 case f reebob_stream_type_invalid:127 case ffado_stream_type_invalid: 127 128 fprintf(fid_out[i],"Channel type: invalid\n"); 128 129 break; … … 134 135 fid_in[i]=fopen(name,"w"); 135 136 136 f reebob_streaming_get_capture_stream_name(dev,i,name,sizeof(name));137 ffado_streaming_get_capture_stream_name(dev,i,name,sizeof(name)); 137 138 fprintf(fid_in[i], "Channel name: %s\n",name); 138 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {139 case f reebob_stream_type_audio:139 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 140 case ffado_stream_type_audio: 140 141 fprintf(fid_in[i], "Channel type: audio\n"); 141 142 break; 142 case f reebob_stream_type_midi:143 case ffado_stream_type_midi: 143 144 fprintf(fid_in[i], "Channel type: midi\n"); 144 145 break; 145 case f reebob_stream_type_unknown:146 case ffado_stream_type_unknown: 146 147 fprintf(fid_in[i],"Channel type: unknown\n"); 147 148 break; 148 149 default: 149 case f reebob_stream_type_invalid:150 case ffado_stream_type_invalid: 150 151 fprintf(fid_in[i],"Channel type: invalid\n"); 151 152 break; … … 153 154 } 154 155 155 f reebob_streaming_prepare(dev);156 freebob_streaming_start(dev);156 ffado_streaming_prepare(dev); 157 start_flag = ffado_streaming_start(dev); 157 158 158 159 fprintf(stderr,"Entering receive loop (%d,%d)\n",nb_in_channels,nb_out_channels); 159 while(run ) {160 retval = f reebob_streaming_wait(dev);160 while(run && start_flag==0) { 161 retval = ffado_streaming_wait(dev); 161 162 if (retval < 0) { 162 163 fprintf(stderr,"Xrun\n"); 163 f reebob_streaming_reset(dev);164 ffado_streaming_reset(dev); 164 165 continue; 165 166 } 166 167 167 // f reebob_streaming_transfer_buffers(dev);168 f reebob_streaming_transfer_capture_buffers(dev);169 f reebob_streaming_transfer_playback_buffers(dev);168 // ffado_streaming_transfer_buffers(dev); 169 ffado_streaming_transfer_capture_buffers(dev); 170 ffado_streaming_transfer_playback_buffers(dev); 170 171 171 172 nb_periods++; … … 176 177 177 178 for(i=0;i<nb_in_channels;i++) { 178 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {179 case f reebob_stream_type_audio:180 samplesread=f reebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE);181 break; 182 case f reebob_stream_type_midi:183 samplesread=f reebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE);179 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 180 case ffado_stream_type_audio: 181 samplesread=ffado_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 182 break; 183 case ffado_stream_type_midi: 184 samplesread=ffado_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 184 185 break; 185 186 default: … … 187 188 } 188 189 // fprintf(fid_in[i], "---- Period read (%d samples) ----\n",samplesread); 189 // hexDumpToFile(fid_in[i],(unsigned char*)audiobuffer[i],samplesread*sizeof(f reebob_sample_t));190 // hexDumpToFile(fid_in[i],(unsigned char*)audiobuffer[i],samplesread*sizeof(ffado_sample_t)); 190 191 } 191 192 192 193 for(i=0;i<nb_out_channels;i++) { 193 f reebob_sample_t *buff;194 ffado_sample_t *buff; 194 195 if (i<nb_in_channels) { 195 196 buff=audiobuffer[i]; … … 198 199 } 199 200 200 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {201 case f reebob_stream_type_audio:202 sampleswritten=f reebob_streaming_write(dev, i, buff, PERIOD_SIZE);203 break; 204 case f reebob_stream_type_midi:205 sampleswritten=f reebob_streaming_write(dev, i, buff, PERIOD_SIZE);201 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 202 case ffado_stream_type_audio: 203 sampleswritten=ffado_streaming_write(dev, i, buff, PERIOD_SIZE); 204 break; 205 case ffado_stream_type_midi: 206 sampleswritten=ffado_streaming_write(dev, i, buff, PERIOD_SIZE); 206 207 break; 207 208 default: … … 209 210 } 210 211 // fprintf(fid_out[i], "---- Period write (%d samples) ----\n",sampleswritten); 211 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(f reebob_sample_t));212 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(ffado_sample_t)); 212 213 } 213 214 … … 218 219 fprintf(stderr,"Exiting receive loop\n"); 219 220 220 f reebob_streaming_stop(dev);221 222 f reebob_streaming_finish(dev);221 ffado_streaming_stop(dev); 222 223 ffado_streaming_finish(dev); 223 224 224 225 for (i=0;i<nb_out_channels;i++) { trunk/libffado/tests/streaming/teststreaming3.c
r445 r514 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" … … 59 59 int retval=0; 60 60 int i=0; 61 int start_flag = 0; 61 62 62 63 int nb_periods=0; 63 64 64 65 float **audiobuffers_in; 65 f reebob_sample_t **audiobuffers_out;66 f reebob_sample_t *nullbuffer;66 ffado_sample_t **audiobuffers_out; 67 ffado_sample_t *nullbuffer; 67 68 68 69 run=1; 69 70 70 printf("F reebobstreaming test application (3)\n");71 printf("Ffado streaming test application (3)\n"); 71 72 72 73 signal (SIGINT, sighandler); 73 74 signal (SIGPIPE, sighandler); 74 75 75 f reebob_device_info_t device_info;76 77 f reebob_options_t dev_options;76 ffado_device_info_t device_info; 77 78 ffado_options_t dev_options; 78 79 79 80 dev_options.sample_rate=44100; … … 88 89 dev_options.packetizer_priority=70; 89 90 90 f reebob_device_t *dev=freebob_streaming_init(&device_info, dev_options);91 ffado_device_t *dev=ffado_streaming_init(&device_info, dev_options); 91 92 if (!dev) { 92 fprintf(stderr,"Could not init F reebobStreaming layer\n");93 fprintf(stderr,"Could not init Ffado Streaming layer\n"); 93 94 exit(-1); 94 95 } 95 96 96 nb_in_channels=f reebob_streaming_get_nb_capture_streams(dev);97 nb_out_channels=f reebob_streaming_get_nb_playback_streams(dev);97 nb_in_channels=ffado_streaming_get_nb_capture_streams(dev); 98 nb_out_channels=ffado_streaming_get_nb_playback_streams(dev); 98 99 99 100 /* allocate intermediate buffers */ 100 101 audiobuffers_in=calloc(nb_in_channels,sizeof(float *)); 101 audiobuffers_out=calloc(nb_in_channels,sizeof(f reebob_sample_t));102 audiobuffers_out=calloc(nb_in_channels,sizeof(ffado_sample_t)); 102 103 for (i=0;i<nb_in_channels;i++) { 103 104 audiobuffers_in[i]=calloc(PERIOD_SIZE+1,sizeof(float)); 104 audiobuffers_out[i]=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));105 106 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {107 case f reebob_stream_type_audio:105 audiobuffers_out[i]=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 106 107 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 108 case ffado_stream_type_audio: 108 109 /* assign the audiobuffer to the stream */ 109 f reebob_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffers_in[i]));110 f reebob_streaming_set_capture_buffer_type(dev, i, freebob_buffer_type_float);110 ffado_streaming_set_capture_stream_buffer(dev, i, (char *)(audiobuffers_in[i])); 111 ffado_streaming_set_capture_buffer_type(dev, i, ffado_buffer_type_float); 111 112 break; 112 113 // this is done with read/write routines because the nb of bytes can differ. 113 case f reebob_stream_type_midi:114 case ffado_stream_type_midi: 114 115 default: 115 116 break; … … 117 118 } 118 119 119 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(f reebob_sample_t));120 nullbuffer=calloc(PERIOD_SIZE+1,sizeof(ffado_sample_t)); 120 121 121 122 for (i=0;i<nb_out_channels;i++) { 122 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {123 case f reebob_stream_type_audio:123 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 124 case ffado_stream_type_audio: 124 125 if (i<nb_in_channels) { 125 126 /* assign the audiobuffer to the stream */ 126 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)(audiobuffers_in[i]));127 f reebob_streaming_set_playback_buffer_type(dev, i, freebob_buffer_type_float);127 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)(audiobuffers_in[i])); 128 ffado_streaming_set_playback_buffer_type(dev, i, ffado_buffer_type_float); 128 129 } else { 129 f reebob_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer);130 f reebob_streaming_set_playback_buffer_type(dev, i, freebob_buffer_type_int24);130 ffado_streaming_set_playback_stream_buffer(dev, i, (char *)nullbuffer); 131 ffado_streaming_set_playback_buffer_type(dev, i, ffado_buffer_type_int24); 131 132 } 132 133 break; 133 134 // this is done with read/write routines because the nb of bytes can differ. 134 case f reebob_stream_type_midi:135 case ffado_stream_type_midi: 135 136 default: 136 137 break; … … 148 149 fid_out[i]=fopen(name,"w"); 149 150 150 f reebob_streaming_get_playback_stream_name(dev,i,name,sizeof(name));151 ffado_streaming_get_playback_stream_name(dev,i,name,sizeof(name)); 151 152 fprintf(fid_out[i],"Channel name: %s\n",name); 152 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {153 case f reebob_stream_type_audio:153 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 154 case ffado_stream_type_audio: 154 155 fprintf(fid_out[i],"Channel type: audio\n"); 155 156 break; 156 case f reebob_stream_type_midi:157 case ffado_stream_type_midi: 157 158 fprintf(fid_out[i],"Channel type: midi\n"); 158 159 break; 159 case f reebob_stream_type_unknown:160 case ffado_stream_type_unknown: 160 161 fprintf(fid_out[i],"Channel type: unknown\n"); 161 162 break; 162 163 default: 163 case f reebob_stream_type_invalid:164 case ffado_stream_type_invalid: 164 165 fprintf(fid_out[i],"Channel type: invalid\n"); 165 166 break; … … 171 172 fid_in[i]=fopen(name,"w"); 172 173 173 f reebob_streaming_get_capture_stream_name(dev,i,name,sizeof(name));174 fprintf(fid_in[i], "Channel name: %s\n" );175 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {176 case f reebob_stream_type_audio:174 ffado_streaming_get_capture_stream_name(dev,i,name,sizeof(name)); 175 fprintf(fid_in[i], "Channel name: %s\n",name); 176 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 177 case ffado_stream_type_audio: 177 178 fprintf(fid_in[i], "Channel type: audio\n"); 178 179 break; 179 case f reebob_stream_type_midi:180 case ffado_stream_type_midi: 180 181 fprintf(fid_in[i], "Channel type: midi\n"); 181 182 break; 182 case f reebob_stream_type_unknown:183 case ffado_stream_type_unknown: 183 184 fprintf(fid_in[i],"Channel type: unknown\n"); 184 185 break; 185 186 default: 186 case f reebob_stream_type_invalid:187 case ffado_stream_type_invalid: 187 188 fprintf(fid_in[i],"Channel type: invalid\n"); 188 189 break; … … 191 192 192 193 // start the streaming layer 193 freebob_streaming_start(dev); 194 ffado_streaming_prepare(dev); 195 start_flag = ffado_streaming_start(dev); 194 196 195 197 fprintf(stderr,"Entering receive loop (%d,%d)\n",nb_in_channels,nb_out_channels); 196 while(run ) {197 retval = f reebob_streaming_wait(dev);198 while(run && start_flag==0) { 199 retval = ffado_streaming_wait(dev); 198 200 if (retval < 0) { 199 201 fprintf(stderr,"Xrun\n"); 200 f reebob_streaming_reset(dev);202 ffado_streaming_reset(dev); 201 203 continue; 202 204 } 203 205 204 // f reebob_streaming_transfer_buffers(dev);205 f reebob_streaming_transfer_capture_buffers(dev);206 f reebob_streaming_transfer_playback_buffers(dev);206 // ffado_streaming_transfer_buffers(dev); 207 ffado_streaming_transfer_capture_buffers(dev); 208 ffado_streaming_transfer_playback_buffers(dev); 207 209 208 210 nb_periods++; … … 215 217 216 218 217 switch (f reebob_streaming_get_capture_stream_type(dev,i)) {218 case f reebob_stream_type_audio:219 switch (ffado_streaming_get_capture_stream_type(dev,i)) { 220 case ffado_stream_type_audio: 219 221 // no need to get the buffers manually, we have set the API internal buffers to the audiobuffer[i]'s 220 222 // //samplesread=freebob_streaming_read(dev, i, audiobuffer[i], PERIOD_SIZE); 221 223 samplesread=PERIOD_SIZE; 222 224 break; 223 case freebob_stream_type_midi: 224 samplesread=freebob_streaming_read(dev, i, audiobuffers_out[i], PERIOD_SIZE); 225 break; 225 case ffado_stream_type_midi: 226 samplesread=ffado_streaming_read(dev, i, audiobuffers_out[i], PERIOD_SIZE); 227 break; 228 default: break; 226 229 } 227 230 … … 231 234 232 235 for(i=0;i<nb_out_channels;i++) { 233 f reebob_sample_t *buff;236 ffado_sample_t *buff; 234 237 int sampleswritten=0; 235 238 if (i<nb_in_channels) { … … 239 242 } 240 243 241 switch (f reebob_streaming_get_playback_stream_type(dev,i)) {242 case f reebob_stream_type_audio:244 switch (ffado_streaming_get_playback_stream_type(dev,i)) { 245 case ffado_stream_type_audio: 243 246 // sampleswritten=freebob_streaming_write(dev, i, buff, PERIOD_SIZE); 244 247 sampleswritten=PERIOD_SIZE; 245 248 break; 246 case f reebob_stream_type_midi:249 case ffado_stream_type_midi: 247 250 // sampleswritten=freebob_streaming_write(dev, i, buff, PERIOD_SIZE); 248 251 break; 252 default: break; 249 253 } 250 254 // fprintf(fid_out[i], "---- Period write (%d samples) ----\n",sampleswritten); 251 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(f reebob_sample_t));255 // hexDumpToFile(fid_out[i],(unsigned char*)buff,sampleswritten*sizeof(ffado_sample_t)); 252 256 } 253 257 … … 258 262 fprintf(stderr,"Exiting receive loop\n"); 259 263 260 f reebob_streaming_stop(dev);261 262 f reebob_streaming_finish(dev);264 ffado_streaming_stop(dev); 265 266 ffado_streaming_finish(dev); 263 267 264 268 for (i=0;i<nb_out_channels;i++) {