Merge branch 'development' into LTS_development
This commit is contained in:
commit
f3cc7b0a4e
4 changed files with 32 additions and 18 deletions
|
@ -118,7 +118,6 @@ namespace DTSC {
|
||||||
void reInit(Socket::Connection & src);
|
void reInit(Socket::Connection & src);
|
||||||
void reInit(const char * data_, unsigned int len, bool noCopy = false);
|
void reInit(const char * data_, unsigned int len, bool noCopy = false);
|
||||||
void genericFill(long long packTime, long long packOffset, long long packTrack, const char * packData, long long packDataSize, uint64_t packBytePos, bool isKeyframe);
|
void genericFill(long long packTime, long long packOffset, long long packTrack, const char * packData, long long packDataSize, uint64_t packBytePos, bool isKeyframe);
|
||||||
void appendData(const char * appendData, uint32_t appendLen);
|
|
||||||
void getString(const char * identifier, char *& result, unsigned int & len) const;
|
void getString(const char * identifier, char *& result, unsigned int & len) const;
|
||||||
void getString(const char * identifier, std::string & result) const;
|
void getString(const char * identifier, std::string & result) const;
|
||||||
void getInt(const char * identifier, int & result) const;
|
void getInt(const char * identifier, int & result) const;
|
||||||
|
@ -126,7 +125,8 @@ namespace DTSC {
|
||||||
void getFlag(const char * identifier, bool & result) const;
|
void getFlag(const char * identifier, bool & result) const;
|
||||||
bool getFlag(const char * identifier) const;
|
bool getFlag(const char * identifier) const;
|
||||||
bool hasMember(const char * identifier) const;
|
bool hasMember(const char * identifier) const;
|
||||||
void appendNal(const char * appendData, uint32_t appendLen, uint32_t totalLen);
|
void appendNal(const char * appendData, uint32_t appendLen);
|
||||||
|
void upgradeNal(const char * appendData, uint32_t appendLen);
|
||||||
void setKeyFrame(bool kf);
|
void setKeyFrame(bool kf);
|
||||||
long long unsigned int getTime() const;
|
long long unsigned int getTime() const;
|
||||||
long int getTrackId() const;
|
long int getTrackId() const;
|
||||||
|
@ -145,6 +145,8 @@ namespace DTSC {
|
||||||
char * data;
|
char * data;
|
||||||
unsigned int bufferLen;
|
unsigned int bufferLen;
|
||||||
unsigned int dataLen;
|
unsigned int dataLen;
|
||||||
|
|
||||||
|
uint64_t prevNalSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A simple structure used for ordering byte seek positions.
|
/// A simple structure used for ordering byte seek positions.
|
||||||
|
|
|
@ -291,30 +291,42 @@ namespace DTSC {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Packet::appendData(const char * appendData, uint32_t appendLen){
|
void Packet::appendNal(const char * appendData, uint32_t appendLen){
|
||||||
resize(dataLen + appendLen);
|
if(appendLen ==0){
|
||||||
memcpy(data + dataLen-3, appendData, appendLen);
|
|
||||||
memcpy(data + dataLen-3 + appendLen, "\000\000\356", 3); //end container
|
|
||||||
dataLen += appendLen;
|
|
||||||
Bit::htobl(data+4, Bit::btohl(data +4)+appendLen);
|
|
||||||
uint32_t offset = getDataStringLenOffset();
|
|
||||||
Bit::htobl(data+offset, Bit::btohl(data+offset)+appendLen);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Packet::appendNal(const char * appendData, uint32_t appendLen, uint32_t totalLen){
|
|
||||||
if(totalLen ==0){
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// INFO_MSG("totallen: %d, appendLen: %d",totalLen,appendLen);
|
// INFO_MSG("totallen: %d, appendLen: %d",totalLen,appendLen);
|
||||||
resize(dataLen + appendLen +4);
|
resize(dataLen + appendLen +4);
|
||||||
Bit::htobl(data+dataLen -3, totalLen);
|
Bit::htobl(data+dataLen -3, appendLen);
|
||||||
memcpy(data + dataLen-3+4, appendData, appendLen);
|
memcpy(data + dataLen-3+4, appendData, appendLen);
|
||||||
memcpy(data + dataLen-3+4 + appendLen, "\000\000\356", 3); //end container
|
memcpy(data + dataLen-3+4 + appendLen, "\000\000\356", 3); //end container
|
||||||
dataLen += appendLen +4;
|
dataLen += appendLen +4;
|
||||||
Bit::htobl(data+4, Bit::btohl(data +4)+appendLen+4);
|
Bit::htobl(data+4, Bit::btohl(data +4)+appendLen+4);
|
||||||
uint32_t offset = getDataStringLenOffset();
|
uint32_t offset = getDataStringLenOffset();
|
||||||
Bit::htobl(data+offset, Bit::btohl(data+offset)+appendLen+4);
|
Bit::htobl(data+offset, Bit::btohl(data+offset)+appendLen+4);
|
||||||
|
|
||||||
|
prevNalSize = appendLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Packet::upgradeNal(const char * appendData, uint32_t appendLen){
|
||||||
|
if(appendLen ==0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
uint64_t sizeOffset = dataLen - 3 - 4 - prevNalSize;
|
||||||
|
if (Bit::btohl(data + sizeOffset) != prevNalSize){
|
||||||
|
FAIL_MSG("PrevNalSize state not correct");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resize(dataLen + appendLen);//Not + 4 as size bytes have already been written here.
|
||||||
|
Bit::htobl(data+sizeOffset, prevNalSize + appendLen);
|
||||||
|
prevNalSize += appendLen;
|
||||||
|
memcpy(data + dataLen - 3, appendData, appendLen);
|
||||||
|
memcpy(data + dataLen - 3 + appendLen, "\000\000\356", 3); //end container
|
||||||
|
dataLen += appendLen;
|
||||||
|
Bit::htobl(data+4, Bit::btohl(data +4)+appendLen);
|
||||||
|
uint32_t offset = getDataStringLenOffset();
|
||||||
|
Bit::htobl(data+offset, Bit::btohl(data+offset)+appendLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Packet::getDataStringLen(){
|
uint32_t Packet::getDataStringLen(){
|
||||||
|
|
|
@ -82,8 +82,8 @@ namespace nalu {
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
while(offset+2 < dataSize){
|
while(offset+2 < dataSize){
|
||||||
const char * begin = data + offset;
|
const char * begin = data + offset;
|
||||||
int t = (int)((begin[0] << 8)|((begin[1]) << 8)|(begin[2]));
|
bool t = (begin[2] == 1 && !begin[0] && !begin[1]);
|
||||||
if(t != 1){
|
if(!t){
|
||||||
if (begin[2]){//skip three bytes if the last one isn't zero
|
if (begin[2]){//skip three bytes if the last one isn't zero
|
||||||
offset +=3;
|
offset +=3;
|
||||||
}else if (begin[1]){//skip two bytes if the second one isn't zero
|
}else if (begin[1]){//skip two bytes if the second one isn't zero
|
||||||
|
|
|
@ -116,7 +116,7 @@ namespace Mist{
|
||||||
uint64_t ts = Util::bootMS() - startTime;
|
uint64_t ts = Util::bootMS() - startTime;
|
||||||
if (myMeta.tracks[1].fpks){ts = frameCount * (1000000 / myMeta.tracks[1].fpks);}
|
if (myMeta.tracks[1].fpks){ts = frameCount * (1000000 / myMeta.tracks[1].fpks);}
|
||||||
thisPacket.genericFill(ts, 0, 1, 0, 0, 0, h264::isKeyframe(NAL.data(), nalSize));
|
thisPacket.genericFill(ts, 0, 1, 0, 0, 0, h264::isKeyframe(NAL.data(), nalSize));
|
||||||
thisPacket.appendNal(NAL.data(), nalSize, nalSize);
|
thisPacket.appendNal(NAL.data(), nalSize);
|
||||||
++frameCount;
|
++frameCount;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue