+
+/* Play entry. */
+/* Play a single item. */
+static void
+vcdplayer_play_single_item( access_t * p_access, vcdinfo_itemid_t itemid)
+{
+ vcdplayer_t *p_vcd = (vcdplayer_t *)p_access->p_sys;
+ vcdinfo_obj_t *p_obj = p_vcd->vcd;
+
+ dbg_print(INPUT_DBG_CALL, "called itemid.num: %d, itemid.type: %d\n",
+ itemid.num, itemid.type);
+
+ p_vcd->in_still = 0;
+
+ switch (itemid.type) {
+ case VCDINFO_ITEM_TYPE_SEGMENT:
+ {
+ vcdinfo_video_segment_type_t segtype
+ = vcdinfo_get_video_type(p_obj, itemid.num);
+ segnum_t num_segs = vcdinfo_get_num_segments(p_obj);
+
+ dbg_print(INPUT_DBG_PBC, "%s (%d), itemid.num: %d\n",
+ vcdinfo_video_type2str(p_obj, itemid.num),
+ (int) segtype, itemid.num);
+
+ if (itemid.num >= num_segs) return;
+ _vcdplayer_set_segment(p_access, itemid.num);
+
+ switch (segtype)
+ {
+ case VCDINFO_FILES_VIDEO_NTSC_STILL:
+ case VCDINFO_FILES_VIDEO_NTSC_STILL2:
+ case VCDINFO_FILES_VIDEO_PAL_STILL:
+ case VCDINFO_FILES_VIDEO_PAL_STILL2:
+ p_vcd->in_still = -5;
+ break;
+ default:
+ p_vcd->in_still = 0;
+ }
+
+ break;
+ }
+
+ case VCDINFO_ITEM_TYPE_TRACK:
+ dbg_print(INPUT_DBG_PBC, "track %d\n", itemid.num);
+ if (itemid.num < 1 || itemid.num > p_vcd->i_tracks) return;
+ _vcdplayer_set_track(p_access, itemid.num);
+ break;
+
+ case VCDINFO_ITEM_TYPE_ENTRY:
+ {
+ unsigned int num_entries = vcdinfo_get_num_entries(p_obj);
+ dbg_print(INPUT_DBG_PBC, "entry %d\n", itemid.num);
+ if (itemid.num >= num_entries) return;
+ _vcdplayer_set_entry(p_access, itemid.num);
+ break;
+ }
+
+ case VCDINFO_ITEM_TYPE_LID:
+ LOG_ERR("%s\n", _("Should have converted p_vcd above"));
+ break;
+
+ case VCDINFO_ITEM_TYPE_NOTFOUND:
+ dbg_print(INPUT_DBG_PBC, "play nothing\n");
+ p_vcd->i_lsn = p_vcd->end_lsn;
+ return;
+
+ default:
+ LOG_ERR("item type %d not implemented.\n", itemid.type);
+ return;
+ }
+
+ p_vcd->play_item = itemid;
+
+ /* Some players like xine, have a fifo queue of audio and video buffers
+ that need to be flushed when playing a new selection. */
+ /* if (p_vcd->flush_buffers)
+ p_vcd->flush_buffers(); */
+
+}
+