From 9f9b785490c17070f710b28965380e9451b0eb84 Mon Sep 17 00:00:00 2001 From: James Stembridge Date: Sat, 28 May 2005 10:41:17 +0000 Subject: Fix channel flag handling CVS patchset: 7578 CVS date: 2005/05/28 10:41:17 --- src/libdts/xine_decoder.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/libdts/xine_decoder.c b/src/libdts/xine_decoder.c index 7ee5651b0..cd16563a8 100644 --- a/src/libdts/xine_decoder.c +++ b/src/libdts/xine_decoder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2004 the xine project + * Copyright (C) 2000-2005 the xine project * * This file is part of xine, a unix video player. * @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.60 2004/12/16 13:59:10 mroi Exp $ + * $Id: xine_decoder.c,v 1.61 2005/05/28 10:41:17 jstembridge Exp $ * * 04-09-2001 DTS passtrough (C) Joachim Koenig * 09-12-2001 DTS passthrough inprovements (C) James Courtier-Dutton @@ -225,33 +225,33 @@ static void dts_decode_frame (dts_decoder_t *this, int64_t pts, int preview_mode } } else { /* Software decode */ - int i, dts_flags; + int i, dts_output_flags; int16_t *int_samples = audio_buffer->mem; int number_of_dts_blocks; level_t level = 1.0; sample_t *samples; - this->have_lfe = this->dts_flags & DTS_LFE; - dts_flags = this->dts_flags_map[this->dts_flags & DTS_CHANNEL_MASK]; + dts_output_flags = this->dts_flags_map[this->dts_flags & DTS_CHANNEL_MASK]; + + if(dts_frame(this->dts_state, data_in, &dts_output_flags, &level, 0)) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "libdts: dts_frame error\n"); + return; + } + + this->have_lfe = dts_output_flags & DTS_LFE; if (this->have_lfe) if (this->audio_caps & AO_CAP_MODE_5_1CHANNEL) { output_mode = AO_CAP_MODE_5_1CHANNEL; - dts_flags |= DTS_LFE; } else if (this->audio_caps & AO_CAP_MODE_4_1CHANNEL) { output_mode = AO_CAP_MODE_4_1CHANNEL; - dts_flags |= DTS_LFE; } else { xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "libdts: WHAT DO I DO!!!\n"); - output_mode = this->ao_flags_map[dts_flags & DTS_CHANNEL_MASK]; + output_mode = this->ao_flags_map[dts_output_flags & DTS_CHANNEL_MASK]; } else - output_mode = this->ao_flags_map[dts_flags & DTS_CHANNEL_MASK]; + output_mode = this->ao_flags_map[dts_output_flags & DTS_CHANNEL_MASK]; - if(dts_frame(this->dts_state, data_in, &dts_flags, &level, 0)) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "libdts: dts_frame error\n"); - return; - } if (!this->output_open) { this->output_open = (this->stream->audio_out->open (this->stream->audio_out, this->stream, this->bits_per_sample, -- cgit v1.2.3