Ping...

> On 26 Feb 2020, at 08:57, Ross Nicholson <phunkyf...@gmail.com> wrote:
> 
> 
> Thanks, just thought you might have another idea, as it works just was not 
> sure if I was accomplishing it in the right way.
> 
> Ya, I submitted the patch formally. Let’s see what’s a review comes back like.
> 
> Thanks 
> 
>>> On 26 Feb 2020, at 05:10, Jun Li <junli1...@gmail.com> wrote:
>>> 
>> 
>> 
>> 
>>> 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".

Reply via email to