- 24 Jun, 2017 1 commit
-
-
Marton Balint authored
Reviewed-by:
Michael Niedermayer <michael@niedermayer.cc> Signed-off-by:
Marton Balint <cus@passwd.hu>
-
- 14 Feb, 2017 1 commit
-
-
Joel Cunningham authored
This commit optimizes HTTP performance by reducing forward seeks, instead favoring a read-ahead and discard on the current connection (referred to as a short seek) for seeks that are within a TCP window's worth of data. This improves performance because with TCP flow control, a window's worth of data will be in the local socket buffer already or in-flight from the sender once congestion control on the sender is fully utilizing the window. Note: this approach doesn't attempt to differentiate from a newly opened connection which may not be fully utilizing the window due to congestion control vs one that is. The receiver can't get at this information, so we assume worst case; that full window is in use (we did advertise it after all) and that data could be in-flight The previous behavior of closing the connection, then opening a new with a new HTTP range value results in a massive amounts of discarded and re-sent data when large TCP windows are used. This has been observed on MacOS/iOS which starts with an initial window of 256KB and grows up to 1MB depending on the bandwidth-product delay. When seeking within a window's worth of data and we close the connection, then open a new one within the same window's worth of data, we discard from the current offset till the end of the window. Then on the new connection the server ends up re-sending the previous data from new offset till the end of old window. Example (assumes full window utilization): TCP window size: 64KB Position: 32KB Forward seek position: 40KB * (Next window) 32KB |--------------| 96KB |---------------| 160KB * 40KB |---------------| 104KB Re-sent amount: 96KB - 40KB = 56KB For a real world test example, I have MP4 file of ~25MB, which ffplay only reads ~16MB and performs 177 seeks. With current ffmpeg, this results in 177 HTTP GETs and ~73MB worth of TCP data communication. With this patch, ffmpeg issues 4 HTTP GETs and 3 seeks for a total of ~22MB of TCP data communication. To support this feature, the short seek logic in avio_seek() has been extended to call a function to get the short seek threshold value. This callback has been plumbed to the URLProtocol structure, which now has infrastructure in HTTP and TCP to get the underlying receiver window size via SO_RCVBUF. If the underlying URL and protocol don't support returning a short seek threshold, the default s->short_seek_threshold is used This feature has been tested on Windows 7 and MacOS/iOS. Windows support is slightly complicated by the fact that when TCP window auto-tuning is enabled, SO_RCVBUF doesn't report the real window size, but it does if SO_RCVBUF was manually set (disabling auto-tuning). So we can only use this optimization on Windows in the later case Signed-off-by:
Joel Cunningham <joel.cunningham@me.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- 04 May, 2016 1 commit
-
-
Vittorio Giovara authored
Signed-off-by:
Diego Biurrun <diego@biurrun.de>
-
- 24 Mar, 2016 2 commits
-
-
Martin Storsjö authored
Since all URLContexts have the same AVOptions, such AVOptions will be applied on the outermost context only and removed from the dict, while they probably make sense on all contexts. This makes sure that rw_timeout gets propagated to the innermost URLContext (to make sure it gets passed to the tcp protocol, when opening a http connection for instance). Alternatively, such matching options would be kept in the dict and only removed after the ffurl_connect call. Signed-off-by:
Martin Storsjö <martin@martin.st>
-
Andrey Utkin authored
If set non-zero, this limits duration of the retry_transfer_wrapper() loop, thus affecting ffurl_read*(), ffurl_write(). As soon as one single byte is successfully received/transmitted, the timer restarts. This has further changes by Michael Niedermayer and Martin Storsjö. Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 04 Mar, 2016 1 commit
-
-
Derek Buitenhuis authored
Signed-off-by:
Derek Buitenhuis <derek.buitenhuis@gmail.com>
-
- 22 Feb, 2016 4 commits
-
-
Anton Khirnov authored
This way, the decisions about which protocols are available for use in any given situations can be delegated to the caller.
-
Anton Khirnov authored
Disallow other code to touch it directly, now it's only accessible through a blacklisting/whitelisting function.
-
Anton Khirnov authored
It needs to access the list of protocols directly, so it more properly belongs there.
-
Anton Khirnov authored
Instead of a linked list constructed at av_register_all(), store them in a constant array of pointers. Since no registration is necessary now, this removes some global state from lavf. This will also allow the urlprotocol layer caller to limit the available protocols in a simple and flexible way in the following commits.
-
- 18 Feb, 2016 1 commit
-
-
Diego Biurrun authored
-
- 02 Feb, 2016 1 commit
-
-
Michael Niedermayer authored
Note to maintainers: update tools Note to maintainers: set a default whitelist for your protocol If that makes no sense then consider to set "none" and thus require the user to specify a white-list for sub-protocols to be opened Note, testing and checking for missing changes is needed Reviewed-by:
Andreas Cadhalpun <andreas.cadhalpun@googlemail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- 31 Jul, 2015 1 commit
-
-
Stephan Holljes authored
Signed-off-by:
Stephan Holljes <klaxa1337@googlemail.com>
-
- 22 Jun, 2015 1 commit
-
-
Mariusz Szczepańczyk authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- 27 Mar, 2015 1 commit
-
-
Lukasz Marek authored
API allows protocol implementations to provide API that allows to list directory content. API is similar to POSIX opendir/readdir/closedir. Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- 18 Oct, 2014 1 commit
-
-
Anton Khirnov authored
It is a remnant of the old interrupt callback API.
-
- 26 Jul, 2014 1 commit
-
-
Diego Biurrun authored
-
- 30 Oct, 2013 1 commit
-
-
Martin Storsjö authored
This was added in 9b07a2dc as an ABI hack to allow older code built with lavf 52 to register protocols even if the size of the URLProtocol struct was increased. Later, registering protocols from outside of lavf was removed and this workaround isn't needed any longer since lavf 53. This removes an unchecked malloc and a memory leak for the cases when this workaround actually was used - which it hasn't since lavf 53. Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 19 Oct, 2013 1 commit
-
-
Michael Niedermayer authored
Define positive return values as non errors and leave further meaning undefined This allows future extensions to use these values Reviewed-by:
Paul B Mahol <onemda@gmail.com> Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- 16 Jun, 2013 1 commit
-
-
Luca Barbato authored
-
- 28 Aug, 2012 1 commit
-
-
Andrey Utkin authored
If set non-zero, limits duration of retry_transfer_wrapper() loop, thus affects ffurl_read*(), ffurl_write() Measured in microseconds. Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- 17 Aug, 2012 1 commit
-
-
Jordi Ortiz authored
Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 01 Jun, 2012 1 commit
-
-
Michael Niedermayer authored
Signed-off-by:
Michael Niedermayer <michaelni@gmx.at>
-
- 22 May, 2012 1 commit
-
-
Samuel Pitoiset authored
Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 19 Mar, 2012 1 commit
-
-
Nicolas George authored
Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 17 Mar, 2012 1 commit
-
-
Nicolas George authored
-
- 27 Jan, 2012 1 commit
-
-
Anton Khirnov authored
-
- 05 Jan, 2012 1 commit
-
-
Martin Storsjö authored
This definition is in two files, since the definitions will move to the private header at the next bump. Signed-off-by:
Martin Storsjö <martin@martin.st>
-
- 13 Nov, 2011 6 commits
-
-
Martin Storsjö authored
The interrupt callback has to be passed in during opening (setting it after opening isn't enough), since a blocking open couldn't be interrupted otherwise. Options are passed down to procotols and also need to be available during open() in most cases. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Anton Khirnov authored
Not used anywhere yet, support for passing options from avio_open() will follow.
-
Anton Khirnov authored
-
Martin Storsjö authored
Change all uses of these function to pass the relevant callback on.
-
Martin Storsjö authored
Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
Martin Storsjö authored
This is a better io interrupt callback function, which has an opaque parameter, which is given to the interrupt callback. This allows callers to precisely cancel IO for one single AVFormatContext, without interrupt other ones in the same process. Note, it's not needed in AVIOContext, at the moment. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 14 Jul, 2011 1 commit
-
-
Diego Biurrun authored
-
- 21 May, 2011 1 commit
-
-
Diego Biurrun authored
Add missing multiple inclusion guards; clean up #endif comments; add missing library prefixes; keep guard names consistent.
-
- 13 Apr, 2011 1 commit
-
-
Stefano Sabatini authored
The new function is more flexible than url_exist(), as it allows to specify which access flags to check, and does not require an explicit open of the checked resource. Signed-off-by:
Anton Khirnov <anton@khirnov.net>
-
- 08 Apr, 2011 3 commits
-
-
Anton Khirnov authored
-
Anton Khirnov authored
-
Anton Khirnov authored
-