SDL Wiki

SDL_AudioCVT

A structure that contains audio data conversion information.

Data Fields

int

needed

set to 1 if conversion possible

SDL_AudioFormat

src_format

source audio format

SDL_AudioFormat

dst_format

target audio format

double

rate_incr

rate conversion increment

Uint8*

buf

the buffer to hold entire audio data; see Remarks for details

int

len

length of original audio buffer; see Remarks for details

int

len_cvt

length of converted audio buffer

int

len_mult

buf must be len*len_mult big; see Remarks for details

double

len_ratio

given len, final size is len*len_ratio; see Remarks for details

SDL_AudioFilter[10]

filters

filter list (internal use)

int

filter_index

current audio conversion function (internal use)

Code Examples

// Change 1024 stereo sample frames at 48000Hz from float32 to int16.
SDL_AudioCVT cvt;
SDL_BuildAudioCVT(&cvt, AUDIO_F32, 2, 48000, AUDIO_S16, 2, 48000);
SDL_assert(cvt.needed); // obviously, this one is always needed.
cvt.len = 1024 * 2 * 4;  // 1024 stereo float32 sample frames.
cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult);
// read your float32 data into cvt.buf here.
SDL_ConvertAudio(&cvt);
// cvt.buf has cvt.len_cvt bytes of converted data now.

Remarks

The SDL_AudioCVT structure is used to convert audio data between different formats. An SDL_AudioCVT structure is initialized with the SDL_BuildAudioCVT() function, while the actual conversion is done by the SDL_ConvertAudio() function, once the application has set up appropriately-sized buffers between these two function calls.

buf points to the audio data that will be used in the conversion. It is both the source and the destination, which means the converted audio data overwrites the original data. It also means that the converted data may be larger than the original data (if you were converting from 8-bit to 16-bit, for instance), so you must ensure buf is large enough for any stage of the conversion, regardless of the final converted data's size. See len_mult below for more info.

len is the length of the original audio data in bytes.

len_mult is the length multiplier for determining the size of the converted data. The audio buffer may need to be larger than either the original data or the converted data.. The allocated size of buf should be len*len_mult.

len_ratio is the length ratio of the converted data to the original data. When you have finished converting your audio data, you need to know how much of your audio buffer is valid. len*len_ratio is the size of the converted audio data in bytes. This is very similar to len_mult, however when the converted audio data is shorter than the original, len_mult would be 1. len_ratio, on the other hand, would be a fractional number between 0 and 1.

SDL_BuildAudioCVT
SDL_ConvertAudio

CategoryStruct, CategoryAudio


[ edit | delete | history | feedback | raw ]

[ front page | index | search | recent changes | git repo | offline html ]

All wiki content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
Wiki powered by ghwikipp.