Merge pull request #153 from licaiguo/fix-empty-packets
fix crash caused by empty packets and add more checks -- review request #44
This commit is contained in:
commit
9efbef67b9
@ -479,7 +479,8 @@ int32_t ParseNonVclNal (PWelsDecoderContext pCtx, uint8_t* pRbsp, const int32_t
|
|||||||
int32_t iPicHeight = 0;
|
int32_t iPicHeight = 0;
|
||||||
int32_t iBitSize = 0;
|
int32_t iBitSize = 0;
|
||||||
int32_t iErr = ERR_NONE;
|
int32_t iErr = ERR_NONE;
|
||||||
|
if (kiSrcLen <= 0)
|
||||||
|
return iErr;
|
||||||
pBs = &pCtx->sBs; // SBitStringAux instance for non VCL NALs decoding
|
pBs = &pCtx->sBs; // SBitStringAux instance for non VCL NALs decoding
|
||||||
iBitSize = (kiSrcLen << 3) - BsGetTrailingBits (pRbsp + kiSrcLen - 1); // convert into bit
|
iBitSize = (kiSrcLen << 3) - BsGetTrailingBits (pRbsp + kiSrcLen - 1); // convert into bit
|
||||||
eNalType = pCtx->sCurNalHead.eNalUnitType;
|
eNalType = pCtx->sCurNalHead.eNalUnitType;
|
||||||
|
@ -403,7 +403,7 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool_t bFirstSliceInLayer, PN
|
|||||||
|
|
||||||
iNextMbXyIndex = pSliceHeader->iFirstMbInSlice;
|
iNextMbXyIndex = pSliceHeader->iFirstMbInSlice;
|
||||||
|
|
||||||
if (iNextMbXyIndex >= kiCountNumMb) {
|
if ((iNextMbXyIndex < 0) || (iNextMbXyIndex >= kiCountNumMb)) {
|
||||||
WelsLog (pCtx, WELS_LOG_ERROR,
|
WelsLog (pCtx, WELS_LOG_ERROR,
|
||||||
"WelsDecodeSlice()::iFirstMbInSlice(%d) > pSps->kiTotalMb(%d). ERROR!!! resolution change....\n",
|
"WelsDecodeSlice()::iFirstMbInSlice(%d) > pSps->kiTotalMb(%d). ERROR!!! resolution change....\n",
|
||||||
iNextMbXyIndex, kiCountNumMb);
|
iNextMbXyIndex, kiCountNumMb);
|
||||||
|
@ -690,7 +690,7 @@ int32_t SyncPictureResolutionExt (PWelsDecoderContext pCtx, const int32_t kiMbWi
|
|||||||
*/
|
*/
|
||||||
void_t UpdateMaxPictureResolution (PWelsDecoderContext pCtx, const int32_t kiCurWidth, const int32_t kiCurHeight) {
|
void_t UpdateMaxPictureResolution (PWelsDecoderContext pCtx, const int32_t kiCurWidth, const int32_t kiCurHeight) {
|
||||||
//any dimension larger than that of current dimension, should modify the max-dimension
|
//any dimension larger than that of current dimension, should modify the max-dimension
|
||||||
if (kiCurWidth > pCtx->iMaxWidthInSps || kiCurHeight > pCtx->iMaxHeightInSps) {
|
if ((kiCurWidth * kiCurHeight) > (pCtx->iMaxWidthInSps * pCtx->iMaxHeightInSps)) {
|
||||||
pCtx->iMaxWidthInSps = kiCurWidth;
|
pCtx->iMaxWidthInSps = kiCurWidth;
|
||||||
pCtx->iMaxHeightInSps = kiCurHeight;
|
pCtx->iMaxHeightInSps = kiCurHeight;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user