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: 22.02.2026

©2026 mgr Jerzy Wałaszek

Interfejs SDL2:

SDL_AudioCVT

SPIS TREŚCI

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

SDL_AudioCVT

Struktura zawiera informację o konwersji danych audio.

Pola danych

int needed ustawiane na 1, jeśli konwersja jest możliwa.
SDL_AudioFormat src_format format źródłowych danych audio.
SDL_AudioFormat dst_format format docelowy audio.
double rate_incr przyrost tempa konwersji.
Uint8* buf bufor do przechowywania wszystkich danych audio; zobacz do Uwag.
int len długość oryginalnego bufora audio; zobacz do Uwag.
int len_cvt długość bufora danych audio po konwersji
int len_mult buf musi posiadać rozmiar len*len_mult; zobacz do Uwag.
double len_ratio mając len, końcowy rozmiar wynosi len*len_ratio; zobacz do Uwag.
SDL_AudioFilter[10] filters lista filtrów (użytek wewnętrzny).
int filter_index bieżąca funkcja konwersji audio (użytek wewnętrzny).

Przykładowy kod

// Zamiana 1024 ramek próbek dźwiękowych przy częstotliwości 48000Hz 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 sampli dźwiękowych stereo typu float32.
cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult);
// wczytaj swoje dane float32 do cvt.buf.
SDL_ConvertAudio(&cvt);
// cvt.buf zawiera cvt.len_cvt bajtów skonwertowanych danych.

Uwagi

Struktura SDL_AudioCVT używana jest do konwersji danych audio pomiędzy różnymi formatami. Struktura SDL_AudioCVT inicjowana jest za pomocą funkcji SDL_BuildAudioCVT(), natomiast sama konwersa jest wykonywana przez funkcję SDL_ConvertAudio() po tym, jak aplikacja poprawnie zarezerwuje bufory o odpowiednim rozmiarze.

buf wskazuje na dane audio, które zostaną użyte w konwersji. Jest to wskaźnik zarówno źródłowy jak i docelowy, co oznacza, że skonwertowane dane audio nadpiszą pierwotne dane. Oznacza to również, że dane skonwertowane mogą być większe od danych oryginalnych (na przykład, jeśli konwertowałeś z danych 8-bitowych na 16-bitowe), więc musisz zapewnić, aby bufor buf był wystarczająco duży na każdym etapie konwersji, bez względu na końcowy rozmiar skonwertowanych danych. Zobacz na len_mult poniżej.

len jest długością w bajtach oryginalnych danych audio.

len_mult jest mnożnikiem długości potrzebnym do określenia rozmiaru konwertowanych danych. Bufor dźwiękowy może wymagać większego rozmiaru niż dane oryginalne lub skonwertowane. Przydzielony w pamięci bufor powinien posiadać rozmiar równy len*len_mult.

len_ratio jest współczynnikiem długości skonwertowanych danych w stosunku do danych oryginalnych. Gdy konwersja dobiegnie końca, musisz wiedzieć, ile danych w buforze stanowią skonwertowane dane audio. Rozmiar tych danych w bajtach wynosi len*len_ratio. Jest to bardzo podobne do len_mult, jednakże, gdy skonwertowane dane są krótsze od oryginalnych, len_mult przyjmuje wartość 1. len_ratio z drugiej strony będzie liczbą ułamkową pomiędzy 0 a 1.

Powiązane funkcje

SDL_BuildAudioCVT
SDL_ConvertAudio

do podrozdziału  do strony 

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: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.