• Aman Gupta's avatar
    avformat/hls: add http_multiple option · 1f0eaa02
    Aman Gupta authored
    This improves network throughput of the hls demuxer by avoiding
    the latency introduced by downloading segments one at a time.
    
    The problem is particularly noticable over high-latency network
    connections: for instance, if RTT is 250ms, there will a 250ms idle
    period between when one segment response is read and the next one
    starts.
    
    The obvious solution to this is to use HTTP pipelining, where a
    second request can be sent (on the persistent http/1.1 connection)
    before the first response is fully read. Unfortunately the way the
    http protocol is implemented in avformat makes implementing pipleining
    very complex.
    
    Instead, this commit simulates pipelining using two separate persistent
    http connections. This has the advantage of working independently of
    the http_persistent option, and can be used with http/1.0 servers as
    well. The pair of connections is swapped every time a new segment starts
    downloading, and a request for the next segment is sent on the secondary
    connection right away. This means the second response will be ready and
    waiting by the time the current response is fully read.
    Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
    Signed-off-by: 's avatarAnssi Hannula <anssi.hannula@iki.fi>
    1f0eaa02
demuxers.texi 21.3 KB