From ee195f0089e1514555514ea278a7f410334cb136 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 29 Jun 2018 11:34:15 +0200 Subject: [PATCH] Implemented basic version of DTSC::RetimedPacket --- lib/dtsc.h | 19 ++++++++++++++++++- src/io.cpp | 4 ++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/dtsc.h b/lib/dtsc.h index 07ffd81d..0c58494e 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -129,7 +129,7 @@ namespace DTSC { void appendNal(const char * appendData, uint32_t appendLen); void upgradeNal(const char * appendData, uint32_t appendLen); void setKeyFrame(bool kf); - long long unsigned int getTime() const; + virtual long long unsigned int getTime() const; long int getTrackId() const; char * getData() const; int getDataLen() const; @@ -150,6 +150,23 @@ namespace DTSC { uint64_t prevNalSize; }; + /// A child class of DTSC::Packet, which allows overriding the packet time efficiently. + class RetimedPacket : public Packet { + public: + RetimedPacket(uint64_t reTime){ + timeOverride = reTime; + } + RetimedPacket(uint64_t reTime, const Packet & rhs) : Packet(rhs){ + timeOverride = reTime; + } + RetimedPacket(uint64_t reTime, const char * data_, unsigned int len, bool noCopy = false) : Packet(data_, len, noCopy){ + timeOverride = reTime; + } + virtual long long unsigned int getTime() const{return timeOverride;} + protected: + uint64_t timeOverride; + }; + /// A simple structure used for ordering byte seek positions. struct livePos { livePos() { diff --git a/src/io.cpp b/src/io.cpp index 30773c83..4edb2c44 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -364,9 +364,9 @@ namespace Mist { //finish container with 0x0000EE memcpy(myPage.mapped+ivecOffset+19, "\000\000\356", 3); } - //Copy the remaing values in reverse order: + //Copy the remaining values in reverse order: //8 byte timestamp - memcpy(myPage.mapped + curOffset + 12, pack.getData() + 12, 8); + Bit::htobll(myPage.mapped + curOffset + 12, pack.getTime()); //The mapped track id ((int *)(myPage.mapped + curOffset + 8))[0] = htonl(mapTid); int size = Bit::btohl(pack.getData() + 4);