关于mplayer dvd seek定位函数dvd_seek_to_time

本文详细分析了mplayer中的dvd_seek_to_time函数,该函数通过时间来定位DVD播放。首先,通过时间找到对应的cell,然后在cell中定位时间偏移量,最后确定DVDReadBlocks所需的cur_pack。整个过程类似千分尺原理,先找cell,再找时间偏移,从而实现精确的DVD播放定位。
摘要由CSDN通过智能技术生成

环境:mplayer,及它下面的stream
说明:1。本文只是阅读它的代码,没有进行调试跟踪,可能有出入不对的地方.

2。希望读者对dvd的逻辑结构有些了解,如vts, pgc, chapter, cell它们的关系.

dvd如何通过时间来定位的,可通过dvd_seek_to_time来分析,看看它是如何通过时间来定位的。也就是把时间转换成sector, DVDReadBlocks中的参数offset Block
它的定位就有点象物理学中的千分尺(游标卡尺),先通过时间查到所属dvd的cell,再在cell中找到时间偏移量,这时才确定dvd_read_sector所需要的cur_pack. <<DVDReadBlocks(d->title, d->cur_pack, 1, data)>>

static int dvd_seek_to_time(stream_t *stream, ifo_handle_t *vts_file, double sec)
{
    unsigned int i, j, k, timeunit, ac_time, tmap_sector=0, cell_sector=0, vobu_sector=0;
    int t=0;
    double tm, duration;
    off_t pos = -1;
    dvd_priv_t *d = stream->priv;
    vts_tmapt_t *vts_tmapt = vts_file->vts_tmapt;

    if(!vts_file->vts_tmapt || sec < 0)
        return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值