On Tue, Feb 25, 2020 at 5:01 AM Ross Nicholson <phunkyf...@gmail.com> wrote:
> Hey Jun Li, > > I noticed you have submitted some patches which work around the same code > area's that I submitted for. Your patches look quite tidy and well thought > out so I was wondering if you could look at this patch and see if I'm going > about it in the right way. > > I'm not sure this area of ffmpeg currently has a maintainer currently so > the patches may be difficult to progress. > > Ross > > On Tue, 11 Feb 2020 at 22:42, Ross Nicholson <phunkyf...@gmail.com> wrote: > >> The patch was created as a workaround to an issue from in kodi >> (apologies, it's a rather long thread): >> https://forum.kodi.tv/showthread.php?tid=350901&pid=2923550#pid2923550 >> >> As an example, here is a URL: rtp://87.141.215.251@232.0.10.234:10000 >> >> Taking this URL we should be able to either reformat it to: rtp:// >> 232.0.10.234:10000?sources=87.141.215.251 or pass the sources as an >> av_dict to avfomat_open_input. >> >> Neither option works however. Instead the above workaround was created >> but it's not really the right way to fix this. Would be great to get some >> guidance on the right place to fix this in the right way. >> >> Thanks in advance. >> >> On Tue, 11 Feb 2020 at 22:30, phunkyfish <phunkyf...@gmail.com> wrote: >> >>> --- >>> libavformat/rtsp.c | 26 ++++++++++++++++++++++++-- >>> 1 file changed, 24 insertions(+), 2 deletions(-) >>> >>> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c >>> index 859defa592..f922055134 100644 >>> --- a/libavformat/rtsp.c >>> +++ b/libavformat/rtsp.c >>> @@ -2334,7 +2334,9 @@ static int sdp_read_header(AVFormatContext *s) >>> RTSPStream *rtsp_st; >>> int size, i, err; >>> char *content; >>> + const char *p, *sp="", *sources="", *sp2, *sources2; >>> char url[1024]; >>> + char sources_buf[1024]; >>> >>> if (!ff_network_init()) >>> return AVERROR(EIO); >>> @@ -2360,6 +2362,16 @@ static int sdp_read_header(AVFormatContext *s) >>> av_freep(&content); >>> if (err) goto fail; >>> >>> + /* Search for sources= tag in original URL for rtp protocol only */ >>> + if (strncmp(s->url, "rtp://", 6) == 0) { >>> + p = strchr(s->url, '?'); >>> + if (p && av_find_info_tag(sources_buf, sizeof(sources_buf), >>> "sources", p)) { >>> + /* av_log(s, AV_LOG_VERBOSE, "sdp_read_header found sources >>> %s\n", sources_buf); */ >>> + sp = sources_buf; >>> + sources = "&sources="; >>> + } >>> + } >>> + >>> /* open each RTP stream */ >>> for (i = 0; i < rt->nb_rtsp_streams; i++) { >>> char namebuf[50]; >>> @@ -2377,12 +2389,22 @@ static int sdp_read_header(AVFormatContext *s) >>> av_dict_free(&opts); >>> goto fail; >>> } >>> + >>> + /* Prepare to add sources to the url to be opened. >>> + Otherwise the join to the source specific muliticast >>> will be missing */ >>> + sources2 = sources; >>> + sp2 = sp; >>> + /* ignore sources from original URL, when sources are >>> already set in rtsp_st */ >>> + if (rtsp_st->nb_include_source_addrs > 0) >>> + sources2 = sp2 = ""; >>> + >>> ff_url_join(url, sizeof(url), "rtp", NULL, >>> namebuf, rtsp_st->sdp_port, >>> - >>> "?localport=%d&ttl=%d&connect=%d&write_to_source=%d", >>> + >>> "?localport=%d&ttl=%d&connect=%d&write_to_source=%d%s%s", >>> rtsp_st->sdp_port, rtsp_st->sdp_ttl, >>> rt->rtsp_flags & RTSP_FLAG_FILTER_SRC ? 1 : 0, >>> - rt->rtsp_flags & RTSP_FLAG_RTCP_TO_SOURCE ? 1 : >>> 0); >>> + rt->rtsp_flags & RTSP_FLAG_RTCP_TO_SOURCE ? 1 : >>> 0, >>> + sources2, sp2); >>> >>> append_source_addrs(url, sizeof(url), "sources", >>> rtsp_st->nb_include_source_addrs, >>> -- >>> 2.20.1 (Apple Git-117) >>> >>> Hi Ross, I am not sure I understand your requirement clearly, an alternative way is to save the url in sdp(maybe in rtp_read_header?) and read it out in sdp_read_header. But I am not sure which field can carry this info (maybe uri attribute ?). Since you already have the code change, why now send it as a formal patch so that FFmpeg maintainers/experts can have a review ? -Jun _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".