Fixed a bug. (DTSC lib mistakenly wiped metadata when seeking backwards, re-re-fixed proc child signal problems)
This commit is contained in:
parent
6a72fddf7b
commit
9cdf8d92a1
2 changed files with 6 additions and 14 deletions
|
@ -193,7 +193,7 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
|
||||||
livePos newPos;
|
livePos newPos;
|
||||||
newPos.trackID = newPack["trackid"].asInt();
|
newPos.trackID = newPack["trackid"].asInt();
|
||||||
newPos.seekTime = newPack["time"].asInt();
|
newPos.seekTime = newPack["time"].asInt();
|
||||||
if (buffers.size() > 0){
|
if (buffercount > 1 && buffers.size() > 0){
|
||||||
livePos lastPos = buffers.rbegin()->first;
|
livePos lastPos = buffers.rbegin()->first;
|
||||||
if (newPos < lastPos){
|
if (newPos < lastPos){
|
||||||
if ((lastPos.seekTime > 1000) && newPos.seekTime < lastPos.seekTime - 1000){
|
if ((lastPos.seekTime > 1000) && newPos.seekTime < lastPos.seekTime - 1000){
|
||||||
|
@ -314,11 +314,11 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){
|
||||||
}
|
}
|
||||||
|
|
||||||
while (buffers.size() > buffercount){
|
while (buffers.size() > buffercount){
|
||||||
if (keyframes[buffers.begin()->first.trackID].count(buffers.begin()->first)){
|
if (buffercount > 1 && keyframes[buffers.begin()->first.trackID].count(buffers.begin()->first)){
|
||||||
updateMeta = true;
|
updateMeta = true;
|
||||||
//if there are < 3 keyframes, throwing one away would mean less than 2 left.
|
//if there are < 3 keyframes, throwing one away would mean less than 2 left.
|
||||||
if (keyframes[buffers.begin()->first.trackID].size() < 3){
|
if (keyframes[buffers.begin()->first.trackID].size() < 3){
|
||||||
std::cout << "Warning - track " << buffers.begin()->first.trackID << " doesn't have enough keyframes to be reliably served." << std::endl;
|
std::cerr << "Warning - track " << buffers.begin()->first.trackID << " doesn't have enough keyframes to be reliably served." << std::endl;
|
||||||
}
|
}
|
||||||
std::string track = trackMapping[buffers.begin()->first.trackID];
|
std::string track = trackMapping[buffers.begin()->first.trackID];
|
||||||
keyframes[buffers.begin()->first.trackID].erase(buffers.begin()->first);
|
keyframes[buffers.begin()->first.trackID].erase(buffers.begin()->first);
|
||||||
|
|
|
@ -91,17 +91,9 @@ void Util::Procs::childsig_handler(int signum){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int status;
|
int status;
|
||||||
pid_t ret = waitpid( -1, &status, WNOHANG);
|
pid_t ret = waitpid( -1, &status, 0);
|
||||||
if (ret == 0){ //ignore, would block otherwise
|
if (ret <= 0){
|
||||||
return;
|
childsig_handler(signum);
|
||||||
}else if (ret < 0){
|
|
||||||
if (errno == EINTR){
|
|
||||||
childsig_handler(signum);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#if DEBUG >= 3
|
|
||||||
std::cerr << "SIGCHLD received, but no child died";
|
|
||||||
#endif
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int exitcode;
|
int exitcode;
|
||||||
|
|
Loading…
Add table
Reference in a new issue