case DEMUX_GET_TITLE_INFO:
ppp_title = (input_title_t***)va_arg( args, input_title_t*** );
pi_int = (int*)va_arg( args, int* );
- *((int*)va_arg( args, int* )) = 0; /* Title offset */
- *((int*)va_arg( args, int* )) = 1; /* Chapter offset */
+ *((int*)va_arg( args, int* )) = 0; /* Title offset */
+ *((int*)va_arg( args, int* )) = 1; /* Chapter offset */
/* Duplicate title infos */
*pi_int = p_sys->i_title;
msleep( 40000 );
break;
}
+
+ case DVDNAV_SPU_CLUT_CHANGE:
+ {
+ int i;
+
+ msg_Dbg( p_demux, "DVDNAV_SPU_CLUT_CHANGE" );
+ /* Update color lookup table (16 *uint32_t in packet) */
+ memcpy( p_sys->clut, packet, 16 * sizeof( uint32_t ) );
+
+ /* HACK to get the SPU tracks registered in the right order */
+ for( i = 0; i < 0x1f; i++ )
+ {
+ if( dvdnav_spu_stream_to_lang( p_sys->dvdnav, i ) != 0xffff )
+ ESNew( p_demux, 0xbd20 + i );
+ }
+ /* END HACK */
+ break;
+ }
+
case DVDNAV_SPU_STREAM_CHANGE:
{
dvdnav_spu_stream_change_event_t *event =
(dvdnav_spu_stream_change_event_t*)packet;
+ int i;
+
msg_Dbg( p_demux, "DVDNAV_SPU_STREAM_CHANGE" );
msg_Dbg( p_demux, " - physical_wide=%d",
event->physical_wide );
event->physical_pan_scan );
ESSubtitleUpdate( p_demux );
+
+ /* HACK to get the SPU tracks registered in the right order */
+ for( i = 0; i < 0x1f; i++ )
+ {
+ if( dvdnav_spu_stream_to_lang( p_sys->dvdnav, i ) != 0xffff )
+ ESNew( p_demux, 0xbd20 + i );
+ }
+ /* END HACK */
break;
}
+
case DVDNAV_AUDIO_STREAM_CHANGE:
{
dvdnav_audio_stream_change_event_t *event =
/* TODO */
break;
}
+
case DVDNAV_VTS_CHANGE:
{
int32_t i_title = 0;
}
break;
}
+
case DVDNAV_CELL_CHANGE:
{
int32_t i_title = 0;
DemuxBlock( p_demux, packet, i_len );
break;
}
+
case DVDNAV_STOP: /* EOF */
msg_Dbg( p_demux, "DVDNAV_STOP" );
return 0;
break;
}
- case DVDNAV_SPU_CLUT_CHANGE:
- {
- int i;
-
- msg_Dbg( p_demux, "DVDNAV_SPU_CLUT_CHANGE" );
- /* Update color lookup table (16 *uint32_t in packet) */
- memcpy( p_sys->clut, packet, 16 * sizeof( uint32_t ) );
-
- /* HACK to get the SPU tracks registered in the right order */
- for( i = 0; i < 0x1f; i++ )
- {
- if( dvdnav_spu_stream_to_lang( p_sys->dvdnav, i ) != 0xffff )
- ESNew( p_demux, 0xbd20 + i );
- }
- /* END HACK */
- break;
- }
-
case DVDNAV_HOP_CHANNEL:
msg_Dbg( p_demux, "DVDNAV_HOP_CHANNEL" );
/* We should try to flush all our internal buffer */
ButtonUpdate( p_demux );
dvdnav_current_title_info( p_sys->dvdnav, &i_title, &i_part );
- if( i_title > 0 )
- {
- return;
- }
+ if( i_title > 0 ) return;
if( i_spu >= 0 && i_spu <= 0x1f )
{
ps_track_t *tk = &p_sys->tk[PS_ID_TO_TK(0xbd20 + i_spu)];
- if( !tk->b_seen )
- {
- ESNew( p_demux, 0xbd20 + i_spu);
- }
+ ESNew( p_demux, 0xbd20 + i_spu );
+
/* be sure to unselect it (reset) */
es_out_Control( p_demux->out, ES_OUT_SET_ES_STATE, tk->es,
(vlc_bool_t)VLC_FALSE );
ps_track_t *tk = &p_sys->tk[PS_ID_TO_TK(i_id)];
vlc_bool_t b_select = VLC_FALSE;
- if( tk->b_seen )
- {
- return;
- }
+ if( tk->b_seen ) return;
if( ps_track_fill( tk, i_id ) )
{
es_out_Control( p_demux->out, ES_OUT_SET_ES, tk->es );
}
tk->b_seen = VLC_TRUE;
+
+ if( tk->fmt.i_cat == VIDEO_ES ) ButtonUpdate( p_demux );
}
/*****************************************************************************