diff options
author | Martin Storsjö <martin@martin.st> | 2011-12-08 17:19:58 +0400 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-05-26 22:58:18 +0400 |
commit | 6099543ad4c78df45c580f6660d19c33e483a594 (patch) | |
tree | 867745988a52f924d7c99c5ad912c9e1e3a8d466 /libavformat/rtsp.c | |
parent | 154486f9adc621e620dacd76d78c30a02cc1dcd3 (diff) |
rtsp: Check for dynamic payload handlers if no static payload mapping was found
Some systems abuse the static payload types 35 or 36 (which
according to IANA are unassigned) for H264.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/rtsp.c')
-rw-r--r-- | libavformat/rtsp.c | 14 |
1 files 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); |