[FFmpeg-devel] [PATCH] RTSP-MS 5-6/15: parse only the last m= line stream per rtpmap line

Ronald S. Bultje rsbultje
Fri Jan 9 02:41:39 CET 2009


Hi Luca,

On Tue, Jan 6, 2009 at 7:40 AM, Luca Barbato <lu_zero at gentoo.org> wrote:
> Ronald S. Bultje wrote:
>> as can be seen in [1] (see my recent post in [2]), RTSP-MS SDP
>> contains one rtpmap: line per m=, and this rtpmap is generally the
>> same. My impression is that this is true for all RTSP streams, and the
>> ffmpeg implementation indeed only supports rtpmap lines coming after
>> m= lines. However, rtsp.c loops over all streams and reinits each of
>> them if the rtpmap code matches that stream code, leading to unneeded
>> reinitializations for previous streams. the attached patch fixes that.

This fixes a potential crasher if no m= lines precede the rtpmap. Luca
A. suggested to remove the condition around this statement also:

                 if (rtsp_st->sdp_payload_type == payload_type) {
                     sdp_parse_rtpmap(st->codec, rtsp_st, payload_type, p);
                 }

i.e.:

             /* NOTE: rtpmap is only supported AFTER the 'm=' tag */
             get_word(buf1, sizeof(buf1), &p);
             payload_type = atoi(buf1);
-            for(i = 0; i < s->nb_streams;i++) {
-                st = s->streams[i];
+            st = s->streams[s->nb_streams - 1];
                 rtsp_st = st->priv_data;
-                if (rtsp_st->sdp_payload_type == payload_type) {
                     sdp_parse_rtpmap(st->codec, rtsp_st, payload_type, p);
-                }
-            }
         } else if (av_strstart(p, "fmtp:", &p)) {
             /* NOTE: fmtp is only supported AFTER the 'a=rtpmap:xxx' tag */
             get_word(buf1, sizeof(buf1), &p);

What do others think? Keep or remove?

Ronald




More information about the ffmpeg-devel mailing list