diff --git a/src/connectors/conn_http_progressive_ogg.cpp b/src/connectors/conn_http_progressive_ogg.cpp index bca9dbf1..e7cf2547 100644 --- a/src/connectors/conn_http_progressive_ogg.cpp +++ b/src/connectors/conn_http_progressive_ogg.cpp @@ -39,6 +39,7 @@ namespace Connector_HTTP { OGG::headerPages oggMeta; OGG::Page curOggPage; std::map > DTSCBuffer; + std::set sendReady; //std::map prevGran; std::vector curSegTable; long long int currID = 0; @@ -166,6 +167,9 @@ namespace Connector_HTTP { oggMeta.readDTSCHeader(Strm.metadata); conn.SendNow((char*)oggMeta.parsedPages.c_str(), oggMeta.parsedPages.size()); progressive_has_sent_header = true; + //setting sendReady to not ready + sendReady.clear(); + //prevID = Strm.getPacket()["trackid"].asInt(); //prevGran = Strm.getPacket()["granule"].asInt(); } @@ -183,10 +187,17 @@ namespace Connector_HTTP { } if ((prevGran != 0 && (prevGran == -1 || currGran != prevGran)) ){ curOggPage.readDTSCVector(DTSCBuffer[currID], oggMeta.DTSCID2OGGSerial[currID], oggMeta.DTSCID2seqNum[currID]); - conn.SendNow((char*)curOggPage.getPage(), curOggPage.getPageSize()); + //conn.SendNow((char*)curOggPage.getPage(), curOggPage.getPageSize()); + sendBuffer += std::string((char*)curOggPage.getPage(), curOggPage.getPageSize()); DTSCBuffer[currID].clear(); + sendReady.insert(currID); oggMeta.DTSCID2seqNum[currID]++; } + if (sendReady.size()==oggMeta.DTSCID2OGGSerial.size()){ + conn.SendNow(sendBuffer); + sendBuffer = ""; + sendReady.clear(); + } DTSCBuffer[currID].push_back(Strm.getPacket()); prevID = currID; }