[vlc-devel] [PATCH] vlc_stream/http: add GET_CONTENT_ENCODING

Rémi Denis-Courmont remi at remlab.net
Fri Jul 7 18:00:49 CEST 2017


Le perjantaina 7. heinäkuuta 2017, 11.19.23 EEST Francois Cartegnie a écrit :
> > (On the other hand, some misconfigured servers compress too eagerly if
> > "Accept-Encoding: gzip" is passed, e.g. Apache mod_deflate. This is known
> > to break seeking of MP3 streams notably. Hence, not sending
> > Accept-Encoding at all.)
> 
> If server adds encoding without consent, then you need to handle every
> rfc declared content encoding by StreamUrl users.

This has been discussed at length on Trac, and possibly here.

In principles, VLC should expose gzip and deflate. But that is known to break 
GetSize and Seek for some streams. So instead, VLC sends nothing. Forcing 
"identity" would be plain wrong.

Unsupported encoding would fail one way or another. I doubt that a server 
would send a new encoding unless either it is the only available 
representation for the entity, or the client explicitly exposed support for 
the encoding.

> >> Compressed coding of already compressed content being also possible.
> > 
> > The stream filters can deal with nested compression.
> 
> That still does not solve the case from a streamUrl point of view.
> The user expects identity content and should not have to deal with
> stream_filters (see above).

I totally disagree.

The HTTP transaction layer needs to handle transfer encoding. The URL layer 
should handle content encoding.

Ideally, the Content-Type should match what comes from the URL layer, without 
any encoding. So if the Content-Type is "application/gzip", then ideally, we 
would leave it at that. But that distinction only makes sense for HTTP, so it 
can´t work generically.

And it´s VLC media player, not VLC download manager.

> If I want a stream retrieving a tar.gz through streamUrl there's no
> reason to receive a tar because I had to install deflate filter in case
> additional content encoding.

To the contrary, there is. HTTP does not assign semantics to filename 
extensions. It´s entirely valid (and possible with e.g. Apache content 
negotiation) to get a gzipped tarball, when requesting a tarball.

The intent of the protocol, and of our implementation, if gzip is set as 
Content-Encoding is to undo that encoding. 

> This is known to currently break streamUrl uses, and the lua deflate
> hack creates a new bug for scripts retrieving compressed files.

No. It´s working as it should. The last thing I want is every stream-URL use 
site is duplicating decompression support and implementing different subsets 
of encoding with different bugs.

> Removing the extra declared additional content-coding should be done at
> wrapper level. Dealing with unwanted compression for mp3 and such being
> a specific case for input access chain.

I totally disagree.

-- 
雷米‧德尼-库尔蒙
https://www.remlab.net/



More information about the vlc-devel mailing list