Implemented basic version of DTSC::RetimedPacket

This commit is contained in:
Thulinma 2018-06-29 11:34:15 +02:00
parent 921e6827dc
commit ee195f0089
2 changed files with 20 additions and 3 deletions

View file

@ -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() {

View file

@ -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);