int outputGetParameter(int param) { switch (param) { case OUTPARAM_RATE: return rate; case OUTPARAM_CHANNELS: return channels; case OUTPARAM_FORMAT: return format; case OUTPARAM_GETFORMATS: return audio_get_formats(); default: fprintf(stderr, "Nierozpoznany parametr %s %d\n", __FILE__, __LINE__ ); return; } }
void audio_capabilities(struct audio_info_struct *ai) { int fmts; int i,j,k,k1=NUM_RATES-1; struct audio_info_struct ai1 = *ai; if (param.outmode != DECODE_AUDIO) { memset(capabilities,1,sizeof(capabilities)); return; } memset(capabilities,0,sizeof(capabilities)); if(param.force_rate) { rates[NUM_RATES-1] = param.force_rate; k1 = NUM_RATES; } /* if audio_open fails, the device is just not capable of anything... */ if(audio_open(&ai1) < 0) { perror("audio"); } else { for(i=0;i<NUM_CHANNELS;i++) { for(j=0;j<NUM_RATES;j++) { ai1.channels = channels[i]; ai1.rate = rates[j]; fmts = audio_get_formats(&ai1); if(fmts < 0) continue; for(k=0;k<NUM_ENCODINGS;k++) { if((fmts & encodings[k]) == encodings[k]) capabilities[i][k][j] = 1; } } } audio_close(&ai1); } if(param.verbose > 1) print_capabilities(ai); }
void audio_capabilities(struct audio_info_struct *ai) { int fmts; int i,j,k,k1=NUM_RATES-1; struct audio_info_struct ai1 = *ai; if (param.outmode != DECODE_AUDIO) { memset(capabilities,1,sizeof(capabilities)); return; } memset(capabilities,0,sizeof(capabilities)); if(param.force_rate) { rates[NUM_RATES-1] = param.force_rate; k1 = NUM_RATES; } #ifndef NO_DECODE_AUDIO if(audio_open(&ai1) < 0) { perror("audio"); exit(1); } #endif for(i=0;i<NUM_CHANNELS;i++) { for(j=0;j<NUM_RATES;j++) { ai1.channels = channels[i]; ai1.rate = rates[j]; fmts = audio_get_formats(&ai1); if(fmts < 0) continue; for(k=0;k<NUM_ENCODINGS;k++) { if((fmts & encodings[k]) == encodings[k]) capabilities[i][k][j] = 1; } } } #ifndef NO_DECODE_AUDIO audio_close(&ai1); #endif if(param.verbose > 1) { fprintf(stderr,"\nAudio capabilities:\n |"); for(j=0;j<NUM_ENCODINGS;j++) { fprintf(stderr," %5s |",audio_val2name[j].sname); } fprintf(stderr,"\n --------------------------------------------------------\n"); for(k=0;k<k1;k++) { fprintf(stderr," %5d |",rates[k]); for(j=0;j<NUM_ENCODINGS;j++) { if(capabilities[0][j][k]) { if(capabilities[1][j][k]) fprintf(stderr," M/S |"); else fprintf(stderr," M |"); } else if(capabilities[1][j][k]) fprintf(stderr," S |"); else fprintf(stderr," |"); } fprintf(stderr,"\n"); } fprintf(stderr,"\n"); } }