From 98b26469d9973e7dae3645dc912b0ac0267d3ee2 Mon Sep 17 00:00:00 2001 From: Petri Hintukainen Date: Sat, 9 Jul 2011 21:14:08 +0300 Subject: Fixed 20-bit BluRay PCM audio. In this format samples are padded to 24 bits, 4 lowest bits are 0 --> Handle as 24-bit BluRay PCM. --- src/libxineadec/xine_lpcm_decoder.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libxineadec/xine_lpcm_decoder.c b/src/libxineadec/xine_lpcm_decoder.c index c34d43b42..71ac3f802 100644 --- a/src/libxineadec/xine_lpcm_decoder.c +++ b/src/libxineadec/xine_lpcm_decoder.c @@ -116,7 +116,11 @@ static void lpcm_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) { num_channels = channels[(buf->decoder_info[2] >> (16+4)) & 0x0f]; switch ((buf->decoder_info[2] >> (24+6)) & 0x03) { case 1: bits_per_sample = 16; break; - case 2: bits_per_sample = 20; break; + case 2: /*bits_per_sample = 20; break;*/ + /* fall thru. Samples are 0-padded to 24 bits, and + * converted later to 16 bits by dropping 8 lowest bits. + * this needs to be changed if audio out some day accepts 24bit samples. + */ case 3: bits_per_sample = 24; break; default: bits_per_sample = 0; break; } -- cgit v1.2.3