From df484e234f0d2e98fb50dc4853db9f9d13d9b1ab Mon Sep 17 00:00:00 2001
From: Frank Bossen <fbossen@gmail.com>
Date: Wed, 7 Feb 2024 09:26:57 -0500
Subject: [PATCH] Rename m_numDecodingUnitsMinus1 and drop -1 offset

---
 source/Lib/CommonLib/SEI.cpp       |  4 ++--
 source/Lib/CommonLib/SEI.h         |  4 ++--
 source/Lib/DecoderLib/SEIread.cpp  | 12 ++++++------
 source/Lib/EncoderLib/EncGOP.cpp   |  6 +++---
 source/Lib/EncoderLib/SEIwrite.cpp |  9 +++++----
 5 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/source/Lib/CommonLib/SEI.cpp b/source/Lib/CommonLib/SEI.cpp
index 7ad42e755..733435aff 100644
--- a/source/Lib/CommonLib/SEI.cpp
+++ b/source/Lib/CommonLib/SEI.cpp
@@ -107,7 +107,7 @@ void SEIPictureTiming::copyTo (SEIPictureTiming& target) const
   ::memcpy(target.cpbRemovalDelayDeltaIdx, cpbRemovalDelayDeltaIdx, sizeof(cpbRemovalDelayDeltaIdx));
   target.dpbOutputDelay                = dpbOutputDelay;
   target.dpbOutputDuDelay              = dpbOutputDuDelay;
-  target.m_numDecodingUnitsMinus1 = m_numDecodingUnitsMinus1;
+  target.numDecodingUnits              = numDecodingUnits;
   target.m_duCommonCpbRemovalDelayFlag = m_duCommonCpbRemovalDelayFlag;
 
   target.m_numNalusInDuMinus1 = m_numNalusInDuMinus1;
@@ -767,7 +767,7 @@ SEIPictureTiming::SEIPictureTiming(const SEIPictureTiming& sei)
   std::memcpy(cpbRemovalDelay, sei.cpbRemovalDelay, sizeof(sei.cpbRemovalDelay));
   dpbOutputDelay                = sei.dpbOutputDelay;
   dpbOutputDuDelay              = sei.dpbOutputDuDelay;
-  m_numDecodingUnitsMinus1 = sei.m_numDecodingUnitsMinus1;
+  numDecodingUnits              = sei.numDecodingUnits;
   m_duCommonCpbRemovalDelayFlag = sei.m_duCommonCpbRemovalDelayFlag;
   std::memcpy(m_duCommonCpbRemovalDelayMinus1, sei.m_duCommonCpbRemovalDelayMinus1, sizeof(sei.m_duCommonCpbRemovalDelayMinus1));
   m_numNalusInDuMinus1 = sei.m_numNalusInDuMinus1;
diff --git a/source/Lib/CommonLib/SEI.h b/source/Lib/CommonLib/SEI.h
index ba73fa44d..6e645ee48 100644
--- a/source/Lib/CommonLib/SEI.h
+++ b/source/Lib/CommonLib/SEI.h
@@ -686,7 +686,7 @@ public:
   SEIPictureTiming()
     : dpbOutputDelay(0)
     , dpbOutputDuDelay(0)
-    , m_numDecodingUnitsMinus1(0)
+    , numDecodingUnits(0)
     , m_duCommonCpbRemovalDelayFlag(false)
     , hasAltTimingInfo(false)
     , m_ptDisplayElementalPeriodsMinus1(0)
@@ -708,7 +708,7 @@ public:
   uint32_t                           cpbRemovalDelay[MAX_TLAYER];
   uint32_t                           dpbOutputDelay;
   uint32_t                           dpbOutputDuDelay;
-  uint32_t  m_numDecodingUnitsMinus1;
+  uint32_t                           numDecodingUnits;
   bool  m_duCommonCpbRemovalDelayFlag;
   uint32_t  m_duCommonCpbRemovalDelayMinus1[MAX_TLAYER];
   std::vector<uint32_t> m_numNalusInDuMinus1;
diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp
index 9e3758a64..445560f81 100644
--- a/source/Lib/DecoderLib/SEIread.cpp
+++ b/source/Lib/DecoderLib/SEIread.cpp
@@ -1821,11 +1821,11 @@ void SEIReader::xParseSEIPictureTiming(SEIPictureTiming& pt, uint32_t payloadSiz
   if (bp.hasDuHrdParams && bp.duCpbParamsInPicTimingSei)
   {
     sei_read_uvlc( pDecodedMessageOutputStream, symbol, "num_decoding_units_minus1" );
-    pt.m_numDecodingUnitsMinus1 = symbol;
-    pt.m_numNalusInDuMinus1.resize(pt.m_numDecodingUnitsMinus1 + 1);
-    pt.m_duCpbRemovalDelayMinus1.resize((pt.m_numDecodingUnitsMinus1 + 1) * bp.maxSublayers);
+    pt.numDecodingUnits = symbol + 1;
+    pt.m_numNalusInDuMinus1.resize(pt.numDecodingUnits);
+    pt.m_duCpbRemovalDelayMinus1.resize(pt.numDecodingUnits * bp.maxSublayers);
 
-    if (pt.m_numDecodingUnitsMinus1 > 0)
+    if (pt.numDecodingUnits > 1)
     {
       sei_read_flag( pDecodedMessageOutputStream, symbol, "du_common_cpb_removal_delay_flag" );
       pt.m_duCommonCpbRemovalDelayFlag = symbol;
@@ -1841,11 +1841,11 @@ void SEIReader::xParseSEIPictureTiming(SEIPictureTiming& pt, uint32_t payloadSiz
           }
         }
       }
-      for (int i = 0; i <= pt.m_numDecodingUnitsMinus1; i++)
+      for (int i = 0; i < pt.numDecodingUnits; i++)
       {
         sei_read_uvlc( pDecodedMessageOutputStream, symbol, "num_nalus_in_du_minus1[i]" );
         pt.m_numNalusInDuMinus1[i] = symbol;
-        if (!pt.m_duCommonCpbRemovalDelayFlag && i < pt.m_numDecodingUnitsMinus1)
+        if (!pt.m_duCommonCpbRemovalDelayFlag && i < pt.numDecodingUnits - 1)
         {
           for (int j = temporalId; j < bp.maxSublayers; j++)
           {
diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp
index 15591fe9b..6289cfaf6 100644
--- a/source/Lib/EncoderLib/EncGOP.cpp
+++ b/source/Lib/EncoderLib/EncGOP.cpp
@@ -1120,7 +1120,7 @@ void EncGOP::xCreatePictureTimingSEI(int irapGopId, SEIMessages &seiMessages, SE
     if( hrd->getGeneralDecodingUnitHrdParamsPresentFlag() )
     {
       const uint32_t numDU                            = (uint32_t) duData.size();
-      pictureTimingSEI->m_numDecodingUnitsMinus1     = ( numDU - 1 );
+      pictureTimingSEI->numDecodingUnits              = numDU;
       pictureTimingSEI->m_duCommonCpbRemovalDelayFlag = false;
       pictureTimingSEI->m_numNalusInDuMinus1.resize( numDU );
       const uint32_t maxNumSubLayers = slice->getSPS()->getMaxTLayers();
@@ -1344,7 +1344,7 @@ void EncGOP::xCreatePictureTimingSEI(int irapGopId, SEIMessages &seiMessages, SE
 
     if( m_pcCfg->getDecodingUnitInfoSEIEnabled() && hrd->getGeneralDecodingUnitHrdParamsPresentFlag() )
     {
-      for( int i = 0; i < ( pictureTimingSEI->m_numDecodingUnitsMinus1 + 1 ); i ++ )
+      for (int i = 0; i < pictureTimingSEI->numDecodingUnits; i++)
       {
         SEIDecodingUnitInfo *duInfoSEI = new SEIDecodingUnitInfo();
         duInfoSEI->m_decodingUnitIdx = i;
@@ -1414,7 +1414,7 @@ void EncGOP::xUpdateTimingSEI(SEIPictureTiming *pictureTimingSEI, std::deque<DUD
     int i;
     uint64_t ui64Tmp;
     uint32_t uiPrev = 0;
-    uint32_t numDU = ( pictureTimingSEI->m_numDecodingUnitsMinus1 + 1 );
+    uint32_t               numDU                    = pictureTimingSEI->numDecodingUnits;
     std::vector<uint32_t> &rDuCpbRemovalDelayMinus1 = pictureTimingSEI->m_duCpbRemovalDelayMinus1;
     uint32_t maxDiff = ( hrd->getTickDivisorMinus2() + 2 ) - 1;
 
diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp
index 2feed5143..6105f3039 100644
--- a/source/Lib/EncoderLib/SEIwrite.cpp
+++ b/source/Lib/EncoderLib/SEIwrite.cpp
@@ -528,8 +528,9 @@ void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, const SEIBuf
   }
   if (bp.hasDuHrdParams && bp.duCpbParamsInPicTimingSei)
   {
-    xWriteUvlc( sei.m_numDecodingUnitsMinus1, "num_decoding_units_minus1" );
-    if (sei.m_numDecodingUnitsMinus1 > 0)
+    CHECK(sei.numDecodingUnits < 1, "numDecodingUnits must be at least 1");
+    xWriteUvlc(sei.numDecodingUnits - 1, "pt_num_decoding_units_minus1");
+    if (sei.numDecodingUnits > 1)
     {
       xWriteFlag( sei.m_duCommonCpbRemovalDelayFlag, "du_commmon_cpb_removal_delay_flag" );
       if( sei.m_duCommonCpbRemovalDelayFlag )
@@ -543,10 +544,10 @@ void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, const SEIBuf
           }
         }
       }
-      for( int i = 0; i <= sei.m_numDecodingUnitsMinus1; i ++ )
+      for (int i = 0; i < sei.numDecodingUnits; i++)
       {
         xWriteUvlc( sei.m_numNalusInDuMinus1[i], "num_nalus_in_du_minus1[i]" );
-        if( !sei.m_duCommonCpbRemovalDelayFlag && i < sei.m_numDecodingUnitsMinus1 )
+        if (!sei.m_duCommonCpbRemovalDelayFlag && i < sei.numDecodingUnits - 1)
         {
           for (int j = temporalId; j < bp.maxSublayers; j++)
           {
-- 
GitLab