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

Function WelsSliceHeaderExtInit

codec/encoder/core/src/svc_encode_slice.cpp:89–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89void WelsSliceHeaderExtInit (sWelsEncCtx* pEncCtx, SDqLayer* pCurLayer, SSlice* pSlice) {
90 SSliceHeaderExt* pCurSliceExt = &pSlice->sSliceHeaderExt;
91 SSliceHeader* pCurSliceHeader = &pCurSliceExt->sSliceHeader;
92 SSpatialLayerInternal* pParamInternal = &pEncCtx->pSvcParam->sDependencyLayers[pEncCtx->uiDependencyId];
93 pCurSliceHeader->eSliceType = pEncCtx->eSliceType;
94
95 pCurSliceExt->bStoreRefBasePicFlag = false;
96
97 pCurSliceHeader->iFrameNum = pParamInternal->iFrameNum;
98 pCurSliceHeader->uiIdrPicId = pParamInternal->uiIdrPicId;
99 pCurSliceHeader->iPicOrderCntLsb = pEncCtx->pEncPic->iFramePoc; // 0
100
101 if (P_SLICE == pEncCtx->eSliceType) {
102 pCurSliceHeader->uiNumRefIdxL0Active = 1;
103 if (pCurSliceHeader->uiRefCount > 0 &&
104 pCurSliceHeader->uiRefCount <= pCurLayer->sLayerInfo.pSpsP->iNumRefFrames) {
105 pCurSliceHeader->bNumRefIdxActiveOverrideFlag = true;
106 pCurSliceHeader->uiNumRefIdxL0Active = pCurSliceHeader->uiRefCount;
107 }
108 //to solve mismatch between debug&release
109 else {
110 pCurSliceHeader->bNumRefIdxActiveOverrideFlag = false;
111 }
112 }
113
114 pCurSliceHeader->iSliceQpDelta = pEncCtx->iGlobalQp - pCurLayer->sLayerInfo.pPpsP->iPicInitQp;
115
116 //for deblocking initial
117 pCurSliceHeader->uiDisableDeblockingFilterIdc = pCurLayer->iLoopFilterDisableIdc;
118 pCurSliceHeader->iSliceAlphaC0Offset =
119 pCurLayer->iLoopFilterAlphaC0Offset; // need update iSliceAlphaC0Offset & iSliceBetaOffset for pSlice-header if loop_filter_idc != 1
120 pCurSliceHeader->iSliceBetaOffset = pCurLayer->iLoopFilterBetaOffset;
121 pCurSliceExt->uiDisableInterLayerDeblockingFilterIdc = pCurLayer->uiDisableInterLayerDeblockingFilterIdc;
122
123 if (pSlice->bSliceHeaderExtFlag) {
124 WelsSliceHeaderScalExtInit (pCurLayer, pSlice);
125 } else {
126 //both adaptive and default flags should equal to 0.
127 pCurSliceExt->bAdaptiveBaseModeFlag =
128 pCurSliceExt->bAdaptiveMotionPredFlag =
129 pCurSliceExt->bAdaptiveResidualPredFlag = false;
130
131 pCurSliceExt->bDefaultBaseModeFlag =
132 pCurSliceExt->bDefaultMotionPredFlag =
133 pCurSliceExt->bDefaultResidualPredFlag = false;
134 }
135}
136
137
138void UpdateMbNeighbor (SDqLayer* pCurDq, SMB* pMb, const int32_t kiMbWidth, uint16_t uiSliceIdc) {

Callers 1

WelsCodeOneSliceFunction · 0.85

Calls 1

Tested by

no test coverage detected