= 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 [[#buf|Remarks]] for details |- |int |'''len''' |length of original audio buffer; see [[#len|Remarks]] for details |- |int |'''len_cvt''' |length of converted audio buffer |- |int |'''len_mult''' |'''buf''' must be len*len_mult big; see [[#len_mult|Remarks]] for details |- |double |'''len_ratio''' |given '''len''', final size is len*len_ratio; see [[#len_ratio|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. == Related Functions == :[[SDL_BuildAudioCVT]] :[[SDL_ConvertAudio]] ---- [[CategoryAPI]], [[CategoryAPIStruct]], [[CategoryAudio]]