summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2011-07-09 21:14:08 +0300
committerPetri Hintukainen <phintuka@users.sourceforge.net>2011-07-09 21:14:08 +0300
commit98b26469d9973e7dae3645dc912b0ac0267d3ee2 (patch)
tree8908a79effdcecc33b286232ac6e3a09a9f14911
parent9a60ab6deecbe5e378e63fa2db78d14367ccb717 (diff)
downloadxine-lib-98b26469d9973e7dae3645dc912b0ac0267d3ee2.tar.gz
xine-lib-98b26469d9973e7dae3645dc912b0ac0267d3ee2.tar.bz2
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.
-rw-r--r--src/libxineadec/xine_lpcm_decoder.c6
1 files changed, 5 insertions, 1 deletions
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;
}