Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_OpenAudio

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_OpenAudio

Jest to przestarzały sposób otwierania urządzenia dźwiękowego. W nowych programach używaj raczej funkcji SDL_OpenAudioDevice().

Składnia

int SDL_OpenAudio(SDL_AudioSpec* desired,
                  SDL_AudioSpec* obtained)

Parametry funkcji

desired struktura SDL_AudioSpec reprezentująca pożądany format wyjściowy
obtained struktura SDL_AudioSpec wypełniana faktycznymi parametrami lub NULL

Wartość zwracana

Funkcja ta otwiera urządzenie dźwiękowe o pożądanych parametrach i zwraca 0 przy sukcesie, umieszczająca aktualne parametry sprzętowe w strukturze wskazywanej przez obtained.

Jeśli obtained ma wartość NULL, dane dźwiękowe przekazywane do funkcji wywoływanej zwrotnie na pewno będą w pożądanym formacie i w razie potrzeby zostaną automatycznie skonwertowane na faktyczny sprzętowy format dźwiękowy. Jeśli obtained ma wartość NULL, to struktura wskazywana przez desired będzie odpowiednio modyfikowana.

Funkcja zwraca ujemny kod błędu w przypadku niepowodzenia otwarcia urządzenia dźwiękowego lub niepowodzenia utworzenia wątku dźwiękowego; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Przykładowy kod

SDL_AudioSpec want, have;

SDL_memset(&want, 0, sizeof(want)); /* lub SDL_zero(want) */
want.freq = 48000;
want.format = AUDIO_F32;
want.channels = 2;
want.samples = 4096;
want.callback = MyAudioCallback; /* napisałeś tę funkcję w innym miejscu - szczegóły w opisie SDL_AudioSpec */

if (SDL_OpenAudio(&want, &have) < 0)
{
    SDL_Log("Failed to open audio: %s", SDL_GetError());
}
else
{
    if (have.format != want.format)
    {
        SDL_Log("We didn't get Float32 audio format.");
    }
    SDL_PauseAudio(0); /* start odtwarzania dźwięku. */
    SDL_Delay(5000);  /* niech funkcja dźwiękowa odtwarza jakiś dźwięk przez 5 sekund. */
    SDL_CloseAudio();
}

Uwagi

Funkcja ta pozostaje w bibliotece z powodów kompatybilności z SDL 1.2, lecz również dlatego, iż jest nieco łatwiejsza w użyciu niż nowe funkcje w SDL 2.0. Nowym, bardziej zaawansowanym i zalecanym sposobem wykonania tego zadania jest użycie funkcji SDL_OpenAudioDevice().

Funkcja ta jest mniej więcej odpowiednikiem funkcji:

SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);

Z dwoma godnymi uwagi wyjątkami:

  • Jeśli wskaźnik obtained ma wartość NULL, używamy desired (bez zgody na zmiany), co oznacza, że struktura desired będzie modyfikowana, aby zawierać poprawne wartości dla ciszy, itp., a SDL skonwertuje wszelkie różnice pomiędzy żądaniem specyficznym dla aplikacji a sprzętem pracującym w tle za sceną.
  • Wartością zwrotną jest zawsze sukces lub niepowodzenie, a nie identyfikator ID urządzenia, co oznacza, że z tą funkcją możesz mieć otwarte naraz tylko jedno urządzenie.

Powiązane struktury

Powiązane funkcje

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2022 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.