mirror of https://github.com/mpv-player/mpv
Moved dvdtimetomsec to stream_dvd_common.c.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24013 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
5acbb3c611
commit
e5a6eae2cf
|
@ -14,7 +14,7 @@ SRCS_COMMON-$(CDDA) += stream_cdda.c cdinfo.c
|
||||||
SRCS_COMMON-$(CDDB) += stream_cddb.c
|
SRCS_COMMON-$(CDDB) += stream_cddb.c
|
||||||
SRCS_COMMON-$(DVBIN) += dvb_tune.c stream_dvb.c
|
SRCS_COMMON-$(DVBIN) += dvb_tune.c stream_dvb.c
|
||||||
SRCS_COMMON-$(DVDNAV) += stream_dvdnav.c
|
SRCS_COMMON-$(DVDNAV) += stream_dvdnav.c
|
||||||
SRCS_COMMON-$(DVDREAD) += stream_dvd.c
|
SRCS_COMMON-$(DVDREAD) += stream_dvd.c stream_dvd_common.c
|
||||||
SRCS_COMMON-$(FTP) += stream_ftp.c
|
SRCS_COMMON-$(FTP) += stream_ftp.c
|
||||||
SRCS_COMMON-$(LIBSMBCLIENT) += stream_smb.c
|
SRCS_COMMON-$(LIBSMBCLIENT) += stream_smb.c
|
||||||
SRCS_COMMON-$(MPLAYER_NETWORK) += stream_netstream.c \
|
SRCS_COMMON-$(MPLAYER_NETWORK) += stream_netstream.c \
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "m_struct.h"
|
#include "m_struct.h"
|
||||||
|
|
||||||
#include "stream_dvd.h"
|
#include "stream_dvd.h"
|
||||||
|
#include "stream_dvd_common.h"
|
||||||
#include "libmpdemux/demuxer.h"
|
#include "libmpdemux/demuxer.h"
|
||||||
|
|
||||||
extern int stream_cache_size;
|
extern int stream_cache_size;
|
||||||
|
@ -512,23 +513,6 @@ static void stream_dvd_close(stream_t *s) {
|
||||||
dvd_close(s->priv);
|
dvd_close(s->priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
\brief Converts DVD time structure to milliseconds.
|
|
||||||
\param *dev the DVD time structure to convert
|
|
||||||
\return returns the time in milliseconds
|
|
||||||
*/
|
|
||||||
static int dvdtimetomsec(dvd_time_t *dt)
|
|
||||||
{
|
|
||||||
static int framerates[4] = {0, 2500, 0, 2997};
|
|
||||||
int framerate = framerates[(dt->frame_u & 0xc0) >> 6];
|
|
||||||
int msec = (((dt->hour & 0xf0) >> 3) * 5 + (dt->hour & 0x0f)) * 3600000;
|
|
||||||
msec += (((dt->minute & 0xf0) >> 3) * 5 + (dt->minute & 0x0f)) * 60000;
|
|
||||||
msec += (((dt->second & 0xf0) >> 3) * 5 + (dt->second & 0x0f)) * 1000;
|
|
||||||
if(framerate > 0)
|
|
||||||
msec += (((dt->frame_u & 0x30) >> 3) * 5 + (dt->frame_u & 0x0f)) * 100000 / framerate;
|
|
||||||
return msec;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mp_get_titleset_length(ifo_handle_t *vts_file, tt_srpt_t *tt_srpt, int title_no)
|
static int mp_get_titleset_length(ifo_handle_t *vts_file, tt_srpt_t *tt_srpt, int title_no)
|
||||||
{
|
{
|
||||||
int vts_ttn; ///< title number within video title set
|
int vts_ttn; ///< title number within video title set
|
||||||
|
@ -543,7 +527,7 @@ static int mp_get_titleset_length(ifo_handle_t *vts_file, tt_srpt_t *tt_srpt, in
|
||||||
{
|
{
|
||||||
vts_ttn = tt_srpt->title[title_no].vts_ttn - 1;
|
vts_ttn = tt_srpt->title[title_no].vts_ttn - 1;
|
||||||
pgc_no = vts_file->vts_ptt_srpt->title[vts_ttn].ptt[0].pgcn - 1;
|
pgc_no = vts_file->vts_ptt_srpt->title[vts_ttn].ptt[0].pgcn - 1;
|
||||||
msec = dvdtimetomsec(&vts_file->vts_pgcit->pgci_srp[pgc_no].pgc->playback_time);
|
msec = mp_dvdtimetomsec(&vts_file->vts_pgcit->pgci_srp[pgc_no].pgc->playback_time);
|
||||||
}
|
}
|
||||||
return msec;
|
return msec;
|
||||||
}
|
}
|
||||||
|
@ -618,7 +602,7 @@ static void list_chapters(pgc_t *pgc)
|
||||||
if(!(pgc->cell_playback[cell-1].block_type == BLOCK_TYPE_ANGLE_BLOCK &&
|
if(!(pgc->cell_playback[cell-1].block_type == BLOCK_TYPE_ANGLE_BLOCK &&
|
||||||
pgc->cell_playback[cell-1].block_mode != BLOCK_MODE_FIRST_CELL)
|
pgc->cell_playback[cell-1].block_mode != BLOCK_MODE_FIRST_CELL)
|
||||||
)
|
)
|
||||||
t += dvdtimetomsec(&pgc->cell_playback[cell-1].playback_time);
|
t += mp_dvdtimetomsec(&pgc->cell_playback[cell-1].playback_time);
|
||||||
cell++;
|
cell++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -639,7 +623,7 @@ static double dvd_get_current_time(stream_t *stream, int cell)
|
||||||
continue;
|
continue;
|
||||||
tm += d->cell_times_table[i];
|
tm += d->cell_times_table[i];
|
||||||
}
|
}
|
||||||
tm += dvdtimetomsec(&d->dsi_pack.dsi_gi.c_eltm);
|
tm += mp_dvdtimetomsec(&d->dsi_pack.dsi_gi.c_eltm);
|
||||||
|
|
||||||
return (double)tm/1000.0;
|
return (double)tm/1000.0;
|
||||||
}
|
}
|
||||||
|
@ -680,7 +664,7 @@ static int dvd_seek_to_time(stream_t *stream, ifo_handle_t *vts_file, double sec
|
||||||
stream_seek(stream, pos);
|
stream_seek(stream, pos);
|
||||||
do {
|
do {
|
||||||
stream_skip(stream, 2048);
|
stream_skip(stream, 2048);
|
||||||
t = dvdtimetomsec(&d->dsi_pack.dsi_gi.c_eltm);
|
t = mp_dvdtimetomsec(&d->dsi_pack.dsi_gi.c_eltm);
|
||||||
} while(!t);
|
} while(!t);
|
||||||
tm = dvd_get_current_time(stream, 0);
|
tm = dvd_get_current_time(stream, 0);
|
||||||
|
|
||||||
|
@ -1099,7 +1083,7 @@ static int open_s(stream_t *stream,int mode, void* opts, int* file_format) {
|
||||||
if(d->cell_times_table == NULL)
|
if(d->cell_times_table == NULL)
|
||||||
return STREAM_UNSUPORTED;
|
return STREAM_UNSUPORTED;
|
||||||
for(k=0; k<d->cur_pgc->nr_of_cells; k++)
|
for(k=0; k<d->cur_pgc->nr_of_cells; k++)
|
||||||
d->cell_times_table[k] = dvdtimetomsec(&d->cur_pgc->cell_playback[k].playback_time);
|
d->cell_times_table[k] = mp_dvdtimetomsec(&d->cur_pgc->cell_playback[k].playback_time);
|
||||||
list_chapters(d->cur_pgc);
|
list_chapters(d->cur_pgc);
|
||||||
|
|
||||||
// ... (unimplemented)
|
// ... (unimplemented)
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include <dvdread/ifo_types.h>
|
||||||
|
#include "stream_dvd_common.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Converts DVD time structure to milliseconds.
|
||||||
|
\param *dev the DVD time structure to convert
|
||||||
|
\return returns the time in milliseconds
|
||||||
|
*/
|
||||||
|
int mp_dvdtimetomsec(dvd_time_t *dt)
|
||||||
|
{
|
||||||
|
static int framerates[4] = {0, 2500, 0, 2997};
|
||||||
|
int framerate = framerates[(dt->frame_u & 0xc0) >> 6];
|
||||||
|
int msec = (((dt->hour & 0xf0) >> 3) * 5 + (dt->hour & 0x0f)) * 3600000;
|
||||||
|
msec += (((dt->minute & 0xf0) >> 3) * 5 + (dt->minute & 0x0f)) * 60000;
|
||||||
|
msec += (((dt->second & 0xf0) >> 3) * 5 + (dt->second & 0x0f)) * 1000;
|
||||||
|
if(framerate > 0)
|
||||||
|
msec += (((dt->frame_u & 0x30) >> 3) * 5 + (dt->frame_u & 0x0f)) * 100000 / framerate;
|
||||||
|
return msec;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
int mp_dvdtimetomsec(dvd_time_t *dt);
|
Loading…
Reference in New Issue