Revision d9c0510e libavformat/rtsp.c

View differences:

libavformat/rtsp.c
273 273
            s1->default_ip = sdp_ip;
274 274
            s1->default_ttl = ttl;
275 275
        } else {
276
            st = s->streams[s->nb_streams - 1];
277
            rtsp_st = st->priv_data;
276
            rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
278 277
            rtsp_st->sdp_ip = sdp_ip;
279 278
            rtsp_st->sdp_ttl = ttl;
280 279
        }
......
326 325
            st = av_new_stream(s, 0);
327 326
            if (!st)
328 327
                return;
329
            st->priv_data = rtsp_st;
330 328
            rtsp_st->stream_index = st->index;
331 329
            st->codec->codec_type = codec_type;
332 330
            if (rtsp_st->sdp_payload_type < RTP_PT_PRIVATE) {
......
355 353
            } else {
356 354
                char proto[32];
357 355
                /* get the control url */
358
                st = s->streams[s->nb_streams - 1];
359
                rtsp_st = st->priv_data;
356
                rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
360 357

  
361 358
                /* XXX: may need to add full url resolution */
362 359
                av_url_split(proto, sizeof(proto), NULL, 0, NULL, 0,
......
377 374
            get_word(buf1, sizeof(buf1), &p);
378 375
            payload_type = atoi(buf1);
379 376
            st = s->streams[s->nb_streams - 1];
380
            rtsp_st = st->priv_data;
377
            rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
381 378
            sdp_parse_rtpmap(s, st, rtsp_st, payload_type, p);
382 379
        } else if (av_strstart(p, "fmtp:", &p) ||
383 380
                   av_strstart(p, "framesize:", &p)) {
......
385 382
            // let dynamic protocol handlers have a stab at the line.
386 383
            get_word(buf1, sizeof(buf1), &p);
387 384
            payload_type = atoi(buf1);
388
            for (i = 0; i < s->nb_streams; i++) {
389
                st      = s->streams[i];
390
                rtsp_st = st->priv_data;
385
            for (i = 0; i < rt->nb_rtsp_streams; i++) {
386
                rtsp_st = rt->rtsp_streams[i];
391 387
                if (rtsp_st->sdp_payload_type == payload_type &&
392 388
                    rtsp_st->dynamic_handler &&
393 389
                    rtsp_st->dynamic_handler->parse_sdp_a_line)
......
417 413
                if (rt->server_type == RTSP_SERVER_REAL)
418 414
                    ff_real_parse_sdp_a_line(s, s->nb_streams - 1, p);
419 415

  
420
                rtsp_st = s->streams[s->nb_streams - 1]->priv_data;
416
                rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
421 417
                if (rtsp_st->dynamic_handler &&
422 418
                    rtsp_st->dynamic_handler->parse_sdp_a_line)
423 419
                    rtsp_st->dynamic_handler->parse_sdp_a_line(s,

Also available in: Unified diff