Fixed a few small bugs regarding the output of DTSCv2

This commit is contained in:
Erik Zandvliet 2013-05-07 11:23:19 +02:00
parent c4fecd7e3d
commit 23813cc9b2

View file

@ -43,19 +43,6 @@ bool DTSC::Stream::parsePacket(std::string & buffer){
uint32_t len; uint32_t len;
static bool syncing = false; static bool syncing = false;
if (buffer.length() > 8){ if (buffer.length() > 8){
if (memcmp(buffer.c_str(), DTSC::Magic_Header, 4) == 0){
len = ntohl(((uint32_t *)buffer.c_str())[1]);
if (buffer.length() < len + 8){
return false;
}
unsigned int i = 0;
metadata = JSON::fromDTMI((unsigned char*)buffer.c_str() + 8, len, i);
metadata.removeMember("moreheader");
buffer.erase(0, len + 8);
if (buffer.length() <= 8){
return false;
}
}
int version = 0; int version = 0;
if (memcmp(buffer.c_str(), DTSC::Magic_Packet, 4) == 0){ if (memcmp(buffer.c_str(), DTSC::Magic_Packet, 4) == 0){
version = 1; version = 1;
@ -63,6 +50,23 @@ bool DTSC::Stream::parsePacket(std::string & buffer){
if (memcmp(buffer.c_str(), DTSC::Magic_Packet2, 4) == 0){ if (memcmp(buffer.c_str(), DTSC::Magic_Packet2, 4) == 0){
version = 2; version = 2;
} }
if (memcmp(buffer.c_str(), DTSC::Magic_Header, 4) == 0){
len = ntohl(((uint32_t *)buffer.c_str())[1]);
if (buffer.length() < len + 8){
return false;
}
unsigned int i = 0;
if (version == 1){
metadata = JSON::fromDTMI((unsigned char*)buffer.c_str() + 8, len, i);
}else{
metadata = JSON::fromDTMI2(buffer.substr(8));
}
metadata.removeMember("moreheader");
buffer.erase(0, len + 8);
if (buffer.length() <= 8){
return false;
}
}
if (version){ if (version){
len = ntohl(((uint32_t *)buffer.c_str())[1]); len = ntohl(((uint32_t *)buffer.c_str())[1]);
if (buffer.length() < len + 8){ if (buffer.length() < len + 8){