From f5f9953ddbea00242134fddc1237b0f9da262ef4 Mon Sep 17 00:00:00 2001
From: Kammachi Sreedhar <kashyap.kammachi-sreedhar@nokia.com>
Date: Fri, 12 Apr 2019 10:11:02 +0300
Subject: [PATCH] JVET_N0067_NALU_Header_v2

---
 source/App/SEIRemovalApp/SEIRemovalApp.cpp |  8 ++++----
 source/Lib/CommonLib/NAL.h                 | 12 ------------
 source/Lib/DecoderLib/NALread.cpp          |  6 +++---
 source/Lib/EncoderLib/NALwrite.cpp         |  7 ++++---
 source/Lib/EncoderLib/NALwrite.h           |  9 ++-------
 5 files changed, 13 insertions(+), 29 deletions(-)

diff --git a/source/App/SEIRemovalApp/SEIRemovalApp.cpp b/source/App/SEIRemovalApp/SEIRemovalApp.cpp
index c4d21a4bd..5eb7867fe 100644
--- a/source/App/SEIRemovalApp/SEIRemovalApp.cpp
+++ b/source/App/SEIRemovalApp/SEIRemovalApp.cpp
@@ -73,18 +73,18 @@ void read2(InputNALUnit& nalu)
   InputBitstream& bs = nalu.getBitstream();
 
   #if JVET_N0067_NAL_Unit_Header
-  nalu.m_zeroTidRequiredFlag = bs.read(1);            // zero_tid_required_flag
+  bool m_zeroTidRequiredFlag = bs.read(1);            // zero_tid_required_flag
   nalu.m_temporalId = bs.read(3) - 1;                 // nuh_temporal_id_plus1
   if(nalu.m_temporalId < 0) {
     THROW( "Temporal ID is negative." );
   }
   //When zero_tid_required_flag is equal to 1, the value of nuh_temporal_id_plus1 shall be equal to 1.
-  if((nalu.m_zeroTidRequiredFlag == 1) && (nalu.m_temporalId != 0)) {
+  if((m_zeroTidRequiredFlag == 1) && (nalu.m_temporalId != 0)) {
     THROW( "Temporal ID is not '0' when zero tid is required." );
   }
   uint32_t m_nalUnitTypeLsb = bs.read(4);             // nal_unit_type_lsb
-  nalu.m_nalUnitType = (NalUnitType) ((nalu.m_zeroTidRequiredFlag << 4) + m_nalUnitTypeLsb);
-  nalu.m_nuhLayerId = bs.read(7);                     // nuh_layer_id
+  nalu.m_nalUnitType = (NalUnitType) ((m_zeroTidRequiredFlag << 4) + m_nalUnitTypeLsb);
+  nalu.m_nuhLayerId = bs.read(7);                     // nuh_layer_id 
   if((nalu.m_nuhLayerId < 0) || (nalu.m_nuhLayerId > 126)) {
     THROW( "Layer ID out of range" );
   }
diff --git a/source/Lib/CommonLib/NAL.h b/source/Lib/CommonLib/NAL.h
index 7d074fde8..e119e11d6 100644
--- a/source/Lib/CommonLib/NAL.h
+++ b/source/Lib/CommonLib/NAL.h
@@ -48,32 +48,20 @@ class OutputBitstream;
 struct NALUnit
 {
   NalUnitType m_nalUnitType; ///< nal_unit_type
-#if JVET_N0067_NAL_Unit_Header
-  uint32_t        m_zeroTidRequiredFlag;  ///< zero_tid_required_flag
-#endif
   uint32_t        m_temporalId;  ///< temporal_id
   uint32_t        m_nuhLayerId;  ///< nuh_layer_id
 
   NALUnit(const NALUnit &src)
   :m_nalUnitType (src.m_nalUnitType)
-#if JVET_N0067_NAL_Unit_Header
-  ,m_zeroTidRequiredFlag (src.m_zeroTidRequiredFlag)
-#endif
   ,m_temporalId  (src.m_temporalId)
   ,m_nuhLayerId  (src.m_nuhLayerId)
   { }
   /** construct an NALunit structure with given header values. */
   NALUnit(
     NalUnitType nalUnitType,
-#if JVET_N0067_NAL_Unit_Header
-    int         zeroTidRequiredFlag = 0,
-#endif
     int         temporalId = 0,
     int         nuhLayerId = 0)
     :m_nalUnitType (nalUnitType)
-#if JVET_N0067_NAL_Unit_Header
-    ,m_zeroTidRequiredFlag (zeroTidRequiredFlag)
-#endif
     ,m_temporalId  (temporalId)
     ,m_nuhLayerId  (nuhLayerId)
   {}
diff --git a/source/Lib/DecoderLib/NALread.cpp b/source/Lib/DecoderLib/NALread.cpp
index 3f32f8cfb..849770072 100644
--- a/source/Lib/DecoderLib/NALread.cpp
+++ b/source/Lib/DecoderLib/NALread.cpp
@@ -130,17 +130,17 @@ void readNalUnitHeader(InputNALUnit& nalu)
   InputBitstream& bs = nalu.getBitstream();
 
 #if JVET_N0067_NAL_Unit_Header
-  nalu.m_zeroTidRequiredFlag = bs.read(1);            // zero_tid_required_flag
+  bool m_zeroTidRequiredFlag = bs.read(1);            // zero_tid_required_flag
   nalu.m_temporalId = bs.read(3) - 1;                 // nuh_temporal_id_plus1
   if(nalu.m_temporalId < 0) { 
     THROW( "Temporal ID is negative." );
   }
   //When zero_tid_required_flag is equal to 1, the value of nuh_temporal_id_plus1 shall be equal to 1.
-  if((nalu.m_zeroTidRequiredFlag == 1) && (nalu.m_temporalId != 0)) { 
+  if((m_zeroTidRequiredFlag == 1) && (nalu.m_temporalId != 0)) { 
     THROW( "Temporal ID is not '0' when zero tid is required." );
   }
   uint32_t m_nalUnitTypeLsb = bs.read(4);             // nal_unit_type_lsb
-  nalu.m_nalUnitType = (NalUnitType) ((nalu.m_zeroTidRequiredFlag << 4) + m_nalUnitTypeLsb);
+  nalu.m_nalUnitType = (NalUnitType) ((m_zeroTidRequiredFlag << 4) + m_nalUnitTypeLsb);
   nalu.m_nuhLayerId = bs.read(7);                     // nuh_layer_id 
   if((nalu.m_nuhLayerId < 0) || (nalu.m_nuhLayerId > 126)) { 
     THROW( "Layer ID out of range" );
diff --git a/source/Lib/EncoderLib/NALwrite.cpp b/source/Lib/EncoderLib/NALwrite.cpp
index 1cf976ebe..faae9ee22 100644
--- a/source/Lib/EncoderLib/NALwrite.cpp
+++ b/source/Lib/EncoderLib/NALwrite.cpp
@@ -50,12 +50,13 @@ void writeNalUnitHeader(ostream& out, OutputNALUnit& nalu)       // nal_unit_hea
 {
 OutputBitstream bsNALUHeader;
 #if JVET_N0067_NAL_Unit_Header
+  bool m_zeroTidRequiredFlag = 0;
   if((nalu.m_nalUnitType >= 16) && (nalu.m_nalUnitType <= 31)) {
-    nalu.m_zeroTidRequiredFlag = 1;
+    m_zeroTidRequiredFlag = 1;
   }
-  bsNALUHeader.write(nalu.m_zeroTidRequiredFlag, 1);    // zero_tid_required_flag
+  bsNALUHeader.write(m_zeroTidRequiredFlag, 1);    // zero_tid_required_flag
   bsNALUHeader.write(nalu.m_temporalId+1, 3);           // nuh_temporal_id_plus1
-  uint32_t m_nalUnitTypeLsb = (nalu.m_nalUnitType) - (nalu.m_zeroTidRequiredFlag << 4);
+  uint32_t m_nalUnitTypeLsb = (nalu.m_nalUnitType) - (m_zeroTidRequiredFlag << 4);
   bsNALUHeader.write(m_nalUnitTypeLsb, 4);              // nal_unit_type_lsb
   bsNALUHeader.write(nalu.m_nuhLayerId, 7);             // nuh_layer_id
   bsNALUHeader.write(0, 1);                             // nuh_reserved_zero_bit
diff --git a/source/Lib/EncoderLib/NALwrite.h b/source/Lib/EncoderLib/NALwrite.h
index 57d777032..b81a4803e 100644
--- a/source/Lib/EncoderLib/NALwrite.h
+++ b/source/Lib/EncoderLib/NALwrite.h
@@ -58,16 +58,11 @@ struct OutputNALUnit : public NALUnit
    */
   OutputNALUnit(
     NalUnitType nalUnitType,
-#if JVET_N0067_NAL_Unit_Header
-    uint32_t zeroTidRequiredFlag = 0,
-    uint32_t temporalID = 0,
-    uint32_t nuhLayerId = 0)
-  : NALUnit(nalUnitType, zeroTidRequiredFlag, temporalID, nuhLayerId)
-#else
+
     uint32_t temporalID = 0,
     uint32_t reserved_zero_6bits = 0)
   : NALUnit(nalUnitType, temporalID, reserved_zero_6bits)
-#endif
+
   , m_Bitstream()
   {}
 
-- 
GitLab