diff --git a/doc/software-manual.tex b/doc/software-manual.tex index 5140b2ed6948fbcaa5f091699416160f76c5335f..ce3a86419367867f2cd7bb0b0ada75ff01f62442 100644 --- a/doc/software-manual.tex +++ b/doc/software-manual.tex @@ -1000,40 +1000,88 @@ For --profile=main-RExt, specifies the value to use to derive the general_max_bi For --profile=main-RExt, specifies the chroma-format to use for the general profile constraints for RExt profiles; when 0, use the value of ChromaFormatIDC. \\ -\Option{IntraConstraintFlag} & +\Option{GciPresentFlag} & +%\ShortOption{\None} & +\Default{1} & +Specifies the value of gci_present_flag +\\ + +\Option{IntraOnlyConstraintFlag} & %\ShortOption{\None} & \Default{false} & -For --profile=main-RExt, specifies the value of general_intra_constraint_flag to use for RExt profiles. +Specifies the value of gci_intra_only_constraint_flag +\\ + +\Option{AllLayersIndependentConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of all_layers_independent_constraint_flag \\ \Option{OnePictureOnlyConstraintFlag} & %\ShortOption{\None} & \Default{false} & -Specifies the value of general_one_picture_only_constraint_flag. +Specifies the value of general_one_picture_only_constraint_flag \\ -\Option{LowerBitRateConstraintFlag} & +\Option{MaxBitDepthConstraintIdc} & %\ShortOption{\None} & -\Default{true} & -Specifies the value of general_lower_bit_constraint_flag to use for RExt profiles. +\Default{16} & +Specifies the value of 16 minus gci_sixteen_minus_max_bitdepth_constraint_idc \\ -\Option{NoResChangeInClvsConstraintFlag} & +\Option{MaxChromaFormatConstraintIdc} & +%\ShortOption{\None} & +\Default{3} & +Specifies the value of 3 minus gci_three_minus_max_chroma_format_constraint_idc +\\ + +\Option{TrailConstraintFlag} & %\ShortOption{\None} & \Default{false} & -Specifies the value of no_res_change_in_clvs_constraint_flag +Specifies the value of gci_no_trail_constraint_flag \\ -\Option{SingleLayerConstraintFlag} & +\Option{StsaConstraintFlag} & %\ShortOption{\None} & \Default{false} & -Specifies the value of single_layer_constraint_flag +Specifies the value of gci_no_stsa_constraint_flag \\ -\Option{AllLayersIndependentConstraintFlag} & +\Option{RaslConstraintFlag} & %\ShortOption{\None} & \Default{false} & -Specifies the value of all_layers_independent_constraint_flag +Specifies the value of gci_no_rasl_constraint_flag +\\ + +\Option{RadlConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_radl_constraint_flag +\\ + +\Option{IdrConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_idr_constraint_flag +\\ + +\Option{CraConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_cra_constraint_flag +\\ + +\Option{GdrConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_gdr_constraint_flag +\\ + +\Option{ApsConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_aps_constraint_flag \\ \Option{OneTilePerPicConstraintFlag} & @@ -1060,24 +1108,252 @@ Specifies the value of one_slice_per_pic_constraint_flag Specifies the value of one_subpic_per_pic_constraint_flag \\ +\Option{PartitionConstraintsOverrideConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_partition_constraints_override_constraint_flag +\\ + +\Option{QtbttDualTreeIntraConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_qtbtt_dual_tree_intra_constraint_flag +\\ + +\Option{PaletteConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_palette_constraint_flag +\\ + +\Option{IbcConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_ibc_constraint_flag +\\ + +\Option{IspConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_isp_constraint_flag +\\ + +\Option{MrlConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_mrl_constraint_flag +\\ + +\Option{MipConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_mip_constraint_flag +\\ + +\Option{CclmConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_cclm_constraint_flag +\\ + +\Option{NoResChangeInClvsConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_res_change_in_clvs_constraint_flag +\\ + +\Option{RefWraparoundConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_ref_wraparound_constraint_flag +\\ + +\Option{TemporalMvpConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_temporal_mvp_constraint_flag +\\ + +\Option{SbtmvpConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_sbtmvp_constraint_flag +\\ + +\Option{AmvrConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_amvr_constraint_flag +\\ + +\Option{SmvdConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_smvd_constraint_flag +\\ + +\Option{BdofConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_bdof_constraint_flag +\\ + +\Option{DmvrConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_dmvr_constraint_flag +\\ + +\Option{MmvdConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_mmvd_constraint_flag +\\ + +\Option{AffineMotionConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_affine_motion_constraint_flag +\\ + +\Option{ProfConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_prof_constraint_flag +\\ + +\Option{BcwConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_bcw_constraint_flag +\\ + +\Option{CiipConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_ciip_constraint_flag +\\ + +\Option{GpmConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_gpm_constraint_flag +\\ + +\Option{TransformSkipConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_transform_skip_constraint_flag +\\ + +\Option{BDPCMConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_bdpcm_constraint_flag +\\ + +\Option{MtsConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_mts_constraint_flag +\\ + +\Option{LfnstConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_lfnst_constraint_flag +\\ + +\Option{JointCbCrConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_joint_cbcr_constraint_flag +\\ + +\Option{SbtConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_sbt_constraint_flag +\\ + +\Option{ActConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_act_constraint_flag +\\ + \Option{ExplicitScaleListConstraintFlag} & %\ShortOption{\None} & \Default{false} & Specifies the value of gci_no_explicit_scaling_list_constraint_flag \\ +\Option{DepQuantConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_dep_quant_constraint_flag +\\ + +\Option{SignDataHidingConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_sign_data_hiding_constraint_flag +\\ + +\Option{QpDeltaConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_cu_qp_delta_constraint_flag +\\ + +\Option{SaoConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_sao_constraint_flag +\\ + +\Option{AlfConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_alf_constraint_flag +\\ + +\Option{CCAlfConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_ccalf_constraint_flag +\\ + +\Option{LmcsConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_lmcs_constraint_flag +\\ + +\Option{LadfConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_ladf_constraint_flag +\\ + \Option{VirtualBoundaryConstraintFlag} & %\ShortOption{\None} & \Default{false} & Specifies the value of gci_no_virtual_boundaries_constraint_flag \\ -\Option{FrameOnly} & + +\Option{SingleLayerConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of single_layer_constraint_flag +\\ + +\Option{FrameOnlyConstraintFlag} & %\ShortOption{\None} & \Default{false} & Specifies the value of general_frame_only_constraint_flag \\ - \end{OptionTableNoShorthand} @@ -2924,7 +3200,7 @@ Specifies the value of general_progressive_source_flag \Default{false} & Specifies the value of general_interlaced_source_flag \\ -\Option{NonPackedSource} & +\Option{NonPackedSourceConstraintFlag} & %\ShortOption{\None} & \Default{false} & Specifies the value of general_non_packed_constraint_flag diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index b7f806bea7fa4386a0e2425f43924a29f335af12..8255d06f0ece9cda6d76e26262d45ea43e09f83a 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -219,17 +219,6 @@ void EncApp::xInitLibCfg() { m_cEncLib.setSubProfile(i, m_subProfile[i]); } - m_cEncLib.setNonPackedConstraintFlag ( m_nonPackedConstraintFlag); - m_cEncLib.setNonProjectedConstraintFlag ( m_nonProjectedConstraintFlag ); - m_cEncLib.setSingleLayerConstraintFlag ( m_singleLayerConstraintFlag ); - m_cEncLib.setAllLayersIndependentConstraintFlag ( m_allLayersIndependentConstraintFlag ); - m_cEncLib.setNoResChangeInClvsConstraintFlag ( m_noResChangeInClvsConstraintFlag ); - m_cEncLib.setOneTilePerPicConstraintFlag ( m_oneTilePerPicConstraintFlag ); - m_cEncLib.setPicHeaderInSliceHeaderConstraintFlag ( m_picHeaderInSliceHeaderConstraintFlag ); - m_cEncLib.setOneSlicePerPicConstraintFlag ( m_oneSlicePerPicConstraintFlag ); - m_cEncLib.setOneSubpicPerPicConstraintFlag ( m_oneSubpicPerPicConstraintFlag ); - m_cEncLib.setFrameOnlyConstraintFlag ( m_frameOnlyConstraintFlag); - m_cEncLib.setIntraConstraintFlag ( m_intraConstraintFlag ); m_cEncLib.setPrintMSEBasedSequencePSNR ( m_printMSEBasedSequencePSNR); m_cEncLib.setPrintFrameMSE ( m_printFrameMSE); @@ -253,67 +242,226 @@ void EncApp::xInitLibCfg() //====== SPS constraint flags ======= #if JVET_S0179_CONDITIONAL_SIGNAL_GCI - m_cEncLib.setGciPresentFlag (true); + m_cEncLib.setGciPresentFlag ( m_gciPresentFlag ); #endif - m_cEncLib.setOnePictureOnlyConstraintFlag ( m_onePictureOnlyConstraintFlag ); - m_cEncLib.setIntraOnlyConstraintFlag ( m_intraConstraintFlag ); // NOTE: This setting is not used, and is confused with setIntraConstraintFlag -#if JVET_S0094_CHROMAFORMAT_BITDEPTH_CONSTRAINT - m_cEncLib.setMaxBitDepthConstraintIdc ( m_bitDepthConstraint ); -#else - m_cEncLib.setMaxBitDepthConstraintIdc ( m_bitDepthConstraint - 8 ); -#endif - m_cEncLib.setMaxChromaFormatConstraintIdc ( m_chromaFormatConstraint ); - m_cEncLib.setFrameConstraintFlag ( m_bFrameConstraintFlag ); // NOTE: This setting is neither used nor setup, and is confused with setFrameOnlyConstraintFlag - m_cEncLib.setNoQtbttDualTreeIntraConstraintFlag ( !m_dualTree ); - m_cEncLib.setNoPartitionConstraintsOverrideConstraintFlag ( !m_SplitConsOverrideEnabledFlag ); - m_cEncLib.setNoSaoConstraintFlag ( !m_bUseSAO ); - m_cEncLib.setNoAlfConstraintFlag ( !m_alf ); - m_cEncLib.setNoCCAlfConstraintFlag ( !m_ccalf ); - m_cEncLib.setNoRefWraparoundConstraintFlag ( m_bNoRefWraparoundConstraintFlag ); - m_cEncLib.setNoTemporalMvpConstraintFlag ( m_TMVPModeId ? false : true ); - m_cEncLib.setNoSbtmvpConstraintFlag ( m_SubPuMvpMode ? false : true ); - m_cEncLib.setNoAmvrConstraintFlag ( m_bNoAmvrConstraintFlag ); - m_cEncLib.setNoBdofConstraintFlag ( !m_BIO ); - m_cEncLib.setNoDmvrConstraintFlag ( !m_DMVR ); - m_cEncLib.setNoCclmConstraintFlag ( m_LMChroma ? false : true ); - m_cEncLib.setNoMtsConstraintFlag ( (m_MTS || m_MTSImplicit) ? false : true ); - m_cEncLib.setNoSbtConstraintFlag ( !m_SBT ); - m_cEncLib.setNoAffineMotionConstraintFlag ( !m_Affine ); - m_cEncLib.setNoBcwConstraintFlag ( !m_bcw ); - m_cEncLib.setNoIbcConstraintFlag ( m_IBCMode ? false : true ); - m_cEncLib.setNoCiipConstraintFlag ( !m_ciip ); - m_cEncLib.setNoGeoConstraintFlag ( !m_Geo ); - m_cEncLib.setNoLadfConstraintFlag ( !m_LadfEnabed ); - m_cEncLib.setNoTransformSkipConstraintFlag ( !m_useTransformSkip ); - m_cEncLib.setNoBDPCMConstraintFlag ( !m_useBDPCM ); - m_cEncLib.setNoJointCbCrConstraintFlag (!m_JointCbCrMode); - m_cEncLib.setNoQpDeltaConstraintFlag ( m_bNoQpDeltaConstraintFlag ); - m_cEncLib.setNoDepQuantConstraintFlag ( !m_depQuantEnabledFlag); - m_cEncLib.setNoSignDataHidingConstraintFlag ( !m_signDataHidingEnabledFlag ); - m_cEncLib.setNoTrailConstraintFlag ( m_iIntraPeriod == 1 ); - m_cEncLib.setNoStsaConstraintFlag ( m_iIntraPeriod == 1 || !xHasNonZeroTemporalID() ); - m_cEncLib.setNoRaslConstraintFlag ( m_iIntraPeriod == 1 || !xHasLeadingPicture() ); - m_cEncLib.setNoRadlConstraintFlag ( m_iIntraPeriod == 1 || !xHasLeadingPicture() ); - m_cEncLib.setNoIdrConstraintFlag ( false ); // Not yet possible to encode bitstream starting with a GDR picture - m_cEncLib.setNoCraConstraintFlag ( m_iDecodingRefreshType != 1 ); - m_cEncLib.setNoGdrConstraintFlag ( false ); // Not yet possible to encode GDR using config parameters - m_cEncLib.setNoApsConstraintFlag ( !m_alf && !m_lmcsEnabled && m_useScalingListId == SCALING_LIST_OFF); - m_cEncLib.setNoMrlConstraintFlag ( !m_MRL ); - m_cEncLib.setNoIspConstraintFlag ( !m_ISP ); - m_cEncLib.setNoMipConstraintFlag ( !m_MIP ); - m_cEncLib.setNoLfnstConstraintFlag ( !m_LFNST ); - m_cEncLib.setNoMmvdConstraintFlag ( !m_MMVD ); - m_cEncLib.setNoSmvdConstraintFlag ( !m_SMVD ); - m_cEncLib.setNoProfConstraintFlag ( !m_PROF ); - m_cEncLib.setNoPaletteConstraintFlag ( m_PLTMode == 1 ? false : true ); - m_cEncLib.setNoActConstraintFlag ( !m_useColorTrans ); - m_cEncLib.setNoLmcsConstraintFlag ( !m_lmcsEnabled ); + if (m_cEncLib.getGciPresentFlag()) + { + m_cEncLib.setNonPackedConstraintFlag(m_nonPackedConstraintFlag); + m_cEncLib.setNonProjectedConstraintFlag(m_nonProjectedConstraintFlag); + m_cEncLib.setOneTilePerPicConstraintFlag(m_oneTilePerPicConstraintFlag); + m_cEncLib.setPicHeaderInSliceHeaderConstraintFlag(m_picHeaderInSliceHeaderConstraintFlag); + m_cEncLib.setOneSlicePerPicConstraintFlag(m_oneSlicePerPicConstraintFlag); + m_cEncLib.setOneSubpicPerPicConstraintFlag(m_oneSubpicPerPicConstraintFlag); + m_cEncLib.setFrameOnlyConstraintFlag(m_frameOnlyConstraintFlag); + m_cEncLib.setOnePictureOnlyConstraintFlag(m_onePictureOnlyConstraintFlag); + m_cEncLib.setIntraOnlyConstraintFlag(m_intraOnlyConstraintFlag); + m_cEncLib.setNoIdrConstraintFlag(m_noIdrConstraintFlag); + m_cEncLib.setNoGdrConstraintFlag(m_noGdrConstraintFlag); + m_cEncLib.setSingleLayerConstraintFlag(m_singleLayerConstraintFlag); + m_cEncLib.setAllLayersIndependentConstraintFlag(m_allLayersIndependentConstraintFlag); + m_cEncLib.setNoQpDeltaConstraintFlag(m_bNoQpDeltaConstraintFlag); + + m_cEncLib.setNoTrailConstraintFlag(m_noTrailConstraintFlag); + CHECK(m_noTrailConstraintFlag && m_iIntraPeriod != 1, "TRAIL shall be deactivated when m_noTrailConstraintFlag is equal to 1"); + + m_cEncLib.setNoStsaConstraintFlag(m_noStsaConstraintFlag); + CHECK(m_noStsaConstraintFlag && (m_iIntraPeriod != 1 || xHasNonZeroTemporalID()), "STSA shall be deactivated when m_noStsaConstraintFlag is equal to 1"); + + m_cEncLib.setNoRaslConstraintFlag(m_noRaslConstraintFlag); + CHECK(m_noRaslConstraintFlag && (m_iIntraPeriod != 1 || xHasLeadingPicture()), "RASL shall be deactivated when m_noRaslConstraintFlag is equal to 1"); + + m_cEncLib.setNoRadlConstraintFlag(m_noRadlConstraintFlag); + CHECK(m_noRadlConstraintFlag && (m_iIntraPeriod != 1 || xHasLeadingPicture()), "RADL shall be deactivated when m_noRadlConstraintFlag is equal to 1"); + + m_cEncLib.setNoCraConstraintFlag(m_noCraConstraintFlag); + CHECK(m_noCraConstraintFlag && (m_iDecodingRefreshType == 1), "CRA shall be deactivated when m_noCraConstraintFlag is equal to 1"); + + m_cEncLib.setNoResChangeInClvsConstraintFlag(m_noResChangeInClvsConstraintFlag); + CHECK(m_noResChangeInClvsConstraintFlag && m_resChangeInClvsEnabled, "Resolution change in CLVS shall be deactivated when m_noResChangeInClvsConstraintFlag is equal to 1"); + + m_cEncLib.setMaxBitDepthConstraintIdc(m_maxBitDepthConstraintIdc); + CHECK(m_internalBitDepth[CHANNEL_TYPE_LUMA] > m_maxBitDepthConstraintIdc, "Internal bit depth shall be less than or equal to m_maxBitDepthConstraintIdc"); + + m_cEncLib.setMaxChromaFormatConstraintIdc(m_maxChromaFormatConstraintIdc); + CHECK(m_chromaFormatIDC > m_maxChromaFormatConstraintIdc, "Chroma format Idc shall be less than or equal to m_maxBitDepthConstraintIdc"); + + m_cEncLib.setNoQtbttDualTreeIntraConstraintFlag(m_bNoQtbttDualTreeIntraConstraintFlag); + CHECK(m_bNoQtbttDualTreeIntraConstraintFlag && m_dualTree, "Dual tree shall be deactivated when m_bNoQtbttDualTreeIntraConstraintFlag is equal to 1"); + + m_cEncLib.setNoPartitionConstraintsOverrideConstraintFlag(m_noPartitionConstraintsOverrideConstraintFlag); + CHECK(m_noPartitionConstraintsOverrideConstraintFlag && m_SplitConsOverrideEnabledFlag, "Partition override shall be deactivated when m_noPartitionConstraintsOverrideConstraintFlag is equal to 1"); + + m_cEncLib.setNoSaoConstraintFlag(m_bNoSaoConstraintFlag); + CHECK(m_bNoSaoConstraintFlag && m_bUseSAO, "SAO shall be deactivated when m_bNoSaoConstraintFlag is equal to 1"); + + m_cEncLib.setNoAlfConstraintFlag(m_bNoAlfConstraintFlag); + CHECK(m_bNoAlfConstraintFlag && m_alf, "ALF shall be deactivated when m_bNoAlfConstraintFlag is equal to 1"); + + m_cEncLib.setNoCCAlfConstraintFlag(m_noCCAlfConstraintFlag); + CHECK(m_noCCAlfConstraintFlag && m_ccalf, "CCALF shall be deactivated when m_noCCAlfConstraintFlag is equal to 1"); + + m_cEncLib.setNoRefWraparoundConstraintFlag(m_bNoRefWraparoundConstraintFlag); + CHECK(m_bNoRefWraparoundConstraintFlag && m_wrapAround, "Wrap around shall be deactivated when m_bNoRefWraparoundConstraintFlag is equal to 1"); + + m_cEncLib.setNoTemporalMvpConstraintFlag(m_bNoTemporalMvpConstraintFlag); + CHECK(m_bNoTemporalMvpConstraintFlag && m_TMVPModeId, "Temporal MVP shall be deactivated when m_bNoTemporalMvpConstraintFlag is equal to 1"); + + m_cEncLib.setNoSbtmvpConstraintFlag(m_bNoSbtmvpConstraintFlag); + CHECK(m_bNoSbtmvpConstraintFlag && m_SubPuMvpMode, "SbTMVP shall be deactivated when m_bNoSbtmvpConstraintFlag is equal to 1"); + + m_cEncLib.setNoAmvrConstraintFlag(m_bNoAmvrConstraintFlag); + CHECK(m_bNoAmvrConstraintFlag && (m_ImvMode != IMV_OFF || m_AffineAmvr), "AMVR shall be deactivated when m_bNoAmvrConstraintFlag is equal to 1"); + + m_cEncLib.setNoBdofConstraintFlag(m_bNoBdofConstraintFlag); + CHECK(m_bNoBdofConstraintFlag && m_BIO, "BIO shall be deactivated when m_bNoBdofConstraintFlag is equal to 1"); + + m_cEncLib.setNoDmvrConstraintFlag(m_noDmvrConstraintFlag); + CHECK(m_noDmvrConstraintFlag && m_DMVR, "DMVR shall be deactivated when m_noDmvrConstraintFlag is equal to 1"); + + m_cEncLib.setNoCclmConstraintFlag(m_bNoCclmConstraintFlag); + CHECK(m_bNoCclmConstraintFlag && m_LMChroma, "CCLM shall be deactivated when m_bNoCclmConstraintFlag is equal to 1"); + + m_cEncLib.setNoMtsConstraintFlag(m_bNoMtsConstraintFlag); + CHECK(m_bNoMtsConstraintFlag && (m_MTS || m_MTSImplicit), "MTS shall be deactivated when m_bNoMtsConstraintFlag is equal to 1"); + + m_cEncLib.setNoSbtConstraintFlag(m_noSbtConstraintFlag); + CHECK(m_noSbtConstraintFlag && m_SBT, "SBT shall be deactivated when mm_noSbtConstraintFlag_nonPackedConstraintFlag is equal to 1"); + + m_cEncLib.setNoAffineMotionConstraintFlag(m_bNoAffineMotionConstraintFlag); + CHECK(m_bNoAffineMotionConstraintFlag && m_Affine, "Affine shall be deactivated when m_bNoAffineMotionConstraintFlag is equal to 1"); + + m_cEncLib.setNoBcwConstraintFlag(m_bNoBcwConstraintFlag); + CHECK(m_bNoBcwConstraintFlag && m_bcw, "BCW shall be deactivated when m_bNoBcwConstraintFlag is equal to 1"); + + m_cEncLib.setNoIbcConstraintFlag(m_noIbcConstraintFlag); + CHECK(m_noIbcConstraintFlag && m_IBCMode, "IBC shall be deactivated when m_noIbcConstraintFlag is equal to 1"); + + m_cEncLib.setNoCiipConstraintFlag(m_bNoCiipConstraintFlag); + CHECK(m_bNoCiipConstraintFlag && m_ciip, "CIIP shall be deactivated when m_bNoCiipConstraintFlag is equal to 1"); + + m_cEncLib.setNoGeoConstraintFlag(m_noGeoConstraintFlag); + CHECK(m_noGeoConstraintFlag && m_Geo, "GEO shall be deactivated when m_noGeoConstraintFlag is equal to 1"); + + m_cEncLib.setNoLadfConstraintFlag(m_bNoLadfConstraintFlag); + CHECK(m_bNoLadfConstraintFlag && m_LadfEnabed, "LADF shall be deactivated when m_bNoLadfConstraintFlag is equal to 1"); + + m_cEncLib.setNoTransformSkipConstraintFlag(m_noTransformSkipConstraintFlag); + CHECK(m_noTransformSkipConstraintFlag && m_useTransformSkip, "Transform skip shall be deactivated when m_noTransformSkipConstraintFlag is equal to 1"); + + m_cEncLib.setNoBDPCMConstraintFlag(m_noBDPCMConstraintFlag); + CHECK(m_noBDPCMConstraintFlag && m_useBDPCM, "BDPCM shall be deactivated when m_noBDPCMConstraintFlag is equal to 1"); + + m_cEncLib.setNoJointCbCrConstraintFlag(m_noJointCbCrConstraintFlag); + CHECK(m_noJointCbCrConstraintFlag && m_JointCbCrMode, "JCCR shall be deactivated when m_noJointCbCrConstraintFlag is equal to 1"); + + m_cEncLib.setNoDepQuantConstraintFlag(m_bNoDepQuantConstraintFlag); + CHECK(m_bNoDepQuantConstraintFlag && m_depQuantEnabledFlag, "DQ shall be deactivated when m_bNoDepQuantConstraintFlag is equal to 1"); + + m_cEncLib.setNoSignDataHidingConstraintFlag(m_bNoSignDataHidingConstraintFlag); + CHECK(m_bNoSignDataHidingConstraintFlag && m_signDataHidingEnabledFlag, "SDH shall be deactivated when m_bNoSignDataHidingConstraintFlag is equal to 1"); + + m_cEncLib.setNoApsConstraintFlag(m_noApsConstraintFlag); + CHECK(m_noApsConstraintFlag && (m_lmcsEnabled || (m_useScalingListId != SCALING_LIST_OFF)), "LMCS and explict scaling list shall be deactivated when m_noApsConstraintFlag is equal to 1"); + + m_cEncLib.setNoMrlConstraintFlag(m_noMrlConstraintFlag); + CHECK(m_noMrlConstraintFlag && m_MRL, "MRL shall be deactivated when m_noMrlConstraintFlag is equal to 1"); + + m_cEncLib.setNoIspConstraintFlag(m_noIspConstraintFlag); + CHECK(m_noIspConstraintFlag && m_ISP, "ISP shall be deactivated when m_noIspConstraintFlag is equal to 1"); + + m_cEncLib.setNoMipConstraintFlag(m_noMipConstraintFlag); + CHECK(m_noMipConstraintFlag && m_MIP, "MIP shall be deactivated when m_noMipConstraintFlag is equal to 1"); + + m_cEncLib.setNoLfnstConstraintFlag(m_noLfnstConstraintFlag); + CHECK(m_noLfnstConstraintFlag && m_LFNST, "LFNST shall be deactivated when m_noLfnstConstraintFlag is equal to 1"); + + m_cEncLib.setNoMmvdConstraintFlag(m_noMmvdConstraintFlag); + CHECK(m_noMmvdConstraintFlag && m_MMVD, "MMVD shall be deactivated when m_noMmvdConstraintFlag is equal to 1"); + + m_cEncLib.setNoSmvdConstraintFlag(m_noSmvdConstraintFlag); + CHECK(m_noSmvdConstraintFlag && m_SMVD, "SMVD shall be deactivated when m_noSmvdConstraintFlag is equal to 1"); + + m_cEncLib.setNoProfConstraintFlag(m_noProfConstraintFlag); + CHECK(m_noProfConstraintFlag && m_PROF, "PROF shall be deactivated when m_noProfConstraintFlag is equal to 1"); + + m_cEncLib.setNoPaletteConstraintFlag(m_noPaletteConstraintFlag); + CHECK(m_noPaletteConstraintFlag && m_PLTMode, "Palette shall be deactivated when m_noPaletteConstraintFlag is equal to 1"); + + m_cEncLib.setNoActConstraintFlag(m_noActConstraintFlag); + CHECK(m_noActConstraintFlag && m_useColorTrans, "ACT shall be deactivated when m_noActConstraintFlag is equal to 1"); + + m_cEncLib.setNoLmcsConstraintFlag(m_noLmcsConstraintFlag); + CHECK(m_noLmcsConstraintFlag && m_lmcsEnabled, "LMCS shall be deactivated when m_noLmcsConstraintFlag is equal to 1"); + #if JVET_S0050_GCI - m_cEncLib.setNoExplicitScaleListConstraintFlag ( m_noExplicitScaleListConstraintFlag ); - CHECK( m_noExplicitScaleListConstraintFlag && m_useScalingListId != SCALING_LIST_OFF, "Explicit scaling list shall be deactivated when m_noExplicitScaleListConstraintFlag is equal to 1"); - m_cEncLib.setNoVirtualBoundaryConstraintFlag ( m_noVirtualBoundaryConstraintFlag ); - CHECK( m_noVirtualBoundaryConstraintFlag && m_virtualBoundariesEnabledFlag, "Virtuall boundaries shall be deactivated when m_noVirtualBoundaryConstraintFlag is equal to 1"); + m_cEncLib.setNoExplicitScaleListConstraintFlag(m_noExplicitScaleListConstraintFlag); + CHECK(m_noExplicitScaleListConstraintFlag && m_useScalingListId != SCALING_LIST_OFF, "Explicit scaling list shall be deactivated when m_noExplicitScaleListConstraintFlag is equal to 1"); + + m_cEncLib.setNoVirtualBoundaryConstraintFlag(m_noVirtualBoundaryConstraintFlag); + CHECK(m_noVirtualBoundaryConstraintFlag && m_virtualBoundariesEnabledFlag, "Virtuall boundaries shall be deactivated when m_noVirtualBoundaryConstraintFlag is equal to 1"); #endif + } + else + { + m_cEncLib.setNonPackedConstraintFlag(false); + m_cEncLib.setNonProjectedConstraintFlag(false); + m_cEncLib.setSingleLayerConstraintFlag(false); + m_cEncLib.setAllLayersIndependentConstraintFlag(false); + m_cEncLib.setNoResChangeInClvsConstraintFlag(false); + m_cEncLib.setOneTilePerPicConstraintFlag(false); + m_cEncLib.setPicHeaderInSliceHeaderConstraintFlag(false); + m_cEncLib.setOneSlicePerPicConstraintFlag(false); + m_cEncLib.setOneSubpicPerPicConstraintFlag(false); + m_cEncLib.setFrameOnlyConstraintFlag(false); + m_cEncLib.setOnePictureOnlyConstraintFlag(false); + m_cEncLib.setIntraOnlyConstraintFlag(false); + m_cEncLib.setMaxBitDepthConstraintIdc(16); + m_cEncLib.setMaxChromaFormatConstraintIdc(3); + m_cEncLib.setNoQtbttDualTreeIntraConstraintFlag(false); + m_cEncLib.setNoPartitionConstraintsOverrideConstraintFlag(false); + m_cEncLib.setNoSaoConstraintFlag(false); + m_cEncLib.setNoAlfConstraintFlag(false); + m_cEncLib.setNoCCAlfConstraintFlag(false); + m_cEncLib.setNoRefWraparoundConstraintFlag(false); + m_cEncLib.setNoTemporalMvpConstraintFlag(false); + m_cEncLib.setNoSbtmvpConstraintFlag(false); + m_cEncLib.setNoAmvrConstraintFlag(false); + m_cEncLib.setNoBdofConstraintFlag(false); + m_cEncLib.setNoDmvrConstraintFlag(false); + m_cEncLib.setNoCclmConstraintFlag(false); + m_cEncLib.setNoMtsConstraintFlag(false); + m_cEncLib.setNoSbtConstraintFlag(false); + m_cEncLib.setNoAffineMotionConstraintFlag(false); + m_cEncLib.setNoBcwConstraintFlag(false); + m_cEncLib.setNoIbcConstraintFlag(false); + m_cEncLib.setNoCiipConstraintFlag(false); + m_cEncLib.setNoGeoConstraintFlag(false); + m_cEncLib.setNoLadfConstraintFlag(false); + m_cEncLib.setNoTransformSkipConstraintFlag(false); + m_cEncLib.setNoBDPCMConstraintFlag(false); + m_cEncLib.setNoJointCbCrConstraintFlag(false); + m_cEncLib.setNoQpDeltaConstraintFlag(false); + m_cEncLib.setNoDepQuantConstraintFlag(false); + m_cEncLib.setNoSignDataHidingConstraintFlag(false); + m_cEncLib.setNoTrailConstraintFlag(false); + m_cEncLib.setNoStsaConstraintFlag(false); + m_cEncLib.setNoRaslConstraintFlag(false); + m_cEncLib.setNoRadlConstraintFlag(false); + m_cEncLib.setNoIdrConstraintFlag(false); + m_cEncLib.setNoCraConstraintFlag(false); + m_cEncLib.setNoGdrConstraintFlag(false); + m_cEncLib.setNoApsConstraintFlag(false); + m_cEncLib.setNoMrlConstraintFlag(false); + m_cEncLib.setNoIspConstraintFlag(false); + m_cEncLib.setNoMipConstraintFlag(false); + m_cEncLib.setNoLfnstConstraintFlag(false); + m_cEncLib.setNoMmvdConstraintFlag(false); + m_cEncLib.setNoSmvdConstraintFlag(false); + m_cEncLib.setNoProfConstraintFlag(false); + m_cEncLib.setNoPaletteConstraintFlag(false); + m_cEncLib.setNoActConstraintFlag(false); + m_cEncLib.setNoLmcsConstraintFlag(false); + } //====== Coding Structure ======== m_cEncLib.setIntraPeriod ( m_iIntraPeriod ); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index f366497200ca4a1ca3c3d412366b5062c3eeb56e..c08061e802b92600dc5428c3cb8bda18708f0b4e 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -81,60 +81,6 @@ EncAppCfg::EncAppCfg() , m_snrInternalColourSpace(false) , m_outputInternalColourSpace(false) , m_packedYUVMode(false) -#if JVET_S0179_CONDITIONAL_SIGNAL_GCI -, m_gciPresentFlag(true) -#endif -, m_bIntraOnlyConstraintFlag(false) -, m_maxBitDepthConstraintIdc(0) -, m_maxChromaFormatConstraintIdc(CHROMA_420) -, m_bFrameConstraintFlag(false) -, m_singleLayerConstraintFlag(false) -, m_allLayersIndependentConstraintFlag(false) -, m_noMrlConstraintFlag(false) -, m_noIspConstraintFlag(false) -, m_noMipConstraintFlag(false) -, m_noLfnstConstraintFlag(false) -, m_noMmvdConstraintFlag(false) -, m_noSmvdConstraintFlag(false) -, m_noProfConstraintFlag(false) -, m_noPaletteConstraintFlag(false) -, m_noActConstraintFlag(false) -, m_noLmcsConstraintFlag(false) -, m_bNoQtbttDualTreeIntraConstraintFlag(false) -, m_noPartitionConstraintsOverrideConstraintFlag(false) -, m_bNoSaoConstraintFlag(false) -, m_bNoAlfConstraintFlag(false) -, m_noCCAlfConstraintFlag(false) -, m_bNoRefWraparoundConstraintFlag(false) -, m_bNoTemporalMvpConstraintFlag(false) -, m_bNoSbtmvpConstraintFlag(false) -, m_bNoAmvrConstraintFlag(false) -, m_bNoBdofConstraintFlag(false) -, m_noDmvrConstraintFlag(false) -, m_bNoCclmConstraintFlag(false) -, m_bNoMtsConstraintFlag(false) -, m_noSbtConstraintFlag(false) -, m_bNoAffineMotionConstraintFlag(false) -, m_bNoBcwConstraintFlag(false) -, m_noIbcConstraintFlag(false) -, m_bNoCiipConstraintFlag(false) -, m_noGeoConstraintFlag(false) -, m_bNoLadfConstraintFlag(false) -, m_noTransformSkipConstraintFlag(false) -, m_noBDPCMConstraintFlag(false) -, m_noJointCbCrConstraintFlag(false) -, m_bNoQpDeltaConstraintFlag(false) -, m_bNoDepQuantConstraintFlag(false) -, m_bNoSignDataHidingConstraintFlag(false) -, m_noTrailConstraintFlag(false) -, m_noStsaConstraintFlag(false) -, m_noRaslConstraintFlag(false) -, m_noRadlConstraintFlag(false) -, m_noIdrConstraintFlag(false) -, m_noCraConstraintFlag(false) -, m_noGdrConstraintFlag(false) -, m_noApsConstraintFlag(false) - #if EXTENSION_360_VIDEO , m_ext360(*this) #endif @@ -822,25 +768,75 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("EnableDecodingCapabilityInformation", m_DCIEnabled, false, "Enables writing of Decoding Capability Information") ("MaxBitDepthConstraint", m_bitDepthConstraint, 0u, "Bit depth to use for profile-constraint for RExt profiles. 0=automatically choose based upon other parameters") ("MaxChromaFormatConstraint", tmpConstraintChromaFormat, 0, "Chroma-format to use for the profile-constraint for RExt profiles. 0=automatically choose based upon other parameters") - ("OnePictureOnlyConstraintFlag", m_onePictureOnlyConstraintFlag, false, "Value of general_intra_constraint_flag. Can only be used for single frame encodings. Will be set to true for still picture profiles") - ("IntraConstraintFlag", m_intraConstraintFlag, false, "Value of intra_only_constraint_flag") -#if !JVET_S0266_VUI_length - ("NonPackedSource", m_nonPackedConstraintFlag, false, "Indicate that source does not contain frame packing") - ("NonProjectedConstraintFlag", m_nonProjectedConstraintFlag, false, "Indicate that the bitstream contains projection SEI messages") -#endif - ("NoResChangeInClvsConstraintFlag", m_noResChangeInClvsConstraintFlag, false, "Indicate that the picture spatial resolution does not change within any CLVS referring to the SPS") - ("SingleLayerConstraintFlag", m_singleLayerConstraintFlag, false, "Indicate that the bitstream contains only one layer") - ("AllLayersIndependentConstraintFlag", m_allLayersIndependentConstraintFlag, false, "Indicate that all layers are independent") + ("GciPresentFlag", m_gciPresentFlag, false, "GCI field present") + ("IntraOnlyConstraintFlag", m_intraOnlyConstraintFlag, false, "Value of intra_only_constraint_flag") + ("AllLayersIndependentConstraintFlag", m_allLayersIndependentConstraintFlag, false, "Indicate that all layers are independent") + ("OnePictureOnlyConstraintFlag", m_onePictureOnlyConstraintFlag, false, "Value of general_intra_constraint_flag. Can only be used for single frame encodings. Will be set to true for still picture profiles") + ("MaxBitDepthConstraintIdc", m_maxBitDepthConstraintIdc, 16u, "Indicate that bit_depth_minus8 plus 8 shall be in the range of 0 to m_maxBitDepthConstraintIdc") + ("MaxChromaFormatConstraintIdc", m_maxChromaFormatConstraintIdc, 3, "Indicate that chroma_format_idc shall be in the range of 0 to m_maxChromaFormatConstraintIdc") + ("TrailConstraintFlag", m_noTrailConstraintFlag, false, "Indicate that TRAIL is deactivated") + ("StsaConstraintFlag", m_noStsaConstraintFlag, false, "Indicate that STSA is deactivated") + ("RaslConstraintFlag", m_noRaslConstraintFlag, false, "Indicate that RSAL is deactivated") + ("RadlConstraintFlag", m_noRadlConstraintFlag, false, "Indicate that RADL is deactivated") + ("IdrConstraintFlag", m_noIdrConstraintFlag, false, "Indicate that IDR is deactivated") + ("CraConstraintFlag", m_noCraConstraintFlag, false, "Indicate that CRA is deactivated") + ("GdrConstraintFlag", m_noGdrConstraintFlag, false, "Indicate that GDR is deactivated") + ("ApsConstraintFlag", m_noApsConstraintFlag, false, "Indicate that APS is deactivated") ("OneTilePerPicConstraintFlag", m_oneTilePerPicConstraintFlag, false, "Indicate that each picture shall contain only one tile") ("PicHeaderInSliceHeaderConstraintFlag", m_picHeaderInSliceHeaderConstraintFlag, false, "Indicate that picture header is present in slice header") ("OneSlicePerPicConstraintFlag", m_oneSlicePerPicConstraintFlag, false, "Indicate that each picture shall contain only one slice") ("OneSubpicPerPicConstraintFlag", m_oneSubpicPerPicConstraintFlag, false, "Indicate that each picture shall contain only one subpicture") - ("FrameOnly", m_frameOnlyConstraintFlag, false, "Indicate that the bitstream contains only frames") + ("PartitionConstraintsOverrideConstraintFlag", m_noPartitionConstraintsOverrideConstraintFlag, false, "Indicate that Partition Override is deactivated") + ("QtbttDualTreeIntraConstraintFlag", m_bNoQtbttDualTreeIntraConstraintFlag, false, "Indicate that Qtbtt DualTree Intra is deactivated") + ("PaletteConstraintFlag", m_noPaletteConstraintFlag, false, "Indicate that PLT is deactivated") + ("IbcConstraintFlag", m_noIbcConstraintFlag, false, "Indicate that IBC is deactivated") + ("IspConstraintFlag", m_noIspConstraintFlag, false, "Indicate that ISP is deactivated") + ("MrlConstraintFlag", m_noMrlConstraintFlag, false, "Indicate that MRL is deactivated") + ("MipConstraintFlag", m_noMipConstraintFlag, false, "Indicate that MIP is deactivated") + ("CclmConstraintFlag", m_bNoCclmConstraintFlag, false, "Indicate that CCLM is deactivated") + ("NoResChangeInClvsConstraintFlag", m_noResChangeInClvsConstraintFlag, false, "Indicate that the picture spatial resolution does not change within any CLVS referring to the SPS") + ("RefWraparoundConstraintFlag", m_bNoRefWraparoundConstraintFlag, false, "Indicate that Reference Wraparound is deactivated") + ("TemporalMvpConstraintFlag", m_bNoTemporalMvpConstraintFlag, false, "Indicate that temporal MVP is deactivated") + ("SbtmvpConstraintFlag", m_bNoSbtmvpConstraintFlag, false, "Indicate that SbTMVP is deactivated") + ("AmvrConstraintFlag", m_bNoAmvrConstraintFlag, false, "Indicate that AMVR is deactivated") + ("SmvdConstraintFlag", m_noSmvdConstraintFlag, false, "Indicate that SMVD is deactivated") + ("BdofConstraintFlag", m_bNoBdofConstraintFlag, false, "Indicate that BIO is deactivated") + ("DmvrConstraintFlag", m_noDmvrConstraintFlag, false, "Indicate that DMVR is deactivated") + ("MmvdConstraintFlag", m_noMmvdConstraintFlag, false, "Indicate that MMVD is deactivated") + ("AffineMotionConstraintFlag", m_bNoAffineMotionConstraintFlag, false, "Indicate that Affine is deactivated") + ("ProfConstraintFlag", m_noProfConstraintFlag, false, "Indicate that PROF is deactivated") + ("BcwConstraintFlag", m_bNoBcwConstraintFlag, false, "Indicate that BCW is deactivated") + ("CiipConstraintFlag", m_bNoCiipConstraintFlag, false, "Indicate that CIIP is deactivated") + ("GpmConstraintFlag", m_noGeoConstraintFlag, false, "Indicate that GPM is deactivated") + ("TransformSkipConstraintFlag", m_noTransformSkipConstraintFlag, false, "Indicate that Transform Skip is deactivated") + ("BDPCMConstraintFlag", m_noBDPCMConstraintFlag, false, "Indicate that BDPCM is deactivated") + ("MtsConstraintFlag", m_bNoMtsConstraintFlag, false, "Indicate that MTS is deactivated") + ("LfnstConstraintFlag", m_noLfnstConstraintFlag, false, "Indicate that LFNST is deactivated") + ("JointCbCrConstraintFlag", m_noJointCbCrConstraintFlag, false, "Indicate that JCCR is deactivated") + ("SbtConstraintFlag", m_noSbtConstraintFlag, false, "Indicate that SBT is deactivated") + ("ActConstraintFlag", m_noActConstraintFlag, false, "Indicate that ACT is deactivated") #if JVET_S0050_GCI ("ExplicitScaleListConstraintFlag", m_noExplicitScaleListConstraintFlag, false, "Indicate that explicit scaling list is deactivated") +#endif + ("DepQuantConstraintFlag", m_bNoDepQuantConstraintFlag, false, "Indicate that DQ is deactivated") + ("SignDataHidingConstraintFlag", m_bNoSignDataHidingConstraintFlag, false, "Indicate that SDH is deactivated") + ("QpDeltaConstraintFlag", m_bNoQpDeltaConstraintFlag, false, "Indicate that QPdelta is deactivated") + ("SaoConstraintFlag", m_bNoSaoConstraintFlag, false, "Indicate that SAO is deactivated") + ("AlfConstraintFlag", m_bNoAlfConstraintFlag, false, "Indicate that ALF is deactivated") + ("CCAlfConstraintFlag", m_noCCAlfConstraintFlag, false, "Indicate that CCALF is deactivated") + ("LmcsConstraintFlag", m_noLmcsConstraintFlag, false, "Indicate that LMCS is deactivated") + ("LadfConstraintFlag", m_bNoLadfConstraintFlag, false, "Indicate that LADF is deactivated") +#if JVET_S0050_GCI ("VirtualBoundaryConstraintFlag", m_noVirtualBoundaryConstraintFlag, false, "Indicate that virtual boundary is deactivated") #endif + ("SingleLayerConstraintFlag", m_singleLayerConstraintFlag, false, "Indicate that the bitstream contains only one layer") + ("FrameOnlyConstraintFlag", m_frameOnlyConstraintFlag, false, "Indicate that the bitstream contains only frames") + #if !JVET_S0266_VUI_length + ("NonPackedSourceConstraintFlag", m_nonPackedConstraintFlag, false, "Indicate that source does not contain frame packing") + ("NonProjectedConstraintFlag", m_nonProjectedConstraintFlag, false, "Indicate that the bitstream contains projection SEI messages") +#endif + ("CTUSize", m_uiCTUSize, 128u, "CTUSize (specifies the CTU size if QTBT is on) [default: 128]") ("Log2MinCuSize", m_log2MinCuSize, 2u, "Log2 min CU size") ("SubPicInfoPresentFlag", m_subPicInfoPresentFlag, false, "equal to 1 specifies that subpicture parameters are present in in the SPS RBSP syntax") @@ -1191,7 +1187,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("ProgressiveSource", m_progressiveSourceFlag, false, "Indicate that source is progressive") ("InterlacedSource", m_interlacedSourceFlag, false, "Indicate that source is interlaced") #if JVET_S0266_VUI_length - ("NonPackedSource", m_nonPackedConstraintFlag, false, "Indicate that source does not contain frame packing") + ("NonPackedSourceConstraintFlag", m_nonPackedConstraintFlag, false, "Indicate that source does not contain frame packing") ("NonProjectedConstraintFlag", m_nonProjectedConstraintFlag, false, "Indicate that the bitstream contains projection SEI messages") #endif ("ChromaLocInfoPresent", m_chromaLocInfoPresentFlag, false, "Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present") @@ -2862,7 +2858,7 @@ bool EncAppCfg::xCheckParameter() } else { - xConfirmPara( m_intraConstraintFlag, "IntraConstraintFlag cannot be 1 for inter sequences"); + xConfirmPara( m_intraOnlyConstraintFlag, "IntraOnlyConstraintFlag cannot be 1 for inter sequences"); } int multipleFactor = m_compositeRefEnabled ? 2 : 1; diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index cc2eaaf90874e3c789dcb7a55ccb35d3ca074f67..8124d782fa2abc2ba5e51b1139834b92ead9afa6 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -136,8 +136,7 @@ protected: #endif bool m_bIntraOnlyConstraintFlag; uint32_t m_maxBitDepthConstraintIdc; - uint32_t m_maxChromaFormatConstraintIdc; - bool m_bFrameConstraintFlag; + int m_maxChromaFormatConstraintIdc; bool m_singleLayerConstraintFlag; bool m_allLayersIndependentConstraintFlag; bool m_noMrlConstraintFlag; @@ -199,7 +198,7 @@ protected: uint32_t m_bitDepthConstraint; ChromaFormat m_chromaFormatConstraint; bool m_onePictureOnlyConstraintFlag; - bool m_intraConstraintFlag; + bool m_intraOnlyConstraintFlag; bool m_nonPackedConstraintFlag; bool m_nonProjectedConstraintFlag; bool m_noResChangeInClvsConstraintFlag; diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index 76d78a7eb0db616fdb77e024b360f49223ffede5..fc74bdd09a1ba5aa3491a363bf7315ee82b10475 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -250,7 +250,7 @@ class ConstraintInfo bool m_frameOnlyConstraintFlag; bool m_intraOnlyConstraintFlag; uint32_t m_maxBitDepthConstraintIdc; - ChromaFormat m_maxChromaFormatConstraintIdc; + int m_maxChromaFormatConstraintIdc; bool m_onePictureOnlyConstraintFlag; bool m_lowerBitRateConstraintFlag; @@ -406,8 +406,8 @@ public: uint32_t getMaxBitDepthConstraintIdc() const { return m_maxBitDepthConstraintIdc; } void setMaxBitDepthConstraintIdc(uint32_t bitDepth) { m_maxBitDepthConstraintIdc = bitDepth; } - ChromaFormat getMaxChromaFormatConstraintIdc() const { return m_maxChromaFormatConstraintIdc; } - void setMaxChromaFormatConstraintIdc(ChromaFormat fmt) { m_maxChromaFormatConstraintIdc = fmt; } + int getMaxChromaFormatConstraintIdc() const { return m_maxChromaFormatConstraintIdc; } + void setMaxChromaFormatConstraintIdc(int fmt) { m_maxChromaFormatConstraintIdc = fmt; } #if !JVET_S0266_VUI_length bool getNonProjectedConstraintFlag() const { return m_nonProjectedConstraintFlag; } diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 81d2b7f2437e0e2ba590e05f4fd71dc80ba1c61f..f004c8078d394a25a11206eecf65e570aea74613 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -181,8 +181,7 @@ protected: bool m_onePictureOnlyConstraintFlag; bool m_bIntraOnlyConstraintFlag; uint32_t m_maxBitDepthConstraintIdc; - uint32_t m_maxChromaFormatConstraintIdc; - bool m_bFrameConstraintFlag; + int m_maxChromaFormatConstraintIdc; bool m_singleLayerConstraintFlag; bool m_allLayersIndependentConstraintFlag; @@ -249,7 +248,7 @@ protected: bool m_oneSlicePerPicConstraintFlag; bool m_oneSubpicPerPicConstraintFlag; bool m_frameOnlyConstraintFlag; - bool m_intraConstraintFlag; + bool m_intraOnlyConstraintFlag; //====== Coding Structure ======== int m_intraPeriod; // needs to be signed to allow '-1' for no intra period @@ -776,15 +775,12 @@ public: void setIntraOnlyConstraintFlag(bool bVal) { m_bIntraOnlyConstraintFlag = bVal; } uint32_t getMaxBitDepthConstraintIdc() const { return m_maxBitDepthConstraintIdc; } void setMaxBitDepthConstraintIdc(uint32_t u) { m_maxBitDepthConstraintIdc = u; } - uint32_t getMaxChromaFormatConstraintIdc() const { return m_maxChromaFormatConstraintIdc; } - void setMaxChromaFormatConstraintIdc(uint32_t u) { m_maxChromaFormatConstraintIdc = u; } - bool getFrameConstraintFlag() const { return m_bFrameConstraintFlag; } - void setFrameConstraintFlag(bool bVal) { m_bFrameConstraintFlag = bVal; } + int getMaxChromaFormatConstraintIdc() const { return m_maxChromaFormatConstraintIdc; } + void setMaxChromaFormatConstraintIdc(int u) { m_maxChromaFormatConstraintIdc = u; } #if JVET_S0179_CONDITIONAL_SIGNAL_GCI bool getGciPresentFlag() const { return m_gciPresentFlag; } void setGciPresentFlag(bool b) { m_gciPresentFlag = b; } #endif - bool getSingleLayerConstraintFlag() const { return m_singleLayerConstraintFlag; } void setSingleLayerConstraintFlag(bool bVal) { m_singleLayerConstraintFlag = bVal; } bool getAllLayersIndependentConstraintFlag() const { return m_allLayersIndependentConstraintFlag; } @@ -1864,12 +1860,6 @@ public: bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; } void setFrameOnlyConstraintFlag(bool b) { m_frameOnlyConstraintFlag = b; } - - bool getIntraConstraintFlag() const { return m_intraConstraintFlag; } - void setIntraConstraintFlag(bool b) { m_intraConstraintFlag=b; } - - - void setSummaryOutFilename(const std::string &s) { m_summaryOutFilename = s; } const std::string& getSummaryOutFilename() const { return m_summaryOutFilename; } void setSummaryPicFilenameBase(const std::string &s) { m_summaryPicFilenameBase = s; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 09febc4123e9f4ec2e3a82a80e6a2cdad698e770..66b948eb7e205c200559424ed97003695454f06e 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1130,9 +1130,9 @@ void EncLib::xInitSPS( SPS& sps ) cinfo->setOneSubpicPerPicConstraintFlag(m_oneSubpicPerPicConstraintFlag); cinfo->setFrameOnlyConstraintFlag (m_frameOnlyConstraintFlag); cinfo->setOnePictureOnlyConstraintFlag(m_onePictureOnlyConstraintFlag); - cinfo->setIntraOnlyConstraintFlag (m_intraConstraintFlag); + cinfo->setIntraOnlyConstraintFlag (m_intraOnlyConstraintFlag); cinfo->setMaxBitDepthConstraintIdc (m_maxBitDepthConstraintIdc); - cinfo->setMaxChromaFormatConstraintIdc((ChromaFormat)m_maxChromaFormatConstraintIdc); + cinfo->setMaxChromaFormatConstraintIdc((int)m_maxChromaFormatConstraintIdc); cinfo->setSingleLayerConstraintFlag (m_singleLayerConstraintFlag); cinfo->setAllLayersIndependentConstraintFlag (m_allLayersIndependentConstraintFlag); cinfo->setNoMrlConstraintFlag (m_noMrlConstraintFlag);