From 6099543ad4c78df45c580f6660d19c33e483a594 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Storsj=C3=B6?= Date: Thu, 8 Dec 2011 15:19:58 +0200 Subject: [PATCH] rtsp: Check for dynamic payload handlers if no static payload mapping was found MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Some systems abuse the static payload types 35 or 36 (which according to IANA are unassigned) for H264. Signed-off-by: Martin Storsjö --- libavformat/rtsp.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index f53aadf191..19fdaf1c4b 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -198,7 +198,14 @@ static int sdp_parse_rtpmap(AVFormatContext *s, * particular servers ("RealServer Version 6.1.3.970", see issue 1658) * have a trailing space. */ get_word_sep(buf, sizeof(buf), "/ ", &p); - if (payload_type >= RTP_PT_PRIVATE) { + if (payload_type < RTP_PT_PRIVATE) { + /* We are in a standard case + * (from http://www.iana.org/assignments/rtp-parameters). */ + /* search into AVRtpPayloadTypes[] */ + codec->codec_id = ff_rtp_codec_id(buf, codec->codec_type); + } + + if (codec->codec_id == CODEC_ID_NONE) { RTPDynamicProtocolHandler *handler = ff_rtp_handler_find_by_name(buf, codec->codec_type); init_rtp_handler(handler, rtsp_st, codec); @@ -208,11 +215,6 @@ static int sdp_parse_rtpmap(AVFormatContext *s, * the format name from the rtpmap line never is passed into rtpdec. */ if (!rtsp_st->dynamic_handler) codec->codec_id = ff_rtp_codec_id(buf, codec->codec_type); - } else { - /* We are in a standard case - * (from http://www.iana.org/assignments/rtp-parameters). */ - /* search into AVRtpPayloadTypes[] */ - codec->codec_id = ff_rtp_codec_id(buf, codec->codec_type); } c = avcodec_find_decoder(codec->codec_id); -- 2.11.0