Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

logo

Autor artykułu: mgr Jerzy Wałaszek

 

SDL2

Interfejs SDL2:

SDL_QueueAudio

Rozdziały:
     Interfejs SDL2 wg nazw
     Interfejs SDL2 wg kategorii

 

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2. Oryginał znajdziesz pod tym adresem: https://wiki.libsdl.org/CategoryAPI.

SDL_QueueAudio

Użyj tej funkcji, aby umieścić w kolejce więcej dźwięku na urządzeniach nie posługujących się funkcjami wywoływanymi zwrotnie (ang. callback).

Składnia

int SDL_QueueAudio(SDL_AudioDeviceID dev,
                   const void*       data,
                   Uint32            len)

Parametry funkcji

dev identyfikator ID urządzenia, dla którego będą kolejkowane dane dźwiękowe.
data dane do umieszczenia w kolejce urządzenia dla późniejszego odtworzenia.
len liczba bajtów (nie próbek!) danych, na które wskazuje parametr data.

Wartość zwracana

Zwraca 0 przy sukcesie lub ujemny kod błędu przy niepowodzeniu; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Uwagi

Jeśli chcesz pobrać dane dźwiękowe z urządzenia nagrywającego, które nie posługuje się funkcją wywoływaną zwrotnie, to będzie ci potrzebna funkcja SDL_DequeueAudio(). Funkcja SDL_QueueAudio() zwróci wartość -1, aby poinformować o błędzie, jeśli użyjesz jej dla urządzeń nagrywających.

SDL oferuje dwa sposoby przesyłania danych dźwiękowych do urządzenia: możesz albo dostarczyć funkcję wywoływaną zwrotnie, którą SDL będzie wyzwalało z pewną częstotliwością w celu pobrania więcej dźwięku (metoda pull), albo nie dostarczasz takiej funkcji, a wtedy SDL będzie oczekiwać od ciebie udostępniania danych w regularnych odstępach czasu (metoda push) za pomocą tej funkcji.

Nie ma ograniczeń co do ilości zakolejkowanych danych poza wyczerpaniem dostępnej pamięci. Zakolejkowane dane będą w razie potrzeby przesyłane kolejno do urządzenia bez dalszej interwencji z twojej strony. Jeśli urządzenie będzie potrzebowało więcej danych dźwiękowych, niż zostało umieszczone w kolejce, zacznie odtwarzać ciszę. Oznacza to, iż otrzymasz wtedy przerwy w odtwarzaniu dźwięku, jeśli rutynowo nie zakolejkujesz wystarczającej ilości danych.

Ta funkcja kopiuje dostarczone dane, zatem gdy nastąpi powrót, możesz je usuwać z pamięci. Funkcja jest bezpieczna wątkowo, lecz kolejkowanie z dwóch wątków do tego samego urządzenia nie daje żadnych gwarancji, który z buforów będzie zakolejkowany najpierw.

Nie wolno kolejkować dźwięku na urządzeniu, które wykorzystuje dostarczoną przez aplikację funkcję wywoływaną zwrotnie; jęli będziesz tego próbował, funkcja zwróci błąd. Musisz użyć albo kolejki, albo funkcji callback, ale nie obu metod jednocześnie.

Nie powinieneś wywoływać SDL_LockAudio()dla urządzenia przed kolejkowaniem; SDL obsługuje blokowanie wewnętrznie dla tej funkcji.

Wersja

Funkcja dostępna od SDL 2.0.4.

Powiązane funkcje

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 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.