Sfoglia il codice sorgente

We don't require the audio system to be initialized for audio format conversion

This is helpful for tools pipelines where audio devices are never used.
Sam Lantinga 1 anno fa
parent
commit
c552cc6847
3 ha cambiato i file con 9 aggiunte e 7 eliminazioni
  1. 0 3
      src/audio/SDL_audio.c
  2. 2 4
      src/audio/SDL_audiocvt.c
  3. 7 0
      test/testautomation_audio.c

+ 0 - 3
src/audio/SDL_audio.c

@@ -602,9 +602,6 @@ int SDL_InitAudio(const char *driver_name)
         SDL_QuitAudio(); // shutdown driver if already running.
     }
 
-    SDL_ChooseAudioConverters();
-    SDL_SetupAudioResampler();
-
     SDL_RWLock *device_list_lock = SDL_CreateRWLock();  // create this early, so if it fails we don't have to tear down the whole audio subsystem.
     if (!device_list_lock) {
         return -1;

+ 2 - 4
src/audio/SDL_audiocvt.c

@@ -404,10 +404,8 @@ static int UpdateAudioStreamInputSpec(SDL_AudioStream *stream, const SDL_AudioSp
 
 SDL_AudioStream *SDL_CreateAudioStream(const SDL_AudioSpec *src_spec, const SDL_AudioSpec *dst_spec)
 {
-    if (!SDL_WasInit(SDL_INIT_AUDIO)) {
-        SDL_SetError("Audio subsystem is not initialized");
-        return NULL;
-    }
+    SDL_ChooseAudioConverters();
+    SDL_SetupAudioResampler();
 
     SDL_AudioStream *retval = (SDL_AudioStream *)SDL_calloc(1, sizeof(SDL_AudioStream));
     if (retval == NULL) {

+ 7 - 0
test/testautomation_audio.c

@@ -481,6 +481,10 @@ static int audio_buildAudioStream(void *arg)
     SDL_AudioSpec spec2;
     int i, ii, j, jj, k, kk;
 
+    /* Call Quit */
+    SDL_QuitSubSystem(SDL_INIT_AUDIO);
+    SDLTest_AssertPass("Call to SDL_QuitSubSystem(SDL_INIT_AUDIO)");
+
     /* No conversion needed */
     spec1.format = SDL_AUDIO_S16LE;
     spec1.channels = 2;
@@ -528,6 +532,9 @@ static int audio_buildAudioStream(void *arg)
         }
     }
 
+    /* Restart audio again */
+    audioSetUp(NULL);
+
     return TEST_COMPLETED;
 }