Fixed firstms/lastms in DTSC::Track, fixed stream buffer limitations.
This commit is contained in:
parent
f09b258804
commit
99353f49a0
3 changed files with 11 additions and 11 deletions
|
@ -235,9 +235,6 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
|
||||||
newPos.seekTime++;
|
newPos.seekTime++;
|
||||||
}
|
}
|
||||||
buffers[newPos] = newPack;
|
buffers[newPos] = newPack;
|
||||||
if (buffercount > 1){
|
|
||||||
buffers[newPos].toNetPacked();//make sure package is packed and ready
|
|
||||||
}
|
|
||||||
datapointertype = INVALID;
|
datapointertype = INVALID;
|
||||||
std::string tmp = "";
|
std::string tmp = "";
|
||||||
if (newPack.isMember("trackid") && newPack["trackid"].asInt() > 0){
|
if (newPack.isMember("trackid") && newPack["trackid"].asInt() > 0){
|
||||||
|
@ -260,6 +257,9 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
|
||||||
}
|
}
|
||||||
if (buffercount > 1){
|
if (buffercount > 1){
|
||||||
metadata.update(newPack);
|
metadata.update(newPack);
|
||||||
|
if (newPack.isMember("keyframe") || metadata.tracks[newPos.trackID].keys.rbegin()->getTime() == newPos.seekTime){
|
||||||
|
keyframes[newPos.trackID].insert(newPos);
|
||||||
|
}
|
||||||
metadata.live = true;
|
metadata.live = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ void DTSC::Stream::cutOneBuffer(){
|
||||||
metadata.tracks[trid].keys.pop_front();
|
metadata.tracks[trid].keys.pop_front();
|
||||||
// delete fragments of which the beginning can no longer be reached
|
// delete fragments of which the beginning can no longer be reached
|
||||||
while (metadata.tracks[trid].fragments.size() && metadata.tracks[trid].fragments[0].getNumber() < metadata.tracks[trid].keys[0].getNumber()){
|
while (metadata.tracks[trid].fragments.size() && metadata.tracks[trid].fragments[0].getNumber() < metadata.tracks[trid].keys[0].getNumber()){
|
||||||
metadata.tracks[trid].firstms += metadata.tracks[trid].fragments[0].getDuration();
|
metadata.tracks[trid].firstms = metadata.tracks[trid].keys[0].getTime();
|
||||||
metadata.tracks[trid].fragments.pop_front();
|
metadata.tracks[trid].fragments.pop_front();
|
||||||
// increase the missed fragments counter
|
// increase the missed fragments counter
|
||||||
metadata.tracks[trid].missedFrags ++;
|
metadata.tracks[trid].missedFrags ++;
|
||||||
|
|
|
@ -312,12 +312,12 @@ namespace DTSC {
|
||||||
void resetStream();
|
void resetStream();
|
||||||
std::map<livePos,JSON::Value> buffers;
|
std::map<livePos,JSON::Value> buffers;
|
||||||
std::map<int,std::set<livePos> > keyframes;
|
std::map<int,std::set<livePos> > keyframes;
|
||||||
void addPacket(JSON::Value & newPack);
|
virtual void addPacket(JSON::Value & newPack);
|
||||||
void addMeta(JSON::Value & newMeta);
|
virtual void addMeta(JSON::Value & newMeta);
|
||||||
datatype datapointertype;
|
datatype datapointertype;
|
||||||
unsigned int buffercount;
|
unsigned int buffercount;
|
||||||
unsigned int buffertime;
|
unsigned int buffertime;
|
||||||
std::map<int,std::string> trackMapping;
|
std::map<int,std::string> trackMapping;
|
||||||
void deletionCallback(livePos deleting);
|
virtual void deletionCallback(livePos deleting);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,6 +125,8 @@ namespace DTSC {
|
||||||
parts = NULL;
|
parts = NULL;
|
||||||
partLen = 0;
|
partLen = 0;
|
||||||
missedFrags = 0;
|
missedFrags = 0;
|
||||||
|
firstms = 0;
|
||||||
|
lastms = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
readOnlyTrack::readOnlyTrack(JSON::Value & trackRef){
|
readOnlyTrack::readOnlyTrack(JSON::Value & trackRef){
|
||||||
|
@ -253,9 +255,6 @@ namespace DTSC {
|
||||||
}else{
|
}else{
|
||||||
newPart.setDuration(0);
|
newPart.setDuration(0);
|
||||||
}
|
}
|
||||||
if (pack["time"].asInt() > firstms){
|
|
||||||
firstms = pack["time"].asInt();
|
|
||||||
}
|
|
||||||
parts.push_back(newPart);
|
parts.push_back(newPart);
|
||||||
lastms = pack["time"].asInt();
|
lastms = pack["time"].asInt();
|
||||||
if (pack.isMember("keyframe") || !keys.size() || (type != "video" && pack["time"].asInt() - 5000 > keys[keys.size() - 1].getTime())){
|
if (pack.isMember("keyframe") || !keys.size() || (type != "video" && pack["time"].asInt() - 5000 > keys[keys.size() - 1].getTime())){
|
||||||
|
@ -275,6 +274,7 @@ namespace DTSC {
|
||||||
newKey.setBpos(0);
|
newKey.setBpos(0);
|
||||||
}
|
}
|
||||||
keys.push_back(newKey);
|
keys.push_back(newKey);
|
||||||
|
firstms = keys[0].getTime();
|
||||||
if (!fragments.size() || pack["time"].asInt() - 10000 >= getKey(fragments.rbegin()->getNumber()).getTime()){
|
if (!fragments.size() || pack["time"].asInt() - 10000 >= getKey(fragments.rbegin()->getNumber()).getTime()){
|
||||||
//new fragment
|
//new fragment
|
||||||
Fragment newFrag;
|
Fragment newFrag;
|
||||||
|
@ -331,7 +331,7 @@ namespace DTSC {
|
||||||
parts.clear();
|
parts.clear();
|
||||||
keys.clear();
|
keys.clear();
|
||||||
bps = 0;
|
bps = 0;
|
||||||
firstms = 999;
|
firstms = 0;
|
||||||
lastms = 0;
|
lastms = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue