Added pausemark support to DTSC::Stream and fixes several minor bugs.

This commit is contained in:
Thulinma 2012-09-03 12:22:40 +02:00
parent 9bf92add4f
commit 932c0e5b7b
3 changed files with 15 additions and 8 deletions

View file

@ -54,14 +54,15 @@ bool DTSC::Stream::parsePacket(std::string & buffer){
datapointertype = INVALID;
if (buffers.front().isMember("data")){
datapointer = &(buffers.front()["data"].strVal);
}else{
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;}
}
}else{
datapointer = 0;
if (tmp == "pause_marker"){datapointertype = PAUSEMARK;}
}
buffer.erase(0, len+8);
while (buffers.size() > buffercount){buffers.pop_back();}
@ -295,7 +296,11 @@ void DTSC::File::seekNext(){
currframe++;
currtime = jsonbuffer["time"].asInt();
#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
frames[currframe] = pos;
msframes[currframe] = currtime;
@ -329,6 +334,7 @@ bool DTSC::File::seek_frame(int frameno){
seekNext();
if (jsonbuffer.isNull()){return false;}
}
seek_frame(frameno);
return true;
}
}

View file

@ -56,6 +56,7 @@ namespace DTSC{
AUDIO, ///< Stream Audio data
VIDEO, ///< Stream Video data
META, ///< Stream Metadata
PAUSEMARK, ///< Pause marker
INVALID ///< Anything else or no data available.
};

View file

@ -406,7 +406,7 @@ std::string & JSON::Value::toNetPacked(){
std::string packed = toPacked();
strVal.resize(packed.size() + 8);
//insert proper header for this type of data
if (isMember("data")){
if (isMember("datatype")){
memcpy((void*)strVal.c_str(), "DTPD", 4);
}else{
memcpy((void*)strVal.c_str(), "DTSC", 4);