diff -ru vlc-0.8.4-test4/modules/access/dvdnav.c vlc-0.8.4-test4-don/modules/access/dvdnav.c --- vlc-0.8.4-test4/modules/access/dvdnav.c 2005-11-25 09:51:09.000000000 -0800 +++ vlc-0.8.4-test4-don/modules/access/dvdnav.c 2005-12-05 21:01:56.000000000 -0800 @@ -150,6 +150,7 @@ static void DemuxTitles( demux_t * ); static void ESSubtitleUpdate( demux_t * ); +static void ESAudioUpdate( demux_t * ); static void ButtonUpdate( demux_t *, vlc_bool_t ); static void ESNew( demux_t *, int ); @@ -652,7 +653,8 @@ (dvdnav_audio_stream_change_event_t*)packet; msg_Dbg( p_demux, "DVDNAV_AUDIO_STREAM_CHANGE" ); msg_Dbg( p_demux, " - physical=%d", event->physical ); + ESAudioUpdate( p_demux ); /* TODO */ break; } @@ -960,6 +963,46 @@ } } +// 80 a52 , 88 dts, a0 pcm +static void ESAudioUpdate( demux_t *p_demux ) +{ + demux_sys_t *p_sys = p_demux->p_sys; + int i_audio = dvdnav_get_active_audio_stream( p_sys->dvdnav ); + int32_t i_title, i_part; + + ButtonUpdate( p_demux, VLC_FALSE ); + +// dvdnav_current_title_info( p_sys->dvdnav, &i_title, &i_part ); +// if( i_title > 0 ) return; + + if( i_audio >= 0 && i_audio <= 0x8 ) + { + + ps_track_t *tk = &p_sys->tk[PS_ID_TO_TK(0xbd80 + i_audio)]; + + ESNew( p_demux, 0xbd80 + i_audio ); + + /* be sure to unselect it (reset) */ + es_out_Control( p_demux->out, ES_OUT_SET_ES_STATE, tk->es, + (vlc_bool_t)VLC_FALSE ); + + /* now select it */ + es_out_Control( p_demux->out, ES_OUT_SET_ES, tk->es ); + } + else + { + for( i_audio = 0; i_audio <= 0x8; i_audio++ ) + { + ps_track_t *tk = &p_sys->tk[PS_ID_TO_TK(0xbd80 + i_audio)]; + if( tk->b_seen ) + { + es_out_Control( p_demux->out, ES_OUT_SET_ES_STATE, tk->es, + (vlc_bool_t)VLC_FALSE ); + } + } + } +} + static void ESSubtitleUpdate( demux_t *p_demux ) { demux_sys_t *p_sys = p_demux->p_sys;