mirror of https://github.com/mpv-player/mpv
Check what we obtain in SDL_OpenAudio() - allows to build the
correct audio filter chain if soundcard doesn't support what is requested. Checked by Arpi git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7909 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
3fd50298d3
commit
305cadba3f
|
@ -147,7 +147,7 @@ void outputaudio(void *unused, Uint8 *stream, int len) {
|
||||||
static int init(int rate,int channels,int format,int flags){
|
static int init(int rate,int channels,int format,int flags){
|
||||||
|
|
||||||
/* SDL Audio Specifications */
|
/* SDL Audio Specifications */
|
||||||
SDL_AudioSpec aspec;
|
SDL_AudioSpec aspec, obtained;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
/* Allocate ring-buffer memory */
|
/* Allocate ring-buffer memory */
|
||||||
|
@ -216,13 +216,41 @@ void callback(void *userdata, Uint8 *stream, int len); userdata is the pointer s
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open the audio device and start playing sound! */
|
/* Open the audio device and start playing sound! */
|
||||||
if(SDL_OpenAudio(&aspec, NULL) < 0) {
|
if(SDL_OpenAudio(&aspec, &obtained) < 0) {
|
||||||
printf("SDL: Unable to open audio: %s\n", SDL_GetError());
|
printf("SDL: Unable to open audio: %s\n", SDL_GetError());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(verbose) printf("SDL: buf size = %d\n",aspec.size);
|
/* did we got what we wanted ? */
|
||||||
if(ao_data.buffersize==-1) ao_data.buffersize=aspec.size;
|
ao_data.channels=obtained.channels;
|
||||||
|
ao_data.samplerate=obtained.freq;
|
||||||
|
|
||||||
|
switch(obtained.format) {
|
||||||
|
case AUDIO_U8 :
|
||||||
|
ao_data.format = AFMT_U8;
|
||||||
|
break;
|
||||||
|
case AUDIO_S16LSB :
|
||||||
|
ao_data.format = AFMT_S16_LE;
|
||||||
|
break;
|
||||||
|
case AUDIO_S16MSB :
|
||||||
|
ao_data.format = AFMT_S16_BE;
|
||||||
|
break;
|
||||||
|
case AUDIO_S8 :
|
||||||
|
ao_data.format = AFMT_S8;
|
||||||
|
break;
|
||||||
|
case AUDIO_U16LSB :
|
||||||
|
ao_data.format = AFMT_U16_LE;
|
||||||
|
break;
|
||||||
|
case AUDIO_U16MSB :
|
||||||
|
ao_data.format = AFMT_U16_BE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("SDL: Unsupported SDL audio format: 0x%x.\n", obtained.format);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(verbose) printf("SDL: buf size = %d\n",obtained.size);
|
||||||
|
ao_data.buffersize=obtained.size;
|
||||||
|
|
||||||
/* unsilence audio, if callback is ready */
|
/* unsilence audio, if callback is ready */
|
||||||
SDL_PauseAudio(0);
|
SDL_PauseAudio(0);
|
||||||
|
|
Loading…
Reference in New Issue