Fixed HLS edge case handling.
This commit is contained in:
parent
f9201cbf9a
commit
3c8cc43ad9
1 changed files with 15 additions and 6 deletions
|
@ -88,6 +88,7 @@ namespace Mist {
|
||||||
unsigned int currPack = 0;
|
unsigned int currPack = 0;
|
||||||
unsigned int ThisNaluSize = 0;
|
unsigned int ThisNaluSize = 0;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
unsigned int nalLead = 0;
|
||||||
|
|
||||||
while (currPack <= splitCount){
|
while (currPack <= splitCount){
|
||||||
unsigned int alreadySent = 0;
|
unsigned int alreadySent = 0;
|
||||||
|
@ -108,6 +109,12 @@ namespace Mist {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (i + 4 < (unsigned int)dataLen){
|
while (i + 4 < (unsigned int)dataLen){
|
||||||
|
if (nalLead){
|
||||||
|
fillPacket("\000\000\000\001"+4-nalLead,nalLead);
|
||||||
|
i += nalLead;
|
||||||
|
alreadySent += nalLead;
|
||||||
|
nalLead = 0;
|
||||||
|
}
|
||||||
if (!ThisNaluSize){
|
if (!ThisNaluSize){
|
||||||
ThisNaluSize = (dataPointer[i] << 24) + (dataPointer[i+1] << 16) + (dataPointer[i+2] << 8) + dataPointer[i+3];
|
ThisNaluSize = (dataPointer[i] << 24) + (dataPointer[i+1] << 16) + (dataPointer[i+2] << 8) + dataPointer[i+3];
|
||||||
if (ThisNaluSize + i + 4 > (unsigned int)dataLen){
|
if (ThisNaluSize + i + 4 > (unsigned int)dataLen){
|
||||||
|
@ -115,13 +122,15 @@ namespace Mist {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (alreadySent + 4 > watKunnenWeIn1Ding){
|
if (alreadySent + 4 > watKunnenWeIn1Ding){
|
||||||
/// \todo Houd rekening met deze relatief zelfdzame sub-optimale situatie
|
nalLead = 4 - watKunnenWeIn1Ding-alreadySent;
|
||||||
//Kom op, wat is de kans nou? ~_~
|
fillPacket("\000\000\000\001",watKunnenWeIn1Ding-alreadySent);
|
||||||
FAIL_MSG("Encountered lazy coders. Maybe someone should fix this.");
|
i += watKunnenWeIn1Ding-alreadySent;
|
||||||
|
alreadySent += watKunnenWeIn1Ding-alreadySent;
|
||||||
|
}else{
|
||||||
|
fillPacket("\000\000\000\001",4);
|
||||||
|
alreadySent += 4;
|
||||||
|
i += 4;
|
||||||
}
|
}
|
||||||
fillPacket("\000\000\000\001",4);
|
|
||||||
alreadySent += 4;
|
|
||||||
i += 4;
|
|
||||||
}
|
}
|
||||||
if (alreadySent + ThisNaluSize > watKunnenWeIn1Ding){
|
if (alreadySent + ThisNaluSize > watKunnenWeIn1Ding){
|
||||||
fillPacket(dataPointer+i,watKunnenWeIn1Ding-alreadySent);
|
fillPacket(dataPointer+i,watKunnenWeIn1Ding-alreadySent);
|
||||||
|
|
Loading…
Add table
Reference in a new issue