[vlc-commits] demux: adaptive: expose content-type
Francois Cartegnie
git at videolan.org
Wed Feb 21 13:59:05 CET 2018
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue Feb 20 22:38:05 2018 +0100| [1fdf88d7ed5fd90b835d83652a32ad40daaa82fd] | committer: Francois Cartegnie
demux: adaptive: expose content-type
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1fdf88d7ed5fd90b835d83652a32ad40daaa82fd
---
modules/demux/adaptive/http/HTTPConnection.cpp | 18 ++++++++++++++++++
modules/demux/adaptive/http/HTTPConnection.hpp | 2 ++
2 files changed, 20 insertions(+)
diff --git a/modules/demux/adaptive/http/HTTPConnection.cpp b/modules/demux/adaptive/http/HTTPConnection.cpp
index c324b257e3..b24eb87212 100644
--- a/modules/demux/adaptive/http/HTTPConnection.cpp
+++ b/modules/demux/adaptive/http/HTTPConnection.cpp
@@ -59,6 +59,11 @@ size_t AbstractConnection::getContentLength() const
return contentLength;
}
+const std::string & AbstractConnection::getContentType() const
+{
+ return contentType;
+}
+
HTTPConnection::HTTPConnection(vlc_object_t *p_object_, AuthStorage *auth,
Socket *socket_, const ConnectionParams &proxy, bool persistent)
: AbstractConnection( p_object_ )
@@ -123,6 +128,7 @@ void HTTPConnection::disconnect()
chunked = false;
chunkLength = 0;
bytesRange = BytesRange();
+ contentType = std::string();
socket->disconnect();
}
@@ -380,6 +386,10 @@ void HTTPConnection::onHeader(const std::string &key,
{
chunked = true;
}
+ else if(key == "Content-Type")
+ {
+ contentType = value;
+ }
else if(key == "Location")
{
locationparams = ConnectionParams();
@@ -464,6 +474,7 @@ void StreamUrlConnection::reset()
p_streamurl = NULL;
bytesRead = 0;
contentLength = 0;
+ contentType = std::string();
bytesRange = BytesRange();
}
@@ -486,6 +497,13 @@ int StreamUrlConnection::request(const std::string &path, const BytesRange &rang
if(!p_streamurl)
return VLC_EGENERIC;
+ char *psz_type = stream_ContentType(p_streamurl);
+ if(psz_type)
+ {
+ contentType = std::string(psz_type);
+ free(psz_type);
+ }
+
stream_t *p_chain = vlc_stream_FilterNew( p_streamurl, "inflate" );
if( p_chain )
p_streamurl = p_chain;
diff --git a/modules/demux/adaptive/http/HTTPConnection.hpp b/modules/demux/adaptive/http/HTTPConnection.hpp
index ce19cb166d..c006a06808 100644
--- a/modules/demux/adaptive/http/HTTPConnection.hpp
+++ b/modules/demux/adaptive/http/HTTPConnection.hpp
@@ -50,6 +50,7 @@ namespace adaptive
virtual ssize_t read (void *p_buffer, size_t len) = 0;
virtual size_t getContentLength() const;
+ virtual const std::string & getContentType() const;
virtual void setUsed( bool ) = 0;
protected:
@@ -57,6 +58,7 @@ namespace adaptive
ConnectionParams params;
bool available;
size_t contentLength;
+ std::string contentType;
BytesRange bytesRange;
size_t bytesRead;
};
More information about the vlc-commits
mailing list