implemented STREAM_CTRL_GET_TIME_LENGTH (duration of the pgc playing)

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19459 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nicodvb 2006-08-19 19:41:04 +00:00
parent 2dfbc4cea7
commit 84c982c65f
2 changed files with 15 additions and 0 deletions

View File

@ -216,6 +216,12 @@ int dvdnav_stream_read(dvdnav_priv_t * dvdnav_priv, unsigned char *buf, int *len
break;
}
case DVDNAV_CELL_CHANGE: {
dvdnav_cell_change_event_t *ev = (dvdnav_cell_change_event_t*)buf;
if(ev->pgc_length)
dvdnav_priv->duration = ev->pgc_length/90;
break;
}
case DVDNAV_WAIT:
dvdnav_wait_skip(dvdnav_priv->dvdnav);
break;
@ -357,6 +363,14 @@ static int control(stream_t *stream, int cmd, void* arg) {
*((unsigned int *)arg) = part - 1;
return 1;
}
case STREAM_CTRL_GET_TIME_LENGTH:
{
if(dvdnav_priv->duration)
{
*((unsigned int *)arg) = dvdnav_priv->duration;
return 1;
}
}
}
return STREAM_UNSUPORTED;

View File

@ -18,6 +18,7 @@ typedef struct {
int started; /* Has mplayer initialization finished? */
unsigned char prebuf[STREAM_BUFFER_SIZE]; /* prefill buffer */
int prelen; /* length of prefill buffer */
unsigned int duration; /* in milliseconds */
} dvdnav_priv_t;
extern int dvd_nav_still;