From: Rocky Bernstein Date: Sat, 23 Jul 2005 11:25:49 +0000 (+0000) Subject: access.c: LID and Segment for non PBC (the default) needs more work. X-Git-Tag: 0.8.4~1191 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ed1279a6ea4bbc2b1dc0e04acb27906f55391046;p=vlc access.c: LID and Segment for non PBC (the default) needs more work. Check for them and disable (somewhat). vcdplayer.c: check for invalid LSN in setting origin. --- diff --git a/modules/access/vcdx/access.c b/modules/access/vcdx/access.c index 1af0df9e51..cb1ac4ce9d 100644 --- a/modules/access/vcdx/access.c +++ b/modules/access/vcdx/access.c @@ -1140,11 +1140,26 @@ static int VCDControl( access_t *p_access, int i_query, va_list args ) unsigned int i_entry = vcdinfo_track_get_entry( p_vcdplayer->vcd, i_track); - /* FIXME! For now we are assuming titles are only - tracks and that track == title+1 */ - itemid.num = i_track; - itemid.type = VCDINFO_ITEM_TYPE_TRACK; - + if( i < p_vcdplayer->i_tracks ) + { + /* FIXME! For now we are assuming titles are only + tracks and that track == title+1 */ + itemid.num = i_track; + itemid.type = VCDINFO_ITEM_TYPE_TRACK; + } + else + { + /* FIXME! i_tracks+2 are Segments, but we need to + be able to figure out which segment of that. + i_tracks+1 is either Segments (if no LIDs) or + LIDs otherwise. Again need a way to get the LID + number. */ + msg_Warn( p_access, + "Trying to set track (%u) beyond end of last track (%u).", + i+1, p_vcdplayer->i_tracks ); + return VLC_EGENERIC; + } + VCDSetOrigin(p_access, vcdinfo_get_entry_lsn(p_vcdplayer->vcd, i_entry), i_track, &itemid ); diff --git a/modules/access/vcdx/vcdplayer.c b/modules/access/vcdx/vcdplayer.c index 8374f28ed6..78bcdc64d0 100644 --- a/modules/access/vcdx/vcdplayer.c +++ b/modules/access/vcdx/vcdplayer.c @@ -326,7 +326,6 @@ vcdplayer_play_single_item( access_t * p_access, vcdinfo_itemid_t itemid) changed: p_vcdplayer->origin_lsn, p_vcdplayer->end_lsn */ -/* FIXME: add parameters lsn, i_track, p_itemid and set accordingly. */ void vcdplayer_set_origin(access_t *p_access, lsn_t i_lsn, track_t i_track, const vcdinfo_itemid_t *p_itemid) @@ -334,6 +333,12 @@ vcdplayer_set_origin(access_t *p_access, lsn_t i_lsn, track_t i_track, vcdplayer_t *p_vcdplayer = (vcdplayer_t *)p_access->p_sys; const size_t i_size= vcdplayer_get_item_size(p_access, *p_itemid); + if( VCDINFO_NULL_LSN == i_lsn ) + { + LOG_ERR("%s %d", "Invalid LSN for track", i_track); + return; + } + p_vcdplayer->play_item.num = p_itemid->num; p_vcdplayer->play_item.type = p_itemid->type; p_vcdplayer->i_lsn = i_lsn;