if (!p_access || !p_access->p_sys) return VLC_EGENERIC;
{
vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_vcd_access->p_sys;
- const input_title_t *t = p_vcdplayer->p_title[p_access->info.i_title];
+ const input_title_t *t = p_vcdplayer->p_title[p_vcdplayer->i_cur_title];
unsigned int i_entry = VCDINFO_INVALID_ENTRY;
int i_seekpoint;
}
/* Update current seekpoint */
- if( i_seekpoint != p_access->info.i_seekpoint )
- {
- dbg_print( (INPUT_DBG_SEEK), "seekpoint change %lu",
- (long unsigned int) i_seekpoint );
- p_access->info.i_update |= INPUT_UPDATE_SEEKPOINT;
- p_access->info.i_seekpoint = i_seekpoint;
- }
+ if( p_vcdplayer->i_cur_chapter != i_seekpoint )
+ dbg_print( (INPUT_DBG_SEEK), "seekpoint change %d",
+ i_seekpoint );
+ p_vcdplayer->i_cur_chapter = i_seekpoint;
}
p_access->info.b_eof = false;
return VLC_SUCCESS;
case VCDINFO_ITEM_TYPE_ENTRY:
VCDUpdateVar( p_access, p_itemid->num, VLC_VAR_SETVALUE,
"chapter", _("Entry"), "Setting entry/segment");
- p_access->info.i_title = i_track-1;
+ p_vcdplayer->i_cur_title = i_track - 1;
if (p_vcdplayer->b_track_length)
{
- p_access->info.i_size = p_vcdplayer->p_title[i_track-1]->i_size;
+ p_vcdplayer->size = p_vcdplayer->p_title[i_track-1]->i_size;
p_access->info.i_pos = (uint64_t) M2F2_SECTOR_SIZE *
(vcdinfo_get_track_lsn(p_vcdplayer->vcd, i_track)-i_lsn);
} else {
- p_access->info.i_size = M2F2_SECTOR_SIZE * (int64_t)
+ p_vcdplayer->size = M2F2_SECTOR_SIZE * (int64_t)
vcdinfo_get_entry_sect_count(p_vcdplayer->vcd,p_itemid->num);
p_access->info.i_pos = 0;
}
dbg_print( (INPUT_DBG_LSN|INPUT_DBG_PBC), "size: %"PRIu64", pos: %"PRIu64,
- p_access->info.i_size, p_access->info.i_pos );
- p_access->info.i_seekpoint = p_itemid->num;
+ p_vcdplayer->size, p_access->info.i_pos );
+ p_vcdplayer->i_cur_chapter = p_itemid->num;
break;
case VCDINFO_ITEM_TYPE_SEGMENT:
and they must here. The segment seekpoints are stored after
the entry seekpoints and (zeroed) lid seekpoints.
*/
- p_access->info.i_title = p_vcdplayer->i_titles - 1;
- p_access->info.i_size = 0; /* No seeking on stills, please. */
+ p_vcdplayer->i_cur_title = p_vcdplayer->i_titles - 1;
+ p_vcdplayer->size = 0; /* No seeking on stills, please. */
p_access->info.i_pos = 0;
- p_access->info.i_seekpoint = p_vcdplayer->i_entries
+ p_vcdplayer->i_cur_chapter = p_vcdplayer->i_entries
+ p_vcdplayer->i_lids + p_itemid->num;
break;
case VCDINFO_ITEM_TYPE_TRACK:
- p_access->info.i_title = i_track-1;
- p_access->info.i_size = p_vcdplayer->p_title[i_track-1]->i_size;
+ p_vcdplayer->i_cur_title = i_track - 1;
+ p_vcdplayer->size = p_vcdplayer->p_title[i_track - 1]->i_size;
p_access->info.i_pos = 0;
- p_access->info.i_seekpoint = vcdinfo_track_get_entry(p_vcdplayer->vcd,
+ p_vcdplayer->i_cur_chapter = vcdinfo_track_get_entry(p_vcdplayer->vcd,
i_track);
break;
p_vcdplayer->play_item.type );
}
- p_access->info.i_update = INPUT_UPDATE_TITLE|INPUT_UPDATE_SEEKPOINT;
-
VCDUpdateTitle( p_access );
}
p_access->pf_control = VCDControl;
p_access->pf_seek = VCDSeek;
- p_access->info.i_update = 0;
- p_access->info.i_size = 0;
p_access->info.i_pos = 0;
p_access->info.b_eof = false;
- p_access->info.i_title = 0;
- p_access->info.i_seekpoint = 0;
p_vcdplayer = malloc( sizeof(vcdplayer_t) );
p_vcdplayer->i_debug = var_InheritInteger( p_this, MODULE_STRING "-debug" );
p_access->p_sys = (access_sys_t *) p_vcdplayer;
+ p_vcdplayer->size = 0;
/* Set where to log errors messages from libcdio. */
p_vcd_access = p_access;
// p_vcdplayer->p_meta = vlc_meta_New();
p_vcdplayer->p_segments = NULL;
p_vcdplayer->p_entries = NULL;
+ p_vcdplayer->i_cur_title = 0;
+ p_vcdplayer->i_cur_chapter = 0;
/* set up input */
switch( i_query )
{
+#if 0
/* Pass back a copy of meta information that was gathered when we
during the Open/Initialize call.
*/
case ACCESS_GET_META:
dbg_print( INPUT_DBG_EVENT, "get meta info" );
-#if 0
if( p_vcdplayer->p_meta )
{
vlc_meta_t **pp_meta = (vlc_meta_t**)va_arg(args,vlc_meta_t**);
dbg_print( INPUT_DBG_META, "%s", "Meta copied" );
}
else
-#endif
msg_Warn( p_access, "tried to copy NULL meta info" );
-
return VLC_SUCCESS;
-
+#endif
case ACCESS_CAN_SEEK:
case ACCESS_CAN_FASTSEEK:
case ACCESS_CAN_PAUSE:
case ACCESS_CAN_CONTROL_PACE:
-
dbg_print( INPUT_DBG_EVENT,
"seek/fastseek/pause/can_control_pace" );
*((bool*)va_arg( args, bool* )) = true;
- return VLC_SUCCESS;
+ break;
- /* */
case ACCESS_GET_PTS_DELAY:
*(int64_t*)va_arg(args,int64_t *) = INT64_C(1000) *
var_InheritInteger( p_access, "disc-caching" );
- return VLC_SUCCESS;
+ break;
- /* */
case ACCESS_SET_PAUSE_STATE:
- return VLC_SUCCESS;
+ break;
case ACCESS_GET_TITLE_INFO:
{
if( p_vcdplayer->i_titles == 0 )
{
*pi_int = 0; ppp_title = NULL;
- return VLC_SUCCESS;
+ break;
}
*pi_int = p_vcdplayer->i_titles;
*ppp_title = malloc(sizeof(input_title_t **)*p_vcdplayer->i_titles);
if( p_vcdplayer->p_title[i] )
(*ppp_title)[i] =
vlc_input_title_Duplicate(p_vcdplayer->p_title[i]);
+ break;
}
- break;
+
+ case ACCESS_GET_TITLE:
+ *va_arg( args, unsigned * ) = p_vcdplayer->i_cur_title;
+ break;
+
+ case ACCESS_GET_SEEKPOINT:
+ *va_arg( args, unsigned * ) = p_vcdplayer->i_cur_chapter;
+ break;
case ACCESS_SET_TITLE:
i = (int)va_arg( args, int );
dbg_print( INPUT_DBG_EVENT, "set title %d" , i);
- if( i != p_access->info.i_title )
+ if( i != p_vcdplayer->i_cur_title )
{
vcdinfo_itemid_t itemid;
track_t i_track = i+1;
case ACCESS_SET_SEEKPOINT:
{
- input_title_t *t = p_vcdplayer->p_title[p_access->info.i_title];
+ input_title_t *t = p_vcdplayer->p_title[p_vcdplayer->i_cur_title];
unsigned int i = (unsigned int)va_arg( args, unsigned int );
dbg_print( INPUT_DBG_EVENT, "set seekpoint %d", i );
if( t->i_seekpoint > 0 )
{
- track_t i_track = p_access->info.i_title+1;
+ track_t i_track = p_vcdplayer->i_cur_title + 1;
lsn_t lsn;
/* FIXME! For now we are assuming titles are only tracks and
VCDSetOrigin(p_access,vcdinfo_get_entry_lsn(p_vcdplayer->vcd,i),
i_track,&(p_vcdplayer->play_item));
}
- return VLC_SUCCESS;
+ break;
}
- case ACCESS_SET_PRIVATE_ID_STATE:
- dbg_print( INPUT_DBG_EVENT, "set private id" );
- return VLC_EGENERIC;
-
default:
- msg_Warn( p_access, "unimplemented query in control" );
return VLC_EGENERIC;
-
}
return VLC_SUCCESS;
}