Преглед изворни кода

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 година
родитељ
комит
c552cc6847
3 измењених фајлова са 9 додато и 7 уклоњено
  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;
 }