diff --git a/src/connectors/conn_http_progressive_ogg.cpp b/src/connectors/conn_http_progressive_ogg.cpp index 8d5b1ece..71e77cdd 100644 --- a/src/connectors/conn_http_progressive_ogg.cpp +++ b/src/connectors/conn_http_progressive_ogg.cpp @@ -159,19 +159,20 @@ namespace Connector_HTTP { progressive_has_sent_header = true; } //parse DTSC to Ogg here - long long int temp = Strm.getPacket()["trackid"].asInt(); - if((prevGran[temp] != Strm.getPacket()["granule"].asInt() || prevGran[temp] == -1) && DTSCBuffer[temp].size() != 0){ - curOggPage.readDTSCVector(DTSCBuffer[temp], oggMeta.DTSCID2OGGSerial[temp], oggMeta.DTSCID2seqNum[temp]); - conn.SendNow((char*)curOggPage.getPage(), curOggPage.getPageSize()); - DTSCBuffer[temp].clear(); + if (Strm.lastType() == DTSC::AUDIO || Strm.lastType() == DTSC::VIDEO){ + long long int temp = Strm.getPacket()["trackid"].asInt(); + if((prevGran[temp] != Strm.getPacket()["granule"].asInt() || prevGran[temp] == -1) && DTSCBuffer[temp].size() != 0){ + curOggPage.readDTSCVector(DTSCBuffer[temp], oggMeta.DTSCID2OGGSerial[temp], oggMeta.DTSCID2seqNum[temp]); + conn.SendNow((char*)curOggPage.getPage(), curOggPage.getPageSize()); + DTSCBuffer[temp].clear(); + oggMeta.DTSCID2seqNum[temp] ++; + } + DTSCBuffer[temp].push_back(Strm.getPacket()); + prevGran[temp] = Strm.getPacket()["granule"].asInt(); } if (Strm.lastType() == DTSC::PAUSEMARK){ conn.close(); } - if (Strm.lastType() == DTSC::AUDIO || Strm.lastType() == DTSC::VIDEO){ - DTSCBuffer[temp].push_back(Strm.getPacket()); - prevGran[temp] = Strm.getPacket()["granule"].asInt(); - } } }else{ Util::sleep(1); diff --git a/src/converters/ogg2dtsc.cpp b/src/converters/ogg2dtsc.cpp index 31ecac57..0710be33 100644 --- a/src/converters/ogg2dtsc.cpp +++ b/src/converters/ogg2dtsc.cpp @@ -16,7 +16,7 @@ namespace Converters{ class oggTrack{ public: - oggTrack() : lastTime(), parsedHeaders(false) { } + oggTrack() : lastTime(0), parsedHeaders(false) { } codecType codec; std::string name; long long unsigned int dtscID; @@ -69,7 +69,7 @@ namespace Converters{ trackData[sNum].name = tID.str(); } //if Serial number is available in mapping - if(trackData.find(sNum)!=trackData.end()){ + if(trackData.find(sNum)!=trackData.end()){//create DTSC from OGG page int offset = 0; for (std::deque::iterator it = oggPage.getSegmentTableDeque().begin(); it != oggPage.getSegmentTableDeque().end(); it++){ if (trackData[sNum].parsedHeaders){ @@ -96,7 +96,7 @@ namespace Converters{ } std::cout << DTSCOut.toNetPacked(); - }else{ + }else{//if we ouput a header: //switch on codec switch(trackData[sNum].codec){ case THEORA:{