Newer
Older
xConfirmPara( m_gcmpSEIFaceRotation[i] != 1 && m_gcmpSEIFaceRotation[i] != 3, "SEIGcmpFaceRotation[i] must be 1 or 3 when SEIGcmpFaceIndex[2] is equal to 4 or 5 and SEIGcmpFaceIndex[i] is equal to 0");
xConfirmPara( m_gcmpSEIFaceRotation[i] != 0 && m_gcmpSEIFaceRotation[i] != 2, "SEIGcmpFaceRotation[i] must be 0 or 2 when SEIGcmpFaceIndex[2] is equal to 4 or 5 and SEIGcmpFaceIndex[i] is equal to 1, 2 or 3");
}
if (m_gcmpSEIGuardBandFlag)
{
xConfirmPara( m_gcmpSEIGuardBandSamplesMinus1 < 0 || m_gcmpSEIGuardBandSamplesMinus1 > 15, "SEIGcmpGuardBandSamplesMinus1 must be in the range of 0 to 15");
}
}
Jeeva Raj A
committed
#if JVET_Z0120_SII_SEI_PROCESSING
if (m_siiSEIEnabled && m_ShutterFilterEnable)
{
xConfirmPara(m_maxTempLayer == 1 || m_maxDecPicBuffering[0] == 1,"Shutter Interval SEI message processing is disabled for single TempLayer and single frame in DPB\n");
}
#endif
if (m_nnPostFilterSEICharacteristicsEnabled)
{
for (int i = 0; i < m_nnPostFilterSEICharacteristicsNumFilters; i++)
{
xConfirmPara(m_nnPostFilterSEICharacteristicsId[i] > MAX_NNPFC_ID, "SEINNPostFilterCharacteristicsId must be in the range of 0 to 2^32-2");
xConfirmPara(m_nnPostFilterSEICharacteristicsModeIdc[i] > 255, "SEINNPostFilterCharacteristicsModeIdc must be in the range of 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsPurpose[i] > 1023, "SEINNPostFilterCharacteristicsPurpose must be in the range of 0 to 1023");
xConfirmPara(m_nnPostFilterSEICharacteristicsNumberInputDecodedPicturesMinus1[i] > 63, "SEINNPostFilterCharacteristicsNumberInputDecodedPicturesMinus1 must be in the range of 0 to 63");
#endif
Philip Cowan
committed
#if JVET_AC0061_TENSOR_BITDEPTH
xConfirmPara(m_nnPostFilterSEICharacteristicsInpTensorBitDepthLumaMinus8[i] > 24, "SEINNPostFilterCharacteristicsInpTensorBitDepthLumaMinus8 must be in the range of 0 to 24");
xConfirmPara(m_nnPostFilterSEICharacteristicsInpTensorBitDepthChromaMinus8[i] > 24, "SEINNPostFilterCharacteristicsInpTensorBitDepthChromaMinus8 must be in the range of 0 to 24");
xConfirmPara(m_nnPostFilterSEICharacteristicsOutTensorBitDepthLumaMinus8[i] > 24, "SEINNPostFilterCharacteristicsOutTensorBitDepthLumaMinus8 must be in the range of 0 to 24");
xConfirmPara(m_nnPostFilterSEICharacteristicsOutTensorBitDepthChromaMinus8[i] > 24, "SEINNPostFilterCharacteristicsOutTensorBitDepthChromaMinus8 must be in the range of 0 to 24");
#else
xConfirmPara(m_nnPostFilterSEICharacteristicsInpTensorBitDepthMinus8[i] > 24, "SEINNPostFilterCharacteristicsInpTensorBitDepthMinus8 must be in the range of 0 to 24");
xConfirmPara(m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[i] > 24, "SEINNPostFilterCharacteristicsOutTensorBitDepthMinus8 must be in the range of 0 to 24");
Philip Cowan
committed
#endif
xConfirmPara(m_nnPostFilterSEICharacteristicsInpFormatIdc[i] > 255, "SEINNPostFilterCharacteristicsInpFormatIdc must be in the range of 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsInpOrderIdc[i] > 255, "SEINNPostFilterCharacteristicsInpOrderIdc must be in the range of 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsColPrimaries[i] > 255, "m_nnPostFilterSEICharacteristicsColPrimaries must in the range 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsTransCharacteristics[i] > 255, "m_nnPostFilterSEICharacteristicsTransCharacteristics must in the range 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsMatrixCoeffs[i] > 255, "m_nnPostFilterSEICharacteristicsMatrixCoeffs must in the range 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsOutFormatIdc[i] > 255, "SEINNPostFilterCharacteristicsOutFormatIdc must be in the range of 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsOutOrderIdc[i] > 255, "SEINNPostFilterCharacteristicsOutOrderIdc must be in the range of 0 to 255");
xConfirmPara(m_nnPostFilterSEICharacteristicsPatchWidthMinus1[i] > 32766, "SEINNPostFilterCharacteristicsPatchWidthMinus1 must be in the range of 0 to 32766");
xConfirmPara(m_nnPostFilterSEICharacteristicsPatchHeightMinus1[i] > 32766, "SEINNPostFilterCharacteristicsPatchHeightMinus1 must be in the range of 0 to 32766");
xConfirmPara(m_nnPostFilterSEICharacteristicsOverlap[i] > 16383, "SEINNPostFilterCharacteristicsOverlap must be in the range of 0 to 16383");
xConfirmPara(m_nnPostFilterSEICharacteristicsPaddingType[i] > (1 << 4) - 1, "SEINNPostFilterPaddingType must be in the range of 0 to 2^4-1");
xConfirmPara(m_nnPostFilterSEICharacteristicsLog2ParameterBitLengthMinus3[i] > 3, "SEINNPostFilterCharacteristicsLog2ParameterBitLengthMinus3 must be in the range of 0 to 3");
xConfirmPara(m_nnPostFilterSEICharacteristicsNumParametersIdc[i] > 52, "SEINNPostFilterCharacteristicsNumParametersIdc must be in the range of 0 to 52");
#if JVET_AC0154
xConfirmPara(m_nnPostFilterSEICharacteristicsTotalKilobyteSize[i] > (uint32_t) (((uint64_t) 1 << 32) - 2), "SEINNPostFilterCharacteristicsTotalKilobyteSize must be in the range of 0 to 2^32-2");
xConfirmPara(m_nnPostFilterSEICharacteristicsNumKmacOperationsIdc[i] > (uint32_t) (((uint64_t) 1 << 32) - 2), "SEICharacteristicsNumKmacOperationsIdc must be in the range of 0 to 2^32-2");
#else
Martin Pettersson
committed
xConfirmPara(m_nnPostFilterSEICharacteristicsTotalKilobyteSize[i] > (uint32_t) (((uint64_t) 1 << 32) - 1), "SEINNPostFilterCharacteristicsTotalKilobyteSize must be in the range of 0 to 2^32-1");
}
}
if (m_nnPostFilterSEIActivationEnabled)
{
xConfirmPara(m_nnPostFilterSEIActivationId > MAX_NNPFA_ID, "SEINNPostFilterActivationId must be in the range of 0 to 2^32-2");
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
if (m_phaseIndicationSEIEnabledFullResolution)
{
xConfirmPara(m_piHorPhaseNumFullResolution < 0, "m_piHorPhaseNumFullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseDenMinus1FullResolution < 0, "m_piHorPhaseDenMinus1FullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseNumFullResolution < 0, "m_piVerPhaseNumFullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseDenMinus1FullResolution < 0, "m_piVerPhaseDenMinus1FullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseDenMinus1FullResolution > 511, "m_piHorPhaseDenMinus1FullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseNumFullResolution > m_piHorPhaseDenMinus1FullResolution + 1, "m_piHorPhaseNumFullResolution must be in the range of 0 to m_piHorPhaseDenMinus1FullResolution + 1, inclusive");
xConfirmPara(m_piVerPhaseDenMinus1FullResolution > 511, "m_piVerPhaseDenMinus1FullResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseNumFullResolution > m_piVerPhaseDenMinus1FullResolution + 1, "m_piVerPhaseNumFullResolution must be in the range of 0 to m_piVerPhaseDenMinus1FullResolution + 1, inclusive");
}
if (m_phaseIndicationSEIEnabledReducedResolution)
{
xConfirmPara(m_piHorPhaseNumReducedResolution < 0, "m_piHorPhaseNumReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseDenMinus1ReducedResolution < 0, "m_piHorPhaseDenMinus1ReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseNumReducedResolution < 0, "m_piVerPhaseNumReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseDenMinus1ReducedResolution < 0, "m_piVerPhaseDenMinus1ReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseDenMinus1ReducedResolution > 511, "m_piHorPhaseDenMinus1ReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piHorPhaseNumReducedResolution > m_piHorPhaseDenMinus1ReducedResolution + 1, "m_piHorPhaseNumReducedResolution must be in the range of 0 to m_piHorPhaseDenMinus1ReducedResolution + 1, inclusive");
xConfirmPara(m_piVerPhaseDenMinus1ReducedResolution > 511, "m_piVerPhaseDenMinus1ReducedResolution must be in the range of 0 to 511, inclusive");
xConfirmPara(m_piVerPhaseNumReducedResolution > m_piVerPhaseDenMinus1ReducedResolution + 1, "m_piVerPhaseNumReducedResolution must be in the range of 0 to m_piVerPhaseDenMinus1ReducedResolution + 1, inclusive");
}
xConfirmPara(m_log2ParallelMergeLevel < 2, "Log2ParallelMergeLevel should be larger than or equal to 2");
xConfirmPara(m_log2ParallelMergeLevel > m_ctuSize, "Log2ParallelMergeLevel should be less than or equal to CTU size");

Karsten Suehring
committed
xConfirmPara(m_preferredTransferCharacteristics > 255, "transfer_characteristics_idc should not be greater than 255.");
xConfirmPara( unsigned(m_ImvMode) > 1, "ImvMode exceeds range (0 to 1)" );
if (m_AffineAmvr)
{
xConfirmPara(!m_ImvMode, "AffineAmvr cannot be used when IMV is disabled.");
}

Karsten Suehring
committed
xConfirmPara( m_decodeBitstreams[0] == m_bitstreamFileName, "Debug bitstream and the output bitstream cannot be equal.\n" );
xConfirmPara( m_decodeBitstreams[1] == m_bitstreamFileName, "Decode2 bitstream and the output bitstream cannot be equal.\n" );
xConfirmPara(unsigned(m_LMChroma) > 1, "LMMode exceeds range (0 to 1)");
Rickard Sjöberg
committed
if (m_gopBasedTemporalFilterEnabled)
{
xConfirmPara(m_temporalSubsampleRatio != 1, "GOP Based Temporal Filter only support Temporal sub-sample ratio 1");
xConfirmPara(
m_gopBasedTemporalFilterPastRefs <= 0 && m_gopBasedTemporalFilterFutureRefs <= 0,
"Either TemporalFilterPastRefs or TemporalFilterFutureRefs must be larger than 0 when TemporalFilter is enabled");
if ((m_gopBasedTemporalFilterPastRefs != 0 && m_gopBasedTemporalFilterPastRefs != TF_DEFAULT_REFS)
|| (m_gopBasedTemporalFilterFutureRefs != 0 && m_gopBasedTemporalFilterFutureRefs != TF_DEFAULT_REFS))
{
msg(WARNING, "Number of frames used for temporal prefilter is different from default.\n");
}
Rickard Sjöberg
committed
}
if (m_bimEnabled)
{
xConfirmPara(m_temporalSubsampleRatio != 1, "Block Importance Mapping only support Temporal sub-sample ratio 1");
xConfirmPara(
m_gopBasedTemporalFilterPastRefs <= 0 && m_gopBasedTemporalFilterFutureRefs <= 0,
"Either TemporalFilterPastRefs or TemporalFilterFutureRefs must be larger than 0 when Block Importance Mapping is enabled" );
Rickard Sjöberg
committed
}

Karsten Suehring
committed
#if EXTENSION_360_VIDEO
check_failed |= m_ext360.verifyParameters();
#endif
xConfirmPara(m_useColorTrans && (m_log2MaxTbSize == 6), "Log2MaxTbSize must be less than 6 when ACT is enabled, otherwise ACT needs to be disabled");
xConfirmPara(m_ctuSize <= 32 && (m_log2MaxTbSize == 6), "Log2MaxTbSize must be less than 6 when CTU size is 32");

Karsten Suehring
committed
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
#undef xConfirmPara
return check_failed;
}
const char *profileToString(const Profile::Name profile)
{
static const uint32_t numberOfProfiles = sizeof(strToProfile)/sizeof(*strToProfile);
for (uint32_t profileIndex = 0; profileIndex < numberOfProfiles; profileIndex++)
{
if (strToProfile[profileIndex].value == profile)
{
return strToProfile[profileIndex].str;
}
}
//if we get here, we didn't find this profile in the list - so there is an error
EXIT( "ERROR: Unknown profile \"" << profile << "\" in profileToString" );
return "";
}
void EncAppCfg::xPrintParameter()
{
//msg( DETAILS, "\n" );
msg( DETAILS, "Input File : %s\n", m_inputFileName.c_str() );
msg( DETAILS, "Bitstream File : %s\n", m_bitstreamFileName.c_str() );
msg( DETAILS, "Reconstruction File : %s\n", m_reconFileName.c_str() );
Jeeva Raj A
committed
#if JVET_Z0120_SII_SEI_PROCESSING
if (m_ShutterFilterEnable && !m_shutterIntervalPreFileName.empty())
{
msg(DETAILS,"SII Pre-processed File : %s\n", m_shutterIntervalPreFileName.c_str());
}
#endif
msg(DETAILS, "Real Format : %dx%d %gHz\n", m_sourceWidth - m_confWinLeft - m_confWinRight,
m_sourceHeight - m_confWinTop - m_confWinBottom, (double) m_frameRate / m_temporalSubsampleRatio);
msg(DETAILS, "Internal Format : %dx%d %gHz\n", m_sourceWidth, m_sourceHeight,
(double) m_frameRate / m_temporalSubsampleRatio);

Karsten Suehring
committed
msg( DETAILS, "Sequence PSNR output : %s\n", ( m_printMSEBasedSequencePSNR ? "Linear average, MSE-based" : "Linear average only" ) );
msg( DETAILS, "Hexadecimal PSNR output : %s\n", ( m_printHexPsnr ? "Enabled" : "Disabled" ) );

Karsten Suehring
committed
msg( DETAILS, "Sequence MSE output : %s\n", ( m_printSequenceMSE ? "Enabled" : "Disabled" ) );
msg( DETAILS, "Frame MSE output : %s\n", ( m_printFrameMSE ? "Enabled" : "Disabled" ) );
msg( DETAILS, "MS-SSIM output : %s\n", ( m_printMSSSIM ? "Enabled" : "Disabled") );

Karsten Suehring
committed
msg( DETAILS, "Cabac-zero-word-padding : %s\n", ( m_cabacZeroWordPaddingEnabled ? "Enabled" : "Disabled" ) );
if (m_isField)
{
msg( DETAILS, "Frame/Field : Field based coding\n" );
msg(DETAILS, "Field index : %u - %d (%d fields)\n", m_frameSkip,
m_frameSkip + m_framesToBeEncoded - 1, m_framesToBeEncoded);

Karsten Suehring
committed
msg( DETAILS, "Field Order : %s field first\n", m_isTopFieldFirst ? "Top" : "Bottom" );
}
else
{
msg( DETAILS, "Frame/Field : Frame based coding\n" );
msg(DETAILS, "Frame index : %u - %d (%d frames)\n", m_frameSkip,
m_frameSkip + m_framesToBeEncoded - 1, m_framesToBeEncoded);

Karsten Suehring
committed
}
{
msg( DETAILS, "Profile : %s\n", profileToString(m_profile) );
}
Adrian Browne
committed
msg( DETAILS,"AllRapPicturesFlag : %d\n", m_allRapPicturesFlag );
msg(DETAILS, "CTU size / min CU size : %d / %d \n", m_maxCuWidth, 1 << m_log2MinCuSize);
msg(DETAILS, "subpicture info present flag : %s\n", m_subPicInfoPresentFlag ? "Enabled" : "Disabled");
Kui Fan
committed
if (m_subPicInfoPresentFlag)
LI JINGYA
committed
{
msg(DETAILS, "number of subpictures : %d\n", m_numSubPics);
msg(DETAILS, "subpicture size same flag : %d\n", m_subPicSameSizeFlag);
msg(DETAILS, "[0]th subpicture size : [%d %d]\n", m_subPicWidth[0], m_subPicHeight[0]);
for (int i = 0; i < m_numSubPics; i++)
{
if (!m_subPicSameSizeFlag)
{
msg(DETAILS, "[%d]th subpicture location : [%d %d]\n", i, m_subPicCtuTopLeftX[i],
m_subPicCtuTopLeftY[i]);
msg(DETAILS, "[%d]th subpicture size : [%d %d]\n", i, m_subPicWidth[i], m_subPicHeight[i]);
msg(DETAILS, "[%d]th subpicture treated as picture : %d\n", i,
m_subPicTreatedAsPicFlag[i] ? "Enabled" : "Disabled");
msg(DETAILS, "loop filter across [%d]th subpicture : %d\n", i,
m_loopFilterAcrossSubpicEnabledFlag[i] ? "Enabled" : "Disabled");
Kui Fan
committed
msg(DETAILS, "subpicture ID present flag : %s\n",
m_subPicIdMappingExplicitlySignalledFlag ? "Enabled" : "Disabled");
if (m_subPicIdMappingExplicitlySignalledFlag)
Kui Fan
committed
{
msg(DETAILS, "subpicture ID signalling present flag : %d\n", m_subPicIdMappingInSpsFlag);
for (int i = 0; i < m_numSubPics; i++)
LI JINGYA
committed
{
msg(DETAILS, "[%d]th subpictures ID length : %d\n", i, m_subPicIdLen);
msg(DETAILS, "[%d]th subpictures ID : %d\n", i, m_subPicId[i]);
msg( DETAILS, "Max TB size : %d \n", 1 << m_log2MaxTbSize );

Karsten Suehring
committed
msg( DETAILS, "Motion search range : %d\n", m_iSearchRange );
msg(DETAILS, "Intra period : %d\n", m_intraPeriod);
msg(DETAILS, "Decoding refresh type : %d\n", m_intraRefreshType);
msg( DETAILS, "DRAP period : %d\n", m_drapPeriod );
msg( DETAILS, "EDRAP period : %d\n", m_edrapPeriod );

Karsten Suehring
committed
if (m_qpIncrementAtSourceFrame.bPresent)
{
msg( DETAILS, "QP : %d (incrementing internal QP at source frame %d)\n", m_iQP, m_qpIncrementAtSourceFrame.value);
}
else
{
msg( DETAILS, "QP : %d\n", m_iQP);
}
msg( DETAILS, "Max dQP signaling subdiv : %d\n", m_cuQpDeltaSubdiv);

Karsten Suehring
committed
msg( DETAILS, "Cb QP Offset (dual tree) : %d (%d)\n", m_cbQpOffset, m_cbQpOffsetDualTree);
msg( DETAILS, "Cr QP Offset (dual tree) : %d (%d)\n", m_crQpOffset, m_crQpOffsetDualTree);
msg( DETAILS, "QP adaptation : %d (range=%d)\n", m_bUseAdaptiveQP, (m_bUseAdaptiveQP ? m_iQPAdaptationRange : 0) );
msg(DETAILS, "Input bit depth : (Y:%d, C:%d)\n", m_inputBitDepth[ChannelType::LUMA],
m_inputBitDepth[ChannelType::CHROMA]);
msg(DETAILS, "MSB-extended bit depth : (Y:%d, C:%d)\n", m_msbExtendedBitDepth[ChannelType::LUMA],
m_msbExtendedBitDepth[ChannelType::CHROMA]);
msg(DETAILS, "Internal bit depth : (Y:%d, C:%d)\n", m_internalBitDepth[ChannelType::LUMA],
m_internalBitDepth[ChannelType::CHROMA]);
Philippe de Lagrange
committed
if (m_cuChromaQpOffsetList.size() > 0)
{
msg( DETAILS, "Chroma QP offset list : (" );
for (int i=0; i < m_cuChromaQpOffsetList.size(); i++)
{
msg(DETAILS, "%d %d %d%s", m_cuChromaQpOffsetList[i].u.comp.cbOffset, m_cuChromaQpOffsetList[i].u.comp.crOffset,
m_cuChromaQpOffsetList[i].u.comp.jointCbCrOffset, (i + 1 < m_cuChromaQpOffsetList.size() ? ", " : ")\n"));
Philippe de Lagrange
committed
}
msg( DETAILS, "cu_chroma_qp_offset_subdiv : %d\n", m_cuChromaQpOffsetSubdiv);
Philippe de Lagrange
committed
msg( DETAILS, "cu_chroma_qp_offset_enabled_flag : %s\n", (m_cuChromaQpOffsetEnabled ? "Enabled" : "Disabled") );
Philippe de Lagrange
committed
}
else
{
msg( DETAILS, "Chroma QP offset list : Disabled\n" );
}

Karsten Suehring
committed
msg( DETAILS, "extended_precision_processing_flag : %s\n", (m_extendedPrecisionProcessingFlag ? "Enabled" : "Disabled") );
Hong-Jheng Jhu
committed
msg( DETAILS, "TSRC_Rice_present_flag : %s\n", (m_tsrcRicePresentFlag ? "Enabled" : "Disabled") );
msg( DETAILS, "reverse_last_sig_coeff_enabled_flag : %s\n", (m_reverseLastSigCoeffEnabledFlag ? "Enabled" : "Disabled") );

Karsten Suehring
committed
msg( DETAILS, "transform_skip_rotation_enabled_flag : %s\n", (m_transformSkipRotationEnabledFlag ? "Enabled" : "Disabled") );
msg( DETAILS, "transform_skip_context_enabled_flag : %s\n", (m_transformSkipContextEnabledFlag ? "Enabled" : "Disabled") );
msg( DETAILS, "high_precision_offsets_enabled_flag : %s\n", (m_highPrecisionOffsetsEnabledFlag ? "Enabled" : "Disabled") );
msg( DETAILS, "rrc_rice_extension_flag : %s\n", (m_rrcRiceExtensionEnableFlag ? "Enabled" : "Disabled") );

Karsten Suehring
committed
msg( DETAILS, "persistent_rice_adaptation_enabled_flag: %s\n", (m_persistentRiceAdaptationEnabledFlag ? "Enabled" : "Disabled") );
msg( DETAILS, "cabac_bypass_alignment_enabled_flag : %s\n", (m_cabacBypassAlignmentEnabledFlag ? "Enabled" : "Disabled") );
switch (m_costMode)
{
case COST_STANDARD_LOSSY: msg( DETAILS, "Cost function: : Lossy coding (default)\n"); break;
case COST_SEQUENCE_LEVEL_LOSSLESS: msg( DETAILS, "Cost function: : Sequence_level_lossless coding\n"); break;
case COST_LOSSLESS_CODING: msg( DETAILS, "Cost function: : Lossless coding with fixed QP of %d\n", LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP); break;
case COST_MIXED_LOSSLESS_LOSSY_CODING: msg( DETAILS, "Cost function: : Mixed_lossless_lossy coding with QP'=%d for lossless evaluation\n", LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP_PRIME); break;
default: msg( DETAILS, "Cost function: : Unknown\n"); break;
}
msg( DETAILS, "RateControl : %d\n", m_RCEnableRateControl );
msg( DETAILS, "WeightedPredMethod : %d\n", int(m_weightedPredictionMethod));

Karsten Suehring
committed
if(m_RCEnableRateControl)
{
msg( DETAILS, "TargetBitrate : %d\n", m_RCTargetBitrate );
msg( DETAILS, "KeepHierarchicalBit : %d\n", m_RCKeepHierarchicalBit );
msg( DETAILS, "LCULevelRC : %d\n", m_RCLCULevelRC );
msg( DETAILS, "UseLCUSeparateModel : %d\n", m_RCUseLCUSeparateModel );
msg( DETAILS, "InitialQP : %d\n", m_RCInitialQP );
msg( DETAILS, "ForceIntraQP : %d\n", m_RCForceIntraQP );
msg( DETAILS, "CpbSaturation : %d\n", m_RCCpbSaturationEnabled );
if (m_RCCpbSaturationEnabled)
{
msg( DETAILS, "CpbSize : %d\n", m_RCCpbSize);
msg( DETAILS, "InitalCpbFullness : %.2f\n", m_RCInitialCpbFullness);
}
}
Seungwook Hong
committed
#if GDR_ENABLED
msg(DETAILS, "GDREnabled : %d\n", m_gdrEnabled);
if (m_gdrEnabled)
{
msg(DETAILS, "GDR Start : %d\n", m_gdrPocStart);
msg(DETAILS, "GDR Interval : %d\n", m_gdrInterval);
msg(DETAILS, "GDR Period : %d\n", m_gdrPeriod);
}
#endif

Karsten Suehring
committed
msg( DETAILS, "Max Num Merge Candidates : %d\n", m_maxNumMergeCand );
msg( DETAILS, "Max Num Affine Merge Candidates : %d\n", m_maxNumAffineMergeCand );
msg( DETAILS, "Max Num Geo Merge Candidates : %d\n", m_maxNumGeoCand );
msg( DETAILS, "Max Num IBC Merge Candidates : %d\n", m_maxNumIBCMergeCand );

Karsten Suehring
committed
msg( DETAILS, "\n");
msg( VERBOSE, "TOOL CFG: ");
((m_internalBitDepth[ChannelType::LUMA] > m_msbExtendedBitDepth[ChannelType::LUMA])
|| (m_internalBitDepth[ChannelType::CHROMA] > m_msbExtendedBitDepth[ChannelType::CHROMA])));

Karsten Suehring
committed
msg( VERBOSE, "HAD:%d ", m_bUseHADME );
msg( VERBOSE, "RDQ:%d ", m_useRDOQ );
msg( VERBOSE, "RDQTS:%d ", m_useRDOQTS );
msg( VERBOSE, "RDpenalty:%d ", m_rdPenalty );
#if SHARP_LUMA_DELTA_QP
msg( VERBOSE, "LQP:%d ", m_lumaLevelToDeltaQPMapping.mode );
#endif
msg( VERBOSE, "SQP:%d ", m_uiDeltaQpRD );
msg( VERBOSE, "ASR:%d ", m_bUseASR );
msg( VERBOSE, "MinSearchWindow:%d ", m_minSearchWindow );
msg( VERBOSE, "RestrictMESampling:%d ", m_bRestrictMESampling );
msg( VERBOSE, "FEN:%d ", int(m_fastInterSearchMode) );
msg( VERBOSE, "ECU:%d ", m_bUseEarlyCU );
msg( VERBOSE, "FDM:%d ", m_useFastDecisionForMerge );
msg( VERBOSE, "ESD:%d ", m_useEarlySkipDetection );
msg( VERBOSE, "TransformSkip:%d ", m_useTransformSkip );
msg( VERBOSE, "TransformSkipFast:%d ", m_useTransformSkipFast );
msg( VERBOSE, "TransformSkipLog2MaxSize:%d ", m_log2MaxTransformSkipBlockSize);
msg(VERBOSE, "ChromaTS:%d ", m_useChromaTS);
msg( VERBOSE, "BDPCM:%d ", m_useBDPCM );
msg( VERBOSE, "Tiles: %dx%d ", m_numTileCols, m_numTileRows );
msg( VERBOSE, "Slices: %d ", m_numSlicesInPic);
msg( VERBOSE, "MCTS:%d ", m_MCTSEncConstraint );

Karsten Suehring
committed
msg( VERBOSE, "ALF:%d ", m_alf ? 1 : 0 );
msg( VERBOSE, "CCALF:%d ", m_ccalf ? 1 : 0 );
msg(VERBOSE, "MaxNumALFAPS %d ", m_maxNumAlfAps);
msg(VERBOSE, "AlfapsIDShift %d ", m_alfapsIDShift);
msg(VERBOSE, "ConstantJointCbCrSignFlag", m_constantJointCbCrSignFlag);

Karsten Suehring
committed
msg( VERBOSE, "WPP:%d ", (int)m_useWeightedPred);
msg( VERBOSE, "WPB:%d ", (int)m_useWeightedBiPred);
msg( VERBOSE, "PME:%d ", m_log2ParallelMergeLevel);
const int wavefrontSubstreams =
m_entropyCodingSyncEnabledFlag ? (m_sourceHeight + m_maxCuHeight - 1) / m_maxCuHeight : 1;
msg(VERBOSE, " WaveFrontSynchro:%d WaveFrontSubstreams:%d", m_entropyCodingSyncEnabledFlag ? 1 : 0,
wavefrontSubstreams);

Karsten Suehring
committed
msg( VERBOSE, " ScalingList:%d ", m_useScalingListId );
Martin Pettersson
committed
msg( VERBOSE, "TMVPMode:%d ", m_TMVPModeId );

Karsten Suehring
committed
msg( VERBOSE, " DQ:%d ", m_depQuantEnabledFlag);
msg( VERBOSE, " SignBitHidingFlag:%d ", m_signDataHidingEnabledFlag);
msg( VERBOSE, "RecalQP:%d ", m_recalculateQPAccordingToLambda ? 1 : 0 );
{
msg( VERBOSE, "\nTOOL CFG: " );
msg( VERBOSE, "LFNST:%d ", m_LFNST );

Karsten Suehring
committed
msg( VERBOSE, "Affine:%d ", m_Affine );
if ( m_Affine )
{
msg( VERBOSE, "AffineType:%d ", m_AffineType );
msg( VERBOSE, "AdaptBypassAffineMe:%d ", m_adaptBypassAffineMe);

Karsten Suehring
committed
}
msg(VERBOSE, "PROF:%d ", m_PROF);
msg(VERBOSE, "SbTMVP:%d ", m_sbTmvpEnableFlag);

Karsten Suehring
committed
msg( VERBOSE, "IMV:%d ", m_ImvMode );
msg( VERBOSE, "BIO:%d ", m_BIO );

Karsten Suehring
committed
msg( VERBOSE, "LMChroma:%d ", m_LMChroma );
msg( VERBOSE, "HorCollocatedChroma:%d ", m_horCollocatedChromaFlag );
msg( VERBOSE, "VerCollocatedChroma:%d ", m_verCollocatedChromaFlag );
{
std::string s;
const int m = m_mtsMode + 4 * m_mtsImplicitIntra;
if (m != 0)
{
s = "(";
s += (m & 1) != 0 ? "explicit intra" : "implicit intra";
if (m & 2)
{
s += ", explicit inter";
}
s += ")";
}
msg(VERBOSE, "MTS:%d%s ", m != 0, s.c_str());
}
msg( VERBOSE, "SBT:%d ", m_SBT );
msg( VERBOSE, "ISP:%d ", m_ISP );
msg( VERBOSE, "CompositeLTReference:%d ", m_compositeRefEnabled);
msg( VERBOSE, "Bcw:%d ", m_bcw );
msg( VERBOSE, "BcwFast:%d ", m_BcwFast );
Shunsuke Iwamura
committed
msg( VERBOSE, "LADF:%d ", m_LadfEnabed );
msg(VERBOSE, "CIIP:%d ", m_ciip);
msg( VERBOSE, "Geo:%d ", m_Geo );
m_allowDisFracMMVD = m_MMVD ? m_allowDisFracMMVD : false;
if ( m_MMVD )
msg(VERBOSE, "AllowDisFracMMVD:%d ", m_allowDisFracMMVD);
msg( VERBOSE, "AffineAmvr:%d ", m_AffineAmvr );
Hongbin Liu
committed
m_AffineAmvrEncOpt = m_AffineAmvr ? m_AffineAmvrEncOpt : false;
msg( VERBOSE, "AffineAmvrEncOpt:%d ", m_AffineAmvrEncOpt );
msg(VERBOSE, "AffineAmvp:%d ", m_AffineAmvp);
msg(VERBOSE, "DMVR:%d ", m_DMVR);
msg(VERBOSE, "MmvdDisNum:%d ", m_MmvdDisNum);

Karsten Suehring
committed
}
m_useColorTrans = m_chromaFormatIdc == ChromaFormat::_444 ? m_useColorTrans : false;
msg(VERBOSE, "ACT:%d ", m_useColorTrans ? 1 : 0);
msg(VERBOSE, "PLT:%d ", m_PLTMode);
msg(VERBOSE, "IBC:%d ", m_IBCMode);
msg( VERBOSE, "HashME:%d ", m_HashME );
msg( VERBOSE, "WrapAround:%d ", m_wrapAround);
if( m_wrapAround )
msg( VERBOSE, "WrapAroundOffset:%d ", m_wrapAroundOffset );

Karsten Suehring
committed
// ADD_NEW_TOOL (add some output indicating the usage of tools)
msg( VERBOSE, "VirtualBoundariesEnabledFlag:%d ", m_virtualBoundariesEnabledFlag );
msg( VERBOSE, "VirtualBoundariesPresentInSPSFlag:%d ", m_virtualBoundariesPresentFlag );
if( m_virtualBoundariesPresentFlag )
{
Sheng-Yen Lin
committed
msg(VERBOSE, "vertical virtual boundaries:[");
for (unsigned i = 0; i < m_numVerVirtualBoundaries; i++)
{
msg(VERBOSE, " %d", m_virtualBoundariesPosX[i]);
}
msg(VERBOSE, " ] horizontal virtual boundaries:[");
for (unsigned i = 0; i < m_numHorVirtualBoundaries; i++)
{
msg(VERBOSE, " %d", m_virtualBoundariesPosY[i]);
}
msg(VERBOSE, " ] ");
}
msg(VERBOSE, "Reshape:%d ", m_lmcsEnabled);
if (m_lmcsEnabled)
msg(VERBOSE, "(Signal:%s ", m_reshapeSignalType == 0 ? "SDR" : (m_reshapeSignalType == 2 ? "HDR-HLG" : "HDR-PQ"));
msg(VERBOSE, "Opt:%d", m_adpOption);
if (m_adpOption > 0) { msg(VERBOSE, " CW:%d", m_initialCW); }
msg(VERBOSE, " CSoffset:%d", m_CSoffset);
msg(VERBOSE, "MRL:%d ", m_MRL);
msg(VERBOSE, "MIP:%d ", m_MIP);

Karsten Suehring
committed
msg( VERBOSE, "\nFAST TOOL CFG: " );
msg( VERBOSE, "LCTUFast:%d ", m_useFastLCTU );

Karsten Suehring
committed
msg( VERBOSE, "FastMrg:%d ", m_useFastMrg );
#if JVET_AC0139_UNIFIED_MERGE
msg( VERBOSE, "MaxMergeRdCandNumTotal:%d MergeRdCandQuotaRegular:%d MergeRdCandQuotaRegularSmallBlk:%d ",
m_maxMergeRdCandNumTotal, m_mergeRdCandQuotaRegular, m_mergeRdCandQuotaRegularSmallBlk);
msg( VERBOSE, "MergeRdCandQuotaSubBlk:%d MergeRdCandQuotaCiip:%d MergeRdCandQuotaGpm:%d ",
m_mergeRdCandQuotaSubBlk, m_mergeRdCandQuotaCiip, m_mergeRdCandQuotaGpm);
#endif

Karsten Suehring
committed
msg( VERBOSE, "PBIntraFast:%d ", m_usePbIntraFast );
if( m_ImvMode ) msg( VERBOSE, "IMV4PelFast:%d ", m_Imv4PelFast );
if (m_mtsMode)
{
msg(VERBOSE, "MTSMaxCand: %1d(intra) %1d(inter) ", m_MTSIntraMaxCand, m_MTSInterMaxCand);
}
if( m_ISP ) msg( VERBOSE, "ISPFast:%d ", m_useFastISP );
if( m_LFNST ) msg( VERBOSE, "FastLFNST:%d ", m_useFastLFNST );
msg( VERBOSE, "AMaxBT:%d ", m_useAMaxBT );
msg( VERBOSE, "E0023FastEnc:%d ", m_e0023FastEnc );
msg( VERBOSE, "ContentBasedFastQtbt:%d ", m_contentBasedFastQtbt );
msg( VERBOSE, "UseNonLinearAlfLuma:%d ", m_useNonLinearAlfLuma );
msg( VERBOSE, "UseNonLinearAlfChroma:%d ", m_useNonLinearAlfChroma );
msg( VERBOSE, "MaxNumAlfAlternativesChroma:%d ", m_maxNumAlfAlternativesChroma );
Philipp Merkle
committed
if( m_MIP ) msg(VERBOSE, "FastMIP:%d ", m_useFastMIP);
Lien-Fei Chen
committed
msg( VERBOSE, "TTFastSkip:%d ", m_ttFastSkip);
msg( VERBOSE, "TTFastSkipThr:%.3f ", m_ttFastSkipThr);
msg( VERBOSE, "FastLocalDualTree:%d ", m_fastLocalDualTreeMode );

Karsten Suehring
committed
if (m_resChangeInClvsEnabled)
msg( VERBOSE, "RPR:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor, m_scalingRatioVer, m_switchPocPeriod );
#endif
#if JVET_AC0096
if (m_gopBasedRPREnabledFlag || m_rprFunctionalityTestingEnabledFlag)
#else
Kenneth Andersson
committed
if (m_gopBasedRPREnabledFlag)
Kenneth Andersson
committed
{
#if JVET_AC0096
msg(VERBOSE, "RPR:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor, m_scalingRatioVer, m_rprFunctionalityTestingEnabledFlag ? m_rprSwitchingSegmentSize : m_gopSize);
msg(VERBOSE, "RPR2:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor2, m_scalingRatioVer2, m_rprFunctionalityTestingEnabledFlag ? m_rprSwitchingSegmentSize : m_gopSize);
msg(VERBOSE, "RPR3:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor3, m_scalingRatioVer3, m_rprFunctionalityTestingEnabledFlag ? m_rprSwitchingSegmentSize : m_gopSize);
#else
Kenneth Andersson
committed
msg(VERBOSE, "RPR2:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor2, m_scalingRatioVer2, m_switchPocPeriod);
msg(VERBOSE, "RPR3:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor3, m_scalingRatioVer3, m_switchPocPeriod);
Kenneth Andersson
committed
}
#if JVET_AC0096
else
{
msg(VERBOSE, "RPR:(%1.2lfx, %1.2lfx)|%d ", m_scalingRatioHor, m_scalingRatioVer, m_switchPocPeriod);
}
#endif
}
else
{
msg( VERBOSE, "RPR:%d ", 0 );
if (m_rplOfDepLayerInSh)
{
msg(VERBOSE, "RPLofDepLayerInSH:%d ", m_rplOfDepLayerInSh);
}
msg(VERBOSE, "TemporalFilter:%d/%d ", m_gopBasedTemporalFilterPastRefs, m_gopBasedTemporalFilterFutureRefs);
msg(VERBOSE, "SEI CTI:%d ", m_ctiSEIEnabled);
msg(VERBOSE, "BIM:%d ", m_bimEnabled);
msg(VERBOSE, "SEI FGC:%d ", m_fgcSEIEnabled);
msg(VERBOSE, "SEI processing Order:%d ", m_poSEIEnabled);
Rickard Sjöberg
committed
#if EXTENSION_360_VIDEO
m_ext360.outputConfigurationSummary();
#endif
if( m_constrainedRaslEncoding )
{
msg(VERBOSE, "\n\nWarning: with SEIConstrainedRASL enabled, LMChroma estimation is skipped in RASL frames" );
Christian Bartnik
committed
if( m_wrapAround )
{
msg(VERBOSE, "\n and wrap-around motion compensation is disabled in RASL frames" );
}

Karsten Suehring
committed
msg( VERBOSE, "\n\n");
msg( NOTICE, "\n");
fflush( stdout );
}
Martin Pettersson
committed
bool EncAppCfg::xHasNonZeroTemporalID ()
{
Martin Pettersson
committed
{
if ( m_GOPList[i].m_temporalId != 0 )
{
return true;
}
}
return false;
}
#if GREEN_METADATA_SEI_ENABLED
bool EncAppCfg::getGMFAUsage() {
return m_GMFA;
}
std::string EncAppCfg::getGMFAFile (){
return m_GMFAFile;
}
#endif
Martin Pettersson
committed
bool EncAppCfg::xHasLeadingPicture ()
{
Martin Pettersson
committed
{
for ( unsigned int j = 0; j < m_GOPList[i].m_numRefPics0; j++)
{
if ( m_GOPList[i].m_deltaRefPics0[j] < 0 )
{
return true;
}
}
for ( unsigned int j = 0; j < m_GOPList[i].m_numRefPics1; j++)
{
if ( m_GOPList[i].m_deltaRefPics1[j] < 0 )
{
return true;
}
}
}
return false;
}

Karsten Suehring
committed
bool confirmPara(bool bflag, const char* message)
{
if (!bflag)
{
return false;
}
msg( ERROR, "Error: %s\n",message);
return true;
}
Martin Pettersson
committed