summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-16 03:42:14 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-16 03:42:14 +0000
commit422b0d2a4c936d87ed27ee7b56e21d2d60752194 (patch)
tree1a739173121ee09271ab441c058fc5ec7b0857bb /libmpdemux/demuxer.c
parent4bda81ad1667ff2f6fd888a5010c375fde8e5038 (diff)
downloadmpv-422b0d2a4c936d87ed27ee7b56e21d2d60752194.tar.bz2
mpv-422b0d2a4c936d87ed27ee7b56e21d2d60752194.tar.xz
demuxer_control(), percent position and time length query implemented in
asf, avi, mpeg demuxers. patch by Balatoni Denes <pnis@coder.hu> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8209 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 29a6d54e0d..67dca84f77 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1245,3 +1245,41 @@ char* demux_info_get(demuxer_t *demuxer, char *opt) {
return NULL;
}
+extern int demux_mpg_control(demuxer_t *demuxer, int cmd, void *arg);
+extern int demux_asf_control(demuxer_t *demuxer, int cmd, void *arg);
+extern int demux_avi_control(demuxer_t *demuxer, int cmd, void *arg);
+
+int demux_control(demuxer_t *demuxer, int cmd, void *arg) {
+ switch(demuxer->type) {
+ case DEMUXER_TYPE_MPEG_ES:
+ case DEMUXER_TYPE_MPEG_PS:
+ return demux_mpg_control(demuxer,cmd,arg);
+ case DEMUXER_TYPE_ASF:
+ return demux_asf_control(demuxer,cmd,arg);
+ case DEMUXER_TYPE_AVI:
+ return demux_avi_control(demuxer,cmd,arg);
+
+ default:
+ return DEMUXER_CTRL_NOTIMPL;
+ }
+}
+
+
+
+unsigned long demuxer_get_time_length(demuxer_t *demuxer){
+ unsigned long get_time_ans;
+ if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,(void *)&get_time_ans)<=0) {
+ get_time_ans=0;
+ }
+ return get_time_ans;
+}
+
+int demuxer_get_percent_pos(demuxer_t *demuxer){
+ int ans;
+ if (demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans)<=DEMUXER_CTRL_OK) {
+ ans=0;
+ }
+ if (ans>100 || ans<0) ans=0;
+ return ans;
+}
+