*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*
*****************************************************************************/
#include <vlc/vlc.h>
-#include <vlc/input.h>
-#include <vlc/intf.h>
+#include <vlc_input.h>
+#include <vlc_interface.h>
#include "vcd.h"
#include "vcdplayer.h"
#include <cdio/util.h>
#include <libvcd/info.h>
-#ifdef WIN32
-#define sleep(A) Sleep((A)*1000)
-#endif
-
extern void VCDSetOrigin ( access_t *p_access, lsn_t i_lsn, track_t i_track,
const vcdinfo_itemid_t * p_itemid );
case VCDINFO_ITEM_TYPE_NOTFOUND:
case VCDINFO_ITEM_TYPE_SPAREID2:
default:
- LOG_ERR("%s %d", _("bad item type"), itemid.type);
+ LOG_ERR("%s %d", "bad item type", itemid.type);
return 0;
}
}
const unsigned int i_entries = vcdinfo_get_num_entries(p_vcdinfo);
if (num >= i_entries) {
- LOG_ERR("%s %d", _("bad entry number"), num);
+ LOG_ERR("%s %d", "bad entry number", num);
return;
} else {
vcdinfo_itemid_t itemid;
segnum_t i_segs = vcdinfo_get_num_segments(p_vcdinfo);
if (num >= i_segs) {
- LOG_ERR("%s %d", _("bad segment number"), num);
+ LOG_ERR("%s %d", "bad segment number", num);
return;
} else {
vcdinfo_itemid_t itemid;
if (VCDINFO_NULL_LSN==p_vcdplayer->i_lsn) {
LOG_ERR("%s %d",
- _("Error in getting current segment number"), num);
+ "Error in getting current segment number", num);
return;
}
}
case VCDINFO_ITEM_TYPE_LID:
- LOG_ERR("%s", _("Should have converted p_vcdplayer above"));
+ LOG_ERR("%s", "Should have converted p_vcdplayer above");
return false;
break;
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)
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;
p_vcdplayer->i_track = i_track;
p_vcdplayer->track_lsn = vcdinfo_get_track_lsn(p_vcdplayer->vcd,
i_track);
+ p_vcdplayer->track_end_lsn = p_vcdplayer->track_lsn +
+ vcdinfo_get_track_sect_count(p_vcdplayer->vcd, i_track);
dbg_print((INPUT_DBG_CALL|INPUT_DBG_LSN),
"lsn %u, end LSN: %u item.num %d, item.type %d",
return READ_BLOCK;
} else if (p_vcdplayer->i_still) {
/* Hack: Just go back and do still again */
- sleep(1);
+ msleep(1000);
return READ_STILL_FRAME;
}
}
dbg_print(INPUT_DBG_PBC, "DEFAULT to %d", itemid.num);
} else {
dbg_print(INPUT_DBG_PBC, "no DEFAULT for LID %d", p_vcdplayer->i_lid);
+ return VLC_EGENERIC;
}
#else
/* PBC is not on. "default" selection beginning of current
selection . */
- p_vcdplayer->play_item.num = p_vcdplayer->play_item.num;
+ itemid.num = p_vcdplayer->play_item.num;
}
p_vcdinfo = p_vcdplayer->vcd;
- itemid.type = p_vcdplayer->play_item.type;
+ itemid = p_vcdplayer->play_item;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {
dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
"current: %d" , p_vcdplayer->play_item.num);
- itemid.type = p_vcdplayer->play_item.type;
+ itemid = p_vcdplayer->play_item;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {
dbg_print( (INPUT_DBG_CALL|INPUT_DBG_PBC),
"current: %d" , p_vcdplayer->play_item.num);
- itemid.type = p_vcdplayer->play_item.type;
+ itemid = p_vcdplayer->play_item;
if (vcdplayer_pbc_is_on(p_vcdplayer)) {