diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-01-24 20:40:11 +0000 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-01-24 20:40:11 +0000 |
commit | a485c6783bc7d32a89b3b99d65f4e110313c7ab3 (patch) | |
tree | 9d3ea05a9967e59703ee6c255a95b931412b1a48 /src/combined/decoder_wavpack.c | |
parent | 251a82b13acb4196726ab5803ba15367bf512aa8 (diff) | |
download | xine-lib-a485c6783bc7d32a89b3b99d65f4e110313c7ab3.tar.gz xine-lib-a485c6783bc7d32a89b3b99d65f4e110313c7ab3.tar.bz2 |
Remove the workaround for FFmpeg decoding, pass the complete header to the decoder, this way the WavPack decoder can be fixed to support multichannel streams.
CVS patchset: 8554
CVS date: 2007/01/24 20:40:11
Diffstat (limited to 'src/combined/decoder_wavpack.c')
-rw-r--r-- | src/combined/decoder_wavpack.c | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/src/combined/decoder_wavpack.c b/src/combined/decoder_wavpack.c index 38a1b2bbe..9c8942e5b 100644 --- a/src/combined/decoder_wavpack.c +++ b/src/combined/decoder_wavpack.c @@ -19,7 +19,7 @@ * * xine interface to libwavpack by Diego Pettenò <flameeyes@gentoo.org> * - * $Id: decoder_wavpack.c,v 1.1 2007/01/24 04:57:27 dgp85 Exp $ + * $Id: decoder_wavpack.c,v 1.2 2007/01/24 20:40:11 dgp85 Exp $ */ #define LOG_MODULE "decode_wavpack" @@ -183,15 +183,6 @@ static void wavpack_decode_data (audio_decoder_t *const this_gen, buf_element_t } else if (this->output_open) { /* This isn't a header frame and we have opened the output device */ - /* First time, we prepend the header, so that Wavpack library can open it. - * As FFmpeg requires the last 12 bytes of the header for its stream, create - * the rest of the header when the frame ended (so we have its size). - */ - if ( ! this->buf ) - this->buf = xine_xmalloc(this->buf_size = sizeof(wvheader_t)-12); - if ( this->buf_pos == 0 ) - this->buf_pos = sizeof(wvheader_t)-12; - /* What we have buffered so far, and what is coming in * is larger than our buffer */ @@ -218,25 +209,13 @@ static void wavpack_decode_data (audio_decoder_t *const this_gen, buf_element_t }; WavpackContext *ctx = NULL; - char error[256]; /* Current version of wavpack (4.31) does not write more than this */ + char error[256]; /* Current version of wavpack (4.40) does not write more than this */ int32_t samples_left; uint32_t samples_total; - wvheader_t *header = (wvheader_t*)this->buf; - - header->idcode = wvpk_signature; -#ifdef WORDS_BIGENDIAN - header->block_size = bswap_32(this->buf_size-sizeof(wvheader_t)); - header->wv_version = bswap_16(0x0406); -#else - header->block_size = this->buf_pos-8; - header->wv_version = 0x0406; -#endif - header->track = 0; header->index = 0; - header->file_samples = (uint32_t)-1; - header->samples_index = 0; + const wvheader_t *header = (const wvheader_t*)this->buf; this->buf_pos = 0; - if ( header->samples_count == 0 ) return; + if ( le2me_32(header->samples_count) == 0 ) return; ctx = WavpackOpenFileInputEx(&wavpack_buffer_reader, this, NULL, error, OPEN_STREAMING, 0); if ( ! ctx ) { |