Fixed HDS live playback.

This commit is contained in:
Thulinma 2015-04-15 12:33:06 +02:00
parent f86476153e
commit f94f7963de

View file

@ -164,14 +164,16 @@ namespace Mist {
void OutHDS::sendNext(){ void OutHDS::sendNext(){
if (thisPacket.getTime() >= playUntil){ if (thisPacket.getTime() >= playUntil){
DEBUG_MSG(DLVL_HIGH, "(%d) Done sending fragment", getpid() ); VERYHIGH_MSG("Done sending fragment (%llu >= %llu)", thisPacket.getTime(), playUntil);
stop(); stop();
wantRequest = true; wantRequest = true;
H.Chunkify("", 0, myConn); H.Chunkify("", 0, myConn);
return; return;
} }
tag.DTSCLoader(thisPacket, myMeta.tracks[thisPacket.getTrackId()]); tag.DTSCLoader(thisPacket, myMeta.tracks[thisPacket.getTrackId()]);
H.Chunkify(tag.data, tag.len, myConn); if (tag.len){
H.Chunkify(tag.data, tag.len, myConn);
}
} }
void OutHDS::onHTTP(){ void OutHDS::onHTTP(){
@ -212,7 +214,7 @@ namespace Mist {
} }
//delay if we don't have the next fragment available yet //delay if we don't have the next fragment available yet
unsigned int timeout = 0; unsigned int timeout = 0;
while (myConn && fragNum > myMeta.tracks[tid].missedFrags + myMeta.tracks[tid].fragments.size() - 1){ while (myConn && fragNum >= myMeta.tracks[tid].missedFrags + myMeta.tracks[tid].fragments.size() - 1){
//time out after 21 seconds //time out after 21 seconds
if (++timeout > 42){ if (++timeout > 42){
myConn.close(); myConn.close();
@ -223,6 +225,7 @@ namespace Mist {
} }
mstime = myMeta.tracks[tid].getKey(myMeta.tracks[tid].fragments[fragNum - myMeta.tracks[tid].missedFrags].getNumber()).getTime(); mstime = myMeta.tracks[tid].getKey(myMeta.tracks[tid].fragments[fragNum - myMeta.tracks[tid].missedFrags].getNumber()).getTime();
mslen = myMeta.tracks[tid].fragments[fragNum - myMeta.tracks[tid].missedFrags].getDuration(); mslen = myMeta.tracks[tid].fragments[fragNum - myMeta.tracks[tid].missedFrags].getDuration();
VERYHIGH_MSG("Playing from %llu for %llu ms", mstime, mslen);
selectedTracks.clear(); selectedTracks.clear();
selectedTracks.insert(tid); selectedTracks.insert(tid);