summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/rtsp.c6
-rw-r--r--libavformat/rtsp.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 7e430e838b..9e8733a108 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -565,6 +565,10 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
s1->seen_fmtp = 1;
av_strlcpy(s1->delayed_fmtp, buf, sizeof(s1->delayed_fmtp));
}
+ } else if (av_strstart(p, "ssrc:", &p) && s->nb_streams > 0) {
+ rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
+ get_word(buf1, sizeof(buf1), &p);
+ rtsp_st->ssrc = strtoll(buf1, NULL, 10);
} else if (av_strstart(p, "range:", &p)) {
int64_t start, end;
@@ -824,6 +828,8 @@ int ff_rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
if (!rtsp_st->transport_priv) {
return AVERROR(ENOMEM);
} else if (CONFIG_RTPDEC && rt->transport == RTSP_TRANSPORT_RTP) {
+ RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
+ rtpctx->ssrc = rtsp_st->ssrc;
if (rtsp_st->dynamic_handler) {
ff_rtp_parse_set_dynamic_protocol(rtsp_st->transport_priv,
rtsp_st->dynamic_protocol_context,
diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h
index 0226dac0f1..ff5b53207e 100644
--- a/libavformat/rtsp.h
+++ b/libavformat/rtsp.h
@@ -457,6 +457,9 @@ typedef struct RTSPStream {
/** Enable sending RTCP feedback messages according to RFC 4585 */
int feedback;
+ /** SSRC for this stream, to allow identifying RTCP packets before the first RTP packet */
+ uint32_t ssrc;
+
char crypto_suite[40];
char crypto_params[100];
} RTSPStream;