|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2026 mgr Jerzy Wałaszek
|
SDL_ConvertAudio
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji do konwersji danych dźwiękowych na pożądany format.
int SDL_ConvertAudio(SDL_AudioCVT* cvt) |
| cvt | wskaźnik struktury SDL_AudioCVT, która została wcześniej wypełniona danymi; zobacz do Uwag. |
// Zmień 1024 ramek sampli stereo przy 48000 Hz z float32 na int16. SDL_AudioCVT cvt; SDL_BuildAudioCVT(&cvt, AUDIO_F32, 2, 48000, AUDIO_S16, 2, 48000); SDL_assert(cvt.needed); // to zawsze jest potrzebne. cvt.len = 1024 * 2 * 4; // 1024 ramek stereo float32. cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult); // wczytaj swoje dane float32 tutaj do cvt.buf. SDL_ConvertAudio(&cvt); // cvt.buf zawiera teraz cvt.len_cvt bajtów skonwertowanych danych. |
Gdy aplikacja zainicjuje strukturę cvt za pomocą SDL_BuildAudioCVT(), przydzieli bufor dźwiękowy i wypełni go danymi dźwiękowymi w formacie źródłowym, funkcja ta skonwertuje zawartość tego bufora w miejscu (tzn. bez dodatkowej pamięci) na pożądany format.
Konwersja danych może przebiegać przez kilka obiegów, a każdy z nich może chwilowo powiększać rozmiar danych. Na przykład, SDL może poszerzać dane 16-bitowe na 32-bitowe przed dokonaniem ponownego próbkowania na niższej częstotliwości, zmniejszając rozmiar danych po chwilowym jego zwiększeniu. Ponieważ dostarczony bufor będzie zarówno źródłem jak i przeznaczeniem, co jest niezbędne przy konwersji w miejscu, aplikacja musi przydzielić bufor o wystarczająco dużym rozmiarze dla największego przebiegu konwersji. Gdy funkcja SDL_BuildAudioCVT() wróci, aplikacja powinna ustawić pole len struktury cvt na rozmiar w bajtach danych źródłowych i przydzielić bufor o długości len * len_mult bajtów dla pola buf.
Dane źródłowe powinny zostać skopiowane do tego bufora przed wywołaniem SDL_ConvertAudio(). Po powrocie z sukcesem bufor ten będzie zawierał skonwertowany dźwięk, a pole len_cvt struktury cvt będzie zawierało rozmiar skonwertowanych danych w bajtach. Po powrocie z funkcji wszystkie bajty w buforze poza pozycją len_cvt są nieokreślone.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.