This should fix all DTSC reading speed-related issues.

This commit is contained in:
Thulinma 2012-05-23 12:50:56 +02:00
parent 331fac9146
commit 9fb606aa4f
2 changed files with 14 additions and 8 deletions

View file

@ -117,9 +117,6 @@ namespace Buffer{
//slow down packet receiving to real-time //slow down packet receiving to real-time
now = getNowMS(); now = getNowMS();
if ((now - lastPacketTime >= currPacketTime - prevPacketTime) || (currPacketTime <= prevPacketTime)){ if ((now - lastPacketTime >= currPacketTime - prevPacketTime) || (currPacketTime <= prevPacketTime)){
std::cin.read(charBuffer, 1024*10);
charCount = std::cin.gcount();
inBuffer.append(charBuffer, charCount);
thisStream->getWriteLock(); thisStream->getWriteLock();
if (thisStream->getStream()->parsePacket(inBuffer)){ if (thisStream->getStream()->parsePacket(inBuffer)){
thisStream->getStream()->outPacket(0); thisStream->getStream()->outPacket(0);
@ -129,6 +126,9 @@ namespace Buffer{
thisStream->dropWriteLock(true); thisStream->dropWriteLock(true);
}else{ }else{
thisStream->dropWriteLock(false); thisStream->dropWriteLock(false);
std::cin.read(charBuffer, 1024*10);
charCount = std::cin.gcount();
inBuffer.append(charBuffer, charCount);
} }
}else{ }else{
if (((currPacketTime - prevPacketTime) - (now - lastPacketTime)) > 999){ if (((currPacketTime - prevPacketTime) - (now - lastPacketTime)) > 999){
@ -149,17 +149,22 @@ namespace Buffer{
std::string inBuffer; std::string inBuffer;
while (buffer_running){ while (buffer_running){
if (thisStream->getIPInput().connected()){ if (thisStream->getIPInput().connected()){
if (thisStream->getIPInput().iread(inBuffer)){ if (inBuffer.size() > 0){
thisStream->getWriteLock(); thisStream->getWriteLock();
if (thisStream->getStream()->parsePacket(inBuffer)){ if (thisStream->getStream()->parsePacket(inBuffer)){
thisStream->getStream()->outPacket(0); thisStream->getStream()->outPacket(0);
thisStream->dropWriteLock(true); thisStream->dropWriteLock(true);
}else{ }else{
thisStream->dropWriteLock(false); thisStream->dropWriteLock(false);
thisStream->getIPInput().iread(inBuffer);
usleep(1000);//1ms wait
} }
}else{
thisStream->getIPInput().iread(inBuffer);
usleep(1000);//1ms wait
} }
}else{ }else{
usleep(1000000); usleep(1000000);//1s wait
} }
} }
SS.close(); SS.close();

View file

@ -27,9 +27,6 @@ namespace Converters{
bool doneheader = false; bool doneheader = false;
while (std::cin.good()){ while (std::cin.good()){
std::cin.read(charBuffer, 1024*10);
charCount = std::cin.gcount();
inBuffer.append(charBuffer, charCount);
if (Strm.parsePacket(inBuffer)){ if (Strm.parsePacket(inBuffer)){
if (!doneheader){ if (!doneheader){
doneheader = true; doneheader = true;
@ -48,6 +45,10 @@ namespace Converters{
if (FLV_out.DTSCLoader(Strm)){ if (FLV_out.DTSCLoader(Strm)){
std::cout.write(FLV_out.data, FLV_out.len); std::cout.write(FLV_out.data, FLV_out.len);
} }
}else{
std::cin.read(charBuffer, 1024*10);
charCount = std::cin.gcount();
inBuffer.append(charBuffer, charCount);
} }
} }