MCPcopy Create free account
hub / github.com/cisco/openh264 / WelsRcCheckFrameStatus

Function WelsRcCheckFrameStatus

codec/encoder/core/src/ratectl.cpp:870–938  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

868}
869
870bool WelsRcCheckFrameStatus (sWelsEncCtx* pEncCtx, long long uiTimeStamp, int32_t iSpatialNum, int32_t iCurDid) {
871
872 bool bSkipMustFlag = false;
873
874 SSpatialPicIndex* pSpatialIndexMap = &pEncCtx->sSpatialIndexMap[0];
875
876 //simul_cast AVC control
877 if (pEncCtx->pSvcParam->bSimulcastAVC) {
878 //check target_br skip and update info
879 int32_t iDidIdx = iCurDid;
880 if (pEncCtx->pFuncList->pfRc.pfWelsRcPicDelayJudge) {
881 pEncCtx->pFuncList->pfRc.pfWelsRcPicDelayJudge (pEncCtx, uiTimeStamp, iDidIdx);
882 }
883 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) {
884 bSkipMustFlag = true;
885 }
886 //check max_br skip
887 if (pEncCtx->pFuncList->pfRc.pfWelsCheckSkipBasedMaxbr) {
888 if ((!bSkipMustFlag) && (pEncCtx->pSvcParam->sSpatialLayers[iDidIdx].iMaxSpatialBitrate != UNSPECIFIED_BIT_RATE)) {
889 pEncCtx->pFuncList->pfRc.pfWelsCheckSkipBasedMaxbr (pEncCtx, uiTimeStamp, iDidIdx);
890 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) {
891 bSkipMustFlag = true;
892
893 }
894 }
895 }
896 if (bSkipMustFlag) {
897 pEncCtx->pWelsSvcRc[iDidIdx].uiLastTimeStamp = uiTimeStamp;
898 pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag = false;
899 pEncCtx->pWelsSvcRc[iDidIdx].iContinualSkipFrames++;
900 return true;
901 }
902 } else { //SVC control
903 for (int32_t i = 0; i < iSpatialNum; i++) {
904 int32_t iDidIdx = (pSpatialIndexMap + i)->iDid;
905 //check target_br skip and update info
906
907 if (pEncCtx->pFuncList->pfRc.pfWelsRcPicDelayJudge) {
908 pEncCtx->pFuncList->pfRc.pfWelsRcPicDelayJudge (pEncCtx, uiTimeStamp, iDidIdx);
909 }
910 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) {
911 bSkipMustFlag = true;
912 }
913 //check max_br skip
914 if (pEncCtx->pFuncList->pfRc.pfWelsCheckSkipBasedMaxbr) {
915 if ((!bSkipMustFlag) && (pEncCtx->pSvcParam->sSpatialLayers[iDidIdx].iMaxSpatialBitrate != UNSPECIFIED_BIT_RATE)) {
916 pEncCtx->pFuncList->pfRc.pfWelsCheckSkipBasedMaxbr (pEncCtx, uiTimeStamp, iDidIdx);
917 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) {
918 bSkipMustFlag = true;
919 }
920 }
921 }
922 if (bSkipMustFlag) {
923 break;
924 }
925 }
926
927 if (bSkipMustFlag) {

Callers 1

PrepareEncodeFrameFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected