diff options
author | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-03-09 20:29:50 +0000 |
---|---|---|
committer | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-03-09 20:29:50 +0000 |
commit | 0c7b6fc2123db6a4f77064d9bfe8f7f7c185a102 (patch) | |
tree | 727dabfcf99c9f90be5af7612353647673965c32 | |
parent | 5408489488e75903594baee798efcf5b665cb551 (diff) | |
download | mpv-0c7b6fc2123db6a4f77064d9bfe8f7f7c185a102.tar.bz2 mpv-0c7b6fc2123db6a4f77064d9bfe8f7f7c185a102.tar.xz |
Rather simple patch for RAWDV demuxer which lets it say whats the total
movie length.
Patch by Oded Shimon
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14935 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libmpdemux/demux_rawdv.c | 18 | ||||
-rw-r--r-- | libmpdemux/demuxer.c | 7 |
2 files changed, 25 insertions, 0 deletions
diff --git a/libmpdemux/demux_rawdv.c b/libmpdemux/demux_rawdv.c index dea8463092..ad7a903137 100644 --- a/libmpdemux/demux_rawdv.c +++ b/libmpdemux/demux_rawdv.c @@ -225,4 +225,22 @@ void demux_close_rawdv(demuxer_t* demuxer) free(frames); } +int demux_rawdv_control(demuxer_t *demuxer,int cmd, void *arg) { + rawdv_frames_t *frames = (rawdv_frames_t *)demuxer->priv; + sh_video_t *sh_video=demuxer->video->sh; + + switch(cmd) { + case DEMUXER_CTRL_GET_TIME_LENGTH: + *((unsigned long *)arg)=frames->frame_number / sh_video->fps; + return DEMUXER_CTRL_OK; + + case DEMUXER_CTRL_GET_PERCENT_POS: + *((int *)arg)=(int)(frames->current_frame * 100. / frames->frame_number); + return DEMUXER_CTRL_OK; + + default: + return DEMUXER_CTRL_NOTIMPL; + } +} + #endif diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 27ddfa5d94..3c72dfe99f 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1720,6 +1720,9 @@ extern int demux_mov_control(demuxer_t *demuxer, int cmd, void *arg); #ifdef USE_WIN32DLL extern int demux_avs_control(demuxer_t *demuxer, int cmd, void *arg); #endif +#ifdef HAVE_LIBDV095 +extern int demux_rawdv_control(demuxer_t *demuxer,int cmd, void *arg); +#endif int demux_control(demuxer_t *demuxer, int cmd, void *arg) { switch(demuxer->type) { @@ -1762,6 +1765,10 @@ int demux_control(demuxer_t *demuxer, int cmd, void *arg) { case DEMUXER_TYPE_AVS: return demux_avs_control(demuxer, cmd, arg); #endif +#ifdef HAVE_LIBDV095 + case DEMUXER_TYPE_RAWDV: + return demux_rawdv_control(demuxer,cmd, arg); +#endif default: return DEMUXER_CTRL_NOTIMPL; } |