xConfirmPara(m_lowerBitRateConstraintFlag==false&&m_intraConstraintFlag==false,"The lowerBitRateConstraint flag cannot be false when intraConstraintFlag is false");
xConfirmPara(m_cabacBypassAlignmentEnabledFlag&&m_profile!=Profile::HIGHTHROUGHPUTREXT,"AlignCABACBeforeBypass must not be enabled unless the high throughput profile is being used.");
xConfirmPara(!bValidProfile,"Invalid intra constraint flag, bit depth constraint flag and chroma format constraint flag combination for a RExt profile");
xConfirmPara((m_chromaFormatConstraint==CHROMA_420||m_chromaFormatConstraint==CHROMA_400)&&bUsingChromaQPTool,"CU Chroma QP adjustment cannot be used for 4:0:0 or 4:2:0 RExt profiles");
xConfirmPara(m_bitDepthConstraint!=16&&bUsingExtendedPrecision,"Extended precision can only be used in 16-bit RExt profiles");
xConfirmPara(bUsingGeneralRExtTools,"Combination of tools and profiles are not possible in the specified RExt profile.");
}
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_chromaFormatConstraint!=CHROMA_444,"chroma format constraint must be 4:4:4 when one-picture-only constraint flag is 1");
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_bitDepthConstraint!=8&&m_bitDepthConstraint!=16,"bit depth constraint must be 8 or 16 when one-picture-only constraint flag is 1");
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_framesToBeEncoded>1,"Number of frames to be encoded must be 1 when one-picture-only constraint flag is 1.");
xConfirmPara(m_lowerBitRateConstraintFlag==false&&m_intraConstraintFlag==false,"The lowerBitRateConstraint flag cannot be false when intraConstraintFlag is false");
xConfirmPara(m_cabacBypassAlignmentEnabledFlag&&m_profile!=Profile::HIGHTHROUGHPUTREXT,"AlignCABACBeforeBypass must not be enabled unless the high throughput profile is being used.");
xConfirmPara(!bValidProfile,"Invalid intra constraint flag, bit depth constraint flag and chroma format constraint flag combination for a RExt profile");
xConfirmPara((m_chromaFormatConstraint==CHROMA_420||m_chromaFormatConstraint==CHROMA_400)&&bUsingChromaQPTool,"CU Chroma QP adjustment cannot be used for 4:0:0 or 4:2:0 RExt profiles");
xConfirmPara(m_bitDepthConstraint!=16&&bUsingExtendedPrecision,"Extended precision can only be used in 16-bit RExt profiles");
xConfirmPara(bUsingGeneralRExtTools,"Combination of tools and profiles are not possible in the specified RExt profile.");
}
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_chromaFormatConstraint!=CHROMA_444,"chroma format constraint must be 4:4:4 when one-picture-only constraint flag is 1");
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_bitDepthConstraint!=8&&m_bitDepthConstraint!=16,"bit depth constraint must be 8 or 16 when one-picture-only constraint flag is 1");
xConfirmPara(m_onePictureOnlyConstraintFlag&&m_framesToBeEncoded>1,"Number of frames to be encoded must be 1 when one-picture-only constraint flag is 1.");
xConfirmPara(m_bitDepthConstraint!=((m_profile==Profile::MAIN10)?10:8),"BitDepthConstraint must be 8 for MAIN profile and 10 for MAIN10 profile.");
xConfirmPara(m_chromaFormatConstraint!=CHROMA_420,"ChromaFormatConstraint must be 420 for non main-RExt profiles.");
xConfirmPara(m_intraConstraintFlag==true,"IntraConstraintFlag must be false for non main_RExt profiles.");
xConfirmPara(m_lowerBitRateConstraintFlag==false,"LowerBitrateConstraintFlag must be true for non main-RExt profiles.");
xConfirmPara(m_profile==Profile::MAINSTILLPICTURE&&m_framesToBeEncoded>1,"Number of frames to be encoded must be 1 when main still picture profile is used.");
xConfirmPara(m_crossComponentPredictionEnabledFlag==true,"CrossComponentPrediction must not be used for non main-RExt profiles.");
xConfirmPara(m_log2MaxTransformSkipBlockSize!=2,"Transform Skip Log2 Max Size must be 2 for V1 profiles.");
xConfirmPara(m_transformSkipRotationEnabledFlag==true,"UseResidualRotation must not be enabled for non main-RExt profiles.");
xConfirmPara(m_transformSkipContextEnabledFlag==true,"UseSingleSignificanceMapContext must not be enabled for non main-RExt profiles.");
xConfirmPara(m_rdpcmEnabledFlag[RDPCM_SIGNAL_IMPLICIT]==true,"ImplicitResidualDPCM must not be enabled for non main-RExt profiles.");
xConfirmPara(m_rdpcmEnabledFlag[RDPCM_SIGNAL_EXPLICIT]==true,"ExplicitResidualDPCM must not be enabled for non main-RExt profiles.");
xConfirmPara(m_persistentRiceAdaptationEnabledFlag==true,"GolombRiceParameterAdaption must not be enabled for non main-RExt profiles.");
xConfirmPara(m_extendedPrecisionProcessingFlag==true,"UseExtendedPrecision must not be enabled for non main-RExt profiles.");
xConfirmPara(m_highPrecisionOffsetsEnabledFlag==true,"UseHighPrecisionPredictionWeighting must not be enabled for non main-RExt profiles.");
xConfirmPara(m_enableIntraReferenceSmoothing==false,"EnableIntraReferenceSmoothing must be enabled for non main-RExt profiles.");
xConfirmPara(m_cabacBypassAlignmentEnabledFlag,"AlignCABACBeforeBypass cannot be enabled for non main-RExt profiles.");
}
}
else
{
xConfirmPara(m_chromaFormatConstraint!=CHROMA_444,"chroma format constraint must be 4:4:4 in the High Throughput 4:4:4 16-bit Intra profile.");
xConfirmPara(m_bitDepthConstraint!=16,"bit depth constraint must be 4:4:4 in the High Throughput 4:4:4 16-bit Intra profile.");
xConfirmPara(m_intraConstraintFlag!=1,"intra constraint flag must be 1 in the High Throughput 4:4:4 16-bit Intra profile.");
}
}
else
{
xConfirmPara(m_bitDepthConstraint!=((m_profile==Profile::MAIN10)?10:8),"BitDepthConstraint must be 8 for MAIN profile and 10 for MAIN10 profile.");
xConfirmPara(m_chromaFormatConstraint!=CHROMA_420,"ChromaFormatConstraint must be 420 for non main-RExt profiles.");
xConfirmPara(m_intraConstraintFlag==true,"IntraConstraintFlag must be false for non main_RExt profiles.");
xConfirmPara(m_lowerBitRateConstraintFlag==false,"LowerBitrateConstraintFlag must be true for non main-RExt profiles.");
xConfirmPara(m_profile==Profile::MAINSTILLPICTURE&&m_framesToBeEncoded>1,"Number of frames to be encoded must be 1 when main still picture profile is used.");
xConfirmPara(m_crossComponentPredictionEnabledFlag==true,"CrossComponentPrediction must not be used for non main-RExt profiles.");
xConfirmPara(m_log2MaxTransformSkipBlockSize!=2,"Transform Skip Log2 Max Size must be 2 for V1 profiles.");
xConfirmPara(m_transformSkipRotationEnabledFlag==true,"UseResidualRotation must not be enabled for non main-RExt profiles.");
xConfirmPara(m_transformSkipContextEnabledFlag==true,"UseSingleSignificanceMapContext must not be enabled for non main-RExt profiles.");
xConfirmPara(m_rdpcmEnabledFlag[RDPCM_SIGNAL_IMPLICIT]==true,"ImplicitResidualDPCM must not be enabled for non main-RExt profiles.");
xConfirmPara(m_rdpcmEnabledFlag[RDPCM_SIGNAL_EXPLICIT]==true,"ExplicitResidualDPCM must not be enabled for non main-RExt profiles.");
xConfirmPara(m_persistentRiceAdaptationEnabledFlag==true,"GolombRiceParameterAdaption must not be enabled for non main-RExt profiles.");
xConfirmPara(m_extendedPrecisionProcessingFlag==true,"UseExtendedPrecision must not be enabled for non main-RExt profiles.");
xConfirmPara(m_highPrecisionOffsetsEnabledFlag==true,"UseHighPrecisionPredictionWeighting must not be enabled for non main-RExt profiles.");
xConfirmPara(m_enableIntraReferenceSmoothing==false,"EnableIntraReferenceSmoothing must be enabled for non main-RExt profiles.");
xConfirmPara(m_cabacBypassAlignmentEnabledFlag,"AlignCABACBeforeBypass cannot be enabled for non main-RExt profiles.");
break;
caseNONE:
// Non-conforming configuration, so all settings are valid.