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_DequeueAudio

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_DequeueAudio

Użyj tej funkcji, aby usunąć z kolejki więcej dźwięku na urządzeniach nie stosujących funkcji wywoływanych zwrotnie.

Składnia

Uint32 SDL_DequeueAudio(SDL_AudioDeviceID dev,
                        void*             data,
                        Uint32            len)

Parametry funkcji

dev identyfikator urządzenia, dla którego będziemy usuwać z kolejki dane dźwiękowe.
data wskaźnik, gdzie dane powinny zostać skopiowane.
len liczba bajtów (nie próbek), na które wskazuje wskaźnik data.

Wartość zwracana

Zwraca liczbę bajtów usuniętych z kolejki, co może być mniej od żadanej; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Uwagi

Jeśli szukasz sposobu kolejkowania dźwięku do odtwarzania na urządzeniu nie stosującym funkcji wywoływanej zwrotnie, to zamiast tej funkcji przyda ci się funkcja SDL_QueueAudio(). SDL_DequeueAudio() zawsze zwraca 0, jeśli stosujesz ją z urządzeniami odtwarzającymi.

SDL oferuje dwa sposoby nagrywania dźwięku na urządzeniu nagrywającym: możesz albo dostarczyć funkcję wywoływaną zwrotnie (ang. callback), którą SDL uaktywnia z pewną częstotliwością, gdy urządzenie nagra nieco więcej danych (metoda push), albo możesz nie udostępniać takiej funkcji, a wtedy SDL będzie oczekiwało, iż w regularnych odstępach czasu będziesz pobierał dane dźwiękowe (metoda pull) za pomocą tej funkcji.

Nie ma ograniczeń na ilość danych w kolejce za wyjątkiem braku pamięci. Dane z urządzenia będą kolejkowane według potrzeb bez dalszej interwencji z twojej strony. Oznacza to, iż w końcu zabraknie ci pamięci, jeśli nie będziesz ich regularnie usuwać z kolejki.

W stanie pauzy urządzenia nagrywające nie umieszczają danych w kolejce; jeśli stwierdzisz, że przez pewien czas nie będzie potrzeby nagrywania danych, użyj SDL_PauseAudioDevice(), aby zatrzymać wprowadzanie danych do kolejki przez urządzenie nagrywające. Może to być użyteczne podczas, powiedzmy, okresów ładowania poziomów. Po ponownym uruchomieniu urządzenie nagrywające zacznie kolejkować dane od tego punktu, po wcześniejszym usunięciu wszystkich nagranych danych podczas wstrzymania.

Funkcja jest bezpieczna wątkowo, lecz usuwanie z kolejki tego samego urządzenia za pomocą dwóch wątków w tym samym czasie nie daje obietnic, który wątek pierwszy pobierze dane.

Nie możesz pobierać danych z kolejki urządzenia używającego dostarczonej przez aplikację funkcji wywoływanej zwrotnie; jeśli tego spróbujesz, dostaniesz w wyniku błąd. Musisz używać tej funkcji wywoływanej zwrotnie lub pobierać dane za pomocą tej funkcji, lecz nie obiema metodami naraz.

Przed usuwaniem z kolejki nie powinieneś wywoływać na tym urządzeniu SDL_LockAudio(); SDL obsługuje blokowanie wewnętrznie dla tej funkcji.

Wersja

Funkcja dostępna od SDL 2.0.5.

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.