diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg index 7676e21f1f6af487cc05626cd1f635789f7f86fc..b11046f7ad0a07d07932be6c4f74ea060ee8b020 100644 --- a/cfg/encoder_randomaccess_vtm.cfg +++ b/cfg/encoder_randomaccess_vtm.cfg @@ -45,7 +45,7 @@ FEN : 1 # Fast encoder decision FDM : 1 # Fast Decision for Merge RD cost #======== Quantization ============= -QP : 42 # Quantization parameter(0-51) +QP : 32 # Quantization parameter(0-51) MaxDeltaQP : 0 # CU-based multi-QP optimization MaxCuDQPSubdiv : 0 # Maximum subdiv for CU luma Qp adjustment DeltaQpRD : 0 # Slice-based multi-QP optimization @@ -96,8 +96,12 @@ RCForceIntraQP : 0 # Rate control: force int SEIDecodedPictureHash : 0 ======= LoopFilterTcOffset_div2 : 0 +<<<<<<< HEAD SEIDecodedPictureHash : 1 >>>>>>> f765570c... Commit Q0117. HLS clenup: DPS is changed to DCI +======= +SEIDecodedPictureHash : 0 +>>>>>>> a03006cc... Fix issues raised by the SW coordinators CbQpOffset : 0 CrQpOffset : 0 SameCQPTablesForAllChroma : 1 diff --git a/cfg/per-sequence/BasketballPass.cfg b/cfg/per-sequence/BasketballPass.cfg index 1f8fa9011f29cb68602cdcfa63d6a4adfd06b2a2..c6b756c9423418e82deebceaf0a87ec08e33cf24 100644 --- a/cfg/per-sequence/BasketballPass.cfg +++ b/cfg/per-sequence/BasketballPass.cfg @@ -1,11 +1,11 @@ #======== File I/O =============== -InputFile : D:\sequences/BasketballPass_416x240_50.yuv +InputFile : BasketballPass_416x240_50.yuv InputBitDepth : 8 # Input bitdepth InputChromaFormat : 420 # Ratio of luminance to chrominance samples FrameRate : 50 # Frame Rate per second FrameSkip : 0 # Number of frames to be skipped in input SourceWidth : 416 # Input frame width SourceHeight : 240 # Input frame height -FramesToBeEncoded : 1 # Number of frames to be coded -EnableDecodingCapabilityInformation : 1 +FramesToBeEncoded : 500 # Number of frames to be coded + Level : 2.1 diff --git a/doc/software-manual.tex b/doc/software-manual.tex index f7f7a823673ac956452e674c93a60b0e8a5258fc..956db0542621352b4a237852a5ad84efe301ddb9 100644 --- a/doc/software-manual.tex +++ b/doc/software-manual.tex @@ -992,10 +992,10 @@ NB: There is currently only limited validation that the encoder configuration co Indicates interoperability metadata registered as specified by X Recommendation ITU-T T.35. \\ -\Option{EnableDecodingParameterSet} & +\Option{EnableDecodingCapabilityInformation} & %\ShortOption{\None} & \Default{false} & -Enables writing of a decoding parameter set. If disabled, no parameter set will be written and the specical reserved ID zero will be used in the SPS indicating no constraint. +Enables writing of a decoding capability information (DCI). If disabled, no DCI will be written. \\ \Option{MaxBitDepthConstraint} & @@ -1473,12 +1473,6 @@ $} \end{displaymath} \\ -\Option{Log2ParallelMergeLevel} & -%\ShortOption{\None} & -\Default{2} & -Defines the SPS-derived Log2ParallelMergeLevel variable. -\\ - \Option{MaxNumMergeCand} & %\ShortOption{\None} & \Default{5} & diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index 525389d6ccb93afd39613b9f56ca29647e2de736..e90d1a48f3519e9701720eed266e67c5e1923e48 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -698,7 +698,7 @@ protected: #endif #if JVET_Q0117_PARAMETER_SETS_CLEANUP - bool m_DCIEnabled; ///< enable DCI + bool m_DCIEnabled; ///< enable Decoding Capability Information (DCI) #else bool m_decodingParameterSetEnabled; ///< enable decoding parameter set #endif diff --git a/source/App/Parcat/parcat.cpp b/source/App/Parcat/parcat.cpp index 87f8a6e62a105ef319de4625dcc84a15d8960968..964c97e6b28897c6e6bd1c99801a90c742781650 100644 --- a/source/App/Parcat/parcat.cpp +++ b/source/App/Parcat/parcat.cpp @@ -392,15 +392,13 @@ std::vector<uint8_t> filter_segment(const std::vector<uint8_t> & v, int idx, int skip_next_sei = true; idr_found = true; } - - if( ( idx > 1 && ( nalu_type == NAL_UNIT_CODED_SLICE_IDR_W_RADL || nalu_type == NAL_UNIT_CODED_SLICE_IDR_N_LP ) ) || ( ( idx > 1 && !idr_found ) #if JVET_Q0117_PARAMETER_SETS_CLEANUP - && ( nalu_type == NAL_UNIT_DCI + if ((idx > 1 && (nalu_type == NAL_UNIT_CODED_SLICE_IDR_W_RADL || nalu_type == NAL_UNIT_CODED_SLICE_IDR_N_LP)) || ((idx > 1 && !idr_found) && (nalu_type == NAL_UNIT_DCI || nalu_type == NAL_UNIT_VPS || nalu_type == NAL_UNIT_SPS || nalu_type == NAL_UNIT_PPS || nalu_type == NAL_UNIT_PREFIX_APS || nalu_type == NAL_UNIT_SUFFIX_APS || nalu_type == NAL_UNIT_PH || nalu_type == NAL_UNIT_ACCESS_UNIT_DELIMITER)) + || (nalu_type == NAL_UNIT_SUFFIX_SEI && skip_next_sei)) #else - && ( nalu_type == NAL_UNIT_DPS -#endif - || nalu_type == NAL_UNIT_VPS || nalu_type == NAL_UNIT_SPS || nalu_type == NAL_UNIT_PPS || nalu_type == NAL_UNIT_PREFIX_APS || nalu_type == NAL_UNIT_SUFFIX_APS || nalu_type == NAL_UNIT_PH || nalu_type == NAL_UNIT_ACCESS_UNIT_DELIMITER ) ) + if ((idx > 1 && (nalu_type == NAL_UNIT_CODED_SLICE_IDR_W_RADL || nalu_type == NAL_UNIT_CODED_SLICE_IDR_N_LP)) || ((idx > 1 && !idr_found) && (nalu_type == NAL_UNIT_DPS || nalu_type == NAL_UNIT_VPS || nalu_type == NAL_UNIT_SPS || nalu_type == NAL_UNIT_PPS || nalu_type == NAL_UNIT_PREFIX_APS || nalu_type == NAL_UNIT_SUFFIX_APS || nalu_type == NAL_UNIT_PH || nalu_type == NAL_UNIT_ACCESS_UNIT_DELIMITER)) || (nalu_type == NAL_UNIT_SUFFIX_SEI && skip_next_sei)) +#endif { } else diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index cffd19296df6b4528244bc86c1e9c1276b78afbc..a2d4bff3664d145fba06a770e4a59c0cdeda6d5b 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -1573,16 +1573,22 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl for( auto& naluTemporalId : m_accessUnitNals ) { - if( #if JVET_Q0117_PARAMETER_SETS_CLEANUP + if ( naluTemporalId.first != NAL_UNIT_DCI + && naluTemporalId.first != NAL_UNIT_VPS + && naluTemporalId.first != NAL_UNIT_SPS + && naluTemporalId.first != NAL_UNIT_EOS + && naluTemporalId.first != NAL_UNIT_EOB) #else + if ( naluTemporalId.first != NAL_UNIT_DPS -#endif && naluTemporalId.first != NAL_UNIT_VPS && naluTemporalId.first != NAL_UNIT_SPS && naluTemporalId.first != NAL_UNIT_EOS && naluTemporalId.first != NAL_UNIT_EOB ) +#endif + { CHECK( naluTemporalId.second < nalu.m_temporalId, "TemporalId shall be greater than or equal to the TemporalId of the layer access unit containing the NAL unit" ); } diff --git a/source/Lib/EncoderLib/AnnexBwrite.h b/source/Lib/EncoderLib/AnnexBwrite.h index dff2f5b23dac5f37d8fc5ff2dd18fd62b78c805d..8be7da54117f6ba3baea3dbe5cb8255701acaad7 100644 --- a/source/Lib/EncoderLib/AnnexBwrite.h +++ b/source/Lib/EncoderLib/AnnexBwrite.h @@ -59,13 +59,13 @@ static std::vector<uint32_t> writeAnnexB(std::ostream& out, const AccessUnit& au uint32_t size = 0; /* size of annexB unit in bytes */ static const uint8_t start_code_prefix[] = {0,0,0,1}; - if (it == au.begin() + #if JVET_Q0117_PARAMETER_SETS_CLEANUP - || nalu.m_nalUnitType == NAL_UNIT_DCI + if (it == au.begin() || nalu.m_nalUnitType == NAL_UNIT_DCI || nalu.m_nalUnitType == NAL_UNIT_SPS || nalu.m_nalUnitType == NAL_UNIT_VPS || nalu.m_nalUnitType == NAL_UNIT_PPS) #else - || nalu.m_nalUnitType == NAL_UNIT_DPS + if (it == au.begin() || nalu.m_nalUnitType == NAL_UNIT_DPS || nalu.m_nalUnitType == NAL_UNIT_SPS || nalu.m_nalUnitType == NAL_UNIT_VPS || nalu.m_nalUnitType == NAL_UNIT_PPS) #endif - || nalu.m_nalUnitType == NAL_UNIT_SPS || nalu.m_nalUnitType == NAL_UNIT_VPS || nalu.m_nalUnitType == NAL_UNIT_PPS) + { /* From AVC, When any of the following conditions are fulfilled, the * zero_byte syntax element shall be present: diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 13f08cb8c4c63a95e7bd42c82fc786ff193af25f..b2ceb4759e410c837290ca7fdf5c80bdd00ea24f 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -723,7 +723,7 @@ protected: >>>>>>> f765570c... Commit Q0117. HLS clenup: DPS is changed to DCI #if JVET_Q0117_PARAMETER_SETS_CLEANUP DCI m_dci; - bool m_DCIEnabled; ///< enable DCI + bool m_DCIEnabled; ///< enable Decoding Capability Information (DCI) #else <<<<<<< HEAD >>>>>>> effa8e16... Commit Q0117. HLS clenup: DPS is changed to DCI diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index 2fde5d20ce3ce746c2a5b06fd07da2c0314f3b1d..2b72176d5df0b7701ba0067a18b2bf240df0041f 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -518,17 +518,23 @@ void EncGOP::xWriteLeadingSEIOrdered (SEIMessages& seiMessages, SEIMessages& duI { AccessUnit::iterator itNalu = accessUnit.begin(); - while ( (itNalu!=accessUnit.end())&& - ( (*itNalu)->m_nalUnitType==NAL_UNIT_ACCESS_UNIT_DELIMITER - || (*itNalu)->m_nalUnitType==NAL_UNIT_VPS #if JVET_Q0117_PARAMETER_SETS_CLEANUP - || (*itNalu)->m_nalUnitType==NAL_UNIT_DCI + while ((itNalu != accessUnit.end()) && + ((*itNalu)->m_nalUnitType == NAL_UNIT_ACCESS_UNIT_DELIMITER + || (*itNalu)->m_nalUnitType == NAL_UNIT_VPS + || (*itNalu)->m_nalUnitType == NAL_UNIT_DCI + || (*itNalu)->m_nalUnitType == NAL_UNIT_SPS + || (*itNalu)->m_nalUnitType == NAL_UNIT_PPS + )) #else - || (*itNalu)->m_nalUnitType==NAL_UNIT_DPS + while ((itNalu != accessUnit.end()) && + ((*itNalu)->m_nalUnitType == NAL_UNIT_ACCESS_UNIT_DELIMITER + || (*itNalu)->m_nalUnitType == NAL_UNIT_VPS + || (*itNalu)->m_nalUnitType == NAL_UNIT_DPS + || (*itNalu)->m_nalUnitType == NAL_UNIT_SPS + || (*itNalu)->m_nalUnitType == NAL_UNIT_PPS + )) #endif - || (*itNalu)->m_nalUnitType==NAL_UNIT_SPS - || (*itNalu)->m_nalUnitType==NAL_UNIT_PPS - )) { itNalu++; } @@ -4246,13 +4252,11 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni if( ( *it )->m_nalUnitType != NAL_UNIT_PREFIX_SEI && ( *it )->m_nalUnitType != NAL_UNIT_SUFFIX_SEI ) { numRBSPBytes += numRBSPBytes_nal; - if (it == accessUnit.begin() || (*it)->m_nalUnitType == NAL_UNIT_VPS #if JVET_Q0117_PARAMETER_SETS_CLEANUP - || (*it)->m_nalUnitType == NAL_UNIT_DCI + if (it == accessUnit.begin() || (*it)->m_nalUnitType == NAL_UNIT_VPS || (*it)->m_nalUnitType == NAL_UNIT_DCI || (*it)->m_nalUnitType == NAL_UNIT_SPS || (*it)->m_nalUnitType == NAL_UNIT_PPS) #else - || (*it)->m_nalUnitType == NAL_UNIT_DPS + if (it == accessUnit.begin() || (*it)->m_nalUnitType == NAL_UNIT_VPS || (*it)->m_nalUnitType == NAL_UNIT_DPS || (*it)->m_nalUnitType == NAL_UNIT_SPS || (*it)->m_nalUnitType == NAL_UNIT_PPS) #endif - || (*it)->m_nalUnitType == NAL_UNIT_SPS || (*it)->m_nalUnitType == NAL_UNIT_PPS) { numRBSPBytes += 4; } diff --git a/source/Lib/EncoderLib/EncLib.h b/source/Lib/EncoderLib/EncLib.h index 8538855cccc5dc611882d868ec101c4556856bbc..f60f7b6fc54e141f69f6c624ee65f9082ca58382 100644 --- a/source/Lib/EncoderLib/EncLib.h +++ b/source/Lib/EncoderLib/EncLib.h @@ -180,7 +180,7 @@ protected: void xInitVPS(VPS& vps, const SPS& sps); ///< initialize VPS from encoder options #if JVET_Q0117_PARAMETER_SETS_CLEANUP - void xInitDCI(DCI& dci, const SPS& sps); ///< initialize DPS from encoder options + void xInitDCI(DCI& dci, const SPS& sps); ///< initialize Decoding Capability Information (DCI) from encoder options #else void xInitDPS (DPS &dps, const SPS &sps, const int dpsId); ///< initialize DPS from encoder options #endif