Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ecm/ECM
  • seregin/ECM
  • XiangLi/ECM
  • ksuehring/ECM
  • Morris/ecm-7-0
  • leizhao/ECM
  • Dongcheol/ecm
  • ghaznavi/ECM
  • junyanhuo/ECM
  • Morris/jvet-ad-0202
  • Yasugi/jvet-ad-0105-aspect-1
  • jonatan/ECM
  • kevin625/ECM
  • astola/ECM
  • Yasugi/jvet-ae-0055
  • ghaznavi/jvet-ae-0100-bvgcccm
  • yyu2021/ECM
  • moonmo.koo/ECM
  • ihtseng/ECM
  • ghaznavi/bugfix-for-jvet-ae-0100-bvgcccm
  • FANZHEMING/jvet-af-0101
  • ghaznavi/jvet-ah-0076-obic
  • NicolasHorst/ecm
  • ghaznavi/harmonizing-dimd-based-transform-selection-functions
  • bordesp/ECM
  • pohan-lin/ECM
  • daizhenyu/ECM
  • qinhongdong/ECM-MasterBranch
  • jvet-ahg-gcc/ECM
  • renan.utida/ECM-AhG15
  • mosenabdoli/ecm-14-0-timd-merge
  • FANZHEMING/jvet-aj-0079
  • lxw/ECM
  • mosenabdoli/ecm-resolve-aj0096-aj0061
  • mosenabdoli/ecm-resolve-aj-0096-aj-0061
  • yanning/ECM
  • ghaznavi/jvet-aj-0146-and-obic-interaction
  • frankplow/ECM
  • moonmo.koo/ecm-15-ahg-7
  • moonmo.koo/ecm-15-ahg-7-fix
  • ivash/ecm-master-branch
  • moonmo.koo/ecm-test
  • pgarus/ecm-ak
  • Myungoh/jvet-ak-0059-test-1-2-c
  • Myungoh/ecm-test-1-2-c
  • Myungoh/mdip-encoder-fix
  • Myungoh/fix-mdip-2
  • Myungoh/mdip-control-for-ahg-7-tests
48 results
Show changes
Showing
with 3249 additions and 227 deletions
...@@ -25,7 +25,7 @@ endif() ...@@ -25,7 +25,7 @@ endif()
add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} ) add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} )
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
if( SET_ENABLE_TRACING ) if( DEFINED ENABLE_TRACING )
if( ENABLE_TRACING ) if( ENABLE_TRACING )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 )
else() else()
...@@ -33,24 +33,12 @@ if( SET_ENABLE_TRACING ) ...@@ -33,24 +33,12 @@ if( SET_ENABLE_TRACING )
endif() endif()
endif() endif()
if( OpenMP_FOUND ) if( DEFINED ENABLE_HIGH_BITDEPTH )
if( SET_ENABLE_SPLIT_PARALLELISM ) if( ENABLE_HIGH_BITDEPTH )
if( ENABLE_SPLIT_PARALLELISM ) target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=1 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=1 ) else()
else() target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
endif()
endif()
if( SET_ENABLE_WPP_PARALLELISM )
if( ENABLE_WPP_PARALLELISM )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=1 )
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif()
endif() endif()
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif() endif()
if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
...@@ -58,7 +46,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) ...@@ -58,7 +46,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 )
endif() endif()
target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities Threads::Threads ${ADDITIONAL_LIBS} ) target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities ${ADDITIONAL_LIBS} )
# lldb custom data formatters # lldb custom data formatters
if( XCODE ) if( XCODE )
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -52,6 +52,14 @@ ...@@ -52,6 +52,14 @@
//! \ingroup DecoderApp //! \ingroup DecoderApp
//! \{ //! \{
#if Y4M_SUPPORT
static int calcGcd(int a, int b)
{
// assume that a >= b
return b == 0 ? a : calcGcd(b, a % b);
}
#endif
// ==================================================================================================================== // ====================================================================================================================
// Constructor / destructor / initialization / destroy // Constructor / destructor / initialization / destroy
// ==================================================================================================================== // ====================================================================================================================
...@@ -133,6 +141,10 @@ uint32_t DecApp::decode() ...@@ -133,6 +141,10 @@ uint32_t DecApp::decode()
#if JVET_S0155_EOS_NALU_CHECK #if JVET_S0155_EOS_NALU_CHECK
bool isEosPresentInPu = false; bool isEosPresentInPu = false;
#endif #endif
#if JVET_Z0118_GDR
bool gdrRecoveryPeriod[MAX_NUM_LAYER_IDS] = { false };
bool prevPicSkipped = true;
#endif
while (!!bitstreamFile) while (!!bitstreamFile)
{ {
...@@ -206,7 +218,44 @@ uint32_t DecApp::decode() ...@@ -206,7 +218,44 @@ uint32_t DecApp::decode()
bPicSkipped = false; bPicSkipped = false;
} }
} }
#if JVET_Z0118_GDR
int skipFrameCounter = m_iSkipFrame;
m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay, m_targetOlsIdx);
if ( prevPicSkipped && nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_GDR )
{
gdrRecoveryPeriod[nalu.m_nuhLayerId] = true;
}
if ( skipFrameCounter == 1 && ( nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_GDR || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA ))
{
skipFrameCounter--;
}
if ( m_iSkipFrame < skipFrameCounter &&
((nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_TRAIL) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_STSA) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RASL) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_RADL) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_W_RADL) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_N_LP) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA) || (nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_GDR)))
{
if (m_cDecLib.isSliceNaluFirstInAU(true, nalu))
{
m_cDecLib.checkSeiInPictureUnit();
m_cDecLib.resetPictureSeiNalus();
m_cDecLib.checkAPSInPictureUnit();
m_cDecLib.resetPictureUnitNals();
m_cDecLib.resetAccessUnitSeiTids();
m_cDecLib.checkSEIInAccessUnit();
m_cDecLib.resetAccessUnitSeiPayLoadTypes();
m_cDecLib.resetAccessUnitNals();
m_cDecLib.resetAccessUnitApsNals();
m_cDecLib.resetAccessUnitPicInfo();
}
bPicSkipped = true;
m_iSkipFrame++; // skipFrame count restore, the real decrement occur at the begin of next frame
}
#else
m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay, m_targetOlsIdx); m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay, m_targetOlsIdx);
#endif
if (nalu.m_nalUnitType == NAL_UNIT_VPS) if (nalu.m_nalUnitType == NAL_UNIT_VPS)
{ {
m_cDecLib.deriveTargetOutputLayerSet( m_targetOlsIdx ); m_cDecLib.deriveTargetOutputLayerSet( m_targetOlsIdx );
...@@ -220,6 +269,12 @@ uint32_t DecApp::decode() ...@@ -220,6 +269,12 @@ uint32_t DecApp::decode()
} }
} }
#if JVET_S0155_EOS_NALU_CHECK #if JVET_S0155_EOS_NALU_CHECK
#if JVET_Z0118_GDR
if( nalu.isSlice() && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_RASL)
{
prevPicSkipped = bPicSkipped;
}
#endif
// once an EOS NAL unit appears in the current PU, mark the variable isEosPresentInPu as true // once an EOS NAL unit appears in the current PU, mark the variable isEosPresentInPu as true
if (nalu.m_nalUnitType == NAL_UNIT_EOS) if (nalu.m_nalUnitType == NAL_UNIT_EOS)
{ {
...@@ -270,7 +325,11 @@ uint32_t DecApp::decode() ...@@ -270,7 +325,11 @@ uint32_t DecApp::decode()
ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc(); ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc();
if( m_upscaledOutput ) if( m_upscaledOutput )
{ {
#if JVET_AB0082
ioBeforeInLoop.writeUpscaledPicture(*sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range, m_upscaleFilterForDisplay);
#else
ioBeforeInLoop.writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); ioBeforeInLoop.writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range );
#endif
} }
else else
{ {
...@@ -287,6 +346,9 @@ uint32_t DecApp::decode() ...@@ -287,6 +346,9 @@ uint32_t DecApp::decode()
} }
#endif #endif
m_cDecLib.executeLoopFilters(); m_cDecLib.executeLoopFilters();
#if JVET_AG0145_ADAPTIVE_CLIPPING
m_cDecLib.adaptiveClipToRealRange();
#endif
#if JVET_R0270 #if JVET_R0270
m_cDecLib.finishPicture(poc, pcListPic, INFO, m_newCLVS[nalu.m_nuhLayerId]); m_cDecLib.finishPicture(poc, pcListPic, INFO, m_newCLVS[nalu.m_nuhLayerId]);
#else #else
...@@ -302,6 +364,16 @@ uint32_t DecApp::decode() ...@@ -302,6 +364,16 @@ uint32_t DecApp::decode()
m_cDecLib.updateAssociatedIRAP(); m_cDecLib.updateAssociatedIRAP();
m_cDecLib.updatePrevGDRInSameLayer(); m_cDecLib.updatePrevGDRInSameLayer();
m_cDecLib.updatePrevIRAPAndGDRSubpic(); m_cDecLib.updatePrevIRAPAndGDRSubpic();
#if JVET_Z0118_GDR
if (gdrRecoveryPeriod[nalu.m_nuhLayerId])
{
if (m_cDecLib.getGDRRecoveryPocReached())
{
gdrRecoveryPeriod[nalu.m_nuhLayerId] = false;
}
}
#endif
} }
else if ( (bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) && else if ( (bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) &&
m_cDecLib.getFirstSliceInSequence(nalu.m_nuhLayerId)) m_cDecLib.getFirstSliceInSequence(nalu.m_nuhLayerId))
...@@ -311,6 +383,24 @@ uint32_t DecApp::decode() ...@@ -311,6 +383,24 @@ uint32_t DecApp::decode()
if( pcListPic ) if( pcListPic )
{ {
#if JVET_Z0118_GDR
if ( gdrRecoveryPeriod[nalu.m_nuhLayerId] ) // Suppress YUV and OPL output during GDR recovery
{
PicList::iterator iterPic = pcListPic->begin();
while (iterPic != pcListPic->end())
{
Picture *pcPic = *(iterPic++);
pcPic->neededForOutput = true;
// To disable output pictures in gdr interval
if (pcPic->layerId == nalu.m_nuhLayerId)
{
pcPic->neededForOutput = false;
}
}
}
#endif
if( !m_reconFileName.empty() && !m_cVideoIOYuvReconFile[nalu.m_nuhLayerId].isOpen() ) if( !m_reconFileName.empty() && !m_cVideoIOYuvReconFile[nalu.m_nuhLayerId].isOpen() )
{ {
const BitDepths &bitDepths=pcListPic->front()->cs->sps->getBitDepths(); // use bit depths of first reconstructed picture. const BitDepths &bitDepths=pcListPic->front()->cs->sps->getBitDepths(); // use bit depths of first reconstructed picture.
...@@ -342,6 +432,43 @@ uint32_t DecApp::decode() ...@@ -342,6 +432,43 @@ uint32_t DecApp::decode()
} }
if( ( m_cDecLib.getVPS() != nullptr && ( m_cDecLib.getVPS()->getMaxLayers() == 1 || xIsNaluWithinTargetOutputLayerIdSet( &nalu ) ) ) || m_cDecLib.getVPS() == nullptr ) if( ( m_cDecLib.getVPS() != nullptr && ( m_cDecLib.getVPS()->getMaxLayers() == 1 || xIsNaluWithinTargetOutputLayerIdSet( &nalu ) ) ) || m_cDecLib.getVPS() == nullptr )
{ {
#if Y4M_SUPPORT
if (isY4mFileExt(reconFileName))
{
const auto sps = pcListPic->front()->cs->sps;
int frameRate = 50;
int frameScale = 1;
if (sps->getGeneralHrdParametersPresentFlag())
{
const auto hrd = sps->getGeneralHrdParameters();
const auto olsHrdParam = sps->getOlsHrdParameters()[sps->getMaxTLayers() - 1];
int elementDurationInTc = 1;
if (olsHrdParam.getFixedPicRateWithinCvsFlag())
{
elementDurationInTc = olsHrdParam.getElementDurationInTcMinus1() + 1;
}
else
{
msg(WARNING, "\nWarning: No fixed picture rate info is found in the bitstream, best guess is used.\n");
}
frameRate = hrd->getTimeScale() * elementDurationInTc;
frameScale = hrd->getNumUnitsInTick();
int gcd = calcGcd(max(frameRate, frameScale), min(frameRate, frameScale));
frameRate /= gcd;
frameScale /= gcd;
}
else
{
msg(WARNING, "\nWarning: No frame rate info found in the bitstream, default 50 fps is used.\n");
}
const auto pps = pcListPic->front()->cs->pps;
auto confWindow = pps->getConformanceWindow();
const int picWidth = pps->getPicWidthInLumaSamples() - confWindow.getWindowLeftOffset() - confWindow.getWindowRightOffset();
const int picHeight = pps->getPicHeightInLumaSamples() - confWindow.getWindowTopOffset() - confWindow.getWindowBottomOffset();
m_cVideoIOYuvReconFile[nalu.m_nuhLayerId].setOutputY4mInfo(picWidth, picHeight, frameRate, frameScale,
m_outputBitDepth[0], sps->getChromaFormatIdc());
}
#endif
m_cVideoIOYuvReconFile[nalu.m_nuhLayerId].open( reconFileName, true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode m_cVideoIOYuvReconFile[nalu.m_nuhLayerId].open( reconFileName, true, m_outputBitDepth, m_outputBitDepth, bitDepths.recon ); // write mode
} }
} }
...@@ -447,7 +574,12 @@ void DecApp::writeLineToOutputLog(Picture * pcPic) ...@@ -447,7 +574,12 @@ void DecApp::writeLineToOutputLog(Picture * pcPic)
void DecApp::xCreateDecLib() void DecApp::xCreateDecLib()
{ {
initROM(); initROM();
#if JVET_AH0209_PDP
createPdpFilters();
#endif
#if JVET_AI0208_PDP_MIP
createMipFilters();
#endif
// create decoder class // create decoder class
m_cDecLib.create(); m_cDecLib.create();
...@@ -473,6 +605,9 @@ void DecApp::xCreateDecLib() ...@@ -473,6 +605,9 @@ void DecApp::xCreateDecLib()
#endif #endif
m_cDecLib.m_targetSubPicIdx = this->m_targetSubPicIdx; m_cDecLib.m_targetSubPicIdx = this->m_targetSubPicIdx;
m_cDecLib.initScalingList(); m_cDecLib.initScalingList();
#if GDR_LEAK_TEST
m_cDecLib.m_gdrPocRandomAccess = this->m_gdrPocRandomAccess;
#endif
} }
void DecApp::xDestroyDecLib() void DecApp::xDestroyDecLib()
...@@ -503,7 +638,9 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId ) ...@@ -503,7 +638,9 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
PicList::iterator iterPic = pcListPic->begin(); PicList::iterator iterPic = pcListPic->begin();
int numPicsNotYetDisplayed = 0; int numPicsNotYetDisplayed = 0;
int dpbFullness = 0; int dpbFullness = 0;
const SPS* activeSPS = (pcListPic->front()->cs->sps);
const SPS *activeSPS = m_cDecLib.getActiveSPS();
uint32_t numReorderPicsHighestTid; uint32_t numReorderPicsHighestTid;
uint32_t maxDecPicBufferingHighestTid; uint32_t maxDecPicBufferingHighestTid;
uint32_t maxNrSublayers = activeSPS->getMaxTLayers(); uint32_t maxNrSublayers = activeSPS->getMaxTLayers();
...@@ -525,9 +662,13 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId ) ...@@ -525,9 +662,13 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
while (iterPic != pcListPic->end()) while (iterPic != pcListPic->end())
{ {
Picture* pcPic = *(iterPic); Picture* pcPic = *(iterPic);
#if JVET_Z0118_GDR
if(pcPic->neededForOutput && pcPic->getPOC() >= m_iPOCLastDisplay)
#else
if(pcPic->neededForOutput && pcPic->getPOC() > m_iPOCLastDisplay) if(pcPic->neededForOutput && pcPic->getPOC() > m_iPOCLastDisplay)
#endif
{ {
numPicsNotYetDisplayed++; numPicsNotYetDisplayed++;
dpbFullness++; dpbFullness++;
} }
else if(pcPic->referenced) else if(pcPic->referenced)
...@@ -610,7 +751,11 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId ) ...@@ -610,7 +751,11 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
{ {
pcPic = *(iterPic); pcPic = *(iterPic);
#if JVET_Z0118_GDR
if(pcPic->neededForOutput && pcPic->getPOC() >= m_iPOCLastDisplay &&
#else
if(pcPic->neededForOutput && pcPic->getPOC() > m_iPOCLastDisplay && if(pcPic->neededForOutput && pcPic->getPOC() > m_iPOCLastDisplay &&
#endif
(numPicsNotYetDisplayed > numReorderPicsHighestTid || dpbFullness > maxDecPicBufferingHighestTid)) (numPicsNotYetDisplayed > numReorderPicsHighestTid || dpbFullness > maxDecPicBufferingHighestTid))
{ {
// write to file // write to file
...@@ -628,7 +773,11 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId ) ...@@ -628,7 +773,11 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc(); ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc();
if( m_upscaledOutput ) if( m_upscaledOutput )
{ {
#if JVET_AB0082
m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture(*sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range, m_upscaleFilterForDisplay);
#else
m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range );
#endif
} }
else else
{ {
...@@ -761,7 +910,11 @@ void DecApp::xFlushOutput( PicList* pcListPic, const int layerId ) ...@@ -761,7 +910,11 @@ void DecApp::xFlushOutput( PicList* pcListPic, const int layerId )
ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc(); ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc();
if( m_upscaledOutput ) if( m_upscaledOutput )
{ {
#if JVET_AB0082
m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture(*sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range, m_upscaleFilterForDisplay);
#else
m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range ); m_cVideoIOYuvReconFile[pcPic->layerId].writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range );
#endif
} }
else else
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -45,6 +45,12 @@ ...@@ -45,6 +45,12 @@
using namespace std; using namespace std;
namespace po = df::program_options_lite; namespace po = df::program_options_lite;
#if JVET_AG0196_CABAC_RETRAIN
namespace CabacRetrain
{
extern void init(const std::string &fn,bool activate);
}
#endif
//! \ingroup DecoderApp //! \ingroup DecoderApp
//! \{ //! \{
...@@ -67,7 +73,7 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) ...@@ -67,7 +73,7 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
string sTracingFile; string sTracingFile;
bool bTracingChannelsList = false; bool bTracingChannelsList = false;
#endif #endif
#if ENABLE_SIMD_OPT #if ENABLE_SIMD_OPT && defined(TARGET_SIMD_X86)
std::string ignore; std::string ignore;
#endif #endif
po::Options opts; po::Options opts;
...@@ -78,11 +84,13 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) ...@@ -78,11 +84,13 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
("ReconFile,o", m_reconFileName, string(""), "reconstructed YUV output file name\n") ("ReconFile,o", m_reconFileName, string(""), "reconstructed YUV output file name\n")
("OplFile,-opl", m_oplFilename , string(""), "opl-file name without extension for conformance testing\n") ("OplFile,-opl", m_oplFilename , string(""), "opl-file name without extension for conformance testing\n")
#if ENABLE_SIMD_OPT && defined(TARGET_SIMD_X86)
#if ENABLE_SIMD_OPT
("SIMD", ignore, string(""), "SIMD extension to use (SCALAR, SSE41, SSE42, AVX, AVX2, AVX512), default: the highest supported extension\n") ("SIMD", ignore, string(""), "SIMD extension to use (SCALAR, SSE41, SSE42, AVX, AVX2, AVX512), default: the highest supported extension\n")
#endif #endif
#if JVET_AG0196_CABAC_RETRAIN
("ActivateCABACDumping", m_activateDump, false, "If true dump cabac bins in file")
#endif
("WarnUnknowParameter,w", warnUnknowParameter, 0, "warn for unknown configuration parameters instead of failing") ("WarnUnknowParameter,w", warnUnknowParameter, 0, "warn for unknown configuration parameters instead of failing")
("SkipFrames,s", m_iSkipFrame, 0, "number of frames to skip before random access") ("SkipFrames,s", m_iSkipFrame, 0, "number of frames to skip before random access")
("OutputBitDepth,d", m_outputBitDepth[CHANNEL_TYPE_LUMA], 0, "bit depth of YUV output luma component (default: use 0 for native depth)") ("OutputBitDepth,d", m_outputBitDepth[CHANNEL_TYPE_LUMA], 0, "bit depth of YUV output luma component (default: use 0 for native depth)")
...@@ -120,6 +128,12 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) ...@@ -120,6 +128,12 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
("MCTSCheck", m_mctsCheck, false, "If enabled, the decoder checks for violations of mc_exact_sample_value_match_flag in Temporal MCTS ") ("MCTSCheck", m_mctsCheck, false, "If enabled, the decoder checks for violations of mc_exact_sample_value_match_flag in Temporal MCTS ")
("targetSubPicIdx", m_targetSubPicIdx, 0, "Specify which subpicture shall be written to output, using subpic index, 0: disabled, subpicIdx=m_targetSubPicIdx-1 \n" ) ("targetSubPicIdx", m_targetSubPicIdx, 0, "Specify which subpicture shall be written to output, using subpic index, 0: disabled, subpicIdx=m_targetSubPicIdx-1 \n" )
( "UpscaledOutput", m_upscaledOutput, 0, "Upscaled output for RPR" ) ( "UpscaledOutput", m_upscaledOutput, 0, "Upscaled output for RPR" )
#if JVET_AB0082
("UpscaleFilterForDisplay", m_upscaleFilterForDisplay, 2, "Filters used for upscaling reconstruction to full resolution (2: ECM 12 - tap luma and 6 - tap chroma MC filters, 1 : Alternative 12 - tap luma and 6 - tap chroma filters, 0 : VVC 8 - tap luma and 4 - tap chroma MC filters)")
#endif
#if GDR_LEAK_TEST
("RandomAccessPos", m_gdrPocRandomAccess, 0, "POC of GDR Random access picture\n" )
#endif
#if DUMP_BEFORE_INLOOP #if DUMP_BEFORE_INLOOP
( "DumpBeforeInloop", m_dumpBeforeInloop, false, "Dump YUV before inloop filters" ) ( "DumpBeforeInloop", m_dumpBeforeInloop, false, "Dump YUV before inloop filters" )
#endif #endif
...@@ -223,6 +237,9 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) ...@@ -223,6 +237,9 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
msg( ERROR, "File %s could not be opened. Using all LayerIds as default.\n", cfg_TargetDecLayerIdSetFile.c_str() ); msg( ERROR, "File %s could not be opened. Using all LayerIds as default.\n", cfg_TargetDecLayerIdSetFile.c_str() );
} }
} }
#if JVET_AG0196_CABAC_RETRAIN
CabacRetrain::init(m_bitstreamFileName,m_activateDump);
#endif
return true; return true;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -84,11 +84,20 @@ protected: ...@@ -84,11 +84,20 @@ protected:
bool m_mctsCheck; bool m_mctsCheck;
int m_upscaledOutput; ////< Output upscaled (2), decoded but in full resolution buffer (1) or decoded cropped (0, default) picture for RPR. int m_upscaledOutput; ////< Output upscaled (2), decoded but in full resolution buffer (1) or decoded cropped (0, default) picture for RPR.
#if JVET_AB0082
int m_upscaleFilterForDisplay;
#endif
int m_targetSubPicIdx; ///< Specify which subpicture shall be write to output, using subpicture index int m_targetSubPicIdx; ///< Specify which subpicture shall be write to output, using subpicture index
#if GDR_LEAK_TEST
int m_gdrPocRandomAccess; ///<
#endif
#if DUMP_BEFORE_INLOOP #if DUMP_BEFORE_INLOOP
bool m_dumpBeforeInloop; bool m_dumpBeforeInloop;
#endif #endif
#if JVET_AG0196_CABAC_RETRAIN
bool m_activateDump;
#endif
public: public:
DecAppCfg(); DecAppCfg();
virtual ~DecAppCfg(); virtual ~DecAppCfg();
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -58,7 +58,7 @@ int main(int argc, char* argv[]) ...@@ -58,7 +58,7 @@ int main(int argc, char* argv[])
fprintf( stdout, NVM_ONOS ); fprintf( stdout, NVM_ONOS );
fprintf( stdout, NVM_COMPILEDBY ); fprintf( stdout, NVM_COMPILEDBY );
fprintf( stdout, NVM_BITS ); fprintf( stdout, NVM_BITS );
#if ENABLE_SIMD_OPT #if ENABLE_SIMD_OPT && defined(TARGET_SIMD_X86)
std::string SIMD; std::string SIMD;
df::program_options_lite::Options optsSimd; df::program_options_lite::Options optsSimd;
optsSimd.addOptions()( "SIMD", SIMD, string( "" ), "" ); optsSimd.addOptions()( "SIMD", SIMD, string( "" ), "" );
...@@ -107,10 +107,24 @@ int main(int argc, char* argv[]) ...@@ -107,10 +107,24 @@ int main(int argc, char* argv[])
} }
#endif #endif
#if JVET_Z0150_MEMORY_USAGE_PRINT
#ifdef __linux
int vm = getProcStatusValue("VmPeak:");
int rm = getProcStatusValue("VmHWM:");
printf("\nMemory Usage: VmPeak= %d KB ( %.1f GiB ), VmHWM= %d KB ( %.1f GiB )\n", vm, (double)vm/(1024*1024), rm, (double)rm/(1024*1024));
#endif
#endif
// ending time // ending time
dResult = (double)(clock()-lBefore) / CLOCKS_PER_SEC; dResult = (double)(clock()-lBefore) / CLOCKS_PER_SEC;
printf("\n Total Time: %12.3f sec.\n", dResult); printf("\n Total Time: %12.3f sec.\n", dResult);
#if JVET_AH0209_PDP
destroyPdpFilters();
#if JVET_AI0208_PDP_MIP
destroyMipFilters();
#endif
#endif
delete pcDecApp; delete pcDecApp;
return returnCode; return returnCode;
......
...@@ -27,7 +27,7 @@ endif() ...@@ -27,7 +27,7 @@ endif()
add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} ) add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} )
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
if( SET_ENABLE_TRACING ) if( DEFINED ENABLE_TRACING )
if( ENABLE_TRACING ) if( ENABLE_TRACING )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 )
else() else()
...@@ -35,24 +35,12 @@ if( SET_ENABLE_TRACING ) ...@@ -35,24 +35,12 @@ if( SET_ENABLE_TRACING )
endif() endif()
endif() endif()
if( OpenMP_FOUND ) if( DEFINED ENABLE_HIGH_BITDEPTH )
if( SET_ENABLE_SPLIT_PARALLELISM ) if( ENABLE_HIGH_BITDEPTH )
if( ENABLE_SPLIT_PARALLELISM ) target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=1 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=1 ) else()
else() target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
endif()
endif()
if( SET_ENABLE_WPP_PARALLELISM )
if( ENABLE_WPP_PARALLELISM )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=1 )
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif()
endif() endif()
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif() endif()
if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
...@@ -60,7 +48,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) ...@@ -60,7 +48,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 )
endif() endif()
target_link_libraries( ${EXE_NAME} CommonLib EncoderLib DecoderLib Utilities Threads::Threads ${ADDITIONAL_LIBS} ) target_link_libraries( ${EXE_NAME} CommonLib EncoderLib DecoderLib Utilities ${ADDITIONAL_LIBS} )
if( EXTENSION_360_VIDEO ) if( EXTENSION_360_VIDEO )
target_link_libraries( ${EXE_NAME} Lib360 AppEncHelper360 ) target_link_libraries( ${EXE_NAME} Lib360 AppEncHelper360 )
......
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
#if EXTENSION_360_VIDEO #if EXTENSION_360_VIDEO
#include "AppEncHelper360/TExt360AppEncTop.h" #include "AppEncHelper360/TExt360AppEncTop.h"
#endif #endif
#include "EncoderLib/EncTemporalFilter.h"
#if JVET_O0756_CALCULATE_HDRMETRICS #if JVET_O0756_CALCULATE_HDRMETRICS
#include <chrono> #include <chrono>
...@@ -97,11 +96,13 @@ private: ...@@ -97,11 +96,13 @@ private:
int m_numEncoded; int m_numEncoded;
PelStorage* m_trueOrgPic; PelStorage* m_trueOrgPic;
PelStorage* m_orgPic; PelStorage* m_orgPic;
PelStorage* m_filteredOrgPic;
#if JVET_AG0116
PelStorage* m_rprPic[2];
#endif
#if EXTENSION_360_VIDEO #if EXTENSION_360_VIDEO
TExt360AppEncTop* m_ext360; TExt360AppEncTop* m_ext360;
#endif #endif
EncTemporalFilter m_temporalFilter;
bool m_flush; bool m_flush;
public: public:
......
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -95,8 +95,13 @@ protected: ...@@ -95,8 +95,13 @@ protected:
int m_iFrameRate; ///< source frame-rates (Hz) int m_iFrameRate; ///< source frame-rates (Hz)
uint32_t m_FrameSkip; ///< number of skipped frames from the beginning uint32_t m_FrameSkip; ///< number of skipped frames from the beginning
uint32_t m_temporalSubsampleRatio; ///< temporal subsample ratio, 2 means code every two frames uint32_t m_temporalSubsampleRatio; ///< temporal subsample ratio, 2 means code every two frames
#if JVET_AA0146_WRAP_AROUND_FIX
int m_sourceWidth; ///< source width in pixel
int m_sourceHeight; ///< source height in pixel (when interlaced = field height)
#else
int m_iSourceWidth; ///< source width in pixel int m_iSourceWidth; ///< source width in pixel
int m_iSourceHeight; ///< source height in pixel (when interlaced = field height) int m_iSourceHeight; ///< source height in pixel (when interlaced = field height)
#endif
#if EXTENSION_360_VIDEO #if EXTENSION_360_VIDEO
int m_inputFileWidth; ///< width of image in input file (this is equivalent to sourceWidth, if sourceWidth is not subsequently altered due to padding) int m_inputFileWidth; ///< width of image in input file (this is equivalent to sourceWidth, if sourceWidth is not subsequently altered due to padding)
int m_inputFileHeight; ///< height of image in input file (this is equivalent to sourceHeight, if sourceHeight is not subsequently altered due to padding) int m_inputFileHeight; ///< height of image in input file (this is equivalent to sourceHeight, if sourceHeight is not subsequently altered due to padding)
...@@ -113,10 +118,17 @@ protected: ...@@ -113,10 +118,17 @@ protected:
int m_confWinRight; int m_confWinRight;
int m_confWinTop; int m_confWinTop;
int m_confWinBottom; int m_confWinBottom;
int m_firstValidFrame;
int m_lastValidFrame;
int m_framesToBeEncoded; ///< number of encoded frames int m_framesToBeEncoded; ///< number of encoded frames
#if JVET_AA0146_WRAP_AROUND_FIX
int m_sourcePadding[2]; ///< number of padded pixels for width and height
#else
int m_aiPad[2]; ///< number of padded pixels for width and height int m_aiPad[2]; ///< number of padded pixels for width and height
#endif
bool m_AccessUnitDelimiter; ///< add Access Unit Delimiter NAL units bool m_AccessUnitDelimiter; ///< add Access Unit Delimiter NAL units
bool m_enablePictureHeaderInSliceHeader; ///< Enable Picture Header in Slice Header bool m_enablePictureHeaderInSliceHeader; ///< Enable Picture Header in Slice Header
InputColourSpaceConversion m_inputColourSpaceConvert; ///< colour space conversion to apply to input video InputColourSpaceConversion m_inputColourSpaceConvert; ///< colour space conversion to apply to input video
bool m_snrInternalColourSpace; ///< if true, then no colour space conversion is applied for snr calculation, otherwise inverse of input is applied. bool m_snrInternalColourSpace; ///< if true, then no colour space conversion is applied for snr calculation, otherwise inverse of input is applied.
bool m_outputInternalColourSpace; ///< if true, then no colour space conversion is applied for reconstructed video, otherwise inverse of input is applied. bool m_outputInternalColourSpace; ///< if true, then no colour space conversion is applied for reconstructed video, otherwise inverse of input is applied.
...@@ -126,6 +138,9 @@ protected: ...@@ -126,6 +138,9 @@ protected:
bool m_printHexPsnr; bool m_printHexPsnr;
bool m_printFrameMSE; bool m_printFrameMSE;
bool m_printSequenceMSE; bool m_printSequenceMSE;
#if MSSIM_UNIFORM_METRICS_LOG
bool m_printMSSSIM;
#endif
bool m_cabacZeroWordPaddingEnabled; bool m_cabacZeroWordPaddingEnabled;
bool m_bClipInputVideoToRec709Range; bool m_bClipInputVideoToRec709Range;
bool m_bClipOutputVideoToRec709Range; bool m_bClipOutputVideoToRec709Range;
...@@ -167,6 +182,9 @@ protected: ...@@ -167,6 +182,9 @@ protected:
#endif #endif
bool m_noPartitionConstraintsOverrideConstraintFlag; bool m_noPartitionConstraintsOverrideConstraintFlag;
bool m_noSaoConstraintFlag; bool m_noSaoConstraintFlag;
#if JVET_W0066_CCSAO
bool m_noCCSaoConstraintFlag;
#endif
bool m_noAlfConstraintFlag; bool m_noAlfConstraintFlag;
bool m_noCCAlfConstraintFlag; bool m_noCCAlfConstraintFlag;
#if JVET_S0058_GCI #if JVET_S0058_GCI
...@@ -187,6 +205,21 @@ protected: ...@@ -187,6 +205,21 @@ protected:
#if ENABLE_DIMD #if ENABLE_DIMD
bool m_noDimdConstraintFlag; bool m_noDimdConstraintFlag;
#endif #endif
#if JVET_W0123_TIMD_FUSION
bool m_noTimdConstraintFlag;
#endif
#if JVET_AB0155_SGPM
bool m_noSgpmConstraintFlag;
#endif
#if JVET_AD0082_TMRL_CONFIG
bool m_noTmrlConstraintFlag;
#endif
#if JVET_AG0058_EIP
bool m_noEipConstraintFlag;
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
bool m_noIntraPredBfConstraintFlag;
#endif
#if ENABLE_OBMC #if ENABLE_OBMC
bool m_noObmcConstraintFlag; bool m_noObmcConstraintFlag;
#endif #endif
...@@ -248,6 +281,13 @@ protected: ...@@ -248,6 +281,13 @@ protected:
#endif #endif
// coding structure // coding structure
int m_iIntraPeriod; ///< period of I-slice (random access period) int m_iIntraPeriod; ///< period of I-slice (random access period)
#if JVET_Z0118_GDR
bool m_gdrEnabled;
int m_gdrPocStart;
int m_gdrPeriod;
int m_gdrInterval;
bool m_gdrNoHash;
#endif
int m_iDecodingRefreshType; ///< random access type int m_iDecodingRefreshType; ///< random access type
int m_iGOPSize; ///< GOP size of hierarchical structure int m_iGOPSize; ///< GOP size of hierarchical structure
int m_drapPeriod; ///< period of dependent RAP pictures int m_drapPeriod; ///< period of dependent RAP pictures
...@@ -269,6 +309,11 @@ protected: ...@@ -269,6 +309,11 @@ protected:
bool m_cabacBypassAlignmentEnabledFlag; bool m_cabacBypassAlignmentEnabledFlag;
bool m_ISP; bool m_ISP;
bool m_useFastISP; ///< flag for enabling fast methods for ISP bool m_useFastISP; ///< flag for enabling fast methods for ISP
#if JVET_AA0093_DIVERSITY_CRITERION_FOR_ARMC
bool m_isRA;
int m_numQPOffset;
int m_qpOffsetList[MAX_GOP];
#endif
// coding quality // coding quality
#if QP_SWITCHING_FOR_PARALLEL #if QP_SWITCHING_FOR_PARALLEL
...@@ -335,26 +380,119 @@ protected: ...@@ -335,26 +380,119 @@ protected:
unsigned m_subPicIdLen; unsigned m_subPicIdLen;
std::vector<uint16_t> m_subPicId; std::vector<uint16_t> m_subPicId;
bool m_SplitConsOverrideEnabledFlag; bool m_SplitConsOverrideEnabledFlag;
#if JVET_X0144_MAX_MTT_DEPTH_TID
std::string m_sMaxMTTHierarchyDepthByTid;
unsigned m_maxMTTHierarchyDepthByTid[MAX_TLAYER];
#endif
unsigned m_uiMinQT[3]; // 0: I slice luma; 1: P/B slice; 2: I slice chroma unsigned m_uiMinQT[3]; // 0: I slice luma; 1: P/B slice; 2: I slice chroma
unsigned m_uiMaxMTTHierarchyDepth; unsigned m_uiMaxMTTHierarchyDepth;
unsigned m_uiMaxMTTHierarchyDepthI; unsigned m_uiMaxMTTHierarchyDepthI;
unsigned m_uiMaxMTTHierarchyDepthIChroma; unsigned m_uiMaxMTTHierarchyDepthIChroma;
unsigned m_uiMaxBT[3]; unsigned m_uiMaxBT[3];
unsigned m_uiMaxTT[3]; unsigned m_uiMaxTT[3];
#if AHG7_MTS_TOOLOFF_CFG
bool m_MTSExt;
#endif
#if JVET_Y0152_TT_ENC_SPEEDUP
int m_ttFastSkip;
double m_ttFastSkipThr;
#endif
bool m_dualTree; bool m_dualTree;
#if JVET_AI0136_ADAPTIVE_DUAL_TREE
bool m_interSliceSeparateTreeEnabled;
#endif
#if JVET_AH0103_LOW_DELAY_LFNST_NSPT
bool m_intraLFNSTISlice;
bool m_intraLFNSTPBSlice;
bool m_interLFNST;
#else
bool m_LFNST; bool m_LFNST;
#endif
bool m_useFastLFNST; bool m_useFastLFNST;
#if JVET_AH0103_LOW_DELAY_LFNST_NSPT
bool m_useFastInterLFNST;
#endif
#if JVET_AI0050_INTER_MTSS
bool m_useInterMTSS;
#endif
#if JVET_AI0050_SBT_LFNST
bool m_useSbtLFNST;
#endif
#if AHG7_LN_TOOLOFF_CFG
bool m_NSPT;
bool m_LFNSTExt;
#endif
bool m_sbTmvpEnableFlag; bool m_sbTmvpEnableFlag;
bool m_Affine; bool m_Affine;
bool m_AffineType; bool m_AffineType;
#if JVET_AI0185_ADAPTIVE_COST_IN_MERGE_MODE
bool m_useAltCost;
#endif
#if JVET_AJ0126_INTER_AMVP_ENHANCEMENT
bool m_useExtAmvp;
#endif
#if JVET_AF0163_TM_SUBBLOCK_REFINEMENT
bool m_useAffineTM;
#if JVET_AG0276_NLIC
bool m_useAffAltLMTM;
#endif
#if JVET_AH0119_SUBBLOCK_TM
bool m_useSbTmvpTM;
#endif
#endif
#if JVET_AG0135_AFFINE_CIIP
bool m_useCiipAffine;
#endif
#if AFFINE_MMVD #if AFFINE_MMVD
bool m_AffineMmvdMode; bool m_AffineMmvdMode;
#endif #endif
#if TM_AMVP || TM_MRG || MULTI_PASS_DMVR #if TM_AMVP || TM_MRG || JVET_Z0084_IBC_TM || MULTI_PASS_DMVR
bool m_DMVDMode; bool m_DMVDMode;
#endif
#if JVET_AA0132_CONFIGURABLE_TM_TOOLS
bool m_tmToolsEnableFlag;
#if TM_AMVP
bool m_tmAmvpMode;
#endif
#if TM_MRG
bool m_tmMrgMode;
#endif
#if JVET_W0097_GPM_MMVD_TM && TM_MRG
bool m_tmGPMMode;
#endif
#if JVET_Z0061_TM_OBMC && ENABLE_OBMC
bool m_tmOBMCMode;
#endif
#if JVET_X0141_CIIP_TIMD_TM && TM_MRG
int m_tmCIIPMode;
#endif
#if JVET_Y0134_TMVP_NAMVP_CAND_REORDERING && JVET_W0090_ARMC_TM
bool m_useTmvpNmvpReorder;
#endif
#if JVET_Y0067_ENHANCED_MMVD_MVD_SIGN_PRED
bool m_useTMMMVD;
#endif
#endif
#if JVET_Z0056_GPM_SPLIT_MODE_REORDERING
bool m_altGPMSplitModeCode;
#endif #endif
bool m_PROF; bool m_PROF;
bool m_BIO; bool m_BIO;
#if JVET_W0090_ARMC_TM
bool m_AML;
#if JVET_AG0276_NLIC
bool m_altLM;
bool m_affAltLM;
#endif
#endif
#if JVET_AG0276_LIC_FLAG_SIGNALING
bool m_mergeOppositeLic;
bool m_mergeTMOppositeLic;
bool m_mergeAffOppositeLic;
#endif
#if JVET_AA0093_REFINED_MOTION_FOR_ARMC
bool m_armcRefinedMotion;
#endif
int m_LMChroma; int m_LMChroma;
bool m_horCollocatedChromaFlag; bool m_horCollocatedChromaFlag;
bool m_verCollocatedChromaFlag; bool m_verCollocatedChromaFlag;
...@@ -374,36 +512,159 @@ protected: ...@@ -374,36 +512,159 @@ protected:
std::vector<int> m_LadfQpOffset; std::vector<int> m_LadfQpOffset;
int m_LadfIntervalLowerBound[MAX_LADF_INTERVALS]; int m_LadfIntervalLowerBound[MAX_LADF_INTERVALS];
#endif #endif
#if JVET_AA0133_INTER_MTS_OPT
int m_interMTSMaxSize;
#endif
#if AHG7_MTS_TOOLOFF_CFG
int m_intraMTSMaxSize;
#endif
#if ENABLE_DIMD #if ENABLE_DIMD
bool m_dimd; bool m_dimd;
#endif #endif
#if JVET_W0123_TIMD_FUSION
bool m_timd;
#if JVET_AJ0061_TIMD_MERGE
bool m_timdMrg;
#endif
#endif
#if JVET_AB0155_SGPM
bool m_sgpm;
#if JVET_AC0189_SGPM_NO_BLENDING
bool m_sgpmNoBlend;
#endif
#endif
#if JVET_AD0082_TMRL_CONFIG
bool m_tmrl;
#endif
#if JVET_AE0174_NONINTER_TM_TOOLS_CONTROL
bool m_tmNoninterToolsEnableFlag;
#endif
#if JVET_AG0058_EIP
bool m_eip;
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
bool m_intraPredBf;
#endif
#if JVET_AD0085_MPM_SORTING
bool m_mpmSorting;
#endif
#if JVET_AK0059_MDIP
bool m_mdip;
#endif
#if JVET_AH0136_CHROMA_REORDERING
bool m_chromaReordering;
#endif
#if JVET_AC0147_CCCM_NO_SUBSAMPLING
int m_cccm;
#endif
#if JVET_AD0188_CCP_MERGE
bool m_ccpMerge;
#endif
#if JVET_AG0154_DECODER_DERIVED_CCP_FUSION
bool m_ddCcpFusion;
#endif
#if ENABLE_OBMC #if ENABLE_OBMC
bool m_OBMC; bool m_OBMC;
#endif #endif
bool m_ciip; bool m_ciip;
#if JVET_X0141_CIIP_TIMD_TM && JVET_W0123_TIMD_FUSION
bool m_ciipTimd;
#endif
bool m_Geo; bool m_Geo;
#if JVET_AJ0107_GPM_SHAPE_ADAPT
bool m_geoShapeAdapt;
#endif
#if JVET_AI0082_GPM_WITH_INTER_IBC
bool m_geoInterIbc;
#endif
#if JVET_AK0101_REGRESSION_GPM_INTRA
bool m_geoBlendIntra;
#endif
bool m_HashME; bool m_HashME;
bool m_allowDisFracMMVD; bool m_allowDisFracMMVD;
bool m_AffineAmvr; bool m_AffineAmvr;
bool m_AffineAmvrEncOpt; bool m_AffineAmvrEncOpt;
bool m_AffineAmvp;
bool m_DMVR; bool m_DMVR;
#if JVET_AD0182_AFFINE_DMVR_PLUS_EXTENSIONS
bool m_affineParaRefinement;
#endif
bool m_MMVD; bool m_MMVD;
int m_MmvdDisNum; int m_MmvdDisNum;
#if JVET_Y0067_ENHANCED_MMVD_MVD_SIGN_PRED || JVET_AD0140_MVD_PREDICTION
bool m_mvdPred;
#endif
#if JVET_AC0104_IBC_BVD_PREDICTION
bool m_bvdPred;
#endif
#if JVET_AC0060_IBC_BVP_CLUSTER_RRIBC_BVD_SIGN_DERIV
bool m_bvpCluster;
#endif
#if JVET_Z0054_BLK_REF_PIC_REORDER
bool m_useARL;
#endif
bool m_rgbFormat; bool m_rgbFormat;
bool m_useColorTrans; bool m_useColorTrans;
unsigned m_PLTMode; unsigned m_PLTMode;
bool m_JointCbCrMode; bool m_JointCbCrMode;
bool m_useChromaTS; bool m_useChromaTS;
unsigned m_IBCMode; unsigned m_IBCMode;
#if JVET_AD0208_IBC_ADAPT_FOR_CAM_CAPTURED_CONTENTS
unsigned m_IBCFracMode;
#endif
unsigned m_IBCLocalSearchRangeX; unsigned m_IBCLocalSearchRangeX;
unsigned m_IBCLocalSearchRangeY; unsigned m_IBCLocalSearchRangeY;
unsigned m_IBCHashSearch; unsigned m_IBCHashSearch;
unsigned m_IBCHashSearchMaxCand; unsigned m_IBCHashSearchMaxCand;
unsigned m_IBCHashSearchRange4SmallBlk; unsigned m_IBCHashSearchRange4SmallBlk;
unsigned m_IBCFastMethod; unsigned m_IBCFastMethod;
#if JVET_AF0057
bool m_dmvrEncSelect;
int m_dmvrEncSelectBaseQpTh;
bool m_dmvrEncSelectDisableHighestTemporalLayer;
#endif
#if JVET_AA0061_IBC_MBVD
bool m_ibcMbvd;
#if JVET_AE0169_IBC_MBVD_LIST_DERIVATION
bool m_ibcMbvdAdSearch;
#endif
#endif
#if JVET_AC0112_IBC_CIIP
bool m_ibcCiip;
#endif
#if JVET_AC0112_IBC_GPM
bool m_ibcGpm;
#endif
#if JVET_AC0112_IBC_LIC
bool m_ibcLic;
#endif
#if JVET_AE0159_FIBC
bool m_ibcFilter;
#endif
#if JVET_AE0169_BIPREDICTIVE_IBC
bool m_ibcBiPred;
#endif
#if JVET_AE0094_IBC_NONADJACENT_SPATIAL_CANDIDATES
bool m_ibcNonAdjCand;
#endif
#if JVET_AG0136_INTRA_TMP_LIC
bool m_itmpLicExtension;
bool m_itmpLicMode;
#endif
#if JVET_AJ0057_HL_INTRA_METHOD_CONTROL
int m_intraToolControlMode;
#endif
#if JVET_AD0208_IBC_ADAPT_FOR_CAM_CAPTURED_CONTENTS
bool m_rribc;
bool m_tmibc;
bool m_ibcMerge;
#endif
bool m_wrapAround; bool m_wrapAround;
unsigned m_wrapAroundOffset; unsigned m_wrapAroundOffset;
#if JVET_AH0135_TEMPORAL_PARTITIONING
bool m_enableMaxMttIncrease;
#endif
#if MULTI_HYP_PRED #if MULTI_HYP_PRED
int m_numMHPCandsToTest; int m_numMHPCandsToTest;
int m_maxNumAddHyps; ///< max. number of additional inter hypotheseis int m_maxNumAddHyps; ///< max. number of additional inter hypotheseis
...@@ -414,12 +675,51 @@ protected: ...@@ -414,12 +675,51 @@ protected:
#if JVET_V0130_INTRA_TMP #if JVET_V0130_INTRA_TMP
bool m_intraTMP; ///< intra Template Matching bool m_intraTMP; ///< intra Template Matching
unsigned m_intraTmpMaxSize; ///< max CU size for which intra TMP is allowed unsigned m_intraTmpMaxSize; ///< max CU size for which intra TMP is allowed
#if JVET_AB0130_ITMP_SAMPLING
bool m_fastIntraTMP; ///< fast IntraTMP RD search
#endif
#endif
#if JVET_AC0071_DBV
bool m_intraDBV; ///< Direct Block Vector
#endif
#if JVET_AE0059_INTER_CCCM
bool m_interCccm; ///< CCCM for inter prediction
#endif
#if JVET_AF0073_INTER_CCP_MERGE
bool m_interCcpMerge; ///< Cross-component prediction merge for inter prediction
int m_interCcpMergeFastMode;
#if JVET_AH0066_JVET_AH0202_CCP_MERGE_LUMACBF0
bool m_interCcpMergeZeroLumaCbf;
int m_interCcpMergeZeroLumaCbfFastMode;
#endif
#endif
#if JVET_AE0100_BVGCCCM
bool m_bvgCccm; ///< Block vector guided CCCM
#endif #endif
#if JVET_V0094_BILATERAL_FILTER #if JVET_V0094_BILATERAL_FILTER
bool m_BIF; ///< bilateral filter bool m_BIF; ///< bilateral filter
unsigned m_BIFStrength; /// Bilateral filter strength unsigned m_BIFStrength; /// Bilateral filter strength
int m_BIFQPOffset; /// Bilateral QP offset int m_BIFQPOffset; /// Bilateral QP offset
#endif #endif
#if JVET_X0071_CHROMA_BILATERAL_FILTER
bool m_chromaBIF;
unsigned m_chromaBIFStrength;
int m_chromaBIFQPOffset;
#endif
#if JVET_Z0135_TEMP_CABAC_WIN_WEIGHT
unsigned m_tempCabacInitMode;
#endif
#if JVET_AH0209_PDP
bool m_pdp;
#endif
#if JVET_AI0183_MVP_EXTENSION
bool m_scaledMvExtTmvp;
bool m_scaledMvExtBiTmvp;
#endif
#if JVET_AJ0158_SUBBLOCK_INTER_EXTENSION
bool m_sbTmvpMvExt;
#endif
// ADD_NEW_TOOL : (encoder app) add tool enabling flags and associated parameters here // ADD_NEW_TOOL : (encoder app) add tool enabling flags and associated parameters here
bool m_virtualBoundariesEnabledFlag; bool m_virtualBoundariesEnabledFlag;
...@@ -440,6 +740,9 @@ protected: ...@@ -440,6 +740,9 @@ protected:
unsigned m_uiMaxCUWidth; ///< max. CU width in pixel unsigned m_uiMaxCUWidth; ///< max. CU width in pixel
unsigned m_uiMaxCUHeight; ///< max. CU height in pixel unsigned m_uiMaxCUHeight; ///< max. CU height in pixel
unsigned m_log2MinCuSize; ///< min. CU size log2 unsigned m_log2MinCuSize; ///< min. CU size log2
#if JVET_AJ0226_MTT_SKIP
bool m_useMttSkip;
#endif
bool m_useFastLCTU; bool m_useFastLCTU;
bool m_usePbIntraFast; bool m_usePbIntraFast;
...@@ -481,6 +784,22 @@ protected: ...@@ -481,6 +784,22 @@ protected:
// coding tool (SAO) // coding tool (SAO)
bool m_bUseSAO; bool m_bUseSAO;
#if JVET_W0066_CCSAO
bool m_CCSAO;
#endif
#if JVET_AG0158_ALF_LUMA_COEFF_PRECISION
bool m_alfPrecision;
#endif
#if JVET_AH0057_CCALF_COEFF_PRECISION
bool m_ccalfPrecision;
#endif
#if JVET_AJ0188_CODING_INFO_CLASSIFICATION
bool m_alfLumaFixedFilterAdjust;
#endif
#if JVET_AK0121_LOOPFILTER_OFFSET_REFINEMENT
bool m_inloopOffsetRefineFlag;
bool m_inloopOffsetRefineFunc;
#endif
bool m_bTestSAODisableAtPictureLevel; bool m_bTestSAODisableAtPictureLevel;
double m_saoEncodingRate; ///< When >0 SAO early picture termination is enabled for luma and chroma double m_saoEncodingRate; ///< When >0 SAO early picture termination is enabled for luma and chroma
double m_saoEncodingRateChroma; ///< The SAO early picture termination rate to use for chroma (when m_SaoEncodingRate is >0). If <=0, use results for luma. double m_saoEncodingRateChroma; ///< The SAO early picture termination rate to use for chroma (when m_SaoEncodingRate is >0). If <=0, use results for luma.
...@@ -488,6 +807,10 @@ protected: ...@@ -488,6 +807,10 @@ protected:
bool m_saoCtuBoundary; ///< SAO parameter estimation using non-deblocked pixels for CTU bottom and right boundary areas bool m_saoCtuBoundary; ///< SAO parameter estimation using non-deblocked pixels for CTU bottom and right boundary areas
bool m_saoGreedyMergeEnc; ///< SAO greedy merge encoding algorithm bool m_saoGreedyMergeEnc; ///< SAO greedy merge encoding algorithm
// coding tools (loop filter) // coding tools (loop filter)
#if JVET_AB0171_ASYMMETRIC_DB_FOR_GDR
bool m_asymmetricILF;
#endif
bool m_bLoopFilterDisable; ///< flag for using deblocking filter bool m_bLoopFilterDisable; ///< flag for using deblocking filter
bool m_loopFilterOffsetInPPS; ///< offset for deblocking filter in 0 = slice header, 1 = PPS bool m_loopFilterOffsetInPPS; ///< offset for deblocking filter in 0 = slice header, 1 = PPS
#if DB_PARAM_TID #if DB_PARAM_TID
...@@ -508,6 +831,9 @@ protected: ...@@ -508,6 +831,9 @@ protected:
bool m_DeblockingFilterMetric; ///< blockiness metric in encoder bool m_DeblockingFilterMetric; ///< blockiness metric in encoder
#endif #endif
bool m_enableIntraReferenceSmoothing; ///< flag for enabling(default)/disabling intra reference smoothing/filtering bool m_enableIntraReferenceSmoothing; ///< flag for enabling(default)/disabling intra reference smoothing/filtering
#if JVET_AK0085_TM_BOUNDARY_PADDING
bool m_templateMatchingBoundaryPrediction;
#endif
// coding tools (encoder-only parameters) // coding tools (encoder-only parameters)
bool m_bUseASR; ///< flag for using adaptive motion search range bool m_bUseASR; ///< flag for using adaptive motion search range
...@@ -693,9 +1019,25 @@ protected: ...@@ -693,9 +1019,25 @@ protected:
uint32_t m_log2ParallelMergeLevel; ///< Parallel merge estimation region uint32_t m_log2ParallelMergeLevel; ///< Parallel merge estimation region
uint32_t m_maxNumMergeCand; ///< Max number of merge candidates uint32_t m_maxNumMergeCand; ///< Max number of merge candidates
#if JVET_AG0276_LIC_FLAG_SIGNALING
uint32_t m_maxNumOppositeLicMergeCand; ///< Max number of merge candidates with opposite LIC flag
uint32_t m_maxNumAffineOppositeLicMergeCand; ///< Max number of affine merge candidates with opposite LIC flag
#endif
#if JVET_X0049_ADAPT_DMVR
uint32_t m_maxNumBMMergeCand; ///< Max number of BM merge candidates
#endif
uint32_t m_maxNumAffineMergeCand; ///< Max number of affine merge candidates uint32_t m_maxNumAffineMergeCand; ///< Max number of affine merge candidates
uint32_t m_maxNumGeoCand; uint32_t m_maxNumGeoCand;
#if JVET_AG0164_AFFINE_GPM
uint32_t m_maxNumGpmAffCand;
#if JVET_AJ0274_GPM_AFFINE_TM
uint32_t m_maxNumGpmAffTmCand;
#endif
#endif
uint32_t m_maxNumIBCMergeCand; ///< Max number of IBC merge candidates uint32_t m_maxNumIBCMergeCand; ///< Max number of IBC merge candidates
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
uint32_t m_maxNumMHPCand;
#endif
bool m_sliceLevelRpl; ///< code reference picture lists in slice headers rather than picture header bool m_sliceLevelRpl; ///< code reference picture lists in slice headers rather than picture header
bool m_sliceLevelDblk; ///< code deblocking filter parameters in slice headers rather than picture header bool m_sliceLevelDblk; ///< code deblocking filter parameters in slice headers rather than picture header
...@@ -774,6 +1116,9 @@ protected: ...@@ -774,6 +1116,9 @@ protected:
bool m_forceDecodeBitstream1; bool m_forceDecodeBitstream1;
bool m_alf; ///< Adaptive Loop Filter bool m_alf; ///< Adaptive Loop Filter
#if FIXFILTER_CFG
bool m_alfFixedFilter;
#endif
bool m_ccalf; bool m_ccalf;
int m_ccalfQpThreshold; int m_ccalfQpThreshold;
...@@ -784,6 +1129,9 @@ protected: ...@@ -784,6 +1129,9 @@ protected:
#if INTER_LIC #if INTER_LIC
bool m_lic; bool m_lic;
bool m_fastPicLevelLIC; bool m_fastPicLevelLIC;
#if JVET_AG0276_LIC_SLOPE_ADJUST
bool m_licSlopeAdjust;
#endif
#endif #endif
double m_scalingRatioHor; double m_scalingRatioHor;
...@@ -792,11 +1140,44 @@ protected: ...@@ -792,11 +1140,44 @@ protected:
double m_fractionOfFrames; ///< encode a fraction of the frames as specified in FramesToBeEncoded double m_fractionOfFrames; ///< encode a fraction of the frames as specified in FramesToBeEncoded
int m_switchPocPeriod; int m_switchPocPeriod;
int m_upscaledOutput; ////< Output upscaled (2), decoded cropped but in full resolution buffer (1) or decoded cropped (0, default) picture for RPR. int m_upscaledOutput; ////< Output upscaled (2), decoded cropped but in full resolution buffer (1) or decoded cropped (0, default) picture for RPR.
#if JVET_AC0096
int m_rprSwitchingResolutionOrderList[MAX_RPR_SWITCHING_ORDER_LIST_SIZE];
int m_rprSwitchingQPOffsetOrderList[MAX_RPR_SWITCHING_ORDER_LIST_SIZE];
int m_rprSwitchingListSize;
bool m_rprFunctionalityTestingEnabledFlag;
bool m_rprPopulatePPSatIntraFlag;
int m_rprSwitchingSegmentSize;
double m_rprSwitchingTime;
double m_scalingRatioHor2;
double m_scalingRatioVer2;
double m_scalingRatioHor3;
double m_scalingRatioVer3;
#endif
#if JVET_AG0116
bool m_gopBasedRPREnabledFlag;
int m_gopBasedRPRQPThreshold;
double m_psnrThresholdRPR;
double m_psnrThresholdRPR2;
double m_psnrThresholdRPR3;
int m_qpOffsetRPR;
int m_qpOffsetRPR2;
int m_qpOffsetRPR3;
int m_qpOffsetChromaRPR;
int m_qpOffsetChromaRPR2;
int m_qpOffsetChromaRPR3;
#endif
#if JVET_AB0082
int m_upscaleFilterForDisplay;
#endif
bool m_avoidIntraInDepLayer; bool m_avoidIntraInDepLayer;
bool m_gopBasedTemporalFilterEnabled; ///< GOP-based Temporal Filter enable/disable bool m_gopBasedTemporalFilterEnabled; ///< GOP-based Temporal Filter enable/disable
bool m_gopBasedTemporalFilterFutureReference; ///< Enable/disable future frame references in the GOP-based Temporal Filter int m_gopBasedTemporalFilterPastRefs;
int m_gopBasedTemporalFilterFutureRefs; ///< Enable/disable future frame references in the GOP-based Temporal Filter
std::map<int, double> m_gopBasedTemporalFilterStrengths; ///< Filter strength per frame for the GOP-based Temporal Filter std::map<int, double> m_gopBasedTemporalFilterStrengths; ///< Filter strength per frame for the GOP-based Temporal Filter
#if JVET_Y0240_BIM
bool m_bimEnabled;
#endif
int m_maxLayers; int m_maxLayers;
int m_targetOlsIdx; int m_targetOlsIdx;
...@@ -820,6 +1201,9 @@ protected: ...@@ -820,6 +1201,9 @@ protected:
CfgVPSParameters m_cfgVPSParameters; CfgVPSParameters m_cfgVPSParameters;
Level::Name m_levelPtl[MAX_NUM_OLSS]; Level::Name m_levelPtl[MAX_NUM_OLSS];
int m_olsPtlIdx[MAX_NUM_OLSS]; int m_olsPtlIdx[MAX_NUM_OLSS];
#if JVET_AJ0249_NEURAL_NETWORK_BASED
bool m_intraNN;
#endif
#if EXTENSION_360_VIDEO #if EXTENSION_360_VIDEO
TExt360AppEncCfg m_ext360; TExt360AppEncCfg m_ext360;
...@@ -848,6 +1232,9 @@ protected: ...@@ -848,6 +1232,9 @@ protected:
#if SIGN_PREDICTION #if SIGN_PREDICTION
int m_numPredSign; int m_numPredSign;
#if JVET_Y0141_SIGN_PRED_IMPROVE
int m_log2SignPredArea;
#endif
#endif #endif
#if DUMP_BEFORE_INLOOP #if DUMP_BEFORE_INLOOP
bool m_dumpBeforeInloop; bool m_dumpBeforeInloop;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -89,7 +89,7 @@ int main(int argc, char* argv[]) ...@@ -89,7 +89,7 @@ int main(int argc, char* argv[])
fprintf( stdout, NVM_ONOS ); fprintf( stdout, NVM_ONOS );
fprintf( stdout, NVM_COMPILEDBY ); fprintf( stdout, NVM_COMPILEDBY );
fprintf( stdout, NVM_BITS ); fprintf( stdout, NVM_BITS );
#if ENABLE_SIMD_OPT #if ENABLE_SIMD_OPT && defined(TARGET_SIMD_X86)
std::string SIMD; std::string SIMD;
df::program_options_lite::Options opts; df::program_options_lite::Options opts;
opts.addOptions() opts.addOptions()
...@@ -123,7 +123,12 @@ int main(int argc, char* argv[]) ...@@ -123,7 +123,12 @@ int main(int argc, char* argv[])
initROM(); initROM();
TComHash::initBlockSizeToIndex(); TComHash::initBlockSizeToIndex();
#if JVET_AH0209_PDP
createPdpFilters();
#endif
#if JVET_AI0208_PDP_MIP
createMipFilters();
#endif
char** layerArgv = new char*[argc]; char** layerArgv = new char*[argc];
do do
...@@ -290,6 +295,15 @@ int main(int argc, char* argv[]) ...@@ -290,6 +295,15 @@ int main(int argc, char* argv[])
} }
} }
} }
#if JVET_Z0150_MEMORY_USAGE_PRINT
#ifdef __linux
int vm = getProcStatusValue("VmPeak:");
int rm = getProcStatusValue("VmHWM:");
printf("\nMemory Usage: VmPeak= %d KB ( %.1f GiB ), VmHWM= %d KB ( %.1f GiB )\n", vm, (double)vm/(1024*1024), rm, (double)rm/(1024*1024));
#endif
#endif
// ending time // ending time
clock_t endClock = clock(); clock_t endClock = clock();
auto endTime = std::chrono::steady_clock::now(); auto endTime = std::chrono::steady_clock::now();
...@@ -317,7 +331,9 @@ int main(int argc, char* argv[]) ...@@ -317,7 +331,9 @@ int main(int argc, char* argv[])
delete encApp; delete encApp;
} }
#if JVET_AH0209_PDP
destroyPdpFilters();
#endif
// destroy ROM // destroy ROM
destroyROM(); destroyROM();
......
...@@ -10,7 +10,7 @@ file( GLOB INC_FILES "*.h" ) ...@@ -10,7 +10,7 @@ file( GLOB INC_FILES "*.h" )
# add executable # add executable
add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ) add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} )
target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities Threads::Threads ${ADDITIONAL_LIBS} ) target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities ${ADDITIONAL_LIBS} )
# include the output directory, where the svnrevision.h file is generated # include the output directory, where the svnrevision.h file is generated
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -387,7 +387,7 @@ std::vector<uint8_t> process_segment(const char * path, int idx, int * poc_base, ...@@ -387,7 +387,7 @@ std::vector<uint8_t> process_segment(const char * path, int idx, int * poc_base,
} }
fseek(fdi, 0, SEEK_END); fseek(fdi, 0, SEEK_END);
int full_sz = ftell(fdi); long full_sz = ftell(fdi);
fseek(fdi, 0, SEEK_SET); fseek(fdi, 0, SEEK_SET);
std::vector<uint8_t> v(full_sz); std::vector<uint8_t> v(full_sz);
......
...@@ -25,7 +25,7 @@ endif() ...@@ -25,7 +25,7 @@ endif()
add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} ) add_executable( ${EXE_NAME} ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} )
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
if( SET_ENABLE_TRACING ) if( DEFINED ENABLE_TRACING )
if( ENABLE_TRACING ) if( ENABLE_TRACING )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_TRACING=1 )
else() else()
...@@ -33,24 +33,12 @@ if( SET_ENABLE_TRACING ) ...@@ -33,24 +33,12 @@ if( SET_ENABLE_TRACING )
endif() endif()
endif() endif()
if( OpenMP_FOUND ) if( DEFINED ENABLE_HIGH_BITDEPTH )
if( SET_ENABLE_SPLIT_PARALLELISM ) if( ENABLE_HIGH_BITDEPTH )
if( ENABLE_SPLIT_PARALLELISM ) target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=1 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=1 ) else()
else() target_compile_definitions( ${EXE_NAME} PUBLIC RExt__HIGH_BIT_DEPTH_SUPPORT=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
endif()
endif()
if( SET_ENABLE_WPP_PARALLELISM )
if( ENABLE_WPP_PARALLELISM )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=1 )
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif()
endif() endif()
else()
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 )
endif() endif()
if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
...@@ -58,7 +46,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) ...@@ -58,7 +46,7 @@ if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC )
target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 ) target_compile_definitions( ${EXE_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 )
endif() endif()
target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities Threads::Threads ${ADDITIONAL_LIBS} ) target_link_libraries( ${EXE_NAME} CommonLib DecoderLib Utilities ${ADDITIONAL_LIBS} )
# lldb custom data formatters # lldb custom data formatters
if( XCODE ) if( XCODE )
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are * and contributor rights, including patent rights, and no such rights are
* granted under this license. * granted under this license.
* *
* Copyright (c) 2010-2020, ITU/ISO/IEC * Copyright (c) 2010-2023, ITU/ISO/IEC
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -58,7 +58,7 @@ int main(int argc, char* argv[]) ...@@ -58,7 +58,7 @@ int main(int argc, char* argv[])
fprintf( stdout, NVM_ONOS ); fprintf( stdout, NVM_ONOS );
fprintf( stdout, NVM_COMPILEDBY ); fprintf( stdout, NVM_COMPILEDBY );
fprintf( stdout, NVM_BITS ); fprintf( stdout, NVM_BITS );
#if ENABLE_SIMD_OPT #if ENABLE_SIMD_OPT && defined(TARGET_SIMD_X86)
std::string SIMD; std::string SIMD;
df::program_options_lite::Options optsSimd; df::program_options_lite::Options optsSimd;
optsSimd.addOptions()( "SIMD", SIMD, string( "" ), "" ); optsSimd.addOptions()( "SIMD", SIMD, string( "" ), "" );
......