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_ConvertAudio

SPIS TREŚCI

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

SDL_ConvertAudio

Użyj tej funkcji do konwersji danych dźwiękowych na pożądany format.

Składnia

int SDL_ConvertAudio(SDL_AudioCVT* cvt)

Parametry funkcji

cvt wskaźnik struktury SDL_AudioCVT, która została wcześniej wypełniona danymi; zobacz do Uwag.

Wartość zwracana

Zwraca 0, jeśli konwersja zakończyła się sukcesem lub ujemny kod błędu przy niepowodzeniu
; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Przykładowy kod

// 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.

Uwagi

Funkcja ta wykonuje rzeczywistą konwersję danych dźwiękowych po wywołaniu przez aplikację SDL_BuildAudioCVT() w celu przygotowania danych o konwersji, a następnie wypełnieniu szczegółów dotyczących bufora.

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.

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.