comparison libmpdemux/demuxer.c @ 14197:2ae224195625

Use demuxer_get_percent_pos for the OSD position bar
author reimar
date Tue, 21 Dec 2004 12:25:59 +0000
parents 467dae0f6c68
children 815f03b7cee5
comparison
equal deleted inserted replaced
14196:8d870bffcb88 14197:2ae224195625
1640 extern int demux_mkv_control(demuxer_t *demuxer, int cmd, void *arg); 1640 extern int demux_mkv_control(demuxer_t *demuxer, int cmd, void *arg);
1641 extern int demux_audio_control(demuxer_t *demuxer, int cmd, void *arg); 1641 extern int demux_audio_control(demuxer_t *demuxer, int cmd, void *arg);
1642 extern int demux_ogg_control(demuxer_t *demuxer, int cmd, void *arg); 1642 extern int demux_ogg_control(demuxer_t *demuxer, int cmd, void *arg);
1643 extern int demux_real_control(demuxer_t *demuxer, int cmd, void *arg); 1643 extern int demux_real_control(demuxer_t *demuxer, int cmd, void *arg);
1644 extern int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg); 1644 extern int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg);
1645 extern int demux_mov_control(demuxer_t *demuxer, int cmd, void *arg);
1645 1646
1646 int demux_control(demuxer_t *demuxer, int cmd, void *arg) { 1647 int demux_control(demuxer_t *demuxer, int cmd, void *arg) {
1647 switch(demuxer->type) { 1648 switch(demuxer->type) {
1648 case DEMUXER_TYPE_MPEG_TY: 1649 case DEMUXER_TYPE_MPEG_TY:
1649 return demux_ty_control(demuxer,cmd,arg); 1650 return demux_ty_control(demuxer,cmd,arg);
1676 return demux_real_control(demuxer, cmd, arg); 1677 return demux_real_control(demuxer, cmd, arg);
1677 #ifdef USE_LIBAVFORMAT 1678 #ifdef USE_LIBAVFORMAT
1678 case DEMUXER_TYPE_LAVF: 1679 case DEMUXER_TYPE_LAVF:
1679 return demux_lavf_control(demuxer, cmd, arg); 1680 return demux_lavf_control(demuxer, cmd, arg);
1680 #endif 1681 #endif
1682 case DEMUXER_TYPE_MOV:
1683 return demux_mov_control(demuxer, cmd, arg);
1681 1684
1682 default: 1685 default:
1683 return DEMUXER_CTRL_NOTIMPL; 1686 return DEMUXER_CTRL_NOTIMPL;
1684 } 1687 }
1685 } 1688 }
1693 } 1696 }
1694 return get_time_ans; 1697 return get_time_ans;
1695 } 1698 }
1696 1699
1697 int demuxer_get_percent_pos(demuxer_t *demuxer){ 1700 int demuxer_get_percent_pos(demuxer_t *demuxer){
1698 int ans; 1701 int ans = 0;
1699 if (demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans)<=0) { 1702 int res = demux_control(demuxer, DEMUXER_CTRL_GET_PERCENT_POS, &ans);
1700 ans=0; 1703 int len = (demuxer->movi_end - demuxer->movi_start) / 100;
1701 } 1704 if (res == DEMUXER_CTRL_NOTIMPL && len > 0)
1705 ans = (demuxer->filepos - demuxer->movi_start) / len;
1702 if (ans>100 || ans<0) ans=0; 1706 if (ans>100 || ans<0) ans=0;
1703 return ans; 1707 return ans;
1704 } 1708 }
1705 1709