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

Function WelsWritePpsSyntax

codec/encoder/core/src/au_set.cpp:406–474  ·  view source on GitHub ↗

! ************************************************************************************* * \brief to write Picture Parameter Set (PPS) * * \param pPps pPps * \param pBitStringAux bitstream writer auxiliary * * \return 0 - successed * 1 - failed * * \note Call it in case EWelsNalUnitType is PPS. **************************************************************

Source from the content-addressed store, hash-verified

404 *************************************************************************************
405 */
406int32_t WelsWritePpsSyntax (SWelsPPS* pPps, SBitStringAux* pBitStringAux,
407 IWelsParametersetStrategy* pParametersetStrategy) {
408 SBitStringAux* pLocalBitStringAux = pBitStringAux;
409
410 BsWriteUE (pLocalBitStringAux, pPps->iPpsId + pParametersetStrategy->GetPpsIdOffset (pPps->iPpsId));
411 BsWriteUE (pLocalBitStringAux, pPps->iSpsId + pParametersetStrategy->GetSpsIdOffset (pPps->iPpsId, pPps->iSpsId));
412
413 BsWriteOneBit (pLocalBitStringAux, pPps->bEntropyCodingModeFlag);
414 BsWriteOneBit (pLocalBitStringAux, false/*pPps->bPicOrderPresentFlag*/);
415
416#ifdef DISABLE_FMO_FEATURE
417 BsWriteUE (pLocalBitStringAux, 0/*pPps->uiNumSliceGroups - 1*/);
418#else
419 BsWriteUE (pLocalBitStringAux, pPps->uiNumSliceGroups - 1);
420 if (pPps->uiNumSliceGroups > 1) {
421 uint32_t i, uiNumBits;
422
423 BsWriteUE (pLocalBitStringAux, pPps->uiSliceGroupMapType);
424
425 switch (pPps->uiSliceGroupMapType) {
426 case 0:
427 for (i = 0; i < pPps->uiNumSliceGroups; i ++) {
428 BsWriteUE (pLocalBitStringAux, pPps->uiRunLength[i] - 1);
429 }
430 break;
431 case 2:
432 for (i = 0; i < pPps->uiNumSliceGroups; i ++) {
433 BsWriteUE (pLocalBitStringAux, pPps->uiTopLeft[i]);
434 BsWriteUE (pLocalBitStringAux, pPps->uiBottomRight[i]);
435 }
436 break;
437 case 3:
438 case 4:
439 case 5:
440 BsWriteOneBit (pLocalBitStringAux, pPps->bSliceGroupChangeDirectionFlag);
441 BsWriteUE (pLocalBitStringAux, pPps->uiSliceGroupChangeRate - 1);
442 break;
443 case 6:
444 BsWriteUE (pLocalBitStringAux, pPps->uiPicSizeInMapUnits - 1);
445 uiNumBits = 0;///////////////////WELS_CEILLOG2(pPps->uiPicSizeInMapUnits);
446 for (i = 0; i < pPps->uiPicSizeInMapUnits; i ++) {
447 BsWriteBits (pLocalBitStringAux, uiNumBits, pPps->uiSliceGroupId[i]);
448 }
449 break;
450 default:
451 break;
452 }
453 }
454#endif//!DISABLE_FMO_FEATURE
455
456 BsWriteUE (pLocalBitStringAux, 0/*pPps->uiNumRefIdxL0Active - 1*/);
457 BsWriteUE (pLocalBitStringAux, 0/*pPps->uiNumRefIdxL1Active - 1*/);
458
459
460 BsWriteOneBit (pLocalBitStringAux, false/*pPps->bWeightedPredFlag*/);
461 BsWriteBits (pLocalBitStringAux, 2, 0/*pPps->uiWeightedBiPredIdc*/);
462
463 BsWriteSE (pLocalBitStringAux, pPps->iPicInitQp - 26);

Callers 1

WelsWriteOnePPSFunction · 0.85

Calls 7

BsWriteUEFunction · 0.85
BsWriteOneBitFunction · 0.85
BsWriteBitsFunction · 0.85
BsWriteSEFunction · 0.85
BsRbspTrailingBitsFunction · 0.85
GetPpsIdOffsetMethod · 0.80
GetSpsIdOffsetMethod · 0.80

Tested by

no test coverage detected