Improvements to ResizeablePointer
This commit is contained in:
parent
3ca1ea3b30
commit
b5b09f21b4
2 changed files with 12 additions and 12 deletions
20
lib/rtp.cpp
20
lib/rtp.cpp
|
@ -734,7 +734,7 @@ namespace RTP{
|
||||||
fuaBuffer[4] |= 0x80; // set error bit
|
fuaBuffer[4] |= 0x80; // set error bit
|
||||||
handleHEVCSingle(msTime, fuaBuffer, fuaBuffer.size(),
|
handleHEVCSingle(msTime, fuaBuffer, fuaBuffer.size(),
|
||||||
h265::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
h265::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
||||||
fuaBuffer.size() = 0;
|
fuaBuffer.truncate(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -742,14 +742,14 @@ namespace RTP{
|
||||||
if (!fuaBuffer.size()){len += 6;}// six extra bytes for the first packet
|
if (!fuaBuffer.size()){len += 6;}// six extra bytes for the first packet
|
||||||
if (!fuaBuffer.allocate(fuaBuffer.size() + len)){return;}
|
if (!fuaBuffer.allocate(fuaBuffer.size() + len)){return;}
|
||||||
if (!fuaBuffer.size()){
|
if (!fuaBuffer.size()){
|
||||||
memcpy(fuaBuffer + 6, pl + 3, plSize - 3);
|
fuaBuffer.append("\000\000\000\000\000\000", 6);
|
||||||
|
fuaBuffer.append(pl + 3, plSize - 3);
|
||||||
// reconstruct first byte
|
// reconstruct first byte
|
||||||
fuaBuffer[4] = ((pl[2] & 0x3F) << 1) | (pl[0] & 0x81);
|
fuaBuffer[4] = ((pl[2] & 0x3F) << 1) | (pl[0] & 0x81);
|
||||||
fuaBuffer[5] = pl[1];
|
fuaBuffer[5] = pl[1];
|
||||||
}else{
|
}else{
|
||||||
memcpy(fuaBuffer + fuaBuffer.size(), pl + 3, plSize - 3);
|
fuaBuffer.append(pl+3, plSize-3);
|
||||||
}
|
}
|
||||||
fuaBuffer.size() += len;
|
|
||||||
|
|
||||||
if (pl[2] & 0x40){// last packet
|
if (pl[2] & 0x40){// last packet
|
||||||
VERYHIGH_MSG("H265 FU packet type %s (%u) completed: %lu",
|
VERYHIGH_MSG("H265 FU packet type %s (%u) completed: %lu",
|
||||||
|
@ -758,7 +758,7 @@ namespace RTP{
|
||||||
Bit::htobl(fuaBuffer, fuaBuffer.size() - 4); // size-prepend
|
Bit::htobl(fuaBuffer, fuaBuffer.size() - 4); // size-prepend
|
||||||
handleHEVCSingle(msTime, fuaBuffer, fuaBuffer.size(),
|
handleHEVCSingle(msTime, fuaBuffer, fuaBuffer.size(),
|
||||||
h265::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
h265::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
||||||
fuaBuffer.size() = 0;
|
fuaBuffer.truncate(0);
|
||||||
}
|
}
|
||||||
}else if (nalType == 50){
|
}else if (nalType == 50){
|
||||||
ERROR_MSG("PACI/TSCI not supported yet");
|
ERROR_MSG("PACI/TSCI not supported yet");
|
||||||
|
@ -882,7 +882,7 @@ namespace RTP{
|
||||||
if (fuaBuffer.size() && ((pl[1] & 0x80) || missed)){
|
if (fuaBuffer.size() && ((pl[1] & 0x80) || missed)){
|
||||||
WARN_MSG("Ending unfinished FU-A");
|
WARN_MSG("Ending unfinished FU-A");
|
||||||
INSANE_MSG("H264 FU-A packet incompleted: %lu", fuaBuffer.size());
|
INSANE_MSG("H264 FU-A packet incompleted: %lu", fuaBuffer.size());
|
||||||
fuaBuffer.size() = 0;
|
fuaBuffer.truncate(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -890,13 +890,13 @@ namespace RTP{
|
||||||
if (!fuaBuffer.size()){len += 5;}// five extra bytes for the first packet
|
if (!fuaBuffer.size()){len += 5;}// five extra bytes for the first packet
|
||||||
if (!fuaBuffer.allocate(fuaBuffer.size() + len)){return;}
|
if (!fuaBuffer.allocate(fuaBuffer.size() + len)){return;}
|
||||||
if (!fuaBuffer.size()){
|
if (!fuaBuffer.size()){
|
||||||
memcpy(fuaBuffer + 4, pl + 1, plSize - 1);
|
fuaBuffer.append("\000\000\000\000", 4);
|
||||||
|
fuaBuffer.append(pl + 1, plSize - 1);
|
||||||
// reconstruct first byte
|
// reconstruct first byte
|
||||||
fuaBuffer[4] = (fuaBuffer[4] & 0x1F) | (pl[0] & 0xE0);
|
fuaBuffer[4] = (fuaBuffer[4] & 0x1F) | (pl[0] & 0xE0);
|
||||||
}else{
|
}else{
|
||||||
memcpy(fuaBuffer + fuaBuffer.size(), pl + 2, plSize - 2);
|
fuaBuffer.append(pl+2, plSize-2);
|
||||||
}
|
}
|
||||||
fuaBuffer.size() += len;
|
|
||||||
|
|
||||||
if (pl[1] & 0x40){// last packet
|
if (pl[1] & 0x40){// last packet
|
||||||
INSANE_MSG("H264 FU-A packet type %u completed: %lu", (unsigned int)(fuaBuffer[4] & 0x1F),
|
INSANE_MSG("H264 FU-A packet type %u completed: %lu", (unsigned int)(fuaBuffer[4] & 0x1F),
|
||||||
|
@ -910,7 +910,7 @@ namespace RTP{
|
||||||
handleH264Single(msTime, fuaBuffer, fuaBuffer.size(),
|
handleH264Single(msTime, fuaBuffer, fuaBuffer.size(),
|
||||||
h264::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
h264::isKeyframe(fuaBuffer + 4, fuaBuffer.size() - 4));
|
||||||
}
|
}
|
||||||
fuaBuffer.size() = 0;
|
fuaBuffer.truncate(0);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ namespace Mist{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InputEBML::readElement(){
|
bool InputEBML::readElement(){
|
||||||
ptr.size() = 0;
|
ptr.truncate(0);
|
||||||
readingMinimal = true;
|
readingMinimal = true;
|
||||||
uint32_t needed = EBML::Element::needBytes(ptr, ptr.size(), readingMinimal);
|
uint32_t needed = EBML::Element::needBytes(ptr, ptr.size(), readingMinimal);
|
||||||
while (ptr.size() < needed){
|
while (ptr.size() < needed){
|
||||||
|
@ -125,9 +125,9 @@ namespace Mist{
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
ptr.append(0, toRead);
|
||||||
}
|
}
|
||||||
totalBytes += toRead;
|
totalBytes += toRead;
|
||||||
ptr.size() = needed;
|
|
||||||
needed = EBML::Element::needBytes(ptr, ptr.size(), readingMinimal);
|
needed = EBML::Element::needBytes(ptr, ptr.size(), readingMinimal);
|
||||||
if (ptr.size() >= needed){
|
if (ptr.size() >= needed){
|
||||||
// Make sure TrackEntry types are read whole
|
// Make sure TrackEntry types are read whole
|
||||||
|
|
Loading…
Add table
Reference in a new issue