int32_t ExpandNalUnitList (PAccessUnit* ppAu, const int32_t kiOrgSize, const int32_t kiExpSize) { if (kiExpSize <= kiOrgSize) return 1; else { PAccessUnit pTmp = NULL; int32_t iIdx = 0; if (MemInitNalList (&pTmp, kiExpSize)) // request new list with expanding return 1; do { memcpy (pTmp->pNalUnitsList[iIdx], (*ppAu)->pNalUnitsList[iIdx], sizeof (SNalUnit)); //confirmed_safe_unsafe_usage ++ iIdx; } while (iIdx < kiOrgSize); pTmp->uiCountUnitsNum = kiExpSize; pTmp->uiAvailUnitsNum = (*ppAu)->uiAvailUnitsNum; pTmp->uiActualUnitsNum = (*ppAu)->uiActualUnitsNum; pTmp->uiEndPos = (*ppAu)->uiEndPos; pTmp->bCompletedAuFlag = (*ppAu)->bCompletedAuFlag; MemFreeNalList (ppAu); // free old list *ppAu = pTmp; return 0; } }
int32_t ExpandNalUnitList (PAccessUnit* ppAu, const int32_t kiOrgSize, const int32_t kiExpSize, CMemoryAlign* pMa) { if (kiExpSize <= kiOrgSize) return ERR_INFO_INVALID_PARAM; else { PAccessUnit pTmp = NULL; int32_t iIdx = 0; int32_t iRet = ERR_NONE; if ((iRet = MemInitNalList (&pTmp, kiExpSize, pMa)) != ERR_NONE) // request new list with expanding return iRet; do { memcpy (pTmp->pNalUnitsList[iIdx], (*ppAu)->pNalUnitsList[iIdx], sizeof (SNalUnit)); //confirmed_safe_unsafe_usage ++ iIdx; } while (iIdx < kiOrgSize); pTmp->uiCountUnitsNum = kiExpSize; pTmp->uiAvailUnitsNum = (*ppAu)->uiAvailUnitsNum; pTmp->uiActualUnitsNum = (*ppAu)->uiActualUnitsNum; pTmp->uiEndPos = (*ppAu)->uiEndPos; pTmp->bCompletedAuFlag = (*ppAu)->bCompletedAuFlag; MemFreeNalList (ppAu, pMa); // free old list *ppAu = pTmp; return ERR_NONE; } }