summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-08 00:54:32 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-08 18:05:12 +0200
commit9a663ffec62720931f34ae2742a32652d1de5f8e (patch)
tree6fe61b81610e178b760f3a5f4e0403fe4690d23b /libmpdemux/demuxer.c
parent3628a903f40943740ff97a03a106d9a5208fae76 (diff)
downloadmpv-9a663ffec62720931f34ae2742a32652d1de5f8e.tar.bz2
mpv-9a663ffec62720931f34ae2742a32652d1de5f8e.tar.xz
core: move video pos/length query functions from demux to core
Move functions to query current playback position, percentage position and total video length from from the demuxer layer to top level. The functions need access to playback state that doesn't belong on the demuxing level. Make the new functions more capable and simplify some code that can now rely on them. This fixes some errors in displayed in OSD and slave mode information when using timeline (ordered chapters).
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c63
1 files changed, 0 insertions, 63 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index ae81ae3e33..99f1be9fe8 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1379,69 +1379,6 @@ int demux_control(demuxer_t *demuxer, int cmd, void *arg)
return DEMUXER_CTRL_NOTIMPL;
}
-
-
-double demuxer_get_time_length(demuxer_t *demuxer)
-{
- double get_time_ans;
- sh_video_t *sh_video = demuxer->video->sh;
- sh_audio_t *sh_audio = demuxer->audio->sh;
- // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW
- if (demux_control
- (demuxer, DEMUXER_CTRL_GET_TIME_LENGTH, (void *) &get_time_ans) <= 0) {
- if (sh_video && sh_video->i_bps && sh_audio && sh_audio->i_bps)
- get_time_ans = (double) (demuxer->movi_end -
- demuxer->movi_start) / (sh_video->i_bps +
- sh_audio->i_bps);
- else if (sh_video && sh_video->i_bps)
- get_time_ans = (double) (demuxer->movi_end -
- demuxer->movi_start) / sh_video->i_bps;
- else if (sh_audio && sh_audio->i_bps)
- get_time_ans = (double) (demuxer->movi_end -
- demuxer->movi_start) / sh_audio->i_bps;
- else
- get_time_ans = 0;
- }
- return get_time_ans;
-}
-
-/**
- * \brief demuxer_get_current_time() returns the time of the current play in three possible ways:
- * either when the stream reader satisfies STREAM_CTRL_GET_CURRENT_TIME (e.g. dvd)
- * or using sh_video->pts when the former method fails
- * 0 otherwise
- * \return the current play time
- */
-int demuxer_get_current_time(demuxer_t *demuxer)
-{
- double get_time_ans = 0;
- sh_video_t *sh_video = demuxer->video->sh;
- if (demuxer->stream_pts != MP_NOPTS_VALUE)
- get_time_ans = demuxer->stream_pts;
- else if (sh_video)
- get_time_ans = sh_video->pts;
- return (int) get_time_ans;
-}
-
-int demuxer_get_percent_pos(demuxer_t *demuxer)
-{
- int ans = 0;
- int res = demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans);
- int len = (demuxer->movi_end - demuxer->movi_start) / 100;
- if (res <= 0) {
- off_t pos = demuxer->filepos > 0 ? demuxer->filepos : stream_tell(demuxer->stream);
- if (len > 0)
- ans = (pos - demuxer->movi_start) / len;
- else
- ans = 0;
- }
- if (ans < 0)
- ans = 0;
- if (ans > 100)
- ans = 100;
- return ans;
-}
-
int demuxer_switch_audio(demuxer_t *demuxer, int index)
{
int res = demux_control(demuxer, DEMUXER_CTRL_SWITCH_AUDIO, &index);