# HG changeset patch # User nicodvb # Date 1172615100 0 # Node ID 20be7be45f47b803771fb265b6b73d12f1fa1dda # Parent b465e5be1a537d2057eddd76c862c114dbd9d2c8 implementation of DEMUXER_CTRL_GET_TIME_LENGTH and DEMUXER_CTRL_GET_PERCENT_POS; patch by the usual Hoyos diff -r b465e5be1a53 -r 20be7be45f47 libmpdemux/demux_rtp.cpp --- a/libmpdemux/demux_rtp.cpp Tue Feb 27 21:20:24 2007 +0000 +++ b/libmpdemux/demux_rtp.cpp Tue Feb 27 22:25:00 2007 +0000 @@ -581,6 +581,26 @@ return dp; } +static int demux_rtp_control(struct demuxer_st *demuxer, int cmd, void *arg) { + double endpts = ((RTPState*)demuxer->priv)->mediaSession->playEndTime(); + + switch(cmd) { + case DEMUXER_CTRL_GET_TIME_LENGTH: + if (endpts <= 0) + return DEMUXER_CTRL_DONTKNOW; + *((double *)arg) = endpts; + return DEMUXER_CTRL_OK; + + case DEMUXER_CTRL_GET_PERCENT_POS: + if (endpts <= 0) + return DEMUXER_CTRL_DONTKNOW; + *((int *)arg) = (int)(((RTPState*)demuxer->priv)->videoBufferQueue->prevPacketPTS*100/endpts); + return DEMUXER_CTRL_OK; + + default: + return DEMUXER_CTRL_NOTIMPL; + } +} demuxer_desc_t demuxer_desc_rtp = { "LIVE555 RTP demuxer", @@ -595,5 +615,5 @@ demux_open_rtp, demux_close_rtp, NULL, - NULL + demux_rtp_control };