aboutsummaryrefslogtreecommitdiff
path: root/libavformat/rtspdec.c
diff options
context:
space:
mode:
authorMartin Storsjö2011-01-05 21:22:15 +0000
committerMartin Storsjö2011-01-05 21:22:15 +0000
commit1726813f13b459af2265742bbba6830409de5e2d (patch)
tree2b044523e5b3852389d79c67b7f9d04091881bc9 /libavformat/rtspdec.c
parentac05f9030ed4baae317071d0321c91afabaf1080 (diff)
rtsp: Move resetting of rtpdec parameters to before sending the PLAY request
Originally committed as revision 26233 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/rtspdec.c')
-rw-r--r--libavformat/rtspdec.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 13fa969dea..cdcef38430 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -43,6 +43,19 @@ static int rtsp_read_play(AVFormatContext *s)
rt->nb_byes = 0;
if (!(rt->server_type == RTSP_SERVER_REAL && rt->need_subscription)) {
+ if (rt->transport == RTSP_TRANSPORT_RTP) {
+ for (i = 0; i < rt->nb_rtsp_streams; i++) {
+ RTSPStream *rtsp_st = rt->rtsp_streams[i];
+ RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
+ if (!rtpctx)
+ continue;
+ ff_rtp_reset_packet_queue(rtpctx);
+ rtpctx->last_rtcp_ntp_time = AV_NOPTS_VALUE;
+ rtpctx->first_rtcp_ntp_time = AV_NOPTS_VALUE;
+ rtpctx->base_timestamp = 0;
+ rtpctx->rtcp_ts_offset = 0;
+ }
+ }
if (rt->state == RTSP_STATE_PAUSED) {
cmd[0] = 0;
} else {
@@ -63,12 +76,7 @@ static int rtsp_read_play(AVFormatContext *s)
continue;
if (rtsp_st->stream_index >= 0)
st = s->streams[rtsp_st->stream_index];
- ff_rtp_reset_packet_queue(rtpctx);
if (reply->range_start != AV_NOPTS_VALUE) {
- rtpctx->last_rtcp_ntp_time = AV_NOPTS_VALUE;
- rtpctx->first_rtcp_ntp_time = AV_NOPTS_VALUE;
- rtpctx->base_timestamp = 0;
- rtpctx->rtcp_ts_offset = 0;
if (st)
rtpctx->range_start_offset =
av_rescale_q(reply->range_start, AV_TIME_BASE_Q,