diff options
author | Kirill Belokurov <kirill.belokurov@gmail.com> | 2008-03-27 17:29:00 +0200 |
---|---|---|
committer | Kirill Belokurov <kirill.belokurov@gmail.com> | 2008-03-27 17:29:00 +0200 |
commit | 8fd1e52ecdd12b6e8b6ad920e47702201aeafb4b (patch) | |
tree | 6e91c601b0b8c54ab1a0bb8f0a76760648e898ba | |
parent | aba07be1265b56cc777c17e09cccebe1121ef697 (diff) | |
download | xine-lib-8fd1e52ecdd12b6e8b6ad920e47702201aeafb4b.tar.gz xine-lib-8fd1e52ecdd12b6e8b6ad920e47702201aeafb4b.tar.bz2 |
take into account CPU endianness when converting 24bit=>16bit samples
-rw-r--r-- | src/libxineadec/xine_lpcm_decoder.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/libxineadec/xine_lpcm_decoder.c b/src/libxineadec/xine_lpcm_decoder.c index 8d8f23a05..9587da6e8 100644 --- a/src/libxineadec/xine_lpcm_decoder.c +++ b/src/libxineadec/xine_lpcm_decoder.c @@ -189,11 +189,23 @@ static void lpcm_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { while (n >= 0) { if ( stream_be ) { - *d++ = s[0]; - *d++ = s[1]; + if ( stream_be == this->cpu_be ) { + *d++ = s[0]; + *d++ = s[1]; + } else { + *d++ = s[1]; + *d++ = s[0]; + } } else { - *d++ = s[1]; - *d++ = s[2]; + if ( stream_be == this->cpu_be ) { + *d++ = s[1]; + *d++ = s[2]; + } + else + { + *d++ = s[2]; + *d++ = s[1]; + } } s += 3; |