From a875b2f17a011350d2284003170efdab94741e6d Mon Sep 17 00:00:00 2001 From: Christophe Thommeret Date: Fri, 17 Aug 2007 19:42:22 +0100 Subject: xine_stream audio_track_map order fix Actually, audio_decoder_loop stores audio streams in ascending buffer type order. So, for example a stream with buffer type BUF_AUDIO_A52|channel_num will always be stored in audio_track_map array before any mpegaudio stream. This breaks the stream order known by TS demuxer and so a user can get a52 french audio when selecting "deu" ! Bad again. This patch fixes that. --- src/xine-engine/audio_decoder.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xine-engine/audio_decoder.c b/src/xine-engine/audio_decoder.c index 549c19b02..c271fc6fc 100644 --- a/src/xine-engine/audio_decoder.c +++ b/src/xine-engine/audio_decoder.c @@ -253,6 +253,7 @@ static void *audio_decoder_loop (void *stream_gen) { uint32_t audio_type = 0; int i,j; + uint32_t chan=buf->type&0x0000FFFF; /* printf("audio_decoder: buf_type=%08x auto=%08x user=%08x\n", @@ -264,11 +265,11 @@ static void *audio_decoder_loop (void *stream_gen) { /* update track map */ i = 0; - while ( (iaudio_track_map_entries) && (stream->audio_track_map[i]type) ) + while ( (iaudio_track_map_entries) && ((stream->audio_track_map[i]&0x0000FFFF)audio_track_map_entries) - || (stream->audio_track_map[i] != buf->type) ) { + || ((stream->audio_track_map[i]&0x0000FFFF)!=chan) ) { xine_event_t ui_event; j = stream->audio_track_map_entries; -- cgit v1.2.3