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