From: <fla...@gm...> - 2007-04-29 15:32:26
|
# HG changeset patch # User Diego 'Flameeyes' Pettenò <fla...@gm...> # Date 1177860721 -7200 # Node ID 7ae0b6fd3a36931a0119d33f6271d41d704dac8f # Parent e4471ccac88ed677feb67402001f84ec76ff42ea Provide the proper sample format depending ont he endianness of the stream. Assume that 32-bit wave files have floating-point samples, I don't have any wave file at more than 24-bit to test with, unfortunately. diff -r 7ae0b6fd3a36931a0119d33f6271d41d704dac8f -r e4471ccac88ed677feb67402001f84ec76ff42ea src/demuxers/demux_wav.c --- a/src/demuxers/demux_wav.c Sun Apr 29 17:32:01 2007 +0200 +++ b/src/demuxers/demux_wav.c Sun Apr 29 17:30:30 2007 +0200 @@ -247,6 +247,22 @@ static void demux_wav_send_headers(demux buf->decoder_info[1] = this->wave->nSamplesPerSec; buf->decoder_info[2] = this->wave->wBitsPerSample; buf->decoder_info[3] = this->wave->nChannels; + + switch(this->wave->wBitsPerSample) { + case 32: /** @todo There is need to differentiate between float and integer */ + buf->decoder_info[4] = this->audio_type == BUF_AUDIO_LPCM_BE ? SF_FLOAT_BE : SF_FLOAT_LE; + break; + case 24: + buf->decoder_info[4] = this->audio_type == BUF_AUDIO_LPCM_BE ? SF_S24_BE : SF_S24_LE; + break; + case 16: + buf->decoder_info[4] = this->audio_type == BUF_AUDIO_LPCM_BE ? SF_S16_BE : SF_S16_LE; + break; + case 8: + buf->decoder_info[4] = SF_S8; + break; + } + buf->content = (void *)this->wave; buf->size = this->wave_size; this->audio_fifo->put (this->audio_fifo, buf); |