summaryrefslogtreecommitdiffstats
path: root/demux/demux_lavf.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-02-26 00:38:36 +0100
committerwm4 <wm4@nowhere>2013-02-26 02:01:48 +0100
commit72bdc5d3af22735753e1487fd251db09f8a20194 (patch)
tree4a1d47258e767023b2dc09d5db4a8fc386412896 /demux/demux_lavf.c
parent70346d3be623bc5edc31a15bd1ca205c33050219 (diff)
downloadmpv-72bdc5d3af22735753e1487fd251db09f8a20194.tar.bz2
mpv-72bdc5d3af22735753e1487fd251db09f8a20194.tar.xz
core: use playback time to determine playback percent position
The percent position is used for the OSD, the status line, and for the OSD bar (shown on seeks). By default, the PTS of the last demuxed packet was used to calculate it. This led to a "jumpy" display when the percentage value (casted to int) was changing. The reasons for this were the presence of video frame reordering (packet PTS is not monotonic), or getting PTS values from different streams (like audio/subs). Since these rely on PTS values and correct file durations anyway, simplify it by calculating it with the current playback position in mplayer.c instead.
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r--demux/demux_lavf.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index eaa0cfadf8..23495d0ed5 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -765,15 +765,10 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
*((double *)arg) = (double)priv->avfc->duration / AV_TIME_BASE;
return DEMUXER_CTRL_OK;
- case DEMUXER_CTRL_GET_PERCENT_POS:
- if (priv->seek_by_bytes)
- return DEMUXER_CTRL_DONTKNOW; // let it use the fallback code
- if (priv->avfc->duration == 0 || priv->avfc->duration == AV_NOPTS_VALUE)
- return DEMUXER_CTRL_DONTKNOW;
-
- *((int *)arg) = (int)((priv->last_pts - priv->avfc->start_time) * 100 /
- priv->avfc->duration);
+ case DEMUXER_CTRL_GET_START_TIME:
+ *((double *)arg) = (double)priv->avfc->start_time / AV_TIME_BASE;
return DEMUXER_CTRL_OK;
+
case DEMUXER_CTRL_SWITCH_AUDIO:
case DEMUXER_CTRL_SWITCH_VIDEO:
{