]> git.sesse.net Git - vlc/commitdiff
opensles: resample if original sampling rate is not accepted
authorRafaël Carré <funman@videolan.org>
Mon, 24 Jun 2013 03:10:48 +0000 (05:10 +0200)
committerRafaël Carré <funman@videolan.org>
Mon, 24 Jun 2013 03:11:18 +0000 (05:11 +0200)
Close: #8638

modules/audio_output/opensles_android.c

index 0f509e6c0818f8707eef7f2a86fbe207449063dc..9c80495dfdb0cd4a900cbc68cb0456a1b106dbe7 100644 (file)
@@ -388,6 +388,14 @@ static int Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
     result = CreateAudioPlayer(sys->engineEngine, &sys->playerObject, &audioSrc,
                                     &audioSnk, sizeof(ids2) / sizeof(*ids2),
                                     ids2, req2);
+    if (unlikely(result != SL_RESULT_SUCCESS)) {
+        /* Try again with a more sensible samplerate */
+        fmt->i_rate = 44100;
+        format_pcm.samplesPerSec = ((SLuint32) 44100 * 1000) ;
+        result = CreateAudioPlayer(sys->engineEngine, &sys->playerObject, &audioSrc,
+                &audioSnk, sizeof(ids2) / sizeof(*ids2),
+                ids2, req2);
+    }
     CHECK_OPENSL_ERROR("Failed to create audio player");
 
     result = Realize(sys->playerObject, SL_BOOLEAN_FALSE);