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

Function DecodeSpsSvcExt

codec/decoder/core/src/au_parser.cpp:722–791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

720
721
722int32_t DecodeSpsSvcExt (PWelsDecoderContext pCtx, PSubsetSps pSpsExt, PBitStringAux pBs) {
723 PSpsSvcExt pExt = NULL;
724 uint32_t uiCode;
725 int32_t iCode;
726
727 pExt = &pSpsExt->sSpsSvcExt;
728
729 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode)); //inter_layer_deblocking_filter_control_present_flag
730 pExt->bInterLayerDeblockingFilterCtrlPresentFlag = !!uiCode;
731 WELS_READ_VERIFY (BsGetBits (pBs, 2, &uiCode)); //extended_spatial_scalability_idc
732 pExt->uiExtendedSpatialScalability = uiCode;
733 if (pExt->uiExtendedSpatialScalability > 2) {
734 WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
735 "DecodeSpsSvcExt():extended_spatial_scalability (%d) != 0, ESS not supported!",
736 pExt->uiExtendedSpatialScalability);
737 return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_ESS);
738 }
739
740 pExt->uiChromaPhaseXPlus1Flag =
741 0; // FIXME: Incoherent with JVT X201 standard (= 1), but conformance to JSVM (= 0) implementation.
742 pExt->uiChromaPhaseYPlus1 = 1;
743
744 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode)); //chroma_phase_x_plus1_flag
745 pExt->uiChromaPhaseXPlus1Flag = uiCode;
746 WELS_READ_VERIFY (BsGetBits (pBs, 2, &uiCode)); //chroma_phase_y_plus1
747 pExt->uiChromaPhaseYPlus1 = uiCode;
748
749 pExt->uiSeqRefLayerChromaPhaseXPlus1Flag = pExt->uiChromaPhaseXPlus1Flag;
750 pExt->uiSeqRefLayerChromaPhaseYPlus1 = pExt->uiChromaPhaseYPlus1;
751 memset (&pExt->sSeqScaledRefLayer, 0, sizeof (SPosOffset));
752
753 if (pExt->uiExtendedSpatialScalability == 1) {
754 SPosOffset* const kpPos = &pExt->sSeqScaledRefLayer;
755 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode)); //seq_ref_layer_chroma_phase_x_plus1_flag
756 pExt->uiSeqRefLayerChromaPhaseXPlus1Flag = uiCode;
757 WELS_READ_VERIFY (BsGetBits (pBs, 2, &uiCode)); //seq_ref_layer_chroma_phase_y_plus1
758 pExt->uiSeqRefLayerChromaPhaseYPlus1 = uiCode;
759
760 WELS_READ_VERIFY (BsGetSe (pBs, &iCode)); //seq_scaled_ref_layer_left_offset
761 kpPos->iLeftOffset = iCode;
762 WELS_CHECK_SE_BOTH_WARNING (kpPos->iLeftOffset, SUBSET_SPS_SEQ_SCALED_REF_LAYER_LEFT_OFFSET_MIN,
763 SUBSET_SPS_SEQ_SCALED_REF_LAYER_LEFT_OFFSET_MAX, "seq_scaled_ref_layer_left_offset");
764 WELS_READ_VERIFY (BsGetSe (pBs, &iCode)); //seq_scaled_ref_layer_top_offset
765 kpPos->iTopOffset = iCode;
766 WELS_CHECK_SE_BOTH_WARNING (kpPos->iTopOffset, SUBSET_SPS_SEQ_SCALED_REF_LAYER_TOP_OFFSET_MIN,
767 SUBSET_SPS_SEQ_SCALED_REF_LAYER_TOP_OFFSET_MAX, "seq_scaled_ref_layer_top_offset");
768 WELS_READ_VERIFY (BsGetSe (pBs, &iCode)); //seq_scaled_ref_layer_right_offset
769 kpPos->iRightOffset = iCode;
770 WELS_CHECK_SE_BOTH_WARNING (kpPos->iRightOffset, SUBSET_SPS_SEQ_SCALED_REF_LAYER_RIGHT_OFFSET_MIN,
771 SUBSET_SPS_SEQ_SCALED_REF_LAYER_RIGHT_OFFSET_MAX, "seq_scaled_ref_layer_right_offset");
772 WELS_READ_VERIFY (BsGetSe (pBs, &iCode)); //seq_scaled_ref_layer_bottom_offset
773 kpPos->iBottomOffset = iCode;
774 WELS_CHECK_SE_BOTH_WARNING (kpPos->iBottomOffset, SUBSET_SPS_SEQ_SCALED_REF_LAYER_BOTTOM_OFFSET_MIN,
775 SUBSET_SPS_SEQ_SCALED_REF_LAYER_BOTTOM_OFFSET_MAX, "seq_scaled_ref_layer_bottom_offset");
776 }
777
778 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode)); //seq_tcoeff_level_prediction_flag
779 pExt->bSeqTCoeffLevelPredFlag = !!uiCode;

Callers 1

ParseSpsFunction · 0.85

Calls 4

BsGetOneBitFunction · 0.85
BsGetBitsFunction · 0.85
WelsLogFunction · 0.85
BsGetSeFunction · 0.85

Tested by

no test coverage detected