+ case DEMUX_GET_TITLE_INFO:
+ {
+ input_title_t ***ppp_title = (input_title_t***)va_arg( args, input_title_t*** );
+ int *pi_int = (int*)va_arg( args, int* );
+ int *pi_title_offset = (int*)va_arg( args, int* );
+ int *pi_seekpoint_offset = (int*)va_arg( args, int* );
+
+ if( !p_sys->p_title )
+ return VLC_EGENERIC;
+
+ *pi_int = 1;
+ *ppp_title = malloc( sizeof( input_title_t**) );
+ (*ppp_title)[0] = vlc_input_title_Duplicate( p_sys->p_title );
+ *pi_title_offset = 0;
+ *pi_seekpoint_offset = 0;
+ return VLC_SUCCESS;
+ }
+ case DEMUX_SET_TITLE:
+ {
+ const int i_title = (int)va_arg( args, int );
+ if( !p_sys->p_title || i_title != 0 )
+ return VLC_EGENERIC;
+ return VLC_SUCCESS;
+ }
+ case DEMUX_SET_SEEKPOINT:
+ {
+ const int i_seekpoint = (int)va_arg( args, int );
+ if( !p_sys->p_title )
+ return VLC_EGENERIC;
+
+ i64 = p_sys->p_title->seekpoint[i_seekpoint]->i_time_offset *AV_TIME_BASE / 1000000;
+ if( p_sys->ic->start_time != (int64_t)AV_NOPTS_VALUE )
+ i64 += p_sys->ic->start_time;
+
+ msg_Warn( p_demux, "DEMUX_SET_TIME: %"PRId64, i64 );
+
+ if( av_seek_frame( p_sys->ic, -1, i64, 0 ) < 0 )
+ {
+ return VLC_EGENERIC;
+ }
+ es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
+ p_sys->i_pcr = -1; /* Invalidate time display */
+ UpdateSeekPoint( p_demux, i64 );
+ return VLC_SUCCESS;
+ }
+
+