continuity improvements

This commit is contained in:
wouter spruit 2015-03-05 13:39:31 +01:00 committed by Thulinma
parent 95f19c4259
commit ff049f4ea2
2 changed files with 15 additions and 2 deletions

View file

@ -205,6 +205,18 @@ namespace Mist {
H.SetHeader("Content-Type", "video/mp2t");
H.StartResponse(H, myConn, VLCworkaround);
unsigned int fragCounter = myMeta.tracks[vidTrack].missedFrags;
for (std::deque<DTSC::Fragment>::iterator it = myMeta.tracks[vidTrack].fragments.begin(); it != myMeta.tracks[vidTrack].fragments.end(); it++){
long long int starttime = myMeta.tracks[vidTrack].getKey(it->getNumber()).getTime();
if (starttime <= from && starttime + it->getDuration() > from){
EXTREME_MSG("setting continuity counter for PAT/PMT to %d",fragCounter);
contCounters[0]=fragCounter; //PAT continuity counter
contCounters[4096]=fragCounter; //PMT continuity counter
break;
}
++fragCounter;
}
packCounter = 0;
parseData = true;
wantRequest = false;

View file

@ -17,9 +17,9 @@ namespace Mist {
if ( (sendRepeatingHeaders && packCounter % 42 == 0) || !packCounter){
TS::Packet tmpPack;
tmpPack.FromPointer(TS::PAT);
tmpPack.setContinuityCounter(++contCounters[tmpPack.getPID()]);
tmpPack.setContinuityCounter(++contCounters[0]);
sendTS(tmpPack.checkAndGetBuffer());
sendTS(TS::createPMT(selectedTracks, myMeta, ++contCounters[tmpPack.getPID()]));
sendTS(TS::createPMT(selectedTracks, myMeta, ++contCounters[4096]));
packCounter += 2;
}
sendTS(packData.checkAndGetBuffer());
@ -35,6 +35,7 @@ namespace Mist {
packData.setContinuityCounter(++contCounters[packData.getPID()]);
if (first[currentPacket.getTrackId()]){
packData.setUnitStart(1);
packData.setDiscontinuity(true);
if (myMeta.tracks[currentPacket.getTrackId()].type == "video"){
if (currentPacket.getInt("keyframe")){
packData.setRandomAccess(1);