[FFmpeg-devel] [PATCH] avformat/rtmpproto: forward rw_timeout to tcp proto

Martin Storsjö martin at martin.st
Fri Jul 21 00:09:12 EEST 2023


On Thu, 20 Jul 2023, Timo Rothenpieler wrote:

> On 20.07.2023 22:47, Martin Storsjö wrote:
>> On Thu, 20 Jul 2023, Timo Rothenpieler wrote:
>> 
>>> ---
>>> libavformat/rtmpproto.c | 10 +++++++---
>>> 1 file changed, 7 insertions(+), 3 deletions(-)
>> 
>> Hmm, I would have somewhat expected that rw_timeout should be honored 
>> here already...
>> 
>> Note that URLContext already has got a rw_timeout field and AVOption, so 
>> instead of adding a new option, it should be enough to just use the 
>> existing URLContext field.
>> 
>> But also, have a look at fab8156b2f30666adabe227b3d7712fd193873b1. When 
>> opening a chained URLContext, we pass in the parent one, and propagate 
>> any options from that URLContext into the child. So as long as the 
>> URLContext rw_timeout is set for the rtmp protocol, the nested tcp 
>> protocol also should be getting it already implicitly.
>
> I'm not entirely sure how that works with in regards to which options 
> are getting forwarded where.
> But doesn't the "timeout" (in seconds, used as listen timeout) option 
> from rtmpproto mask over the "timeout" option from tcp (in microseconds, 
> used as rw/open timeout)?
> Hence the "renaming" here, to unshadow that tcp.c option.

Hmm, geez we have many similar-looking and randomly named timeout options 
here...

The av_opt_copy() call in ffurl_open_whitelist() should only iterate over 
the options within the URLContext itself, not recurse into the protocol 
private options (as those probably don't match across protocols anyway). 
So I wouldn't think that the tcp "timeout" option ends up implicitly set 
from the rtmpproto "timeout" (listen_timeout) option.

I didn't try running and observing it right now though.

// Martin


More information about the ffmpeg-devel mailing list