Added pausemark support to DTSC::Stream and fixes several minor bugs.
This commit is contained in:
parent
9bf92add4f
commit
932c0e5b7b
3 changed files with 15 additions and 8 deletions
20
lib/dtsc.cpp
20
lib/dtsc.cpp
|
@ -54,15 +54,16 @@ bool DTSC::Stream::parsePacket(std::string & buffer){
|
||||||
datapointertype = INVALID;
|
datapointertype = INVALID;
|
||||||
if (buffers.front().isMember("data")){
|
if (buffers.front().isMember("data")){
|
||||||
datapointer = &(buffers.front()["data"].strVal);
|
datapointer = &(buffers.front()["data"].strVal);
|
||||||
if (buffers.front().isMember("datatype")){
|
|
||||||
std::string tmp = buffers.front()["datatype"].asString();
|
|
||||||
if (tmp == "video"){datapointertype = VIDEO;}
|
|
||||||
if (tmp == "audio"){datapointertype = AUDIO;}
|
|
||||||
if (tmp == "meta"){datapointertype = META;}
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
datapointer = 0;
|
datapointer = 0;
|
||||||
}
|
}
|
||||||
|
if (buffers.front().isMember("datatype")){
|
||||||
|
std::string tmp = buffers.front()["datatype"].asString();
|
||||||
|
if (tmp == "video"){datapointertype = VIDEO;}
|
||||||
|
if (tmp == "audio"){datapointertype = AUDIO;}
|
||||||
|
if (tmp == "meta"){datapointertype = META;}
|
||||||
|
if (tmp == "pause_marker"){datapointertype = PAUSEMARK;}
|
||||||
|
}
|
||||||
buffer.erase(0, len+8);
|
buffer.erase(0, len+8);
|
||||||
while (buffers.size() > buffercount){buffers.pop_back();}
|
while (buffers.size() > buffercount){buffers.pop_back();}
|
||||||
advanceRings();
|
advanceRings();
|
||||||
|
@ -295,7 +296,11 @@ void DTSC::File::seekNext(){
|
||||||
currframe++;
|
currframe++;
|
||||||
currtime = jsonbuffer["time"].asInt();
|
currtime = jsonbuffer["time"].asInt();
|
||||||
#if DEBUG >= 4
|
#if DEBUG >= 4
|
||||||
std::cerr << "Found a new frame " << currframe << " @ " << pos << "b/" << currtime << "s" << std::endl;
|
if (frames[currframe] != pos){
|
||||||
|
std::cerr << "Found a new frame " << currframe << " @ " << pos << "b/" << currtime << "ms" << std::endl;
|
||||||
|
}else{
|
||||||
|
std::cerr << "Passing frame " << currframe << " @ " << pos << "b/" << currtime << "ms" << std::endl;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
frames[currframe] = pos;
|
frames[currframe] = pos;
|
||||||
msframes[currframe] = currtime;
|
msframes[currframe] = currtime;
|
||||||
|
@ -329,6 +334,7 @@ bool DTSC::File::seek_frame(int frameno){
|
||||||
seekNext();
|
seekNext();
|
||||||
if (jsonbuffer.isNull()){return false;}
|
if (jsonbuffer.isNull()){return false;}
|
||||||
}
|
}
|
||||||
|
seek_frame(frameno);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@ namespace DTSC{
|
||||||
AUDIO, ///< Stream Audio data
|
AUDIO, ///< Stream Audio data
|
||||||
VIDEO, ///< Stream Video data
|
VIDEO, ///< Stream Video data
|
||||||
META, ///< Stream Metadata
|
META, ///< Stream Metadata
|
||||||
|
PAUSEMARK, ///< Pause marker
|
||||||
INVALID ///< Anything else or no data available.
|
INVALID ///< Anything else or no data available.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -406,7 +406,7 @@ std::string & JSON::Value::toNetPacked(){
|
||||||
std::string packed = toPacked();
|
std::string packed = toPacked();
|
||||||
strVal.resize(packed.size() + 8);
|
strVal.resize(packed.size() + 8);
|
||||||
//insert proper header for this type of data
|
//insert proper header for this type of data
|
||||||
if (isMember("data")){
|
if (isMember("datatype")){
|
||||||
memcpy((void*)strVal.c_str(), "DTPD", 4);
|
memcpy((void*)strVal.c_str(), "DTPD", 4);
|
||||||
}else{
|
}else{
|
||||||
memcpy((void*)strVal.c_str(), "DTSC", 4);
|
memcpy((void*)strVal.c_str(), "DTSC", 4);
|
||||||
|
|
Loading…
Add table
Reference in a new issue