AVCodecParameters *par = st->codecpar;
char buf[256];
int i;
- AVCodec *c;
+ const AVCodecDescriptor *desc;
const char *c_name;
/* See if we can handle this kind of payload.
par->codec_id = ff_rtp_codec_id(buf, par->codec_type);
}
- c = avcodec_find_decoder(par->codec_id);
- if (c && c->name)
- c_name = c->name;
+ desc = avcodec_descriptor_get(par->codec_id);
+ if (desc && desc->name)
+ c_name = desc->name;
else
c_name = "(null)";
s1->seen_fmtp = 1;
av_strlcpy(s1->delayed_fmtp, buf, sizeof(s1->delayed_fmtp));
}
+ } else if (av_strstart(p, "ssrc:", &p) && s->nb_streams > 0) {
+ rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
+ get_word(buf1, sizeof(buf1), &p);
+ rtsp_st->ssrc = strtoll(buf1, NULL, 10);
} else if (av_strstart(p, "range:", &p)) {
int64_t start, end;
if (!rtsp_st->transport_priv) {
return AVERROR(ENOMEM);
- } else if (CONFIG_RTPDEC && rt->transport == RTSP_TRANSPORT_RTP) {
+ } else if (CONFIG_RTPDEC && rt->transport == RTSP_TRANSPORT_RTP &&
+ s->iformat) {
+ RTPDemuxContext *rtpctx = rtsp_st->transport_priv;
+ rtpctx->ssrc = rtsp_st->ssrc;
if (rtsp_st->dynamic_handler) {
ff_rtp_parse_set_dynamic_protocol(rtsp_st->transport_priv,
rtsp_st->dynamic_protocol_context,
ffurl_write(rt->rtsp_hd_out, out_buf, strlen(out_buf));
if (send_content_length > 0 && send_content) {
if (rt->control_transport == RTSP_MODE_TUNNEL) {
- av_log(s, AV_LOG_ERROR, "tunneling of RTSP requests "
- "with content data not supported\n");
+ avpriv_report_missing_feature(s, "Tunneling of RTSP requests with content data");
return AVERROR_PATCHWELCOME;
}
ffurl_write(rt->rtsp_hd_out, send_content, send_content_length);
/* we will use two ports per rtp stream (rtp and rtcp) */
j += 2;
err = ffurl_open(&rtsp_st->rtp_handle, buf, AVIO_FLAG_READ_WRITE,
- &s->interrupt_callback, &opts, rt->protocols);
+ &s->interrupt_callback, &opts, rt->protocols, NULL);
av_dict_free(&opts);
ff_url_join(url, sizeof(url), "rtp", NULL, namebuf,
port, "%s", optbuf);
if (ffurl_open(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ_WRITE,
- &s->interrupt_callback, NULL, rt->protocols) < 0) {
+ &s->interrupt_callback, NULL, rt->protocols, NULL) < 0) {
err = AVERROR_INVALIDDATA;
goto fail;
}
ff_url_join(tcpname, sizeof(tcpname), lower_rtsp_proto, NULL,
host, port, NULL);
if (ffurl_open(&rt->rtsp_hd, tcpname, AVIO_FLAG_READ_WRITE,
- &s->interrupt_callback, NULL, rt->protocols) < 0) {
+ &s->interrupt_callback, NULL, rt->protocols, NULL) < 0) {
err = AVERROR(EIO);
goto fail;
}
rtsp_st->nb_exclude_source_addrs,
rtsp_st->exclude_source_addrs);
err = ffurl_open(&rtsp_st->rtp_handle, url, AVIO_FLAG_READ_WRITE,
- &s->interrupt_callback, &opts, rt->protocols);
+ &s->interrupt_callback, &opts, rt->protocols, NULL);
av_dict_free(&opts);
}
ret = ffurl_open(&in, s->filename, AVIO_FLAG_READ,
- &s->interrupt_callback, NULL, rt->protocols);
+ &s->interrupt_callback, NULL, rt->protocols, NULL);
if (ret)
goto fail;