Fixed a FLV header bug causing both video and audio to always be mentioned even when not present, added header-only parsing support to HTTP library.

This commit is contained in:
Thulinma 2013-06-03 15:50:21 +02:00
parent 62c4689ae2
commit 9228198097
3 changed files with 7 additions and 2 deletions

View file

@ -587,11 +587,11 @@ bool FLV::Tag::DTSCAudioInit(DTSC::Stream & S){
/// Assumes metadata is available - so check before calling!
bool FLV::Tag::DTSCMetaInit(DTSC::Stream & S){
//Unknown? Assume AAC.
if (S.metadata["audio"]["codec"].asString() == "?"){
if (S.metadata.isMember("audio") && S.metadata["audio"]["codec"].asString() == "?"){
S.metadata["audio"]["codec"] = "AAC";
}
//Unknown? Assume H264.
if (S.metadata["video"]["codec"].asString() == "?"){
if (S.metadata.isMember("video") && S.metadata["video"]["codec"].asString() == "?"){
S.metadata["video"]["codec"] = "H264";
}

View file

@ -6,6 +6,7 @@
/// This constructor creates an empty HTTP::Parser, ready for use for either reading or writing.
/// All this constructor does is call HTTP::Parser::Clean().
HTTP::Parser::Parser(){
headerOnly = false;
Clean();
}
@ -217,6 +218,9 @@ bool HTTP::Parser::parse(std::string & HTTPbuffer){
}
if (seenHeaders){
if (length > 0){
if (headerOnly){
return true;
}
unsigned int toappend = length - body.length();
if (toappend > 0){
body.append(HTTPbuffer, 0, toappend);

View file

@ -33,6 +33,7 @@ namespace HTTP {
std::string url;
std::string protocol;
unsigned int length;
bool headerOnly; ///< If true, do not parse body if the length is a known size.
private:
bool seenHeaders;
bool seenReq;