diff --git a/lib/dtsc.h b/lib/dtsc.h index e9e14992..d05e08eb 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -341,6 +341,7 @@ namespace DTSC { Meta(JSON::Value & meta); void reinit(const DTSC::Packet & source); void update(DTSC::Packet & pack, unsigned long segment_size = 5000); + void updatePosOverride(DTSC::Packet & pack, unsigned long bpos); void update(JSON::Value & pack, unsigned long segment_size = 5000); void update(long long packTime, long long packOffset, long long packTrack, long long packDataSize, long long packBytePos, bool isKeyframe, long long packSendSize = 0, unsigned long segment_size = 5000); unsigned int getSendLen(); diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index 7d3fe464..4be9c40a 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1457,7 +1457,15 @@ namespace DTSC { pack.getString("data", data, dataLen); update(pack.getTime(), pack.hasMember("offset")?pack.getInt("offset"):0, pack.getTrackId(), dataLen, pack.hasMember("bpos")?pack.getInt("bpos"):-1, pack.hasMember("keyframe"), pack.getDataLen(), segment_size); } - + + ///\brief Updates a meta object given a DTSC::Packet with byte position override. + void Meta::updatePosOverride(DTSC::Packet & pack, unsigned long bpos) { + char * data; + unsigned int dataLen; + pack.getString("data", data, dataLen); + update(pack.getTime(), pack.hasMember("offset")?pack.getInt("offset"):0, pack.getTrackId(), dataLen, bpos, pack.hasMember("keyframe"), pack.getDataLen()); + } + void Meta::update(long long packTime, long long packOffset, long long packTrack, long long packDataSize, long long packBytePos, bool isKeyframe, long long packSendSize, unsigned long segment_size){ if (!packSendSize){ //time and trackID are part of the 20-byte header.