コード例 #1
0
ファイル: access.c プロジェクト: lustigepepe/pVLC
/*
   Sets start origin for subsequent seeks/reads
*/
void
VCDSetOrigin( 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;

    dbg_print( (INPUT_DBG_CALL|INPUT_DBG_LSN),
               "i_lsn: %lu, track: %d", (long unsigned int) i_lsn, i_track );

    vcdplayer_set_origin(p_access, i_lsn, i_track, p_itemid);

    switch (p_vcdplayer->play_item.type)
    {
    case VCDINFO_ITEM_TYPE_ENTRY:
        VCDUpdateVar( p_access, p_itemid->num, VLC_VAR_SETVALUE,
                      "chapter", _("Entry"), "Setting entry/segment");
        p_vcdplayer->i_cur_title = i_track - 1;
        p_vcdplayer->i_cur_chapter = p_itemid->num;
        break;

    case VCDINFO_ITEM_TYPE_SEGMENT:
        VCDUpdateVar( p_access, p_itemid->num, VLC_VAR_SETVALUE,
                      "chapter", _("Segment"),  "Setting entry/segment");
        /* The last title entry is the for segments (when segments exist
           and they must here. The segment seekpoints are stored after
           the entry seekpoints and (zeroed) lid seekpoints.
        */
        p_vcdplayer->i_cur_title   = p_vcdplayer->i_titles - 1;
        p_vcdplayer->i_cur_chapter = p_vcdplayer->i_entries
                                   + p_vcdplayer->i_lids + p_itemid->num;
        break;

    case VCDINFO_ITEM_TYPE_TRACK:
        p_vcdplayer->i_cur_title   = i_track - 1;
        p_vcdplayer->i_cur_chapter = vcdinfo_track_get_entry(p_vcdplayer->vcd,
                                                             i_track);
        break;

    default:
        msg_Warn( p_access, "can't set origin for play type %d",
                  p_vcdplayer->play_item.type );
    }

    VCDUpdateTitle( p_access );

}
コード例 #2
0
ファイル: access.c プロジェクト: BtbN/vlc
/*
   Sets start origin for subsequent seeks/reads
*/
void
VCDSetOrigin( 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;

    dbg_print( (INPUT_DBG_CALL|INPUT_DBG_LSN),
               "i_lsn: %lu, track: %d", (long unsigned int) i_lsn, i_track );

    vcdplayer_set_origin(p_access, i_lsn, i_track, p_itemid);

    switch (p_vcdplayer->play_item.type)
    {
    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;
        if (p_vcdplayer->b_track_length)
        {
            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_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_vcdplayer->size, p_access->info.i_pos );
        p_access->info.i_seekpoint = p_itemid->num;
        break;

    case VCDINFO_ITEM_TYPE_SEGMENT:
        VCDUpdateVar( p_access, p_itemid->num, VLC_VAR_SETVALUE,
                      "chapter", _("Segment"),  "Setting entry/segment");
        /* The last title entry is the for segments (when segments exist
           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_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_lids + p_itemid->num;
        break;

    case VCDINFO_ITEM_TYPE_TRACK:
        p_access->info.i_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,
                                                             i_track);
        break;

    default:
        msg_Warn( p_access, "can't set origin for play type %d",
                  p_vcdplayer->play_item.type );
    }

    p_access->info.i_update = INPUT_UPDATE_TITLE|INPUT_UPDATE_SEEKPOINT;

    VCDUpdateTitle( p_access );

}