Lines Matching defs:rtsp_st
216 RTSPStream *rtsp_st, AVStream *st)
223 rtsp_st->dynamic_handler = handler;
227 rtsp_st->dynamic_protocol_context = av_mallocz(handler->priv_data_size);
228 if (!rtsp_st->dynamic_protocol_context)
229 rtsp_st->dynamic_handler = NULL;
233 static void finalize_rtp_handler_init(AVFormatContext *s, RTSPStream *rtsp_st,
236 if (rtsp_st->dynamic_handler && rtsp_st->dynamic_handler->init) {
237 int ret = rtsp_st->dynamic_handler->init(s, st ? st->index : -1,
238 rtsp_st->dynamic_protocol_context);
240 if (rtsp_st->dynamic_protocol_context) {
241 if (rtsp_st->dynamic_handler->close)
242 rtsp_st->dynamic_handler->close(
243 rtsp_st->dynamic_protocol_context);
244 av_free(rtsp_st->dynamic_protocol_context);
246 rtsp_st->dynamic_protocol_context = NULL;
247 rtsp_st->dynamic_handler = NULL;
256 RTSPStream *rtsp_st = av_mallocz(sizeof(RTSPStream));
257 if (!rtsp_st)
260 &rt->nb_rtsp_streams, rtsp_st);
262 rtsp_st->sdp_payload_type = 33; // MP2T
263 av_strlcpy(rtsp_st->control_url,
264 rt->control_uri, sizeof(rtsp_st->control_url));
271 rtsp_st->stream_index = st->index;
275 rtsp_st->stream_index = -1;
276 init_rtp_handler(&ff_mpegts_dynamic_handler, rtsp_st, NULL);
277 finalize_rtp_handler_init(s, rtsp_st, NULL);
285 AVStream *st, RTSPStream *rtsp_st,
308 init_rtp_handler(handler, rtsp_st, st);
313 if (!rtsp_st->dynamic_handler)
351 finalize_rtp_handler_init(s, rtsp_st, st);
408 RTSPStream *rtsp_st = rt->rtsp_streams[i];
409 if (rtsp_st->sdp_payload_type == payload_type &&
410 rtsp_st->dynamic_handler &&
411 rtsp_st->dynamic_handler->parse_sdp_a_line) {
412 rtsp_st->dynamic_handler->parse_sdp_a_line(s, rtsp_st->stream_index,
413 rtsp_st->dynamic_protocol_context, line);
427 RTSPStream *rtsp_st;
458 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
459 rtsp_st->sdp_ip = sdp_ip;
460 rtsp_st->sdp_ttl = ttl;
495 rtsp_st = av_mallocz(sizeof(RTSPStream));
496 if (!rtsp_st)
498 rtsp_st->stream_index = -1;
499 dynarray_add(&rt->rtsp_streams, &rt->nb_rtsp_streams, rtsp_st);
501 rtsp_st->sdp_ip = s1->default_ip;
502 rtsp_st->sdp_ttl = s1->default_ttl;
506 &rtsp_st->include_source_addrs,
507 &rtsp_st->nb_include_source_addrs);
510 &rtsp_st->exclude_source_addrs,
511 &rtsp_st->nb_exclude_source_addrs);
514 rtsp_st->sdp_port = atoi(buf1);
520 rtsp_st->feedback = 1;
524 rtsp_st->sdp_payload_type = atoi(buf1);
526 if (!strcmp(ff_rtp_enc_name(rtsp_st->sdp_payload_type), "MP2T")) {
534 rtsp_st->sdp_payload_type, AVMEDIA_TYPE_DATA);
535 init_rtp_handler(handler, rtsp_st, NULL);
536 finalize_rtp_handler_init(s, rtsp_st, NULL);
547 rtsp_st->stream_index = st->index;
549 if (rtsp_st->sdp_payload_type < RTP_PT_PRIVATE) {
552 ff_rtp_get_codec_info(st->codecpar, rtsp_st->sdp_payload_type);
558 rtsp_st->sdp_payload_type, st->codecpar->codec_type);
559 init_rtp_handler(handler, rtsp_st, st);
560 finalize_rtp_handler_init(s, rtsp_st, st);
566 av_strlcpy(rtsp_st->control_url, rt->control_uri,
567 sizeof(rtsp_st->control_url));
578 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
585 if (rtsp_st->control_url[strlen(rtsp_st->control_url)-1]!='/')
586 av_strlcat(rtsp_st->control_url, "/",
587 sizeof(rtsp_st->control_url));
588 av_strlcat(rtsp_st->control_url, p,
589 sizeof(rtsp_st->control_url));
591 av_strlcpy(rtsp_st->control_url, p,
592 sizeof(rtsp_st->control_url));
598 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
599 if (rtsp_st->stream_index >= 0) {
600 st = s->streams[rtsp_st->stream_index];
601 sdp_parse_rtpmap(s, st, rtsp_st, payload_type, p);
619 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
621 rtsp_st->ssrc = strtoll(buf1, NULL, 10);
634 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
635 if (rtsp_st->stream_index >= 0) {
636 st = s->streams[rtsp_st->stream_index];
650 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
652 get_word(rtsp_st->crypto_suite, sizeof(rtsp_st->crypto_suite), &p);
655 get_word(rtsp_st->crypto_params, sizeof(rtsp_st->crypto_params), &p);
681 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
682 dynarray_add(&rtsp_st->exclude_source_addrs, &rtsp_st->nb_exclude_source_addrs, rtsp_src);
688 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
689 dynarray_add(&rtsp_st->include_source_addrs, &rtsp_st->nb_include_source_addrs, rtsp_src);
697 rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
700 ff_real_parse_sdp_a_line(s, rtsp_st->stream_index, p);
702 if (rtsp_st->dynamic_handler &&
703 rtsp_st->dynamic_handler->parse_sdp_a_line)
704 rtsp_st->dynamic_handler->parse_sdp_a_line(s,
705 rtsp_st->stream_index,
706 rtsp_st->dynamic_protocol_context, buf);
763 RTSPStream *rtsp_st = rt->rtsp_streams[i];
764 if (!rtsp_st)
766 if (rtsp_st->transport_priv) {
768 AVFormatContext *rtpctx = rtsp_st->transport_priv;
772 ff_rtsp_tcp_write_packet(s, rtsp_st);
779 ff_rdt_parse_close(rtsp_st->transport_priv);
781 ff_rtp_parse_close(rtsp_st->transport_priv);
783 rtsp_st->transport_priv = NULL;
784 ffurl_closep(&rtsp_st->rtp_handle);
793 RTSPStream *rtsp_st;
797 rtsp_st = rt->rtsp_streams[i];
798 if (rtsp_st) {
799 if (rtsp_st->dynamic_handler && rtsp_st->dynamic_protocol_context) {
800 if (rtsp_st->dynamic_handler->close)
801 rtsp_st->dynamic_handler->close(
802 rtsp_st->dynamic_protocol_context);
803 av_free(rtsp_st->dynamic_protocol_context);
805 for (j = 0; j < rtsp_st->nb_include_source_addrs; j++)
806 av_freep(&rtsp_st->include_source_addrs[j]);
807 av_freep(&rtsp_st->include_source_addrs);
808 for (j = 0; j < rtsp_st->nb_exclude_source_addrs; j++)
809 av_freep(&rtsp_st->exclude_source_addrs[j]);
810 av_freep(&rtsp_st->exclude_source_addrs);
812 av_freep(&rtsp_st);
825 int ff_rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
838 if (rtsp_st->stream_index >= 0)
839 st = s->streams[rtsp_st->stream_index];
844 int ret = ff_rtp_chain_mux_open((AVFormatContext **)&rtsp_st->transport_priv,
845 s, st, rtsp_st->rtp_handle,
847 rtsp_st->stream_index);
849 rtsp_st->rtp_handle = NULL;
852 st->time_base = ((AVFormatContext*)rtsp_st->transport_priv)->streams[0]->time_base;
856 rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,
857 rtsp_st->dynamic_protocol_context,
858 rtsp_st->dynamic_handler);
860 rtsp_st->transport_priv = ff_rtp_parse_open(s, st,
861 rtsp_st->sdp_payload_type,
864 if (!rtsp_st->transport_priv) {
868 RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
869 rtpctx->ssrc = rtsp_st->ssrc;
870 if (rtsp_st->dynamic_handler) {
871 ff_rtp_parse_set_dynamic_protocol(rtsp_st->transport_priv,
872 rtsp_st->dynamic_protocol_context,
873 rtsp_st->dynamic_handler);
875 if (rtsp_st->crypto_suite[0])
876 ff_rtp_parse_set_crypto(rtsp_st->transport_priv,
877 rtsp_st->crypto_suite,
878 rtsp_st->crypto_params);
1043 RTSPStream *rtsp_st = rt->rtsp_streams[i];
1044 RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
1047 if (!strcmp(rtsp_st->control_url, url)) {
1457 RTSPStream *rtsp_st;
1502 rtsp_st = rt->rtsp_streams[rtx];
1504 rtsp_st = rt->rtsp_streams[i > rtx ? i : i - 1];
1506 rtsp_st = rt->rtsp_streams[i];
1525 err = ffurl_open_whitelist(&rtsp_st->rtp_handle, buf, AVIO_FLAG_READ_WRITE,
1538 port = ff_rtp_get_local_rtp_port(rtsp_st->rtp_handle);
1559 (rtsp_st->stream_index < 0 ||
1560 s->streams[rtsp_st->stream_index]->codecpar->codec_type ==
1596 ff_rtsp_send_cmd(s, "SETUP", rtsp_st->control_url, cmd, reply, NULL);
1637 rtsp_st->interleaved_min = reply->transports[0].interleaved_min;
1638 rtsp_st->interleaved_max = reply->transports[0].interleaved_max;
1653 ff_rtp_set_remote_url(rtsp_st->rtp_handle, url) < 0) {
1670 addr = rtsp_st->sdp_ip;
1671 port = rtsp_st->sdp_port;
1672 ttl = rtsp_st->sdp_ttl;
1680 err = ffurl_open_whitelist(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ_WRITE,
1692 if ((err = ff_rtsp_open_transport_ctx(s, rtsp_st)))
2045 RTSPStream *rtsp_st;
2061 rtsp_st = rt->rtsp_streams[i];
2062 if (rtsp_st->rtp_handle) {
2063 if (ret = ffurl_get_multi_file_handle(rtsp_st->rtp_handle,
2091 rtsp_st = rt->rtsp_streams[i];
2092 if (rtsp_st->rtp_handle) {
2094 ret = ffurl_read(rtsp_st->rtp_handle, buf, buf_size);
2096 *prtsp_st = rtsp_st;
2117 static int pick_stream(AVFormatContext *s, RTSPStream **rtsp_st,
2125 *rtsp_st = rt->rtsp_streams[0];
2136 *rtsp_st = rt->rtsp_streams[i];
2151 *rtsp_st = rt->rtsp_streams[i];
2162 RTSPStream **rtsp_st, RTSPStream *first_queue_st,
2172 len = ff_rtsp_tcp_read_packet(s, rtsp_st, rt->recvbuf, RECVBUF_SIZE);
2177 len = udp_read_packet(s, rtsp_st, rt->recvbuf, RECVBUF_SIZE, wait_end);
2178 if (len > 0 && (*rtsp_st)->transport_priv && rt->transport == RTSP_TRANSPORT_RTP)
2179 ff_rtp_check_and_send_back_rr((*rtsp_st)->transport_priv, (*rtsp_st)->rtp_handle, NULL, len);
2187 len = pick_stream(s, rtsp_st, rt->recvbuf, len);
2188 if (len > 0 && (*rtsp_st)->transport_priv && rt->transport == RTSP_TRANSPORT_RTP)
2189 ff_rtp_check_and_send_back_rr((*rtsp_st)->transport_priv, NULL, s->pb, len);
2203 RTSPStream *rtsp_st, *first_queue_st = NULL;
2263 len = read_packet(s, &rtsp_st, first_queue_st, wait_end);
2268 rtsp_st = first_queue_st;
2269 ret = ff_rtp_parse_packet(rtsp_st->transport_priv, pkt, NULL, 0);
2276 ret = ff_rdt_parse_packet(rtsp_st->transport_priv, pkt, &rt->recvbuf, len);
2278 ret = ff_rtp_parse_packet(rtsp_st->transport_priv, pkt, &rt->recvbuf, len);
2279 if (rtsp_st->feedback) {
2283 ff_rtp_send_rtcp_feedback(rtsp_st->transport_priv, rtsp_st->rtp_handle, pb);
2288 RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
2296 if (rtsp_st->stream_index >= 0)
2297 st = s->streams[rtsp_st->stream_index];
2324 rtsp_st->stream_index, rt->nb_byes, rt->nb_rtsp_streams);
2350 rt->cur_transport_priv = rtsp_st->transport_priv;
2390 RTSPStream *rtsp_st;
2418 rtsp_st = rt->rtsp_streams[i];
2425 err = getnameinfo((struct sockaddr*) &rtsp_st->sdp_ip,
2426 sizeof(rtsp_st->sdp_ip),
2435 namebuf, rtsp_st->sdp_port,
2437 rtsp_st->sdp_port, rtsp_st->sdp_ttl,
2447 rtsp_st->nb_include_source_addrs,
2448 rtsp_st->include_source_addrs);
2450 rtsp_st->nb_exclude_source_addrs,
2451 rtsp_st->exclude_source_addrs);
2452 err = ffurl_open_whitelist(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ,
2462 if ((err = ff_rtsp_open_transport_ctx(s, rtsp_st)))