diff --git a/.gitignore b/.gitignore
index 8de22b3bb0085a0848762c7d073404b89461a636..ef9af6c971615f2e58e6c67151767e54cf68cad0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ deploy
 *.pyc
 /out/
 /doc/_minted-software-manual/
+/models_intra_prediction/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c8e195113e3547ad3c204abd0b56b9e4f61728eb..175e5ad33c6761b46e9c9878b9c66416197210d6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,7 +98,7 @@ endif()
 #bb_enable_warnings( clang warnings-as-errors )
 
 # enable warnings
-bb_enable_warnings( msvc warnings-as-errors "/wd4996" )
+bb_enable_warnings( msvc warnings-as-errors "/wd4996" "/wd4244" )
 
 # enable sse4.1 build for all source files for gcc and clang
 if( UNIX OR MINGW )
diff --git a/README.md b/README.md
index 976f54484543dd8c7233a4cc14ec91a12dd0b080..60beddecfa4619c5cbb7ea65d83a12cc34e28bb9 100644
--- a/README.md
+++ b/README.md
@@ -407,3 +407,47 @@ To activate NN-based loop filter encoder optimization, use --EncNnlfOpt=1. Note
 To specify model paths, use e.g. following command lines. Note that model paths should be specified at encoder.
 --RdoCnnlfInterLumaModel="models/RdNnlfSet1_LumaCNNFilter_InterSlice_int16.sadl"
 --RdoCnnlfIntraLumaModel="models/RdNnlfSet1_LumaCNNFilter_IntraSlice_int16.sadl"
+
+
+Low-complexity version of the neural network-based intra prediction mode
+------------------------------------------------------------------------
+
+Below, it is assumed that the current directory is the root directory of the VTM-11-NNVC repository.
+
+1. Initialize and update SADL if not already done.
+
+```sh
+git submodule init
+git submodule update
+```
+
+2. Download the models of the low-complexity version of the neural network-based intra prediction mode.
+
+```sh
+curl  --user "ri-nextgen_r:0Hl5X4yy" -o "models_ee1_2023_january.tgz"  "sftp://sftp.interdigital.com/JVET-EE1-3.2/models_ee1_2023_january.tgz"
+```
+
+If the above command does not work, perhaps because of the `curl` version, please try the command below.
+
+```sh
+sftp ri-nextgen_r@sftp:JVET-EE1-3.2/models_ee1_2023_january.tgz ./
+```
+
+using "0Hl5X4yy" as password.
+
+3. Uncompress the obtained "models_ee1_2023_january.tgz".
+
+```sh
+tar -xvf models_ee1_2023_january.tgz && mv models_ee2_2023_january models_intra_prediction
+```
+
+4. Rate-distortion tests with the low-complexity version of the neural network-based intra prediction mode in 16-bit signed integer.
+    * VTM-11-NNVC can be compiled as usual, i.e. without any additional macro passed as argument to `cmake`.
+    * To run VTM-11-NNVC with the low-complexity version of the neural network-based intra prediction mode, the neural networks being in 16-bit signed integer, please provide the following two arguments to the encoder and the decoder:
+        * --DescriptionPairHeightWidthPathToGraphOutput=4,4,graph_output_4_4_int16.sadl;4,8,graph_output_4_8_int16.sadl;4,16,graph_output_4_16_int16.sadl;4,32,graph_output_4_32_int16.sadl;8,8,graph_output_8_8_int16.sadl;8,16,graph_output_8_16_int16.sadl;16,16,graph_output_16_16_int16.sadl;
+        * --PrefixAbsolutePathsToGraphsOutput=models_intra_prediction
+
+Note that, in 4., `--PrefixAbsolutePathsToGraphsOutput` gives the encoder and the decoder the path
+to the directory storing the neural network models, i.e. the files ".sadl".
+
+
diff --git a/source/App/DecoderApp/DecApp.cpp b/source/App/DecoderApp/DecApp.cpp
index 0fc7d179c82cc004c425fa5c491989aae9fe886c..c899390c29a79c16212714ec05413b89ccfd5659 100644
--- a/source/App/DecoderApp/DecApp.cpp
+++ b/source/App/DecoderApp/DecApp.cpp
@@ -81,7 +81,15 @@ uint32_t DecApp::decode()
 {
   int                 poc;
   PicList* pcListPic = NULL;
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (!m_pathToQuadtreeRecords.empty())
+  {
+    std::ifstream file_test(m_pathToQuadtreeRecords);
+    CHECK(file_test.is_open(),"A file already exists at \"" + m_pathToQuadtreeRecords + "\".");
+    m_ofstreamQuadtree.open(m_pathToQuadtreeRecords.c_str(), std::ios::out);
+    CHECK(m_ofstreamQuadtree.fail(), "The file at \"" + m_pathToQuadtreeRecords + "\" cannot be opened.");
+  }
+#endif
   ifstream bitstreamFile(m_bitstreamFileName.c_str(), ifstream::in | ifstream::binary);
   if (!bitstreamFile)
   {
@@ -127,7 +135,9 @@ uint32_t DecApp::decode()
   bool loopFiltered[MAX_VPS_LAYERS] = { false };
 
   bool bPicSkipped = false;
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool isLmcsMappedDecodedWritten = false;
+#endif
   bool isEosPresentInPu = false;
 #if JVET_S0078_NOOUTPUTPRIORPICFLAG
   bool firstSliceInAU = true;
@@ -269,6 +279,23 @@ uint32_t DecApp::decode()
     {
       if (!loopFiltered[nalu.m_nuhLayerId] || bitstreamFile)
       {
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        if (!m_pathToFileLDecoded.empty() && !isLmcsMappedDecodedWritten)
+        {
+          CHECK(m_upscaledOutput,"`m_upscaledOutput` is true.");
+          CHECK(m_outputColourSpaceConvert != IPCOLOURSPACE_UNCHANGED,"`m_outputColourSpaceConvert` is not equal to `IPCOLOURSPACE_UNCHANGED`.");
+          CHECK(m_packedYUVMode,"`m_packedYUVMode` is true.");
+          CHECK(m_bClipOutputVideoToRec709Range,"`m_bClipOutputVideoToRec709Range` is true.");
+          isLmcsMappedDecodedWritten = true;
+          const Picture* ptrPicture = m_cDecLib.getPicture();
+          const SPS* sps = ptrPicture->cs->sps;
+          const BitDepths& bitDepthInternal = sps->getBitDepths();
+          m_fileLDecoded.open(m_pathToFileLDecoded,true,bitDepthInternal.recon,bitDepthInternal.recon,bitDepthInternal.recon);
+          const Window& conf = ptrPicture->getConformanceWindow();
+          m_fileLDecoded.write(ptrPicture->getRecoBuf().get(COMPONENT_Y).width,ptrPicture->getRecoBuf().get(COMPONENT_Y).height,ptrPicture->getRecoBuf(),IPCOLOURSPACE_UNCHANGED,false,conf.getWindowLeftOffset()*SPS::getWinUnitX(sps->getChromaFormatIdc()),conf.getWindowRightOffset()*SPS::getWinUnitX(sps->getChromaFormatIdc()),conf.getWindowTopOffset()*SPS::getWinUnitY(sps->getChromaFormatIdc()),conf.getWindowBottomOffset()*SPS::getWinUnitY(sps->getChromaFormatIdc()),NUM_CHROMA_FORMAT,false);
+          m_fileLDecoded.close();
+        }
+#endif
         m_cDecLib.executeLoopFilters();
         m_cDecLib.finishPicture(poc, pcListPic, INFO, m_newCLVS[nalu.m_nuhLayerId]);
       }
@@ -525,7 +552,12 @@ uint32_t DecApp::decode()
 #endif
 
   destroyROM();
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (!m_pathToQuadtreeRecords.empty())
+  {
+	  m_ofstreamQuadtree.close();
+  }
+#endif
   return nRet;
 }
 
@@ -598,6 +630,16 @@ void DecApp::xCreateDecLib()
 #endif
   m_cDecLib.m_targetSubPicIdx = this->m_targetSubPicIdx;
   m_cDecLib.initScalingList();
+#if JVET_AB0149_INTRA_PRED
+  m_cDecLib.setDescriptionPairHeightWidthPathToGraphOutput(m_descriptionPairHeightWidthPathToGraphOutput);
+  m_cDecLib.setPrefixAbsolutePathsToGraphsOutput(m_prefixAbsolutePathsToGraphsOutput);
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS && JVET_AB0149_SEARCH_PNN
+  m_cDecLib.setAreCostsWritten(m_areCostsWritten);
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_cDecLib.setPtrOfstreamQuadtree(m_ofstreamQuadtree);
+#endif
 }
 
 void DecApp::xDestroyDecLib()
diff --git a/source/App/DecoderApp/DecApp.h b/source/App/DecoderApp/DecApp.h
index 84af1ec888df43711a2cdb6ba0f151e8695a18ec..ac38f4d453079e2f43a270c27d2b1f45ef25c16f 100644
--- a/source/App/DecoderApp/DecApp.h
+++ b/source/App/DecoderApp/DecApp.h
@@ -93,7 +93,10 @@ private:
   std::ofstream   m_seiMessageFileStream;         ///< Used for outputing SEI messages.
 
   std::ofstream   m_oplFileStream;                ///< Used to output log file for confomance testing
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::ofstream m_ofstreamQuadtree;
+  VideoIOYuv m_fileLDecoded;
+#endif
   bool            m_newCLVS[MAX_NUM_LAYER_IDS];   ///< used to record a new CLVSS
 
 
diff --git a/source/App/DecoderApp/DecAppCfg.cpp b/source/App/DecoderApp/DecAppCfg.cpp
index 58d4f9a6e405791b43af24ccef9bcb374e7c97e6..027d4a3e58beb7e32d3a168524d9316d72fa051a 100644
--- a/source/App/DecoderApp/DecAppCfg.cpp
+++ b/source/App/DecoderApp/DecAppCfg.cpp
@@ -140,6 +140,17 @@ 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 ")
   ("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" )
+#if JVET_AB0149_INTRA_PRED
+  ("DescriptionPairHeightWidthPathToGraphOutput", m_descriptionPairHeightWidthPathToGraphOutput, string(""), "Description of each pair of block height and width being a map key and the path to the output graph of the prediction neural network being its string value.")
+  ("PrefixAbsolutePathsToGraphsOutput", m_prefixAbsolutePathsToGraphsOutput, string(""), "Prefix of the absolute path to the output graph of each prediction neural network.")
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS && JVET_AB0149_SEARCH_PNN
+  ("AreCostsWritten", m_areCostsWritten, false, "Flag indicating whether the costs are written to file.")
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  ("PathToQuadtreeRecords", m_pathToQuadtreeRecords, string(""), "Path to the text file containing the part.")
+  ("PathToFileLDecoded", m_pathToFileLDecoded, string(""), "Path to the binary file to which the decoded picture is written.")
+#endif
   ;
 
   po::setDefaults(opts);
@@ -257,6 +268,13 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] )
   {
     m_targetOlsIdx = -1;
   }
+#endif
+#if JVET_AB0149_INTRA_PRED
+  if (m_descriptionPairHeightWidthPathToGraphOutput.empty())
+  {
+    fprintf(stderr,"The description of each pair of block height and width being a map key and the path to the output graph of the prediction neural network being its string value has to be provided.");
+    return false;
+  }
 #endif
   return true;
 }
@@ -286,6 +304,17 @@ DecAppCfg::DecAppCfg()
 , m_packedYUVMode(false)
 , m_statMode(0)
 , m_mctsCheck(false)
+#if JVET_AB0149_INTRA_PRED
+, m_descriptionPairHeightWidthPathToGraphOutput("")
+, m_prefixAbsolutePathsToGraphsOutput("")
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+, m_areCostsWritten(false)
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+, m_pathToQuadtreeRecords("")
+, m_pathToFileLDecoded("")
+#endif
 {
   for (uint32_t channelTypeIndex = 0; channelTypeIndex < MAX_NUM_CHANNEL_TYPE; channelTypeIndex++)
   {
diff --git a/source/App/DecoderApp/DecAppCfg.h b/source/App/DecoderApp/DecAppCfg.h
index 2315e946ec1fd2ba04ce8d90aab9ac79928f70fc..7dbb765f403657bd0be5138cd1f3c5c8bfdc547a 100644
--- a/source/App/DecoderApp/DecAppCfg.h
+++ b/source/App/DecoderApp/DecAppCfg.h
@@ -102,6 +102,18 @@ protected:
 
   int          m_upscaledOutput;                     ////< Output upscaled (2), decoded but in full resolution buffer (1) or decoded cropped (0, default) picture for RPR.
   int           m_targetSubPicIdx;                    ///< Specify which subpicture shall be write to output, using subpicture index
+#if JVET_AB0149_INTRA_PRED
+  std::string m_descriptionPairHeightWidthPathToGraphOutput;
+  std::string m_prefixAbsolutePathsToGraphsOutput;
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::string m_pathToQuadtreeRecords;
+  std::string m_pathToFileLDecoded;
+#endif
+
 public:
   DecAppCfg();
   virtual ~DecAppCfg();
diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp
index 69d6bcf2798d1ddce51bc0c868c6b7ca6fd5fa0c..03f3e3cca136aab2459b699402e3dce050eecc87 100644
--- a/source/App/EncoderApp/EncApp.cpp
+++ b/source/App/EncoderApp/EncApp.cpp
@@ -1132,6 +1132,18 @@ void EncApp::xInitLibCfg()
   m_cEncLib.setNumRefLayers                                       ( m_numRefLayers );
 
   m_cEncLib.setVPSParameters(m_cfgVPSParameters);
+#if JVET_AB0149_INTRA_PRED
+  m_cEncLib.setDescriptionPairHeightWidthPathToGraphOutput(m_descriptionPairHeightWidthPathToGraphOutput);
+  m_cEncLib.setPrefixAbsolutePathsToGraphsOutput(m_prefixAbsolutePathsToGraphsOutput);
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_cEncLib.setAreCostsWritten(m_areCostsWritten);
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_cEncLib.setPtrOfstreamQuadtree(m_ofstreamQuadtree);
+  m_cEncLib.setPathToFileLOriginal(m_pathToFileLOriginal);
+  m_cEncLib.setPathToFileLReconstructed(m_pathToFileLReconstructed);
+#endif
 }
 
 void EncApp::xCreateLib( std::list<PelUnitBuf*>& recBufList, const int layerId )
@@ -1204,6 +1216,15 @@ void EncApp::xInitLib(bool isFieldCoding)
 
 void EncApp::createLib( const int layerIdx )
 {
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (!m_pathToQuadtreeRecords.empty())
+  {
+    std::ifstream file_test(m_pathToQuadtreeRecords);
+    CHECK(file_test.is_open(), "A file already exists at \"" + m_pathToQuadtreeRecords + "\".");
+    m_ofstreamQuadtree.open(m_pathToQuadtreeRecords.c_str(), std::ios::out);
+    CHECK(m_ofstreamQuadtree.fail(), "The file at \"" + m_pathToQuadtreeRecords + "\" cannot be opened.");
+  }
+#endif
   const int sourceHeight = m_isField ? m_iSourceHeightOrg : m_iSourceHeight;
   UnitArea unitArea( m_chromaFormatIDC, Area( 0, 0, m_iSourceWidth, sourceHeight ) );
 
@@ -1243,7 +1264,12 @@ void EncApp::createLib( const int layerIdx )
     m_temporalFilter.init( m_FrameSkip, m_inputBitDepth, m_MSBExtendedBitDepth, m_internalBitDepth, m_iSourceWidth, sourceHeight,
       m_aiPad, m_bClipInputVideoToRec709Range, m_inputFileName, m_chromaFormatIDC,
       m_inputColourSpaceConvert, m_iQP, m_gopBasedTemporalFilterStrengths,
-      m_gopBasedTemporalFilterFutureReference );
+      m_gopBasedTemporalFilterFutureReference
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      , m_areOriginalFv
+      , m_areOriginalFh
+#endif
+      );
   }
 }
 
@@ -1283,6 +1309,12 @@ void EncApp::destroyLib()
 #endif
 
   printRateSummary();
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (!m_pathToQuadtreeRecords.empty())
+  {
+    m_ofstreamQuadtree.close();
+  }
+#endif
 }
 
 bool EncApp::encodePrep( bool& eos )
@@ -1302,7 +1334,12 @@ bool EncApp::encodePrep( bool& eos )
     m_cVideoIOYuvInputFile.read( *m_orgPic, *m_trueOrgPic, ipCSC, m_aiPad, m_InputChromaFormatIDC, m_bClipInputVideoToRec709Range );
   }
 #else
-  m_cVideoIOYuvInputFile.read( *m_orgPic, *m_trueOrgPic, ipCSC, m_aiPad, m_InputChromaFormatIDC, m_bClipInputVideoToRec709Range );
+  m_cVideoIOYuvInputFile.read( *m_orgPic, *m_trueOrgPic, ipCSC, m_aiPad
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                              , m_areOriginalFv
+                              , m_areOriginalFh
+#endif
+                              , m_InputChromaFormatIDC, m_bClipInputVideoToRec709Range );
 #endif
 
   if( m_gopBasedTemporalFilterEnabled )
diff --git a/source/App/EncoderApp/EncApp.h b/source/App/EncoderApp/EncApp.h
index 0efa6935e5fc94b6c211999065fe9bc0c8ddad8a..b3b2f3e8c43782d848e81ffafddaf3c80c463cdc 100644
--- a/source/App/EncoderApp/EncApp.h
+++ b/source/App/EncoderApp/EncApp.h
@@ -103,6 +103,9 @@ private:
 #endif
   EncTemporalFilter      m_temporalFilter;
   bool m_flush;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::ofstream m_ofstreamQuadtree;
+#endif
 
 public:
   EncApp( fstream& bitStream, EncLibCommon* encLibCommon );
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index eb409f7ff1fec00f2478f4d32ea1f3cbe1589f25..8ba5c3cf29be3cdc8b459fc01376c5cee846cf86 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -87,6 +87,20 @@ EncAppCfg::EncAppCfg()
 #if EXTENSION_360_VIDEO
 , m_ext360(*this)
 #endif
+#if JVET_AB0149_INTRA_PRED
+, m_descriptionPairHeightWidthPathToGraphOutput("")
+, m_prefixAbsolutePathsToGraphsOutput("")
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+, m_areCostsWritten(false)
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+, m_pathToQuadtreeRecords("")
+, m_areOriginalFv(false)
+, m_areOriginalFh(false)
+, m_pathToFileLOriginal("")
+, m_pathToFileLReconstructed("")
+#endif
 {
   m_aidQP = NULL;
 }
@@ -1480,9 +1494,22 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
 #endif
     ("TemporalFilter",                                m_gopBasedTemporalFilterEnabled,          false,            "Enable GOP based temporal filter. Disabled per default")
     ("TemporalFilterFutureReference",                 m_gopBasedTemporalFilterFutureReference,   true,            "Enable referencing of future frames in the GOP based temporal filter. This is typically disabled for Low Delay configurations.")
-    ("TemporalFilterStrengthFrame*",                  m_gopBasedTemporalFilterStrengths, std::map<int, double>(), "Strength for every * frame in GOP based temporal filter, where * is an integer."
-                                                                                                                  " E.g. --TemporalFilterStrengthFrame8 0.95 will enable GOP based temporal filter at every 8th frame with strength 0.95");
-  // clang-format on
+    ("TemporalFilterStrengthFrame*",                  m_gopBasedTemporalFilterStrengths, std::map<int, double>(), "Strength for every * frame in GOP based temporal filter, where * is an integer. E.g. --TemporalFilterStrengthFrame8 0.95 will enable GOP based temporal filter at every 8th frame with strength 0.95.")
+#if JVET_AB0149_INTRA_PRED
+  ("DescriptionPairHeightWidthPathToGraphOutput", m_descriptionPairHeightWidthPathToGraphOutput, string(""), "Description of each pair of block height and width being a map key and the path to the output graph of the prediction neural network being its string value.")
+  ("PrefixAbsolutePathsToGraphsOutput", m_prefixAbsolutePathsToGraphsOutput, string(""), "Prefix of the absolute path to the output graph of each prediction neural network.")
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  ("AreCostsWritten", m_areCostsWritten, false, "Flag indicating whether the costs are written to file.")
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  ("PathToQuadtreeRecords", m_pathToQuadtreeRecords, string(""), "Path to the text file containing the part.")
+  ("AreOriginalFv", m_areOriginalFv, false, "")
+  ("AreOriginalFh", m_areOriginalFh, false, "")
+  ("PathToFileLOriginal", m_pathToFileLOriginal, string(""), "Path to the binary file to which the original picture is written.")
+  ("PathToFileLReconstructed", m_pathToFileLReconstructed, string(""), "Path to the binary file to which the reconstructed picture is written.")
+#endif
+  ;
 
 #if EXTENSION_360_VIDEO
   TExt360AppEncCfg::TExt360AppEncCfgContext ext360CfgContext;
@@ -3682,6 +3709,9 @@ bool EncAppCfg::xCheckParameter()
   }
 
   xConfirmPara( m_sariAspectRatioIdc < 0 || m_sariAspectRatioIdc > 255, "SEISARISampleAspectRatioIdc must be in the range of 0 to 255");
+#if JVET_AB0149_INTRA_PRED
+  xConfirmPara(m_descriptionPairHeightWidthPathToGraphOutput.empty(),"The description of each pair of block height and width being a map key and the path to the output graph of the prediction neural network being its string has to be provided.");
+#endif
 
   if ( m_RCEnableRateControl )
   {
diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h
index 62c09f67e019d39b28f7702d74a947764165de21..5d59c2ab366a57df7907921ea173779fad99244f 100644
--- a/source/App/EncoderApp/EncAppCfg.h
+++ b/source/App/EncoderApp/EncAppCfg.h
@@ -780,7 +780,20 @@ protected:
   CfgVPSParameters m_cfgVPSParameters;
   Level::Name m_levelPtl[MAX_NUM_OLSS];
   int         m_olsPtlIdx[MAX_NUM_OLSS];
-
+#if JVET_AB0149_INTRA_PRED
+  std::string m_descriptionPairHeightWidthPathToGraphOutput;
+  std::string m_prefixAbsolutePathsToGraphsOutput;
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::string m_pathToQuadtreeRecords;
+  bool m_areOriginalFv;
+  bool m_areOriginalFh;
+  std::string m_pathToFileLOriginal;
+  std::string m_pathToFileLReconstructed;
+#endif
 #if EXTENSION_360_VIDEO
   TExt360AppEncCfg m_ext360;
   friend class TExt360AppEncCfg;
diff --git a/source/Lib/CommonLib/CMakeLists.txt b/source/Lib/CommonLib/CMakeLists.txt
index f448473ce38a9df0277c158025c17c5574a5082a..262398f0a65d476d5342a41b1f84b9f770a212da 100644
--- a/source/Lib/CommonLib/CMakeLists.txt
+++ b/source/Lib/CommonLib/CMakeLists.txt
@@ -119,6 +119,15 @@ elseif( UNIX OR MINGW )
     set_property( SOURCE NNFilterSet1.cpp APPEND PROPERTY COMPILE_FLAGS "-DNDEBUG=1 -mavx2 -ffast-math")
   endif()
 endif()
+if(UNIX)
+  if(NNLF_BUILD_WITH_AVX512 STREQUAL "1")
+    set_property( SOURCE intra_pred_sadl.cpp APPEND PROPERTY COMPILE_FLAGS "-ffast-math -Wall -fstrict-aliasing -mavx512f")
+  else()
+    set_property( SOURCE intra_pred_sadl.cpp APPEND PROPERTY COMPILE_FLAGS "-ffast-math -Wall -fstrict-aliasing -mavx2")
+  endif()
+elseif(MSVC)
+ set_property( SOURCE intra_pred_sadl.cpp APPEND PROPERTY COMPILE_FLAGS "/arch:AVX2")
+endif()
 
 # example: place header files in different folders
 source_group( "Natvis Files" FILES ${NATVIS_FILES} )
diff --git a/source/Lib/CommonLib/CommonDef.h b/source/Lib/CommonLib/CommonDef.h
index ab594c457c2364f99203db05104053e3a3d22136..a8c42e17eb4de8c6d90fdeddfa7d81bf4ee9fd5d 100644
--- a/source/Lib/CommonLib/CommonDef.h
+++ b/source/Lib/CommonLib/CommonDef.h
@@ -261,6 +261,12 @@ static const int MULTI_REF_LINE_IDX[4] =               { 0, 1, 2, 0 };
 static const int PRED_REG_MIN_WIDTH =                               4;  // Minimum prediction region width for ISP subblocks
 
 static const int NUM_LUMA_MODE =                                   67; ///< Planar + DC + 65 directional mode (4*16 + 1)
+
+#if JVET_AB0149_INTRA_PRED
+static const int OFFSET_LUMA = NUM_LUMA_MODE - 6;
+static const int MODULO_LUMA = OFFSET_LUMA + 3;
+#endif
+
 static const int NUM_LMC_MODE =                                    1 + 2; ///< LMC + MDLM_T + MDLM_L
 static const int NUM_INTRA_MODE = (NUM_LUMA_MODE + NUM_LMC_MODE);
 
@@ -281,6 +287,12 @@ static const int LM_CHROMA_IDX = NUM_LUMA_MODE; ///< chroma mode index for deriv
 static const int MDLM_L_IDX =                          LM_CHROMA_IDX + 1; ///< MDLM_L
 static const int MDLM_T_IDX =                          LM_CHROMA_IDX + 2; ///< MDLM_T
 static const int DM_CHROMA_IDX =                       NUM_INTRA_MODE; ///< chroma mode index for derived from luma intra mode
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+static const uint8_t NB_INTRA_MODES_STATS = 6;
+#endif
+#if JVET_AB0149_INTRA_PRED
+static const int PNN_IDX = 71;
+#endif
 
 static const uint32_t  NUM_TRAFO_MODES_MTS =                            6; ///< Max Intra CU size applying EMT, supported values: 8, 16, 32, 64, 128
 static const uint32_t  MTS_INTRA_MAX_CU_SIZE =                         32; ///< Max Intra CU size applying EMT, supported values: 8, 16, 32, 64, 128
@@ -297,7 +309,9 @@ static const int LFNST_LAST_SIG_LUMA =                              1;
 static const int LFNST_LAST_SIG_CHROMA =                            1;
 
 static const int NUM_LFNST_NUM_PER_SET =                            3;
-
+#if JVET_AB0149_INTRA_PRED && (JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN)
+static const int DEPTH_LFNST_GROUP = 7;
+#endif
 static const int LOG2_MAX_NUM_COLUMNS_MINUS1 =                      7;
 static const int LOG2_MAX_NUM_ROWS_MINUS1 =                         7;
 
diff --git a/source/Lib/CommonLib/ContextModelling.cpp b/source/Lib/CommonLib/ContextModelling.cpp
index 3e1a44b0e3058766467612c1606a894f5c47640f..5d9dfee97826897a05453e813a21a8b66d2b40d4 100644
--- a/source/Lib/CommonLib/ContextModelling.cpp
+++ b/source/Lib/CommonLib/ContextModelling.cpp
@@ -568,6 +568,33 @@ unsigned DeriveCtx::CtxMipFlag( const CodingUnit& cu )
   return ctxId;
 }
 
+#if JVET_AB0149_INTRA_PRED
+uint16_t DeriveCtx::CtxPnnLFlag(const CodingUnit& cu)
+{
+  const CodingStructure* cs = cu.cs;
+  uint16_t ctxId = 0;
+  const CodingUnit* cuLeft = cs->getCURestricted(cu.lumaPos().offset(-1, 0),cu,CHANNEL_TYPE_LUMA);
+  if (cuLeft)
+  {
+    const uint32_t indexModeLeft = PU::getFinalIntraMode(*cuLeft->firstPU,CHANNEL_TYPE_LUMA);
+    if (indexModeLeft == PNN_IDX)
+    {
+      ctxId = 1;
+    }
+  }
+  const CodingUnit* cuAbove = cs->getCURestricted(cu.lumaPos().offset(0, -1),cu,CHANNEL_TYPE_LUMA);
+  if (cuAbove)
+  {
+    const uint32_t indexModeAbove = PU::getFinalIntraMode(*cuAbove->firstPU,CHANNEL_TYPE_LUMA);
+    if (indexModeAbove == PNN_IDX)
+    {
+      ctxId = 1;
+    }
+  }
+  return ctxId;
+}
+#endif
+
 unsigned DeriveCtx::CtxPltCopyFlag( const unsigned prevRunType, const unsigned dist )
 {
   uint8_t *ucCtxLut = (prevRunType == PLT_RUN_INDEX) ? g_paletteRunLeftLut : g_paletteRunTopLut;
diff --git a/source/Lib/CommonLib/ContextModelling.h b/source/Lib/CommonLib/ContextModelling.h
index e3006c3e503723e4974ea1ebadace39de13dc6eb..ca092fd80dc00570cf36b60a07a109476c564e17 100644
--- a/source/Lib/CommonLib/ContextModelling.h
+++ b/source/Lib/CommonLib/ContextModelling.h
@@ -501,6 +501,9 @@ unsigned CtxAffineFlag( const CodingUnit& cu );
 unsigned CtxPredModeFlag( const CodingUnit& cu );
 unsigned CtxIBCFlag(const CodingUnit& cu);
 unsigned CtxMipFlag   ( const CodingUnit& cu );
+#if JVET_AB0149_INTRA_PRED
+uint16_t CtxPnnLFlag(const CodingUnit& cu);
+#endif
 unsigned CtxPltCopyFlag( const unsigned prevRunType, const unsigned dist );
 }
 
diff --git a/source/Lib/CommonLib/Contexts.cpp b/source/Lib/CommonLib/Contexts.cpp
index 35b5e67815b857e188eed27cc1b4eeaca2b89de5..68aabbc248055bc3971a6374ced91ef90da855af 100644
--- a/source/Lib/CommonLib/Contexts.cpp
+++ b/source/Lib/CommonLib/Contexts.cpp
@@ -305,6 +305,7 @@ const CtxSet ContextSetCfg::IntraLumaMpmFlag = ContextSetCfg::addCtxSet
   {   6, },
 });
 
+#if !JVET_AB0149_INTRA_PRED
 const CtxSet ContextSetCfg::IntraLumaPlanarFlag = ContextSetCfg::addCtxSet
 ({
   {  13,   6, },
@@ -312,6 +313,7 @@ const CtxSet ContextSetCfg::IntraLumaPlanarFlag = ContextSetCfg::addCtxSet
   {  13,  28, },
   {   1,   5, },
 });
+#endif
 
 const CtxSet ContextSetCfg::CclmModeFlag = ContextSetCfg::addCtxSet
 ({
@@ -337,6 +339,16 @@ const CtxSet ContextSetCfg::IntraChromaPredMode = ContextSetCfg::addCtxSet
   {   5, },
 });
 
+#if JVET_AB0149_INTRA_PRED
+const CtxSet ContextSetCfg::PnnChrominanceFlag = ContextSetCfg::addCtxSet
+({
+  {11},
+  {11},
+  {CNU},
+  {5},
+});
+#endif
+
 const CtxSet ContextSetCfg::MipFlag = ContextSetCfg::addCtxSet
 ({
   {  56,  57,  50,  26, },
@@ -345,6 +357,16 @@ const CtxSet ContextSetCfg::MipFlag = ContextSetCfg::addCtxSet
   {   9,  10,   9,   6, },
 });
 
+#if JVET_AB0149_INTRA_PRED
+const CtxSet ContextSetCfg::PnnLuminanceFlag = ContextSetCfg::addCtxSet
+({
+  {CNU, CNU},
+  {CNU, CNU},
+  {CNU, CNU},
+  {5, 5}
+});
+#endif
+
 const CtxSet ContextSetCfg::DeltaQP = ContextSetCfg::addCtxSet
 ({
   { CNU, CNU, },
@@ -656,6 +678,7 @@ const CtxSet ContextSetCfg::LFNSTIdx = ContextSetCfg::addCtxSet
   {   9,   9,  10, },
 });
 
+
 const CtxSet ContextSetCfg::PLTFlag = ContextSetCfg::addCtxSet
 ({
   {  17, },
diff --git a/source/Lib/CommonLib/Contexts.h b/source/Lib/CommonLib/Contexts.h
index 40a67e00029b2b8d41ca5621569a579593e02cdd..f3bc207535bf20a540c0563a4a38bd6b8ef472ce 100644
--- a/source/Lib/CommonLib/Contexts.h
+++ b/source/Lib/CommonLib/Contexts.h
@@ -206,11 +206,19 @@ public:
   static const CtxSet   PredMode;
   static const CtxSet   MultiRefLineIdx;
   static const CtxSet   IntraLumaMpmFlag;
+#if !JVET_AB0149_INTRA_PRED
   static const CtxSet   IntraLumaPlanarFlag;
+#endif
   static const CtxSet   CclmModeFlag;
   static const CtxSet   CclmModeIdx;
   static const CtxSet   IntraChromaPredMode;
+#if JVET_AB0149_INTRA_PRED 
+  static const CtxSet PnnChrominanceFlag;
+#endif
   static const CtxSet   MipFlag;
+#if JVET_AB0149_INTRA_PRED
+  static const CtxSet PnnLuminanceFlag;
+#endif
   static const CtxSet   DeltaQP;
   static const CtxSet   InterDir;
   static const CtxSet   RefPic;
diff --git a/source/Lib/CommonLib/IntraPrediction.cpp b/source/Lib/CommonLib/IntraPrediction.cpp
index c70917b889ea91a2f1820d787289a70801a4b292..bfb61ba01b9f2255dfef0225fae828ca2fd3d927 100644
--- a/source/Lib/CommonLib/IntraPrediction.cpp
+++ b/source/Lib/CommonLib/IntraPrediction.cpp
@@ -47,6 +47,12 @@
 #include <memory.h>
 
 #include "CommonLib/InterpolationFilter.h"
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+#if JVET_AB0149_INTRA_PRED
+#include "intra_pred_extraction_context.h"
+#endif
+#include "intra_pred_utils.h"
+#endif
 
 //! \ingroup CommonLib
 //! \{
@@ -74,6 +80,13 @@ const uint8_t IntraPrediction::m_aucIntraFilter[MAX_INTRA_FILTER_DEPTHS] =
 
 IntraPrediction::IntraPrediction()
 :
+#if JVET_AB0149_INTRA_PRED
+  m_mean_context(0),
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_heightML(-1),
+  m_widthMA(-1),
+#endif
   m_currChromaFormat( NUM_CHROMA_FORMAT )
 {
   for (uint32_t ch = 0; ch < MAX_NUM_COMPONENT; ch++)
@@ -110,7 +123,12 @@ void IntraPrediction::destroy()
   m_pMdlmTemp = nullptr;
 }
 
-void IntraPrediction::init(ChromaFormat chromaFormatIDC, const unsigned bitDepthY)
+void IntraPrediction::init(ChromaFormat chromaFormatIDC
+#if JVET_AB0149_INTRA_PRED
+                           , const std::string& description_pair_height_width_path_to_graph_output
+                           , const std::string& prefix_absolute_paths_to_graphs_output
+#endif
+                           )
 {
   if (m_yuvExt2[COMPONENT_Y][0] != nullptr && m_currChromaFormat != chromaFormatIDC)
   {
@@ -118,8 +136,26 @@ void IntraPrediction::init(ChromaFormat chromaFormatIDC, const unsigned bitDepth
   }
 
   m_currChromaFormat = chromaFormatIDC;
-
-
+#if JVET_AB0149_INTRA_PRED
+  if (models.empty())
+  {
+    int error_code = 0;
+    error_code = fill_map_height_width_target_vector_tensors_input(tensors,g_vectorPairsHeightWidthPnn);
+    CHECK(error_code < 0,"Error in `fill_map_height_width_target_vector_tensors_input`.");
+    error_code = fill_map_height_width_target_model(models,g_vectorPairsHeightWidthPnn);
+    CHECK(error_code < 0,"Error in `fill_map_height_width_target_model`.");
+    std::string prefix_common = prefix_absolute_paths_to_graphs_output;
+    if (!prefix_common.empty())
+    {
+      prefix_common += "/";
+    }
+    std::map<SizeNn, std::string> map_hw_path;
+    error_code = fill_map_pair_ints_string_from_string(map_hw_path,description_pair_height_width_path_to_graph_output,";",",",prefix_common);
+    CHECK(error_code < 0,"Error in `fill_map_pair_ints_string_from_string`.");
+    error_code = read_graphs_init_models(models,map_hw_path,tensors);
+    CHECK(error_code < 0,"Error in `read_graphs_init_models`.");
+  }
+#endif
   if (m_yuvExt2[COMPONENT_Y][0] == nullptr) // check if first is null (in which case, nothing initialised yet)
   {
     m_yuvExtSize2 = (MAX_CU_SIZE) * (MAX_CU_SIZE);
@@ -212,7 +248,11 @@ void IntraPrediction::setReferenceArrayLengths( const CompArea &area )
   m_topRefLength      = (width << 1);
 }
 
-void IntraPrediction::predIntraAng( const ComponentID compId, PelBuf &piPred, const PredictionUnit &pu)
+void IntraPrediction::predIntraAng( const ComponentID compId, PelBuf &piPred, const PredictionUnit &pu
+#if JVET_AB0149_INTRA_PRED
+                                   , const bool& contextFlag
+#endif
+                                   )
 {
   const ComponentID    compID       = MAP_CHROMA( compId );
   const ChannelType    channelType  = toChannelType( compID );
@@ -230,12 +270,18 @@ void IntraPrediction::predIntraAng( const ComponentID compId, PelBuf &piPred, co
 
   const CPelBuf & srcBuf = CPelBuf(getPredictorPtr(compID), srcStride, srcHStride);
   const ClpRng& clpRng(pu.cu->cs->slice->clpRng(compID));
-
+#if JVET_AB0149_INTRA_PRED
+  const SPS& sps = *pu.cs->sps;
+#endif
   switch (uiDirMode)
   {
     case(PLANAR_IDX): xPredIntraPlanar(srcBuf, piPred); break;
     case(DC_IDX):     xPredIntraDc(srcBuf, piPred, channelType, false); break;
     case(BDPCM_IDX):  xPredIntraBDPCM(srcBuf, piPred, isLuma(compID) ? pu.cu->bdpcmMode : pu.cu->bdpcmModeChroma, clpRng); break;
+#if JVET_AB0149_INTRA_PRED
+    case(PNN_IDX): xPredIntraPnn(contextFlag,piPred,srcBuf,sps.getBitDepth(channelType),compID,*pu.cu);
+      break;
+#endif
     default:          xPredIntraAng(srcBuf, piPred, channelType, clpRng); break;
   }
 
@@ -245,7 +291,11 @@ void IntraPrediction::predIntraAng( const ComponentID compId, PelBuf &piPred, co
     const int scale = ((floorLog2(iWidth) - 2 + floorLog2(iHeight) - 2 + 2) >> 2);
     CHECK(scale < 0 || scale > 31, "PDPC: scale < 0 || scale > 31");
 
-    if (uiDirMode == PLANAR_IDX || uiDirMode == DC_IDX)
+    if (uiDirMode == PLANAR_IDX || uiDirMode == DC_IDX
+#if JVET_AB0149_INTRA_PRED
+        || (uiDirMode == PNN_IDX && !contextFlag)
+#endif
+        )
     {
       for (int y = 0; y < iHeight; y++)
       {
@@ -285,6 +335,124 @@ void IntraPrediction::predIntraChromaLM(const ComponentID compID, PelBuf &piPred
   piPred.linearTransform(a, iShift, b, true, pu.cs->slice->clpRng(compID));
 }
 
+#if JVET_AB0149_INTRA_PRED
+void IntraPrediction::xPredIntraPnn(const bool& contextFlag,PelBuf& pDst,const CPelBuf& srcBuf,const int& bitDepth,const ComponentID& compID,CodingUnit& cu)
+{
+  const SizeNn pairInit(pDst.height,pDst.width);
+  transformations_context_prediction transfos;
+  const bool is_shape_handled_pnn = find_equivalent_p(g_vectorPairsHeightWidthPnn,pairInit,transfos);
+  CHECK(!is_shape_handled_pnn,"The PNN mode is going to predict a block having a shape it cannot handle.");
+  if (contextFlag)
+  {
+    CHECK(bitDepth != 10,"`bitDepth` is not equal to 10.");
+    int error_code=0;
+    const TypeSadl* ptr_before_u=nullptr;
+    const TypeSadl* ptr_ulog=nullptr;
+#if JVET_AB0149_TM_INF_PNN
+    const TypeSadl* ptr_ut=nullptr;
+#endif
+    const SizeNn block_size = transfos.pair_height_width_after_tr;
+#if INTERNAL_INT32 || INTERNAL_INT16
+    int quantizer_pred=-1;
+#endif
+    if (
+      !inferModel(models[block_size],tensors[block_size],ptr_before_u,ptr_ulog
+#if JVET_AB0149_TM_INF_PNN
+                  , ptr_ut
+#endif
+#if INTERNAL_INT32 || INTERNAL_INT16
+                  , quantizer_pred
+#endif
+                  )
+     )
+    {
+      std::cerr << "Error during inference" << std::endl;
+      exit(-1);
+    }
+    std::vector<uint32_t> vector_argminmaxs;
+#if JVET_AB0149_TM_INF_PNN
+    const TypeSadl* ptr_ut_optionally=NULL;
+    if (transfos.is_transposed)
+    {
+      error_code = fill_systematically(ptr_ut,m_ptr_ulog_sym,NUM_LFNST_NUM_PER_SET - 1,DEPTH_LFNST_GROUP,1);
+      CHECK(error_code < 0,"Error in `fill_systematically`.");
+      ptr_ut_optionally = m_ptr_ulog_sym;
+    }
+    else
+    {
+      ptr_ut_optionally = ptr_ut;
+    }
+    error_code = collect_argminmax_per_row(ptr_ut_optionally,NUM_LFNST_NUM_PER_SET - 1,DEPTH_LFNST_GROUP,vector_argminmaxs,false);
+    CHECK(error_code < 0,"Error in `collect_argminmax_per_row`.");
+    CHECK(vector_argminmaxs.size() != NUM_LFNST_NUM_PER_SET - 1,"`vector_argmins.size()` is not equal to " + std::to_string(NUM_LFNST_NUM_PER_SET - 1) + ".");
+    for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+    {
+      cu.arrayIdxPredictedLfnstPnn[compID][i] = vector_argminmaxs[i];
+    }
+    vector_argminmaxs.clear();
+#endif
+    if (isLuma(compID))
+    {
+      error_code = collect_argminmax_per_row(ptr_ulog,1,NUM_LUMA_MODE,vector_argminmaxs,false);
+      CHECK(error_code < 0,"Error in `collect_argminmax_per_row`.");
+      CHECK(vector_argminmaxs.size() != 1,"`vector_argmins.size()` is not equal to 1.");
+      if (transfos.is_transposed)
+      {
+        error_code = changeAdaptively(vector_argminmaxs[0],cu.idxRepresentationPnn);
+        CHECK(error_code < 0,"Error in `changeAdaptively`.");
+      }
+      else
+      {
+        cu.idxRepresentationPnn = vector_argminmaxs[0];
+      }
+    }
+#if INTERNAL_FLOAT
+    const TypeSadl divisor = 1.f/(1 << (bitDepth - 8));
+    const TypeSadl maximum = 1023.f;
+#else
+    const int nb_bitshifts_scaling = quantizer_pred - bitDepth + 8;
+    CHECK(nb_bitshifts_scaling < 0,"`quantizer_pred` is strictly smaller than -`bitDepth` + 8.");
+    const TypeSadl divisor = static_cast<TypeSadl>(1 << nb_bitshifts_scaling);
+    const TypeSadl maximum = 1023;
+#endif
+    const TypeSadl mean_context = static_cast<TypeSadl>(m_mean_context);
+    error_code = change_opt_last(ptr_before_u,m_ptr_intermediate,pDst.buf,srcBuf.buf + srcBuf.stride + 1,srcBuf.buf + 1,pDst.height,pDst.width,block_size.second,block_size.second,pDst.stride,1,transfos.factor_downsampling_vertical,transfos.factor_downsampling_horizontal,divisor,mean_context,maximum,transfos.is_transposed);
+    CHECK(error_code < 0,"Error in `change_opt_last`.");
+  }
+  else
+  {
+    xPredIntraPlanar(srcBuf,pDst);
+#if JVET_AB0149_TM_INF_PNN
+    for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+    {
+      cu.arrayIdxPredictedLfnstPnn[compID][i] = 0;
+    }
+#endif
+    if (isLuma(compID))
+    {
+      cu.idxRepresentationPnn = PLANAR_IDX;
+    }
+  }
+}
+
+int IntraPrediction::changeAdaptively(const uint32_t idxIn,uint32_t& idxInT)
+{
+  if (idxIn > VDIA_IDX)
+  {
+    return -1;
+  }
+  if (idxIn <= DC_IDX)
+  {
+    idxInT = idxIn;
+  }
+  else
+  {
+    idxInT = 68 - idxIn;
+  }
+  return 0;
+}
+#endif
+
 /** Function for deriving planar intra prediction. This function derives the prediction samples for planar mode (intra coding).
  */
 
@@ -364,7 +532,14 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA
   const Size   cuSize    = Size( pu.cu->blocks[compId].width, pu.cu->blocks[compId].height );
   const Size   puSize    = Size( area.width, area.height );
   const Size&  blockSize = useISP ? cuSize : puSize;
-  const int      dirMode = PU::getFinalIntraMode(pu, chType);
+  int dirMode = PU::getFinalIntraMode(pu,
+                                      chType);
+#if JVET_AB0149_INTRA_PRED
+  if (dirMode == PNN_IDX)
+  {
+    dirMode = PLANAR_IDX;
+  }
+#endif
   const int     predMode = getModifiedWideAngle( blockSize.width, blockSize.height, dirMode );
 
   m_ipaParam.isModeVer            = predMode >= DIA_IDX;
@@ -743,20 +918,59 @@ void IntraPrediction::geneIntrainterPred(const CodingUnit &cu)
   }
 
   const PredictionUnit* pu = cu.firstPU;
-
-  initIntraPatternChType(cu, pu->Y());
-  predIntraAng(COMPONENT_Y, cu.cs->getPredBuf(*pu).Y(), *pu);
+#if JVET_AB0149_INTRA_PRED
+  bool is_context_extracted = false;
+  bool contextFlag = false;
+#endif
+  initIntraPatternChType(cu, pu->Y()
+#if JVET_AB0149_INTRA_PRED
+                         , contextFlag
+                         , is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                         , false
+#endif
+                         );
+  predIntraAng(COMPONENT_Y,cu.cs->getPredBuf(*pu).Y(),*pu
+#if JVET_AB0149_INTRA_PRED
+               , contextFlag
+#endif
+               );
   int maxCompID = 1;
   if (isChromaEnabled(pu->chromaFormat))
   {
     maxCompID = MAX_NUM_COMPONENT;
     if (pu->chromaSize().width > 2)
     {
-      initIntraPatternChType(cu, pu->Cb());
-      predIntraAng(COMPONENT_Cb, cu.cs->getPredBuf(*pu).Cb(), *pu);
-
-      initIntraPatternChType(cu, pu->Cr());
-      predIntraAng(COMPONENT_Cr, cu.cs->getPredBuf(*pu).Cr(), *pu);
+      initIntraPatternChType(cu,pu->Cb()
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlag
+                             , is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
+      predIntraAng(COMPONENT_Cb,cu.cs->getPredBuf(*pu).Cb(),*pu
+#if JVET_AB0149_INTRA_PRED
+                   , contextFlag
+#endif
+                   );
+
+      initIntraPatternChType(cu,pu->Cr()
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlag
+                             , is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
+      predIntraAng(COMPONENT_Cr,cu.cs->getPredBuf(*pu).Cr(),*pu
+#if JVET_AB0149_INTRA_PRED
+                   , contextFlag
+#endif
+                   );
     }
   }
   for (int currCompID = 0; currCompID < maxCompID; currCompID++)
@@ -777,7 +991,194 @@ inline int  isLeftAvailable       ( const CodingUnit &cu, const ChannelType &chT
 inline int  isAboveRightAvailable ( const CodingUnit &cu, const ChannelType &chType, const Position &posRT, const uint32_t uiNumUnitsInPU, const uint32_t unitHeight, bool *validFlags );
 inline int  isBelowLeftAvailable  ( const CodingUnit &cu, const ChannelType &chType, const Position &posLB, const uint32_t uiNumUnitsInPU, const uint32_t unitHeight, bool *validFlags );
 
-void IntraPrediction::initIntraPatternChType(const CodingUnit &cu, const CompArea &area, const bool forceRefFilterFlag)
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+int get_dim_mask_in_units_from_neighboring_flags(const bool* const ptr_neighboring_flags,const int& nb_units_border,const int& dim_cb_in_units,const bool& is_indexing_flags_reversed,int& dim_mask_in_units)
+{
+    int index_first_true{-1};
+    bool flag_neighboring{false};
+    for (int i = 0; i < nb_units_border; i++)
+    {
+        flag_neighboring = ptr_neighboring_flags[is_indexing_flags_reversed ? -i : i];
+        if (index_first_true != -1 && !flag_neighboring)
+        {
+            return -1;
+        }
+        if (flag_neighboring)
+        {
+            if (index_first_true == -1)
+            {
+                index_first_true = i;
+            }
+        }
+    }
+    if (index_first_true > nb_units_border - dim_cb_in_units)
+    {
+        if (index_first_true != -1)
+        {
+            return -1;
+        }
+        dim_mask_in_units = -1;
+    }
+    else
+    {
+        dim_mask_in_units = index_first_true;
+    }
+    return 0;
+}
+
+int get_dim_mask_in_pixels_from_neighboring_flags(const bool* const ptr_neighboring_flags,const int& dim_unit,const int& nb_units_border,const int& dim_cb_in_units,const bool& is_indexing_flags_reversed,int& dim_mask_in_pixels)
+{
+    int dim_mask_in_units{0};
+    const int error_code = get_dim_mask_in_units_from_neighboring_flags(ptr_neighboring_flags,nb_units_border,dim_cb_in_units,is_indexing_flags_reversed,dim_mask_in_units);
+    if (error_code < 0)
+    {
+        return -1;
+    }
+    if (dim_mask_in_units == -1)
+    {
+        dim_mask_in_pixels = -1;
+    }
+    else
+    {
+        dim_mask_in_pixels = dim_unit*dim_mask_in_units;
+    }
+    return 0;
+}
+
+int get_width_height_masks_nn_in_pixels_from_neighboring_flags(const bool* const ptr_neighboring_flags,const int& height_unit,const int& width_unit,const int& nb_units_above,const int& nb_units_left,const int& height_cb_in_units,const int& width_cb_in_units,int& height_mask_left_nn_in_pixels,int& width_mask_above_nn_in_pixels)
+{
+    int error_code = get_dim_mask_in_pixels_from_neighboring_flags(ptr_neighboring_flags,height_unit,nb_units_left,height_cb_in_units,false,height_mask_left_nn_in_pixels);
+    if (error_code < 0)
+    {
+        return -1;
+    }
+    error_code = get_dim_mask_in_pixels_from_neighboring_flags(ptr_neighboring_flags + nb_units_left + nb_units_above,width_unit,nb_units_above,width_cb_in_units,true,width_mask_above_nn_in_pixels);
+    if (error_code < 0)
+    {
+        return -1;
+    }
+    return 0;
+}
+#endif
+
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+void IntraPrediction::collectContext(const CompArea& area,const CodingUnit& cu,const int unitHeight,const int unitWidth
+#if JVET_AB0149_INTRA_PRED
+                                     , const Pel* const piRoiOrigin,const int iPicStride,const Pel* const refBufUnfiltered,const int bitdepth,bool& contextFlag,const bool is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                     , const bool& isComputedHeightWidthMasks,int& heightMaskLeft,int& widthMaskAbove
+#endif
+                                     )
+{
+  const ChannelType chType = toChannelType(area.compID);
+  const int tuHeight = static_cast<int>(area.height);
+  const int tuWidth = static_cast<int>(area.width);
+  const SizeNn pair0(tuHeight,tuWidth);
+  SizeNn pairSizesCtxBorders(0,0);
+  get_sizes_context_borders(pair0,pairSizesCtxBorders);
+  const int totalAboveUnits{static_cast<int>(pairSizesCtxBorders.second)/unitWidth};
+  const int totalLeftUnits{static_cast<int>(pairSizesCtxBorders.first)/unitHeight};
+  const int totalUnits{totalAboveUnits + totalLeftUnits + 1};
+  const int numAboveUnits{tuWidth/unitWidth};
+  const int numLeftUnits{tuHeight/unitHeight};
+  const int numAboveRightUnits{totalAboveUnits - numAboveUnits};
+  const int numLeftBelowUnits{totalLeftUnits - numLeftUnits};
+  const Position posLT(area);
+  const Position posRT(area.topRight());
+  const Position posLB(area.bottomLeft());
+  bool arrayNeighborFlags[4*MAX_NUM_PART_IDXS_IN_CTU_WIDTH + 1];
+  int numIntraNeighbor = 0;
+  memset(arrayNeighborFlags,0,totalUnits);
+  arrayNeighborFlags[totalLeftUnits] = isAboveLeftAvailable(cu,chType,posLT);
+  numIntraNeighbor += arrayNeighborFlags[totalLeftUnits] ? 1 : 0;
+  numIntraNeighbor += isAboveAvailable(cu,chType,posLT,numAboveUnits,unitWidth,arrayNeighborFlags + totalLeftUnits + 1);
+  numIntraNeighbor += isAboveRightAvailable(cu,chType,posRT,numAboveRightUnits,unitWidth,arrayNeighborFlags + totalLeftUnits + 1 + numAboveUnits);
+  numIntraNeighbor += isLeftAvailable(cu, chType,posLT,numLeftUnits,unitHeight,arrayNeighborFlags + totalLeftUnits - 1);
+  numIntraNeighbor += isBelowLeftAvailable(cu,chType,posLB,numLeftBelowUnits,unitHeight,arrayNeighborFlags + totalLeftUnits - 1 - numLeftUnits);
+  int error_code{0};
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (isComputedHeightWidthMasks)
+  {
+    error_code = get_width_height_masks_nn_in_pixels_from_neighboring_flags(&arrayNeighborFlags[0],unitHeight,unitWidth,totalAboveUnits,totalLeftUnits,numLeftUnits,numAboveUnits,heightMaskLeft,widthMaskAbove);
+    CHECK(error_code < 0,"Error in `get_width_height_masks_nn_in_pixels_from_neighboring_flags`.");
+  }
+#endif
+#if JVET_AB0149_INTRA_PRED
+  contextFlag = false;
+  if (is_context_extracted)
+  {
+    transformations_context_prediction transfos;
+    const bool is_shape_handled_pnn = find_equivalent_p(g_vectorPairsHeightWidthPnn,pair0,transfos);
+    if (is_shape_handled_pnn)
+    {
+      SizeNn pairNbLines(0, 0);
+      error_code = get_nb_lines(pair0,pairNbLines);
+      CHECK(error_code < 0,"Error in `get_nb_lines`.");
+      const int nbLinesAbove = static_cast<int>(pairNbLines.first);
+      const int nbLinesLeft = static_cast<int>(pairNbLines.second);
+      contextFlag = is_context_available(cu,chType,posLT,nbLinesAbove,nbLinesLeft);
+      if (contextFlag)
+      {
+        CHECK(bitdepth != 10,"`bitdepth` is not equal to 10.");
+        const auto& pair1{transfos.pair_height_width_after_tr};
+        const int nbLinesAboveTr = transfos.is_transposed ? nbLinesLeft/transfos.factor_downsampling_horizontal : nbLinesAbove/transfos.factor_downsampling_vertical;
+        const int nbLinesLeftTr = transfos.is_transposed ? nbLinesAbove/transfos.factor_downsampling_vertical : nbLinesLeft/transfos.factor_downsampling_horizontal;
+        const int sizeCtxWidthTr = transfos.is_transposed ? static_cast<int>(pairSizesCtxBorders.first)/transfos.factor_downsampling_vertical : static_cast<int>(pairSizesCtxBorders.second)/transfos.factor_downsampling_horizontal;
+        TypeSadl* piPortionAbove{NULL};
+        TypeSadl* piPortionLeft{NULL};
+        std::vector<sadl::Tensor<TypeSadl>>& vector_tensors_input{tensors.at(pair1)};
+        bool is_fully_connected = false;
+        error_code = decide_fully_connected(pair1,is_fully_connected);
+        CHECK(error_code < 0,"Error in `decide_fully_connected`.");
+        if (is_fully_connected)
+        {
+          piPortionAbove = vector_tensors_input.at(0).data();
+          piPortionLeft = piPortionAbove + nbLinesAboveTr*(nbLinesLeftTr + sizeCtxWidthTr);
+        }
+        else
+        {
+          piPortionAbove = vector_tensors_input.at(0).data();
+          piPortionLeft = vector_tensors_input.at(1).data();
+        }
+#if INTERNAL_FLOAT
+        const TypeSadl scaleQuantizer = 1.f/(1 << (bitdepth - 8));
+        const TypeSadl maskValue = 0;
+#else
+        const int input_quantizer_tf2cpp{
+#if INTERNAL_INT32
+                                         23
+#else
+                                         7
+#endif
+                                         };
+        const int nb_bitshifts_scaling = input_quantizer_tf2cpp - bitdepth + 8;
+        const TypeSadl scaleQuantizer = static_cast<TypeSadl>(1 << nb_bitshifts_scaling);
+        const TypeSadl maskValue = 0;
+        for (auto it = vector_tensors_input.begin(); it != vector_tensors_input.end(); it++)
+        {
+          it->quantizer = input_quantizer_tf2cpp;
+        }
+#endif
+        error_code = extract_pre_cin_optionally(piRoiOrigin,piPortionAbove,piPortionLeft,&arrayNeighborFlags[0],NULL,unitWidth,unitHeight,totalAboveUnits,totalLeftUnits,nbLinesAbove,nbLinesLeft,transfos.factor_downsampling_vertical,transfos.factor_downsampling_horizontal,iPicStride,-1,-1,scaleQuantizer,maskValue,transfos.is_transposed,is_fully_connected,m_mean_context);
+        CHECK(error_code < 0,"Error in `extract_pre_cin_optionally`.");
+      }
+    }
+  }
+#endif
+}
+#endif
+
+void IntraPrediction::initIntraPatternChType(const CodingUnit &cu, const CompArea &area,
+
+#if JVET_AB0149_INTRA_PRED
+                                             bool& contextFlag,
+                                             const bool& is_context_extracted,
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                             const bool& isComputedHeightWidthMasks,
+#endif
+                                             const bool forceRefFilterFlag)
 {
   CHECK(area.width == 2, "Width of 2 is not supported");
   const CodingStructure& cs   = *cu.cs;
@@ -793,7 +1194,15 @@ void IntraPrediction::initIntraPatternChType(const CodingUnit &cu, const CompAre
   setReferenceArrayLengths( area );
 
   // ----- Step 1: unfiltered reference samples -----
-  xFillReferenceSamples( cs.picture->getRecoBuf( area ), refBufUnfiltered, area, cu );
+  xFillReferenceSamples( cs.picture->getRecoBuf( area ), refBufUnfiltered, area, cu
+#if JVET_AB0149_INTRA_PRED
+                        , contextFlag
+                        , is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                        , isComputedHeightWidthMasks
+#endif
+                        );
   // ----- Step 2: filtered reference samples -----
   if( m_ipaParam.refFilterFlag || forceRefFilterFlag )
   {
@@ -801,7 +1210,11 @@ void IntraPrediction::initIntraPatternChType(const CodingUnit &cu, const CompAre
   }
 }
 
-void IntraPrediction::initIntraPatternChTypeISP(const CodingUnit& cu, const CompArea& area, PelBuf& recBuf, const bool forceRefFilterFlag)
+void IntraPrediction::initIntraPatternChTypeISP(const CodingUnit& cu, const CompArea& area, PelBuf& recBuf,
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                                const bool& isComputedHeightWidthMasks,
+#endif
+                                                const bool forceRefFilterFlag)
 {
   const CodingStructure& cs = *cu.cs;
 
@@ -828,9 +1241,18 @@ void IntraPrediction::initIntraPatternChTypeISP(const CodingUnit& cu, const Comp
       m_leftRefLength = cu.Y().height + area.height;
       m_topRefLength = cu.Y().width << 1;
     }
-
-
-    xFillReferenceSamples(cs.picture->getRecoBuf(cu.Y()), refBufUnfiltered, cu.Y(), cu);
+#if JVET_AB0149_INTRA_PRED
+    bool contextFlag = false;
+#endif
+    xFillReferenceSamples(cs.picture->getRecoBuf(cu.Y()), refBufUnfiltered, cu.Y(), cu
+#if JVET_AB0149_INTRA_PRED
+                          , contextFlag
+                          , false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                          , isComputedHeightWidthMasks
+#endif
+                          );
 
     // After having retrieved all the CU reference samples, the number of reference samples is now adjusted for the current subpartition
     m_topRefLength = cu.blocks[area.compID].width + area.width;
@@ -918,7 +1340,15 @@ void IntraPrediction::initIntraPatternChTypeISP(const CodingUnit& cu, const Comp
 }
 
 
-void IntraPrediction::xFillReferenceSamples( const CPelBuf &recoBuf, Pel* refBufUnfiltered, const CompArea &area, const CodingUnit &cu )
+void IntraPrediction::xFillReferenceSamples( const CPelBuf &recoBuf, Pel* refBufUnfiltered, const CompArea &area, const CodingUnit &cu
+#if JVET_AB0149_INTRA_PRED
+                                            , bool& contextFlag
+                                            , const bool& is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                            , const bool& isComputedHeightWidthMasks
+#endif
+                                            )
 {
   const ChannelType      chType = toChannelType( area.compID );
   const CodingStructure &cs     = *cu.cs;
@@ -1166,6 +1596,16 @@ void IntraPrediction::xFillReferenceSamples( const CPelBuf &recoBuf, Pel* refBuf
       currUnit++;
     }
   }
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  collectContext(area,cu,unitHeight,unitWidth
+#if JVET_AB0149_INTRA_PRED
+                 ,srcBuf,srcStride,refBufUnfiltered,sps.getBitDepth(chType),contextFlag,is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                 , isComputedHeightWidthMasks,m_heightML,m_widthMA
+#endif
+                 );
+#endif
 }
 
 void IntraPrediction::xFilterReferenceSamples(const Pel *refBufUnfiltered, Pel *refBufFiltered, const CompArea &area,
@@ -1203,6 +1643,15 @@ void IntraPrediction::xFilterReferenceSamples(const Pel *refBufUnfiltered, Pel *
   refBufFiltered[predHSize] = refBufUnfiltered[predHSize];
 }
 
+#if JVET_AB0149_INTRA_PRED
+bool is_context_available(const CodingUnit& cu,const ChannelType& chType,const Position& posLT,const int& nbLinesAbove,const int& nbLinesLeft)
+{
+  const CodingStructure& cs = *cu.cs;
+  const Position refPos = posLT.offset(-nbLinesLeft, -nbLinesAbove);
+  return cs.getCURestricted(refPos, cu, chType) != NULL;
+}
+#endif
+
 bool isAboveLeftAvailable(const CodingUnit &cu, const ChannelType &chType, const Position &posLT)
 {
   const CodingStructure& cs = *cu.cs;
diff --git a/source/Lib/CommonLib/IntraPrediction.h b/source/Lib/CommonLib/IntraPrediction.h
index ff4c6d12e7f6c5ad0fdd889b7f19668a82232cef..6be1275f034d8bccd897f6ae3b615b1ec9f06f79 100644
--- a/source/Lib/CommonLib/IntraPrediction.h
+++ b/source/Lib/CommonLib/IntraPrediction.h
@@ -43,7 +43,9 @@
 #include "Unit.h"
 #include "Buffer.h"
 #include "Picture.h"
-
+#if JVET_AB0149_INTRA_PRED
+#include "intra_pred_sadl.h"
+#endif
 #include "MatrixIntraPrediction.h"
 
 //! \ingroup CommonLib
@@ -107,14 +109,30 @@ private:
   Pel* m_piTemp;
   Pel* m_pMdlmTemp; // for MDLM mode
   MatrixIntraPrediction m_matrixIntraPred;
-
-
+#if JVET_AB0149_INTRA_PRED
+  std::map<SizeNn, sadl::Model<TypeSadl>> models;
+  std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>> tensors;
+#if JVET_AB0149_TM_INF_PNN
+  TypeSadl m_ptr_ulog_sym[(NUM_LFNST_NUM_PER_SET - 1)*DEPTH_LFNST_GROUP];
+#endif
+  Pel m_mean_context;
+  Pel m_ptr_intermediate[64*64];
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  int m_heightML;
+  int m_widthMA;
+#endif
 
 protected:
   ChromaFormat  m_currChromaFormat;
 
   int m_topRefLength;
   int m_leftRefLength;
+#if JVET_AB0149_INTRA_PRED
+  void xPredIntraPnn(const bool& contextFlag,PelBuf& pDst,const CPelBuf& srcBuf,const int& bitDepth,const ComponentID& compID,CodingUnit& cu);
+  int changeAdaptively(const uint32_t idxIn,uint32_t& idxInT);
+#endif
+  
   ScanElement* m_scanOrder;
   bool         m_bestScanRotationMode;
   // prediction
@@ -129,7 +147,26 @@ protected:
   void xPredIntraBDPCM            ( const CPelBuf &pSrc, PelBuf &pDst, const uint32_t dirMode, const ClpRng& clpRng );
   Pel  xGetPredValDc              ( const CPelBuf &pSrc, const Size &dstSize );
 
-  void xFillReferenceSamples      ( const CPelBuf &recoBuf,      Pel* refBufUnfiltered, const CompArea &area, const CodingUnit &cu );
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+void collectContext(const CompArea& area,const CodingUnit& cu,const int unitHeight,const int unitWidth
+#if JVET_AB0149_INTRA_PRED
+                    ,const Pel* const piRoiOrigin,const int iPicStride,const Pel* const refBufUnfiltered,const int bitdepth,bool& contextFlag,const bool is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                    , const bool& isComputedHeightWidthMasks,int& heightMaskLeft,int& widthMaskAbove
+#endif
+                    );
+#endif
+
+  void xFillReferenceSamples      ( const CPelBuf &recoBuf,      Pel* refBufUnfiltered, const CompArea &area, const CodingUnit &cu
+#if JVET_AB0149_INTRA_PRED
+                                   , bool& contextFlag
+                                   , const bool& is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                    , const bool& isComputedHeightWidthMasks
+#endif
+                                   );
   void xFilterReferenceSamples(const Pel *refBufUnfiltered, Pel *refBufFiltered, const CompArea &area, const SPS &sps,
                                int multiRefIdx
   );
@@ -144,10 +181,19 @@ public:
   IntraPrediction();
   virtual ~IntraPrediction();
 
-  void init                       (ChromaFormat chromaFormatIDC, const unsigned bitDepthY);
+  void init                       (ChromaFormat chromaFormatIDC
+#if JVET_AB0149_INTRA_PRED
+                                   , const std::string& description_pair_height_width_path_to_graph_output
+                                   , const std::string& prefix_absolute_paths_to_graphs_output
+#endif
+                                   );
 
   // Angular Intra
-  void predIntraAng               ( const ComponentID compId, PelBuf &piPred, const PredictionUnit &pu);
+  void predIntraAng               ( const ComponentID compId, PelBuf &piPred, const PredictionUnit &pu
+#if JVET_AB0149_INTRA_PRED
+                                   , const bool& contextFlag
+#endif
+                                   );
   Pel *getPredictorPtr(const ComponentID compId)
   {
     return m_refBuffer[compId][m_ipaParam.refFilterFlag ? PRED_BUF_FILTERED : PRED_BUF_UNFILTERED];
@@ -157,8 +203,19 @@ public:
   void predIntraChromaLM(const ComponentID compID, PelBuf &piPred, const PredictionUnit &pu, const CompArea& chromaArea, int intraDir);
   void xGetLumaRecPixels(const PredictionUnit &pu, CompArea chromaArea);
   /// set parameters from CU data for accessing intra data
-  void initIntraPatternChType     (const CodingUnit &cu, const CompArea &area, const bool forceRefFilterFlag = false); // use forceRefFilterFlag to get both filtered and unfiltered buffers
-  void initIntraPatternChTypeISP  (const CodingUnit& cu, const CompArea& area, PelBuf& piReco, const bool forceRefFilterFlag = false); // use forceRefFilterFlag to get both filtered and unfiltered buffers
+  void initIntraPatternChType     (const CodingUnit &cu, const CompArea &area,
+#if JVET_AB0149_INTRA_PRED
+                                   bool& contextFlag,const bool& is_context_extracted,
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                   const bool& isComputedHeightWidthMasks,
+#endif
+                                   const bool forceRefFilterFlag = false);
+  void initIntraPatternChTypeISP  (const CodingUnit& cu, const CompArea& area, PelBuf& piReco,
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                   const bool& isComputedHeightWidthMasks,
+#endif
+                                   const bool forceRefFilterFlag = false); // use forceRefFilterFlag to get both filtered and unfiltered buffers
 
   // Matrix-based intra prediction
   void initIntraMip               (const PredictionUnit &pu, const CompArea &area);
@@ -169,8 +226,14 @@ public:
   void switchBuffer               (const PredictionUnit &pu, ComponentID compID, PelBuf srcBuff, Pel *dst);
   void geneIntrainterPred         (const CodingUnit &cu);
   void reorderPLT                 (CodingStructure& cs, Partitioner& partitioner, ComponentID compBegin, uint32_t numComp);
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  int getHeightMaskLeft() const {return m_heightML;}
+  int getWidthMaskAbove() const {return m_widthMA;}
+#endif
 };
 
+#if JVET_AB0149_INTRA_PRED
 //! \}
-
+bool is_context_available(const CodingUnit& cu,const ChannelType& chType,const Position& posLT,const int& nbLinesAbove,const int& nbLinesLeft);
+#endif
 #endif // __INTRAPREDICTION__
diff --git a/source/Lib/CommonLib/TrQuant.cpp b/source/Lib/CommonLib/TrQuant.cpp
index 95e339fff0df4479f975aa8fd7ce52af541afe61..10f8b8b4b3413f5c8648afcbb64fc3cfb3103480 100644
--- a/source/Lib/CommonLib/TrQuant.cpp
+++ b/source/Lib/CommonLib/TrQuant.cpp
@@ -197,6 +197,13 @@ TrQuant::TrQuant() : m_quant( nullptr )
     m_fwdICT[ 3]  = fwdTransformCbCr< 3>;
     m_fwdICT[-3]  = fwdTransformCbCr<-3>;
   }
+#if JVET_AB0149_INTRA_PRED
+  for (int i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    m_memoryTrCoeffsPnn[i] = nullptr;
+    m_isAlreadyComputedTrPnn[i] = false;
+  }
+#endif
 }
 
 TrQuant::~TrQuant()
@@ -206,6 +213,16 @@ TrQuant::~TrQuant()
     delete m_quant;
     m_quant = nullptr;
   }
+#if JVET_AB0149_INTRA_PRED
+  for (int i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    if (m_memoryTrCoeffsPnn[i])
+    {
+      delete[] m_memoryTrCoeffsPnn[i];
+      m_memoryTrCoeffsPnn[i] = nullptr;
+    }
+  }
+#endif
 }
 
 #if ENABLE_SPLIT_PARALLELISM
@@ -242,6 +259,15 @@ void TrQuant::init( const Quant* otherQuant,
   {
     m_quant->init( uiMaxTrSize, bUseRDOQ, bUseRDOQTS, useSelectiveRDOQ );
   }
+#if JVET_AB0149_INTRA_PRED
+  for (int i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    if (!m_memoryTrCoeffsPnn[i])
+    {
+      m_memoryTrCoeffsPnn[i] = new TCoeff[MAX_TB_SIZEY*MAX_TB_SIZEY];
+    }
+  }
+#endif
 }
 
 void TrQuant::fwdLfnstNxN( TCoeff* src, TCoeff* dst, const uint32_t mode, const uint32_t index, const uint32_t size, int zeroOutSize )
@@ -328,6 +354,11 @@ void TrQuant::xInvLfnst( const TransformUnit &tu, const ComponentID compID )
   const uint32_t  lfnstIdx = tu.cu->lfnstIdx;
   if( lfnstIdx && tu.mtsIdx[compID] != MTS_SKIP && (tu.cu->isSepTree() ? true : isLuma(compID)) )
   {
+#if JVET_AB0149_INTRA_PRED && (JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN)
+    int idxLfnstPnnUsed=-1;
+#endif
+    bool transposeFlag(false);
+    uint8_t modeLfnst(0);
     const bool whge3 = width >= 8 && height >= 8;
     const ScanElement * scan = whge3 ? g_coefTopLeftDiagScan8x8[ gp_sizeIdxInfo->idxFrom( width ) ] : g_scanOrder[ SCAN_GROUPED_4x4 ][ SCAN_DIAG ][ gp_sizeIdxInfo->idxFrom( width ) ][ gp_sizeIdxInfo->idxFrom( height ) ];
     uint32_t intraMode = PU::getFinalIntraMode( *tu.cs->getPU( area.pos(), toChannelType( compID ) ), toChannelType( compID ) );
@@ -335,20 +366,83 @@ void TrQuant::xInvLfnst( const TransformUnit &tu, const ComponentID compID )
     if( PU::isLMCMode( tu.cs->getPU( area.pos(), toChannelType( compID ) )->intraDir[ toChannelType( compID ) ] ) )
     {
       intraMode = PU::getCoLocatedIntraLumaMode( *tu.cs->getPU( area.pos(), toChannelType( compID ) ) );
+#if JVET_AB0149_INTRA_PRED
+      if (intraMode == PNN_IDX)
+      {
+#if JVET_AB0149_TM_INF_PNN
+        idxLfnstPnnUsed = PU::getCoLocatedIdxLfnstPnn(*tu.cs->getPU(area.pos(), toChannelType(compID)),tu.cu->lfnstIdx);
+#else
+        intraMode = PLANAR_IDX;
+#endif
+      }
+#endif
     }
-    if (PU::isMIP(*tu.cs->getPU(area.pos(), toChannelType(compID)), toChannelType(compID)))
+#if JVET_AB0149_INTRA_PRED
+    else if (intraMode == PNN_IDX)
     {
+#if JVET_AB0149_SEARCH_PNN
+      CHECK(tu.cu->idxLfnstPnn > MAX_INT,"`tu.cu->idxLfnstPnn` is strictly larger than `MAX_INT`.");
+      idxLfnstPnnUsed = static_cast<int>(tu.cu->idxLfnstPnn);
+#elif JVET_AB0149_TM_INF_PNN
+      ComponentID compIdEffective(!isLuma(compID) && tu.jointCbCr ? COMPONENT_Cb : compID);
+      const uint32_t& idxLfnstPnn(tu.cu->arrayIdxPredictedLfnstPnn[compIdEffective][tu.cu->lfnstIdx - 1]);
+      CHECK(idxLfnstPnn > MAX_INT,"`idxLfnstPnn` is strictly larger than `MAX_INT`.");
+      idxLfnstPnnUsed = static_cast<int>(idxLfnstPnn);
+#else
       intraMode = PLANAR_IDX;
+#endif
     }
-    CHECK( intraMode >= NUM_INTRA_MODE - 1, "Invalid intra mode" );
-
-    if( lfnstIdx < 3 )
+#endif
+    else if (PU::isMIP(*tu.cs->getPU(area.pos(), toChannelType(compID)), toChannelType(compID)))
     {
-      intraMode = getLFNSTIntraMode( PU::getWideAngle( tu, intraMode, compID ) );
-#if RExt__DECODER_DEBUG_TOOL_STATISTICS
-      CodingStatistics::IncrementStatisticTool( CodingStatisticsClassType { STATS__TOOL_LFNST, width, height, compID } );
+      intraMode = PLANAR_IDX;
+    }
+#if JVET_AB0149_INTRA_PRED
+    CHECK(intraMode >= NUM_INTRA_MODE - 1 && intraMode != PNN_IDX,"`intraMode` is larger than `NUM_INTRA_MODE` - 1 and is not equal to `PNN_IDX`");
+#if JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN
+    if (idxLfnstPnnUsed != -1)
+    {
+      switch (idxLfnstPnnUsed)
+      {
+        case 0:
+          break;
+        case 1:
+          modeLfnst = 1;
+          break;
+        case 2:
+          modeLfnst = 2;
+          break;
+        case 3:
+          modeLfnst = 3;
+          break;
+        case 4:
+          transposeFlag = true;
+          modeLfnst = 3;
+          break;
+        case 5:
+          transposeFlag = true;
+          modeLfnst = 2;
+          break;
+        case 6:
+          transposeFlag = true;
+          modeLfnst = 1;
+          break;
+        default: CHECK(true, "`idxLfnstPnnUsed` does not belong to [|0, 6|].");
+      }
+    }
+    else
+    {
+#endif
+#else
+    CHECK( intraMode >= NUM_INTRA_MODE - 1, "Invalid intra mode" );
 #endif
-      bool          transposeFlag   = getTransposeFlag( intraMode );
+      intraMode = getLFNSTIntraMode(PU::getWideAngle(tu,intraMode, compID));
+      transposeFlag = getTransposeFlag(intraMode);
+      modeLfnst = g_lfnstLut[intraMode];
+#if JVET_AB0149_INTRA_PRED && (JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN)
+    }
+#endif
+    CHECK(!modeLfnst && transposeFlag, "`modeLfnst` is equal to 0 and `transposeFlag` is true.");
       const int     sbSize          = whge3 ? 8 : 4;
       bool          tu4x4Flag       = ( width == 4 && height == 4 );
       bool          tu8x8Flag       = ( width == 8 && height == 8 );
@@ -366,7 +460,7 @@ void TrQuant::xInvLfnst( const TransformUnit &tu, const ComponentID compID )
         scanPtr++;
       }
 
-      invLfnstNxN(m_tempInMatrix, m_tempOutMatrix, g_lfnstLut[intraMode], lfnstIdx - 1, sbSize,
+    invLfnstNxN(m_tempInMatrix, m_tempOutMatrix, modeLfnst, lfnstIdx - 1, sbSize,
                   (tu4x4Flag || tu8x8Flag) ? 8 : 16, maxLog2TrDynamicRange);
       lfnstTemp = m_tempOutMatrix;   // inverse spectral rearrangement
 
@@ -412,7 +506,6 @@ void TrQuant::xInvLfnst( const TransformUnit &tu, const ComponentID compID )
           ::memcpy(coeffTemp, lfnstTemp, uiStride * sizeof(TCoeff));
           lfnstTemp += uiStride;
           coeffTemp += width;
-        }
       }
     }
   }
@@ -426,6 +519,11 @@ void TrQuant::xFwdLfnst( const TransformUnit &tu, const ComponentID compID, cons
   const uint32_t  lfnstIdx = tu.cu->lfnstIdx;
   if( lfnstIdx && tu.mtsIdx[compID] != MTS_SKIP && (tu.cu->isSepTree() ? true : isLuma(compID)) )
   {
+#if JVET_AB0149_INTRA_PRED && (JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN)
+    int idxLfnstPnnUsed=-1;
+#endif
+    bool transposeFlag(false);
+    uint8_t modeLfnst(0);
     const bool whge3 = width >= 8 && height >= 8;
     const ScanElement * scan = whge3 ? g_coefTopLeftDiagScan8x8[ gp_sizeIdxInfo->idxFrom( width ) ] : g_scanOrder[ SCAN_GROUPED_4x4 ][ SCAN_DIAG ][ gp_sizeIdxInfo->idxFrom( width ) ][ gp_sizeIdxInfo->idxFrom( height ) ];
     uint32_t intraMode = PU::getFinalIntraMode( *tu.cs->getPU( area.pos(), toChannelType( compID ) ), toChannelType( compID ) );
@@ -433,21 +531,87 @@ void TrQuant::xFwdLfnst( const TransformUnit &tu, const ComponentID compID, cons
     if( PU::isLMCMode( tu.cs->getPU( area.pos(), toChannelType( compID ) )->intraDir[ toChannelType( compID ) ] ) )
     {
       intraMode = PU::getCoLocatedIntraLumaMode( *tu.cs->getPU( area.pos(), toChannelType( compID ) ) );
+#if JVET_AB0149_INTRA_PRED
+      if (intraMode == PNN_IDX)
+      {
+#if JVET_AB0149_TM_INF_PNN
+        idxLfnstPnnUsed = PU::getCoLocatedIdxLfnstPnn(*tu.cs->getPU(area.pos(), toChannelType(compID)),tu.cu->lfnstIdx);
+#else
+        intraMode = PLANAR_IDX;
+#endif
+      }
+#endif
     }
-    if (PU::isMIP(*tu.cs->getPU(area.pos(), toChannelType(compID)), toChannelType(compID)))
+#if JVET_AB0149_INTRA_PRED
+    else if (intraMode == PNN_IDX)
     {
+#if JVET_AB0149_SEARCH_PNN
+      CHECK(tu.cu->idxLfnstPnn > MAX_INT,"`tu.cu->idxLfnstPnn` is strictly larger than `MAX_INT`.");
+      idxLfnstPnnUsed = static_cast<int>(tu.cu->idxLfnstPnn);
+#elif JVET_AB0149_TM_INF_PNN
+      ComponentID compIdEffective(!isLuma(compID) && tu.jointCbCr ? COMPONENT_Cb : compID);
+      const uint32_t& idxLfnstPnn(tu.cu->arrayIdxPredictedLfnstPnn[compIdEffective][tu.cu->lfnstIdx - 1]);
+      CHECK(idxLfnstPnn > MAX_INT,"`idxLfnstPnn` is strictly larger than `MAX_INT`.");
+      idxLfnstPnnUsed = static_cast<int>(idxLfnstPnn);
+#else
       intraMode = PLANAR_IDX;
+#endif
     }
-    CHECK( intraMode >= NUM_INTRA_MODE - 1, "Invalid intra mode" );
-
-    if( lfnstIdx < 3 )
+#endif
+    else if (PU::isMIP(*tu.cs->getPU(area.pos(), toChannelType(compID)), toChannelType(compID)))
     {
-      intraMode = getLFNSTIntraMode( PU::getWideAngle( tu, intraMode, compID ) );
-
-      bool            transposeFlag   = getTransposeFlag( intraMode );
+      intraMode = PLANAR_IDX;
+    }
+#if JVET_AB0149_INTRA_PRED
+    CHECK(intraMode >= NUM_INTRA_MODE - 1 && intraMode != PNN_IDX,"`intraMode` is larger than `NUM_INTRA_MODE` - 1 and is not equal to `PNN_IDX`");
+#if JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN
+    if (idxLfnstPnnUsed != -1)
+    {
+      switch (idxLfnstPnnUsed)
+      {
+        case 0:
+          break;
+        case 1:
+          modeLfnst = 1;
+          break;
+        case 2:
+          modeLfnst = 2;
+          break;
+        case 3:
+          modeLfnst = 3;
+          break;
+        case 4:
+          transposeFlag = true;
+          modeLfnst = 3;
+          break;
+        case 5:
+          transposeFlag = true;
+          modeLfnst = 2;
+          break;
+        case 6:
+          transposeFlag = true;
+          modeLfnst = 1;
+          break;
+        default: CHECK(true,"`idxLfnstPnnUsed` does not belong to [|0, 6|].");
+      }
+    }
+    else
+    {
+#endif
+#else
+    CHECK( intraMode >= NUM_INTRA_MODE - 1, "Invalid intra mode" );
+#endif
+      intraMode = getLFNSTIntraMode(PU::getWideAngle(tu,intraMode, compID));
+      transposeFlag = getTransposeFlag(intraMode);
+      modeLfnst = g_lfnstLut[intraMode];
+#if JVET_AB0149_INTRA_PRED && (JVET_AB0149_SEARCH_PNN || JVET_AB0149_TM_INF_PNN)
+    }
+#endif
+    CHECK(!modeLfnst && transposeFlag, "`modeLfnst` is equal to 0 and `transposeFlag` is true.");
       const int       sbSize          = whge3 ? 8 : 4;
       bool            tu4x4Flag       = ( width == 4 && height == 4 );
       bool            tu8x8Flag       = ( width == 8 && height == 8 );
+    
       TCoeff*         lfnstTemp;
       TCoeff*         coeffTemp;
       TCoeff *        tempCoeff = loadTr ? m_mtsCoeffs[tu.mtsIdx[compID]] : m_tempCoeff;
@@ -501,7 +665,7 @@ void TrQuant::xFwdLfnst( const TransformUnit &tu, const ComponentID compID, cons
         }
       }
 
-      fwdLfnstNxN(m_tempInMatrix, m_tempOutMatrix, g_lfnstLut[intraMode], lfnstIdx - 1, sbSize,
+    fwdLfnstNxN(m_tempInMatrix, m_tempOutMatrix, modeLfnst, lfnstIdx - 1, sbSize,
                   (tu4x4Flag || tu8x8Flag) ? 8 : 16);
 
       lfnstTemp         = m_tempOutMatrix;   // forward spectral rearrangement
@@ -514,7 +678,6 @@ void TrQuant::xFwdLfnst( const TransformUnit &tu, const ComponentID compID, cons
       {
         coeffTemp[scanPtr->idx] = *lfnstTemp++;
         scanPtr++;
-      }
     }
   }
 }
@@ -901,7 +1064,11 @@ void TrQuant::xQuant(TransformUnit &tu, const ComponentID &compID, const CCoeffB
   m_quant->quant( tu, compID, pSrc, uiAbsSum, cQP, ctx );
 }
 
-void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, std::vector<TrMode>* trModes, const int maxCand )
+void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, std::vector<TrMode>* trModes, const int maxCand
+#if JVET_AB0149_INTRA_PRED
+                           , const bool& isAllowedSavingLoadingTrPnn
+#endif
+                           )
 {
         CodingStructure &cs = *tu.cs;
   const CompArea &rect      = tu.blocks[compID];
@@ -919,7 +1086,9 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
   while( it != trModes->end() )
   {
     tu.mtsIdx[compID] = it->first;
+#if !JVET_AB0149_INTRA_PRED
     CoeffBuf tempCoeff( m_mtsCoeffs[tu.mtsIdx[compID]], rect);
+#endif
     if( tu.noResidual )
     {
       int sumAbs = 0;
@@ -927,7 +1096,24 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
       it++;
       continue;
     }
-
+#if JVET_AB0149_INTRA_PRED
+    int default0Save1Load2Switch = 0;
+    if (isAllowedSavingLoadingTrPnn && tu.mtsIdx[compID] == MTS_DCT2_DCT2)
+    {
+      if ((tu.cu)->isSepTree())
+      {
+        CHECK(getIsAlreadyComputedTrPnn(compID),"The primary transform coefficients resulting from the application of the DCT-2 horizontally and the DCT-2 vertically to the residue of the prediction via the PNN mode should not be already computed.");
+      }
+      else
+      {
+        CHECK(isLuma(compID) && getIsAlreadyComputedTrPnn(compID),"The primary transform coefficients resulting from the application of the DCT-2 horizontally and the DCT-2 vertically to the residue of the prediction via the PNN mode should not be already computed.");
+      }
+      default0Save1Load2Switch = getIsAlreadyComputedTrPnn(compID) ? 2 : 1;
+    }
+    CoeffBuf tempCoeff(default0Save1Load2Switch == 2 ? m_memoryTrCoeffsPnn[compID] : m_mtsCoeffs[tu.mtsIdx[compID]],rect);
+    if (default0Save1Load2Switch != 2)
+    {
+#endif
     if ( tu.mtsIdx[compID] == MTS_SKIP )
     {
       xTransformSkip( tu, compID, resiBuf, tempCoeff.buf );
@@ -936,7 +1122,15 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
     {
       xT( tu, compID, resiBuf, tempCoeff, width, height );
     }
-
+#if JVET_AB0149_INTRA_PRED
+    }
+    if (default0Save1Load2Switch == 1)
+    {
+      CoeffBuf memoryTrCoeffsPnn(m_memoryTrCoeffsPnn[compID],rect);
+      memoryTrCoeffsPnn.copyFrom(tempCoeff);
+      setIsAlreadyComputedTrPnn(true,compID);
+    }
+#endif
     TCoeff sumAbs = 0;
     for( int pos = 0; pos < width*height; pos++ )
     {
@@ -973,7 +1167,11 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
   }
 }
 
-void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, TCoeff& uiAbsSum, const Ctx& ctx, const bool loadTr )
+void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, TCoeff& uiAbsSum, const Ctx& ctx
+#if JVET_AB0149_INTRA_PRED
+                           , const bool& isAllowedSavingLoadingTrPnn
+#endif
+                           , const bool loadTr)
 {
         CodingStructure &cs = *tu.cs;
   const SPS &sps            = *cs.sps;
@@ -999,12 +1197,34 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
 
   // transform and quantize
   CHECK(cs.sps->getMaxTbSize() < uiWidth, "Unsupported transformation size");
-
-  CoeffBuf tempCoeff(loadTr ? m_mtsCoeffs[tu.mtsIdx[compID]] : m_tempCoeff, rect);
-
-  DTRACE_PEL_BUF(D_RESIDUALS, resiBuf, tu, tu.cu->predMode, compID);
-
-  if (!loadTr)
+#if JVET_AB0149_INTRA_PRED
+  int default0Save1Load2Switch = 0;
+  if (isAllowedSavingLoadingTrPnn)
+  {
+    default0Save1Load2Switch = getIsAlreadyComputedTrPnn(compID) ? 2 : 1;
+  }
+#endif
+  bool areMtsCoeffsLoaded(loadTr);
+#if JVET_AB0149_INTRA_PRED
+  if (default0Save1Load2Switch == 2)
+  {
+    areMtsCoeffsLoaded = false;
+  }
+#endif
+  CoeffBuf tempCoeff(areMtsCoeffsLoaded ? m_mtsCoeffs[tu.mtsIdx[compID]] : m_tempCoeff, rect);
+#if JVET_AB0149_INTRA_PRED
+  if (default0Save1Load2Switch == 2)
+  {
+    CoeffBuf memoryTrCoeffsPnn(m_memoryTrCoeffsPnn[compID], rect);
+    const int error_code = copy_with_partial_zero_out_lfnst(memoryTrCoeffsPnn,tempCoeff,(tu.cu)->lfnstIdx);
+     CHECK(error_code < 0,"Error in `copy_with_partial_zero_out_lfnst`.");
+  }
+#endif
+  if (!loadTr
+#if JVET_AB0149_INTRA_PRED
+      && default0Save1Load2Switch != 2
+#endif
+      )
   {
     if (tu.mtsIdx[compID] == MTS_SKIP)
     {
@@ -1015,7 +1235,14 @@ void TrQuant::transformNxN( TransformUnit& tu, const ComponentID& compID, const
       xT(tu, compID, resiBuf, tempCoeff, uiWidth, uiHeight);
     }
   }
-
+#if JVET_AB0149_INTRA_PRED
+  if (default0Save1Load2Switch == 1)
+  {
+    CoeffBuf memoryTrCoeffsPnn(m_memoryTrCoeffsPnn[compID],rect);
+    memoryTrCoeffsPnn.copyFrom(tempCoeff);
+    setIsAlreadyComputedTrPnn(true,compID);
+  }
+#endif
   if (sps.getUseLFNST())
   {
     xFwdLfnst(tu, compID, loadTr);
@@ -1047,4 +1274,48 @@ void TrQuant::xTransformSkip(const TransformUnit &tu, const ComponentID &compID,
   }
 }
 
+#if JVET_AB0149_INTRA_PRED
+int copy_with_partial_zero_out_lfnst(const CoeffBuf& memoryTrCoeffsPnn,CoeffBuf& tempCoeff,const uint32_t& lfnstIdx)
+{
+    if (lfnstIdx)
+    {
+        SizeType keepHeight = tempCoeff.height, keepWidth = tempCoeff.width;
+        if ((tempCoeff.width == 4 && tempCoeff.height > 4) || (tempCoeff.width > 4 && tempCoeff.height == 4))
+        {
+          keepHeight = 4;
+          keepWidth = 4;
+        }
+        else if (tempCoeff.width >= 8 && tempCoeff.height >= 8)
+        {
+          keepHeight = 8;
+          keepWidth = 8;
+        }
+        for (unsigned i = 0; i < keepHeight; i++)
+        {
+            for (unsigned j = 0; j < tempCoeff.width; j++)
+            {
+                if (j < keepWidth)
+                {
+                    tempCoeff.at(j, i) = memoryTrCoeffsPnn.at(j, i);
+                }
+                else
+                {
+                    tempCoeff.at(j, i) = 0;
+                }
+            }
+        }
+        if (tempCoeff.height > keepHeight)
+        {
+            const SizeType nbRemaining = tempCoeff.height - keepHeight;
+            memset(tempCoeff.buf + keepHeight*tempCoeff.stride,0,sizeof(TCoeff)*nbRemaining*tempCoeff.stride);
+        }
+    }
+    else
+    {
+        tempCoeff.copyFrom(memoryTrCoeffsPnn);
+    }
+    return 0;
+}
+#endif
+
 //! \}
diff --git a/source/Lib/CommonLib/TrQuant.h b/source/Lib/CommonLib/TrQuant.h
index 72c951024f16ce361c2fa3508dede65b246a91c6..f0002b90d69ee7c0ab89b4a6951317abe70e8d55 100644
--- a/source/Lib/CommonLib/TrQuant.h
+++ b/source/Lib/CommonLib/TrQuant.h
@@ -48,6 +48,8 @@
 #include "Quant.h"
 
 #include "DepQuant.h"
+//! \ingroup CommonLib
+
 //! \ingroup CommonLib
 //! \{
 
@@ -93,8 +95,16 @@ protected:
 public:
 
   void invTransformNxN  (TransformUnit &tu, const ComponentID &compID, PelBuf &pResi, const QpParam &cQPs);
-  void transformNxN     ( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, std::vector<TrMode>* trModes, const int maxCand );
-  void transformNxN     ( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, TCoeff& uiAbsSum, const Ctx& ctx, const bool loadTr = false );
+  void transformNxN     ( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, std::vector<TrMode>* trModes, const int maxCand
+#if JVET_AB0149_INTRA_PRED
+                        , const bool& isAllowedSavingLoadingTrPnn
+#endif
+                        );
+  void transformNxN     ( TransformUnit& tu, const ComponentID& compID, const QpParam& cQP, TCoeff& uiAbsSum, const Ctx& ctx
+#if JVET_AB0149_INTRA_PRED
+                         , const bool& isAllowedSavingLoadingTrPnn
+#endif
+                         , const bool loadTr = false );
 
   void transformSkipQuantOneSample(TransformUnit &tu, const ComponentID &compID, const TCoeff &resiDiff, TCoeff &coeff,    const uint32_t &uiPos, const QpParam &cQP, const bool bUseHalfRoundingPoint);
   void invTrSkipDeQuantOneSample  (TransformUnit &tu, const ComponentID &compID, const TCoeff &pcCoeff,  Pel &reconSample, const uint32_t &uiPos, const QpParam &cQP);
@@ -118,6 +128,17 @@ public:
 #if ENABLE_SPLIT_PARALLELISM
   void    copyState( const TrQuant& other );
 #endif
+#if JVET_AB0149_INTRA_PRED
+  bool getIsAlreadyComputedTrPnn(const ComponentID& compID) const
+  {
+    return m_isAlreadyComputedTrPnn[compID];
+  }
+  
+  void setIsAlreadyComputedTrPnn(const bool& isAlreadyComputedTrPnn,const ComponentID& compID)
+  {
+    m_isAlreadyComputedTrPnn[compID] = isAlreadyComputedTrPnn;
+  }
+#endif
 
 protected:
   TCoeff   m_tempCoeff[MAX_TB_SIZEY * MAX_TB_SIZEY];
@@ -125,6 +146,10 @@ protected:
 private:
   DepQuant *m_quant;          //!< Quantizer
   TCoeff    m_mtsCoeffs[NUM_TRAFO_MODES_MTS][MAX_TB_SIZEY * MAX_TB_SIZEY];
+#if JVET_AB0149_INTRA_PRED
+  TCoeff* m_memoryTrCoeffsPnn[MAX_NUM_COMPONENT];
+  bool m_isAlreadyComputedTrPnn[MAX_NUM_COMPONENT];
+#endif
   TCoeff   m_tempInMatrix [ 48 ];
   TCoeff   m_tempOutMatrix[ 48 ];
   static const int maxAbsIctMode = 3;
@@ -167,6 +192,10 @@ private:
                        double*        horVerRatio );
 };// END CLASS DEFINITION TrQuant
 
+#if JVET_AB0149_INTRA_PRED
+int copy_with_partial_zero_out_lfnst(const CoeffBuf& memoryTrCoeffsPnn,CoeffBuf& tempCoeff,const uint32_t& lfnstIdx);
+#endif
+
 //! \}
 
 #endif // __TRQUANT__
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 4c0978a28166a62ecc1420d5a98e6c46ff0db8f2..6db54c345505bf0ab0e20fd7c2c475dbcecfc291 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -50,6 +50,28 @@
 #include <assert.h>
 #include <cassert>
 
+#define JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS 1
+
+// Below is the default set of macros for rate-distortion tests.
+#if !defined(JVET_AB0149_INTRA_PRED) && !defined(JVET_AB0149_SEARCH_PNN) && !defined(JVET_AB0149_TM_INF_PNN) && !defined(NN_FIXED_POINT_IMPLEMENTATION)
+#define JVET_AB0149_INTRA_PRED 1
+#define JVET_AB0149_SEARCH_PNN 0
+#define JVET_AB0149_TM_INF_PNN 1
+#define NN_FIXED_POINT_IMPLEMENTATION 1
+#define SPARSE_SUPPORT 1
+#else
+#if !defined(JVET_AB0149_INTRA_PRED) || !defined(JVET_AB0149_SEARCH_PNN) || !defined(JVET_AB0149_TM_INF_PNN) || !defined(NN_FIXED_POINT_IMPLEMENTATION)
+#error "The default set of macros is not used and `JVET_AB0149_INTRA_PRED` or `JVET_AB0149_SEARCH_PNN` or `JVET_AB0149_TM_INF_PNN` or `NN_FIXED_POINT_IMPLEMENTATION` is not defined."
+#endif
+#endif
+
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_TM_INF_PNN
+#error "`JVET_AB0149_SEARCH_PNN` is equal to 1 and `JVET_AB0149_TM_INF_PNN` is equal to 1."
+#endif
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+using SizeNn = std::pair<unsigned int, unsigned int>;
+#endif
+
 // clang-format off
 
 // used by both nn filter sets
@@ -57,12 +79,16 @@
 #define NN_COMMON_API                                     1
 #define NNVC_INFO_ENCODER                                 1 // add some info in encoder logs necessary to extract data
 #define NNVC_DUMP_DATA                                    1
-#define NN_FIXED_POINT_IMPLEMENTATION                     1
-
 
 #if NN_FIXED_POINT_IMPLEMENTATION
+#if JVET_AB0149_INTRA_PRED
+#define INTERNAL_INT16 1
+#endif
 using TypeSadl = int16_t;
 #else
+#if JVET_AB0149_INTRA_PRED
+#define INTERNAL_FLOAT 1
+#endif
 using TypeSadl = float;
 #endif
 
diff --git a/source/Lib/CommonLib/Unit.cpp b/source/Lib/CommonLib/Unit.cpp
index ab3fc757ee617944be57f41123f304fbafd39e76..1009a1a0ebd5e05f87eb953c773d46266c539aa0 100644
--- a/source/Lib/CommonLib/Unit.cpp
+++ b/source/Lib/CommonLib/Unit.cpp
@@ -275,6 +275,21 @@ CodingUnit& CodingUnit::operator=( const CodingUnit& other )
   sbtInfo           = other.sbtInfo;
   mtsFlag           = other.mtsFlag;
   lfnstIdx          = other.lfnstIdx;
+#if JVET_AB0149_INTRA_PRED
+#if JVET_AB0149_SEARCH_PNN
+  idxLfnstPnn = other.idxLfnstPnn;
+#endif
+#if JVET_AB0149_TM_INF_PNN
+  for (uint32_t i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    for (uint32_t j = 0; j < NUM_LFNST_NUM_PER_SET - 1; j++)
+    {
+      arrayIdxPredictedLfnstPnn[i][j] = other.arrayIdxPredictedLfnstPnn[i][j];
+    }
+  }
+#endif
+  idxRepresentationPnn = other.idxRepresentationPnn;
+#endif
   tileIdx           = other.tileIdx;
   imv               = other.imv;
   imvNumCand        = other.imvNumCand;
@@ -335,6 +350,21 @@ void CodingUnit::initData()
   sbtInfo           = 0;
   mtsFlag           = 0;
   lfnstIdx          = 0;
+#if JVET_AB0149_INTRA_PRED
+#if JVET_AB0149_SEARCH_PNN
+  idxLfnstPnn = MAX_INT;
+#endif
+#if JVET_AB0149_TM_INF_PNN
+  for (uint32_t i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    for (uint32_t j = 0; j < NUM_LFNST_NUM_PER_SET - 1; j++)
+    {
+      arrayIdxPredictedLfnstPnn[i][j] = MAX_INT;
+    }
+  }
+#endif
+  idxRepresentationPnn = MAX_INT;
+#endif
   tileIdx           = 0;
   imv               = 0;
   imvNumCand        = 0;
@@ -525,6 +555,41 @@ void PredictionUnit::initData()
   mipTransposedFlag = false;
   multiRefIdx = 0;
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  for (auto it{arrayPairsIdxSsdLumaRegular.begin()}; it != arrayPairsIdxSsdLumaRegular.end(); it++)
+  {
+    it->first = -1;
+    it->second = MAX_UINT64;
+  }
+  for (auto it{arrayPairsIdxSatdLumaRegular.begin()}; it != arrayPairsIdxSatdLumaRegular.end(); it++)
+  {
+    it->first = -1;
+    it->second = MAX_UINT64;
+  }
+#if JVET_AB0149_INTRA_PRED
+  ssdLumaPnn = MAX_UINT64;
+  satdLumaPnn = MAX_UINT64;
+  for (uint32_t i = 0; i < 2; i++)
+  {
+    arrayMeasuresLumaPnn[i] = MAX_DOUBLE;
+  }
+#if JVET_AB0149_SEARCH_PNN
+  for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j = 0; j < DEPTH_LFNST_GROUP; j++)
+    {
+      arrayCostsLfnstPnn[i][j] = MAX_DOUBLE;
+    }
+  }
+#endif
+#endif
+#endif
+#if JVET_AB0149_INTRA_PRED
+  mpmFlagReading = false;
+  idxMpmReading = MAX_UINT;
+  idxCandidateReading = MAX_UINT;
+#endif
+
   // inter data
   mergeFlag   = false;
   regularMergeFlag = false;
@@ -563,6 +628,38 @@ void PredictionUnit::initData()
   mmvdEncOptMode = 0;
 }
 
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+bool PredictionUnit::isFilledArrayCostsLfnstPnnMaxDouble() const
+{
+  for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j = 0; j < DEPTH_LFNST_GROUP; j++)
+    {
+      if (arrayCostsLfnstPnn[i][j] != MAX_DOUBLE)
+      {
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+bool PredictionUnit::isInArrayCostsLfnstPnnMaxDouble() const
+{
+  for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j = 0; j < DEPTH_LFNST_GROUP; j++)
+    {
+      if (arrayCostsLfnstPnn[i][j] == MAX_DOUBLE)
+      {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+#endif
+
 PredictionUnit& PredictionUnit::operator=(const IntraPredictionData& predData)
 {
   for (uint32_t i = 0; i < MAX_NUM_CHANNEL_TYPE; i++)
@@ -572,6 +669,33 @@ PredictionUnit& PredictionUnit::operator=(const IntraPredictionData& predData)
   mipTransposedFlag = predData.mipTransposedFlag;
   multiRefIdx = predData.multiRefIdx;
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  arrayPairsIdxSsdLumaRegular = predData.arrayPairsIdxSsdLumaRegular;
+  arrayPairsIdxSatdLumaRegular = predData.arrayPairsIdxSatdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  ssdLumaPnn = predData.ssdLumaPnn;
+  satdLumaPnn = predData.satdLumaPnn;
+  for (uint32_t i = 0; i < 2; i++)
+  {
+    arrayMeasuresLumaPnn[i] = predData.arrayMeasuresLumaPnn[i];
+  }
+#if JVET_AB0149_SEARCH_PNN
+  for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j = 0; j < DEPTH_LFNST_GROUP; j++)
+    {
+      arrayCostsLfnstPnn[i][j] = predData.arrayCostsLfnstPnn[i][j];
+    }
+  }
+#endif
+#endif
+#endif
+#if JVET_AB0149_INTRA_PRED
+  mpmFlagReading = predData.mpmFlagReading;
+  idxMpmReading = predData.idxMpmReading;
+  idxCandidateReading = predData.idxCandidateReading;
+#endif
+
   return *this;
 }
 
@@ -623,6 +747,33 @@ PredictionUnit& PredictionUnit::operator=( const PredictionUnit& other )
   mipTransposedFlag = other.mipTransposedFlag;
   multiRefIdx = other.multiRefIdx;
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  arrayPairsIdxSsdLumaRegular = other.arrayPairsIdxSsdLumaRegular;
+  arrayPairsIdxSatdLumaRegular = other.arrayPairsIdxSatdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  ssdLumaPnn = other.ssdLumaPnn;
+  satdLumaPnn = other.satdLumaPnn;
+  for (uint32_t i = 0; i < 2; i++)
+  {
+    arrayMeasuresLumaPnn[i] = other.arrayMeasuresLumaPnn[i];
+  }
+#if JVET_AB0149_SEARCH_PNN
+  for (uint32_t i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j = 0; j < DEPTH_LFNST_GROUP; j++)
+    {
+      arrayCostsLfnstPnn[i][j] = other.arrayCostsLfnstPnn[i][j];
+    }
+  }
+#endif
+#endif
+#endif
+#if JVET_AB0149_INTRA_PRED
+  mpmFlagReading = other.mpmFlagReading;
+  idxMpmReading = other.idxMpmReading;
+  idxCandidateReading = other.idxCandidateReading;
+#endif
+
   mergeFlag   = other.mergeFlag;
   regularMergeFlag = other.regularMergeFlag;
   mergeIdx    = other.mergeIdx;
diff --git a/source/Lib/CommonLib/Unit.h b/source/Lib/CommonLib/Unit.h
index 8a6858fdf56d8e8d3138122f45e00e3a88fb386f..361d5875d0157cf57fa8334919330d88f93b56e4 100644
--- a/source/Lib/CommonLib/Unit.h
+++ b/source/Lib/CommonLib/Unit.h
@@ -43,6 +43,9 @@
 #include "Mv.h"
 #include "MotionInfo.h"
 #include "ChromaFormat.h"
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+#include <array>
+#endif
 
 
 // ---------------------------------------------------------------------------
@@ -318,6 +321,15 @@ struct CodingUnit : public UnitArea
   uint32_t           tileIdx;
   uint8_t         mtsFlag;
   uint32_t        lfnstIdx;
+#if JVET_AB0149_INTRA_PRED
+#if JVET_AB0149_SEARCH_PNN
+  uint32_t idxLfnstPnn;
+#endif
+#if JVET_AB0149_TM_INF_PNN
+  uint32_t arrayIdxPredictedLfnstPnn[MAX_NUM_COMPONENT][NUM_LFNST_NUM_PER_SET - 1];
+#endif
+  uint32_t idxRepresentationPnn;
+#endif
   uint8_t         BcwIdx;
   int             refIdxBi[2];
   bool           mipFlag;
@@ -377,6 +389,25 @@ struct IntraPredictionData
   uint32_t  intraDir[MAX_NUM_CHANNEL_TYPE];
   bool      mipTransposedFlag;
   int       multiRefIdx;
+
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::array<std::pair<int8_t, uint64_t>, NB_INTRA_MODES_STATS> arrayPairsIdxSsdLumaRegular;
+  std::array<std::pair<int8_t, uint64_t>, NB_INTRA_MODES_STATS> arrayPairsIdxSatdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  uint64_t ssdLumaPnn;
+  uint64_t satdLumaPnn;
+  double arrayMeasuresLumaPnn[2];
+#if JVET_AB0149_SEARCH_PNN
+  double arrayCostsLfnstPnn[NUM_LFNST_NUM_PER_SET - 1][DEPTH_LFNST_GROUP];
+#endif
+#endif
+#endif
+#if JVET_AB0149_INTRA_PRED
+  bool mpmFlagReading;
+  uint32_t idxMpmReading;
+  uint32_t idxCandidateReading;
+#endif
+
 };
 
 struct InterPredictionData
@@ -440,6 +471,10 @@ struct PredictionUnit : public UnitArea, public IntraPredictionData, public Inte
   int64_t cacheId;
   bool    cacheUsed;
 #endif
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool isFilledArrayCostsLfnstPnnMaxDouble() const;
+  bool isInArrayCostsLfnstPnnMaxDouble() const;
+#endif
 };
 
 // ---------------------------------------------------------------------------
diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp
index f76f64ea236e1ec1e806d7d09a0b91f1f08633db..98c98a76122090d38a0a6bb04879ebe74de1dcf6 100644
--- a/source/Lib/CommonLib/UnitTools.cpp
+++ b/source/Lib/CommonLib/UnitTools.cpp
@@ -46,7 +46,10 @@
 #include <utility>
 #include <algorithm>
 
-// CS tools
+#if JVET_AB0149_INTRA_PRED
+const std::vector<SizeNn> g_vectorPairsHeightWidthPnn = {std::make_pair(4, 4),std::make_pair(4, 8),std::make_pair(4, 16),std::make_pair(4, 32),std::make_pair(8, 8),std::make_pair(8, 16),std::make_pair(16, 16)};
+const unsigned array_mpms_default[NUM_MOST_PROBABLE_MODES] = {PLANAR_IDX,DC_IDX,VER_IDX,HOR_IDX,VER_IDX - 4,VER_IDX + 4};
+#endif
 
 
 uint64_t CS::getEstBits(const CodingStructure &cs)
@@ -536,6 +539,197 @@ bool CU::allLumaCBFsAreZero(const CodingUnit& cu)
   }
 }
 
+#if JVET_AB0149_INTRA_PRED
+uint32_t getIntraDirLumaSubstitutePnn(const uint32_t& indexModeLuma,const uint32_t& heightChroma,const uint32_t& widthChroma)
+{
+  uint32_t indexSubstitution(indexModeLuma);
+  if (indexModeLuma == PNN_IDX)
+  {
+    const bool is_shape_handled_pnn = decideShapeHandledPnn(heightChroma,widthChroma);
+    if (!is_shape_handled_pnn)
+    {
+      indexSubstitution = PLANAR_IDX;
+    }
+  }
+  return indexSubstitution;
+}
+
+bool decideShapeHandledPnn(const uint32_t& height,const uint32_t& width)
+{
+  const SizeNn pairHeightWidthBeforeTr(height,width);
+  transformations_context_prediction transfos;
+  return find_equivalent_p(g_vectorPairsHeightWidthPnn,pairHeightWidthBeforeTr,transfos);
+}
+
+int fillListMPMs(unsigned* const mpm,const int& leftIntraDir,const int& aboveIntraDir,const int& multiRefIdx,const bool& is_shape_handled_pnn)
+{
+  CHECK(!mpm, "`mpm` is NULL.");
+  CHECK(leftIntraDir == PNN_IDX || aboveIntraDir == PNN_IDX, "`leftIntraDir` is equal to `PNN_IDX` or `aboveIntraDir` is equal to `PNN_IDX`.");
+  int i = 0;
+  for (i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
+  {
+    mpm[i] = array_mpms_default[i];
+  }
+  const int numCand = fillListMPMsWithoutInitialization(mpm,leftIntraDir,aboveIntraDir,multiRefIdx,is_shape_handled_pnn);
+  for (i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
+  {
+    CHECK(mpm[i] >= NUM_LUMA_MODE, "`mpm[" << std::to_string(i) + "]` is larger than " + std::to_string(NUM_LUMA_MODE) + ".");
+  }
+  return numCand;
+}
+
+int fillListMPMsWithoutInitialization(unsigned* const mpm,const int& leftIntraDir,const int& aboveIntraDir,const int& multiRefIdx,const bool& is_shape_handled_pnn)
+{
+  int numCand{0};
+  if (leftIntraDir == aboveIntraDir)
+  {
+    numCand = 1;
+    if (leftIntraDir > DC_IDX && leftIntraDir < PNN_IDX)
+    {
+      if (multiRefIdx || !is_shape_handled_pnn)
+      {
+        mpm[0] = PLANAR_IDX;
+        mpm[1] = leftIntraDir;
+        mpm[2] = ((leftIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+        mpm[3] = ((leftIntraDir - 1) % MODULO_LUMA) + 2;
+        mpm[4] = ((leftIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+        mpm[5] = (leftIntraDir % MODULO_LUMA) + 2;
+      }
+      else
+      {
+        mpm[0] = leftIntraDir;
+        mpm[1] = ((leftIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+        mpm[2] = ((leftIntraDir - 1) % MODULO_LUMA) + 2;
+        mpm[3] = ((leftIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+        mpm[4] = (leftIntraDir % MODULO_LUMA) + 2;
+        mpm[5] = PLANAR_IDX;
+      }
+    }
+  }
+  else
+  {
+    numCand = 2;
+    if (leftIntraDir == PNN_IDX || aboveIntraDir == PNN_IDX)
+    {
+      if (leftIntraDir == PNN_IDX && aboveIntraDir > DC_IDX)
+      {
+        if (multiRefIdx || !is_shape_handled_pnn)
+        {
+          mpm[0] = PLANAR_IDX;
+          mpm[1] = aboveIntraDir;
+          mpm[2] = ((aboveIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[3] = ((aboveIntraDir - 1) % MODULO_LUMA) + 2;
+          mpm[4] = ((aboveIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[5] = (aboveIntraDir % MODULO_LUMA) + 2;
+        }
+        else
+        {
+          mpm[0] = aboveIntraDir;
+          mpm[1] = ((aboveIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[2] = ((aboveIntraDir - 1) % MODULO_LUMA) + 2;
+          mpm[3] = ((aboveIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[4] = (aboveIntraDir % MODULO_LUMA) + 2;
+          mpm[5] = PLANAR_IDX;
+        }
+      }
+      else if (aboveIntraDir == PNN_IDX && leftIntraDir > DC_IDX)
+      {
+        if (multiRefIdx || !is_shape_handled_pnn)
+        {
+          mpm[0] = PLANAR_IDX;
+          mpm[1] = leftIntraDir;
+          mpm[2] = ((leftIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[3] = ((leftIntraDir - 1) % MODULO_LUMA) + 2;
+          mpm[4] = ((leftIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[5] = (leftIntraDir % MODULO_LUMA) + 2;
+        }
+        else
+        {
+          mpm[0] = leftIntraDir;
+          mpm[1] = ((leftIntraDir + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[2] = ((leftIntraDir - 1) % MODULO_LUMA) + 2;
+          mpm[3] = ((leftIntraDir + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[4] = (leftIntraDir % MODULO_LUMA) + 2;
+          mpm[5] = PLANAR_IDX;
+        }
+      }
+    }
+    else
+    {
+      if (leftIntraDir > DC_IDX && aboveIntraDir > DC_IDX)
+      {
+        int maxCandModeIdx{0};
+        int minCandModeIdx{0};
+        int idx_incremented{0};
+        if (multiRefIdx || !is_shape_handled_pnn)
+        {
+          mpm[0] = PLANAR_IDX;
+          mpm[1] = leftIntraDir;
+          mpm[2] = aboveIntraDir;
+          maxCandModeIdx = mpm[1] > mpm[2] ? 1 : 2;
+          minCandModeIdx = mpm[1] > mpm[2] ? 2 : 1;
+          idx_incremented = 3;
+        }
+        else
+        {
+          mpm[0] = leftIntraDir;
+          mpm[1] = aboveIntraDir;
+          maxCandModeIdx = mpm[0] > mpm[1] ? 0 : 1;
+          minCandModeIdx = mpm[0] > mpm[1] ? 1 : 0;
+          idx_incremented = 2;
+          mpm[5] = PLANAR_IDX;
+        }
+        if (mpm[maxCandModeIdx] - mpm[minCandModeIdx] == 1)
+        {
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[maxCandModeIdx] - 1) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+        }
+        else if (mpm[maxCandModeIdx] - mpm[minCandModeIdx] >= 62)
+        {
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] - 1) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[maxCandModeIdx] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = (mpm[minCandModeIdx] % MODULO_LUMA) + 2;
+        }
+        else if (mpm[maxCandModeIdx] - mpm[minCandModeIdx] == 2)
+        {
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] - 1) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[maxCandModeIdx] - 1) % MODULO_LUMA) + 2;
+        }
+        else
+        {
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[minCandModeIdx] - 1) % MODULO_LUMA) + 2;
+          mpm[idx_incremented++] = ((mpm[maxCandModeIdx] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+        }
+      }
+      else if (leftIntraDir + aboveIntraDir >= 2)
+      {
+        if (multiRefIdx || !is_shape_handled_pnn)
+        {
+          mpm[0] = PLANAR_IDX;
+          mpm[1] = leftIntraDir < aboveIntraDir ? aboveIntraDir : leftIntraDir;
+          mpm[2] = ((mpm[1] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[3] = ((mpm[1] - 1) % MODULO_LUMA) + 2;
+          mpm[4] = ((mpm[1] + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[5] = (mpm[1] % MODULO_LUMA) + 2;
+        }
+        else
+        {
+          mpm[0] = leftIntraDir < aboveIntraDir ? aboveIntraDir : leftIntraDir;
+          mpm[1] = ((mpm[0] + OFFSET_LUMA) % MODULO_LUMA) + 2;
+          mpm[2] = ((mpm[0] - 1) % MODULO_LUMA) + 2;
+          mpm[3] = ((mpm[0] + OFFSET_LUMA - 1) % MODULO_LUMA) + 2;
+          mpm[4] = (mpm[0] % MODULO_LUMA) + 2;
+          mpm[5] = PLANAR_IDX;
+        }
+      }
+    }
+  }
+  return numCand;
+}
+#endif
 
 PUTraverser CU::traversePUs( CodingUnit& cu )
 {
@@ -559,6 +753,38 @@ cTUTraverser CU::traverseTUs( const CodingUnit& cu )
 
 // PU tools
 
+#if JVET_AB0149_INTRA_PRED
+int PU::getIntraMPMs(const PredictionUnit& pu,unsigned* const mpm,const bool& is_shape_handled_pnn,const ChannelType& channelType)
+{
+  CHECK(isChroma(channelType),"In `PU::getIntraMPMs`, `isChroma(channelType)` returns true.");
+  int leftIntraDir = PLANAR_IDX;
+  int aboveIntraDir = PLANAR_IDX;
+  const CompArea& area = pu.block(getFirstComponentOfChannel(channelType));
+  const Position posRT = area.topRight();
+  const Position posLB = area.bottomLeft();
+  const PredictionUnit* const puLeft = pu.cs->getPURestricted(posLB.offset(-1, 0),pu,channelType);
+  if (puLeft && CU::isIntra(*puLeft->cu))
+  {
+    leftIntraDir = PU::getIntraDirLuma( *puLeft );
+    if (leftIntraDir == PNN_IDX)
+    {
+      leftIntraDir = (*puLeft->cu).idxRepresentationPnn;
+      CHECK(leftIntraDir < 0 || leftIntraDir >= NUM_LUMA_MODE,"`leftIntraDir` does not belong to [|0, " + std::to_string(NUM_LUMA_MODE - 1) + "|].");
+    }
+  }
+  const PredictionUnit* const puAbove = pu.cs->getPURestricted(posRT.offset(0, -1), pu, channelType);
+  if (puAbove && CU::isIntra(*puAbove->cu) && CU::isSameCtu(*pu.cu, *puAbove->cu))
+  {
+    aboveIntraDir = PU::getIntraDirLuma(*puAbove);
+    if (aboveIntraDir == PNN_IDX)
+    {
+      aboveIntraDir = (*puAbove->cu).idxRepresentationPnn;
+      CHECK(aboveIntraDir < 0 || aboveIntraDir >= NUM_LUMA_MODE,"`aboveIntraDir` does not belong to [|0, " + std::to_string(NUM_LUMA_MODE - 1) + "|].");
+    }
+  }
+  return fillListMPMs(mpm,leftIntraDir,aboveIntraDir,pu.multiRefIdx,is_shape_handled_pnn);
+}
+#else
 int PU::getIntraMPMs( const PredictionUnit &pu, unsigned* mpm, const ChannelType &channelType /*= CHANNEL_TYPE_LUMA*/ )
 {
   const int numMPMs = NUM_MOST_PROBABLE_MODES;
@@ -666,6 +892,7 @@ int PU::getIntraMPMs( const PredictionUnit &pu, unsigned* mpm, const ChannelType
     return numCand;
   }
 }
+#endif
 
 bool PU::isMIP(const PredictionUnit &pu, const ChannelType &chType)
 {
@@ -714,8 +941,12 @@ void PU::getIntraChromaCandModes( const PredictionUnit &pu, unsigned modeList[NU
   {
     return;
   }
-
+#if JVET_AB0149_INTRA_PRED
+  const uint32_t lumaMode(getIntraDirLumaSubstitutePnn(getCoLocatedIntraLumaMode(pu),pu.Cb().height,pu.Cb().width)
+  );
+#else
   const uint32_t lumaMode = getCoLocatedIntraLumaMode(pu);
+#endif
   for (int i = 0; i < 4; i++)
   {
     if (lumaMode == modeList[i])
@@ -761,7 +992,11 @@ uint32_t PU::getFinalIntraMode( const PredictionUnit &pu, const ChannelType &chT
 
   if( uiIntraMode == DM_CHROMA_IDX && !isLuma( chType ) )
   {
+#if JVET_AB0149_INTRA_PRED
+    uiIntraMode = getIntraDirLumaSubstitutePnn(getCoLocatedIntraLumaMode(pu),pu.Cb().height,pu.Cb().width);
+#else
     uiIntraMode = getCoLocatedIntraLumaMode(pu);
+#endif
   }
   if( pu.chromaFormat == CHROMA_422 && !isLuma( chType ) && uiIntraMode < NUM_LUMA_MODE ) // map directional, planar and dc
   {
@@ -786,6 +1021,18 @@ uint32_t PU::getCoLocatedIntraLumaMode(const PredictionUnit &pu)
   return PU::getIntraDirLuma(PU::getCoLocatedLumaPU(pu));
 }
 
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_TM_INF_PNN
+uint32_t PU::getCoLocatedIdxLfnstPnn(const PredictionUnit& pu,const uint32_t& lfnstIdx)
+{
+  CHECK(lfnstIdx != 1 && lfnstIdx != 2,"`lfnstIdx` does not belong to {1, 2}.");
+  Position topLeftPos(pu.blocks[pu.chType].lumaPos());
+  Position refPos(topLeftPos.offset(pu.blocks[pu.chType].lumaSize().width >> 1,pu.blocks[pu.chType].lumaSize().height >> 1));
+  const PredictionUnit& lumaPU(pu.cu->isSepTree() ? *pu.cs->picture->cs->getPU(refPos, CHANNEL_TYPE_LUMA) : *pu.cs->getPU(topLeftPos, CHANNEL_TYPE_LUMA));
+  CHECK(PU::getIntraDirLuma(lumaPU) != PNN_IDX,"The selected intra prediction mode of the colocated luminance CB is not the PNN mode.");
+  return (lumaPU.cu)->arrayIdxPredictedLfnstPnn[COMPONENT_Y][lfnstIdx - 1];
+}
+#endif
+
 int PU::getWideAngle( const TransformUnit &tu, const uint32_t dirMode, const ComponentID compID )
 {
   //This function returns a wide angle index taking into account that the values 0 and 1 are reserved 
@@ -3658,6 +3905,31 @@ bool CU::isFirstTBInPredReg(const CodingUnit& cu, const ComponentID compID, cons
   return (compID == COMPONENT_Y) && cu.ispMode && ((area.topLeft().x - cu.Y().topLeft().x) % PRED_REG_MIN_WIDTH == 0);
 }
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+bool CU::isFirstTbInPb(const CodingUnit& cu,const ComponentID& compID,const CompArea& area)
+{
+    return isLuma(compID) && cu.ispMode && area.topLeft() == cu.Y().topLeft();
+}
+
+bool CU::isLastTbInPb(const CodingUnit& cu,const ComponentID& compID,const CompArea& area)
+{
+    bool isCommonLast(false);
+    if (cu.ispMode == VER_INTRA_SUBPARTITIONS)
+    {
+      isCommonLast = area.topRight() == cu.Y().topRight();
+    }
+    else if (cu.ispMode == HOR_INTRA_SUBPARTITIONS)
+    {
+      isCommonLast = area.bottomLeft() == cu.Y().bottomLeft();
+    }
+    else
+    {
+      return false;
+    }
+    return isLuma(compID) && isCommonLast;
+}
+#endif
+
 void CU::adjustPredArea(CompArea &area)
 {
   area.width = std::max<int>(PRED_REG_MIN_WIDTH, area.width);
diff --git a/source/Lib/CommonLib/UnitTools.h b/source/Lib/CommonLib/UnitTools.h
index c87fbdc93904b3319f2095ca38b1743015a5d79f..508a8191f27e6da2a57f469e926c7b619e90fcd7 100644
--- a/source/Lib/CommonLib/UnitTools.h
+++ b/source/Lib/CommonLib/UnitTools.h
@@ -43,6 +43,11 @@
 #include "ContextModelling.h"
 #include "InterPrediction.h"
 
+#if JVET_AB0149_INTRA_PRED
+#include "intra_pred_downsampling_interpolation.h"
+extern const std::vector<SizeNn> g_vectorPairsHeightWidthPnn;
+#endif
+
 // CS tools
 namespace CS
 {
@@ -81,6 +86,10 @@ namespace CU
   uint32_t getNumNonZeroCoeffNonTsCorner8x8( const CodingUnit& cu, const bool lumaFlag = true, const bool chromaFlag = true );
   bool  isPredRegDiffFromTB(const CodingUnit& cu, const ComponentID compID);
   bool  isFirstTBInPredReg(const CodingUnit& cu, const ComponentID compID, const CompArea &area);
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool isFirstTbInPb(const CodingUnit& cu,const ComponentID& compID,const CompArea& area);
+  bool isLastTbInPb(const CodingUnit& cu,const ComponentID& compID,const CompArea& area);
+#endif
   bool  isMinWidthPredEnabledForBlkSize(const int w, const int h);
   void  adjustPredArea(CompArea &area);
   bool  isBcwIdxCoded                 (const CodingUnit& cu);
@@ -127,7 +136,11 @@ namespace CU
 namespace PU
 {
   int  getLMSymbolList(const PredictionUnit &pu, int *modeList);
-  int  getIntraMPMs(const PredictionUnit &pu, unsigned *mpm, const ChannelType &channelType = CHANNEL_TYPE_LUMA);
+  int  getIntraMPMs(const PredictionUnit &pu, unsigned *mpm
+#if JVET_AB0149_INTRA_PRED
+                   , const bool& is_shape_handled_pnn
+#endif
+                   , const ChannelType &channelType = CHANNEL_TYPE_LUMA);
   bool          isMIP                 (const PredictionUnit &pu, const ChannelType &chType = CHANNEL_TYPE_LUMA);
   bool          isDMChromaMIP         (const PredictionUnit &pu);
   uint32_t      getIntraDirLuma       (const PredictionUnit &pu);
@@ -135,6 +148,9 @@ namespace PU
   const PredictionUnit &getCoLocatedLumaPU(const PredictionUnit &pu);
   uint32_t getFinalIntraMode              (const PredictionUnit &pu, const ChannelType &chType);
   uint32_t getCoLocatedIntraLumaMode      (const PredictionUnit &pu);
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_TM_INF_PNN
+  uint32_t getCoLocatedIdxLfnstPnn(const PredictionUnit& pu,const uint32_t& lfnstIdx);
+#endif
   int  getWideAngle                   ( const TransformUnit &tu, const uint32_t dirMode, const ComponentID compID );
   void getInterMergeCandidates        (const PredictionUnit &pu, MergeCtx& mrgCtx,
     int mmvdList,
@@ -250,4 +266,11 @@ uint32_t updateCandList(T uiMode, double uiCost, static_vector<T, N>& candModeLi
   return 0;
 }
 
+#if JVET_AB0149_INTRA_PRED
+uint32_t getIntraDirLumaSubstitutePnn(const uint32_t& indexModeLuma,const uint32_t& heightChroma,const uint32_t& widthChroma);
+bool decideShapeHandledPnn(const uint32_t& height,const uint32_t& width);
+int fillListMPMs(unsigned* const mpm,const int& leftIntraDir,const int& aboveIntraDir,const int& multiRefIdx,const bool& is_shape_handled_pnn);
+int fillListMPMsWithoutInitialization(unsigned* const mpm,const int& leftIntraDir,const int& aboveIntraDir,const int& multiRefIdx,const bool& is_shape_handled_pnn);
+#endif
+
 #endif
diff --git a/source/Lib/CommonLib/intra_pred_downsampling_interpolation.cpp b/source/Lib/CommonLib/intra_pred_downsampling_interpolation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e01007feef004e5c0dae237af49c62207e9fa298
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_downsampling_interpolation.cpp
@@ -0,0 +1,100 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "intra_pred_downsampling_interpolation.h"
+
+#if JVET_AB0149_INTRA_PRED
+bool find_equivalent_p(const std::vector<SizeNn>& vector_pairs_height_width,const SizeNn& pair_height_width_before_tr,transformations_context_prediction& transfos)
+{
+    auto it = std::find(vector_pairs_height_width.begin(),vector_pairs_height_width.end(),pair_height_width_before_tr);
+    if (it != vector_pairs_height_width.end())
+    {
+        transfos.pair_height_width_after_tr = pair_height_width_before_tr;
+        transfos.factor_downsampling_horizontal = 1;
+        transfos.factor_downsampling_vertical = 1;
+        transfos.is_transposed = false;
+        return true;
+    }
+    SizeNn pair_height_width_temp{pair_height_width_before_tr.second,pair_height_width_before_tr.first};
+    it = std::find(vector_pairs_height_width.begin(),vector_pairs_height_width.end(),pair_height_width_temp);
+    if (it != vector_pairs_height_width.end())
+    {
+        transfos.pair_height_width_after_tr = pair_height_width_temp;
+        transfos.factor_downsampling_horizontal = 1;
+        transfos.factor_downsampling_vertical = 1;
+        transfos.is_transposed = true;
+        return true;
+    }
+    const bool is_8_32 = pair_height_width_before_tr.first == 8 && pair_height_width_before_tr.second == 32, is_32_8 = pair_height_width_before_tr.first == 32 && pair_height_width_before_tr.second == 8;
+    if (is_8_32 || is_32_8)
+    {
+        pair_height_width_temp.first = 8;
+        pair_height_width_temp.second = 16;
+        it = std::find(vector_pairs_height_width.begin(),vector_pairs_height_width.end(),pair_height_width_temp);
+        if (it != vector_pairs_height_width.end())
+        {
+            transfos.pair_height_width_after_tr = pair_height_width_temp;
+            transfos.factor_downsampling_horizontal = is_8_32 ? 2 : 1;
+            transfos.factor_downsampling_vertical = is_8_32 ? 1 : 2;
+            transfos.is_transposed = is_32_8;
+            return true;
+        }
+        pair_height_width_temp.first = 16;
+        pair_height_width_temp.second = 8;
+        it = std::find(vector_pairs_height_width.begin(),vector_pairs_height_width.end(),pair_height_width_temp);
+        if (it != vector_pairs_height_width.end())
+        {
+            transfos.pair_height_width_after_tr = pair_height_width_temp;
+            transfos.factor_downsampling_horizontal = is_8_32 ? 2 : 1;
+            transfos.factor_downsampling_vertical = is_8_32 ? 1 : 2;
+            transfos.is_transposed = is_8_32;
+            return true;
+        }
+    }
+    if ((pair_height_width_before_tr.first == 128 && pair_height_width_before_tr.second == 128) || (pair_height_width_before_tr.first == 64 && pair_height_width_before_tr.second == 64) || (pair_height_width_before_tr.first == 32 && pair_height_width_before_tr.second == 32)|| (pair_height_width_before_tr.first == 16 && pair_height_width_before_tr.second == 32)|| (pair_height_width_before_tr.first == 32 && pair_height_width_before_tr.second == 16))
+    {
+        pair_height_width_temp.first = 16;
+        pair_height_width_temp.second = 16;
+        it = std::find(vector_pairs_height_width.begin(), vector_pairs_height_width.end(),pair_height_width_temp);
+        if (it != vector_pairs_height_width.end())
+        {
+            transfos.pair_height_width_after_tr = pair_height_width_temp;
+            transfos.factor_downsampling_horizontal = pair_height_width_before_tr.second/16;
+            transfos.factor_downsampling_vertical = pair_height_width_before_tr.first/16;
+            transfos.is_transposed = false;
+            return true;
+        }
+    }
+    return false;
+}
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_downsampling_interpolation.h b/source/Lib/CommonLib/intra_pred_downsampling_interpolation.h
new file mode 100644
index 0000000000000000000000000000000000000000..2eace88b1953eff86c2521391213d63de4530e43
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_downsampling_interpolation.h
@@ -0,0 +1,188 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef INTRA_PRED_DOWNSAMPLING_INTERPOLATION_H
+#define INTRA_PRED_DOWNSAMPLING_INTERPOLATION_H
+
+#include <cmath>
+#include "CommonDef.h"
+
+#if JVET_AB0149_INTRA_PRED
+struct transformations_context_prediction
+{
+    SizeNn pair_height_width_after_tr;
+    int factor_downsampling_vertical;
+    int factor_downsampling_horizontal;
+    bool is_transposed;
+};
+
+template<typename T>
+T divide_integers_closest(const T& value,const T& divisor)
+{
+    const bool are_opposite_signs{(value < 0 && divisor > 0) || (value > 0 && divisor < 0)};
+    return (value + (are_opposite_signs ? -1 : 1)*(divisor/2))/divisor;
+}
+
+template <typename T>
+int redPrimary(const T* ptr_top_left_rectangle,const int factor_downsampling_vertical,const int factor_downsampling_horizontal,const int stride_picture,T& value_downsampling)
+{
+    if (factor_downsampling_vertical == 1 && factor_downsampling_horizontal == 1)
+    {
+        value_downsampling = ptr_top_left_rectangle[0];
+    }
+    else
+    {
+        int accumulation = 0, i = 0, j = 0;
+        for (i = 0; i < factor_downsampling_vertical; i++)
+        {
+            for (j = 0; j < factor_downsampling_horizontal; j++)
+            {
+                accumulation += ptr_top_left_rectangle[j];
+            }
+            ptr_top_left_rectangle += stride_picture;
+        }
+        value_downsampling = static_cast<T>(divide_integers_closest(accumulation,factor_downsampling_vertical*factor_downsampling_horizontal));
+    }
+    return 0;
+}
+bool find_equivalent_p(const std::vector<SizeNn>& vector_pairs_height_width,const SizeNn& pair_height_width_before_tr,transformations_context_prediction& transfos);
+template <typename T>
+int ulSecondary(const T* const ptr_src,T* const ptr_dst,const T* const ptr_boundary,const int size_dim_src_upsampled,const int size_dim_src_orth,const int step_src_upsampled,const int step_src_orth,const int step_dst_upsampled,const int step_dst_orth,const int step_boundary,const int factor_upsampling)
+{
+    const T* ptr_src_temp = ptr_src;
+    T* ptr_dst_temp = ptr_dst;
+    const T* ptr_boundary_temp = ptr_boundary; const T* ptr_before = NULL; const T* ptr_after = NULL;
+    T* ptr_current_dst = NULL;
+    int i = 0, j = 0, k = 0;
+    for (i = 0; i < size_dim_src_orth; i++)
+    {
+        ptr_before = ptr_boundary_temp;
+        ptr_after = ptr_src_temp;
+        ptr_current_dst = ptr_dst_temp;
+        for (j = 0; j < size_dim_src_upsampled; j++)
+        {
+            for (k = 1; k <= factor_upsampling; k++)
+            {
+                *ptr_current_dst = divide_integers_closest<int>((factor_upsampling - k)*(*ptr_before) + k*(*ptr_after),factor_upsampling);
+                ptr_current_dst += step_dst_upsampled;
+            }
+            ptr_before = ptr_after;
+            ptr_after += step_src_upsampled;
+        }
+        ptr_src_temp += step_src_orth;
+        ptr_dst_temp += step_dst_orth;
+        ptr_boundary_temp += step_boundary;
+    }
+    return 0;
+}
+
+template <typename T>
+int ulPrimary(const T* const ptr_src,T* const ptr_dst,const T* const ptr_boundary_left,const T* const ptr_boundary_above,const int height_target,const int width_target,const int stride_src,const int stride_dst,const int stride_boundary_left,const int factor_upsampling_vertical,const int factor_upsampling_horizontal,const bool is_transposed)
+{
+    const int height_target_src = height_target/factor_upsampling_vertical, width_target_src = width_target/factor_upsampling_horizontal;
+    int step_src_upsampled = is_transposed ? stride_src : 1, step_src_orth = is_transposed ? 1 : stride_src;
+    T* const ptr_dst_shifted = ptr_dst + stride_dst*(factor_upsampling_vertical - 1);
+    const T* const ptr_boundary_left_shifted = ptr_boundary_left + stride_boundary_left*(factor_upsampling_vertical - 1);
+    ulSecondary(ptr_src,ptr_dst_shifted, ptr_boundary_left_shifted,width_target_src,height_target_src,step_src_upsampled,step_src_orth,1,stride_dst*factor_upsampling_vertical,stride_boundary_left*factor_upsampling_vertical,factor_upsampling_horizontal);
+    const T* ptr_src_shifted = NULL;
+    int size_dim_src_upsampled = 0, size_dim_src_orth = 0;
+    if (factor_upsampling_horizontal > 1)
+    {
+        ptr_src_shifted = ptr_dst_shifted;
+        size_dim_src_upsampled = height_target_src;
+        size_dim_src_orth = width_target;
+        step_src_upsampled = stride_dst*factor_upsampling_vertical;
+        step_src_orth = 1;
+    }
+    else
+    {
+        ptr_src_shifted = ptr_src;
+        size_dim_src_upsampled = height_target_src;
+        size_dim_src_orth = width_target_src;
+        step_src_upsampled = is_transposed ? 1 : stride_src;
+        step_src_orth = is_transposed ? stride_src : 1;
+    }
+    ulSecondary(ptr_src_shifted,ptr_dst,ptr_boundary_above,size_dim_src_upsampled,size_dim_src_orth,step_src_upsampled,step_src_orth,stride_dst,1,1,factor_upsampling_vertical);
+    return 0;
+}
+
+template<typename T, typename DSMALL>
+T change_opt_init(const DSMALL& value,const DSMALL& divisor,const DSMALL& meanContext,const DSMALL& maximum)
+{
+    if (std::is_integral<DSMALL>::value)
+    {
+         return static_cast<T>(std::max<DSMALL>(0, std::min<DSMALL>(maximum,meanContext + divide_integers_closest(value, divisor))));
+    }
+    else
+    {
+        return static_cast<T>(std::nearbyint(std::max<DSMALL>(0, std::min<DSMALL>(maximum,meanContext + value/divisor))));
+    }
+}
+
+template<typename T, typename DSMALL>
+int change_opt_intermediate(const DSMALL* const ptr_src,T* const ptr_dst,const int& height_image,const int& width_image,const int& stride_src,const int& stride_dst, const DSMALL& divisor,const DSMALL& meanContext, const DSMALL& maximum)
+{
+    const DSMALL* ptr_src_temp = ptr_src;
+    T* ptr_dst_temp = ptr_dst;
+    int i = 0, j = 0;
+    for (i = 0; i < height_image; i++)
+    {
+        for (j = 0; j < width_image; j++)
+        {
+            ptr_dst_temp[j] = change_opt_init<T, DSMALL>(ptr_src_temp[j],divisor,meanContext,maximum);
+        }
+        ptr_src_temp += stride_src;
+        ptr_dst_temp += stride_dst;
+    }
+    return 0;
+}
+
+template<typename T, typename DSMALL>
+int change_opt_last(const DSMALL* const ptr_before_upsampling,T* const ptr_intermediate,T* const ptr_after_upsampling,const T* const ptr_boundary_left,const T* const ptr_boundary_above,const int& height_target,const int& width_target,const int& stride_before_upsampling,const int& stride_intermediate,const int& stride_after_upsampling,const int& stride_boundary_left,const int& factor_upsampling_vertical,const int& factor_upsampling_horizontal,const DSMALL& divisor,const DSMALL& meanContext,const DSMALL& maximum,const bool& is_transposed)
+{
+    const int height_target_src = height_target/factor_upsampling_vertical, width_target_src = width_target/factor_upsampling_horizontal, height_target_tr = is_transposed ? width_target_src : height_target_src, width_target_tr = is_transposed ? height_target_src : width_target_src;
+    int error_code = change_opt_intermediate(ptr_before_upsampling,ptr_intermediate,height_target_tr,width_target_tr,stride_before_upsampling,stride_intermediate,divisor,meanContext,maximum);
+    if (error_code < 0)
+    {
+        return -1;
+    }
+    error_code = ulPrimary(ptr_intermediate,ptr_after_upsampling,ptr_boundary_left,ptr_boundary_above,height_target,width_target,stride_intermediate,stride_after_upsampling,stride_boundary_left,factor_upsampling_vertical,factor_upsampling_horizontal,is_transposed);
+    if (error_code < 0)
+    {
+        return -1;
+    }
+    return 0;
+}
+#endif
+
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_extraction_context.cpp b/source/Lib/CommonLib/intra_pred_extraction_context.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8a81b9703f608aabfcae135c558cf38c4cdd5cab
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_extraction_context.cpp
@@ -0,0 +1,190 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "intra_pred_extraction_context.h"
+
+#if JVET_AB0149_INTRA_PRED
+void compute_steps_0(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& nbLinesLeftTr,const int& contextWidth,int& stepFast,int& stepOrth)
+{
+    if (isTransposed)
+    {
+        stepFast = nbLinesLeftTr;
+        stepOrth = 1;
+    }
+    else
+    {
+        if (isFlatteningTransposedScanning)
+        {
+            stepFast = nbLinesAboveTr;
+            stepOrth = 1;
+        }
+        else
+        {
+            stepFast = 1;
+            stepOrth = contextWidth;
+        }
+    }
+}
+
+void compute_steps_2(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& contextWidth,int& stepFast,int& stepOrth)
+{
+    if (isTransposed)
+    {
+        if (isFlatteningTransposedScanning)
+        {
+            stepFast = 1;
+            stepOrth = nbLinesAboveTr;
+        }
+        else
+        {
+            stepFast = contextWidth;
+            stepOrth = 1;
+        }
+    }
+    else
+    {
+        if (isFlatteningTransposedScanning)
+        {
+            stepFast = nbLinesAboveTr;
+            stepOrth = 1;
+        }
+        else
+        {
+            stepFast = 1;
+            stepOrth = contextWidth;
+        }
+    }
+}
+
+void compute_steps_1(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& nbLinesLeftTr,const int& contextWidth,int& stepFast,int& stepOrth)
+{
+    if (isTransposed)
+    {
+        if (isFlatteningTransposedScanning)
+        {
+            stepFast = 1;
+            stepOrth = nbLinesAboveTr;
+        }
+        else
+        {
+            stepFast = contextWidth;
+            stepOrth = 1;
+        }
+    }
+    else
+    {
+        stepFast = 1;
+        stepOrth = nbLinesLeftTr;
+    }
+}
+
+int fill_pre_before_last(const bool* const pbNeighborFlags,bool* const pbNeighborFlagsMerged,const int& iAboveUnits,const int& iLeftUnits,const int& stepMerge)
+{
+    const bool* pbNeighborFlagsTemp = pbNeighborFlags;
+    bool* pbNeighborFlagsMergedTemp = pbNeighborFlagsMerged;
+    int i = 0, j = 0;
+    for (i = 0; i < iLeftUnits/stepMerge; i++)
+    {
+        for (j = 0; j < stepMerge; j++)
+        {
+            if (pbNeighborFlagsTemp[j] != *pbNeighborFlagsTemp)
+            {
+                return -1;
+            }
+        }
+        *pbNeighborFlagsMergedTemp = *pbNeighborFlagsTemp;
+        pbNeighborFlagsTemp += stepMerge;
+        pbNeighborFlagsMergedTemp++;
+    }
+    *pbNeighborFlagsMergedTemp = *pbNeighborFlagsTemp;
+    pbNeighborFlagsTemp++;
+    pbNeighborFlagsMergedTemp++;
+    for (i = 0; i < iAboveUnits/stepMerge; i++)
+    {
+        for (j = 0; j < stepMerge; j++)
+        {
+            if (pbNeighborFlagsTemp[j] != *pbNeighborFlagsTemp)
+            {
+                return -1;
+            }
+        }
+        *pbNeighborFlagsMergedTemp = *pbNeighborFlagsTemp;
+        pbNeighborFlagsTemp += stepMerge;
+        pbNeighborFlagsMergedTemp++;
+    }
+    return 0;
+}
+
+int translate_into_new(const bool* const pbNeighborFlags,bool* const pbNeighborFlagsMerged,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,int& unitWidth,int& unitHeight,int& iAboveUnits,int& iLeftUnits,bool& isMerged)
+{
+    const bool isUnitWidthSmaller = unitWidth < factorDownsamplingHorizontal, isUnitHeightSmaller = unitHeight < factorDownsamplingVertical;
+    isMerged = false;
+    if (isUnitWidthSmaller || isUnitHeightSmaller)
+    {
+        int stepMergeWidth{1};
+        if (isUnitWidthSmaller)
+        {
+            if (factorDownsamplingHorizontal % unitWidth == 0)
+            {
+                stepMergeWidth = factorDownsamplingHorizontal/unitWidth;
+            }
+            else
+            {
+                return -1;
+            }
+        }
+        int stepMergeHeight = 1;
+        if (isUnitHeightSmaller)
+        {
+            if (factorDownsamplingVertical % unitHeight == 0)
+            {
+                stepMergeHeight = factorDownsamplingVertical/unitHeight;
+            }
+            else
+            {
+                return -1;
+            }
+        }
+        const int stepMerge = std::max(stepMergeWidth,stepMergeHeight);
+        fill_pre_before_last(pbNeighborFlags,pbNeighborFlagsMerged,iAboveUnits,iLeftUnits,stepMerge);
+        unitWidth *= stepMerge;
+        unitHeight *= stepMerge;
+        iAboveUnits /= stepMerge;
+        iLeftUnits /= stepMerge;
+        isMerged = true;
+    }
+    return 0;
+}
+#endif
+
+
diff --git a/source/Lib/CommonLib/intra_pred_extraction_context.h b/source/Lib/CommonLib/intra_pred_extraction_context.h
new file mode 100644
index 0000000000000000000000000000000000000000..42dca202a27c576c09223a02bb8e3edc1d9a7f32
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_extraction_context.h
@@ -0,0 +1,445 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef INTRA_PRED_EXTRACTION_CONTEXT_H
+#define INTRA_PRED_EXTRACTION_CONTEXT_H
+
+#include "intra_pred_downsampling_interpolation.h"
+
+#if JVET_AB0149_INTRA_PRED
+int get_nb_lines(const SizeNn& pair_height_width,SizeNn& pair_nb_lines);
+
+template<typename T>
+int collect_indices_non_zeros(const T* const ptr_array,const unsigned int& size_array,std::vector<uint32_t>& vector_indices)
+{
+  for (uint32_t i = 0; i < size_array; i++)
+  {
+    if (ptr_array[i] != 0)
+    {
+      vector_indices.push_back(i);
+    }
+  }
+  return 0;
+}
+
+template<typename T>
+int collect_argminmax_per_row(const T* const ptr_array_2d,const int& height_array,  const int& width_array, std::vector<uint32_t>& vector_argminmaxs, const bool& is_minimum_used)
+{
+  uint32_t i = 0, j = 0, position = 0;
+  bool is_updated = false;
+  const T* ptr_temp = NULL;
+  for (i = 0; i < height_array; i++)
+  {
+    position = 0;
+    ptr_temp = ptr_array_2d + i*width_array;
+    T minmax = *ptr_temp;
+    for (j = 1; j < width_array; j++)
+    {
+      ptr_temp++;
+      is_updated = is_minimum_used ? *ptr_temp < minmax : *ptr_temp > minmax;
+      if (is_updated)
+      {
+        position = j;
+        minmax = *ptr_temp;
+      }
+    }
+    vector_argminmaxs.push_back(position);
+  }
+  return 0;
+}
+
+void compute_steps_0(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& nbLinesLeftTr,const int& contextWidth,int& stepFast,int& stepOrth);
+void compute_steps_2(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& contextWidth,int& stepFast,int& stepOrth);
+void compute_steps_1(const bool& isTransposed,const bool& isFlatteningTransposedScanning,const int& nbLinesAboveTr,const int& nbLinesLeftTr,const int& contextWidth,int& stepFast,int& stepOrth);
+int fill_pre_before_last(const bool* const pbNeighborFlags,bool* const pbNeighborFlagsMerged,const int& iAboveUnits,const int& iLeftUnits,const int& stepMerge);
+int translate_into_new(const bool* const pbNeighborFlags,bool* const pbNeighborFlagsMerged,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,int& unitWidth,int& unitHeight,int& iAboveUnits,int& iLeftUnits,bool& isMerged);
+template <typename T, typename DSMALL>
+int extract_c0_def(const T* const piRoiOrigin,DSMALL* const piPortion,const bool* const pbNeighborFlags,const int& unitWidth,const int& iAboveUnits,const int& nbLinesAbove,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& stepFast,const int& stepOrth,const int& iPicStride,const int& limitUnmasking,int& sumContext,int& counterInSumContext)
+{
+    const int unitWidthDownsampled = unitWidth/factorDownsamplingHorizontal, nbLinesAboveDownsampled = nbLinesAbove/factorDownsamplingVertical;
+    int i = 0, j = 0, k = 0;
+    const T* piRoiOriginTemp = NULL;
+    DSMALL* piPortionTemp = NULL;
+    T valueDownsampling = 0;
+    const bool* pbNeighborFlagsTemp = pbNeighborFlags;
+    if (!(*pbNeighborFlagsTemp)){return -1;}
+    pbNeighborFlagsTemp++;
+    bool isFirstUnavailableUnitFound = false;
+    int error_code = 0;
+    for (i = 0; i < iAboveUnits; i++)
+    {
+        const bool isNotInLimitUnmasking = limitUnmasking == -1 ? true : i*unitWidth < limitUnmasking;
+        if (*pbNeighborFlagsTemp && isNotInLimitUnmasking)
+        {
+            if (isFirstUnavailableUnitFound){return -1;}
+            piRoiOriginTemp = piRoiOrigin - nbLinesAbove*iPicStride + i*unitWidth;
+            for (j = 0; j < nbLinesAboveDownsampled; j++)
+            {
+                piPortionTemp = piPortion + i*unitWidthDownsampled*stepFast + j*stepOrth;
+                for (k = 0; k < unitWidthDownsampled; k++)
+                {
+                    error_code = redPrimary(piRoiOriginTemp + k*factorDownsamplingHorizontal,factorDownsamplingVertical,factorDownsamplingHorizontal,iPicStride,valueDownsampling);
+                    if (error_code < 0){return -1;}
+                    *piPortionTemp = static_cast<DSMALL>(valueDownsampling);
+                    sumContext += valueDownsampling;
+                    counterInSumContext += 1;
+                    piPortionTemp += stepFast;
+                }
+                piRoiOriginTemp += iPicStride*factorDownsamplingVertical;
+            }
+        }
+        else
+        {
+            if (!isFirstUnavailableUnitFound)
+            {
+                isFirstUnavailableUnitFound = true;
+            }
+        }
+        pbNeighborFlagsTemp++;
+    }
+    return 0;
+}
+
+template <typename T, typename DSMALL>
+int extract_c2_def(const T* const piRoiOrigin,DSMALL* const piPortion,const int& nbLinesAbove,const int& nbLinesLeft,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& stepFast,const int& stepOrth,const int& iPicStride,int& sumContext,int& counterInSumContext)
+{
+    const int nbLinesAboveDownsampled = nbLinesAbove/factorDownsamplingVertical, nbLinesLeftDownsampled = nbLinesLeft/factorDownsamplingHorizontal;
+    int i = 0, j = 0;
+    T valueDownsampling = 0;
+    const T* piRoiOriginTemp = piRoiOrigin - nbLinesAbove*iPicStride - nbLinesLeft;
+    DSMALL* piPortionTemp = NULL;
+    int error_code = 0;
+    for (i = 0; i < nbLinesAboveDownsampled; i++)
+    {
+        piPortionTemp = piPortion + i*stepOrth;
+        for (j = 0; j < nbLinesLeftDownsampled; j++)
+        {
+            error_code = redPrimary(piRoiOriginTemp + j*factorDownsamplingHorizontal,factorDownsamplingVertical,factorDownsamplingHorizontal,iPicStride,valueDownsampling);
+            if (error_code < 0){return -1;}
+            *piPortionTemp = static_cast<DSMALL>(valueDownsampling);
+            sumContext += valueDownsampling;
+            counterInSumContext += 1;
+            piPortionTemp += stepFast;
+        }
+        piRoiOriginTemp += iPicStride*factorDownsamplingVertical;
+    }
+    return 0;
+}
+
+template <typename T, typename DSMALL>
+int extract_c1_def(const T* const piRoiOrigin,DSMALL* const piPortion,const bool* const pbNeighborFlags,const int& unitHeight,const int& iLeftUnits,const int& nbLinesLeft,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& stepFast,const int& stepOrth,const int& iPicStride,const int& limitUnmasking,int& sumContext,int& counterInSumContext)
+{
+    const int unitHeightDownsampled = unitHeight/factorDownsamplingVertical, nbLinesLeftDownsampled = nbLinesLeft/factorDownsamplingHorizontal;
+    int i = 0, j = 0, k = 0;
+    const T* piRoiOriginTemp = piRoiOrigin - nbLinesLeft;
+    DSMALL* piPortionTemp = NULL;
+    T valueDownsampling = 0;
+    const bool* pbNeighborFlagsTemp = pbNeighborFlags;
+    if (!(*pbNeighborFlagsTemp)){return -1;}
+    pbNeighborFlagsTemp--;
+    bool isFirstUnavailableUnitFound = false;
+    int error_code = 0;
+    for (i = 0; i < iLeftUnits; i++)
+    {
+        const bool isNotInLimitUnmasking = limitUnmasking == -1 ? true : i*unitHeight < limitUnmasking;
+        if (*pbNeighborFlagsTemp && isNotInLimitUnmasking)
+        {
+            if (isFirstUnavailableUnitFound){return -1;}
+            for (j = 0; j < unitHeightDownsampled; j++)
+            {
+                piPortionTemp = piPortion + (i*unitHeightDownsampled + j)*stepOrth;
+                for (k = 0; k < nbLinesLeftDownsampled; k++)
+                {
+                    error_code = redPrimary(piRoiOriginTemp + k*factorDownsamplingHorizontal,factorDownsamplingVertical,factorDownsamplingHorizontal,iPicStride,valueDownsampling);
+                    if (error_code < 0){return -1;}
+                    *piPortionTemp = static_cast<DSMALL>(valueDownsampling);
+                    sumContext += valueDownsampling;
+                    counterInSumContext += 1;
+                    piPortionTemp += stepFast;
+                }
+                piRoiOriginTemp += iPicStride*factorDownsamplingVertical;
+            }
+        }
+        else
+        {
+            if (!isFirstUnavailableUnitFound)
+            {
+                isFirstUnavailableUnitFound = true;
+            }
+        }
+        pbNeighborFlagsTemp--;
+    }
+    return 0;
+}
+
+template<typename DSMALL>
+int initialize_call(DSMALL* const piPortionAbove,DSMALL* const piPortionLeft,const int& sizePortionAbove,const int& sizePortionLeft,const DSMALL& maskValue)
+{
+    int i = 0;
+    for (i = 0; i < sizePortionAbove; i++)
+    {
+        piPortionAbove[i] = maskValue;
+    }
+    for (i = 0; i < sizePortionLeft; i++)
+    {
+        piPortionLeft[i] = maskValue;
+    }
+    return 0;
+}
+
+template <typename T, typename DSMALL>
+int extract_call_def(const T* const piRoiOrigin,DSMALL* const piPortionAbove,DSMALL* const piPortionLeft,const bool* const pbNeighborFlags,const int& unitWidth,const int& unitHeight,const int& iAboveUnits,const int& iLeftUnits,const int& nbLinesAbove,const int& nbLinesLeft,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& iPicStride,const int& limitUnmaskingWidth,const int& limitUnmaskingHeight,const DSMALL& maskValue,const bool& isTransposed,const bool& isFlatteningTransposedScanning,T& meanContext)
+{
+    const int nbLinesAboveDownsampled = nbLinesAbove/factorDownsamplingVertical, nbLinesLeftDownsampled = nbLinesLeft/factorDownsamplingHorizontal, sizeCtxHeightDownsampled = (iLeftUnits*unitHeight)/factorDownsamplingVertical, sizeCtxWidthDownsampled = (iAboveUnits*unitWidth)/factorDownsamplingHorizontal, nbLinesAboveTr = isTransposed ? nbLinesLeftDownsampled : nbLinesAboveDownsampled, nbLinesLeftTr = isTransposed ? nbLinesAboveDownsampled : nbLinesLeftDownsampled, sizeCtxHeightTr = isTransposed ? sizeCtxWidthDownsampled : sizeCtxHeightDownsampled, sizeCtxWidthTr = isTransposed ? sizeCtxHeightDownsampled : sizeCtxWidthDownsampled, contextWidth = nbLinesLeftTr + sizeCtxWidthTr;
+    int error_code = initialize_call(piPortionAbove,piPortionLeft,nbLinesAboveTr*contextWidth,sizeCtxHeightTr*nbLinesLeftTr,maskValue);
+    if (error_code < 0){return -1;}
+    int sumContext = 0, counterInSumContext = 0, stepFast = 0, stepOrth = 0;
+    compute_steps_2(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,contextWidth,stepFast,stepOrth);
+    error_code = extract_c2_def(piRoiOrigin,piPortionAbove,nbLinesAbove,nbLinesLeft,factorDownsamplingVertical,factorDownsamplingHorizontal,stepFast,stepOrth,iPicStride,sumContext,counterInSumContext);
+    if (error_code < 0){return -1;}
+    DSMALL* piPortion{isTransposed ? piPortionLeft : (isFlatteningTransposedScanning ? piPortionAbove + nbLinesAboveTr*nbLinesLeftTr : piPortionAbove + nbLinesLeftTr)};
+    compute_steps_0(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,nbLinesLeftTr,contextWidth,stepFast,stepOrth);
+    error_code = extract_c0_def(piRoiOrigin,piPortion,pbNeighborFlags,unitWidth,iAboveUnits,nbLinesAbove,factorDownsamplingVertical,factorDownsamplingHorizontal,stepFast,stepOrth,iPicStride,limitUnmaskingWidth,sumContext,counterInSumContext);
+    if (error_code < 0){return -1;}
+    piPortion = isTransposed ? (isFlatteningTransposedScanning ? piPortionAbove + nbLinesAboveTr*nbLinesLeftTr : piPortionAbove + nbLinesLeftTr) : piPortionLeft;
+    compute_steps_1(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,nbLinesLeftTr,contextWidth,stepFast,stepOrth);
+    error_code = extract_c1_def(piRoiOrigin,piPortion,pbNeighborFlags,unitHeight,iLeftUnits,nbLinesLeft,factorDownsamplingVertical,factorDownsamplingHorizontal,stepFast,stepOrth,iPicStride,limitUnmaskingHeight,sumContext,counterInSumContext);
+    if (error_code < 0){return -1;}
+    meanContext = static_cast<T>(divide_integers_closest(sumContext,counterInSumContext));
+    return 0;
+}
+
+template<typename DSMALL>
+int pre_cin_0(DSMALL* const piPortion,const bool* const pbNeighborFlags,const int& unitWidthDownsampled,const int& iAboveUnits,const int& nbLinesAboveDownsampled,const int& stepFast,const int& stepOrth,const int& limitUnmaskingDownsampled,const DSMALL& scaleQuantizer,const DSMALL& meanContext)
+{
+    int i = 0, j = 0, k = 0;
+    DSMALL* piPortionTemp = NULL;
+    const bool* pbNeighborFlagsTemp = pbNeighborFlags;
+    if (!(*pbNeighborFlagsTemp)){return -1;}
+    pbNeighborFlagsTemp++;
+    bool isFirstUnavailableUnitFound = false;
+    for (i = 0; i < iAboveUnits; i++)
+    {
+        const bool isNotInLimitUnmasking = limitUnmaskingDownsampled == -1 ? true : i*unitWidthDownsampled < limitUnmaskingDownsampled;
+        if (*pbNeighborFlagsTemp && isNotInLimitUnmasking)
+        {
+            if (isFirstUnavailableUnitFound){return -1;}
+            for (j = 0; j < nbLinesAboveDownsampled; j++)
+            {
+                piPortionTemp = piPortion + i*unitWidthDownsampled*stepFast + j*stepOrth;
+                for (k = 0; k < unitWidthDownsampled; k++)
+                {
+                    *piPortionTemp = (*piPortionTemp - meanContext)*scaleQuantizer;
+                    piPortionTemp += stepFast;
+                }
+            }
+        }
+        else
+        {
+            if (!isFirstUnavailableUnitFound)
+            {
+                isFirstUnavailableUnitFound = true;
+            }
+        }
+        pbNeighborFlagsTemp++;
+    }
+    return 0;
+}
+
+template<typename DSMALL>
+int pre_cin_2(DSMALL* const piPortion,const int& nbLinesAboveDownsampled,const int& nbLinesLeftDownsampled,const int& stepFast,const int& stepOrth,const DSMALL& scaleQuantizer,const DSMALL& meanContext)
+{
+    int i = 0, j = 0;
+    DSMALL* piPortionTemp = NULL;
+    for (i = 0; i < nbLinesAboveDownsampled; i++)
+    {
+        piPortionTemp = piPortion + i*stepOrth;
+        for (j = 0; j < nbLinesLeftDownsampled; j++)
+        {
+            *piPortionTemp = (*piPortionTemp - meanContext)*scaleQuantizer;
+            piPortionTemp += stepFast;
+        }
+    }
+    return 0;
+}
+
+template<typename DSMALL>
+int pre_cin_1(DSMALL* const piPortion,const bool* const pbNeighborFlags,const int& unitHeightDownsampled,const int& iLeftUnits,const int& nbLinesLeftDownsampled,const int& stepFast,const int& stepOrth,const int& limitUnmaskingDownsampled,const DSMALL& scaleQuantizer,const DSMALL& meanContext)
+{
+    int i = 0, j = 0, k = 0;
+    DSMALL* piPortionTemp = NULL;
+    const bool* pbNeighborFlagsTemp = pbNeighborFlags;
+    if (!(*pbNeighborFlagsTemp)){return -1;}
+    pbNeighborFlagsTemp--;
+    bool isFirstUnavailableUnitFound = false;
+    for (i = 0; i < iLeftUnits; i++)
+    {
+        const bool isNotInLimitUnmasking = limitUnmaskingDownsampled == -1 ? true : i*unitHeightDownsampled < limitUnmaskingDownsampled;
+        if (*pbNeighborFlagsTemp && isNotInLimitUnmasking)
+        {
+            if (isFirstUnavailableUnitFound){return -1;}
+            for (j = 0; j < unitHeightDownsampled; j++)
+            {
+                piPortionTemp = piPortion + (i*unitHeightDownsampled + j)*stepOrth;
+                for (k = 0; k < nbLinesLeftDownsampled; k++)
+                {
+                    *piPortionTemp = (*piPortionTemp - meanContext)*scaleQuantizer;
+                    piPortionTemp += stepFast;
+                }
+            }
+        }
+        else
+        {
+            if (!isFirstUnavailableUnitFound)
+            {
+                isFirstUnavailableUnitFound = true;
+            }
+        }
+        pbNeighborFlagsTemp--;
+    }
+    return 0;
+}
+
+template<typename DSMALL>
+int pre_cin_all_def(DSMALL* const piPortionAbove,DSMALL* const piPortionLeft,const bool* const pbNeighborFlags,const int& unitWidthDownsampled,const int& unitHeightDownsampled,const int& iAboveUnits,const int& iLeftUnits,const int& nbLinesAboveDownsampled,const int& nbLinesLeftDownsampled,const int& limitUnmaskingWidthDownsampled,const int& limitUnmaskingHeightDownsampled,const DSMALL& scaleQuantizer,const bool& isTransposed,const bool& isFlatteningTransposedScanning,const DSMALL& meanContext)
+{
+    const int nbLinesAboveTr = isTransposed ? nbLinesLeftDownsampled : nbLinesAboveDownsampled, nbLinesLeftTr = isTransposed ? nbLinesAboveDownsampled : nbLinesLeftDownsampled, sizeCtxWidthTr = isTransposed ? iLeftUnits*unitHeightDownsampled : iAboveUnits*unitWidthDownsampled, contextWidth = nbLinesLeftTr + sizeCtxWidthTr;
+    int stepFast = 0, stepOrth = 0;
+    compute_steps_2(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,contextWidth,stepFast,stepOrth);
+    pre_cin_2(piPortionAbove,nbLinesAboveDownsampled,nbLinesLeftDownsampled,stepFast,stepOrth,scaleQuantizer,meanContext);
+    DSMALL* piPortion = isTransposed ? piPortionLeft : (isFlatteningTransposedScanning ? piPortionAbove + nbLinesAboveTr*nbLinesLeftTr : piPortionAbove + nbLinesLeftTr);
+    compute_steps_0(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,nbLinesLeftTr,contextWidth,stepFast,stepOrth);
+    pre_cin_0(piPortion,pbNeighborFlags,unitWidthDownsampled,iAboveUnits,nbLinesAboveDownsampled,stepFast,stepOrth,limitUnmaskingWidthDownsampled,scaleQuantizer,meanContext);
+    piPortion = isTransposed ? (isFlatteningTransposedScanning ? piPortionAbove + nbLinesAboveTr*nbLinesLeftTr : piPortionAbove + nbLinesLeftTr) : piPortionLeft;
+    compute_steps_1(isTransposed,isFlatteningTransposedScanning,nbLinesAboveTr,nbLinesLeftTr,contextWidth,stepFast,stepOrth);
+    pre_cin_1(piPortion,pbNeighborFlags,unitHeightDownsampled,iLeftUnits,nbLinesLeftDownsampled,stepFast,stepOrth,limitUnmaskingHeightDownsampled,scaleQuantizer,meanContext);
+    return 0;
+}
+
+template <typename T, typename DSMALL>
+int extract_pre_cin(const T* const piRoiOrigin,DSMALL* const piPortionAbove,DSMALL* const piPortionLeft,const bool* const pbNeighborFlags,const int& unitWidth,const int& unitHeight,const int& iAboveUnits,const int& iLeftUnits,const int& nbLinesAbove,const int& nbLinesLeft,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& iPicStride,const int& limitUnmaskingWidth,const int& limitUnmaskingHeight,const DSMALL& scaleQuantizer,const DSMALL& maskValue,const bool& isTransposed,const bool& isFlatteningTransposedScanning,T& meanContext)
+{
+    extract_call_def(piRoiOrigin,piPortionAbove,piPortionLeft,pbNeighborFlags,unitWidth,unitHeight,iAboveUnits,iLeftUnits,nbLinesAbove,nbLinesLeft,factorDownsamplingVertical,factorDownsamplingHorizontal,iPicStride,limitUnmaskingWidth,limitUnmaskingHeight,maskValue,isTransposed,isFlatteningTransposedScanning,meanContext);
+    pre_cin_all_def(piPortionAbove,piPortionLeft,pbNeighborFlags,unitWidth/factorDownsamplingHorizontal,unitHeight/factorDownsamplingVertical,iAboveUnits,iLeftUnits,nbLinesAbove/factorDownsamplingVertical,nbLinesLeft/factorDownsamplingHorizontal,limitUnmaskingWidth == -1 ? -1 : limitUnmaskingWidth/factorDownsamplingHorizontal,limitUnmaskingHeight == -1 ? -1 : limitUnmaskingHeight/factorDownsamplingVertical,scaleQuantizer,isTransposed,isFlatteningTransposedScanning,static_cast<DSMALL>(meanContext));
+    return 0;
+}
+
+template <typename T, typename DSMALL>
+int extract_pre_cin_optionally(const T* const piRoiOrigin,DSMALL* const piPortionAbove,DSMALL* const piPortionLeft,const bool* const pbNeighborFlags,bool* const pbNeighborFlagsMerged,int unitWidth,int unitHeight,int iAboveUnits,int iLeftUnits,const int& nbLinesAbove,const int& nbLinesLeft,const int& factorDownsamplingVertical,const int& factorDownsamplingHorizontal,const int& iPicStride,const int& limitUnmaskingWidth,const int& limitUnmaskingHeight,const DSMALL& scaleQuantizer,const DSMALL& maskValue,const bool& isTransposed,const bool& isFlatteningTransposedScanning,T& meanContext)
+{
+    bool isMerged = false;
+    int error_code = translate_into_new(pbNeighborFlags,pbNeighborFlagsMerged,factorDownsamplingVertical,factorDownsamplingHorizontal,unitWidth,unitHeight,iAboveUnits,iLeftUnits,isMerged);
+    error_code = extract_pre_cin(piRoiOrigin,piPortionAbove,piPortionLeft,(isMerged ? pbNeighborFlagsMerged : pbNeighborFlags) + iLeftUnits,unitWidth,unitHeight,iAboveUnits,iLeftUnits,nbLinesAbove,nbLinesLeft,factorDownsamplingVertical,factorDownsamplingHorizontal,iPicStride,limitUnmaskingWidth,limitUnmaskingHeight,scaleQuantizer,maskValue,isTransposed,isFlatteningTransposedScanning,meanContext);
+    if (error_code < 0) {return -1;}
+    return 0;
+}
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+template<typename T>
+int compute_mean(const T* const ptr_array,const int& height_array,const int& width_array,const int& stride_array,double& mean)
+{
+    const T* ptr_temp = ptr_array;
+    mean = 0.;
+    for (int i = 0; i < height_array; i++)
+    {
+        for (int j = 0; j < width_array; j++)
+        {
+            mean += static_cast<double>(ptr_temp[j]);
+        }
+        ptr_temp += stride_array;
+    }
+    mean /= height_array*width_array;
+    return 0;
+}
+
+template<typename T>
+int compute_mean_of_elementwise_product(const T* const ptr_array_0,const T* const ptr_array_1,const int& height_array,const int& width_array,const int& stride_array_0,const int& stride_array_1,double& mean_of_prod)
+{
+    const T* ptr_temp_0 = ptr_array_0;
+    const T* ptr_temp_1 = ptr_array_1;
+    mean_of_prod = 0.;
+    for (int i = 0; i < height_array; i++)
+    {
+        for (int j = 0; j < width_array; j++)
+        {
+            mean_of_prod += static_cast<double>(ptr_temp_0[j]*ptr_temp_1[j]);
+        }
+        ptr_temp_0 += stride_array_0;
+        ptr_temp_1 += stride_array_1;
+    }
+    mean_of_prod /= height_array*width_array;
+    return 0;
+}
+
+template<typename T>
+int compute_mean_of_squared(const T* const ptr_array,const int& height_array,const int& width_array,const int& stride_array,double& mean_of_squared)
+{
+    const T* ptr_temp = ptr_array;
+    mean_of_squared = 0.;
+    for (int i = 0; i < height_array; i++)
+    {
+        for (int j = 0; j < width_array; j++)
+        {
+            mean_of_squared += static_cast<double>(pow(ptr_temp[j], 2.));
+        }
+        ptr_temp += stride_array;
+    }
+    mean_of_squared /= height_array*width_array;
+    return 0;
+}
+
+template<typename T>
+int compare_contrast_structure_globally(const T* const ptr_array_0,const T* const ptr_array_1,const int& height_array,const int& width_array,const int& stride_array_0,const int& stride_array_1,const int& range,double* const ptr_measures)
+{
+    const double cst = pow(0.03*range,2.);
+    const double cov_norm = static_cast<double>(height_array*width_array)/(height_array*width_array - 1);
+    double mean_0 = 0.;
+    compute_mean(ptr_array_0,height_array,width_array,stride_array_0,mean_0);
+    double mean_1 = 0.;
+    compute_mean(ptr_array_1,height_array,width_array,stride_array_1,mean_1);
+    double mean_of_squared_0 = 0.;
+    compute_mean_of_squared(ptr_array_0,height_array,width_array,stride_array_0,mean_of_squared_0);
+    double mean_of_squared_1 = 0.;
+    compute_mean_of_squared(ptr_array_1,height_array,width_array,stride_array_1,mean_of_squared_1);
+    double mean_of_prod = 0.;
+    compute_mean_of_elementwise_product(ptr_array_0,ptr_array_1,height_array,width_array,stride_array_0,stride_array_1,mean_of_prod);
+    const double var_0 = cov_norm*(mean_of_squared_0 - pow(mean_0, 2.));
+    const double var_1 = cov_norm*(mean_of_squared_1 - pow(mean_1, 2.));
+    const double covariance = cov_norm*(mean_of_prod - mean_0*mean_1);
+    ptr_measures[0] = (2.*sqrt(var_0*var_1) + cst)/(var_0 + var_1 + cst);
+    ptr_measures[1] = (2.*covariance + cst)/(2.*sqrt(var_0*var_1) + cst);
+    return 0;
+}
+#endif
+#endif
+
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_sadl.cpp b/source/Lib/CommonLib/intra_pred_sadl.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..81bae3c5224a088cbcec6f3e57099f67b15a6b3f
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_sadl.cpp
@@ -0,0 +1,153 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <fstream>
+#include "intra_pred_extraction_context.h"
+#include "intra_pred_sadl.h"
+
+#if JVET_AB0149_INTRA_PRED
+int fill_map_height_width_target_model(std::map<SizeNn, sadl::Model<TypeSadl>>& map_height_width_target_model, const std::vector<SizeNn>& vector_pairs_height_width) {
+  for (std::vector<SizeNn>::const_iterator it{vector_pairs_height_width.begin()}; it != vector_pairs_height_width.end(); it++) {
+    if (map_height_width_target_model.find(*it) != map_height_width_target_model.end()) {
+      return -1;
+    }
+    map_height_width_target_model.insert(std::make_pair(*it, sadl::Model<TypeSadl>()));
+  }
+  return 0;
+}
+
+int insert_vector_tensors_input_convolutional(std::map<SizeNn,std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input,const SizeNn& pair_height_width)
+{
+  SizeNn pair_nb_lines(0, 0);
+  get_nb_lines(pair_height_width,pair_nb_lines);
+  std::pair<unsigned int, unsigned int> pair_sizes_ctx_borders(0, 0);
+  get_sizes_context_borders(pair_height_width, pair_sizes_ctx_borders);
+  map_height_width_target_vector_tensors_input.insert(std::make_pair(pair_height_width,std::vector<sadl::Tensor<TypeSadl>>{sadl::Tensor<TypeSadl>(sadl::Dimensions{{1, static_cast<int>(pair_nb_lines.first), static_cast<int>(pair_nb_lines.second + pair_sizes_ctx_borders.second), 1}}),sadl::Tensor<TypeSadl>(sadl::Dimensions{{1, static_cast<int>(pair_sizes_ctx_borders.first), static_cast<int>(pair_nb_lines.second), 1}})}));
+  return 0;
+}
+
+int insert_vector_tensors_input_fully_connected(std::map<SizeNn,std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input,const SizeNn& pair_height_width)
+{
+  SizeNn pair_nb_lines(0, 0);
+  get_nb_lines(pair_height_width, pair_nb_lines);
+  std::pair<unsigned int, unsigned int> pair_sizes_ctx_borders(0, 0);
+  get_sizes_context_borders(pair_height_width,pair_sizes_ctx_borders);
+  map_height_width_target_vector_tensors_input.insert(std::make_pair(pair_height_width,std::vector<sadl::Tensor<TypeSadl>>{sadl::Tensor<TypeSadl>(sadl::Dimensions{{1, static_cast<int>(pair_nb_lines.first*(pair_nb_lines.second + pair_sizes_ctx_borders.second) + pair_nb_lines.second*pair_sizes_ctx_borders.first)}})}));
+  return 0;
+}
+
+int fill_map_height_width_target_vector_tensors_input(std::map<SizeNn,std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input,const std::vector<SizeNn>& vector_pairs_height_width)
+{
+  bool is_fully_connected = false;
+  for (std::vector<std::pair<unsigned int, unsigned int>>::const_iterator it{vector_pairs_height_width.begin()}; it != vector_pairs_height_width.end(); it++)
+  {
+    decide_fully_connected(*it,is_fully_connected);
+    if (is_fully_connected)
+    {
+      insert_vector_tensors_input_fully_connected(map_height_width_target_vector_tensors_input,*it);
+    }
+    else
+    {
+      insert_vector_tensors_input_convolutional(map_height_width_target_vector_tensors_input,*it);
+    }
+  }
+  return 0;
+}
+
+int read_graph_init_model(sadl::Model<TypeSadl>& model,const std::string& path_to_graph_output,std::vector<sadl::Tensor<TypeSadl>>& vector_tensors_input)
+{
+  std::ifstream file(path_to_graph_output,std::ios::binary);
+  if (!model.load(file))
+  {
+    return -1;
+  }
+  if (!model.init(vector_tensors_input))
+  {
+    return -1;
+  }
+  return 0;
+}
+
+int read_graphs_init_models(std::map<SizeNn, sadl::Model<TypeSadl>>& map_height_width_target_models,const std::map<SizeNn, std::string>& map_height_width_target_path_to_graph_output,std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input)
+{
+  int error_code{0};
+  for (auto it{map_height_width_target_models.begin()}; it != map_height_width_target_models.end(); it++)
+  {
+    error_code = read_graph_init_model(it->second,map_height_width_target_path_to_graph_output.at(it->first),map_height_width_target_vector_tensors_input.at(it->first));
+    if (error_code < 0)
+    {
+      return -1;
+    }
+  }
+  return 0;
+}
+
+bool inferModel(sadl::Model<TypeSadl>& model, std::vector<sadl::Tensor<TypeSadl>>& input_tensor, const TypeSadl*& ptr_before_u, const TypeSadl*& ptr_ulog
+#if JVET_AB0149_TM_INF_PNN
+                , const TypeSadl*& ptr_ut
+#endif
+#if INTERNAL_INT32 || INTERNAL_INT16
+                , int& quantizer_pred
+#endif
+                )
+{
+  const std::vector<sadl::layers::Layer<TypeSadl>::Id>& ids_output = model.getIdsOutput();
+  CHECK(ids_output.size() != 3,"`ids_output.size()` is not equal to 3.");
+  if (!model.apply(input_tensor)) {
+    std::cerr << "Error in `sadl::Model::apply`." << std::endl;
+    exit(-1);
+    return false;
+  }
+  const sadl::Model<TypeSadl>& cmodel = static_cast<const sadl::Model<TypeSadl>&>(model); // to get getLayer access
+  const auto& tensor_p = cmodel.getLayer(ids_output[0]).layer->output();
+  ptr_before_u = tensor_p.data();
+  const auto& tensor_ulog = cmodel.getLayer(ids_output[1]).layer->output();
+  CHECK(tensor_ulog.dims().size() != 2, "`tensor_ulog.dims().size()` is not equal to 2.");
+  CHECK(tensor_ulog.dims()[0] != 1, "`tensor_ulog.dims()[0]` is not equal to 1.");
+  CHECK(tensor_ulog.dims()[1] != NUM_LUMA_MODE, "`tensor_ulog.dims()[1]` is not equal to " + std::to_string(NUM_LUMA_MODE) + ".");
+  ptr_ulog = tensor_ulog.data();
+#if JVET_AB0149_TM_INF_PNN
+  const auto& tensor_ut = cmodel.getLayer(ids_output[2]).layer->output();
+  CHECK(tensor_ut.dims().size() != 3, "`tensor_ut.dims().size()` is not equal to 3.");
+  CHECK(tensor_ut.dims()[0] != 1, "`tensor_ut.dims()[0]` is not equal to 1.");
+  CHECK(tensor_ut.dims()[1] != NUM_LFNST_NUM_PER_SET - 1, "`tensor_ut.dims()[1]` is not equal to " + std::to_string(NUM_LFNST_NUM_PER_SET - 1) + ".");
+  CHECK(tensor_ut.dims()[2] != DEPTH_LFNST_GROUP, "`tensor_ut.dims()[2]` is not equal to " + std::to_string(DEPTH_LFNST_GROUP) + ".");
+  ptr_ut = tensor_ut.data();
+#endif
+#if INTERNAL_INT32 || INTERNAL_INT16
+  quantizer_pred = tensor_p.quantizer;
+#endif
+  return true;
+}
+
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_sadl.h b/source/Lib/CommonLib/intra_pred_sadl.h
new file mode 100644
index 0000000000000000000000000000000000000000..a0fd27502970bb2c907a18191d28046b76b71bed
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_sadl.h
@@ -0,0 +1,58 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#pragma once
+
+#include <map>
+#include <string>
+#include "CommonDef.h"
+
+#if JVET_AB0149_INTRA_PRED
+#include <sadl/model.h>
+#include "intra_pred_utils.h"
+
+int fill_map_height_width_target_model(std::map<SizeNn, sadl::Model<TypeSadl>>& map_height_width_target_model, const std::vector<SizeNn>& vector_pairs_height_width);
+int insert_vector_tensors_input_convolutional(std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input, const SizeNn& pair_height_width);
+int insert_vector_tensors_input_fully_connected(std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input, const SizeNn& pair_height_width);
+int fill_map_height_width_target_vector_tensors_input(std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input, const std::vector<SizeNn>& vector_pairs_height_width);
+int read_graph_init_model(sadl::Model<TypeSadl>& model, const std::string& path_to_graph_output, std::vector<sadl::Tensor<TypeSadl>>& vector_tensors_input);
+int read_graphs_init_models(std::map<SizeNn, sadl::Model<TypeSadl>>& map_height_width_target_models, const std::map<SizeNn, std::string>& map_height_width_target_path_to_graph_output, std::map<SizeNn, std::vector<sadl::Tensor<TypeSadl>>>& map_height_width_target_vector_tensors_input);
+bool inferModel(sadl::Model<TypeSadl>& model, std::vector<sadl::Tensor<TypeSadl>>& input_tensor, const TypeSadl*& ptr_before_u, const TypeSadl*& ptr_ulog
+#if JVET_AB0149_TM_INF_PNN
+                , const TypeSadl*& ptr_ut
+#endif
+#if INTERNAL_INT32 || INTERNAL_INT16
+                , int& quantized_pred
+#endif
+                );
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_utils.cpp b/source/Lib/CommonLib/intra_pred_utils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e964e7c556515cccfb629a07eb0dab182e3bdb98
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_utils.cpp
@@ -0,0 +1,139 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <regex>
+#include "intra_pred_utils.h"
+#include "intra_pred_extraction_context.h"
+
+#if JVET_AB0149_INTRA_PRED
+int fill_map_pair_ints_string_from_string(std::map<SizeNn, std::string>& map_pair_ints_string, const std::string& description_pair_ints_string, const std::string& delimiters_elements, const std::string& delimiters_key_value, const std::string& prefix_common)
+{
+  std::vector<std::string> vector_elements;
+  split_string(vector_elements, description_pair_ints_string, delimiters_elements);
+  std::vector<std::string> vector_key_value;
+  SizeNn pair_ints_key(0, 0);
+  int storage{0};
+  std::string value_string{""};
+  for (std::vector<std::string>::const_iterator it{vector_elements.begin()}; it != vector_elements.end(); it++)
+  {
+    split_string(vector_key_value, *it, delimiters_key_value);
+    storage = std::stoi(vector_key_value.at(0));
+    pair_ints_key.first = static_cast<unsigned int>(storage);
+    storage = std::stoi(vector_key_value.at(1));
+    pair_ints_key.second = static_cast<unsigned int>(storage);
+    value_string = vector_key_value.at(2);
+    remove_leading_trailing_whitespaces(value_string);
+    map_pair_ints_string[pair_ints_key] = prefix_common + value_string;
+    vector_key_value.clear();
+  }
+  return 0;
+}
+
+int decide_target_patch_small(const SizeNn& pair_height_width,bool& is_target_patch_small)
+{
+    is_target_patch_small = pair_height_width.first <= 8 || pair_height_width.second <= 8;
+    return 0;
+}
+
+int get_nb_lines_individual_dimension(const unsigned int& dimension,unsigned int& nb_lines)
+{
+    nb_lines = dimension > 8 ? dimension/2 : dimension;
+    return 0;
+}
+
+int get_nb_lines(const SizeNn& pair_height_width, SizeNn& pair_nb_lines)
+{
+  bool is_target_patch_small{false};
+  const int error_code = decide_target_patch_small(pair_height_width,is_target_patch_small);
+  if (error_code < 0)
+  {
+      return -1;
+  }
+  if (is_target_patch_small && pair_height_width.first*pair_height_width.second < 256)
+  {
+      const unsigned int minimum = pair_height_width.first < pair_height_width.second ? pair_height_width.first : pair_height_width.second;
+      pair_nb_lines.first = minimum;
+      pair_nb_lines.second = minimum;
+  }
+  else
+  {
+      if (get_nb_lines_individual_dimension(pair_height_width.first, pair_nb_lines.first) < 0)
+      {
+          return -1;
+      }
+      if (get_nb_lines_individual_dimension(pair_height_width.second, pair_nb_lines.second) < 0)
+      {
+          return -1;
+      }
+  }
+  return 0;
+}
+
+void remove_leading_trailing_whitespaces(std::string& string_to_be_modified)
+{
+  const std::size_t index_position_first{string_to_be_modified.find_first_not_of(" \t\f\v\n\r")};
+  string_to_be_modified.erase(0,index_position_first);
+  const std::size_t index_position_last{string_to_be_modified.find_last_not_of(" \t\f\v\n\r")};
+  string_to_be_modified.erase(index_position_last + 1);
+}
+
+void split_string(std::vector<std::string>& vector_substrings,const std::string& input_string,const std::string& delimiters)
+{
+  const std::regex reg{"[" + delimiters + "]+"};
+  std::sregex_token_iterator it(input_string.begin(), input_string.end(), reg, -1);
+  const std::sregex_token_iterator it_end;
+  for (; it != it_end; it++)
+  {
+    vector_substrings.push_back(it->str());
+  }
+}
+#endif
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+unsigned int get_size_context_border(const unsigned int& dimension)
+{
+    if (dimension == 4 || dimension == 8)
+    {
+        return 2*dimension + 4;
+    }
+    else
+    {
+        return 2*dimension;
+    }
+}
+
+void get_sizes_context_borders(const std::pair<unsigned int, unsigned int>& pair_height_width,std::pair<unsigned int, unsigned int>& pair_sizes_ctx_borders)
+{
+    pair_sizes_ctx_borders.first = get_size_context_border(pair_height_width.first);
+    pair_sizes_ctx_borders.second = get_size_context_border(pair_height_width.second);
+}
+#endif
diff --git a/source/Lib/CommonLib/intra_pred_utils.h b/source/Lib/CommonLib/intra_pred_utils.h
new file mode 100644
index 0000000000000000000000000000000000000000..b1a6ea44b1d3958975fc1e3ec9092276fb129cf5
--- /dev/null
+++ b/source/Lib/CommonLib/intra_pred_utils.h
@@ -0,0 +1,84 @@
+/* The copyright in this software is being made available under the BSD
+* License, included below. This software may be subject to other third party
+* and contributor rights, including patent rights, and no such rights are
+* granted under this license.
+*
+* Copyright (c) 2010-2022, ITU/ISO/IEC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+*  * Redistributions of source code must retain the above copyright notice,
+*    this list of conditions and the following disclaimer.
+*  * Redistributions in binary form must reproduce the above copyright notice,
+*    this list of conditions and the following disclaimer in the documentation
+*    and/or other materials provided with the distribution.
+*  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+*    be used to endorse or promote products derived from this software without
+*    specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#pragma once
+
+#include <map>
+#include <string>
+#include <fstream>
+#include "CommonDef.h"
+
+#if JVET_AB0149_INTRA_PRED
+int decide_target_patch_small(const SizeNn& pair_height_width,bool& is_target_patch_small);
+inline int decide_fully_connected(const SizeNn& pair_height_width,bool& is_fully_connected)
+{
+  bool is_target_patch_small = false;
+  const int error_code = decide_target_patch_small(pair_height_width,is_target_patch_small);
+  if (error_code < 0){return -1;}
+  is_fully_connected = true || is_target_patch_small;
+  return 0;
+}
+
+template<typename T>
+int fill_systematically(const T* const ptr_array_2d_original,T* const ptr_array_2d_out,const int& height_array,const int& width_array,const int& idx_column_start)
+{
+    int i = 0, j = 0;
+    const T* ptr_temp_original = ptr_array_2d_original;
+    T* ptr_temp_out = ptr_array_2d_out;
+    for (i = 0; i < height_array; i++)
+    {
+        for (j = 0; j < width_array; j++)
+        {
+            if (j < idx_column_start)
+            {
+                ptr_temp_out[j] = ptr_temp_original[j];
+            }
+            else
+            {
+                ptr_temp_out[j] = ptr_temp_original[width_array - 1 - j + idx_column_start];
+            }
+        }
+        ptr_temp_original += width_array;
+        ptr_temp_out += width_array;
+    }
+    return 0;
+}
+
+int fill_map_pair_ints_string_from_string(std::map<SizeNn, std::string>& map_pair_ints_string, const std::string& description_pair_ints_string, const std::string& delimiters_elements, const std::string& delimiters_key_value, const std::string& prefix_common);
+void remove_leading_trailing_whitespaces(std::string& string_to_be_modified);
+void split_string(std::vector<std::string>& vector_substrings, const std::string& input_string, const std::string& delimiters);
+#endif
+#if JVET_AB0149_INTRA_PRED || JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+unsigned int get_size_context_border(const unsigned int& dimension);
+void get_sizes_context_borders(const std::pair<unsigned int, unsigned int>& pair_height_width,std::pair<unsigned int, unsigned int>& pair_sizes_ctx_borders);
+#endif
diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp
index 826813df8336b18b213b41350e1d85678aa0a9f2..fe745fc9400975a19c1b0018e5eaee05d0b47bf8 100644
--- a/source/Lib/DecoderLib/CABACReader.cpp
+++ b/source/Lib/DecoderLib/CABACReader.cpp
@@ -1440,103 +1440,185 @@ void CABACReader::extend_ref_line(CodingUnit& cu)
   }
 }
 
-void CABACReader::intra_luma_pred_modes( CodingUnit &cu )
+void CABACReader::intra_luma_pred_modes(CodingUnit& cu)
 {
-  if( !cu.Y().valid() )
+  if (!cu.Y().valid())
   {
     return;
   }
-
-  if( cu.bdpcmMode )
+  if (cu.bdpcmMode)
   {
-    cu.firstPU->intraDir[0] = cu.bdpcmMode == 2? VER_IDX : HOR_IDX;
+    cu.firstPU->intraDir[CHANNEL_TYPE_LUMA] = cu.bdpcmMode == 2 ? VER_IDX : HOR_IDX;
     return;
   }
-
+  PredictionUnit* pu(cu.firstPU);
+#if JVET_AB0149_INTRA_PRED
+  const CompArea& area = pu->Y();
+  const bool is_shape_handled_pnn = decideShapeHandledPnn(area.height, area.width);
+  if (is_shape_handled_pnn)
+  {
+    const uint16_t ctxId = DeriveCtx::CtxPnnLFlag(cu);
+    if (m_BinDecoder.decodeBin(Ctx::PnnLuminanceFlag(ctxId)))
+    {
+      pu->intraDir[CHANNEL_TYPE_LUMA] = PNN_IDX;
+      return;
+    }
+  }
+#endif
   mip_flag(cu);
   if (cu.mipFlag)
   {
     mip_pred_modes(cu);
     return;
   }
-  extend_ref_line( cu );
-  isp_mode( cu );
+  extend_ref_line(cu);
+  isp_mode(cu);
+  RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET_SIZE2(STATS__CABAC_BITS__INTRA_DIR_ANG, cu.lumaSize(), CHANNEL_TYPE_LUMA);
+  const int numBlocks(CU::getNumPUs(cu));
+  CHECK(numBlocks != 1, "There are more than one PU in the current CU.");
 
-  RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET_SIZE2( STATS__CABAC_BITS__INTRA_DIR_ANG, cu.lumaSize(), CHANNEL_TYPE_LUMA );
+#if !JVET_AB0149_INTRA_PRED
+  bool mpmFlag = false;
+#endif
 
-  // prev_intra_luma_pred_flag
-  int numBlocks = CU::getNumPUs( cu );
-  int mpmFlag[4];
-  for( int k = 0; k < numBlocks; k++ )
+  if (pu->multiRefIdx)
   {
-    CHECK(numBlocks != 1, "not supported yet");
-    if ( cu.firstPU->multiRefIdx )
-    {
-      mpmFlag[0] = true;
-    }
-    else
-    {
-      mpmFlag[k] = m_BinDecoder.decodeBin(Ctx::IntraLumaMpmFlag());
-    }
+
+#if JVET_AB0149_INTRA_PRED
+    pu->mpmFlagReading = true;
+#else
+    mpmFlag = true;
+#endif
+
   }
+  else
+  {
 
-  PredictionUnit *pu = cu.firstPU;
+#if JVET_AB0149_INTRA_PRED
+    pu->mpmFlagReading = m_BinDecoder.decodeBin(Ctx::IntraLumaMpmFlag());
+#else
+    mpmFlag = m_BinDecoder.decodeBin(Ctx::IntraLumaMpmFlag());
+#endif
+
+  }
+
+#if !JVET_AB0149_INTRA_PRED
+  unsigned mpm_pred[NUM_MOST_PROBABLE_MODES];
+  PU::getIntraMPMs(*pu, mpm_pred);
+  CHECK(mpm_pred[0] != PLANAR_IDX, "`PLANAR` is not the first MPM.");
+#endif
+
+  if (
+
+#if JVET_AB0149_INTRA_PRED
+      pu->mpmFlagReading
+#else
+      mpmFlag
+#endif
 
-  unsigned mpm_pred[NUM_MOST_PROBABLE_MODES];  // mpm_idx / rem_intra_luma_pred_mode
-  for( int k = 0; k < numBlocks; k++ )
+      )
   {
-    PU::getIntraMPMs( *pu, mpm_pred );
 
-    if( mpmFlag[k] )
+#if !JVET_AB0149_INTRA_PRED
+    uint32_t ipred_idx(0);
+#endif
+
+    if (pu->multiRefIdx == 0)
     {
-      uint32_t ipred_idx = 0;
-      {
-        unsigned ctx = (pu->cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0);
-        if (pu->multiRefIdx == 0)
-        {
-          ipred_idx = m_BinDecoder.decodeBin(Ctx::IntraLumaPlanarFlag(ctx));
-        }
-        else
-        {
-          ipred_idx = 1;
-        }
-        if( ipred_idx )
-        {
-          ipred_idx += m_BinDecoder.decodeBinEP();
-        }
-        if (ipred_idx > 1)
-        {
-          ipred_idx += m_BinDecoder.decodeBinEP();
-        }
-        if (ipred_idx > 2)
-        {
-          ipred_idx += m_BinDecoder.decodeBinEP();
-        }
-        if (ipred_idx > 3)
-        {
-          ipred_idx += m_BinDecoder.decodeBinEP();
-        }
-      }
-      pu->intraDir[0] = mpm_pred[ipred_idx];
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading = m_BinDecoder.decodeBinEP();
+#else
+      ipred_idx = m_BinDecoder.decodeBin(Ctx::IntraLumaPlanarFlag(pu->cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0));
+#endif
     }
     else
     {
-      unsigned ipred_mode = 0;
-
-      xReadTruncBinCode(ipred_mode, NUM_LUMA_MODE - NUM_MOST_PROBABLE_MODES);
-      //postponed sorting of MPMs (only in remaining branch)
-      std::sort( mpm_pred, mpm_pred + NUM_MOST_PROBABLE_MODES );
-
-      for( uint32_t i = 0; i < NUM_MOST_PROBABLE_MODES; i++ )
-      {
-        ipred_mode += (ipred_mode >= mpm_pred[i]);
-      }
-
-      pu->intraDir[0] = ipred_mode;
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading = 1;
+#else
+      ipred_idx = 1;
+#endif
     }
-
-    DTRACE( g_trace_ctx, D_SYNTAX, "intra_luma_pred_modes() idx=%d pos=(%d,%d) mode=%d\n", k, pu->lumaPos().x, pu->lumaPos().y, pu->intraDir[0] );
-    pu = pu->next;
+    if (
+#if JVET_AB0149_INTRA_PRED
+        pu->idxMpmReading
+#else
+        ipred_idx
+#endif
+        )
+    {
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading += m_BinDecoder.decodeBinEP();
+#else
+      ipred_idx += m_BinDecoder.decodeBinEP();
+#endif
+    }
+    if (
+#if JVET_AB0149_INTRA_PRED
+        pu->idxMpmReading > 1
+#else
+        ipred_idx > 1
+#endif
+        )
+    {
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading += m_BinDecoder.decodeBinEP();
+#else
+      ipred_idx += m_BinDecoder.decodeBinEP();
+#endif
+    }
+    if (
+#if JVET_AB0149_INTRA_PRED
+        pu->idxMpmReading > 2
+#else
+        ipred_idx > 2
+#endif
+        )
+    {
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading += m_BinDecoder.decodeBinEP();
+#else
+      ipred_idx += m_BinDecoder.decodeBinEP();
+#endif
+    }
+    if (
+#if JVET_AB0149_INTRA_PRED
+        pu->idxMpmReading > 3
+#else
+        ipred_idx > 3
+#endif
+        )
+    {
+#if JVET_AB0149_INTRA_PRED
+      pu->idxMpmReading += m_BinDecoder.decodeBinEP();
+#else
+      ipred_idx += m_BinDecoder.decodeBinEP();
+#endif
+    }
+#if !JVET_AB0149_INTRA_PRED
+    pu->intraDir[CHANNEL_TYPE_LUMA] = mpm_pred[ipred_idx];
+#endif
+  }
+  else
+  {
+#if !JVET_AB0149_INTRA_PRED
+    unsigned ipred_idx(0);
+#endif
+    xReadTruncBinCode(
+#if JVET_AB0149_INTRA_PRED
+                      pu->idxMpmReading,
+#else
+                      ipred_idx,
+#endif
+                      NUM_LUMA_MODE - NUM_MOST_PROBABLE_MODES);
+#if !JVET_AB0149_INTRA_PRED
+    std::sort(mpm_pred, mpm_pred + NUM_MOST_PROBABLE_MODES);
+    for (uint32_t i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
+    {
+      ipred_idx += ipred_idx >= mpm_pred[i];
+    }
+    pu->intraDir[CHANNEL_TYPE_LUMA] = ipred_idx;
+#endif
   }
 }
 
@@ -1580,41 +1662,53 @@ bool CABACReader::intra_chroma_lmc_mode(PredictionUnit& pu)
 
 void CABACReader::intra_chroma_pred_mode(PredictionUnit& pu)
 {
-  RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET_SIZE2(STATS__CABAC_BITS__INTRA_DIR_ANG, pu.cu->blocks[pu.chType].lumaSize(), CHANNEL_TYPE_CHROMA);
+  RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET_SIZE2(STATS__CABAC_BITS__INTRA_DIR_ANG,
+                                                      pu.cu->blocks[pu.chType].lumaSize(),
+                                                      CHANNEL_TYPE_CHROMA);
   if (pu.cu->colorTransform)
   {
     pu.intraDir[CHANNEL_TYPE_CHROMA] = DM_CHROMA_IDX;
     return;
   }
-
-  // LM chroma mode
-
   if (pu.cs->sps->getUseLMChroma() && pu.cu->checkCCLMAllowed())
   {
-    bool isLMCMode = m_BinDecoder.decodeBin(Ctx::CclmModeFlag(0)) ? true : false;
+    const bool isLMCMode(m_BinDecoder.decodeBin(Ctx::CclmModeFlag(0)) ? true : false);
     if (isLMCMode)
     {
       intra_chroma_lmc_mode(pu);
       return;
     }
   }
-
-  if (m_BinDecoder.decodeBin(Ctx::IntraChromaPredMode(0)) == 0)
+#if JVET_AB0149_INTRA_PRED
+  const bool is_shape_handled_pnn(
+    decideShapeHandledPnn(pu.Cb().height,pu.Cb().width)
+  );
+  const bool is_dm_pnn(
+    getIntraDirLumaSubstitutePnn(PU::getCoLocatedIntraLumaMode(pu),pu.Cb().height,pu.Cb().width) == PNN_IDX
+  );
+  if (is_shape_handled_pnn && !is_dm_pnn)
   {
-    pu.intraDir[1] = DM_CHROMA_IDX;
+    if (m_BinDecoder.decodeBin(Ctx::PnnChrominanceFlag(0)))
+    {
+      pu.intraDir[CHANNEL_TYPE_CHROMA] = PNN_IDX;
+      return;
+    }
+  }
+#endif
+  if (!m_BinDecoder.decodeBin(Ctx::IntraChromaPredMode(0)))
+  {
+    pu.intraDir[CHANNEL_TYPE_CHROMA] = DM_CHROMA_IDX;
     return;
   }
-
-  unsigned candId = m_BinDecoder.decodeBinsEP(2);
-
+#if JVET_AB0149_INTRA_PRED
+  pu.idxCandidateReading = m_BinDecoder.decodeBinsEP(2);
+#else
   unsigned chromaCandModes[NUM_CHROMA_MODE];
-  PU::getIntraChromaCandModes(pu, chromaCandModes);
-
-  CHECK(candId >= NUM_CHROMA_MODE, "Chroma prediction mode index out of bounds");
-  CHECK(PU::isLMCMode(chromaCandModes[candId]), "The intra dir cannot be LM_CHROMA for this path");
-  CHECK(chromaCandModes[candId] == DM_CHROMA_IDX, "The intra dir cannot be DM_CHROMA for this path");
-
-  pu.intraDir[1] = chromaCandModes[candId];
+  PU::getIntraChromaCandModes(pu,
+                              chromaCandModes);
+  const unsigned candId(m_BinDecoder.decodeBinsEP(2));
+  pu.intraDir[CHANNEL_TYPE_CHROMA] = chromaCandModes[candId];
+#endif
 }
 
 void CABACReader::cu_residual( CodingUnit& cu, Partitioner &partitioner, CUCtx& cuCtx )
@@ -3181,11 +3275,24 @@ void CABACReader::residual_lfnst_mode( CodingUnit& cu,  CUCtx& cuCtx  )
         }
       }
     }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    bool isReturnedSpecial = nonZeroCoeffNonTsCorner8x8 || isTrSkip;
+    if (!m_areCostsWritten)
+    {
+      isReturnedSpecial |= !cuCtx.lfnstLastScanPos && !cu.ispMode;
+    }
+    if (isReturnedSpecial)
+    {
+      cu.lfnstIdx = 0;
+      return;
+    }
+#else
     if ((!cuCtx.lfnstLastScanPos && !cu.ispMode) || nonZeroCoeffNonTsCorner8x8 || isTrSkip)
     {
       cu.lfnstIdx = 0;
       return;
     }
+#endif
   }
   else
   {
@@ -3200,6 +3307,19 @@ void CABACReader::residual_lfnst_mode( CodingUnit& cu,  CUCtx& cuCtx  )
   if( idxLFNST )
   {
     idxLFNST += m_BinDecoder.decodeBin(Ctx::LFNSTIdx(2));
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+    const uint32_t intraMode = PU::getFinalIntraMode(*cu.firstPU,cu.chType);
+    if (intraMode == PNN_IDX) {
+      uint32_t maxSymbol = DEPTH_LFNST_GROUP;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      if (m_areCostsWritten)
+      {
+        maxSymbol = 8;
+      }
+#endif
+      xReadTruncBinCode(cu.idxLfnstPnn, maxSymbol);
+    }
+#endif
   }
   cu.lfnstIdx = idxLFNST;
 
diff --git a/source/Lib/DecoderLib/CABACReader.h b/source/Lib/DecoderLib/CABACReader.h
index ab27eba4110dae1e93c76e1d6c4604eb552b8e7b..6d9871e8dfc45a8e94fb4fcc3bf0a0d850a98dba 100644
--- a/source/Lib/DecoderLib/CABACReader.h
+++ b/source/Lib/DecoderLib/CABACReader.h
@@ -48,7 +48,11 @@
 class CABACReader
 {
 public:
-  CABACReader(BinDecoderBase& binDecoder) : m_BinDecoder(binDecoder), m_Bitstream(0) {}
+  CABACReader(BinDecoderBase& binDecoder) : m_BinDecoder(binDecoder), m_Bitstream(0)
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+   , m_areCostsWritten(false)
+#endif
+  {}
   virtual ~CABACReader() {}
 
 public:
@@ -144,7 +148,9 @@ public:
   void        residual_codingTS         ( TransformUnit&                tu,     ComponentID     compID );
   void        residual_coding_subblockTS( CoeffCodingContext&           cctx,   TCoeff*         coeff  );
   void        joint_cb_cr               ( TransformUnit&                tu,     const int cbfMask );
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setAreCostsWritten(const bool& areCostsWritten) {m_areCostsWritten = areCostsWritten;}
+#endif
 
 private:
   unsigned    unary_max_symbol          ( unsigned ctxId0, unsigned ctxIdN, unsigned maxSymbol );
@@ -162,6 +168,9 @@ private:
   BinDecoderBase& m_BinDecoder;
   InputBitstream* m_Bitstream;
   ScanElement*    m_scanOrder;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
 };
 
 
diff --git a/source/Lib/DecoderLib/DecCu.cpp b/source/Lib/DecoderLib/DecCu.cpp
index 35705a9914e17838f76fbba33f41973075b4b470..5af7e4aaeda0a3bf3d88a5846aae2cfc857be6df 100644
--- a/source/Lib/DecoderLib/DecCu.cpp
+++ b/source/Lib/DecoderLib/DecCu.cpp
@@ -60,6 +60,9 @@
 // ====================================================================================================================
 
 DecCu::DecCu()
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  : m_ptrOfstreamQuadtree(NULL)
+#endif
 {
   m_tmpStorageLCU = NULL;
 }
@@ -68,11 +71,18 @@ DecCu::~DecCu()
 {
 }
 
-void DecCu::init( TrQuant* pcTrQuant, IntraPrediction* pcIntra, InterPrediction* pcInter)
+void DecCu::init( TrQuant* pcTrQuant, IntraPrediction* pcIntra, InterPrediction* pcInter
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                 , std::ofstream* const ptrOfstreamQuadtree
+#endif
+                )
 {
   m_pcTrQuant       = pcTrQuant;
   m_pcIntraPred     = pcIntra;
   m_pcInterPred     = pcInter;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_ptrOfstreamQuadtree = ptrOfstreamQuadtree;
+#endif
 }
 void DecCu::initDecCuReshaper  (Reshape* pcReshape, ChromaFormat chromaFormatIDC)
 {
@@ -148,7 +158,11 @@ void DecCu::decompressCtu( CodingStructure& cs, const UnitArea& ctuArea )
         break;
       case MODE_PLT:
       case MODE_INTRA:
-        xReconIntraQT( currCU );
+        xReconIntraQT( currCU
+#if JVET_AB0149_INTRA_PRED
+                      , false
+#endif
+                      );
         break;
       default:
         THROW( "Invalid prediction mode" );
@@ -165,11 +179,68 @@ void DecCu::decompressCtu( CodingStructure& cs, const UnitArea& ctuArea )
 #endif
 }
 
+#if JVET_AB0149_INTRA_PRED
+void DecCu::interpretMpmsLuminance(CodingUnit& cu)
+{
+  PredictionUnit& pu = *cu.firstPU;
+  if (cu.bdpcmMode || pu.intraDir[CHANNEL_TYPE_LUMA] == PNN_IDX || cu.mipFlag){return;}
+  const CompArea& area = cu.Y();
+  const bool is_shape_handled_pnn = decideShapeHandledPnn(area.height,area.width);
+  unsigned arrayMpms[NUM_MOST_PROBABLE_MODES];
+  PU::getIntraMPMs(pu, arrayMpms, is_shape_handled_pnn);
+  if (pu.multiRefIdx || !is_shape_handled_pnn)
+  {
+    CHECK(arrayMpms[0] != PLANAR_IDX, "`PLANAR` is not the first MPM.");
+  }
+  if (pu.mpmFlagReading)
+  {
+    pu.intraDir[CHANNEL_TYPE_LUMA] = arrayMpms[pu.idxMpmReading];
+  }
+  else
+  {
+    std::sort(arrayMpms, arrayMpms + NUM_MOST_PROBABLE_MODES);
+    for (uint32_t i = 0; i < NUM_MOST_PROBABLE_MODES; i++)
+    {
+      pu.idxMpmReading += pu.idxMpmReading >= arrayMpms[i];
+    }
+    pu.intraDir[CHANNEL_TYPE_LUMA] = pu.idxMpmReading;
+  }
+}
+
+void DecCu::interpretCandidatesChrominance(CodingUnit& cu)
+{
+  PredictionUnit& pu = *cu.firstPU;
+  if (cu.bdpcmModeChroma || pu.intraDir[CHANNEL_TYPE_CHROMA] == LM_CHROMA_IDX || pu.intraDir[CHANNEL_TYPE_CHROMA] == MDLM_L_IDX || pu.intraDir[CHANNEL_TYPE_CHROMA] == MDLM_T_IDX || pu.intraDir[CHANNEL_TYPE_CHROMA] == PNN_IDX || pu.intraDir[CHANNEL_TYPE_CHROMA] == DM_CHROMA_IDX)
+  {
+    return;
+  }
+  unsigned arrayCandidates[NUM_CHROMA_MODE];
+  PU::getIntraChromaCandModes(pu, arrayCandidates);
+  pu.intraDir[CHANNEL_TYPE_CHROMA] = arrayCandidates[pu.idxCandidateReading];
+}
+#endif
+
 // ====================================================================================================================
 // Protected member functions
 // ====================================================================================================================
 
-void DecCu::xIntraRecBlk( TransformUnit& tu, const ComponentID compID )
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+int convert_dim_mask_from_cb_to_tb_isp(const int& coord_top_left_cb,const int& coord_top_left_tb,const unsigned int& dim_cb_in_pixels,const unsigned int& dim_tb_in_pixels,const int& dim_mask_cb_in_pixels,int& dim_mask_tb_in_pixels)
+{
+    const int size_ctx_border_cb = get_size_context_border(dim_cb_in_pixels);
+    const int size_ctx_border_tb = get_size_context_border(dim_tb_in_pixels);
+    if (size_ctx_border_tb > size_ctx_border_cb)
+    {
+        return -1;
+    }
+    const int distance_top_left = coord_top_left_tb - coord_top_left_cb;
+    dim_mask_tb_in_pixels = std::max(0, dim_mask_cb_in_pixels - size_ctx_border_cb + size_ctx_border_tb + distance_top_left);
+    return 0;
+}
+#endif
+
+void DecCu::xIntraRecBlk( TransformUnit& tu, const ComponentID compID
+                         )
 {
   if( !tu.blocks[ compID ].valid() )
   {
@@ -190,6 +261,19 @@ void DecCu::xIntraRecBlk( TransformUnit& tu, const ComponentID compID )
   const PredictionUnit &pu  = *tu.cs->getPU( area.pos(), chType );
   const uint32_t uiChFinalMode  = PU::getFinalIntraMode( pu, chType );
   PelBuf pReco              = cs.getRecoBuf(area);
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  int widthMaskAboveModified = -2;
+  int heightMaskLeftModified = -2;
+  bool isComputedHeightWidthMasks = false;
+  if (m_ptrOfstreamQuadtree)
+  {
+    isComputedHeightWidthMasks = m_ptrOfstreamQuadtree->is_open();
+  }
+#endif
+#if JVET_AB0149_INTRA_PRED
+  bool contextFlag = false;
+  const bool is_context_extracted = uiChFinalMode == PNN_IDX;
+#endif
 
   //===== init availability pattern =====
   bool predRegDiffFromTB = CU::isPredRegDiffFromTB(*tu.cu, compID);
@@ -197,23 +281,113 @@ void DecCu::xIntraRecBlk( TransformUnit& tu, const ComponentID compID )
   CompArea areaPredReg(COMPONENT_Y, tu.chromaFormat, area);
   if (tu.cu->ispMode && isLuma(compID))
   {
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    const bool firstTbInPb = CU::isFirstTbInPb(*tu.cu,compID,area);
+    const bool lastTbInPb = CU::isLastTbInPb(*tu.cu,compID,area);
+    CHECK(firstTbInPb && lastTbInPb, "Error.");
+#endif
     if (predRegDiffFromTB)
     {
       if (firstTBInPredReg)
       {
         CU::adjustPredArea(areaPredReg);
-        m_pcIntraPred->initIntraPatternChTypeISP(*tu.cu, areaPredReg, pReco);
+        m_pcIntraPred->initIntraPatternChTypeISP(*tu.cu, areaPredReg, pReco
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                                 , isComputedHeightWidthMasks
+#endif
+                                                 );
       }
     }
     else
     {
-      m_pcIntraPred->initIntraPatternChTypeISP(*tu.cu, area, pReco);
+      m_pcIntraPred->initIntraPatternChTypeISP(*tu.cu, area, pReco
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                               , isComputedHeightWidthMasks
+#endif
+                                               );
     }
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    int error_code{0};
+    if (firstTbInPb)
+    {
+      if ((*tu.cu).ispMode == VER_INTRA_SUBPARTITIONS)
+      {
+        if (m_pcIntraPred->getWidthMaskAbove() == -1)
+        {
+          widthMaskAboveModified = -1;
+        }
+        else
+        {
+          error_code = convert_dim_mask_from_cb_to_tb_isp((*tu.cu).lx(),area.x,(*tu.cu).lwidth(),area.width,m_pcIntraPred->getWidthMaskAbove(),widthMaskAboveModified);
+          CHECK(error_code < 0, "Error in `convert_dim_mask_from_cb_to_tb_isp`.");
+        }
+        heightMaskLeftModified = m_pcIntraPred->getHeightMaskLeft();
+      }
+      else
+      {
+        widthMaskAboveModified = m_pcIntraPred->getWidthMaskAbove();
+        if (m_pcIntraPred->getHeightMaskLeft() == -1)
+        {
+          heightMaskLeftModified = -1;
+        }
+        else
+        {
+          error_code = convert_dim_mask_from_cb_to_tb_isp((*tu.cu).ly(),area.y,(*tu.cu).lheight(),area.height,m_pcIntraPred->getHeightMaskLeft(),heightMaskLeftModified);
+          CHECK(error_code < 0, "Error in `convert_dim_mask_from_cb_to_tb_isp`.");
+        }
+      }
+    }
+    else
+    {
+      if ((*tu.cu).ispMode == VER_INTRA_SUBPARTITIONS)
+      {
+        if (m_pcIntraPred->getWidthMaskAbove() == -1)
+        {
+          widthMaskAboveModified = -1;
+        }
+        else
+        {
+          error_code = convert_dim_mask_from_cb_to_tb_isp((*tu.cu).lx(),area.x,(*tu.cu).lwidth(),area.width,m_pcIntraPred->getWidthMaskAbove(),widthMaskAboveModified);
+          CHECK(error_code < 0,"Error in `convert_dim_mask_from_cb_to_tb_isp`.");
+        }
+        heightMaskLeftModified = get_size_context_border(area.height) - area.height;
+      }
+      else
+      {
+        widthMaskAboveModified = get_size_context_border(area.width) - area.width;
+        if (m_pcIntraPred->getHeightMaskLeft() == -1)
+        {
+          heightMaskLeftModified = -1;
+        }
+        else
+        {
+          error_code = convert_dim_mask_from_cb_to_tb_isp((*tu.cu).ly(),area.y,(*tu.cu).lheight(),area.height,m_pcIntraPred->getHeightMaskLeft(),heightMaskLeftModified);
+          CHECK(error_code < 0,"Error in `convert_dim_mask_from_cb_to_tb_isp`.");
+        }
+      }
+    }
+#endif
   }
   else
   {
-    m_pcIntraPred->initIntraPatternChType(*tu.cu, area);
+    m_pcIntraPred->initIntraPatternChType(*tu.cu, area
+#if JVET_AB0149_INTRA_PRED
+                                          , contextFlag
+                                          , is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                          , isComputedHeightWidthMasks
+#endif
+                                          );
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    widthMaskAboveModified = m_pcIntraPred->getWidthMaskAbove();
+    heightMaskLeftModified = m_pcIntraPred->getHeightMaskLeft();
+#endif
   }
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  CHECK(widthMaskAboveModified == -2, "`widthMaskAboveModified` is equal to -2.");
+  CHECK(heightMaskLeftModified == -2, "`heightMaskLeftModified` is equal to -2.");
+#endif
 
   //===== get prediction signal =====
   if( compID != COMPONENT_Y && PU::isLMCMode( uiChFinalMode ) )
@@ -236,13 +410,48 @@ void DecCu::xIntraRecBlk( TransformUnit& tu, const ComponentID compID )
         if (firstTBInPredReg)
         {
           PelBuf piPredReg = cs.getPredBuf(areaPredReg);
-          m_pcIntraPred->predIntraAng(compID, piPredReg, pu);
+          m_pcIntraPred->predIntraAng(compID, piPredReg, pu
+#if JVET_AB0149_INTRA_PRED
+                                      , contextFlag
+#endif
+                                      );
         }
       }
       else
-        m_pcIntraPred->predIntraAng(compID, piPred, pu);
+        m_pcIntraPred->predIntraAng(compID, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                                    , contextFlag
+#endif
+                                    );
     }
   }
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (isComputedHeightWidthMasks)
+  {
+    std::ofstream& refOfstreamQuadtree = *m_ptrOfstreamQuadtree;
+    refOfstreamQuadtree << "channel index " << compID << "; ";
+    if (isLuma(chType))
+    {
+      refOfstreamQuadtree << "block size " << tu.lwidth() << "x" << tu.lheight() << "; ";
+      refOfstreamQuadtree << "block position (" << tu.lx() << ", " << tu.ly() << "); ";
+    }
+    else
+    {
+      refOfstreamQuadtree << "block size " << tu.Cb().width << "x" << tu.Cb().height << "; ";
+      refOfstreamQuadtree << "block position (" << tu.Cb().x << ", " << tu.Cb().y << "); ";
+    }
+    refOfstreamQuadtree << "intra prediction mode index " << uiChFinalMode << "; ";
+    if (isLuma(chType))
+    {
+      refOfstreamQuadtree << "MIP flag " << (*tu.cu).mipFlag << "; ";
+    }
+    refOfstreamQuadtree << "depth of the TB relatively to its CB " << ((*tu.cu).firstTU != (*tu.cu).lastTU) << "; ";
+    refOfstreamQuadtree << "flag of splitting the CB into 4 PBs 0; ";
+    refOfstreamQuadtree << "width mask above " << widthMaskAboveModified << "; ";
+    refOfstreamQuadtree << "height mask left " << heightMaskLeftModified << "; ";
+    refOfstreamQuadtree << std::endl;
+  }
+#endif
   const Slice           &slice = *cs.slice;
   bool flag = slice.getLmcsEnabledFlag() && (slice.isIntra() || (!slice.isIntra() && m_pcReshape->getCTUFlag()));
   if (flag && slice.getPicHeader()->getLmcsChromaResidualScaleFlag() && (compID != COMPONENT_Y) && (tu.cbf[COMPONENT_Cb] || tu.cbf[COMPONENT_Cr]))
@@ -372,7 +581,18 @@ void DecCu::xIntraRecACTBlk(TransformUnit& tu)
     const ChannelType    chType = toChannelType(compID);
 
     PelBuf piPred = cs.getPredBuf(area);
-    m_pcIntraPred->initIntraPatternChType(*tu.cu, area);
+#if JVET_AB0149_INTRA_PRED
+    bool contextFlag = false;
+#endif
+    m_pcIntraPred->initIntraPatternChType(*tu.cu, area
+#if JVET_AB0149_INTRA_PRED
+                                          , contextFlag
+                                          , false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                          , false
+#endif
+                                          );
     if (PU::isMIP(pu, chType))
     {
       m_pcIntraPred->initIntraMip(pu, area);
@@ -380,7 +600,11 @@ void DecCu::xIntraRecACTBlk(TransformUnit& tu)
     }
     else
     {
-      m_pcIntraPred->predIntraAng(compID, piPred, pu);
+      m_pcIntraPred->predIntraAng(compID, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                                  , contextFlag
+#endif
+                                  );
     }
 
     PelBuf piResi = cs.getResiBuf(area);
@@ -460,7 +684,11 @@ void DecCu::xIntraRecACTBlk(TransformUnit& tu)
   }
 }
 
-void DecCu::xReconIntraQT( CodingUnit &cu )
+void DecCu::xReconIntraQT( CodingUnit &cu
+#if JVET_AB0149_INTRA_PRED
+                          , const bool& isEncoderCall
+#endif
+                          )
 {
 
   if (CU::isPLT(cu))
@@ -502,7 +730,21 @@ void DecCu::xReconIntraQT( CodingUnit &cu )
   {
     if( cu.blocks[chType].valid() )
     {
-      xIntraRecQT( cu, ChannelType( chType ) );
+#if JVET_AB0149_INTRA_PRED
+      if (!isEncoderCall)
+      {
+        if (chType == CHANNEL_TYPE_LUMA)
+        {
+          interpretMpmsLuminance(cu);
+        }
+        else
+        {
+          interpretCandidatesChrominance(cu);
+        }
+      }
+#endif
+      xIntraRecQT( cu, ChannelType( chType )
+                  );
     }
   }
   }
@@ -595,13 +837,15 @@ void DecCu::xReconPLT(CodingUnit &cu, ComponentID compBegin, uint32_t numComp)
 */
 
 void
-DecCu::xIntraRecQT(CodingUnit &cu, const ChannelType chType)
+DecCu::xIntraRecQT(CodingUnit &cu, const ChannelType chType
+                   )
 {
   for( auto &currTU : CU::traverseTUs( cu ) )
   {
     if( isLuma( chType ) )
     {
-      xIntraRecBlk( currTU, COMPONENT_Y );
+      xIntraRecBlk( currTU, COMPONENT_Y
+                   );
     }
     else
     {
@@ -609,7 +853,8 @@ DecCu::xIntraRecQT(CodingUnit &cu, const ChannelType chType)
 
       for( uint32_t compID = COMPONENT_Cb; compID < numValidComp; compID++ )
       {
-        xIntraRecBlk( currTU, ComponentID( compID ) );
+        xIntraRecBlk( currTU, ComponentID( compID )
+                     );
       }
     }
   }
diff --git a/source/Lib/DecoderLib/DecCu.h b/source/Lib/DecoderLib/DecCu.h
index 8789afadb46e306d9c6cadc7108d2fd949a7d613..ad87ae825d4131ed21188b1a93ceed90cfe5ab60 100644
--- a/source/Lib/DecoderLib/DecCu.h
+++ b/source/Lib/DecoderLib/DecCu.h
@@ -49,6 +49,9 @@
 #include "CommonLib/IntraPrediction.h"
 #include "CommonLib/Unit.h"
 #include "CommonLib/Reshape.h"
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+#include "intra_pred_utils.h"
+#endif
 //! \ingroup DecoderLib
 //! \{
 
@@ -64,7 +67,11 @@ public:
   virtual ~DecCu();
 
   /// initialize access channels
-  void  init              ( TrQuant* pcTrQuant, IntraPrediction* pcIntra, InterPrediction* pcInter );
+  void  init              ( TrQuant* pcTrQuant, IntraPrediction* pcIntra, InterPrediction* pcInter
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                           , std::ofstream* const ptrOfstreamQuadtree
+#endif
+                           );
 
   /// destroy internal buffers
   void  decompressCtu     ( CodingStructure& cs, const UnitArea& ctuArea );
@@ -75,20 +82,31 @@ public:
 
   /// reconstruct Ctu information
 protected:
-  void xIntraRecQT        ( CodingUnit&      cu, const ChannelType chType );
+  void xIntraRecQT        ( CodingUnit&      cu, const ChannelType chType
+                           );
   void xIntraRecACTQT(CodingUnit&      cu);
 
   void xReconInter        ( CodingUnit&      cu );
   void xDecodeInterTexture( CodingUnit&      cu );
-  void xReconIntraQT      ( CodingUnit&      cu );
+  void xReconIntraQT      ( CodingUnit&      cu
+#if JVET_AB0149_INTRA_PRED
+                           , const bool& isEncoderCall
+#endif
+                           );
   void xFillPCMBuffer     ( CodingUnit&      cu );
 
-  void xIntraRecBlk       ( TransformUnit&   tu, const ComponentID compID );
+  void xIntraRecBlk       ( TransformUnit&   tu, const ComponentID compID
+                           );
   void xIntraRecACTBlk(TransformUnit&   tu);
   void xDecodeInterTU     ( TransformUnit&   tu, const ComponentID compID );
 
   void xDeriveCUMV        ( CodingUnit&      cu );
   void xReconPLT          ( CodingUnit&      cu,       ComponentID compBegin, uint32_t numComp );
+  
+#if JVET_AB0149_INTRA_PRED
+  void interpretMpmsLuminance(CodingUnit& cu);
+  void interpretCandidatesChrominance(CodingUnit& cu);
+#endif
   PelStorage        *m_tmpStorageLCU;
 private:
   TrQuant*          m_pcTrQuant;
@@ -99,6 +117,9 @@ private:
   MotionInfo        m_SubPuMiBuf[(MAX_CU_SIZE * MAX_CU_SIZE) >> (MIN_CU_LOG2 << 1)];
 
   MergeCtx          m_geoMrgCtx;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::ofstream* m_ptrOfstreamQuadtree;
+#endif
 };
 
 //! \}
diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp
index b10d764e3447e216f233a0c8d773c93468459abb..67eb2769700d60e7982af10ddef41d888576047f 100644
--- a/source/Lib/DecoderLib/DecLib.cpp
+++ b/source/Lib/DecoderLib/DecLib.cpp
@@ -467,6 +467,16 @@ DecLib::DecLib()
   , m_vps( nullptr )
   , m_maxDecSubPicIdx(0)
   , m_maxDecSliceAddrInSubPic(-1)
+#if JVET_AB0149_INTRA_PRED
+  , m_descriptionPairHeightWidthPathToGraphOutput("")
+  , m_prefixAbsolutePathsToGraphsOutput("")
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  , m_areCostsWritten(false)
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  , m_ptrOfstreamQuadtree(NULL)
+#endif
   , m_clsVPSid(0)
   , m_targetSubPicIdx(0)
   , m_dci(NULL)
@@ -1651,8 +1661,15 @@ void DecLib::xActivateParameterSets( const InputNALUnit nalu )
                    maxDepth,
                    log2SaoOffsetScaleLuma, log2SaoOffsetScaleChroma );
     m_cLoopFilter.create(maxDepth);
-    m_cIntraPred.init( sps->getChromaFormatIdc(), sps->getBitDepth( CHANNEL_TYPE_LUMA ) );
+    m_cIntraPred.init( sps->getChromaFormatIdc()
+#if JVET_AB0149_INTRA_PRED
+                      ,m_descriptionPairHeightWidthPathToGraphOutput,m_prefixAbsolutePathsToGraphsOutput
+#endif
+                      );
     m_cInterPred.init( &m_cRdCost, sps->getChromaFormatIdc(), sps->getMaxCUHeight() );
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    m_CABACDecoder.getCABACReader(0)->setAreCostsWritten(m_areCostsWritten);
+#endif
     if (sps->getUseLmcs())
     {
       m_cReshaper.createDec(sps->getBitDepth(CHANNEL_TYPE_LUMA));
@@ -1692,7 +1709,11 @@ void DecLib::xActivateParameterSets( const InputNALUnit nalu )
     m_SEIs.clear();
 
     // Recursive structure
-    m_cCuDecoder.init( &m_cTrQuant, &m_cIntraPred, &m_cInterPred );
+    m_cCuDecoder.init( &m_cTrQuant, &m_cIntraPred, &m_cInterPred
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                      , m_ptrOfstreamQuadtree
+#endif
+                      );
     if (sps->getUseLmcs())
     {
       m_cCuDecoder.initDecCuReshaper(&m_cReshaper, sps->getChromaFormatIdc());
@@ -2782,10 +2803,27 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl
     m_cReshaper.setCTUFlag(false);
     m_cReshaper.setRecReshaped(false);
   }
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (m_ptrOfstreamQuadtree)
+  {
+    if (m_ptrOfstreamQuadtree->is_open())
+    {
+      *m_ptrOfstreamQuadtree << "GOP of index " << pcSlice->getPOC() << " - Frame of index " << m_apcSlicePilot->getIndependentSliceIdx() << " - Beginning of the partitioning" << std::endl;
+    }
+  }
+#endif
 
   //  Decode a picture
   m_cSliceDecoder.decompressSlice( pcSlice, &( nalu.getBitstream() ), ( m_pcPic->poc == getDebugPOC() ? getDebugCTU() : -1 ) );
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (m_ptrOfstreamQuadtree)
+  {
+    if (m_ptrOfstreamQuadtree->is_open())
+    {
+      *m_ptrOfstreamQuadtree << "GOP of index " << pcSlice->getPOC() << " - Frame of index " << m_apcSlicePilot->getIndependentSliceIdx() << " - End of the partitioning" << std::endl;
+    }
+  }
+#endif
   m_bFirstSliceInPicture = false;
   m_uiSliceSegmentIdx++;
 
diff --git a/source/Lib/DecoderLib/DecLib.h b/source/Lib/DecoderLib/DecLib.h
index bd7a03f17134a9eff65515d6686796cbaa0ec100..3c4e673400402a8c0cf5715714ef0ba723f4d5a5 100644
--- a/source/Lib/DecoderLib/DecLib.h
+++ b/source/Lib/DecoderLib/DecLib.h
@@ -219,6 +219,16 @@ private:
   VPS*                    m_vps;
   int                     m_maxDecSubPicIdx;
   int                     m_maxDecSliceAddrInSubPic;
+#if JVET_AB0149_INTRA_PRED
+  std::string m_descriptionPairHeightWidthPathToGraphOutput;
+  std::string m_prefixAbsolutePathsToGraphsOutput;
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::ofstream* m_ptrOfstreamQuadtree;
+#endif
   int                     m_clsVPSid;
 
 public:
@@ -314,7 +324,17 @@ public:
   {
     m_cTrQuantScalingList.init(nullptr, MAX_TB_SIZEY, false, false, false, false);
   }
-
+#if JVET_AB0149_INTRA_PRED
+  void setDescriptionPairHeightWidthPathToGraphOutput(const std::string& description) {m_descriptionPairHeightWidthPathToGraphOutput = description;}
+  void setPrefixAbsolutePathsToGraphsOutput(const std::string& prefix) {m_prefixAbsolutePathsToGraphsOutput = prefix;}
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setAreCostsWritten(const bool& areCostsWritten) {m_areCostsWritten = areCostsWritten;}
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setPtrOfstreamQuadtree(std::ofstream& ofstreamQuadtree) {m_ptrOfstreamQuadtree = &ofstreamQuadtree;}
+  const Picture* getPicture() const {return m_pcPic;}
+#endif
   void  setAPSMapEnc( ParameterSetMap<APS>* apsMap ) { m_apsMapEnc = apsMap;  }
   bool  isNewPicture( std::ifstream *bitstreamFile, class InputByteStream *bytestream );
   bool  isNewAccessUnit( bool newPicture, std::ifstream *bitstreamFile, class InputByteStream *bytestream );
diff --git a/source/Lib/EncoderLib/CABACWriter.cpp b/source/Lib/EncoderLib/CABACWriter.cpp
index 29d923a8748d5a2b88cff45c3fe4a56f8791d88d..21202e4f490869d5141849d6da6a9e1330eb5327 100644
--- a/source/Lib/EncoderLib/CABACWriter.cpp
+++ b/source/Lib/EncoderLib/CABACWriter.cpp
@@ -1045,7 +1045,24 @@ void CABACWriter::intra_luma_pred_modes( const CodingUnit& cu )
     cu.firstPU->intraDir[0] = cu.bdpcmMode == 2? VER_IDX : HOR_IDX;
     return;
   }
-
+  const PredictionUnit* pu = cu.firstPU;
+#if JVET_AB0149_INTRA_PRED
+  const CompArea& area = pu->Y();
+  const bool is_shape_handled_pnn = decideShapeHandledPnn(area.height,area.width);
+  if (is_shape_handled_pnn)
+  {
+    const uint16_t ctxId = DeriveCtx::CtxPnnLFlag(cu);
+    if (pu->intraDir[CHANNEL_TYPE_LUMA] == PNN_IDX)
+    {
+      m_BinEncoder.encodeBin(1,Ctx::PnnLuminanceFlag(ctxId));
+      return;
+    }
+    else
+    {
+      m_BinEncoder.encodeBin(0,Ctx::PnnLuminanceFlag(ctxId));
+    }
+  }
+#endif
   mip_flag(cu);
   if (cu.mipFlag)
   {
@@ -1058,12 +1075,12 @@ void CABACWriter::intra_luma_pred_modes( const CodingUnit& cu )
 
   const int numMPMs   = NUM_MOST_PROBABLE_MODES;
   const int numBlocks = CU::getNumPUs( cu );
+  CHECK(numBlocks != 1,
+        "There are more than one PU in the current CU.");
   unsigned  mpm_preds   [4][numMPMs];
   unsigned  mpm_idxs    [4];
   unsigned  ipred_modes [4];
 
-  const PredictionUnit* pu = cu.firstPU;
-
   // prev_intra_luma_pred_flag
   for( int k = 0; k < numBlocks; k++ )
   {
@@ -1071,8 +1088,19 @@ void CABACWriter::intra_luma_pred_modes( const CodingUnit& cu )
     unsigned&  mpm_idx    = mpm_idxs[k];
     unsigned&  ipred_mode = ipred_modes[k];
 
-    PU::getIntraMPMs( *pu, mpm_pred );
-
+    PU::getIntraMPMs( *pu, mpm_pred
+#if JVET_AB0149_INTRA_PRED 
+                     , is_shape_handled_pnn
+#endif
+                     );
+#if JVET_AB0149_INTRA_PRED 
+    if (pu->multiRefIdx || !is_shape_handled_pnn)
+    {
+#endif
+      CHECK(mpm_pred[0] != PLANAR_IDX, "`PLANAR` is not the the first MPM.");
+#if JVET_AB0149_INTRA_PRED 
+    }
+#endif
     ipred_mode = pu->intraDir[0];
     mpm_idx    = numMPMs;
     for( unsigned idx = 0; idx < numMPMs; idx++ )
@@ -1104,9 +1132,14 @@ void CABACWriter::intra_luma_pred_modes( const CodingUnit& cu )
     if( mpm_idx < numMPMs )
     {
       {
-        unsigned ctx = (pu->cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0);
         if (pu->multiRefIdx == 0)
-          m_BinEncoder.encodeBin(mpm_idx > 0, Ctx::IntraLumaPlanarFlag(ctx));
+        {
+#if JVET_AB0149_INTRA_PRED 
+          m_BinEncoder.encodeBinEP(mpm_idx > 0);
+#else
+          m_BinEncoder.encodeBin(mpm_idx > 0, Ctx::IntraLumaPlanarFlag(pu->cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0));
+#endif
+        }
         if( mpm_idx )
         {
           m_BinEncoder.encodeBinEP( mpm_idx > 1 );
@@ -1156,6 +1189,30 @@ void CABACWriter::intra_luma_pred_mode( const PredictionUnit& pu )
 {
 
   if( pu.cu->bdpcmMode ) return;
+  unsigned ipred_mode = pu.intraDir[CHANNEL_TYPE_LUMA];
+#if JVET_AB0149_INTRA_PRED
+  const CompArea& area(pu.Y());
+  const bool is_shape_handled_pnn(
+    decideShapeHandledPnn(area.height, area.width)
+  );
+  if (is_shape_handled_pnn)
+  {
+    const uint16_t ctxId = DeriveCtx::CtxPnnLFlag(*pu.cu);
+    if (ipred_mode == PNN_IDX)
+    {
+      m_BinEncoder.encodeBin(1, Ctx::PnnLuminanceFlag(ctxId));
+      return;
+    }
+    else
+    {
+      m_BinEncoder.encodeBin(0, Ctx::PnnLuminanceFlag(ctxId));
+    }
+  }
+  else
+  {
+    CHECK(ipred_mode == PNN_IDX,"`ipred_mode` is equal to `PNN_IDX`.");
+  }
+#endif
   mip_flag(*pu.cu);
   if (pu.cu->mipFlag)
   {
@@ -1169,9 +1226,19 @@ void CABACWriter::intra_luma_pred_mode( const PredictionUnit& pu )
   const int numMPMs  = NUM_MOST_PROBABLE_MODES;
   unsigned  mpm_pred[numMPMs];
 
-  PU::getIntraMPMs( pu, mpm_pred );
-
-  unsigned ipred_mode = pu.intraDir[0];
+  PU::getIntraMPMs( pu, mpm_pred
+#if JVET_AB0149_INTRA_PRED 
+                   , is_shape_handled_pnn
+#endif
+                   );
+#if JVET_AB0149_INTRA_PRED 
+  if (pu.multiRefIdx || !is_shape_handled_pnn)
+  {
+#endif
+    CHECK(mpm_pred[0] != PLANAR_IDX, "`PLANAR` is not the first MPM.");
+#if JVET_AB0149_INTRA_PRED 
+  }
+#endif
   unsigned mpm_idx = numMPMs;
 
   for( int idx = 0; idx < numMPMs; idx++ )
@@ -1195,9 +1262,14 @@ void CABACWriter::intra_luma_pred_mode( const PredictionUnit& pu )
   if( mpm_idx < numMPMs )
   {
     {
-      unsigned ctx = (pu.cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0);
       if (pu.multiRefIdx == 0)
-        m_BinEncoder.encodeBin( mpm_idx > 0, Ctx::IntraLumaPlanarFlag(ctx) );
+      {
+#if JVET_AB0149_INTRA_PRED 
+        m_BinEncoder.encodeBinEP(mpm_idx > 0);
+#else
+        m_BinEncoder.encodeBin(mpm_idx > 0, Ctx::IntraLumaPlanarFlag(pu.cu->ispMode == NOT_INTRA_SUBPARTITIONS ? 1 : 0));
+#endif
+      }
       if( mpm_idx )
       {
         m_BinEncoder.encodeBinEP( mpm_idx > 1 );
@@ -1294,8 +1366,28 @@ void CABACWriter::intra_chroma_pred_mode(const PredictionUnit& pu)
       return;
     }
   }
-
-  const bool     isDerivedMode = intraDir == DM_CHROMA_IDX;
+#if JVET_AB0149_INTRA_PRED 
+  const bool is_shape_handled_pnn(
+    decideShapeHandledPnn(pu.Cb().height,pu.Cb().width)
+  );
+  const bool is_dm_pnn(
+  getIntraDirLumaSubstitutePnn(
+    PU::getCoLocatedIntraLumaMode(pu), pu.Cb().height, pu.Cb().width) == PNN_IDX
+  );
+  if (is_shape_handled_pnn && !is_dm_pnn)
+  {
+    if (pu.intraDir[CHANNEL_TYPE_CHROMA] == PNN_IDX)
+    {
+      m_BinEncoder.encodeBin(1, Ctx::PnnChrominanceFlag(0));
+      return;
+    }
+    else
+    {
+      m_BinEncoder.encodeBin(0, Ctx::PnnChrominanceFlag(0));
+    }
+  }
+#endif
+  const bool isDerivedMode = intraDir == DM_CHROMA_IDX;
   m_BinEncoder.encodeBin(isDerivedMode ? 0 : 1, Ctx::IntraChromaPredMode(0));
   if (isDerivedMode)
   {
@@ -2819,10 +2911,22 @@ void CABACWriter::residual_lfnst_mode( const CodingUnit& cu, CUCtx& cuCtx )
         }
       }
     }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    bool isReturnedSpecial = nonZeroCoeffNonTsCorner8x8 || isTrSkip;
+    if (!m_areCostsWritten)
+    {
+      isReturnedSpecial |= !cuCtx.lfnstLastScanPos && !cu.ispMode;
+    }
+    if (isReturnedSpecial)
+    {
+      return;
+    }
+#else
     if( (!cuCtx.lfnstLastScanPos && !cu.ispMode) || nonZeroCoeffNonTsCorner8x8 || isTrSkip )
     {
       return;
     }
+#endif
   }
   else
   {
@@ -2840,6 +2944,20 @@ void CABACWriter::residual_lfnst_mode( const CodingUnit& cu, CUCtx& cuCtx )
   if( idxLFNST )
   {
     m_BinEncoder.encodeBin( (idxLFNST - 1) ? 1 : 0, Ctx::LFNSTIdx(2));
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+    const uint32_t intraMode = PU::getFinalIntraMode(*cu.firstPU, cu.chType);
+    if (intraMode == PNN_IDX) {
+      CHECK(cu.idxLfnstPnn < 0 || cu.idxLfnstPnn > DEPTH_LFNST_GROUP - 1, "`cu.idxLfnstPnn` does not belong to [|0, 6|].");
+      uint32_t maxSymbol = DEPTH_LFNST_GROUP;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      if (m_areCostsWritten)
+      {
+        maxSymbol = 8;
+      }
+#endif
+      xWriteTruncBinCode(cu.idxLfnstPnn, maxSymbol);
+    }
+#endif
   }
 
   DTRACE( g_trace_ctx, D_SYNTAX, "residual_lfnst_mode() etype=%d pos=(%d,%d) mode=%d\n", COMPONENT_Y, cu.lx(), cu.ly(), ( int ) cu.lfnstIdx );
diff --git a/source/Lib/EncoderLib/CABACWriter.h b/source/Lib/EncoderLib/CABACWriter.h
index e4182ed12a69fd5d6bdbd3d91f00f7be64be2a5a..dbdb6f95f2c43dc8548afd9e0ae807758a3b58c3 100644
--- a/source/Lib/EncoderLib/CABACWriter.h
+++ b/source/Lib/EncoderLib/CABACWriter.h
@@ -51,7 +51,11 @@ class EncCu;
 class CABACWriter
 {
 public:
-  CABACWriter(BinEncIf& binEncoder)   : m_BinEncoder(binEncoder), m_Bitstream(0) { m_TestCtx = m_BinEncoder.getCtx(); m_EncCu = NULL; }
+  CABACWriter(BinEncIf& binEncoder)   : m_BinEncoder(binEncoder), m_Bitstream(0)
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  , m_areCostsWritten(false)
+#endif
+  { m_TestCtx = m_BinEncoder.getCtx(); m_EncCu = NULL; }
   virtual ~CABACWriter() {}
 
 public:
@@ -163,6 +167,9 @@ public:
   void        codeAlfCtuAlternative      ( CodingStructure& cs, uint32_t ctuRsAddr, const int compIdx, const AlfParam* alfParam = NULL );
   void codeCcAlfFilterControlIdc(uint8_t idcVal, CodingStructure &cs, const ComponentID compID, const int curIdx,
                                  const uint8_t *filterControlIdc, Position lumaPos, const int filterCount);
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setAreCostsWritten(const bool& areCostsWritten) {m_areCostsWritten = areCostsWritten;}
+#endif
 
 #if NN_FILTERING_SET_0
   void        codeCnnlfCtuEnableFlag(CodingStructure& cs, uint32_t ctuRsAddr, const int compIdx, CnnlfSliceParam* cnnlfParam = NULL);
@@ -191,6 +198,9 @@ private:
   Ctx               m_TestCtx;
   EncCu*            m_EncCu;
   ScanElement*      m_scanOrder;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
 };
 
 
diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h
index feb426be5c382c1975658c85eb35a2affbd2ddd7..016d0fad20876f2e0b47819058a611ec655205f5 100644
--- a/source/Lib/EncoderLib/EncCfg.h
+++ b/source/Lib/EncoderLib/EncCfg.h
@@ -799,9 +799,34 @@ protected:
   int         m_upscaledOutput;
   int         m_numRefLayers[MAX_VPS_LAYERS];
   bool        m_avoidIntraInDepLayer;
+#if JVET_AB0149_INTRA_PRED
+  std::string m_descriptionPairHeightWidthPathToGraphOutput;
+  std::string m_prefixAbsolutePathsToGraphsOutput;
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areCostsWritten;
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::ofstream* m_ptrOfstreamQuadtree;
+  std::string m_pathToFileLOriginal;
+  std::string m_pathToFileLReconstructed;
+#endif
 
 public:
-  EncCfg()
+  EncCfg() :
+    m_intraSmoothingDisabledFlag(false)
+#if JVET_AB0149_INTRA_PRED
+    , m_descriptionPairHeightWidthPathToGraphOutput("")
+    , m_prefixAbsolutePathsToGraphsOutput("")
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    , m_areCostsWritten(false)
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    , m_ptrOfstreamQuadtree(NULL)
+    , m_pathToFileLOriginal("")
+    , m_pathToFileLReconstructed("")
+#endif
   {
   }
 
@@ -2062,6 +2087,24 @@ public:
 
   const CfgVPSParameters& getVPSParameters() const                                  { return m_cfgVPSParameters; }
   void                    setVPSParameters(const CfgVPSParameters& cfg)             { m_cfgVPSParameters = cfg; }
+#if JVET_AB0149_INTRA_PRED
+  void setDescriptionPairHeightWidthPathToGraphOutput(const std::string& description) {m_descriptionPairHeightWidthPathToGraphOutput = description;}
+  void setPrefixAbsolutePathsToGraphsOutput(const std::string& prefix) {m_prefixAbsolutePathsToGraphsOutput = prefix;}
+  std::string getDescriptionPairHeightWidthPathToGraphOutput() const {return m_descriptionPairHeightWidthPathToGraphOutput;}
+  std::string getPrefixAbsolutePathsToGraphsOutput() const {return m_prefixAbsolutePathsToGraphsOutput;}
+#if JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setAreCostsWritten(const bool& areCostsWritten) {m_areCostsWritten = areCostsWritten;}
+  bool getAreCostsWritten() const {return m_areCostsWritten;}
+#endif
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void setPtrOfstreamQuadtree(std::ofstream& ofstreamQuadtree) {m_ptrOfstreamQuadtree = &ofstreamQuadtree;}
+  std::ofstream& getOfstreamQuadtree() const {return *m_ptrOfstreamQuadtree;}
+  void setPathToFileLOriginal(const std::string& pathToFileLOriginal) {m_pathToFileLOriginal = pathToFileLOriginal;}
+  std::string getPathToFileLOriginal() const {return m_pathToFileLOriginal;}
+  void setPathToFileLReconstructed(const std::string& pathToFileLReconstructed) {m_pathToFileLReconstructed = pathToFileLReconstructed;}
+  std::string getPathToFileLReconstructed() const {return m_pathToFileLReconstructed;}
+#endif
 };
 
 //! \}
diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp
index 77f2e285e313a987019023118fd349ffb3730936..cea3f9d7d02736c1a2b0d4815cdf824cea12711a 100644
--- a/source/Lib/EncoderLib/EncCu.cpp
+++ b/source/Lib/EncoderLib/EncCu.cpp
@@ -242,7 +242,11 @@ void EncCu::init( EncLib* pcEncLib, const SPS& sps PARL_PARAM( const int tId ) )
   m_GeoCostList.init(GEO_NUM_PARTITION_MODE, m_pcEncCfg->getMaxNumGeoCand());
   m_AFFBestSATDCost = MAX_DOUBLE;
 
-  DecCu::init( m_pcTrQuant, m_pcIntraSearch, m_pcInterSearch );
+  DecCu::init( m_pcTrQuant, m_pcIntraSearch, m_pcInterSearch
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              , NULL
+#endif
+              );
 
   m_modeCtrl->init( m_pcEncCfg, m_pcRateCtrl, m_pcRdCost );
 
@@ -1762,6 +1766,30 @@ void EncCu::xCheckCnnlf(CodingStructure& cs, UnitArea unitArea)
 
 bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &partitioner, const EncTestMode& encTestMode, bool adaptiveColorTrans)
 {
+#if JVET_AB0149_INTRA_PRED
+  m_pcIntraSearch->setIsAlreadyComputedPnnRd(false,CHANNEL_TYPE_LUMA);m_pcIntraSearch->setIsAlreadyComputedPnnRd(false,CHANNEL_TYPE_CHROMA);m_pcTrQuant->setIsAlreadyComputedTrPnn(false,COMPONENT_Y);m_pcTrQuant->setIsAlreadyComputedTrPnn(false,COMPONENT_Cb);m_pcTrQuant->setIsAlreadyComputedTrPnn(false,COMPONENT_Cr);
+#if JVET_AB0149_TM_INF_PNN
+  m_pcIntraSearch->resetIdxPredictedLfnstPnnMemories();
+#endif
+  m_pcIntraSearch->resetIdxRepresentationPnnMemories();
+  m_pcIntraSearch->setIsModeIsEnableUpdated(false);
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  if (isLuma(partitioner.chType) && m_pcEncCfg->getOfstreamQuadtree().is_open())
+  {
+    m_pcIntraSearch->resetSsdsLumaMemories();
+    m_pcIntraSearch->resetSatdsLumaMemories();
+#if JVET_AB0149_INTRA_PRED
+    m_pcIntraSearch->resetMeasuresLumaPnnMemories();
+#endif
+  }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+  if (m_pcEncCfg->getAreCostsWritten())
+  {
+    m_pcIntraSearch->resetCostsLfnstPnnMemories();
+  }
+#endif
+#endif
   double          bestInterCost             = m_modeCtrl->getBestInterCost();
   double          costSize2Nx2NmtsFirstPass = m_modeCtrl->getMtsSize2Nx2NFirstPassCost();
   bool            skipSecondMtsPass         = m_modeCtrl->getSkipSecondMTSPass();
@@ -1792,6 +1820,9 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
   bool       skipOtherLfnst      = false;
   int        startLfnstIdx       = 0;
   int        endLfnstIdx         = sps.getUseLFNST() ? maxLfnstIdx : 0;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+  bool isTriggeredHeuristicInter=false;
+#endif
 
   int grpNumMax = sps.getUseLFNST() ? m_pcEncCfg->getMTSIntraMaxCand() : 1;
   m_modeCtrl->setISPWasTested(false);
@@ -1821,6 +1852,12 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
     {
       for( int lfnstIdx = startLfnstIdx; lfnstIdx <= endLfnstIdx; lfnstIdx++ )
       {
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+        int idxLfnstPnnEnd = lfnstIdx ? DEPTH_LFNST_GROUP : 1;
+        isTriggeredHeuristicInter = false;
+        for (uint8_t idxLfnstPnn = 0; idxLfnstPnn < idxLfnstPnnEnd; idxLfnstPnn++)
+        {
+#endif
         for( uint8_t mtsFlag = startMtsFlag; mtsFlag <= endMtsFlag; mtsFlag++ )
         {
           if (sps.getUseColorTrans() && !CS::isDualITree(*tempCS))
@@ -1850,6 +1887,9 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
           cu.chromaQpAdj      = m_cuChromaQpOffsetIdxPlus1;
           cu.qp               = encTestMode.qp;
           cu.lfnstIdx         = lfnstIdx;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+          cu.idxLfnstPnn = idxLfnstPnn;
+#endif
           cu.mtsFlag          = mtsFlag;
           cu.ispMode          = NOT_INTRA_SUBPARTITIONS;
           cu.colorTransform = adaptiveColorTrans;
@@ -1869,9 +1909,32 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
             {
               bestCostSoFar = encTestMode.maxCostAllowed;
             }
-            validCandRet = m_pcIntraSearch->estIntraPredLumaQT(cu, partitioner, bestCostSoFar, mtsFlag, startMTSIdx[trGrpIdx], endMTSIdx[trGrpIdx], (trGrpIdx > 0), !cu.colorTransform ? bestCS : nullptr);
-            if ((!validCandRet || (cu.ispMode && cu.firstTU->cbf[COMPONENT_Y] == 0)))
+            validCandRet = m_pcIntraSearch->estIntraPredLumaQT(cu,
+                                                               partitioner
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                                                               , isTriggeredHeuristicInter
+#endif
+                                                               , bestCostSoFar, mtsFlag, startMTSIdx[trGrpIdx], endMTSIdx[trGrpIdx], trGrpIdx > 0, !cu.colorTransform ? bestCS : nullptr);
+            if (!validCandRet)
+            {
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+              if (isTriggeredHeuristicInter)
+              {
+                CHECK(tempCS->slice->isIntra(),"The heuristic in inter at the end of the fast search in luminance is activated for a I-slice.");
+                idxLfnstPnnEnd = 1;
+              }
+#endif
+              continue;
+            }
+              
+            /*
+            The condition `!validCandRet || cu.ispMode && cu.firstTU->cbf[COMPONENT_Y] == 0`
+            in the original code was split into two conditions.
+            */
+            if (cu.ispMode && cu.firstTU->cbf[COMPONENT_Y] == 0)
             {
+                
+              // `continue` acts on the loop iterating over `mtsFlag`.
               continue;
             }
             if (m_pcEncCfg->getUseFastISP() && validCandRet && !mtsFlag && !lfnstIdx && !cu.colorTransform)
@@ -1930,7 +1993,19 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
           if( tempCS->area.chromaFormat != CHROMA_400 && ( partitioner.chType == CHANNEL_TYPE_CHROMA || !cu.isSepTree() ) && !cu.colorTransform )
           {
             TUIntraSubPartitioner subTuPartitioner( partitioner );
-            m_pcIntraSearch->estIntraPredChromaQT( cu, ( !useIntraSubPartitions || ( cu.isSepTree() && !isLuma( CHANNEL_TYPE_CHROMA ) ) ) ? partitioner : subTuPartitioner, maxCostAllowedForChroma );
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+            validCandRet = m_pcIntraSearch->estIntraPredChromaQT(cu, !useIntraSubPartitions || cu.isSepTree() ? partitioner : subTuPartitioner, maxCostAllowedForChroma);
+            if (!validCandRet)
+            {
+
+              // `continue` acts on the loop iterating over `mtsFlag`.
+              continue;
+            }
+#else
+            m_pcIntraSearch->estIntraPredChromaQT(cu,
+                                                  !useIntraSubPartitions || cu.isSepTree() ? partitioner : subTuPartitioner,
+                                                  maxCostAllowedForChroma);
+#endif
             if( useIntraSubPartitions && !cu.ispMode )
             {
               //At this point the temp cost is larger than the best cost. Therefore, we can already skip the remaining calculations
@@ -1979,7 +2054,10 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
 
           xCheckDQP( *tempCS, partitioner );
           xCheckChromaQPOffset( *tempCS, partitioner );
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+          if (!m_pcEncCfg->getAreCostsWritten())
+          {
+#endif
           // Check if low frequency non-separable transform (LFNST) is too expensive
           if( lfnstIdx && !cuCtx.lfnstLastScanPos && !cu.ispMode )
           {
@@ -1994,6 +2072,9 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
               tmpCostWithoutSplitFlags = MAX_DOUBLE;
             }
           }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+          }
+#endif
 
           if (isLuma(partitioner.chType) && cu.firstTU->mtsIdx[COMPONENT_Y] > MTS_SKIP)
           {
@@ -2015,12 +2096,21 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
           }
 
           if( !mtsFlag ) static_cast< double& >( costSize2Nx2NmtsFirstPass ) = tempCS->cost;
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+          if (!idxLfnstPnn
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              && !m_pcEncCfg->getAreCostsWritten()
+#endif
+             )
+          {
+#endif
           if( sps.getUseLFNST() && !tempCS->cus.empty() )
           {
             skipOtherLfnst = m_modeCtrl->checkSkipOtherLfnst( encTestMode, tempCS, partitioner );
           }
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+          }
+#endif
           xCalDebCost( *tempCS, partitioner );
           tempCS->useDbCost = m_pcEncCfg->getUseEncDbOpt();
 
@@ -2051,6 +2141,10 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
               bestSelFlag  [ trGrpIdx ] = true;
               bestMtsFlag               = mtsFlag;
               bestLfnstIdx              = lfnstIdx;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              if (!m_pcEncCfg->getAreCostsWritten())
+              {
+#endif
               if( bestCS->cus.size() == 1 )
               {
                 CodingUnit &cu = *bestCS->cus.front();
@@ -2062,8 +2156,14 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
                   }
                 }
               }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              }
+#endif
             }
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+            if (!idxLfnstPnn)
+            {
+#endif
             //we decide to skip the non-DCT-II transforms and LFNST according to the ISP results
             if ((endMtsFlag > 0 || endLfnstIdx > 0) && (cu.ispMode || (bestCS && bestCS->cus[0]->ispMode)) && tempCS->slice->isIntra() && m_pcEncCfg->getUseFastISP())
             {
@@ -2075,7 +2175,14 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
               double lfnstThreshold = 1.01 * threshold;
               if( m_modeCtrl->getStopNonDCT2Transforms() || bestCostDct2NoIsp > bestIspCost*lfnstThreshold )
               {
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                if (!m_pcEncCfg->getAreCostsWritten())
+                {
+#endif
                 endLfnstIdx = lfnstIdx;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                }
+#endif
               }
 
               if ( m_modeCtrl->getStopNonDCT2Transforms() || bestCostDct2NoIsp > bestIspCost*threshold )
@@ -2096,15 +2203,28 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
                 break;
               }
             }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+            }
+#endif
           }
-
         } //for emtCuFlag
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+        if (!idxLfnstPnn
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+            && !m_pcEncCfg->getAreCostsWritten()
+#endif
+            )
+        {
+#endif
         if( skipOtherLfnst )
         {
           startLfnstIdx = lfnstIdx;
           endLfnstIdx   = lfnstIdx;
-          break;
         }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+        }
+        }
+#endif
       } //for lfnstIdx
     } //if (!skipSecondMtsPass && considerMtsSecondPass && trGrpCheck[iGrpIdx])
 
@@ -2119,6 +2239,23 @@ bool EncCu::xCheckRDCostIntra(CodingStructure *&tempCS, CodingStructure *&bestCS
       }
     }
   } //trGrpIdx
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  CodingUnit* currentBestCu = bestCS->getCU(partitioner.chType);
+  CHECK(!currentBestCu,"`currentBestCu` is NULL.");
+  if (isLuma(partitioner.chType) && m_pcEncCfg->getOfstreamQuadtree().is_open())
+  {
+    m_pcIntraSearch->transferSsdsLumaMemories(*currentBestCu->firstPU);m_pcIntraSearch->transferSatdsLumaMemories(*currentBestCu->firstPU);
+#if JVET_AB0149_INTRA_PRED
+    m_pcIntraSearch->transferMeasuresLumaPnnMemories(*currentBestCu->firstPU);
+#endif
+  }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+  if (m_pcEncCfg->getAreCostsWritten())
+  {
+    m_pcIntraSearch->transferCostsLfnstPnnMemories(*currentBestCu->firstPU);
+  }
+#endif
+#endif
   if(!adaptiveColorTrans)
   m_modeCtrl->setBestNonDCT2Cost(bestNonDCT2Cost);
   return foundZeroRootCbf;
@@ -2665,15 +2802,30 @@ void EncCu::xCheckRDCostMerge2Nx2N( CodingStructure *&tempCS, CodingStructure *&
 
           // estimate merge bits
           mergeCtx.setMergeInfo(pu, mergeCand);
-
-          // first round
+#if JVET_AB0149_INTRA_PRED
+          bool is_context_extracted = false;
+#endif
           pu.intraDir[0] = PLANAR_IDX;
           uint32_t intraCnt = 0;
           // generate intrainter Y prediction
           if (mergeCnt == 0)
           {
-            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Y());
-            m_pcIntraSearch->predIntraAng(COMPONENT_Y, pu.cs->getPredBuf(pu).Y(), pu);
+#if JVET_AB0149_INTRA_PRED
+            bool contextFlag = false;
+#endif
+            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Y()
+#if JVET_AB0149_INTRA_PRED
+                                                    , contextFlag, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                                    , false
+#endif
+                                                    );
+            m_pcIntraSearch->predIntraAng(COMPONENT_Y, pu.cs->getPredBuf(pu).Y(), pu
+#if JVET_AB0149_INTRA_PRED
+                                          , contextFlag
+#endif
+                                          );
             m_pcIntraSearch->switchBuffer(pu, COMPONENT_Y, pu.cs->getPredBuf(pu).Y(), m_pcIntraSearch->getPredictorPtr2(COMPONENT_Y, intraCnt));
           }
           pu.cs->getPredBuf(pu).copyFrom(acMergeTmpBuffer[mergeCand]);
@@ -2773,13 +2925,41 @@ void EncCu::xCheckRDCostMerge2Nx2N( CodingStructure *&tempCS, CodingStructure *&
             pu.intraDir[1] = DM_CHROMA_IDX;
             if (pu.chromaSize().width == 2)
               continue;
+#if JVET_AB0149_INTRA_PRED
+            bool is_context_extracted = false;
+#endif
             uint32_t bufIdx = 0;
-            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Cb());
-            m_pcIntraSearch->predIntraAng(COMPONENT_Cb, pu.cs->getPredBuf(pu).Cb(), pu);
+#if JVET_AB0149_INTRA_PRED
+            bool contextFlag = false;
+#endif
+            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Cb()
+#if JVET_AB0149_INTRA_PRED
+                                                    , contextFlag, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                                    , false
+#endif
+                                                    );
+            m_pcIntraSearch->predIntraAng(COMPONENT_Cb, pu.cs->getPredBuf(pu).Cb(), pu
+#if JVET_AB0149_INTRA_PRED
+                                          , contextFlag
+#endif
+                                          );
             m_pcIntraSearch->switchBuffer(pu, COMPONENT_Cb, pu.cs->getPredBuf(pu).Cb(), m_pcIntraSearch->getPredictorPtr2(COMPONENT_Cb, bufIdx));
 
-            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Cr());
-            m_pcIntraSearch->predIntraAng(COMPONENT_Cr, pu.cs->getPredBuf(pu).Cr(), pu);
+            m_pcIntraSearch->initIntraPatternChType(*pu.cu, pu.Cr()
+#if JVET_AB0149_INTRA_PRED
+                                                    , contextFlag, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                                    , false
+#endif
+                                                    );
+            m_pcIntraSearch->predIntraAng(COMPONENT_Cr, pu.cs->getPredBuf(pu).Cr(), pu
+#if JVET_AB0149_INTRA_PRED
+                                          , contextFlag
+#endif
+                                          );
             m_pcIntraSearch->switchBuffer(pu, COMPONENT_Cr, pu.cs->getPredBuf(pu).Cr(), m_pcIntraSearch->getPredictorPtr2(COMPONENT_Cr, bufIdx));
           }
         }
@@ -4834,7 +5014,11 @@ void EncCu::xReuseCachedResult( CodingStructure *&tempCS, CodingStructure *&best
     || CU::isPLT(cu)
     )
     {
-      xReconIntraQT( cu );
+      xReconIntraQT( cu
+#if JVET_AB0149_INTRA_PRED
+                    , true
+#endif
+                    );
     }
     else
     {
diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp
index d2bd5f5693b434bf0479a1c04700d4093f2c6197..609e63118a3bda676a21feaf4a70c917070cce2f 100644
--- a/source/Lib/EncoderLib/EncGOP.cpp
+++ b/source/Lib/EncoderLib/EncGOP.cpp
@@ -2910,10 +2910,31 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic,
           clipMv = clipMvInPic;
           m_pcEncLib->getInterSearch()->setClipMvInSubPic(false);
         }
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        const std::string pathToFileLOriginal = m_pcEncLib->getPathToFileLOriginal();
+        if (!pathToFileLOriginal.empty() && pcSlice->getPOC() == 0)
+        {
+          m_fileLOriginal.open(pathToFileLOriginal,true,m_pcEncLib->getBitDepth(),m_pcEncLib->getBitDepth(),m_pcEncLib->getBitDepth());
+          const Window& conf = pcPic->getConformanceWindow();
+          m_fileLOriginal.write(pcPic->getOrigBuf(COMPONENT_Y).width,pcPic->getOrigBuf(COMPONENT_Y).height,pcPic->getOrigBuf(),IPCOLOURSPACE_UNCHANGED,false,conf.getWindowLeftOffset()*SPS::getWinUnitX(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowRightOffset()*SPS::getWinUnitX(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowTopOffset()*SPS::getWinUnitY(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowBottomOffset()*SPS::getWinUnitY(pcPic->cs->sps->getChromaFormatIdc()),NUM_CHROMA_FORMAT,false);
+          m_fileLOriginal.close();
+        }
+#endif
         m_pcSliceEncoder->precompressSlice( pcPic );
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        std::ofstream& refOfstreamQuadtree = m_pcCfg->getOfstreamQuadtree();
+        if (refOfstreamQuadtree.is_open())
+        {
+          refOfstreamQuadtree << "GOP of index " << pcSlice->getPOC() << " - Frame of index " << sliceIdx << " - Beginning of the partitioning" << std::endl;
+        }
+#endif
         m_pcSliceEncoder->compressSlice   ( pcPic, false, false );
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        if (refOfstreamQuadtree.is_open())
+        {
+          refOfstreamQuadtree << "GOP of index " << pcSlice->getPOC() << " - Frame of index " << sliceIdx << " - End of the partitioning" << std::endl;
+        }
+#endif
         if(sliceIdx < pcPic->cs->pps->getNumSlicesInPic() - 1)
         {
           uint32_t independentSliceIdx = pcSlice->getIndependentSliceIdx();
@@ -2934,7 +2955,16 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic,
 
       CodingStructure& cs = *pcPic->cs;
       pcSlice = pcPic->slices[0];
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      const std::string pathToFileLReconstructed = m_pcEncLib->getPathToFileLReconstructed();
+      if (!pathToFileLReconstructed.empty() && pcSlice->getPOC() == 0)
+      {
+        m_fileLReconstructed.open(pathToFileLReconstructed,true,m_pcEncLib->getBitDepth(),m_pcEncLib->getBitDepth(),m_pcEncLib->getBitDepth());
+        const Window& conf = pcPic->getConformanceWindow();
+        m_fileLReconstructed.write(pcPic->getRecoBuf(COMPONENT_Y).width,pcPic->getRecoBuf(COMPONENT_Y).height,pcPic->getRecoBuf(),IPCOLOURSPACE_UNCHANGED,false,conf.getWindowLeftOffset()*SPS::getWinUnitX(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowRightOffset()*SPS::getWinUnitX(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowTopOffset()*SPS::getWinUnitY(pcPic->cs->sps->getChromaFormatIdc()),conf.getWindowBottomOffset()*SPS::getWinUnitY(pcPic->cs->sps->getChromaFormatIdc()),NUM_CHROMA_FORMAT,false);
+        m_fileLReconstructed.close();
+      }
+#endif
       if (cs.sps->getUseLmcs() && m_pcReshaper->getSliceReshaperInfo().getUseSliceReshaper())
       {
         picHeader->setLmcsEnabledFlag(true);
diff --git a/source/Lib/EncoderLib/EncGOP.h b/source/Lib/EncoderLib/EncGOP.h
index ecd77be4d79fe5c29df315aa003b6cef1b161e7f..f6cc19ed03339caabe9cd078fd73f038a3bf562b 100644
--- a/source/Lib/EncoderLib/EncGOP.h
+++ b/source/Lib/EncoderLib/EncGOP.h
@@ -61,7 +61,9 @@
 #include "RateCtrl.h"
 #include <vector>
 #include "EncHRD.h"
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+#include "Utilities/VideoIOYuv.h"
+#endif
 #if JVET_O0756_CALCULATE_HDRMETRICS
 #include "HDRLib/inc/ConvertColorFormat.H"
 #include "HDRLib/inc/Convert.H"
@@ -199,6 +201,10 @@ private:
   bool                    m_bInitAMaxBT;
 
   AUWriterIf*             m_AUWriterIf;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  VideoIOYuv m_fileLOriginal;
+  VideoIOYuv m_fileLReconstructed;
+#endif
 
 #if JVET_O0756_CALCULATE_HDRMETRICS
 
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index 03481b3f7e11ac827367372276d684bf80ff497a..2421b93953bc56f3f039d291002c90f25e84e345 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -453,6 +453,10 @@ void EncLib::init( bool isFieldCoding, AUWriterIf* auWriterIf )
 
   // initialize encoder search class
   CABACWriter* cabacEstimator = m_CABACEncoder.getCABACEstimator(&sps0);
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  cabacEstimator->setAreCostsWritten(m_areCostsWritten);
+  m_CABACEncoder.getCABACWriter(&sps0)->setAreCostsWritten(m_areCostsWritten);
+#endif
   m_cIntraSearch.init( this,
                        &m_cTrQuant,
                        &m_cRdCost,
diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp
index babb8b516f33e7a4e0b781abfeac4768e4437609..f9f828752c3281dea130af2e405b3422de1b0ecb 100644
--- a/source/Lib/EncoderLib/EncSlice.cpp
+++ b/source/Lib/EncoderLib/EncSlice.cpp
@@ -1468,6 +1468,216 @@ void EncSlice::setJointCbCrModes( CodingStructure& cs, const Position topLeftLum
   cs.picHeader->setJointCbCrSignFlag( sgnFlag );
 }
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+template <typename T>
+int is_equal_row_in_array_2d(const T* const ptr_array_2d,const int& height_array,const int& width_array,bool& is_equal_row)
+{
+    bool is_equal_single_row = true;
+    is_equal_row = false;
+    for (int i = 0; i < height_array; i++)
+    {
+        is_equal_single_row = true;
+        for (int j = 1; j < width_array; j++)
+        {
+            if (ptr_array_2d[i*width_array + j] != ptr_array_2d[i*width_array])
+            {
+                is_equal_single_row = false;
+            }
+        }
+        if (is_equal_single_row)
+        {
+            is_equal_row = true;
+        }
+    }
+    return 0;
+}
+
+void writeCharacteristicsTuInCuIntra(const TransformUnit& tu,const ChannelType& chType,std::ofstream& refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                                     , const bool& areWrittenDone
+#endif
+                                     )
+{
+  const CodingUnit& cu = *tu.cu;
+  CHECK(!CU::isIntra(cu),"`writeCharacteristicsTuInCu` is not called for a CU predicted in intra.");
+  if (isLuma(chType))
+  {
+    if (!tu.blocks[COMPONENT_Y].valid())
+    {
+      return;
+    }
+  }
+  else
+  {
+    if (!tu.blocks[COMPONENT_Cb].valid() || !tu.blocks[COMPONENT_Cr].valid())
+    {
+      return;
+    }
+  }
+  const PredictionUnit& pu = *cu.firstPU;
+  const uint32_t uiIntraMode = PU::getFinalIntraMode(pu,chType);
+  if (isLuma(chType))
+  {
+    refOfstreamQuadtree << "channel index 0; ";refOfstreamQuadtree << "block size " << tu.lwidth() << "x" << tu.lheight() << "; ";refOfstreamQuadtree << "block position (" << tu.lx() << ", " << tu.ly() << "); ";refOfstreamQuadtree << "intra prediction mode index " << uiIntraMode << "; ";refOfstreamQuadtree << "MIP flag " << cu.mipFlag << "; ";refOfstreamQuadtree << "depth of the TB relatively to its CB " << (cu.firstTU != cu.lastTU) << "; ";refOfstreamQuadtree << "flag of splitting the CB into 4 PBs 0; ";refOfstreamQuadtree << "LFNST indices (" << cu.lfnstIdx << ", ";
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+    if (uiIntraMode == PNN_IDX && cu.lfnstIdx)
+    {
+      refOfstreamQuadtree << cu.idxLfnstPnn;
+    }
+#endif
+    refOfstreamQuadtree << "); ";
+    uint32_t i = 0;
+    refOfstreamQuadtree << "indices best modes SSDs regular ";
+    for (i = 0; i < pu.arrayPairsIdxSsdLumaRegular.size(); i++)
+    {
+      refOfstreamQuadtree << static_cast<int>(pu.arrayPairsIdxSsdLumaRegular[i].first);
+      if (i < pu.arrayPairsIdxSsdLumaRegular.size() - 1)
+      {
+        refOfstreamQuadtree << " | ";
+      }
+    }
+    refOfstreamQuadtree << "; ";
+    refOfstreamQuadtree << "intra prediction SSDs regular ";
+    for (i = 0; i < pu.arrayPairsIdxSsdLumaRegular.size(); i++)
+    {
+      refOfstreamQuadtree << pu.arrayPairsIdxSsdLumaRegular[i].second;
+      if (i < pu.arrayPairsIdxSsdLumaRegular.size() - 1)
+      {
+        refOfstreamQuadtree << " | ";
+      }
+    }
+    refOfstreamQuadtree << "; ";
+#if JVET_AB0149_INTRA_PRED
+    refOfstreamQuadtree << "intra prediction SSD PNN " << pu.ssdLumaPnn << "; ";
+#endif
+    refOfstreamQuadtree << "indices best modes SATDs regular ";
+    for (i = 0; i < pu.arrayPairsIdxSatdLumaRegular.size(); i++)
+    {
+      refOfstreamQuadtree << static_cast<int>(pu.arrayPairsIdxSatdLumaRegular[i].first);
+      if (i < pu.arrayPairsIdxSatdLumaRegular.size() - 1)
+      {
+        refOfstreamQuadtree << " | ";
+      }
+    }
+    refOfstreamQuadtree << "; ";
+    refOfstreamQuadtree << "intra prediction SATDs regular ";
+    for (i = 0; i < pu.arrayPairsIdxSatdLumaRegular.size(); i++)
+    {
+      refOfstreamQuadtree << pu.arrayPairsIdxSatdLumaRegular[i].second;
+      if (i < pu.arrayPairsIdxSatdLumaRegular.size() - 1)
+      {
+        refOfstreamQuadtree << " | ";
+      }
+    }
+    refOfstreamQuadtree << "; ";
+#if JVET_AB0149_INTRA_PRED
+    refOfstreamQuadtree << "intra prediction SATD PNN " << pu.satdLumaPnn << "; ";refOfstreamQuadtree << "measures of discrepancies PNN (" << pu.arrayMeasuresLumaPnn[0] << ", " << pu.arrayMeasuresLumaPnn[1] << "); ";
+#if JVET_AB0149_SEARCH_PNN
+    if (areWrittenDone)
+    {
+      const CompArea& area = cu.Y();
+      const bool is_shape_handled_pnn = decideShapeHandledPnn(area.height,area.width);
+      if (is_shape_handled_pnn)
+      {
+        CHECK(pu.isInArrayCostsLfnstPnnMaxDouble(),"A cost has not been written to memory for a luminance CB the PNN mode can predict.");
+      }
+      else
+      {
+        CHECK(!pu.isFilledArrayCostsLfnstPnnMaxDouble(),"A cost is not equal to `MAX_DOUBLE` for a luminance CB the PNN mode cannot predict.");
+      }
+      bool is_equal_row = true;
+      const int error_code = is_equal_row_in_array_2d(&pu.arrayCostsLfnstPnn[0][0], NUM_LFNST_NUM_PER_SET - 1, DEPTH_LFNST_GROUP, is_equal_row);
+      CHECK(error_code < 0, "Error in `is_equal_row_in_array_2d`.");
+      if (!is_shape_handled_pnn || cu.ispMode || is_equal_row || !cu.lfnstIdx)
+      {
+        refOfstreamQuadtree << "costs mapping ; ";
+      }
+      else
+      {
+        refOfstreamQuadtree << "costs mapping ";
+        uint32_t j = 0;
+        for (i = 0; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+        {
+          for (j = 0; j < DEPTH_LFNST_GROUP; j++)
+          {
+            refOfstreamQuadtree << pu.arrayCostsLfnstPnn[i][j];
+            if (i*DEPTH_LFNST_GROUP + j < (NUM_LFNST_NUM_PER_SET - 1)*DEPTH_LFNST_GROUP - 1)
+            {
+              refOfstreamQuadtree << " | ";
+            }
+          }
+        }
+        refOfstreamQuadtree << "; ";
+      }
+    }
+#endif
+#endif
+    refOfstreamQuadtree << std::endl;
+  }
+  else
+  {
+    for (uint32_t compID = COMPONENT_Cb; compID < getNumberValidComponents(cu.chromaFormat); compID++)
+    {
+      refOfstreamQuadtree << "channel index " << compID << "; ";refOfstreamQuadtree << "block size " << tu.Cb().width << "x" << tu.Cb().height << "; ";refOfstreamQuadtree << "block position (" << tu.Cb().x << ", " << tu.Cb().y << "); ";refOfstreamQuadtree << "intra prediction mode index " << uiIntraMode << "; ";refOfstreamQuadtree << "depth of the TB relatively to its CB " << (cu.firstTU != cu.lastTU) << "; ";refOfstreamQuadtree << "flag of splitting the CB into 4 PBs 0; ";refOfstreamQuadtree << "LFNST indices (" << cu.lfnstIdx << ", ";
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+      if (uiIntraMode == PNN_IDX && cu.lfnstIdx)
+      {
+        refOfstreamQuadtree << cu.idxLfnstPnn;
+      }
+#endif
+      refOfstreamQuadtree << "); ";refOfstreamQuadtree << std::endl;
+    }
+  }
+}
+
+void writeCharacteristicsCu(const CodingUnit& cu,std::ofstream& refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                            , const bool& areWrittenDone
+#endif
+                            )
+{
+  const int numBlocks = CU::getNumPUs(cu);
+  CHECK(numBlocks != 1,"A CU can only contain a single PU in VVC.");
+  for (uint32_t chType = CHANNEL_TYPE_LUMA; chType < ::getNumberValidChannels(cu.chromaFormat); chType++)
+  {
+    if (cu.blocks[chType].valid())
+    {
+      if (CU::isIntra(cu))
+      {
+        for (const TransformUnit& tu : CU::traverseTUs(cu))
+        {
+          writeCharacteristicsTuInCuIntra(tu,ChannelType(chType),refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                                          , areWrittenDone
+#endif
+                                          );
+        }
+      }
+    }
+  }
+}
+
+void writeCharacteristicsCus(const CodingStructure& cs,const UnitArea& ctuArea,std::ofstream& refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                             , const bool& areWrittenDone
+#endif
+                             )
+{
+  const int maxNumChannelType = cs.pcv->chrFormat != CHROMA_400 && CS::isDualITree(cs) ? 2 : 1;
+  for (int ch(0); ch < maxNumChannelType; ch++)
+  {
+    const ChannelType chType = ChannelType(ch);
+    for (const CodingUnit& cu : cs.traverseCUs(CS::getArea(cs, ctuArea, chType), chType))
+    {
+      writeCharacteristicsCu(cu,refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                             , areWrittenDone
+#endif
+                             );
+    }
+  }
+}
+#endif
 
 void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, const bool bFastDeltaQP, EncLib* pEncLib )
 {
@@ -1695,7 +1905,17 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons
 #if K0149_BLOCK_STATISTICS
     getAndStoreBlockStatistics(cs, ctuArea);
 #endif
-
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    std::ofstream& refOfstreamQuadtree = m_pcCfg->getOfstreamQuadtree();
+    if (refOfstreamQuadtree.is_open())
+    {
+      writeCharacteristicsCus(cs,ctuArea,refOfstreamQuadtree
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                              , m_pcCfg->getAreCostsWritten()
+#endif
+                              );
+    }
+#endif
     pCABACWriter->resetBits();
     pCABACWriter->coding_tree_unit( cs, ctuArea, prevQP, ctuRsAddr, true, true );
     const int numberOfWrittenBits = int( pCABACWriter->getEstFracBits() >> SCALE_BITS );
diff --git a/source/Lib/EncoderLib/EncTemporalFilter.cpp b/source/Lib/EncoderLib/EncTemporalFilter.cpp
index 18ae4e37dc2142cf154a4ff2e66910b16d6627b3..521d852dcb2b544995465d0313296c976dfe4c81 100644
--- a/source/Lib/EncoderLib/EncTemporalFilter.cpp
+++ b/source/Lib/EncoderLib/EncTemporalFilter.cpp
@@ -99,6 +99,10 @@ EncTemporalFilter::EncTemporalFilter() :
   m_QP(0),
   m_clipInputVideoToRec709Range(false),
   m_inputColourSpaceConvert(NUMBER_INPUT_COLOUR_SPACE_CONVERSIONS)
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  , m_areOriginalFv(false)
+  , m_areOriginalFh(false)
+#endif
 {}
 
 void EncTemporalFilter::init(const int frameSkip,
@@ -114,7 +118,12 @@ void EncTemporalFilter::init(const int frameSkip,
   const InputColourSpaceConversion colorSpaceConv,
   const int qp,
   const std::map<int, double> &temporalFilterStrengths,
-  const bool gopBasedTemporalFilterFutureReference)
+  const bool gopBasedTemporalFilterFutureReference
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  , const bool& areOriginalFv
+  , const bool& areOriginalFh
+#endif
+  )
 {
   m_FrameSkip = frameSkip;
   for (int i = 0; i < MAX_NUM_CHANNEL_TYPE; i++)
@@ -138,6 +147,10 @@ void EncTemporalFilter::init(const int frameSkip,
   m_QP   = qp;
   m_temporalFilterStrengths = temporalFilterStrengths;
   m_gopBasedTemporalFilterFutureReference = gopBasedTemporalFilterFutureReference;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  m_areOriginalFv = areOriginalFv;
+  m_areOriginalFh = areOriginalFh;
+#endif
 }
 
 // ====================================================================================================================
@@ -210,7 +223,12 @@ bool EncTemporalFilter::filter(PelStorage *orgPic, int receivedPoc)
       PelStorage dummyPicBufferTO; // Only used temporary in yuvFrames.read
       srcPic.picBuffer.create(m_chromaFormatIDC, m_area, 0, m_padding);
       dummyPicBufferTO.create(m_chromaFormatIDC, m_area, 0, m_padding);
-      if (!yuvFrames.read(srcPic.picBuffer, dummyPicBufferTO, m_inputColourSpaceConvert, m_pad, m_chromaFormatIDC, m_clipInputVideoToRec709Range))
+      if (!yuvFrames.read(srcPic.picBuffer, dummyPicBufferTO, m_inputColourSpaceConvert, m_pad
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                        , m_areOriginalFv
+                        , m_areOriginalFh
+#endif
+                        , m_chromaFormatIDC, m_clipInputVideoToRec709Range))
       {
         return false; // eof or read fail
       }
diff --git a/source/Lib/EncoderLib/EncTemporalFilter.h b/source/Lib/EncoderLib/EncTemporalFilter.h
index 01848881097f24a87e515850e9c8aa49dfa3cdfd..a8bbe8d3ba680794ee1f366d79929436aec8b0a4 100644
--- a/source/Lib/EncoderLib/EncTemporalFilter.h
+++ b/source/Lib/EncoderLib/EncTemporalFilter.h
@@ -121,7 +121,12 @@ public:
     const InputColourSpaceConversion colorSpaceConv,
     const int qp,
     const std::map<int, double> &temporalFilterStrengths,
-    const bool gopBasedTemporalFilterFutureReference);
+    const bool gopBasedTemporalFilterFutureReference
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    , const bool& areOriginalFv
+    , const bool& areOriginalFh
+#endif
+    );
 
   bool filter(PelStorage *orgPic, int frame);
 
@@ -156,6 +161,10 @@ private:
   InputColourSpaceConversion m_inputColourSpaceConvert;
   Area m_area;
   bool m_gopBasedTemporalFilterFutureReference;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  bool m_areOriginalFv;
+  bool m_areOriginalFh;
+#endif
 
   // Private functions
   void subsampleLuma(const PelStorage &input, PelStorage &output, const int factor = 2) const;
diff --git a/source/Lib/EncoderLib/InterSearch.cpp b/source/Lib/EncoderLib/InterSearch.cpp
index ff9ba841d315778eeaba31500454145b1d63d480..e6c7520e97757f1cfe3b16fd2ea5d75fc93bc05e 100644
--- a/source/Lib/EncoderLib/InterSearch.cpp
+++ b/source/Lib/EncoderLib/InterSearch.cpp
@@ -6656,17 +6656,29 @@ void InterSearch::xEstimateInterResidualQT(CodingStructure &cs, Partitioner &par
           {
             if( transformMode == 0 )
             {
-              m_pcTrQuant->transformNxN( tu, compID, cQP, &trModes, m_pcEncCfg->getMTSInterMaxCand() );
+              m_pcTrQuant->transformNxN( tu, compID, cQP, &trModes, m_pcEncCfg->getMTSInterMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                        , false
+#endif
+                                        );
               tu.mtsIdx[compID] = trModes[0].first;
             }
             if (!(m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0))
             {
-              m_pcTrQuant->transformNxN( tu, compID, cQP, currAbsSum, m_CABACEstimator->getCtx(), true );
+              m_pcTrQuant->transformNxN( tu, compID, cQP, currAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                        , false
+#endif
+                                        , true );
             }
           }
           else
           {
-            m_pcTrQuant->transformNxN( tu, compID, cQP, currAbsSum, m_CABACEstimator->getCtx() );
+            m_pcTrQuant->transformNxN( tu, compID, cQP, currAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                      , false
+#endif
+                                      );
           }
 
           if (isFirstMode || (currAbsSum == 0))
@@ -6965,14 +6977,26 @@ void InterSearch::xEstimateInterResidualQT(CodingStructure &cs, Partitioner &par
         {
           if (modeId == 0)
           {
-            m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, &trModes, m_pcEncCfg->getMTSInterMaxCand());
+            m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, &trModes, m_pcEncCfg->getMTSInterMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                      , false
+#endif
+                                      );
             tu.mtsIdx[codeCompId] = trModes[modeId].first;
             tu.mtsIdx[otherCompId] = MTS_DCT2_DCT2;
           }
-          m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, compAbsSum, m_CABACEstimator->getCtx(), true);
+          m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, compAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                    , false
+#endif
+                                    , true);
         }
         else
-        m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, compAbsSum, m_CABACEstimator->getCtx());
+        m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, compAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                  , false
+#endif
+                                  );
         if (compAbsSum > 0)
         {
           m_pcTrQuant->invTransformNxN(tu, codeCompId, codeResi, qpCbCr);
diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp
index 063ef8b3af12195d427cc82260aa1f4114c003ad..24c9c1094614ce7b9f63f67ea5c9580f01113a29 100644
--- a/source/Lib/EncoderLib/IntraSearch.cpp
+++ b/source/Lib/EncoderLib/IntraSearch.cpp
@@ -49,6 +49,14 @@
 
 #include <math.h>
 #include <limits>
+
+#if JVET_AB0149_INTRA_PRED
+#include "intra_pred_extraction_context.h"
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+#include <fstream>
+#endif
+
  //! \ingroup EncoderLib
  //! \{
 #define PLTCtx(c) SubCtx( Ctx::Palette, c )
@@ -56,6 +64,9 @@ IntraSearch::IntraSearch()
   : m_pSplitCS      (nullptr)
   , m_pFullCS       (nullptr)
   , m_pBestCS       (nullptr)
+#if JVET_AB0149_INTRA_PRED
+  , m_isModeIsEnableUpdated(false)
+#endif
   , m_pcEncCfg      (nullptr)
   , m_pcTrQuant     (nullptr)
   , m_pcRdCost      (nullptr)
@@ -79,6 +90,34 @@ IntraSearch::IntraSearch()
   {
     m_statePtRDOQ[i] = nullptr;
   }
+#if JVET_AB0149_INTRA_PRED
+  for (unsigned int i = 0; i < MAX_NUM_CHANNEL_TYPE; i++)
+  {
+    m_isAlreadyComputedPnnRd[i] = false;
+  }
+  for (unsigned int i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    m_pSharedPredPnn[i] = nullptr;
+  }
+#if JVET_AB0149_TM_INF_PNN
+  resetIdxPredictedLfnstPnnMemories();
+#endif
+  resetIdxRepresentationPnnMemories();
+  for (unsigned int i = 0; i < NUM_INTRA_MODE + 1; i++)
+  {
+    m_modeIsEnable[i] = true;
+  }
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  resetSsdsLumaMemories();
+  resetSatdsLumaMemories();
+#if JVET_AB0149_INTRA_PRED
+  resetMeasuresLumaPnnMemories();
+#if JVET_AB0149_SEARCH_PNN
+  resetCostsLfnstPnnMemories();
+#endif
+#endif
+#endif
 }
 
 
@@ -199,6 +238,13 @@ void IntraSearch::destroy()
       m_statePtRDOQ[i] = nullptr;
     }
   }
+#if JVET_AB0149_INTRA_PRED
+  for (uint32_t i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    delete[] m_pSharedPredPnn[i];
+    m_pSharedPredPnn[i] = nullptr;
+  }
+#endif
 }
 
 IntraSearch::~IntraSearch()
@@ -209,6 +255,136 @@ IntraSearch::~IntraSearch()
   }
 }
 
+#if JVET_AB0149_INTRA_PRED
+#if JVET_AB0149_TM_INF_PNN
+void IntraSearch::resetIdxPredictedLfnstPnnMemories()
+{
+  for (uint32_t i{0}; i < MAX_NUM_COMPONENT; i++)
+  {
+    for (uint32_t j{0}; j < NUM_LFNST_NUM_PER_SET - 1; j++)
+    {
+      m_arrayIdxPredictedLfnstPnn[i][j] = MAX_INT;
+    }
+  }
+}
+
+void IntraSearch::transferIdxPredictedLfnstPnnMemories(CodingUnit& cu,const ComponentID& compID,const bool& isFromMemoryToCu)
+{
+  for (uint32_t i{0}; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    if (isFromMemoryToCu)
+    {
+      cu.arrayIdxPredictedLfnstPnn[compID][i] = m_arrayIdxPredictedLfnstPnn[compID][i];
+    }
+    else
+    {
+      m_arrayIdxPredictedLfnstPnn[compID][i] = cu.arrayIdxPredictedLfnstPnn[compID][i];
+    }
+  }
+}
+#endif
+void IntraSearch::resetIdxRepresentationPnnMemories()
+{
+  m_idxRepresentationPnn = MAX_INT;
+}
+
+void IntraSearch::transferIdxRepresentationPnnMemories(CodingUnit& cu,
+                                                       const bool& isFromMemoryToCu)
+{
+  if (isFromMemoryToCu)
+  {
+    cu.idxRepresentationPnn = m_idxRepresentationPnn;
+  }
+  else
+  {
+    m_idxRepresentationPnn = cu.idxRepresentationPnn;
+  }
+}
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+void IntraSearch::resetSsdsLumaMemories()
+{
+  for (auto it = m_arrayPairsIdxSsdLumaRegular.begin(); it != m_arrayPairsIdxSsdLumaRegular.end(); it++)
+  {
+    it->first = -1;
+    it->second = MAX_UINT64;
+  }
+#if JVET_AB0149_INTRA_PRED
+  m_ssdLumaPnn = MAX_UINT64;
+#endif
+}
+
+void IntraSearch::transferSsdsLumaMemories(PredictionUnit& pu) const
+{
+  pu.arrayPairsIdxSsdLumaRegular = m_arrayPairsIdxSsdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  pu.ssdLumaPnn = m_ssdLumaPnn;
+#endif
+}
+
+void IntraSearch::resetSatdsLumaMemories()
+{
+  for (auto it = m_arrayPairsIdxSatdLumaRegular.begin(); it != m_arrayPairsIdxSatdLumaRegular.end(); it++)
+  {
+    it->first = -1;
+    it->second = MAX_UINT64;
+  }
+#if JVET_AB0149_INTRA_PRED
+  m_satdLumaPnn = MAX_UINT64;
+#endif
+}
+
+void IntraSearch::transferSatdsLumaMemories(PredictionUnit& pu) const
+{
+  pu.arrayPairsIdxSatdLumaRegular = m_arrayPairsIdxSatdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  pu.satdLumaPnn = m_satdLumaPnn;
+#endif
+}
+
+#if JVET_AB0149_INTRA_PRED
+void IntraSearch::resetMeasuresLumaPnnMemories()
+{
+  for (uint32_t i = 0; i < 2; i++)
+  {
+    m_arrayMeasuresLumaPnn[i] = MAX_DOUBLE;
+  }
+}
+
+void IntraSearch::transferMeasuresLumaPnnMemories(PredictionUnit& pu) const
+{
+  for (uint32_t i{0}; i < 2; i++)
+  {
+    pu.arrayMeasuresLumaPnn[i] = m_arrayMeasuresLumaPnn[i];
+  }
+}
+
+#if JVET_AB0149_SEARCH_PNN
+void IntraSearch::resetCostsLfnstPnnMemories()
+{
+  for (uint32_t i{0}; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j{0}; j < DEPTH_LFNST_GROUP; j++)
+    {
+      m_arrayCostsLfnstPnn[i][j] = MAX_DOUBLE;
+    }
+  }
+}
+
+void IntraSearch::transferCostsLfnstPnnMemories(PredictionUnit& pu) const
+{
+  for (uint32_t i{0}; i < NUM_LFNST_NUM_PER_SET - 1; i++)
+  {
+    for (uint32_t j{0}; j < DEPTH_LFNST_GROUP; j++)
+    {
+      pu.arrayCostsLfnstPnn[i][j] = m_arrayCostsLfnstPnn[i][j];
+    }
+  }
+}
+#endif
+#endif
+#endif
+
 void IntraSearch::init( EncCfg*        pcEncCfg,
                         TrQuant*       pcTrQuant,
                         RdCost*        pcRdCost,
@@ -231,8 +407,18 @@ void IntraSearch::init( EncCfg*        pcEncCfg,
 
   const ChromaFormat cform = pcEncCfg->getChromaFormatIdc();
 
-  IntraPrediction::init( cform, pcEncCfg->getBitDepth( CHANNEL_TYPE_LUMA ) );
+  IntraPrediction::init( cform
+#if JVET_AB0149_INTRA_PRED
+                        , pcEncCfg->getDescriptionPairHeightWidthPathToGraphOutput(), pcEncCfg->getPrefixAbsolutePathsToGraphsOutput()
+#endif
+                        );
   m_tmpStorageLCU.create(UnitArea(cform, Area(0, 0, MAX_CU_SIZE, MAX_CU_SIZE)));
+#if JVET_AB0149_INTRA_PRED
+  for (uint32_t i = 0; i < MAX_NUM_COMPONENT; i++)
+  {
+    m_pSharedPredPnn[i] = new Pel[MAX_CU_SIZE*MAX_CU_SIZE];
+  }
+#endif
   m_colorTransResiBuf.create(UnitArea(cform, Area(0, 0, MAX_CU_SIZE, MAX_CU_SIZE)));
 
   for( uint32_t ch = 0; ch < MAX_NUM_TBLOCKS; ch++ )
@@ -367,8 +553,12 @@ double IntraSearch::findInterCUCost( CodingUnit &cu )
   return COST_UNKNOWN;
 }
 
-bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, const double bestCostSoFar, bool mtsCheckRangeFlag, int mtsFirstCheckId, int mtsLastCheckId, bool moreProbMTSIdxFirst, CodingStructure* bestCS)
-{
+bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner,
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                                     bool& isTriggeredHeuristicInter,
+#endif
+                                     const double bestCostSoFar, bool mtsCheckRangeFlag, int mtsFirstCheckId, int mtsLastCheckId,
+                                     bool moreProbMTSIdxFirst, CodingStructure *bestCS) {
   CodingStructure       &cs            = *cu.cs;
   const SPS             &sps           = *cs.sps;
   const uint32_t             uiWidthBit    = floorLog2(partitioner.currArea().lwidth() );
@@ -381,8 +571,13 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
   const TempCtx ctxStart          ( m_CtxCache, m_CABACEstimator->getCtx() );
   const TempCtx ctxStartMipFlag    ( m_CtxCache, SubCtx( Ctx::MipFlag,          m_CABACEstimator->getCtx() ) );
+#if JVET_AB0149_INTRA_PRED
+  const TempCtx ctxStartPnnLuminanceFlag(m_CtxCache, SubCtx(Ctx::PnnLuminanceFlag, m_CABACEstimator->getCtx()));
+#endif
   const TempCtx ctxStartIspMode    ( m_CtxCache, SubCtx( Ctx::ISPMode,          m_CABACEstimator->getCtx() ) );
-  const TempCtx ctxStartPlanarFlag ( m_CtxCache, SubCtx( Ctx::IntraLumaPlanarFlag, m_CABACEstimator->getCtx() ) );
+#if !JVET_AB0149_INTRA_PRED
+  const TempCtx ctxStartPlanarFlag(m_CtxCache, SubCtx( Ctx::IntraLumaPlanarFlag, m_CABACEstimator->getCtx()));
+#endif
   const TempCtx ctxStartIntraMode(m_CtxCache, SubCtx(Ctx::IntraLumaMpmFlag, m_CABACEstimator->getCtx()));
   const TempCtx ctxStartMrlIdx      ( m_CtxCache, SubCtx( Ctx::MultiRefLineIdx,        m_CABACEstimator->getCtx() ) );
 
@@ -468,10 +663,19 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
     const bool supportedMipBlkSize = pu.lwidth() <= MIP_MAX_WIDTH && pu.lheight() <= MIP_MAX_HEIGHT;
 
     static_vector<ModeInfo, FAST_UDI_MAX_RDMODE_NUM> uiRdModeList;
-
+#if JVET_AB0149_INTRA_PRED
+    int numModesForFullRD = 0;
+#if JVET_AB0149_SEARCH_PNN
+    if (!cu.idxLfnstPnn)
+    {
+#endif
+#else
     int numModesForFullRD = 3;
+#endif
     numModesForFullRD = g_aucIntraModeNumFast_UseMPM_2D[uiWidthBit - MIN_CU_LOG2][uiHeightBit - MIN_CU_LOG2];
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+    }
+#endif
 #if INTRA_FULL_SEARCH
     numModesForFullRD = numModesAvailable;
 #endif
@@ -493,20 +697,32 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
     }
     else
     {
+      const CompArea& area = pu.Y();
+#if JVET_AB0149_INTRA_PRED
+      const bool is_shape_handled_pnn = decideShapeHandledPnn(area.height,area.width);
+#if JVET_AB0149_SEARCH_PNN
+      if (!cu.idxLfnstPnn)
+      {
+#endif
+#endif
       if (mtsUsageFlag != 2)
       {
-        // this should always be true
-        CHECK(!pu.Y().valid(), "PU is not valid");
         bool isFirstLineOfCtu     = (((pu.block(COMPONENT_Y).y) & ((pu.cs->sps)->getMaxCUWidth() - 1)) == 0);
         int  numOfPassesExtendRef = ((!sps.getUseMRL() || isFirstLineOfCtu) ? 1 : MRL_NUM_REF_LINES);
         pu.multiRefIdx            = 0;
-
+#if JVET_AB0149_INTRA_PRED
+        bool contextFlag = false, is_context_extracted = false;
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        const bool is_written_first_test = (m_pcEncCfg->getOfstreamQuadtree()).is_open() && cu.mtsFlag == 0 && cu.lfnstIdx == 0;
+#if JVET_AB0149_INTRA_PRED
+        is_context_extracted = is_written_first_test && is_shape_handled_pnn;
+        int error_code = 0;
+#endif
+#endif
         if (numModesForFullRD != numModesAvailable)
         {
           CHECK(numModesForFullRD >= numModesAvailable, "Too many modes for full RD search");
-
-          const CompArea &area = pu.Y();
-
           PelBuf piOrg  = cs.getOrgBuf(area);
           PelBuf piPred = cs.getPredBuf(area);
 
@@ -546,7 +762,14 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
           cu.mipFlag = false;
 
           //===== init pattern for luma prediction =====
-          initIntraPatternChType(cu, pu.Y(), true);
+          initIntraPatternChType(cu, pu.Y(),
+#if JVET_AB0149_INTRA_PRED
+                                 contextFlag, is_context_extracted,
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                 false,
+#endif
+                                true);
           bool bSatdChecked[NUM_INTRA_MODE];
           memset(bSatdChecked, 0, sizeof(bSatdChecked));
 
@@ -558,25 +781,44 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
               Distortion minSadHad = 0;
 
               // Skip checking extended Angular modes in the first round of SATD
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              const bool isDirectionalOdd(uiMode > DC_IDX && (uiMode & 1));
+              if (isDirectionalOdd && !is_written_first_test)
+#else
               if (uiMode > DC_IDX && (uiMode & 1))
+#endif
               {
                 continue;
               }
-
+#if !JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
               bSatdChecked[uiMode] = true;
-
+#endif
               pu.intraDir[0] = modeIdx;
 
               initPredIntraParams(pu, pu.Y(), sps);
-              predIntraAng(COMPONENT_Y, piPred, pu);
+              predIntraAng(COMPONENT_Y, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                           , contextFlag
+#endif
+                           );
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              if (!isDirectionalOdd)
+              {
+              bSatdChecked[uiMode] = true;
+#endif
               // Use the min between SAD and HAD as the cost criterion
               // SAD is scaled by 2 to align with the scaling of HAD
               minSadHad += std::min(distParamSad.distFunc(distParamSad) * 2, distParamHad.distFunc(distParamHad));
 
               // NB xFracModeBitsIntra will not affect the mode for chroma that may have already been pre-estimated.
               m_CABACEstimator->getCtx() = SubCtx( Ctx::MipFlag, ctxStartMipFlag );
+#if JVET_AB0149_INTRA_PRED
+              m_CABACEstimator->getCtx() = SubCtx(Ctx::PnnLuminanceFlag, ctxStartPnnLuminanceFlag);
+#endif
               m_CABACEstimator->getCtx() = SubCtx( Ctx::ISPMode, ctxStartIspMode );
+#if !JVET_AB0149_INTRA_PRED
               m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaPlanarFlag, ctxStartPlanarFlag);
+#endif
               m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaMpmFlag, ctxStartIntraMode);
               m_CABACEstimator->getCtx() = SubCtx( Ctx::MultiRefLineIdx, ctxStartMrlIdx );
 
@@ -590,7 +832,32 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
                              CandCostList, numModesForFullRD);
               updateCandList(ModeInfo(false, false, 0, NOT_INTRA_SUBPARTITIONS, uiMode), double(minSadHad),
                              uiHadModeList, CandHadList, numHadCand);
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+              }
+              if (is_written_first_test)
+              {
+                computeSsdsSatdsLumaRegular(piOrg,piPred,uiMode,sps.getBitDepth(CHANNEL_TYPE_LUMA));
+              }
+#endif
             }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+            if (is_context_extracted)
+            {
+              pu.intraDir[CHANNEL_TYPE_LUMA] = PNN_IDX;
+              initPredIntraParams(pu,area,sps);
+              predIntraAng(COMPONENT_Y,piPred,pu,contextFlag);
+              error_code = computeSsdSatdMeasuresConstrastStructureLumaPnn(piOrg,piPred,sps.getBitDepth(CHANNEL_TYPE_LUMA));
+              CHECK(error_code < 0,"Error in `computeLumaSsdSatdMeasuresConstrastStructurePnn`.");
+              PelBuf sharedPredPnn(m_pSharedPredPnn[COMPONENT_Y],area);
+              CHECK(getIsAlreadyComputedPnnRd(CHANNEL_TYPE_LUMA),"The prediction of the neural network mode should not be already computed.");
+              sharedPredPnn.copyFrom(piPred);
+              setIsAlreadyComputedPnnRd(true,CHANNEL_TYPE_LUMA);
+#if JVET_AB0149_TM_INF_PNN
+              transferIdxPredictedLfnstPnnMemories(cu,COMPONENT_Y,false);
+#endif
+              transferIdxRepresentationPnnMemories(cu,false);
+            }
+#endif
             if (!sps.getUseMIP() && LFNSTSaveFlag)
             {
               // save found best modes
@@ -633,7 +900,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
                     pu.intraDir[0] = mode;
 
                     initPredIntraParams(pu, pu.Y(), sps);
-                    predIntraAng(COMPONENT_Y, piPred, pu);
+                    predIntraAng(COMPONENT_Y, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                                 , contextFlag
+#endif
+                                 );
 
                     // Use the min between SAD and SATD as the cost criterion
                     // SAD is scaled by 2 to align with the scaling of HAD
@@ -643,8 +914,13 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
                     // NB xFracModeBitsIntra will not affect the mode for chroma that may have already been
                     // pre-estimated.
                     m_CABACEstimator->getCtx() = SubCtx(Ctx::MipFlag, ctxStartMipFlag);
+#if JVET_AB0149_INTRA_PRED
+                  m_CABACEstimator->getCtx() = SubCtx(Ctx::PnnLuminanceFlag,  ctxStartPnnLuminanceFlag);
+#endif
                     m_CABACEstimator->getCtx() = SubCtx(Ctx::ISPMode, ctxStartIspMode);
+#if !JVET_AB0149_INTRA_PRED
                     m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaPlanarFlag, ctxStartPlanarFlag);
+#endif
                     m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaMpmFlag, ctxStartIntraMode);
                     m_CABACEstimator->getCtx() = SubCtx(Ctx::MultiRefLineIdx, ctxStartMrlIdx);
 
@@ -670,14 +946,25 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
             pu.multiRefIdx    = 1;
             const int numMPMs = NUM_MOST_PROBABLE_MODES;
             unsigned  multiRefMPM[numMPMs];
-            PU::getIntraMPMs(pu, multiRefMPM);
+            PU::getIntraMPMs(pu, multiRefMPM
+#if JVET_AB0149_INTRA_PRED
+                             , is_shape_handled_pnn
+#endif
+                             );
             for (int mRefNum = 1; mRefNum < numOfPassesExtendRef; mRefNum++)
             {
               int multiRefIdx = MULTI_REF_LINE_IDX[mRefNum];
 
               pu.multiRefIdx = multiRefIdx;
               {
-                initIntraPatternChType(cu, pu.Y(), true);
+                initIntraPatternChType(cu, pu.Y(),
+#if JVET_AB0149_INTRA_PRED
+                                       contextFlag,false,
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                       false,
+#endif
+                                       true);
               }
               for (int x = 1; x < numMPMs; x++)
               {
@@ -686,7 +973,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
                   pu.intraDir[0] = mode;
                   initPredIntraParams(pu, pu.Y(), sps);
 
-                  predIntraAng(COMPONENT_Y, piPred, pu);
+                  predIntraAng(COMPONENT_Y, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                               , contextFlag
+#endif
+                               );
 
                   // Use the min between SAD and SATD as the cost criterion
                   // SAD is scaled by 2 to align with the scaling of HAD
@@ -695,8 +986,13 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
                   // NB xFracModeBitsIntra will not affect the mode for chroma that may have already been pre-estimated.
                   m_CABACEstimator->getCtx() = SubCtx(Ctx::MipFlag, ctxStartMipFlag);
+#if JVET_AB0149_INTRA_PRED
+                  m_CABACEstimator->getCtx() = SubCtx(Ctx::PnnLuminanceFlag, ctxStartPnnLuminanceFlag);
+#endif
                   m_CABACEstimator->getCtx() = SubCtx(Ctx::ISPMode, ctxStartIspMode);
+#if !JVET_AB0149_INTRA_PRED
                   m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaPlanarFlag, ctxStartPlanarFlag);
+#endif
                   m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaMpmFlag, ctxStartIntraMode);
                   m_CABACEstimator->getCtx() = SubCtx(Ctx::MultiRefLineIdx, ctxStartMrlIdx);
 
@@ -753,7 +1049,14 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
               double mipHadCost[MAX_NUM_MIP_MODE] = { MAX_DOUBLE };
 
-              initIntraPatternChType(cu, pu.Y());
+              initIntraPatternChType(cu, pu.Y()
+#if JVET_AB0149_INTRA_PRED
+                                     , contextFlag, false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                     , false
+#endif
+                                     );
               initIntraMip(pu, pu.Y());
 
               const int transpOff    = getNumModesMip(pu.Y());
@@ -773,7 +1076,9 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
                   std::min(distParamSad.distFunc(distParamSad) * 2, distParamHad.distFunc(distParamHad));
 
                 m_CABACEstimator->getCtx() = SubCtx(Ctx::MipFlag, ctxStartMipFlag);
-
+#if JVET_AB0149_INTRA_PRED
+                m_CABACEstimator->getCtx() = SubCtx( Ctx::PnnLuminanceFlag,   ctxStartPnnLuminanceFlag );
+#endif
                 uint64_t fracModeBits = xFracModeBitsIntra(pu, uiMode, CHANNEL_TYPE_LUMA);
 
                 double cost            = double(minSadHad) + double(fracModeBits) * sqrtLambdaForFirstPass;
@@ -821,8 +1126,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
             pu.multiRefIdx = 0;
 
-            const int numCand = PU::getIntraMPMs(pu, uiPreds);
-
+            const int numCand = PU::getIntraMPMs(pu, uiPreds
+#if JVET_AB0149_INTRA_PRED
+                                                 , is_shape_handled_pnn
+#endif
+                                                 );
             for (int j = 0; j < numCand; j++)
             {
               bool     mostProbableModeIncluded = false;
@@ -876,6 +1184,12 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
         {
           numModesForFullRD = 0;
 
+          /*
+          `cu.lfnstIdx` is always equal to 0 as, at this point,
+          `cu.mtsFlag` is equal to 1.
+          */
+          CHECK(cu.lfnstIdx != 0,
+                "`cu.lfnstIdx` is expected to be equal to 0.");
           double thresholdSkipMode = 1.0 + ((cu.lfnstIdx > 0) ? 0.1 : 1.0) * (1.4 / sqrt((double) (width * height)));
 
           // Skip checking the modes with much larger R-D cost than the best mode
@@ -905,7 +1219,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
       // PBINTRA fast
       if (m_pcEncCfg->getUsePbIntraFast() && !cs.slice->isIntra() && uiRdModeList.size() < numModesAvailable
-          && !cs.slice->getDisableSATDForRD() && (mtsUsageFlag != 2 || lfnstIdx > 0))
+          && !cs.slice->getDisableSATDForRD() && (mtsUsageFlag != 2 || lfnstIdx > 0)
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+          && !m_pcEncCfg->getAreCostsWritten()
+#endif
+          )
       {
         double   pbintraRatio = (lfnstIdx > 0) ? 1.25 : PBINTRA_RATIO;
         int      maxSize      = -1;
@@ -931,10 +1249,12 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
         if (maxSize > 0)
         {
           uiRdModeList.resize(std::min<size_t>(uiRdModeList.size(), maxSize));
+          numModesForFullRD = (int)uiRdModeList.size();
           if (bestMipIdx >= 0)
           {
             if (uiRdModeList.size() <= bestMipIdx)
             {
+              numModesForFullRD++;
               uiRdModeList.push_back(bestMipMode);
             }
           }
@@ -950,14 +1270,43 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
 
           //===== reset context models =====
           m_CABACEstimator->getCtx() = SubCtx(Ctx::MipFlag, ctxStartMipFlag);
+#if JVET_AB0149_INTRA_PRED
+          m_CABACEstimator->getCtx() = SubCtx( Ctx::PnnLuminanceFlag,   ctxStartPnnLuminanceFlag );
+#endif
           m_CABACEstimator->getCtx() = SubCtx(Ctx::ISPMode, ctxStartIspMode);
+#if !JVET_AB0149_INTRA_PRED
           m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaPlanarFlag, ctxStartPlanarFlag);
+#endif
           m_CABACEstimator->getCtx() = SubCtx(Ctx::IntraLumaMpmFlag, ctxStartIntraMode);
           m_CABACEstimator->getCtx() = SubCtx(Ctx::MultiRefLineIdx, ctxStartMrlIdx);
-
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+          isTriggeredHeuristicInter = true;
+#endif
           return false;
         }
       }
+#if JVET_AB0149_INTRA_PRED
+#if JVET_AB0149_SEARCH_PNN
+      }
+#endif
+    if (is_shape_handled_pnn)
+    {
+      numModesForFullRD++;
+      uiRdModeList.push_back(
+        ModeInfo(false,
+                 false,
+                 0,
+                 NOT_INTRA_SUBPARTITIONS,
+                 PNN_IDX)
+      );
+    }
+#if JVET_AB0149_SEARCH_PNN
+    if (!numModesForFullRD)
+    {
+      return false;
+    }
+#endif
+#endif
     }
 
     int numNonISPModes = (int)uiRdModeList.size();
@@ -969,9 +1318,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
       m_curIspLfnstIdx = 0;
       for (int i = 0; i < maxNumRDModesISP; i++)
       {
+        numModesForFullRD++;
         uiRdModeList.push_back( ModeInfo( false, false, 0, INTRA_SUBPARTITIONS_RESERVED, 0 ) );
       }
     }
+    CHECK(numModesForFullRD != uiRdModeList.size(), "`uiRdModeList.size()` is different from its expected value.");
 
     //===== check modes (using r-d costs) =====
     ModeInfo       uiBestPUMode;
@@ -987,9 +1338,6 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
     csBest->initStructData();
     csTemp->picture = cs.picture;
     csBest->picture = cs.picture;
-
-    // just to be sure
-    numModesForFullRD = ( int ) uiRdModeList.size();
     TUIntraSubPartitioner subTuPartitioner( partitioner );
     if ( testISP )
     {
@@ -1090,7 +1438,11 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
         }
       }
 
-      if (!cu.ispMode && !cu.mtsFlag && !cu.lfnstIdx && !cu.bdpcmMode && !pu.multiRefIdx && !cu.mipFlag && testISP)
+      if (!cu.ispMode && !cu.mtsFlag && !cu.lfnstIdx && !cu.bdpcmMode && !pu.multiRefIdx && !cu.mipFlag && testISP
+#if JVET_AB0149_INTRA_PRED
+        && uiOrgMode.modeId != PNN_IDX
+#endif
+          )
       {
         m_regIntraRDListWithCosts.push_back( ModeInfoWithCost( cu.mipFlag, pu.mipTransposedFlag, pu.multiRefIdx, cu.ispMode, uiOrgMode.modeId, csTemp->cost ) );
       }
@@ -1107,7 +1459,15 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
       {
         m_modeCostStore[lfnstIdx][mode] = tmpValidReturn ? csTemp->cost : (MAX_DOUBLE / 2.0); //(MAX_DOUBLE / 2.0) ??
       }
-
+#if JVET_AB0149_INTRA_PRED
+      if (uiOrgMode.modeId == PNN_IDX)
+      {
+#if JVET_AB0149_TM_INF_PNN
+        transferIdxPredictedLfnstPnnMemories(cu,COMPONENT_Y,true);
+#endif
+        transferIdxRepresentationPnnMemories(cu,true);
+      }
+#endif
       DTRACE(g_trace_ctx, D_INTRA_COST, "IntraCost T [x=%d,y=%d,w=%d,h=%d] %f (%d,%d,%d,%d,%d,%d) \n", cu.blocks[0].x,
              cu.blocks[0].y, (int) width, (int) height, csTemp->cost, uiOrgMode.modeId, uiOrgMode.ispMod,
              pu.multiRefIdx, cu.mipFlag, cu.lfnstIdx, cu.mtsFlag);
@@ -1121,7 +1481,15 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
             sortRdModeListFirstColorSpace(uiOrgMode, csTemp->cost, cu.bdpcmMode, m_savedRdModeFirstColorSpace[m_savedRdModeIdx], m_savedRdCostFirstColorSpace[m_savedRdModeIdx], m_savedBDPCMModeFirstColorSpace[m_savedRdModeIdx], m_numSavedRdModeFirstColorSpace[m_savedRdModeIdx]);
           }
         }
-        // check r-d cost
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+        if (m_pcEncCfg->getAreCostsWritten())
+        {
+          if (uiOrgMode.modeId == PNN_IDX && cu.lfnstIdx)
+          {
+            m_arrayCostsLfnstPnn[cu.lfnstIdx - 1][cu.idxLfnstPnn] = csTemp->cost;
+          }
+        }
+#endif
         if( csTemp->cost < csBest->cost )
         {
           std::swap( csTemp, csBest );
@@ -1154,6 +1522,10 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
       }
 
       csTemp->releaseIntermediateData();
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      if (!m_pcEncCfg->getAreCostsWritten())
+      {
+#endif
       if( m_pcEncCfg->getFastLocalDualTreeMode() )
       {
         if( cu.isConsIntra() && !cu.slice->isIntra() && csBest->cost != MAX_DOUBLE && costInterCU != COST_UNKNOWN && mode >= 0 )
@@ -1172,6 +1544,9 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
           }
         }
       }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN && JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+      }
+#endif
       if (sps.getUseColorTrans() && !CS::isDualITree(cs))
       {
         if ((m_pcEncCfg->getRGBFormatFlag() && !cu.colorTransform) && csBest->cost != MAX_DOUBLE && bestCS->cost != MAX_DOUBLE && mode >= 0)
@@ -1220,7 +1595,55 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c
   return validReturn;
 }
 
-void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner, const double maxCostAllowed )
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+template<typename T, typename U, std::size_t SIZE>
+void insert_pair_index_cost(std::array<std::pair<T, U>, SIZE>& array_pairs_index_cost,const std::pair<T, U>& pair_index_cost)
+{
+    std::size_t shift = 0;
+    while (shift < SIZE && pair_index_cost.second < array_pairs_index_cost[SIZE - 1 - shift].second)
+    {
+        shift++;
+    }
+    if (shift)
+    {
+        for (int i = 1; i < shift; i++)
+        {
+            array_pairs_index_cost[SIZE - i] = array_pairs_index_cost[SIZE - 1 - i];
+        }
+        array_pairs_index_cost[SIZE - shift] = pair_index_cost;
+    }
+}
+
+void IntraSearch::computeSsdsSatdsLumaRegular(const PelBuf& piOrg,const PelBuf& piPred,const uint32_t& uiMode,const int& bitDepth)
+{
+  std::pair<int8_t, uint64_t> pairIndexCost(uiMode, MAX_UINT64);
+  pairIndexCost.second = m_pcRdCost->getDistPart(piOrg,piPred,bitDepth,COMPONENT_Y,DF_SSE);
+  insert_pair_index_cost(m_arrayPairsIdxSsdLumaRegular,pairIndexCost);
+  pairIndexCost.second = m_pcRdCost->getDistPart(piOrg,piPred,bitDepth,COMPONENT_Y,DF_HAD);
+  insert_pair_index_cost(m_arrayPairsIdxSatdLumaRegular,pairIndexCost);
+}
+
+#if JVET_AB0149_INTRA_PRED
+int IntraSearch::computeSsdSatdMeasuresConstrastStructureLumaPnn(const PelBuf& piOrg,const PelBuf& piPred,const int& bitDepth)
+{
+  m_ssdLumaPnn = m_pcRdCost->getDistPart(piOrg,piPred,bitDepth,COMPONENT_Y,DF_SSE);
+  m_satdLumaPnn = m_pcRdCost->getDistPart(piOrg,piPred,bitDepth,COMPONENT_Y,DF_HAD);
+  const int error_code = compare_contrast_structure_globally(piOrg.buf,piPred.buf,piOrg.height,piOrg.width,piOrg.stride,piPred.stride,(1 << bitDepth) - 1,&m_arrayMeasuresLumaPnn[0]);
+  if (error_code < 0)
+  {
+    return -1;
+  }
+  return 0;
+}
+#endif
+#endif
+
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+bool
+#else
+void
+#endif
+IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner, const double maxCostAllowed )
 {
   const ChromaFormat format   = cu.chromaFormat;
   const uint32_t    numberValidComponents = getNumberValidComponents(format);
@@ -1235,17 +1658,33 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
   CHECK( cu.ispMode && bestCostSoFar < 0, "bestCostSoFar must be positive!" );
 
   auto &pu = *cu.firstPU;
-
+#if JVET_AB0149_INTRA_PRED
+  const bool is_shape_handled_pnn = decideShapeHandledPnn(pu.Cb().height, pu.Cb().width);
+  const bool is_dm_pnn(
+    getIntraDirLumaSubstitutePnn(PU::getCoLocatedIntraLumaMode(pu), pu.Cb().height, pu.Cb().width) == PNN_IDX
+  );
+#if JVET_AB0149_SEARCH_PNN
+  if (cu.isSepTree() && cu.idxLfnstPnn)
+  {
+    if (!is_shape_handled_pnn) {
+      return false;
+    }
+  }
+#endif
+#endif
   {
+    double dCost = MAX_DOUBLE;
+    double dBestCost = MAX_DOUBLE;
     uint32_t       uiBestMode = 0;
     Distortion uiBestDist = 0;
-    double     dBestCost = MAX_DOUBLE;
     int32_t bestBDPCMMode = 0;
 
     //----- init mode list ----
     {
-      int32_t  uiMinMode = 0;
-      int32_t  uiMaxMode = NUM_CHROMA_MODE;
+      
+      // `const` are added for safety.
+      const int32_t  uiMinMode = 0;
+      const int32_t  uiMaxMode = NUM_CHROMA_MODE;
       //----- check chroma modes -----
       uint32_t chromaCandModes[ NUM_CHROMA_MODE ];
       PU::getIntraChromaCandModes( pu, chromaCandModes );
@@ -1305,7 +1744,21 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
       {
         saveCS.clearCUs();
       }
+#if JVET_AB0149_INTRA_PRED
       // SATD pre-selecting.
+      if (!cu.isSepTree() || !m_isModeIsEnableUpdated)
+      {
+#else
+      bool modeIsEnable[NUM_INTRA_MODE + 1];
+#endif
+      for (int i = 0; i < NUM_INTRA_MODE + 1; i++)
+      {
+#if JVET_AB0149_INTRA_PRED
+        m_modeIsEnable[i] = true;
+#else
+        modeIsEnable[i] = true;
+#endif
+      }
       int satdModeList[NUM_CHROMA_MODE];
       int64_t satdSortedCost[NUM_CHROMA_MODE];
       for (int i = 0; i < NUM_CHROMA_MODE; i++)
@@ -1313,17 +1766,29 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
         satdSortedCost[i] = 0; // for the mode not pre-select by SATD, do RDO by default, so set the initial value 0.
         satdModeList[i] = 0;
       }
-      bool modeIsEnable[NUM_INTRA_MODE + 1]; // use intra mode idx to check whether enable
-      for (int i = 0; i < NUM_INTRA_MODE + 1; i++)
-      {
-        modeIsEnable[i] = 1;
-      }
       DistParam distParamSad;
       DistParam distParamSatd;
       pu.intraDir[1] = MDLM_L_IDX; // temporary assigned, just to indicate this is a MDLM mode. for luma down-sampling operation.
-
-      initIntraPatternChType(cu, pu.Cb());
-      initIntraPatternChType(cu, pu.Cr());
+#if JVET_AB0149_INTRA_PRED
+      bool contextFlagCb = false;
+      bool contextFlagCr = false;
+#endif
+      initIntraPatternChType(cu, pu.Cb()
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlagCb, false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
+      initIntraPatternChType(cu, pu.Cr()
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlagCr, false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
       xGetLumaRecPixels(pu, pu.Cb());
 
       for (int idx = uiMinMode; idx <= uiMaxMode - 1; idx++)
@@ -1361,7 +1826,11 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
         else
         {
           initPredIntraParams(pu, pu.Cb(), *pu.cs->sps);
-          predIntraAng(COMPONENT_Cb, predCb, pu);
+          predIntraAng(COMPONENT_Cb, predCb, pu
+#if JVET_AB0149_INTRA_PRED
+                       , contextFlagCb
+#endif
+                       );
         }
         sadCb = distParamSad.distFunc(distParamSad) * 2;
         satdCb = distParamSatd.distFunc(distParamSatd);
@@ -1380,7 +1849,11 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
         else
         {
           initPredIntraParams(pu, pu.Cr(), *pu.cs->sps);
-          predIntraAng(COMPONENT_Cr, predCr, pu);
+          predIntraAng(COMPONENT_Cr, predCr, pu
+#if JVET_AB0149_INTRA_PRED
+                       , contextFlagCr
+#endif
+                       );
         }
         sadCr = distParamSad.distFunc(distParamSad) * 2;
         satdCr = distParamSatd.distFunc(distParamSatd);
@@ -1407,47 +1880,110 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
           }
         }
       }
-      int reducedModeNumber = 2; // reduce the number of chroma modes
-      for (int i = 0; i < reducedModeNumber; i++)
+#if JVET_AB0149_INTRA_PRED
+      std::vector<uint32_t> vector_indices;
+      const int error_code = collect_indices_non_zeros(satdSortedCost,NUM_CHROMA_MODE,vector_indices);
+      CHECK(error_code < 0, "Error in `collect_indices_non_zeros`.");
+      if (vector_indices.empty())
+      {
+        m_modeIsEnable[chromaCandModes[1]] = false;m_modeIsEnable[chromaCandModes[2]] = false;
+      }
+      else if (vector_indices.size() == 1)
+      {
+        CHECK(vector_indices.at(0) != NUM_CHROMA_MODE - 1,"The index in `satdSortedCost` of the unique chrominance candidate intra prediction mode with non-zero SATD cost is not equal to `NUM_CHROMA_MODE - 1`.");
+        m_modeIsEnable[satdModeList[NUM_CHROMA_MODE - 1]] = false;
+        if (satdModeList[NUM_CHROMA_MODE - 1] == chromaCandModes[1])
+        {
+          m_modeIsEnable[chromaCandModes[2]] = false;
+        }
+        else
+        {
+           m_modeIsEnable[chromaCandModes[1]] = false;
+        }
+      }
+      else
       {
-        modeIsEnable[satdModeList[uiMaxMode - 1 - i]] = 0; // disable the last reducedModeNumber modes
+#endif
+        for (int i = 0; i < 2; i++)
+        {
+#if JVET_AB0149_INTRA_PRED
+          m_modeIsEnable[satdModeList[NUM_CHROMA_MODE - 1 - i]] = false;
+#else
+          modeIsEnable[satdModeList[NUM_CHROMA_MODE - 1 - i]] = false;
+#endif
+        }
+#if JVET_AB0149_INTRA_PRED
       }
+      m_isModeIsEnableUpdated = true;
+      }
+      CHECK(!m_isModeIsEnableUpdated,"For the current call to `EncCu::xCheckRDCostIntra`, the fast search in chrominance was not run before starting the rate-distortion tests in chrominance.");
+      CHECK(!m_modeIsEnable[PLANAR_IDX] || !m_modeIsEnable[LM_CHROMA_IDX] || !m_modeIsEnable[DM_CHROMA_IDX],"PLANAR or LM or DM is rejected during the fast search in chrominance.");
+#endif
+      int32_t numModesForFullRD(NUM_CHROMA_MODE);
+#if JVET_AB0149_INTRA_PRED
+      if (is_shape_handled_pnn && !is_dm_pnn)
+      {
+        numModesForFullRD++;
+      }
+#endif
 
       // save the dist
       Distortion baseDist = cs.dist;
       bool testBDPCM = true;
       testBDPCM = testBDPCM && CU::bdpcmAllowed(cu, COMPONENT_Cb) && cu.ispMode == 0 && cu.mtsFlag == 0 && cu.lfnstIdx == 0;
-      for (int32_t uiMode = uiMinMode - (2 * int(testBDPCM)); uiMode < uiMaxMode; uiMode++)
+      for (int32_t uiMode = uiMinMode - (2 * int(testBDPCM)); uiMode < numModesForFullRD; uiMode++)
       {
-        int chromaIntraMode;
-
+        int chromaIntraMode(
+#if JVET_AB0149_INTRA_PRED
+                            uiMode == NUM_CHROMA_MODE ? PNN_IDX : chromaCandModes[uiMode]
+#else
+                            chromaCandModes[uiMode]
+#endif
+                            );
+        pu.intraDir[CHANNEL_TYPE_CHROMA] = chromaIntraMode;
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+        if (cu.isSepTree()&& cu.idxLfnstPnn && PU::getFinalIntraMode(pu, CHANNEL_TYPE_CHROMA) != PNN_IDX)
+        {
+          continue;
+        }
+#endif
         if (uiMode < 0)
         {
             cu.bdpcmModeChroma = -uiMode;
             chromaIntraMode = cu.bdpcmModeChroma == 2 ? chromaCandModes[1] : chromaCandModes[2];
+          
+          // As `chromaIntraMode` is modified, `pu.intraDir[CHANNEL_TYPE_CHROMA]` is updated.
+          pu.intraDir[CHANNEL_TYPE_CHROMA] = chromaIntraMode;
         }
         else
         {
-          chromaIntraMode = chromaCandModes[uiMode];
-
           cu.bdpcmModeChroma = 0;
+#if JVET_AB0149_INTRA_PRED
+          if (chromaIntraMode != PNN_IDX)
+          {
+#endif
           if( PU::isLMCMode( chromaIntraMode ) && ! PU::isLMCModeEnabled( pu, chromaIntraMode ) )
           {
             continue;
           }
-          if (!modeIsEnable[chromaIntraMode] && PU::isLMCModeEnabled(pu, chromaIntraMode)) // when CCLM is disable, then MDLM is disable. not use satd checking
+          if (PU::isLMCModeEnabled(pu, chromaIntraMode)
+#if JVET_AB0149_INTRA_PRED
+              && !m_modeIsEnable[chromaIntraMode]
+#else
+              && !modeIsEnable[chromaIntraMode]
+#endif
+              )
           {
             continue;
           }
+#if JVET_AB0149_INTRA_PRED
+          }
+#endif
         }
         cs.setDecomp( pu.Cb(), false );
         cs.dist = baseDist;
         //----- restore context models -----
         m_CABACEstimator->getCtx() = ctxStart;
-
-        //----- chroma coding -----
-        pu.intraDir[1] = chromaIntraMode;
-
         xRecurIntraChromaCodingQT( cs, partitioner, bestCostSoFar, ispType );
         if( lumaUsesISP && cs.dist == MAX_UINT )
         {
@@ -1458,10 +1994,18 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
         {
           m_CABACEstimator->getCtx() = ctxStart;
         }
-
-        uint64_t fracBits   = xGetIntraFracBitsQT( cs, partitioner, false, true, -1, ispType );
+#if JVET_AB0149_INTRA_PRED
+        CUCtx cuCtx;
+        cuCtx.isDQPCoded = true;
+        cuCtx.isChromaQpAdjCoded = true;
+#endif
+        uint64_t fracBits   = xGetIntraFracBitsQT( cs, partitioner, false, true, -1, ispType
+#if JVET_AB0149_INTRA_PRED
+                                                  , &cuCtx
+#endif
+                                                  );
         Distortion uiDist = cs.dist;
-        double    dCost   = m_pcRdCost->calcRdCost( fracBits, uiDist - baseDist );
+        dCost   = m_pcRdCost->calcRdCost( fracBits, uiDist - baseDist );
 
         //----- compare -----
         if( dCost < dBestCost )
@@ -1528,6 +2072,9 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner
   {
     cu.ispMode = 0;
   }
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+  return true;
+#endif
 }
 
 
@@ -2908,7 +3455,11 @@ void IntraSearch::xEncCoeffQT( CodingStructure &cs, Partitioner &partitioner, co
         }
         else
         {
-          m_CABACEstimator->residual_coding(currTU, compID);
+          m_CABACEstimator->residual_coding(currTU, compID
+#if JVET_AB0149_INTRA_PRED
+                                            , cuCtx
+#endif
+                                            );
         }
       }
     }
@@ -2928,12 +3479,29 @@ uint64_t IntraSearch::xGetIntraFracBitsQT( CodingStructure &cs, Partitioner &par
   }
   if( bChroma )
   {
-    xEncCoeffQT( cs, partitioner, COMPONENT_Cb, subTuIdx, ispType );
-    xEncCoeffQT( cs, partitioner, COMPONENT_Cr, subTuIdx, ispType );
+    xEncCoeffQT( cs, partitioner, COMPONENT_Cb, subTuIdx, ispType
+#if JVET_AB0149_INTRA_PRED
+                , cuCtx
+#endif
+                );
+    xEncCoeffQT( cs, partitioner, COMPONENT_Cr, subTuIdx, ispType
+#if JVET_AB0149_INTRA_PRED
+                , cuCtx
+#endif
+                );
   }
 
   CodingUnit& cu = *cs.getCU(partitioner.chType);
-  if ( cuCtx && bLuma && cu.isSepTree() && ( !cu.ispMode || ( cu.lfnstIdx && subTuIdx == 0 ) || ( !cu.lfnstIdx && subTuIdx == m_ispTestedModes[cu.lfnstIdx].numTotalParts[cu.ispMode - 1] - 1 ) ) )
+  
+  // In 4:0:0, for a I-slice, `cu.isSepTree()` returns false.
+  if (cuCtx
+#if JVET_AB0149_INTRA_PRED
+      && (cs.slice->isIntra() || cu.isSepTree())
+#else
+      && bLuma
+      && cu.isSepTree()
+#endif
+      && (!cu.ispMode || (cu.lfnstIdx && subTuIdx == 0) || (!cu.lfnstIdx && subTuIdx == m_ispTestedModes[cu.lfnstIdx].numTotalParts[cu.ispMode - 1] - 1)))
   {
     m_CABACEstimator->residual_lfnst_mode(cu, *cuCtx);
   }
@@ -3051,8 +3619,24 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
   if (compID == COMPONENT_Y)
   {
     PelBuf sharedPredTS( m_pSharedPredTransformSkip[compID], area );
+#if JVET_AB0149_INTRA_PRED
+    int default0Save1Load2Switch(default0Save1Load2);
+    PelBuf& sharedPredSwitch(sharedPredTS);
+    PelBuf sharedPredPnn(m_pSharedPredPnn[compID],area);
+    const bool is_context_extracted = uiChFinalMode == PNN_IDX;
+    if (is_context_extracted)
+    {
+      default0Save1Load2Switch = getIsAlreadyComputedPnnRd(CHANNEL_TYPE_LUMA) ? 2 : 1;
+      sharedPredSwitch = sharedPredPnn;
+      setIsAlreadyComputedPnnRd(true, CHANNEL_TYPE_LUMA);
+    }
+    if (default0Save1Load2Switch != 2)
+    {
+      bool contextFlag(false);
+#else
     if( default0Save1Load2 != 2 )
     {
+#endif
       bool predRegDiffFromTB = CU::isPredRegDiffFromTB(*tu.cu, compID);
       bool firstTBInPredReg = CU::isFirstTBInPredReg(*tu.cu, compID, area);
       CompArea areaPredReg(COMPONENT_Y, tu.chromaFormat, area);
@@ -3063,17 +3647,32 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
           if (firstTBInPredReg)
           {
             CU::adjustPredArea(areaPredReg);
-            initIntraPatternChTypeISP(*tu.cu, areaPredReg, piReco);
+            initIntraPatternChTypeISP(*tu.cu, areaPredReg, piReco
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                      , false
+#endif
+                                      );
           }
         }
         else
         {
-          initIntraPatternChTypeISP(*tu.cu, area, piReco);
+          initIntraPatternChTypeISP(*tu.cu, area, piReco
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                                    , false
+#endif
+                                    );
         }
       }
       else
       {
-        initIntraPatternChType(*tu.cu, area);
+        initIntraPatternChType(*tu.cu, area
+#if JVET_AB0149_INTRA_PRED
+                               , contextFlag, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                               , false
+#endif
+                               );
       }
 
       //===== get prediction signal =====
@@ -3096,17 +3695,48 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
             if (firstTBInPredReg)
             {
               PelBuf piPredReg = cs.getPredBuf(areaPredReg);
-              predIntraAng(compID, piPredReg, pu);
+              predIntraAng(compID, piPredReg, pu
+#if JVET_AB0149_INTRA_PRED
+                           , contextFlag
+#endif
+                           );
             }
           }
           else
           {
-            predIntraAng(compID, piPred, pu);
+            predIntraAng(compID, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                         , contextFlag
+#endif
+                         );
           }
         }
       }
-
-      // save prediction
+#if JVET_AB0149_INTRA_PRED
+      if (default0Save1Load2Switch == 1)
+      {
+        sharedPredSwitch.copyFrom(piPred);
+        if (is_context_extracted)
+        {
+#if JVET_AB0149_TM_INF_PNN
+          transferIdxPredictedLfnstPnnMemories(*tu.cu,compID,false);
+#endif
+          transferIdxRepresentationPnnMemories(*tu.cu, false);
+        }
+      }
+    }
+    else
+    {
+      piPred.copyFrom(sharedPredSwitch);
+      if (is_context_extracted)
+      {
+#if JVET_AB0149_TM_INF_PNN
+        transferIdxPredictedLfnstPnnMemories(*tu.cu,compID,true);
+#endif
+        transferIdxRepresentationPnnMemories(*tu.cu, true);
+      }
+    }
+#else
       if( default0Save1Load2 == 1 )
       {
         sharedPredTS.copyFrom( piPred );
@@ -3117,6 +3747,7 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
       // load prediction
       piPred.copyFrom( sharedPredTS );
     }
+#endif
   }
 
 
@@ -3192,12 +3823,20 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
   {
     if (trModes)
     {
-      m_pcTrQuant->transformNxN(tu, compID, cQP, trModes, m_pcEncCfg->getMTSIntraMaxCand());
+      m_pcTrQuant->transformNxN(tu, compID, cQP, trModes, m_pcEncCfg->getMTSIntraMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                , uiChFinalMode == PNN_IDX
+#endif
+                                );
       tu.mtsIdx[compID] = trModes->at(0).first;
     }
     if (!(m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0) || tu.cu->bdpcmMode != 0)
     {
-      m_pcTrQuant->transformNxN(tu, compID, cQP, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
+      m_pcTrQuant->transformNxN(tu, compID, cQP, uiAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                , uiChFinalMode == PNN_IDX && tu.mtsIdx[compID] == MTS_DCT2_DCT2
+#endif
+                                , loadTr);
     }
 
     DTRACE(g_trace_ctx, D_TU_ABS_SUM, "%d: comp=%d, abssum=%d\n", DTRACE_GET_COUNTER(g_trace_ctx, D_TU_ABS_SUM), compID,
@@ -3241,10 +3880,16 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
     }
     PelBuf& codeResi = ( codeCompId == COMPONENT_Cr ? crResi : piResi );
     uiAbsSum = 0;
-
+#if JVET_AB0149_INTRA_PRED
+    const bool isNotSepTreeIspLfnst = !(tu.cu)->isSepTree() && (tu.cu)->ispMode && (tu.cu)->lfnstIdx;
+#endif
     if (trModes)
     {
-      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, trModes, m_pcEncCfg->getMTSIntraMaxCand());
+      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, trModes, m_pcEncCfg->getMTSIntraMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                , uiChFinalMode == PNN_IDX && !tu.jointCbCr && !isNotSepTreeIspLfnst
+#endif
+                                );
       tu.mtsIdx[codeCompId] = trModes->at(0).first;
       if (tu.jointCbCr)
       {
@@ -3254,7 +3899,11 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
     // encoder bugfix: Set loadTr to aovid redundant transform process
     if (!(m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0) || tu.cu->bdpcmModeChroma != 0)
     {
-        m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
+        m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                  , uiChFinalMode == PNN_IDX && tu.mtsIdx[compID] == MTS_DCT2_DCT2 && !tu.jointCbCr && !isNotSepTreeIspLfnst
+#endif
+                                  , loadTr);
     }
     if ((m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0) && 0 == tu.cu->bdpcmModeChroma)
     {
@@ -3414,12 +4063,20 @@ void IntraSearch::xIntraCodingACTTUBlock(TransformUnit &tu, const ComponentID &c
 
     if (trModes)
     {
-      m_pcTrQuant->transformNxN(tu, compID, cQP, trModes, m_pcEncCfg->getMTSIntraMaxCand());
+      m_pcTrQuant->transformNxN(tu, compID, cQP, trModes, m_pcEncCfg->getMTSIntraMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                , false
+#endif
+                                );
       tu.mtsIdx[compID] = trModes->at(0).first;
     }
     if (!(m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0) || tu.cu->bdpcmMode != 0)
     {
-      m_pcTrQuant->transformNxN(tu, compID, cQP, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
+      m_pcTrQuant->transformNxN(tu, compID, cQP, uiAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                , false
+#endif
+                                , loadTr);
     }
     if ((m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[compID] == 0) && tu.cu->bdpcmMode == 0)
     {
@@ -3454,7 +4111,11 @@ void IntraSearch::xIntraCodingACTTUBlock(TransformUnit &tu, const ComponentID &c
     uiAbsSum = 0;
     if (trModes)
     {
-      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, trModes, m_pcEncCfg->getMTSIntraMaxCand());
+      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, trModes, m_pcEncCfg->getMTSIntraMaxCand()
+#if JVET_AB0149_INTRA_PRED
+                                , false
+#endif
+                                );
       tu.mtsIdx[codeCompId] = trModes->at(0).first;
       if (tu.jointCbCr)
       {
@@ -3463,7 +4124,11 @@ void IntraSearch::xIntraCodingACTTUBlock(TransformUnit &tu, const ComponentID &c
     }
     if (!(m_pcEncCfg->getCostMode() == COST_LOSSLESS_CODING && slice.isLossless() && tu.mtsIdx[codeCompId] == 0) || tu.cu->bdpcmModeChroma != 0)
     {
-      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx(), loadTr);
+      m_pcTrQuant->transformNxN(tu, codeCompId, qpCbCr, uiAbsSum, m_CABACEstimator->getCtx()
+#if JVET_AB0149_INTRA_PRED
+                                , false
+#endif
+                                , loadTr);
     }
     if (uiAbsSum > 0)
     {
@@ -4201,8 +4866,17 @@ bool IntraSearch::xRecurIntraCodingACTQT(CodingStructure &cs, Partitioner &parti
       PelBuf         piOrg = orgBuf.bufs[compID];
       PelBuf         piPred = predBuf.bufs[compID];
       PelBuf         piResi = resiBuf.bufs[compID];
-
-      initIntraPatternChType(*tu.cu, area);
+#if JVET_AB0149_INTRA_PRED
+      bool contextFlag = false;
+#endif
+      initIntraPatternChType(*tu.cu, area
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlag, false
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
       if (PU::isMIP(pu, chType))
       {
         initIntraMip(pu, area);
@@ -4210,7 +4884,11 @@ bool IntraSearch::xRecurIntraCodingACTQT(CodingStructure &cs, Partitioner &parti
       }
       else
       {
-        predIntraAng(compID, piPred, pu);
+        predIntraAng(compID, piPred, pu
+#if JVET_AB0149_INTRA_PRED
+                     , contextFlag
+#endif
+                     );
       }
 
       piResi.copyFrom(piOrg);
@@ -4992,29 +5670,94 @@ ChromaCbfs IntraSearch::xRecurIntraChromaCodingQT( CodingStructure &cs, Partitio
 
     PelBuf piPredCb = cs.getPredBuf(cbArea);
     PelBuf piPredCr = cs.getPredBuf(crArea);
-
-    initIntraPatternChType( *currTU.cu, cbArea);
-    initIntraPatternChType( *currTU.cu, crArea);
-
+#if JVET_AB0149_INTRA_PRED
+    const bool is_context_extracted = predMode == PNN_IDX;
+    bool contextFlagCb = false, contextFlagCr = false;
+    PelBuf sharedPredPnnCb(m_pSharedPredPnn[COMPONENT_Cb],cbArea);
+    PelBuf sharedPredPnnCr(m_pSharedPredPnn[COMPONENT_Cr],crArea);
+    int default0Save1Load2Switch = 0;
+    if (is_context_extracted)
+    {
+      default0Save1Load2Switch = getIsAlreadyComputedPnnRd(CHANNEL_TYPE_CHROMA) ? 2 : 1;
+      setIsAlreadyComputedPnnRd(true, CHANNEL_TYPE_CHROMA);
+    }
+    if (default0Save1Load2Switch != 2)
+    {
+#endif
+      initIntraPatternChType(*currTU.cu,
+                             cbArea
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlagCb, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
     if( PU::isLMCMode( predMode ) )
     {
-      xGetLumaRecPixels( pu, cbArea );
-      predIntraChromaLM( COMPONENT_Cb, piPredCb, pu, cbArea, predMode );
-      predIntraChromaLM( COMPONENT_Cr, piPredCr, pu, crArea, predMode );
+        xGetLumaRecPixels(pu, cbArea);
+        predIntraChromaLM(COMPONENT_Cb, piPredCb, pu, cbArea, predMode);
     }
     else if (PU::isMIP(pu, CHANNEL_TYPE_CHROMA))
     {
-      initIntraMip(pu, cbArea);
-      predIntraMip(COMPONENT_Cb, piPredCb, pu);
-
-      initIntraMip(pu, crArea);
-      predIntraMip(COMPONENT_Cr, piPredCr, pu);
+        initIntraMip(pu, cbArea);
+        predIntraMip(COMPONENT_Cb, piPredCb, pu);
+      }
+      else
+      {
+        predIntraAng(COMPONENT_Cb,
+                     piPredCb,
+                     pu
+#if JVET_AB0149_INTRA_PRED
+                     , contextFlagCb
+#endif
+                     );
+      }
+      initIntraPatternChType(*currTU.cu,
+                             crArea
+#if JVET_AB0149_INTRA_PRED
+                             , contextFlagCr, is_context_extracted
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                             , false
+#endif
+                             );
+      if (PU::isLMCMode(predMode))
+      {
+        predIntraChromaLM(COMPONENT_Cr, piPredCr, pu, crArea, predMode);
+      }
+      else if (PU::isMIP(pu, CHANNEL_TYPE_CHROMA))
+      {
+        initIntraMip(pu, crArea);
+        predIntraMip(COMPONENT_Cr, piPredCr, pu);
+      }
+      else
+      {
+        predIntraAng(COMPONENT_Cr,
+                     piPredCr,
+                     pu
+#if JVET_AB0149_INTRA_PRED
+                     , contextFlagCr
+#endif
+                     );
+      }
+#if JVET_AB0149_INTRA_PRED
+      if (default0Save1Load2Switch == 1)
+      {
+        sharedPredPnnCb.copyFrom(piPredCb);sharedPredPnnCr.copyFrom(piPredCr);
+#if JVET_AB0149_TM_INF_PNN
+        transferIdxPredictedLfnstPnnMemories(*currTU.cu,COMPONENT_Cb,false);transferIdxPredictedLfnstPnnMemories(*currTU.cu,COMPONENT_Cr,false);
+#endif
+      }
     }
     else
     {
-      predIntraAng( COMPONENT_Cb, piPredCb, pu);
-      predIntraAng( COMPONENT_Cr, piPredCr, pu);
+      piPredCb.copyFrom(sharedPredPnnCb);piPredCr.copyFrom(sharedPredPnnCr);
+#if JVET_AB0149_TM_INF_PNN
+      transferIdxPredictedLfnstPnnMemories(*currTU.cu,COMPONENT_Cb,true);transferIdxPredictedLfnstPnnMemories(*currTU.cu,COMPONENT_Cr,true);
+#endif
     }
+#endif
 
     // determination of chroma residuals including reshaping and cross-component prediction
     //----- get chroma residuals -----
diff --git a/source/Lib/EncoderLib/IntraSearch.h b/source/Lib/EncoderLib/IntraSearch.h
index f911e0fe2db4c5473a9436646c4dec63097fc290..a3c273439fb3ab88b05a96cce02ee2030486437c 100644
--- a/source/Lib/EncoderLib/IntraSearch.h
+++ b/source/Lib/EncoderLib/IntraSearch.h
@@ -195,6 +195,26 @@ class IntraSearch : public IntraPrediction
 private:
   EncModeCtrl    *m_modeCtrl;
   Pel*            m_pSharedPredTransformSkip[MAX_NUM_TBLOCKS];
+#if JVET_AB0149_INTRA_PRED
+  Pel* m_pSharedPredPnn[MAX_NUM_COMPONENT];
+  bool m_isAlreadyComputedPnnRd[MAX_NUM_CHANNEL_TYPE];
+#if JVET_AB0149_TM_INF_PNN
+  uint32_t m_arrayIdxPredictedLfnstPnn[MAX_NUM_COMPONENT][NUM_LFNST_NUM_PER_SET - 1];
+#endif
+  uint32_t m_idxRepresentationPnn;
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  std::array<std::pair<int8_t, uint64_t>, NB_INTRA_MODES_STATS> m_arrayPairsIdxSsdLumaRegular;
+  std::array<std::pair<int8_t, uint64_t>, NB_INTRA_MODES_STATS> m_arrayPairsIdxSatdLumaRegular;
+#if JVET_AB0149_INTRA_PRED
+  uint64_t m_ssdLumaPnn;
+  uint64_t m_satdLumaPnn;
+  double m_arrayMeasuresLumaPnn[2];
+#if JVET_AB0149_SEARCH_PNN
+  double m_arrayCostsLfnstPnn[NUM_LFNST_NUM_PER_SET - 1][DEPTH_LFNST_GROUP];
+#endif
+#endif
+#endif
 
   XUCache         m_unitCache;
 
@@ -356,6 +376,10 @@ private:
   double     m_modeCostStore[ NUM_LFNST_NUM_PER_SET ][ NUM_LUMA_MODE ];                   // RD cost of each mode for each PU using DCT2
   ModeInfo   m_savedRdModeList[ NUM_LFNST_NUM_PER_SET ][ NUM_LUMA_MODE ];
   int32_t    m_savedNumRdModes[ NUM_LFNST_NUM_PER_SET ];
+#if JVET_AB0149_INTRA_PRED
+  bool m_modeIsEnable[NUM_INTRA_MODE + 1];
+  bool m_isModeIsEnableUpdated;
+#endif
 
   ModeInfo                                           m_savedRdModeFirstColorSpace[4 * NUM_LFNST_NUM_PER_SET * 2][FAST_UDI_MAX_RDMODE_NUM];
   char                                               m_savedBDPCMModeFirstColorSpace[4 * NUM_LFNST_NUM_PER_SET * 2][FAST_UDI_MAX_RDMODE_NUM];
@@ -371,6 +395,12 @@ private:
 
   PelStorage      m_tmpStorageLCU;
   PelStorage      m_colorTransResiBuf;
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void computeSsdsSatdsLumaRegular(const PelBuf& piOrg,const PelBuf& piPred,const uint32_t& uiMode,const int& bitDepth);
+#if JVET_AB0149_INTRA_PRED
+  int computeSsdSatdMeasuresConstrastStructureLumaPnn(const PelBuf& piOrg,const PelBuf& piPred,const int& bitDepth);
+#endif
+#endif
 protected:
   // interface to option
   EncCfg*         m_pcEncCfg;
@@ -428,10 +458,52 @@ public:
   void saveCuAreaCostInSCIPU      ( Area area, double cost );
   void initCuAreaCostInSCIPU      ();
   double findInterCUCost          ( CodingUnit &cu );
+#if JVET_AB0149_INTRA_PRED
+  bool getIsAlreadyComputedPnnRd(const ChannelType& chType) const
+  {
+    return m_isAlreadyComputedPnnRd[chType];
+  }
+  void setIsAlreadyComputedPnnRd(const bool& isAlreadyComputedPnnRd, const ChannelType& chType)
+  {
+    m_isAlreadyComputedPnnRd[chType] = isAlreadyComputedPnnRd;
+  }
+#if JVET_AB0149_TM_INF_PNN
+  void resetIdxPredictedLfnstPnnMemories();
+  void transferIdxPredictedLfnstPnnMemories(CodingUnit& cu,const ComponentID& compID,const bool& isFromMemoryToCu);
+#endif
+  void resetIdxRepresentationPnnMemories();
+  void transferIdxRepresentationPnnMemories(CodingUnit& cu, const bool& isFromMemoryToCu);
+  void setIsModeIsEnableUpdated(const bool& value) {m_isModeIsEnableUpdated = value;}
+#endif
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+  void resetSsdsLumaMemories();
+  void transferSsdsLumaMemories(PredictionUnit& pu) const;
+  void resetSatdsLumaMemories();
+  void transferSatdsLumaMemories(PredictionUnit& pu) const;
+#if JVET_AB0149_INTRA_PRED
+  void resetMeasuresLumaPnnMemories();
+  void transferMeasuresLumaPnnMemories(PredictionUnit& pu) const;
+#if JVET_AB0149_SEARCH_PNN
+  void resetCostsLfnstPnnMemories();
+  void transferCostsLfnstPnnMemories(PredictionUnit& pu) const;
+#endif
+#endif
+#endif
 
 public:
-  bool estIntraPredLumaQT(CodingUnit &cu, Partitioner& pm, const double bestCostSoFar = MAX_DOUBLE, bool mtsCheckRangeFlag = false, int mtsFirstCheckId = 0, int mtsLastCheckId = 0, bool moreProbMTSIdxFirst = false, CodingStructure* bestCS = NULL);
-  void estIntraPredChromaQT       ( CodingUnit &cu, Partitioner& pm, const double maxCostAllowed = MAX_DOUBLE );
+  bool estIntraPredLumaQT(CodingUnit &cu,
+                          Partitioner& pm
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+                         , bool& isTriggeredHeuristicInter
+#endif
+                          , const double bestCostSoFar=MAX_DOUBLE, bool mtsCheckRangeFlag=false, int mtsFirstCheckId=0, int mtsLastCheckId=0, bool moreProbMTSIdxFirst=false, CodingStructure* bestCS=NULL);
+
+#if JVET_AB0149_INTRA_PRED && JVET_AB0149_SEARCH_PNN
+  bool
+#else
+  void
+#endif
+  estIntraPredChromaQT(CodingUnit& cu, Partitioner& pm, const double maxCostAllowed=MAX_DOUBLE);
   void PLTSearch                  ( CodingStructure &cs, Partitioner& partitioner, ComponentID compBegin, uint32_t numComp);
   uint64_t xFracModeBitsIntra     (PredictionUnit &pu, const uint32_t &uiMode, const ChannelType &compID);
   void invalidateBestModeCost     () { for( int i = 0; i < NUM_LFNST_NUM_PER_SET; i++ ) m_bestModeCostValid[ i ] = false; };
diff --git a/source/Lib/Utilities/VideoIOYuv.cpp b/source/Lib/Utilities/VideoIOYuv.cpp
index 8a30ccc5ddcf43123914dd55415a2b741294c890..cc26a7d61570a1832d9aba6d10bf0cad095abcec 100644
--- a/source/Lib/Utilities/VideoIOYuv.cpp
+++ b/source/Lib/Utilities/VideoIOYuv.cpp
@@ -873,6 +873,30 @@ static bool writeField(ostream& fd, const Pel* top, const Pel* bottom,
   return true;
 }
 
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+template<typename T>
+int mirror_array_in_place(T* const ptr_src,const int& height,const int& width,const int& stride,const bool& is_mirrored_horizontally)
+{
+  const int limit_height = is_mirrored_horizontally ? height/2 : height;
+  const int limit_width = is_mirrored_horizontally ? width : width/2;
+  T* ptr_src_temp_0 = ptr_src;
+  T* ptr_src_temp_1 = is_mirrored_horizontally ? ptr_src + (height - 1)*stride : NULL;
+  for (int i = 0; i < limit_height; i++)
+  {
+      for (int j = 0; j < limit_width; j++)
+      {
+          std::swap(ptr_src_temp_0[j],is_mirrored_horizontally ? ptr_src_temp_1[j] : ptr_src_temp_0[width - 1 - j]);
+      }
+      ptr_src_temp_0 += stride;
+      if (is_mirrored_horizontally)
+      {
+        ptr_src_temp_1 -= stride;
+      }
+  }
+  return 0;
+}
+#endif
+
 /**
  * Read one Y'CbCr frame, performing any required input scaling to change
  * from the bitdepth of the input file to the internal bit-depth.
@@ -889,7 +913,12 @@ static bool writeField(ostream& fd, const Pel* top, const Pel* bottom,
  * @param format           chroma format
  * @return true for success, false in case of error
  */
-bool VideoIOYuv::read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSpaceConversion ipcsc, int aiPad[2], ChromaFormat format, const bool bClipToRec709 )
+bool VideoIOYuv::read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSpaceConversion ipcsc, int aiPad[2]
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+                      , const bool& areOriginalFv
+                      , const bool& areOriginalFh
+#endif
+                      , ChromaFormat format, const bool bClipToRec709 )
 {
   // check end-of-file
   if ( isEof() )
@@ -960,6 +989,24 @@ bool VideoIOYuv::read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSp
 #endif
       scalePlane( picOrg.get(compID), m_bitdepthShift[chType], minval, maxval);
     }
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+    if (areOriginalFv || areOriginalFh)
+    {
+      CHECK(pad_h444 != 0,"`pad_h444` is not equal to 0.");
+      CHECK(pad_v444 != 0,"`pad_v444` is not equal to 0.");
+      int error_code{0};
+      if (areOriginalFv)
+      {
+        error_code = mirror_array_in_place(dst,height_full444 >> getComponentScaleY(compID, picOrg.chromaFormat),width_full444 >> getComponentScaleX(compID, picOrg.chromaFormat),stride444 >> getComponentScaleX(compID, picOrg.chromaFormat),false);
+        CHECK(error_code < 0,"Error in `mirror_array_in_place`.");
+      }
+      if (areOriginalFh)
+      {
+        error_code = mirror_array_in_place(dst,height_full444 >> getComponentScaleY(compID, picOrg.chromaFormat),width_full444 >> getComponentScaleX(compID, picOrg.chromaFormat),stride444 >> getComponentScaleX(compID, picOrg.chromaFormat),true);
+        CHECK(error_code < 0,"Error in `mirror_array_in_place`.");
+      }
+    }
+#endif
   }
 
 #if EXTENSION_360_VIDEO
diff --git a/source/Lib/Utilities/VideoIOYuv.h b/source/Lib/Utilities/VideoIOYuv.h
index bf2c470560dae8a67de69bb9c914d55799ac3103..4140383623811b9ab61bf6b6d2752bd618f0a788 100644
--- a/source/Lib/Utilities/VideoIOYuv.h
+++ b/source/Lib/Utilities/VideoIOYuv.h
@@ -77,7 +77,12 @@ public:
 
 
   // If fileFormat=NUM_CHROMA_FORMAT, use the format defined by pPicYuvTrueOrg
-  bool  read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSpaceConversion ipcsc, int aiPad[2], ChromaFormat fileFormat=NUM_CHROMA_FORMAT, const bool bClipToRec709=false );     ///< read one frame with padding parameter
+  bool  read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSpaceConversion ipcsc, int aiPad[2]
+#if JVET_AB0149_ACTIVATE_WRITER_BLOCK_STATS
+            , const bool& areOriginalFv
+            , const bool& areOriginalFh
+#endif
+            , ChromaFormat fileFormat=NUM_CHROMA_FORMAT, const bool bClipToRec709=false );     ///< read one frame with padding parameter
 
   // If fileFormat=NUM_CHROMA_FORMAT, use the format defined by pPicYuv
   bool  write( uint32_t orgWidth, uint32_t orgHeight, const CPelUnitBuf& pic,
diff --git a/training/training_intra_prediction/CMakeLists.txt b/training/training_intra_prediction/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ef78d8173b0756148f3040bed9f364530a23b439
--- /dev/null
+++ b/training/training_intra_prediction/CMakeLists.txt
@@ -0,0 +1,205 @@
+# minimum required cmake version
+cmake_minimum_required( VERSION 3.5 FATAL_ERROR )
+
+# project name
+if( EXTENSION_360_VIDEO )
+  project( NextSoftware360 )
+else()
+  project( NextSoftware )
+endif()
+
+# use ccache
+find_program( CCACHE_FOUND ccache )
+if( CCACHE_FOUND )
+  message( STATUS "ccache found. using it." )
+  set_property( GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache )
+  set_property( GLOBAL PROPERTY RULE_LAUNCH_LINK ccache )
+endif()
+
+# set default CMAKE_BUILD_TYPE to Release if not set
+if( NOT CMAKE_BUILD_TYPE )
+  set( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE )
+endif()
+
+if( NOT DEFINED NNLF_BUILD_WITH_AVX512 )
+  set( NNLF_BUILD_WITH_AVX512 "1" CACHE STRING "Enable/Disable AVX512, options are: 0 (disable) 1 (enable)" )
+endif()
+
+if( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
+  if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
+    set( USE_ADDRESS_SANITIZER OFF CACHE BOOL "Compiles with -sanitize=address and links to libasan" )
+  endif()
+endif()
+
+set( EXTENSION_360_VIDEO OFF CACHE BOOL "If EXTENSION_360_VIDEO is on, 360Lib will be added" )
+set( EXTENSION_HDRTOOLS OFF CACHE BOOL "If EXTENSION_HDRTOOLS is on, HDRLib will be added" )
+set( SET_ENABLE_TRACING OFF CACHE BOOL "Set ENABLE_TRACING as a compiler flag" )
+set( ENABLE_TRACING OFF CACHE BOOL "If SET_ENABLE_TRACING is on, it will be set to this value" )
+
+if( CMAKE_COMPILER_IS_GNUCC )
+  set( BUILD_STATIC OFF CACHE BOOL "Build static executables" )
+endif()
+
+# set c++14
+set( CMAKE_CXX_STANDARD 14 )
+set( CMAKE_CXX_STANDARD_REQUIRED ON )
+
+# compile everything position independent (even static libraries)
+set( CMAKE_POSITION_INDEPENDENT_CODE TRUE )
+
+# set verbose compile options
+#set( CMAKE_VERBOSE_MAKEFILE ON )
+
+# use folders in IDEs for projects (e.g. lib sample app test)
+set_property( GLOBAL PROPERTY USE_FOLDERS ON )
+
+# Include a utility module providing functions, macros, and settings
+include( ${CMAKE_SOURCE_DIR}/../../cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake )
+
+# Enable multithreading
+bb_multithreading()
+
+find_package(OpenMP)
+
+if( OpenMP_FOUND )
+  set( CMAKE_C_FLAGS          "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
+  set( CMAKE_CXX_FLAGS        "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
+  set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" )
+  
+  set( SET_ENABLE_SPLIT_PARALLELISM OFF CACHE BOOL "Set ENABLE_SPLIT_PARALLELISM as a compiler flag" )
+  set( ENABLE_SPLIT_PARALLELISM     OFF CACHE BOOL "If SET_ENABLE_SPLIT_PARALLELISM is on, it will be set to this value" )
+  set( SET_ENABLE_WPP_PARALLELISM   OFF CACHE BOOL "Set ENABLE_WPP_PARALLELISM as a compiler flag" )
+  set( ENABLE_WPP_PARALLELISM       OFF CACHE BOOL "If SET_ENABLE_WPP_PARALLELISM is on, it will be set to this value" )
+endif()
+
+# Enable warnings for some generators and toolsets.
+# bb_enable_warnings( gcc warnings-as-errors -Wno-sign-compare )
+# bb_enable_warnings( gcc -Wno-unused-variable )
+# bb_enable_warnings( gcc-4.8 warnings-as-errors -Wno-unused-variable )
+# for gcc 8.2:
+bb_enable_warnings( gcc warnings-as-errors -Wno-sign-compare -Wno-class-memaccess)
+
+if( XCODE )
+  bb_enable_warnings( clang warnings-as-errors
+                            -Wno-deprecated-declarations
+                            -Wno-unknown-attributes
+                            -Wno-deprecated-register
+                            -Wno-pessimizing-move
+                            -Wno-absolute-value
+                            -Wno-unused-const-variable )
+else()
+  bb_enable_warnings( clang warnings-as-errors
+                            -Wno-unknown-attributes
+                            -Wno-deprecated-register
+                            -Wno-pessimizing-move
+                            -Wno-absolute-value
+                            -Wno-unused-const-variable )
+endif()
+#bb_enable_warnings( clang warnings-as-errors )
+
+# enable warnings
+bb_enable_warnings( msvc warnings-as-errors "/wd4996" "/wd4244")
+
+# enable sse4.1 build for all source files for gcc and clang
+if( UNIX OR MINGW )
+  add_compile_options( "-msse4.1" )
+  set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math -fstrict-aliasing" )
+endif()
+
+# enable parallel build for Visual Studio
+if( MSVC )
+  add_compile_options( "/MP" )
+  add_compile_options( "/EHsc" )
+endif()
+
+# set address sanitizer compiler arguments
+if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
+  if( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
+    if( USE_ADDRESS_SANITIZER )
+      # add compile options
+      add_compile_options( "-fsanitize=address" )
+      add_link_options( "-fsanitize=address" )
+    endif()
+  endif()
+
+  if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0 )
+    add_compile_options( "-fabi-version=6" )
+  endif()
+endif()
+
+set(PATH_TO_DIRECTORY_ROOT_SADL "../../../sadl")
+
+# modify .lldbinit for lldb custom data formatters
+if( XCODE )
+  set( LLDB_INSTALL_ROOT "$ENV{HOME}/.lldb.d" )
+  set( LLDBINIT_FILE "$ENV{HOME}/.lldbinit" )
+  set( ENABLE_LLDBINIT_UPDATE ON )
+  # add custom target to install LLDB files.
+  add_subdirectory("../../lldb")
+endif()
+
+if(USE_SEARCH)
+  if(USE_TM_INF)
+    message(FATAL_ERROR "When `USE_SEARCH` is 1, `USE_TM_INF` has to be 0.")
+  endif()
+  add_compile_definitions(JVET_AB0149_INTRA_PRED=1)
+  add_compile_definitions(JVET_AB0149_SEARCH_PNN=1)
+  add_compile_definitions(JVET_AB0149_TM_INF_PNN=0)
+  add_compile_definitions(NN_FIXED_POINT_IMPLEMENTATION=0)
+  add_compile_definitions(SPARSE_SUPPORT=1)
+  set(TAG_SUFFIX "/search")
+elseif(USE_TM_INF)
+  if(USE_SEARCH)
+    message(FATAL_ERROR "When `USE_TM_INF` is 1, `USE_SEARCH` has to be 0.")
+  endif()
+  add_compile_definitions(JVET_AB0149_INTRA_PRED=1)
+  add_compile_definitions(JVET_AB0149_SEARCH_PNN=0)
+  add_compile_definitions(JVET_AB0149_TM_INF_PNN=1)
+  add_compile_definitions(NN_FIXED_POINT_IMPLEMENTATION=0)
+  add_compile_definitions(SPARSE_SUPPORT=1)
+  set(TAG_SUFFIX "/tm_inf")
+else()
+  add_compile_definitions(JVET_AB0149_INTRA_PRED=0)
+  add_compile_definitions(JVET_AB0149_SEARCH_PNN=0)
+  add_compile_definitions(JVET_AB0149_TM_INF_PNN=0)
+  add_compile_definitions(NN_FIXED_POINT_IMPLEMENTATION=1)
+  set(TAG_SUFFIX "/regular")
+endif()
+if(MSVC)
+  foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES})
+    string(TOUPPER ${CONFIG_TYPE} CONFIG_TYPE)
+    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE}}${TAG_SUFFIX}")
+    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE}}${TAG_SUFFIX}")
+    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE}}${TAG_SUFFIX}")
+  endforeach()
+elseif(UNIX)
+  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}${TAG_SUFFIX}")
+  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE}${TAG_SUFFIX}")
+  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}${TAG_SUFFIX}")
+endif()
+
+# add needed subdirectories
+add_subdirectory("../../source/Lib/CommonLib" "source/Lib/CommonLib")
+add_subdirectory("../../source/Lib/CommonAnalyserLib" "source/Lib/CommonAnalyserLib")
+if( EXTENSION_360_VIDEO )
+  add_subdirectory("../../source/Lib/Lib360" "source/Lib/Lib360")
+  add_subdirectory("../../source/Lib/AppEncHelper360" "source/Lib/AppEncHelper360")
+endif()
+if ( EXTENSION_HDRTOOLS )
+  add_subdirectory("../../source/Lib/HDRLib" "source/Lib/HDRLib")
+endif()
+add_subdirectory("../../source/Lib/DecoderAnalyserLib" "source/Lib/DecoderAnalyserLib")
+add_subdirectory("../../source/Lib/DecoderLib" "source/Lib/DecoderLib")
+add_subdirectory("../../source/Lib/EncoderLib" "source/Lib/EncoderLib")
+add_subdirectory("../../source/Lib/Utilities" "source/Lib/Utilities")
+add_subdirectory("../../source/App/DecoderAnalyserApp" "source/App/DecoderAnalyserApp")
+add_subdirectory("../../source/App/DecoderApp" "source/App/DecoderApp")
+add_subdirectory("../../source/App/EncoderApp" "source/App/EncoderApp")
+add_subdirectory("../../source/App/SEIRemovalApp" "source/App/SEIRemovalApp")
+add_subdirectory("../../source/App/Parcat" "source/App/Parcat")
+add_subdirectory("../../source/App/StreamMergeApp" "source/App/StreamMergeApp")
+add_subdirectory("../../source/App/BitstreamExtractorApp" "source/App/BitstreamExtractorApp")
+add_subdirectory("../../source/App/SubpicMergeApp" "source/App/SubpicMergeApp")
+if( EXTENSION_360_VIDEO )
+  add_subdirectory("../../source/App/utils/360ConvertApp" "source/App/utils/360ConvertApp")
+endif()
diff --git a/training/training_intra_prediction/README.md b/training/training_intra_prediction/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..47be48e6d86c2459198a4d4bb2d7296641565f2d
--- /dev/null
+++ b/training/training_intra_prediction/README.md
@@ -0,0 +1,236 @@
+# Training of the neural network-based intra prediction mode
+
+The documentation "training_workflow.pdf" summarizes the training workflow. The contribution
+JVET-AB0149 summarizes the integration of the neural network-based intra prediction into VTM-11-NNVC.
+
+## Requirements
+
+1. 2.6TB of available storage space for storing the training sets at the training cycle of given index.
+2. No specific requirements regarding the GPUs. Small GPUs with 8GB of GRAM are enough.
+
+It is assumed that the current directory is the root directory of the VTM-11-NNVC repository.
+
+## I. Setups
+
+The first setup consists in building three different versions of VTM-11-NNVC. The first version,
+stored in the directory at "training/training_intra_prediction/bin/regular", corresponds to VTM-11-NNVC
+without Filter-Set, without the neural network-based intra prediction mode. It is used to generate
+the training sets at the training cycle of index 0. The second version, stored in the directory
+at "training/training_intra_prediction/bin/search", corresponds to VTM-11-NNVC without Filter-Set,
+with the neural network-based intra prediction mode in floats. It is used to generate the training
+sets at the training cycles of indices 1, 2, and 3. The third version, stored in the directory
+at "training/training_intra_prediction/bin/tm_inf", corresponds to VTM-11-NNVC with Filter-Sets
+in floats, with the neural network-based intra prediction mode in floats. It is used for the final
+rate-distortion tests.
+
+In the file at "training/training_intra_prediction/run_setups_vtm.sh", please set the two variables
+`PATH_TO_GPLUSPLUS` and `PATH_TO_GCC` following the associated comments. Then,
+
+```sh
+git submodule init
+git submodule update
+cd training/training_intra_prediction
+chmod 755 run_setups_vtm.sh
+./run_setups_vtm.sh
+```
+
+## II. Dispatching the paths to raw data
+
+In III.1, each grid job will create a portion of training sets from a different portion of raw data.
+That is why all the raw data must be dispatched between grid jobs first.
+
+```sh
+python dispatching_paths_to_raw.py nb_jobs --tuple_paths_to_directories_rgbs=path_to_directory_ilsvrc2012_training,path_to_directory_div2k_training --paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved=cfgs_training/bvidvc,path_to_directory_yuvs_bvidvc,cfgs_training/uvg,path_to_directory_yuvs_uvg,cfgs_training/tvd,path_to_directory_yuvs_tvd
+```
+
+* `nb_jobs` : number of grid jobs for generating the training sets via run_generating_data_intra.py in III.1, IV.1, V.1, and VI.1
+* `path_to_directory_ilsvrc2012_training` : path to the directory storing the ILSVRC 2012 training images
+* `path_to_directory_div2k_training` : path to the directory storing the DIV2K training images
+* `path_to_directory_yuvs_bvidvc` : path to the directory storing the BVI-DVC YUV sequences
+* `path_to_directory_yuvs_uvg` : path to the directory storing the UVG YUV sequences
+* `path_to_directory_yuvs_tvd` : path to the directory storing the TVD YUV sequences
+
+For each of the five above paths to directories, the images/{YUV sequences} of interest can be stored
+either in this directory or in a sub-directory inside the directory tree having this directory as root.
+"dispatching_paths_to_raw.py" looks recursively for all images/{YUV sequences} inside the directory tree
+starting from the directory of given path. For example, the ILSVRC 2012 training images can be stored
+in either the directory at `path_to_directory_ilsvrc2012_training` or in any sub-directory inside the
+directory tree having the directory at `path_to_directory_ilsvrc2012_training` as root.
+
+As, for the UVG dataset https://ultravideo.fi/#testsequences, the video sequences cannot be downloaded
+as one pack, it is harder to guess which UVG video sequences are placed in the directory at `path_to_directory_yuvs_uvg`.
+For safety, here are the 23 UVG video sequences expected in the directory at `path_to_directory_yuvs_uvg`.
+
+1. Beauty_1920x1080_120fps_420_8bit_YUV.yuv
+2. Beauty_3840x2160_120fps_420_10bit_YUV.yuv
+3. Bosphorus_1920x1080_120fps_420_8bit_YUV.yuv
+4. Bosphorus_3840x2160_120fps_420_10bit_YUV.yuv
+5. CityAlley_3840x2160_50fps_10bit.yuv
+6. FlowerFocus_3840x2160_50fps_10bit.yuv
+7. FlowerKids_3840x2160_50fps_10bit.yuv
+8. FlowerPan_3840x2160_50fps_10bit.yuv
+9. HoneyBee_1920x1080_120fps_420_8bit_YUV.yuv
+10. HoneyBee_3840x2160_120fps_420_10bit_YUV.yuv
+11. Jockey_1920x1080_120fps_420_8bit_YUV.yuv
+12. Jockey_3840x2160_120fps_420_10bit_YUV.yuv
+13. Lips_3840x2160_120fps_10bit.yuv
+14. RaceNight_3840x2160_50fps_10bit.yuv
+15. ReadySteadyGo_1920x1080_120fps_420_8bit_YUV.yuv
+16. ReadySetGo_3840x2160_120fps_420_10bit_YUV.yuv
+17. RiverBank_3840x2160_50fps_10bit.yuv
+18. ShakeNDry_1920x1080_120fps_420_8bit_YUV.yuv
+19. ShakeNDry_3840x2160_120fps_420_10bit_YUV.yuv
+20. SunBath_3840x2160_50fps_10bit.yuv
+21. Twilight_3840x2160_50fps_10bit.yuv
+22. YachtRide_1920x1080_120fps_420_8bit_YUV.yuv
+23. YachtRide_3840x2160_120fps_420_10bit_YUV.yuv
+
+## III. Training cycle of index 0
+
+### III.1. Generating the training sets
+
+To generate the portion of training sets of index `index_job`, the job of index `index_job`
+runs the encoding of raw data (YUV frames) via VTM-11-NNVC writing intra prediction data.
+
+```sh
+python generating_data_intra.py path_to_directory_training_sets 0, index_job
+```
+
+* `path_to_directory_training_sets` : path to the directory in which you want to store the generated training sets
+* `index_job` : job index
+
+The above command must be launched for `index_job` in [|1, `nb_jobs`|], `nb_jobs` being defined in II.
+
+### III.2. Training the neural networks
+
+The 7 neural networks for intra prediction are trained using the training sets generated in III.1.
+
+```sh
+python training_nn_intra.py path_to_directory_training_sets height,width partitioning_0_reconstruction_vtm sparsity_0 nb_jobs
+```
+
+* `path_to_directory_training_sets` : path to the directory in which the generated training sets are stored, see III.1
+* `height`,`width` : height and width of the blocks predicted by the neural network trained via the above command
+* `nb_jobs` : number of grid jobs for generating the training sets in III.1, `nb_jobs` being used for checking
+
+The above command must be launched for (`height`,`width`) in {(4,4), (4,8), (4,16), (4,32), (8,8), (8, 16), (16,16)}.
+
+## IV. Training cycle of index 1
+
+### IV.1. Generating the training sets
+
+First, it is advised to remove the training sets generated at III.1 before moving on as these training
+sets are relatively large. Then, to generate the training sets at the training cycle of index 1,
+
+```sh
+python generating_data_intra.py path_to_directory_training_sets 1,sparsity_0 index_job
+```
+
+* `path_to_directory_training_sets` : path to the directory in which you want to store the generated training sets
+* `index_job` : job index
+
+The above command must be launched for `index_job` in [|1, `nb_jobs`|], `nb_jobs` being defined in II.
+
+### IV.2. Training the neural networks
+
+The 7 neural networks for intra prediction are re-trained for few iterations using the training sets generated in IV.1.
+
+```sh
+python training_nn_intra.py path_to_directory_training_sets height,width partitioning_1_reconstruction_vtm sparsity_0 nb_jobs
+```
+
+* `path_to_directory_training_sets` : path to the directory in which the generated training sets are stored, see IV.1
+* `height`,`width` : height and width of the blocks predicted by the neural network trained via the above command
+* `nb_jobs` : number of grid jobs used to generate the training sets in IV.1, `nb_jobs` being used for checking
+
+The above command must be launched for (`height`,`width`) in {(4,4), (4,8), (4,16), (4,32), (8,8), (8, 16), (16,16)}.
+
+## V. Training cycle of index 2
+
+### V.1. Generating the training sets
+
+First, it is advised to remove the training sets generated at IV.1 before moving on as these training
+sets are relatively large. Then, to generate the training sets at the training cycle of index 2,
+
+```sh
+python generating_data_intra.py path_to_directory_training_sets 2,sparsity_0 index_job
+```
+
+* `path_to_directory_training_sets` : path to the directory in which you want to store the generated training sets
+* `index_job` : job index
+
+The above command must be launched for `index_job` in [|1, `nb_jobs`|], `nb_jobs` being defined in II.
+
+### V.2. Training the neural networks
+
+#### V.2.1. Training without weight sparsity
+
+The 7 neural networks for intra prediction are re-trained for few iterations using the training sets generated in V.1.
+The sparsity of the neural network weights is not forced.
+
+```sh
+python training_nn_intra.py path_to_directory_training_sets height,width partitioning_2_reconstruction_vtm sparsity_0 nb_jobs
+```
+
+* `path_to_directory_training_sets` : path to the directory in which the generated training sets are stored, see V.1
+* `height`,`width` : height and width of the blocks predicted by the neural network trained via the above command
+* `nb_jobs` : number of grid jobs used to generate the training sets in V.1, `nb_jobs` being used for checking
+
+The above command must be launched for (`height`,`width`) in {(4,4), (4,8), (4,16), (4,32), (8,8), (8, 16), (16,16)}.
+
+#### V.2.2. Training with weight sparsity
+
+The 7 neural networks for intra prediction are re-trained using the training sets generated in V.1.
+The sparsity of the neural network weights is forced.
+
+```sh
+python training_nn_intra.py path_to_directory_training_sets height,width partitioning_2_reconstruction_vtm sparsity_1 nb_jobs
+```
+
+* `path_to_directory_training_sets` : path to the directory in which the generated training sets are stored, see V.1
+* `height`,`width` : height and width of the blocks predicted by the neural network trained via the above command
+* `nb_jobs` : number of grid jobs used to generate the training sets in V.1, `nb_jobs` being used for checking
+
+The above command must be launched for (`height`,`width`) in {(4,4), (4,8), (4,16), (4,32), (8,8), (8, 16), (16,16)}.
+
+## VI. Training cycle of index 3
+
+### VI.1. Generating the training sets
+
+First, it is advised to remove the training sets generated at V.1 before moving on as these training
+sets are relatively large. Then, to generate the training sets at the training cycle of index 3,
+
+```sh
+python generating_data_intra.py path_to_directory_training_sets 3,sparsity_1 index_job --are_costs_parsed
+```
+
+* `path_to_directory_training_sets` : path to the directory in which you want to store the generated training sets
+* `index_job` : job index
+
+The above command must be launched for `index_job` in [|1, `nb_jobs`|], `nb_jobs` being defined in II.
+
+### VI.2. Training the neural networks
+
+The 7 neural networks for intra prediction are re-trained for few iterations using the training sets generated in VI.1.
+
+```sh
+python training_nn_intra.py path_to_directory_training_sets height,width partitioning_3_reconstruction_vtm_ttm sparsity_1 nb_jobs --is_last_cycle
+```
+
+* `path_to_directory_training_sets` : path to the directory in which the generated training sets are stored, see VI.1
+* `height`,`width` : height and width of the blocks predicted by the neural network trained via the above command
+* `nb_jobs` : number of grid jobs used to generate the training sets in VI.1, `nb_jobs` being used for checking
+
+The above command must be launched for (`height`,`width`) in {(4,4), (4,8), (4,16), (4,32), (8,8), (8, 16), (16,16)}.
+
+The argument `--is_last_cycle` indicates that, at the end of the current training, after converting each of the
+7 neural networks to its associated SADL graph, the resulting SADL graph is copied to the directory at "../../models_intra_prediction".
+
+### VII. Rate-distortion tests
+
+The neural network graphs used by the low-complexity version of the neural network-based intra prediction mode
+in VTM-11-NNVC are now stored in the directory at "../../models_intra_prediction". Please use these neural network
+graphs for the rate-distortion tests of VTM-11-NNVC with the low-complexity version of the neural network-based
+intra prediction mode, the neural networks being in floats.
+
+
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAdvertisingMassagesBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAdvertisingMassagesBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bf3146a84b9c7c11249e3ab1a6c6085b0cd57c1c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAdvertisingMassagesBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAdvertisingMassagesBangkokVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..86302edf0c553c26b10231ec7aeb934d75c68b04
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAmericanFootballS2Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c0a5bc57e6a0a580d8a5bf00665ad264a77e1c51
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAmericanFootballS3Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c7429e06537eb21d2567ff6fff9fcf5a8222436e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAmericanFootballS4Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS11Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS11Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df4020c3ac3ec93d58cafe94a29a8955ae2e329b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS11Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAnimalsS11Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..783ba84b15d8224254400afb2a6d381b173eca06
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AAnimalsS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABangkokMarketVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABangkokMarketVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9b826dc81be6a21045dd6a75901e322e4f0a811f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABangkokMarketVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABangkokMarketVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e5e4c17274d5df11f55f729958824cf74fe71216
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABasketballGoalScoredS1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..811fb2b32ad2fb2cbd3fbec1ab1212c590698b33
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABasketballGoalScoredS2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..42bf2f478b0284e9ed77f0055825a69fbfc6d3b0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABasketballS1YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a8d872413390377bf5ef1a25d9a2ad027d164a9d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABasketballS2YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS3YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS3YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2408fd9a7fb49765c2b3afec78ef275e98d0c3f5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS3YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABasketballS3YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABoatsChaoPhrayaRiverVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABoatsChaoPhrayaRiverVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8dc85a262fadf60796c7a379197100693273f036
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABoatsChaoPhrayaRiverVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABoatsChaoPhrayaRiverVidevo_3840x2176_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABobbleheadBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABobbleheadBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..195c218de5213329870aef6f1ae90cb2790b8182
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABobbleheadBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABobbleheadBVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABookcaseBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABookcaseBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..06858e69242ec584f3d3dc346d52d13abd0785d1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABookcaseBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABookcaseBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABoxingPracticeHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABoxingPracticeHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ccd40b4469e3e26bc61b7aa30982e6220ced3049
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABoxingPracticeHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABoxingPracticeHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABricksBushesStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksBushesStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..be7de499dba1c8ee96f447f26e8b47c2d64c3a46
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksBushesStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABricksBushesStaticBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABricksLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c67c1cced551ad1752599657a8468810a5e4be33
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABricksLeavesBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABricksTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..73690dbba9e8e663bd639665d8a3f07641ad13fc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABricksTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABricksTiltingBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABubblesPitcherS1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABubblesPitcherS1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c41d5152117f4679b36d911618d4110a46ada372
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABubblesPitcherS1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABubblesPitcherS1BVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..933bf2342c77823e0e94e5b39e08bc3d90e59ccb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABuildingRoofS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..01185ba8a14225baae533df98af2f6e0af07bb2e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABuildingRoofS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..acbd40c0d3fae41cf1bdbe1f052244a204080c88
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABuildingRoofS3IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b945e836a79e5ef71f5423761776bc936c8771fb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABuildingRoofS4IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABuntingHangingAcrossHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABuntingHangingAcrossHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..80718555a795ff8ddc496841be8943b6a2edb3c1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABuntingHangingAcrossHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABuntingHangingAcrossHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ABusyHongKongStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ABusyHongKongStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4814fb0e5d341823499eb7ffd5ff88df09a2a377
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ABusyHongKongStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ABusyHongKongStreetVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACalmingWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACalmingWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..832acabe3d30ee0bde0659c21c6d412458870616
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACalmingWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACalmingWaterBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACarpetPanAverageBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACarpetPanAverageBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..15e6828b392e5ef270bc1ec79908b3a493c568d6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACarpetPanAverageBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACarpetPanAverageBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACatchBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACatchBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9b8647cdede8ffe3e91db8019dd6074eb8e0c97c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACatchBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACatchBVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACeramicsandSpicesMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACeramicsandSpicesMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e4cca5087de90de3e42c77e6a17fdc345213192f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACeramicsandSpicesMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACeramicsandSpicesMoroccoVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACharactersYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACharactersYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..eb4a88a64b6e5bdc375d0e4fe243192134d8a45e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACharactersYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACharactersYonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasPresentsIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasPresentsIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cd82aa20c9666c9a8873b6754e26b103e8a02195
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasPresentsIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AChristmasPresentsIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasRoomDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasRoomDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3e05df55e8a9b9a9056b627ac2fda6e26221fe4f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AChristmasRoomDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AChristmasRoomDareful_3840x2176_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AChurchInsideMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AChurchInsideMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2caec41f7f785b54e04b86dc027ded7db8afa8f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AChurchInsideMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AChurchInsideMCLJCV_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c168592ed5a56bc7cf8f5403c8c7b5c6927d360a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityScapesS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f5669dcf5f55b58776e3c3ba909168be0f15a2a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityScapesS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ffbf8fd1cef1a5261fb7708788f7ea0db47275a6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityScapesS3IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a4d1576fa2681528c840a2037f232d7c54e3c04e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e36dcd6740bfb5fa720f2f7c0bac14033f450afc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS3IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a629e484277318ea30f1297356034126429bf599
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS4IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f88b6dd9fb11bcb839c13f3685993ce39db1ae73
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS5IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS6IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS6IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0f4c8d0dbb7416ba02ef19ad35519fe4ed917baf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS6IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS6IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS7IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS7IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a2c7c6d5443b7b4e6e0962b9e1181c66e61497dc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS7IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACityStreetS7IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACloseUpBasketballSceneVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACloseUpBasketballSceneVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0275f03fa3eb416b2c8323e0c693ebd7323683fc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACloseUpBasketballSceneVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACloseUpBasketballSceneVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACloudsStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACloudsStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a623464570e3fd9e02ff8ca606741aa7fff149a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACloudsStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACloudsStaticBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulDecorationWatPhoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulDecorationWatPhoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d94d372c8b1a4c0dccb666e7f4ed7260cc7f7a60
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulDecorationWatPhoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AColourfulDecorationWatPhoVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulKoreanLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulKoreanLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4d13f7c2a03e6ab7050d5cccba77f85e6650e009
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulKoreanLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AColourfulKoreanLanternsVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulPaperLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulPaperLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c030e9d81fb3abb1d518585d2099872a44ae715d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulPaperLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AColourfulPaperLanternsVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulRugsMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulRugsMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..79d639d11465dab479a84178ca2c222f32431bfe
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AColourfulRugsMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AColourfulRugsMoroccoVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AConstructionS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AConstructionS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..76b8d579c9949dbf1860b84c0dc8eab6dc332001
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AConstructionS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AConstructionS2YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACostaRicaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACostaRicaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cf0eebc97b4e97712eb425600aa12f0dfb567b00
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACostaRicaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACostaRicaS3Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1f4e4045aa96fab7c4747f4708788ede596d8b11
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACrosswalkHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d9f9367fe08c59d15c31c7e31eb13277f18b86fa
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACrosswalkHongKong2S1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bc0c6ceae06e1b4ab1cc9bc60f5595bd8a0c60ea
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACrosswalkHongKong2S2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e8ca4ac7dc1d0ecca4dbafc24c8bdeb0d7ed7071
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACrosswalkHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACrowdRunMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACrowdRunMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..88f308e443d48748808d8a4cd595e44ed208d589
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACrowdRunMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACrowdRunMCLV_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..13e96047d236867c9af0a50b238a20668cdced03
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACyclistS1BVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistVeniceBeachBoardwalkVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistVeniceBeachBoardwalkVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..47e5c1037564e6dba1b1d959e53d6baea0c3b062
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ACyclistVeniceBeachBoardwalkVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ACyclistVeniceBeachBoardwalkVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ea658bea8e4e7aeff20aa3800774e22251fdf21d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ADollsScene1YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7762f2c9a51b1add26c2d063693a3d068361be79
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ADollsScene2YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ADowntownHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ADowntownHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..06848226c9443f4394e9051602db41eb9a589b20
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ADowntownHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ADowntownHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ADrivingPOVHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ADrivingPOVHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5e625a5fc87f714541e90a180dfd853866e1bc03
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ADrivingPOVHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ADrivingPOVHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ADropsOnWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ADropsOnWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c89c04b6937b957b6a4ac579d7be251b42020890
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ADropsOnWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ADropsOnWaterBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AElFuenteMaskLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AElFuenteMaskLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..418805ae2915e07fa8569df7fd38340cf3e02b81
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AElFuenteMaskLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AElFuenteMaskLIVENetFlix_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c60db98e08ef773baa3e545f8edc89dda7de4bcd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AEnteringHongKongStallS1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2bfbef71e20092c900cbef27a8b73e87f72267be
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AEnteringHongKongStallS2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFerrisWheelTurningVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFerrisWheelTurningVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6b06be3cc1fa50bef0d5f3cd90422b930222c454
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFerrisWheelTurningVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFerrisWheelTurningVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFireS18Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS18Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2329587b43724a8041821d673c773800728cc4db
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS18Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFireS18Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFireS21Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS21Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4ce5beb370eae9674b787c584cc6e9871d59f3e3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS21Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFireS21Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFireS71Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS71Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8d5bff0f4d4e021c8fd0feee6b3dae0813aeb228
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFireS71Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFireS71Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3428fb450854ca4ab20043472c022645992d22ef
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFirewoodS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1d399e4e5845de463a8f06dc0fa2be153f2d8bf8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFirewoodS2IRIS_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFitnessIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFitnessIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4df18e49e8d29c5ae188255d1a4080a18ca06cf9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFitnessIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFitnessIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFjordsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFjordsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c1bddf3614885837513b90f47ae4d35f44e3bdee
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFjordsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFjordsS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlagShootTUMSVT.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlagShootTUMSVT.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..06c2f563339896ba68b8734514216707f794a223
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlagShootTUMSVT.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlagShootTUMSVT_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..01494060315c1f0b243a92cf949e17a0372ea54e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlowerChapelS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b1c43f85a5f3a75dc41101edcc671d4f81c00212
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlowerChapelS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingCountrysideDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingCountrysideDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0f7fd32497f5b0a0c6c458350de262fd52dd359e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingCountrysideDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlyingCountrysideDareful_3840x2176_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingMountainsDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingMountainsDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6c1dc41ef964757fcc6fa0141056802dd38de532
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingMountainsDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlyingMountainsDareful_3840x2176_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingThroughLAStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingThroughLAStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f682536823c58037696dc9fc6eec6db85fce7f67
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFlyingThroughLAStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFlyingThroughLAStreetVidevo_3840x2176_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AFungusZoomBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AFungusZoomBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..66a14ee3b546f05fb3081472958bf7501ccaba5e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AFungusZoomBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AFungusZoomBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AGrassBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AGrassBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..606eeb3c97630c24a3243c1b9978f7e77fc05095
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AGrassBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AGrassBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AGrazTowerIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AGrazTowerIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..58a905d5d8c10e0403a1f31b9658bbfb99c2f830
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AGrazTowerIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AGrazTowerIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHamsterBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHamsterBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0a336239417fb6f49ed984f612708f0135e7fab9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHamsterBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHamsterBVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHarleyDavidsonIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHarleyDavidsonIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c97eab5d0164e94eaf3718ff80ae510e6ff0ee6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHarleyDavidsonIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHarleyDavidsonIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongIslandVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongIslandVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1673a1c72790d7006262555c965eac3b26740e01
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongIslandVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongIslandVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2d320ecb71936a1ccd6e90789eb1a9298b6c016a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7ddd5b207e423b7984ffd685e602adb1965d9539
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..04e3effbc84720a414a438a08111cda12106f161
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket3S1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fab4a2495dd6fd27920c48090c179f2873aa9316
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket3S2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..301e9f0a7a66b514a98c373a677ef9968f708ee3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket4S1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..272ea1a73977ea067a04c6d3f345f039f8e85e30
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongMarket4S2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1a1ea6f4267508aeb4fd34811a730de681f63e77
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f64c02b4a9d309c307affbfee5c592dfc1e4e1c7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongS2Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2302fbdce2c3ce57084e75f0b56ce50993712011
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHongKongS3Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHorseDrawnCarriagesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseDrawnCarriagesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df5e246888cc1ab12b979a048857559d9f6265a1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseDrawnCarriagesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHorseDrawnCarriagesVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1b611453febbccbd3375fe729ee0e95929b66163
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHorseStaringS1Videvo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57d7f34c0fe9b949bef99f895bcca71e774c832f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AHorseStaringS2Videvo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AJockeyHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AJockeyHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1ce120351c39a9980b7fd8e377aa418f522f27e7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AJockeyHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AJockeyHarmonics_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c73b0150d54023134e2c2e0c93ea1d045b5dbdf4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AJoggersS1BVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS2BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS2BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..639a26182b83f880c0e2f7c68e766fb3854f32ef
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS2BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AJoggersS2BVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AKartingIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AKartingIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..45c55d52869874de6475347c07777ef739863c11
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AKartingIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AKartingIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AKoraDrumsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AKoraDrumsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..08a9a0287bfb61ce6c72685332c5ada6d7c9f749
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AKoraDrumsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AKoraDrumsVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALakeYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALakeYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8be3c94a0d23af62a541ccda6c0373d08fba9e91
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALakeYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALakeYonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALampLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALampLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9386b47e1c5cdcea46b2fbbe519a7103ed704c19
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALampLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALampLeavesBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALaundryHangingOverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALaundryHangingOverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..50e0ae0486b90e35bf5a8c89bf25106e23d0b70e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALaundryHangingOverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALaundryHangingOverHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d529d3213c0dbec777b97cd78d7f13b929066ecb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALeaves1BVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves3BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves3BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..af03153e505388a7785a59cf7e3cce690e25e061
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALeaves3BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALeaves3BVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALowLevelShotAlongHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALowLevelShotAlongHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..80602aba82fc432de356c193c0f666950e7ec103
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALowLevelShotAlongHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALowLevelShotAlongHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8384f18f2a6d10f38a1f1f0ce4fc1fb5e0aedf8f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALungshanTempleS1Videvo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..83c0b06c9a17075955514d1b6fe219f0c12e1729
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ALungshanTempleS2Videvo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AManMoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AManMoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..667ba2bba6216877048d309dfac474d16b20ebc4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AManMoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AManMoTempleVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AManStandinginProduceTruckVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AManStandinginProduceTruckVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e95abac76f94d6e30d4d5b82acf42a17e2b0e293
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AManStandinginProduceTruckVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AManStandinginProduceTruckVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AManWalkingThroughBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AManWalkingThroughBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cbdca8dced0d76ac8034c88356d025d471af6f9c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AManWalkingThroughBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AManWalkingThroughBangkokVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1979fefce2a3c7c19f6badb61de6f7a0981d41a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMaplesS1YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fb1d5922e4d58e1fc3e01617e1275d01d2667ff8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMaplesS2YonseiUniversity_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..94b641bbacc3139861873a0d725f06a4e50e1eb7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMirabellParkS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c0e3fd7194294478d68bdee36df21b276a605664
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMirabellParkS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMobileHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMobileHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a448726d114e3bd21c9daeb572bccdaeb3b900da
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMobileHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMobileHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanCeramicsShopVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanCeramicsShopVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7f51af241b1cecbc45d1ddca42f59650b6a08fa2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanCeramicsShopVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMoroccanCeramicsShopVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanSlippersVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanSlippersVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c36e887d5b34223b2b20e271bac8e0e487e467a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanSlippersVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMoroccanSlippersVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMuralPaintingVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMuralPaintingVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a2391f01fed657e194f93e0e49a07a98193c5f6f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMuralPaintingVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMuralPaintingVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c4e3f4d8d702911db450b8d9ce69f0bb5ec359f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMyanmarS4Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS6Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS6Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c1591f26ffb6df9eb172f7798abc0e291756e912
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS6Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMyanmarS6Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AMyeongDongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AMyeongDongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a76b3f6dc62bea8e69683a7e6c3038d7cbaf765a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AMyeongDongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AMyeongDongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ANewYorkStreetDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ANewYorkStreetDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..61508b0199e2cb475a85d5057b765cee728eca8e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ANewYorkStreetDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ANewYorkStreetDareful_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AOrangeBuntingoverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AOrangeBuntingoverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..040df24e1ad7ec7d29afbc383815a63b5ad91d59
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AOrangeBuntingoverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AOrangeBuntingoverHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APaintingTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APaintingTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2b02ba5272d00f32c0e077b6ea507e311822ddf7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APaintingTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APaintingTiltingBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AParkViolinMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AParkViolinMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..28540f113921fd349085aaef612cd03447157a1f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AParkViolinMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AParkViolinMCLJCV_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APedestriansSeoulatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APedestriansSeoulatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3d63847f858a8aad0776e26da5dd43351bfab25c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APedestriansSeoulatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APedestriansSeoulatDawnVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APeopleWalkingS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APeopleWalkingS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ee8a2fdc91f23b73afb99eea1f41fff422dcedec
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APeopleWalkingS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APeopleWalkingS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APersonRunningOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APersonRunningOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7fceab98f0c39ecc315d83ab254437af504b71ba
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APersonRunningOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APersonRunningOutsideVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APillowsTransBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APillowsTransBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a14e33ef7f7cace7f1b4bc2715c9c79dd28945e1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APillowsTransBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APillowsTransBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APlasmaFreeBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APlasmaFreeBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..88ba7145cbaca6cf5c546e61e16eaaec50b6a22f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APlasmaFreeBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APlasmaFreeBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/APresentsChristmasTreeDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/APresentsChristmasTreeDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c7c52f6df20a5cd986cf492339e138a325815935
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/APresentsChristmasTreeDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : APresentsChristmasTreeDareful_3840x2176_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AReadySetGoS2TampereUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AReadySetGoS2TampereUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ecfdd8dd14605fc5a649b9c5b7c8661adc767125
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AReadySetGoS2TampereUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AReadySetGoS2TampereUniversity_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AResidentialBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AResidentialBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..843d763d57ef0f48ce41fe6a7b35e9fd642c9a82
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AResidentialBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AResidentialBuildingSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ARollerCoaster2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ARollerCoaster2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f16776698b09de5b4f1a30fb564d63ca3822b43c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ARollerCoaster2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ARollerCoaster2Netflix_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ARunnersSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ARunnersSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e01cfd1b2cf8c55675c9b5e6310b41d3a485532b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ARunnersSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ARunnersSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0642c0a5c542d6f45ef934890b30f29947394273
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ARuralSetupIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..632bfdefcbb0fa85d6590711325ebe601b6f2303
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ARuralSetupS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AScarfSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AScarfSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bbe0440ec2e3ac23f457aca20b3ed838e1d13d1b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AScarfSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AScarfSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASeasideWalkIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASeasideWalkIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7d0cd49e3c7fee1e479ddd45ca7b492ba6ecea83
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASeasideWalkIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASeasideWalkIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASeekingMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASeekingMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f10bad13e9dd6dc000833a98d971ae0612f5183d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASeekingMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASeekingMCLV_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASeoulCanalatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASeoulCanalatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aa32817cda2851eb6fb4fafee3920a646b7c0793
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASeoulCanalatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASeoulCanalatDawnVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AShoppingCentreVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AShoppingCentreVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a78a33c91c55c1571ad5528b9fe1f62f7124982a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AShoppingCentreVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AShoppingCentreVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASignboardBoatLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASignboardBoatLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..391742e233c53570f7c2c21bb82414b8e3f6687c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASignboardBoatLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASignboardBoatLIVENetFlix_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASkyscraperBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASkyscraperBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..99221034a6d273586055430b4316a450769f3feb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASkyscraperBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASkyscraperBangkokVidevo_3840x2176_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeClearBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeClearBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..78f5e2966cdf3917f680744bdd542a1f64d07821
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeClearBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASmokeClearBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeS45Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeS45Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4512561e0c46709850ca987ea22019e5628f50dd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASmokeS45Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASmokeS45Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASparklerBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASparklerBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..872b6541ee59a3fed280b1163f16545e1a4d260c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASparklerBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASparklerBVIHFR_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASquareAndTimelapseHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareAndTimelapseHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..955c1238b76e71906ec5e47b8882b7da6e45edd0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareAndTimelapseHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASquareAndTimelapseHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0b2f57409c5f32979bb2b702a9546790c5e80134
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASquareS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..971b2f925687861c9213a4559c7d894285fd111b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ASquareS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ASquareS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetArtVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetArtVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..44015f560cec3501347692cef8e1c85aaa89f68a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetArtVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetArtVidevo_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..85cc6df9367ae9aa68a2bf653059d090402a0e4e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetDancerS1IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6c8cd84652f41a5cf0bda80039c61d3443898e2c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetDancerS2IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e7772d6a3901a19483fcc60322329f18ee580eda
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetDancerS3IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7fee3d520ef75559d02aa6db9c2d788c24d2ea89
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetDancerS4IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1112a5f08a028f138b7feced556dbeb4a59ac48e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetDancerS5IRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..470041d115c863562efa1eba2f3b66ff2046aa80
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetsOfIndiaS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4558265241268e3f1116cc1f6a9af57f11c653ef
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetsOfIndiaS2Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8de22a6005ad255941a34f47fda862ef6ab9bee2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AStreetsOfIndiaS3Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..86ffa6f95aaddc1119c7d860da999d0dcf8cfac6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaiChiHongKongS1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c2a6553b6aba03a5c3089a57e28fb27d8ed246c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaiChiHongKongS2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftops8Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftops8Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..59428fa1350ae44c9896dc600762e8ce0530c6a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftops8Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaipeiCityRooftops8Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a8118ca894015edb1a1175201395b07537cb4ea9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaipeiCityRooftopsS1Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..125b1af78800e4fb12543842d67e2bf55b7dc64b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaipeiCityRooftopsS2Videvo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATaksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATaksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3a2a69994652ce348512e76bc3418b0eb6b86ec9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATaksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATaksinBridgeVidevo_3840x2176_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATallBuildingsSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATallBuildingsSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..474f79665c52bc9d8c670bee485434940e131161
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATallBuildingsSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATallBuildingsSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATennisMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATennisMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b5691f1aa82b4760a490f8605f35da0b3fb3507f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATennisMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATennisMCLV_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AToddlerFountain2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AToddlerFountain2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..17128735e58078685e58c6581f40043fc0d35780
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AToddlerFountain2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AToddlerFountain2Netflix_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATouristsSatOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATouristsSatOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2bfd065a45e82119842a4a845d9de12e3b8e4f9b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATouristsSatOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATouristsSatOutsideVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AToyCalendarHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AToyCalendarHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7d31f0d58659b137be458d713aa44792691f45e9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AToyCalendarHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AToyCalendarHarmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingDownHongKongSideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingDownHongKongSideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8595e46a70df580d9be4931bc8d0d0ba5427ce00
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingDownHongKongSideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrackingDownHongKongSideVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastRestaurantVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastRestaurantVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..255b387aaaeca1c9b5710035e7c572bb2e691e8d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastRestaurantVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrackingPastRestaurantVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastStallHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastStallHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f18d32b61b2dbc0ce1c30f9713fd18fe7214c15d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastStallHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrackingPastStallHongKongVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATraditionalIndonesianKecakVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATraditionalIndonesianKecakVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d95707969c1a022f762879861dc5dfdb768bc7d2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATraditionalIndonesianKecakVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATraditionalIndonesianKecakVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficFlowSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficFlowSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ec58f896947fa5ee4cd5ce6312e5122a72f60be5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficFlowSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrafficFlowSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficandBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficandBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9cf80606fc25ed57e891bf4c2c2d3178f0111cd5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficandBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrafficandBuildingSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficonTasksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficonTasksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1ce7ccb3629092fdc56fbfcd5652e88546c2884f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATrafficonTasksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATrafficonTasksinBridgeVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATreeWillsBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATreeWillsBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a0b7d5ab339b36501ec68ad08d2bda85f445deff
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATreeWillsBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATreeWillsBVITexture_3840x2176_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATruckIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATruckIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..52dda699c35bc207826c3026308afc720c64734b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATruckIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATruckIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/ATunnelFlagS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/ATunnelFlagS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4f5b7c8d1fc2387cf5643da930b54e73a47a0cb7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/ATunnelFlagS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ATunnelFlagS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AUnloadingVegetablesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AUnloadingVegetablesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..70d2e96b6c25423e04c755af24e166c2833fa714
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AUnloadingVegetablesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AUnloadingVegetablesVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS1LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS1LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9955117269650a69ede954e5d39616989e63c607
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS1LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVegetableMarketS1LIVENetFlix_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS2LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS2LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..49b512c933996d57990faa0bf6131bcacd7e9721
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS2LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVegetableMarketS2LIVENetFlix_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS3LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS3LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..005829df76b380187f65cdb7b377058507db1a5d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS3LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVegetableMarketS3LIVENetFlix_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS4LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS4LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f08a6e0734904754822ecbd579c8eca60851b8ed
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS4LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVegetableMarketS4LIVENetFlix_3840x2176_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fbdd1c7f5ba0e55417226338bff4a82affcc8973
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVeniceS1Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a07f9788bb61b80a98395c62273ec11aae1ccbcd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVeniceS2Harmonics_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceSceneIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceSceneIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1263b609e14d5daa55d8bb155f2d5b3ec440a9e9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AVeniceSceneIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AVeniceSceneIRIS_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownKhaoStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownKhaoStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..db100391375363dd372caa9827822908411b2578
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownKhaoStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWalkingDownKhaoStreetVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownNorthRodeoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownNorthRodeoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..96364a9fa0e282815b4031288bf9db71e2604223
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownNorthRodeoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWalkingDownNorthRodeoVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingThroughFootbridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingThroughFootbridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b7729cac72eb7e07da6a7f5d2267127b39c5a6c3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWalkingThroughFootbridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWalkingThroughFootbridgeVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWatPhoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWatPhoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dd1311809ae7fc2733470fa791fe66f9d97cce88
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWatPhoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWatPhoTempleVidevo_3840x2176_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS65Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS65Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3e7b04fe18e2f3109220c0af4e23a58c16368c36
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS65Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWaterS65Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS81Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS81Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4ab70c3862f71cc3ab9f997405184a043335268a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWaterS81Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWaterS81Mitch_3840x2176_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWoodSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWoodSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7cec42cc24a6aaf179e7f1508021ee730004e5ef
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWoodSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWoodSJTU_3840x2176_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/AWovenVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/AWovenVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7f47fdf14addded941acee680783a6a9e49b2b26
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/AWovenVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : AWovenVidevo_3840x2176_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2176
+FramesToBeEncoded             : 64
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAdvertisingMassagesBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAdvertisingMassagesBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c245d4487142b7a7c7b325e7041db4b1e981719c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAdvertisingMassagesBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAdvertisingMassagesBangkokVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5cbad739404be55a9fb11b8a06828e40f619e6be
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAmericanFootballS2Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..46a53f2545847c0e48828bc76a61c2cf7c4996a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAmericanFootballS3Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..834d1819205ffa2b101bbc303ab6906ae190e0fc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAmericanFootballS4Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS11Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS11Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c84c9c67e77d1c3fed7ad647823caee7d680f88
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS11Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAnimalsS11Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c09af8a17f82e8f7af41721ff04b21eaad42015e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BAnimalsS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBangkokMarketVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBangkokMarketVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..72a978e9ff21d3dadd8cffc8d511279d2a3d6697
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBangkokMarketVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBangkokMarketVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6a091cec680cfd5fc1aff62e288dae1dbbb0a708
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBasketballGoalScoredS1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f3999ea7d6760cb5f00e471fbff2eeeedcfa91a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBasketballGoalScoredS2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d9ccd198ac529e8ac419b98ecb00990b4d3dc020
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBasketballS1YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1216901ecfdb62532c5032b1e28a433a52057ed1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBasketballS2YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS3YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS3YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8f73ffc8f665485b9dde4f965cde9041440c8f80
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS3YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBasketballS3YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBoatsChaoPhrayaRiverVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBoatsChaoPhrayaRiverVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..06cd2a64130640fe91791b46b79e1c4b8414027f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBoatsChaoPhrayaRiverVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBoatsChaoPhrayaRiverVidevo_1920x1088_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBobbleheadBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBobbleheadBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d179a8140930a5472d37a42f6bd5e3b3c9ad5b79
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBobbleheadBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBobbleheadBVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBookcaseBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBookcaseBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3224531fc0a5814adf337c7103cb5cf729fca9bf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBookcaseBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBookcaseBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBoxingPracticeHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBoxingPracticeHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8c8c06bb8b97c092bad9cf4261bc0e67193160c8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBoxingPracticeHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBoxingPracticeHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBricksBushesStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksBushesStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..89e0c97b69fc70d234bad5492c0041e08c5897ce
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksBushesStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBricksBushesStaticBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBricksLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6fc3dd5592e5d2188f7af1a788a978e018a22275
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBricksLeavesBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBricksTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..66a27ecd06c25af5f58779734397c03117e8a65d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBricksTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBricksTiltingBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBubblesPitcherS1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBubblesPitcherS1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2d16264cbc0796bec8ac33944cebca237618dcc5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBubblesPitcherS1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBubblesPitcherS1BVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5f551009a8f2fad3ab68dd6b7f86c62f60578eb3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBuildingRoofS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..44d6a936e53731b1e7882a84767840cc80eb95eb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBuildingRoofS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..32cfb2c3f38ac1196ba97c7e43ca290b96a1994e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBuildingRoofS3IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0dca7e62f309cfe558d32e0acc41908b4ab56e41
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBuildingRoofS4IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBuntingHangingAcrossHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBuntingHangingAcrossHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..27b1636584968eb0b4370d976a5fac33bc6fed49
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBuntingHangingAcrossHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBuntingHangingAcrossHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BBusyHongKongStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BBusyHongKongStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c63fa963a6733fb58a4b3a88246dd96afe406dcb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BBusyHongKongStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BBusyHongKongStreetVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCalmingWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCalmingWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..43b2779ede3311000377c25afb74651d39b986cb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCalmingWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCalmingWaterBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCarpetPanAverageBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCarpetPanAverageBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2c34d12f31fc175d6abb283ef4e175633f4b9bd1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCarpetPanAverageBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCarpetPanAverageBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCatchBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCatchBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2e8d8fb77dae4355434e616f7321367def3f9fad
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCatchBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCatchBVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCeramicsandSpicesMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCeramicsandSpicesMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1a4ce212fc3ab680ee2661e129ebdd10491d4a44
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCeramicsandSpicesMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCeramicsandSpicesMoroccoVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCharactersYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCharactersYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f3161e45bc98e48a7000213037d8e7950eeac860
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCharactersYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCharactersYonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasPresentsIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasPresentsIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fd044dcc694267e98f52cc3ee4181b18e0662995
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasPresentsIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BChristmasPresentsIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasRoomDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasRoomDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..79dc100852859d0e785c48043e587261e5af0fda
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BChristmasRoomDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BChristmasRoomDareful_1920x1088_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BChurchInsideMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BChurchInsideMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..911c59a8b16771c4c08f4d12c00fd31815436dc3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BChurchInsideMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BChurchInsideMCLJCV_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..da56ccc7b1cbc147b783e58e33bf981318c76044
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityScapesS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b377635b5bca96dcaa9f9f2071d5fdbb4c020948
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityScapesS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cb7fb17103a092e6f7617553e935f6b6d97841e2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityScapesS3IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6d25be0608a102ca83e935895f56f4dbf738285c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6a9ff74244677cf14d41ad0c928fd59b41287a25
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS3IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df23f0e02fac069244388663b27d26bbb50ae0c2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS4IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f3a2ca21d425876d2a4748734f41ddb545007b05
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS5IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS6IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS6IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3ff400cdbe7b576baa9c7be137c2c78ed69dadd7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS6IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS6IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS7IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS7IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7ed739fb74ae5f097aecd9a64a36f5ee325425fa
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS7IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCityStreetS7IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCloseUpBasketballSceneVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCloseUpBasketballSceneVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b6ff5f981b6a76bbc0516c0f6855a22577cd8d31
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCloseUpBasketballSceneVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCloseUpBasketballSceneVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCloudsStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCloudsStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..59573e7635511b9bcd641bc4cee07c19ba506486
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCloudsStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCloudsStaticBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulDecorationWatPhoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulDecorationWatPhoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..da68650e20f890404c98ccd79f4c405de7310bdb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulDecorationWatPhoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BColourfulDecorationWatPhoVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulKoreanLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulKoreanLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..455710e90e89402dffa829a60a7dc0a89cc6e496
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulKoreanLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BColourfulKoreanLanternsVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulPaperLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulPaperLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5a353ad20d8b511ab88329bb888efb29ddf14147
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulPaperLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BColourfulPaperLanternsVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulRugsMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulRugsMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..714630943f8a33d4a9d2b8d8edd9c2063ded9abf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BColourfulRugsMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BColourfulRugsMoroccoVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BConstructionS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BConstructionS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..89d9c865dda40ea7cbdde8acf7706395c59ec52f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BConstructionS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BConstructionS2YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCostaRicaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCostaRicaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9d6aec42ee114a63be09c459468ed5522deecf8e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCostaRicaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCostaRicaS3Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6527cec7db2ee33d4492231f8598008fd8726ff6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCrosswalkHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a0908ebc9c3bef2d45caaa38c7f72553706e047d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCrosswalkHongKong2S1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..62454c6ab001466093d8a1c998f55aebd0516092
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCrosswalkHongKong2S2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e41da3a67f8443ff896bd69d622003ffea81e20b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCrosswalkHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCrowdRunMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCrowdRunMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..33ca5b31d20d9aa5709711889f9e6d6bd56c574b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCrowdRunMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCrowdRunMCLV_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b2d669ac9f39f1bd7fd3d23e03f932497a49d81f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCyclistS1BVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistVeniceBeachBoardwalkVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistVeniceBeachBoardwalkVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f198b996c075d62efb57c10394aacd376ee14bfd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BCyclistVeniceBeachBoardwalkVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BCyclistVeniceBeachBoardwalkVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..35e9d3096ae128f639ff7e15bc8e6907d67f46a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BDollsScene1YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a81df624bcc8a1512634c9e45a274c36373dd4f2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BDollsScene2YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BDowntownHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BDowntownHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..028fb392c627aa310386b899ffa4a790768a28d5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BDowntownHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BDowntownHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BDrivingPOVHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BDrivingPOVHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e87d37ee99e4e95a22d1b4b8cabe7414ee0093a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BDrivingPOVHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BDrivingPOVHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BDropsOnWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BDropsOnWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aa07c30f53159fbbac5de6db256d790133b97701
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BDropsOnWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BDropsOnWaterBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BElFuenteMaskLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BElFuenteMaskLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1624be1e34e34a04240db9898237f62dacc8f465
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BElFuenteMaskLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BElFuenteMaskLIVENetFlix_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1adaae1ec6e4bdaf8f58fb23c8d2b39e6ffc14fd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BEnteringHongKongStallS1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7bb03fed9b58d3e4624a34646846b8c5afb3f534
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BEnteringHongKongStallS2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFerrisWheelTurningVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFerrisWheelTurningVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c7ea042187ceb6e2c581a02c8b83b121ee082c9f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFerrisWheelTurningVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFerrisWheelTurningVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFireS18Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS18Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e0b7031b7bed6d2961c9172738e8d3a400cfe11b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS18Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFireS18Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFireS21Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS21Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..140daa00df3153b25f4a80d0fc5ece370155d394
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS21Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFireS21Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFireS71Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS71Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1624bb8bb52e28f11ca37ca3e71adf4505f89dd0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFireS71Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFireS71Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9cbcd022e6d1bd806fde0d389e981a54fa862b3a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFirewoodS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5db7ae813ba1d2850446fadd577749ca07590012
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFirewoodS2IRIS_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFitnessIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFitnessIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..24548acf50fe44552dbe9dc58cfac9fa73dee155
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFitnessIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFitnessIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFjordsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFjordsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cac1fed4dea9b3dd66b90615d06b245692ba7d87
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFjordsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFjordsS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlagShootTUMSVT.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlagShootTUMSVT.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..323216301baf22d677f1d6d450d577a5fbf80307
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlagShootTUMSVT.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlagShootTUMSVT_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c25487836e58152848ff1f5f72ae245b83b638e7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlowerChapelS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d4db52fa3fd239e5a356e1ceb309a33e7e169fca
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlowerChapelS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingCountrysideDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingCountrysideDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d9b3b1e9e9dadd47fd73de6b42a6a52032ee7add
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingCountrysideDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlyingCountrysideDareful_1920x1088_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingMountainsDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingMountainsDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2ebec0491e8d7178ce536e88e2441961816f8272
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingMountainsDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlyingMountainsDareful_1920x1088_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingThroughLAStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingThroughLAStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..78a917e952d69dbc4169c2a2cd4ca7c1c813fb2d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFlyingThroughLAStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFlyingThroughLAStreetVidevo_1920x1088_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BFungusZoomBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BFungusZoomBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6ea8e6f1b576fc4341a78edc419be4f4281598a0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BFungusZoomBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BFungusZoomBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BGrassBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BGrassBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..afcb2352e6ca3a137aad02affec8314ed58eee17
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BGrassBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BGrassBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BGrazTowerIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BGrazTowerIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57c1ded699316fa8ea68d469d6cc985422b476b6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BGrazTowerIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BGrazTowerIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHamsterBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHamsterBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d02992ab9d0d76ec0d6e391cde7ab5a981c1f433
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHamsterBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHamsterBVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHarleyDavidsonIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHarleyDavidsonIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d457492ea44c482987f91296077f26412db148bf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHarleyDavidsonIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHarleyDavidsonIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongIslandVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongIslandVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7d95ae7173bd201ed4626a51d6cedfe4cbe7b4b9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongIslandVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongIslandVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..355ebe65a36125983288055bd336fb213b5d6362
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6f8276641584ce48fe8856436a781558089a3a13
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c4964a8a3eca386e1f4835323aa78ef5e3b13f1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket3S1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d3700b157762a967ef7040abcce0f4374a601d5f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket3S2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d0fd58f06345daf24b879e5b73564e3f3ad47a21
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket4S1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..12d38ad8d61dd292dd8ad59a5db51c3de6a27606
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongMarket4S2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fc7723a0a379a75edd2bdd7e5c65b5260c089bad
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c6f9a3ba9f25cf1ba0111578ddd2278644836ada
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongS2Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7149015b0e520b5b3e531f52ffd74f22229b0119
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHongKongS3Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHorseDrawnCarriagesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseDrawnCarriagesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..954e5a3d6562d2e2fc4a7bc8d2dba17d38765e8e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseDrawnCarriagesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHorseDrawnCarriagesVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f78b44340471d53aaa606ea1708d8323c4d16bad
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHorseStaringS1Videvo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cad9888a9d42ad18a5ecbf38016555d459d2ca22
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BHorseStaringS2Videvo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BJockeyHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BJockeyHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1bb0c72ac818b5205927f42cbc9c27637203cd7c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BJockeyHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BJockeyHarmonics_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df7b5e40cb880410f24c3bc775f390f233396c13
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BJoggersS1BVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS2BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS2BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f2455f65cf94122fd546ef3f43ec346ca89f0d90
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS2BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BJoggersS2BVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BKartingIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BKartingIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..33577f3b46a780e8535e97e5d45445d617eb1cd8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BKartingIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BKartingIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BKoraDrumsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BKoraDrumsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ad948907107d0746f2a98063c9794402fcf7d015
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BKoraDrumsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BKoraDrumsVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLakeYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLakeYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..190c35cb7f91e0cf4bc60f92e52c8ff4060829d7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLakeYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLakeYonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLampLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLampLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..630e6e7018b687fa6beeda252758f96f8c491d2f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLampLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLampLeavesBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLaundryHangingOverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLaundryHangingOverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3d4704700f246c935c6ec9e83feceab2536f9fbc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLaundryHangingOverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLaundryHangingOverHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..069d2dce1cd935233785aa53bc8458db2c96fee0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLeaves1BVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves3BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves3BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3359288d144e20a0c80c6ea1d1ea341ecf600870
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLeaves3BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLeaves3BVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLowLevelShotAlongHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLowLevelShotAlongHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..25c6c6356cc9bc8ffaa1c70f1610634084b2dab6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLowLevelShotAlongHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLowLevelShotAlongHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..25e4bd1301ddd6d5ddacc02e60e5f287ca670e89
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLungshanTempleS1Videvo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e1fd587ce3147012fe78bde4d5ad06468732761f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BLungshanTempleS2Videvo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BManMoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BManMoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a55325a95f4b248275ad28deb6357b18cf779f83
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BManMoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BManMoTempleVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BManStandinginProduceTruckVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BManStandinginProduceTruckVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cc943486d023ce7baf59f24c0a4255364c1f7c1b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BManStandinginProduceTruckVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BManStandinginProduceTruckVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BManWalkingThroughBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BManWalkingThroughBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c0dedd6502c0a7691d57b7ff24fcfc83820ec365
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BManWalkingThroughBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BManWalkingThroughBangkokVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1d8bc5efd0dcf1ae0c77ace7982a85647d8154bd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMaplesS1YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..47aa9e2134c522bd521ca84a042814b84346aac7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMaplesS2YonseiUniversity_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ce49df1827aa9f65f227bb90226acb3a7d2aa1cb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMirabellParkS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e9fe7533639f40263b75dc9e416c761e943b2ef3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMirabellParkS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMobileHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMobileHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..db58837c8d5b3c28baebcce183318e8d4fd71148
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMobileHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMobileHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanCeramicsShopVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanCeramicsShopVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0267d3cdfd47c786ac847f345968d89c1f8c451e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanCeramicsShopVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMoroccanCeramicsShopVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanSlippersVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanSlippersVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dfc6060fc568c3e6eca28184287ed23c0675e425
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanSlippersVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMoroccanSlippersVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMuralPaintingVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMuralPaintingVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..54fc8d759a0fa30b3f9e119519834beb53ea5fe8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMuralPaintingVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMuralPaintingVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c49d69a24a863df12a463493dd2ce19be738a596
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMyanmarS4Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS6Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS6Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b7495e2984baa21daea76b60549e5103dfabbc71
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS6Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMyanmarS6Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BMyeongDongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BMyeongDongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9b213f5f4b73a366a3719bee707229d24adc9ef8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BMyeongDongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BMyeongDongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BNewYorkStreetDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BNewYorkStreetDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ad9732f07cbff7eaf86054ca6e3688c2ba6415c2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BNewYorkStreetDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BNewYorkStreetDareful_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BOrangeBuntingoverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BOrangeBuntingoverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..53209b7232c71cad5fcc1f4e38eecdac344578d9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BOrangeBuntingoverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BOrangeBuntingoverHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPaintingTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPaintingTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2a0bf99cde47fa8a44a5fdd5441fc34c9b788397
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPaintingTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPaintingTiltingBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BParkViolinMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BParkViolinMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3629091769a77be0e555ff08a76fe3af36146505
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BParkViolinMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BParkViolinMCLJCV_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPedestriansSeoulatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPedestriansSeoulatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..475f101cdaea32690a6c3dbb2956c45407f25e1b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPedestriansSeoulatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPedestriansSeoulatDawnVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPeopleWalkingS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPeopleWalkingS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d7c19617a853dd20dd35b25b02e9e5bd9e41f46d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPeopleWalkingS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPeopleWalkingS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPersonRunningOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPersonRunningOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5b1314590b3f052b380bd094149fa4a9ac4320d1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPersonRunningOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPersonRunningOutsideVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPillowsTransBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPillowsTransBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..77d9ef9822a8648fff709d25303614912e7477ba
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPillowsTransBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPillowsTransBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPlasmaFreeBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPlasmaFreeBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2ef4e2a05e7dd9e50cb86334e18ecdb3942a9f50
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPlasmaFreeBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPlasmaFreeBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BPresentsChristmasTreeDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BPresentsChristmasTreeDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cc0af4bbcde94b32f379b065fd685134691d5088
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BPresentsChristmasTreeDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BPresentsChristmasTreeDareful_1920x1088_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BReadySetGoS2TampereUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BReadySetGoS2TampereUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4d1784980c0a9d7f2cd833be74ec097ed22cd3c2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BReadySetGoS2TampereUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BReadySetGoS2TampereUniversity_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BResidentialBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BResidentialBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bcbaafeb3dc6abfddeed74c305ce09dff9c264c3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BResidentialBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BResidentialBuildingSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BRollerCoaster2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BRollerCoaster2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..962736ae0abdb0273a2e5441c46c6f64fb53de37
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BRollerCoaster2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BRollerCoaster2Netflix_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BRunnersSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BRunnersSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2f2ab27836775f9e9b26c3d3c7c2d90906aadd2b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BRunnersSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BRunnersSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e3d8b83c55ec04aa977be6bb64044b226b434e6f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BRuralSetupIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a9368faf29584d427992b3c5dbd0020dd3be3d19
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BRuralSetupS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BScarfSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BScarfSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c392dfcded9953177d2505be25870a8bf5f4677
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BScarfSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BScarfSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSeasideWalkIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSeasideWalkIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cee67800c2db93f601088c451819c58395f35ae5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSeasideWalkIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSeasideWalkIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSeekingMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSeekingMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..baffe3f8682433cec9bd8228a4d5e1442c69b5b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSeekingMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSeekingMCLV_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSeoulCanalatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSeoulCanalatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..34ccaf0e2a21a7c7ba40e431b1495d019ed375e4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSeoulCanalatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSeoulCanalatDawnVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BShoppingCentreVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BShoppingCentreVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d775fd7479adf07479bb7f6ed9d96f18e7d21118
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BShoppingCentreVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BShoppingCentreVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSignboardBoatLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSignboardBoatLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..741224bb705afa384dc2c0435d178a3567f8fc76
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSignboardBoatLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSignboardBoatLIVENetFlix_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSkyscraperBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSkyscraperBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ba315fae96695e39d3e4a4c588eb9fc182f8788d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSkyscraperBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSkyscraperBangkokVidevo_1920x1088_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeClearBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeClearBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e0df8cee8d98212fb84c08758a1b008ff4b74390
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeClearBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSmokeClearBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeS45Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeS45Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7b971f63c43eeb89d8bd73d48967770482e7f756
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSmokeS45Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSmokeS45Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSparklerBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSparklerBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b4a7a5a344707bb161879a80fae57c3d3a86dd81
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSparklerBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSparklerBVIHFR_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSquareAndTimelapseHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareAndTimelapseHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c31441867480b0b5d792074c528c27f2837da7eb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareAndTimelapseHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSquareAndTimelapseHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1ba888084e1d03ebc0d09cd6b23db8f75efa6b20
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSquareS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..75a71ebc28f14fbd1302daaa244c755c1d4b0514
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BSquareS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BSquareS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetArtVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetArtVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f0ab62cde11d01b3a8c4f0f950d6822357520c07
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetArtVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetArtVidevo_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a1a64dfb143873376a9b0c63b5c2a01af24f0676
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetDancerS1IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c9c4bc4c1b616a7250a3c5326bea5bfc1d6c21e3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetDancerS2IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bebd7eb604d1df42f3e146663c82ccc452d4545c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetDancerS3IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c9220893765d21827af6a1918fa1ac19820530be
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetDancerS4IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..61b6cb68911d60c757beb82b4fb9db3412824137
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetDancerS5IRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..142e7b9f33d0ef86664d71133b98ad4165190853
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetsOfIndiaS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e631cca3d892df61c3546cf170d7664356e82cad
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetsOfIndiaS2Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d421dbad08900ed3b1bf80ca79b7991b9dfcae2e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BStreetsOfIndiaS3Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3f9f99230610427a781ca9c8e236b2b377903385
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaiChiHongKongS1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..95fb6fdc7104a4ff7d5ffae8085beaa3c2f3751f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaiChiHongKongS2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftops8Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftops8Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..397435f6fb01557466c1762da699729383db79f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftops8Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaipeiCityRooftops8Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..687c4278f11cb4ab7485303f7d0bd54f79f3cbf1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaipeiCityRooftopsS1Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c05ee9298129c7153818049f79f2a55e244ed83
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaipeiCityRooftopsS2Videvo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTaksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTaksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..967f854a0d14a2da5f545ea1c24769121bb0d001
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTaksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTaksinBridgeVidevo_1920x1088_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTallBuildingsSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTallBuildingsSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b4257e4b6632cfd33bd124ad27c62d2f4a3babcd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTallBuildingsSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTallBuildingsSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTennisMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTennisMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9d72bef7dc4681bcc7eb1de5acae56c63d84cd20
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTennisMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTennisMCLV_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BToddlerFountain2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BToddlerFountain2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0cfc4540112cab97332edcec713276f7cacb99bb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BToddlerFountain2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BToddlerFountain2Netflix_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTouristsSatOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTouristsSatOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8a445d698eba60a6b199ce4fdf0333d171b8e371
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTouristsSatOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTouristsSatOutsideVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BToyCalendarHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BToyCalendarHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..452ea48f5dc669618c80c0ba58eaddb5e9452952
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BToyCalendarHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BToyCalendarHarmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingDownHongKongSideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingDownHongKongSideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ccff09d70d9e3dd52f9950d9c688d7b3d0cc4691
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingDownHongKongSideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrackingDownHongKongSideVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastRestaurantVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastRestaurantVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..469c7014a4cdcaa9fafc03047b730d9a9485610e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastRestaurantVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrackingPastRestaurantVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastStallHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastStallHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..588b161a224ca8df13afacdd1ce961c045d8f002
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastStallHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrackingPastStallHongKongVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTraditionalIndonesianKecakVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTraditionalIndonesianKecakVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ce8867a44f7fd74ad5b5411dc8458e4d370296ba
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTraditionalIndonesianKecakVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTraditionalIndonesianKecakVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficFlowSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficFlowSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..feb8d625768f89d97f1e11896fdd8cc3d2884fa3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficFlowSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrafficFlowSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficandBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficandBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..29c212286a9bb5b0a79555ff62c0157de1b64c28
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficandBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrafficandBuildingSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficonTasksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficonTasksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d47967bb8b9b93c077193c43df8c069dc802c657
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTrafficonTasksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTrafficonTasksinBridgeVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTreeWillsBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTreeWillsBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..403386950e7de5b7d1753994cd60085146aff18c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTreeWillsBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTreeWillsBVITexture_1920x1088_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTruckIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTruckIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..24f6efddef03a9d8c5fc53b0c906d78ee5d8bea8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTruckIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTruckIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BTunnelFlagS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BTunnelFlagS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..886719bfed146b407a6149fa29eea9878f4ee0d3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BTunnelFlagS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BTunnelFlagS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BUnloadingVegetablesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BUnloadingVegetablesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bb33815e641269eee98f233637c71e99748dd027
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BUnloadingVegetablesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BUnloadingVegetablesVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS1LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS1LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..418acdf95bbfc9c9a5e77848bbbee29a9d853368
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS1LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVegetableMarketS1LIVENetFlix_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS2LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS2LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b5ce4e0d6342b7c19119a07c8e5ea121485aed9b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS2LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVegetableMarketS2LIVENetFlix_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS3LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS3LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9adc6592472e38ffeb84b24c09b2c76381e3ec0e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS3LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVegetableMarketS3LIVENetFlix_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS4LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS4LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8cb1c458208c8f558cab0675a76d6f1b3801d206
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS4LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVegetableMarketS4LIVENetFlix_1920x1088_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1bff67cf7bef84069ad33d6ae9cac98987b3cbfa
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVeniceS1Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4b78f43294835aac809a357818c7849514b8ee8f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVeniceS2Harmonics_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceSceneIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceSceneIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e579b91c0febd9430c00e8b4e98d6b2d52919e8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BVeniceSceneIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BVeniceSceneIRIS_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownKhaoStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownKhaoStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3996c681433eb9f4786d85c03a7bad9d75fb6d71
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownKhaoStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWalkingDownKhaoStreetVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownNorthRodeoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownNorthRodeoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..be30f80249f4d4873ec8252be88cfc5b9bcdc3e9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownNorthRodeoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWalkingDownNorthRodeoVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingThroughFootbridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingThroughFootbridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fa364af54730f214b2af73eded6e87f65e1ef2c3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWalkingThroughFootbridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWalkingThroughFootbridgeVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWatPhoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWatPhoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2b61b7d80dc41fa514c50b1f04e6ec88cd272d1a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWatPhoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWatPhoTempleVidevo_1920x1088_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS65Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS65Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3102253be900c762809da9dea42d17440e42ecfd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS65Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWaterS65Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS81Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS81Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..01fea939419f287d0aa7df074a0a78ec513ae40a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWaterS81Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWaterS81Mitch_1920x1088_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWoodSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWoodSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b09460b8c9f80f48f0c71d233c7f3048a3d411e1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWoodSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWoodSJTU_1920x1088_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/BWovenVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/BWovenVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b73948974440825b70c9a0f8ff67c65a723ea99d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/BWovenVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : BWovenVidevo_1920x1088_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1088
+FramesToBeEncoded             : 64
+Level                         : 5
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAdvertisingMassagesBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAdvertisingMassagesBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0638825922466f37de5e596f72eb8f87da82ad0d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAdvertisingMassagesBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAdvertisingMassagesBangkokVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4fcdbd9b60d07b9d3cc2de5f9d54bdb8146e38e7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAmericanFootballS2Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bdb97197aa197952ff9a64d184d54aa06665b9e5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAmericanFootballS3Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..677ea67f0a60d57ad4d26d2b963f3db4243fbb7b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAmericanFootballS4Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS11Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS11Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..880a2191ac767e8c5039a15680cdbbe8e3944651
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS11Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAnimalsS11Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..19c5f5f0e50f5c12143f45a6c0ff71a569e2eb38
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CAnimalsS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBangkokMarketVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBangkokMarketVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..72812c23b15de150353004dff6b351e4c6ef3d62
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBangkokMarketVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBangkokMarketVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4e37137aaed4fd9de784bfc02650c7b9e69f6cd6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBasketballGoalScoredS1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..406b18e0ee4001c37190f5a05027c7b795926e9f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBasketballGoalScoredS2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a4ea932cdda77bf5c5ae38baa69e7807b340078f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBasketballS1YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2184106ebf16c4d65527e7094a6d7df3c695d85d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBasketballS2YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS3YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS3YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c89d46a341a8ca5f8d2cd7c71c04a4e4e0c05fca
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS3YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBasketballS3YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBoatsChaoPhrayaRiverVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBoatsChaoPhrayaRiverVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df4bbe731e4a2a70ea2c3ed989202d447ca90084
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBoatsChaoPhrayaRiverVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBoatsChaoPhrayaRiverVidevo_960x544_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBobbleheadBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBobbleheadBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..36e84a62c18451103b5f7260bb1f57a58ee33ab3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBobbleheadBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBobbleheadBVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBookcaseBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBookcaseBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..47a95de2c29ef4a643487d08a58f0785f8b10146
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBookcaseBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBookcaseBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBoxingPracticeHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBoxingPracticeHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0b1f0119ff5101a4b22377e25baa3ee463c8016b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBoxingPracticeHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBoxingPracticeHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBricksBushesStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksBushesStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5e3c6aeaeaeca84cd6ab4be97580dfaf383b0cbe
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksBushesStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBricksBushesStaticBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBricksLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3f16f31ffa4b78ed43c13422bd8f01b91a120972
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBricksLeavesBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBricksTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f2d6e625f26a1990822e50fbed27b04100399451
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBricksTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBricksTiltingBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBubblesPitcherS1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBubblesPitcherS1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..950801be4b028038dabb80933b2ec3da1cbf2e17
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBubblesPitcherS1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBubblesPitcherS1BVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e9bef4996692bd828119d1453225ce65fad21254
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBuildingRoofS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e96c00f1ae770ede3bd227018977d493031e3e55
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBuildingRoofS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4a415c5c547d7a093e0e57f053402145a6fb953a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBuildingRoofS3IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e0497d4d89e889f304969baec208a90db52c0815
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBuildingRoofS4IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBuntingHangingAcrossHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBuntingHangingAcrossHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f710b8b79de5bed25cb77f0219a5b4be0de78625
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBuntingHangingAcrossHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBuntingHangingAcrossHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CBusyHongKongStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CBusyHongKongStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f2d139eae5fa9279708c7b81a384e02e3746ab83
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CBusyHongKongStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CBusyHongKongStreetVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCalmingWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCalmingWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bb24752eec8f00935c7831617381261e44fdbfc3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCalmingWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCalmingWaterBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCarpetPanAverageBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCarpetPanAverageBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..77b0bbba64d0d7ae4ada213dc60fbf74f949a271
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCarpetPanAverageBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCarpetPanAverageBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCatchBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCatchBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..76d290cde14f647655d510105c63e2b314a0df1c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCatchBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCatchBVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCeramicsandSpicesMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCeramicsandSpicesMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3192c035e6065b9b4014feb2234303dedc5a82a1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCeramicsandSpicesMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCeramicsandSpicesMoroccoVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCharactersYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCharactersYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fe94b05e8f7566416ffefd72a6e30c1f4c8192fe
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCharactersYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCharactersYonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasPresentsIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasPresentsIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c95b83e055e882a461f04bd90c89d96c2fd6a6f6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasPresentsIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CChristmasPresentsIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasRoomDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasRoomDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ac592bb7cdc2e949e927d714c9af5a6fb4d07ff2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CChristmasRoomDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CChristmasRoomDareful_960x544_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CChurchInsideMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CChurchInsideMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..43103a070f7290cc9e4ae6f5549378d62a7195b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CChurchInsideMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CChurchInsideMCLJCV_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b18e75f321c49c2f46d40c84e0f39b26d0476e9f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityScapesS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0390b93f48ec46dfa9090707dd30f7b523ba0bc2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityScapesS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2334c7c3b67760520a8414cfc3462045ed1a4cdc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityScapesS3IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ac3d8a7e406a508d9a375f42535e2c46fb8bd07f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9a55a2fd0dba2ac0e2d296462aa62fc86fb9915f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS3IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..78defae656ba39a08185928163f18583e3ae0699
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS4IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..793b72c5b649432e4084504b98534ee95423ce95
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS5IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS6IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS6IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1423f20a4df73476c2a3fce1f4c0dc21489ca166
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS6IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS6IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS7IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS7IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1595e5569ecb94fda9a0b7f1b557cb5a57663aa1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS7IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCityStreetS7IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCloseUpBasketballSceneVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCloseUpBasketballSceneVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1b7102022ef1ca22eb09c15c19a0c564eab9fa8e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCloseUpBasketballSceneVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCloseUpBasketballSceneVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCloudsStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCloudsStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a49f70f89cab4524edb4145c56e17e2b55643e7e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCloudsStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCloudsStaticBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulDecorationWatPhoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulDecorationWatPhoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..998f116e7566abda4e42b03653e6bd67c0ab2fd2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulDecorationWatPhoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CColourfulDecorationWatPhoVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulKoreanLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulKoreanLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4499164bea3396b3e8d4ff67bce477d810432b62
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulKoreanLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CColourfulKoreanLanternsVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulPaperLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulPaperLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a31f686fbddf5d4a1bfab4f5bc54d9df10dafa0f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulPaperLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CColourfulPaperLanternsVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulRugsMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulRugsMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f340cc1b9aea800d8a0104974578c5fec458d762
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CColourfulRugsMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CColourfulRugsMoroccoVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CConstructionS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CConstructionS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d5eb300f1b2e3c34a6d35fb8583fa94f184b3785
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CConstructionS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CConstructionS2YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCostaRicaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCostaRicaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..372f02fb3f07c9113d3dc4b6685492f7f00b0f93
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCostaRicaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCostaRicaS3Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e77af5790e7679fd877aeebb1505e78f7c11d0f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCrosswalkHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ef174a899797fdc28acff15cf16a4d4836783fe3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCrosswalkHongKong2S1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b56e9c77bab9ca02129476b518486feb78795fe2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCrosswalkHongKong2S2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..456d22ebe1652a0e33ed4d2bb5b227d2185fa9e2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCrosswalkHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCrowdRunMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCrowdRunMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3ae527db1d7924d7c8423140f53181aa264cf828
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCrowdRunMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCrowdRunMCLV_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6e053f9f3f68e3f61bfad57381c115f0114a5ef9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCyclistS1BVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistVeniceBeachBoardwalkVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistVeniceBeachBoardwalkVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bd5ff1ce1df5827548cbcf51d31abd9d4ce96ee7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CCyclistVeniceBeachBoardwalkVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CCyclistVeniceBeachBoardwalkVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0a5361c56806e9bf9971f841ee913584a3c5d5dc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CDollsScene1YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e5be29c30f01bbbcee34ae16d707e585c47a2d21
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CDollsScene2YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CDowntownHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CDowntownHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..31a471ac55fcd131b87b38728a311e5139b49495
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CDowntownHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CDowntownHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CDrivingPOVHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CDrivingPOVHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5fb91d96832ccdd940cd4fad176a865780b1db3c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CDrivingPOVHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CDrivingPOVHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CDropsOnWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CDropsOnWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e4a0ab5f735e6c308161171021316d233dfa53c8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CDropsOnWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CDropsOnWaterBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CElFuenteMaskLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CElFuenteMaskLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..73a2caa79225032a4d7a39efe72f1c4166d49bc5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CElFuenteMaskLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CElFuenteMaskLIVENetFlix_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..997bb9143b5219954ace1f9783062c052e963a4f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CEnteringHongKongStallS1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..35a715366b4269728e6046f15206955399cb298c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CEnteringHongKongStallS2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFerrisWheelTurningVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFerrisWheelTurningVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c47287ecf3e2461ef53f2b930caa8bf9fa0e7ff1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFerrisWheelTurningVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFerrisWheelTurningVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFireS18Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS18Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ede1b336f5e167fad7a9f33cd67749c71bcd0bcf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS18Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFireS18Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFireS21Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS21Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9bde4dbe30704d50d4389824eb4b11b5165544b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS21Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFireS21Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFireS71Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS71Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4dc89c42dfd6942d1899e1f060c738a072bf4112
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFireS71Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFireS71Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9ce23ac80535d9e8f483a585a0fcb70810f5810b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFirewoodS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..04ef1915a75d4775055ecc77f59af2e4bab6f693
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFirewoodS2IRIS_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFitnessIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFitnessIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c3bf01d3e293f01fa96887788c27fed815f62976
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFitnessIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFitnessIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFjordsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFjordsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..08f525d08aea646c2648ddbea3e99a47c59ae6ed
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFjordsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFjordsS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlagShootTUMSVT.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlagShootTUMSVT.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..73a70b40ed5a0fcf0804823ab4e1dbbcce7b6e25
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlagShootTUMSVT.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlagShootTUMSVT_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..604ab71b397b289034f9955e2924db8ddcfc3611
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlowerChapelS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1dcca65ac750d946c852d9d1e007afa7369fc3bc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlowerChapelS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingCountrysideDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingCountrysideDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..95fe7b165b53b59486ea67028d70cf320039ff24
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingCountrysideDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlyingCountrysideDareful_960x544_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingMountainsDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingMountainsDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9e0d67add885634144fce6ecef004a5060872d0c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingMountainsDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlyingMountainsDareful_960x544_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingThroughLAStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingThroughLAStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ec952a7b7f4e5895bd8572b0ae01d660c5643906
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFlyingThroughLAStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFlyingThroughLAStreetVidevo_960x544_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CFungusZoomBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CFungusZoomBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3f3f4aaf439ddefd0a02b5b315922cb609b19a54
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CFungusZoomBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CFungusZoomBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CGrassBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CGrassBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c3acfbff4f26aa1659e7954f562049e5c2ba3ff4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CGrassBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CGrassBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CGrazTowerIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CGrazTowerIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cf81a1ceb4994cb51c60eeb4bf008c62abad3661
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CGrazTowerIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CGrazTowerIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHamsterBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHamsterBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1c5dae6023f443cd177efef148d87431a28b4864
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHamsterBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHamsterBVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHarleyDavidsonIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHarleyDavidsonIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3e7f36d2d63342a25c8f50cdc6c08681e92f21c2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHarleyDavidsonIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHarleyDavidsonIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongIslandVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongIslandVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bdcb0b793ee855783424a2ec7f5259e093152edc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongIslandVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongIslandVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..491f379ca6013da73a8f23a25f3030699d171b60
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..72b9f58dd232500878a1ee2b80c7fe0a76747950
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..78679b9f1ecc003dddfdfeea5c55c0e74331637f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket3S1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..570ed15ac3ca1de9145441619f77c05ae80137f1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket3S2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7b00ed4ecd5501ac64afdf9d922b52c0a83c884b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket4S1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..22743fb44a1ad30ddae0a5e6ea07c7fc043b97b3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongMarket4S2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9bb2a852428a72ce19c03aafcb63bbb54aeabf5e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..97c3c11f832a492672ca299b94e274065b430f5a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongS2Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..45ffa235cd7daa83c8cf949099ce77d09fd57289
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHongKongS3Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHorseDrawnCarriagesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseDrawnCarriagesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3a4e3a013a5a90ef86c5946c14fa25b1969116c5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseDrawnCarriagesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHorseDrawnCarriagesVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..84a0fcb938c4d8f2a40f1177fc54d0a46d6a8f7f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHorseStaringS1Videvo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3a1f612c19f6849e88f359b954e6cfdf13532483
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CHorseStaringS2Videvo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CJockeyHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CJockeyHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..011603b9751698fe5ab36509f740a109182c52ed
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CJockeyHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CJockeyHarmonics_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e8e0294ac083debd855a9e373fa3874e5805ad3b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CJoggersS1BVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS2BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS2BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..527624ef15de796114dd45ce0bef31c9b9c7e7a6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS2BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CJoggersS2BVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CKartingIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CKartingIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7b454bb59e68fbe3c39055e5af834283751746f9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CKartingIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CKartingIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CKoraDrumsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CKoraDrumsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2f6b5833fcfe976cda2cb4145fe356d226c3eb63
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CKoraDrumsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CKoraDrumsVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLakeYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLakeYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7fcb9836984e2322bdcb31417b392a050857ba1e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLakeYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLakeYonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLampLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLampLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9631081abc859bd27fc13dad6a4fd348fd90a733
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLampLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLampLeavesBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLaundryHangingOverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLaundryHangingOverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9c6644d01ceff34917af4869849fb5bd1ed2ae45
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLaundryHangingOverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLaundryHangingOverHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f166ddafecc5ef4ea4c5d7587b37b95195de9ca9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLeaves1BVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves3BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves3BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c21b16c43565d7c376319f96a4c35cfb67a6fe10
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLeaves3BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLeaves3BVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLowLevelShotAlongHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLowLevelShotAlongHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fb33ce1ba440385d351d692ea1205b705ac2224c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLowLevelShotAlongHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLowLevelShotAlongHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7917d396449a31695c0b4651f874278faa8bcf0c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLungshanTempleS1Videvo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b9cd514dbabcb40e727444a6255a4f7af6f32831
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CLungshanTempleS2Videvo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CManMoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CManMoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..45a841a7c91ba2c2a2a53d9fa55bb22ae78f4ff5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CManMoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CManMoTempleVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CManStandinginProduceTruckVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CManStandinginProduceTruckVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0af9ae3e28ec093482f9fa47a35fe4dcf48f6eb3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CManStandinginProduceTruckVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CManStandinginProduceTruckVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CManWalkingThroughBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CManWalkingThroughBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..04f0ccf9b5ae76b114e135f190d2ca8c36c415a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CManWalkingThroughBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CManWalkingThroughBangkokVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d7a7e49d8772cdb746b15f38e487fd8d1f2faf98
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMaplesS1YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..396a955649fa9dfcf673a49bf6feba8a4f5def01
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMaplesS2YonseiUniversity_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b9106593ab7f830ee396e2e7ec4ccc80ab22e4a7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMirabellParkS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2abe1237e16c6925e6fa1a7157e51f9896577925
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMirabellParkS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMobileHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMobileHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b21ff901bae47c536171f3a967685c958abed331
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMobileHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMobileHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanCeramicsShopVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanCeramicsShopVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5ab83b8e48108bc09a56e76ad1217b61ea029d93
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanCeramicsShopVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMoroccanCeramicsShopVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanSlippersVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanSlippersVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d3a218d0ec8b5532b28c8878cf7272e3ddb10296
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanSlippersVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMoroccanSlippersVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMuralPaintingVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMuralPaintingVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3dd03f7d4078f72cb09f462cfc3e82115194982d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMuralPaintingVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMuralPaintingVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f09a440a0c5633a05876716a5b519151617e90b2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMyanmarS4Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS6Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS6Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0c91570c455c0ef361dd350e7d8106bd4686ebbc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS6Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMyanmarS6Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CMyeongDongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CMyeongDongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..862fd4f90a90d3a17dcf2bf7c7ee9dd1c95fcd94
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CMyeongDongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CMyeongDongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CNewYorkStreetDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CNewYorkStreetDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1828b6077f9ab597ab8c4265194915293a648d1c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CNewYorkStreetDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CNewYorkStreetDareful_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/COrangeBuntingoverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/COrangeBuntingoverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..26d6b69467b84315f962d5fe6c5dd2c269188185
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/COrangeBuntingoverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : COrangeBuntingoverHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPaintingTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPaintingTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..70fe36406f2e3cde39b5ffdda06ab4427b17bde1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPaintingTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPaintingTiltingBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CParkViolinMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CParkViolinMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..910bbdf52d9705fa2f48ee3798addd651864be4c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CParkViolinMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CParkViolinMCLJCV_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPedestriansSeoulatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPedestriansSeoulatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c6dbd48356e11229598ba2258c38a37a3d8bfb98
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPedestriansSeoulatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPedestriansSeoulatDawnVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPeopleWalkingS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPeopleWalkingS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4899f1a599bc5d51349222cb54a03630f6dc9f36
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPeopleWalkingS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPeopleWalkingS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPersonRunningOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPersonRunningOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..85db2d806063c5b45d326f88fadca2a1697b05de
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPersonRunningOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPersonRunningOutsideVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPillowsTransBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPillowsTransBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..675020bb394bf3973c306b29482c3997a27756cb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPillowsTransBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPillowsTransBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPlasmaFreeBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPlasmaFreeBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c381cfb0c627eb8a583c62315c7e0720869ead92
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPlasmaFreeBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPlasmaFreeBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CPresentsChristmasTreeDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CPresentsChristmasTreeDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2214f43646c43a1dc16f47780161d37fdaae1d29
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CPresentsChristmasTreeDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CPresentsChristmasTreeDareful_960x544_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CReadySetGoS2TampereUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CReadySetGoS2TampereUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1735d9390573cd2d83309d0658b8d9233b8abe50
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CReadySetGoS2TampereUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CReadySetGoS2TampereUniversity_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CResidentialBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CResidentialBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2d12782bdf20698fcf7057ed92c5055418ea6b2e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CResidentialBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CResidentialBuildingSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CRollerCoaster2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CRollerCoaster2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fb860c860478ce72fdba2bf38fad30de056f5645
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CRollerCoaster2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CRollerCoaster2Netflix_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CRunnersSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CRunnersSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f0070642c646f58a38af27a19584551d4e5cfabe
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CRunnersSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CRunnersSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..de1704e69c8d0f075cc254a7d2079f8f00a6b84d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CRuralSetupIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8b3ea21858a7d0eb0b64fa0315264f6c83b19ca9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CRuralSetupS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CScarfSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CScarfSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..29ad24f32e39700646b11859f53d0ea6376f27be
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CScarfSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CScarfSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSeasideWalkIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSeasideWalkIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ac831502007ea76a79444fcf36f82d5ea38a50fc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSeasideWalkIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSeasideWalkIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSeekingMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSeekingMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..160fc97466d49ec8f2224a8a72f7313b2712261c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSeekingMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSeekingMCLV_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSeoulCanalatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSeoulCanalatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fbf7d5a854fd6de01ca84440d96322fc4887606f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSeoulCanalatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSeoulCanalatDawnVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CShoppingCentreVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CShoppingCentreVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..06c53e4a06f1d125fdf1235124f8e740b4b26ec2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CShoppingCentreVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CShoppingCentreVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSignboardBoatLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSignboardBoatLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0c627ba0a7a8621f0147ef9df1aef14755d262f1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSignboardBoatLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSignboardBoatLIVENetFlix_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSkyscraperBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSkyscraperBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..88add97790f10bd4930b1b1b71f43c68a034439b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSkyscraperBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSkyscraperBangkokVidevo_960x544_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeClearBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeClearBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a515a586f306f2c0f4b91deac3888e995b85eff9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeClearBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSmokeClearBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeS45Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeS45Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..54348ed9b6c0149b284c46a105f8506a244f5255
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSmokeS45Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSmokeS45Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSparklerBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSparklerBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..397627056d1021c75878a299baae55a2a8fdb2bb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSparklerBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSparklerBVIHFR_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSquareAndTimelapseHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareAndTimelapseHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..55ed87e16634b6e1b07dfd10484b8cac881a4049
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareAndTimelapseHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSquareAndTimelapseHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..24c874a7c286fbd73bd3e1a71ebcef9950b1fbeb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSquareS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4de47423bdc2cac565f5a6b701e1b1c4dbcd409e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CSquareS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CSquareS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetArtVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetArtVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6ae52d4aa0b30a8b996e0ab279a6e9b9c8c9243e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetArtVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetArtVidevo_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3a3dc56abe42b779e9eeb8b95cd8dd6799eff6d3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetDancerS1IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fd7fd2b5633339a7238d00c31ba83fed2ea331a6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetDancerS2IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9c2b5fb9835a94a1875cdbbffd3dfb1f64e21486
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetDancerS3IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..42a05e72d515245e20029a0681d23d39be81d47d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetDancerS4IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dacc3f0859ab6bf62c7e79387d9a7ca3dafaad3a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetDancerS5IRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..781932d7d0bf4c290b56269a54688d3920a10f54
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetsOfIndiaS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fc3e29d59e4ebdae046b066d45aa13324cdc2c9c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetsOfIndiaS2Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57f6748fde581d5f8a7042659284d92be362291e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CStreetsOfIndiaS3Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f80fcc8ef689c9146876db91ca09023a9230200a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaiChiHongKongS1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5771138bd7fcb1eb7dc91e96e2bff4dea32aad61
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaiChiHongKongS2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftops8Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftops8Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c249131861f7f978236a7c711a2aba291368ddd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftops8Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaipeiCityRooftops8Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..94bf641bf3dfadc16d77e1f6815a75734af5b275
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaipeiCityRooftopsS1Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..257fa0332342ab2a8ec1593890ea56da8673fdc6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaipeiCityRooftopsS2Videvo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTaksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTaksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..998c8df2e1066ebbf4bdb43ab0c3d91edb9bcc38
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTaksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTaksinBridgeVidevo_960x544_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTallBuildingsSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTallBuildingsSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1289ec9de56c6738cecc4b9a2cd1bf8db781919a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTallBuildingsSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTallBuildingsSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTennisMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTennisMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..584c9746bd0e552c6d12a808fc5a5a4570b4e930
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTennisMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTennisMCLV_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CToddlerFountain2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CToddlerFountain2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..caf703a77c7d418d806ab4871f1959d0c017e665
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CToddlerFountain2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CToddlerFountain2Netflix_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTouristsSatOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTouristsSatOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3d218f4ab4ee98be6855cace432f11806a6fed0d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTouristsSatOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTouristsSatOutsideVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CToyCalendarHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CToyCalendarHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..793aada1c329e87388f5256ae8102ce3b942ba7f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CToyCalendarHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CToyCalendarHarmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingDownHongKongSideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingDownHongKongSideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cf55033c5ec09f5f599222de7b7ece773ceb7335
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingDownHongKongSideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrackingDownHongKongSideVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastRestaurantVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastRestaurantVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e04de21c22546b3d67881846b86e6f811c4196b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastRestaurantVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrackingPastRestaurantVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastStallHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastStallHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c35730b1b75c72ff8db7562356702da996ba31dc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastStallHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrackingPastStallHongKongVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTraditionalIndonesianKecakVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTraditionalIndonesianKecakVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fb057d752c1a5b7671012a88c6b464c59e9fad84
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTraditionalIndonesianKecakVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTraditionalIndonesianKecakVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficFlowSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficFlowSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57f76aa148b54441b7c04cffd104f19cac27cb1a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficFlowSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrafficFlowSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficandBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficandBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6a594c2bb93d1b277c699027c194c8f3fd670619
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficandBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrafficandBuildingSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficonTasksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficonTasksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9be1ee2796a4df025c65446661296f1b242c10f6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTrafficonTasksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTrafficonTasksinBridgeVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTreeWillsBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTreeWillsBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7a6aead6889f5783f1efc73dd6bcb3e33bdb7665
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTreeWillsBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTreeWillsBVITexture_960x544_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTruckIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTruckIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a014a4274e47d7b98441911674c26059145b8011
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTruckIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTruckIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CTunnelFlagS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CTunnelFlagS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c72cd2cfa50893441a4266d4fc7fb24ba7d3148b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CTunnelFlagS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CTunnelFlagS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CUnloadingVegetablesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CUnloadingVegetablesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b2bc6b28717577b665076ecc269f2f7ef9f036fd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CUnloadingVegetablesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CUnloadingVegetablesVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS1LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS1LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e9f5cae5dace3e7eb89c037b9fe5a647701c9a0f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS1LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVegetableMarketS1LIVENetFlix_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS2LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS2LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2af37bc5d6ad57997fc7b1c10bb3808dfb3b6a9c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS2LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVegetableMarketS2LIVENetFlix_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS3LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS3LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cc83cd0095cdf5b6962063759f0f2cd4275efc26
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS3LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVegetableMarketS3LIVENetFlix_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS4LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS4LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a633de2094cddedcee8fed40d6e972e753b558e5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS4LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVegetableMarketS4LIVENetFlix_960x544_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a38895177aa0a14d9aa0f8ec097497ed9adf44b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVeniceS1Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c798c574b9b7432ab85d7dccddadd259e0e83a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVeniceS2Harmonics_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceSceneIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceSceneIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cb02c6206d7d55dfe9f61c093669ca25eb8a8fa9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CVeniceSceneIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CVeniceSceneIRIS_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownKhaoStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownKhaoStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..51ad0f7d25ef3fd8e2ef9b98afe26b3a56bbb47f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownKhaoStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWalkingDownKhaoStreetVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownNorthRodeoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownNorthRodeoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bd911c1ce98b2d7bce8fadd1913e19114a02254f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownNorthRodeoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWalkingDownNorthRodeoVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingThroughFootbridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingThroughFootbridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..680041d79b3034c45e6d67af3a6de3db22c84b1b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWalkingThroughFootbridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWalkingThroughFootbridgeVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWatPhoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWatPhoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8ffb17ec664856cd3424874ff43efde4961402d3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWatPhoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWatPhoTempleVidevo_960x544_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS65Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS65Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2d216013f176e723d7019affd0b27b001862d349
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS65Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWaterS65Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS81Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS81Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cc31bcad501e5d5f9db012e16468f1ece0d06e12
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWaterS81Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWaterS81Mitch_960x544_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWoodSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWoodSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d84a9efb4f346862d9515283e78314e8cf1a0a05
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWoodSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWoodSJTU_960x544_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/CWovenVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/CWovenVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0d0e5a7b63fb5638306705978559ea349f8b8d0a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/CWovenVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CWovenVidevo_960x544_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 960
+SourceHeight                  : 544
+FramesToBeEncoded             : 64
+Level                         : 4
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAdvertisingMassagesBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAdvertisingMassagesBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..279fb16eeb4507f2fb05a3ff3c01ad6be47f62d0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAdvertisingMassagesBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAdvertisingMassagesBangkokVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d4aa5f1f197f5287e0399c09571cb8fe364f86ff
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAmericanFootballS2Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9a0f4e4e55fae7ead3b86a7f2848baab895ec4f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAmericanFootballS3Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..de0a972dd8a14df5ea5f9fb18c48efe05c77a079
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAmericanFootballS4Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS11Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS11Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..eeeb49b8b62c80ebf010e4bd3e3d2675a77598c4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS11Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAnimalsS11Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d3361a8ca45cc31eae1fb8da7a98205fb9d1dc5a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DAnimalsS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBangkokMarketVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBangkokMarketVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b53d0b19f40d49d3bf9c8601cd3816327e63abaf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBangkokMarketVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBangkokMarketVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..98fed945f7967c046bec5558cc606ee1e9058975
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBasketballGoalScoredS1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e767be91fded63092701512bd3e9192070ebd44c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBasketballGoalScoredS2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..61f76e938abf6192958f15870e534fc8fdda9ebc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBasketballS1YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4a35ed757319fd40cac802c019c24903cccac3a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBasketballS2YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS3YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS3YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..09df784f06ba6c4d9076e820b3a83ff2b6d001d0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS3YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBasketballS3YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBoatsChaoPhrayaRiverVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBoatsChaoPhrayaRiverVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..136878c32a31ed0720914f32a4cb110a4db7569a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBoatsChaoPhrayaRiverVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBoatsChaoPhrayaRiverVidevo_480x272_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBobbleheadBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBobbleheadBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0a518ed747b40f5ee1788643905c80566d785287
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBobbleheadBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBobbleheadBVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBookcaseBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBookcaseBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..936fbdf19174a42148d299e1058e4dd0abaa595b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBookcaseBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBookcaseBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBoxingPracticeHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBoxingPracticeHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ea09d073ade245c8ac621566b796af80f8fb0fa1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBoxingPracticeHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBoxingPracticeHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBricksBushesStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksBushesStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..27f4b63b042829776fbaadfb034f58b56954f0ea
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksBushesStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBricksBushesStaticBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBricksLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6458a19d40bdd579b5fb80e6f31eec20ae320d5e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBricksLeavesBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBricksTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4cf196e2e33262234b447f035fb746a7db067178
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBricksTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBricksTiltingBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBubblesPitcherS1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBubblesPitcherS1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..89fe7cd34cd7d1eaf09035fa317ab14cd34514bf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBubblesPitcherS1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBubblesPitcherS1BVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57bae7d930934841236ba20e2d1b9463272fd4eb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBuildingRoofS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..538fa9810126004ffce68e320b435dca867905a5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBuildingRoofS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a584d54f212a913f3370fa51beec0fb8d5e42d71
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBuildingRoofS3IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d1c30fc5277f53c640b65637e595da2e7369b1d5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBuildingRoofS4IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBuntingHangingAcrossHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBuntingHangingAcrossHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c3fdfc7a11a3ef04be3c280520a9fa2a2a49761
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBuntingHangingAcrossHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBuntingHangingAcrossHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DBusyHongKongStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DBusyHongKongStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f91c1b9a1d4c645b7f61dcd1da21870bbdc7e342
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DBusyHongKongStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DBusyHongKongStreetVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCalmingWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCalmingWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e6b8d9eb8eb7da95bc659c3aeab9da1ba7550f9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCalmingWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCalmingWaterBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCarpetPanAverageBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCarpetPanAverageBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c7f77339fb13903af6ea62df5f25652ee71dc338
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCarpetPanAverageBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCarpetPanAverageBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCatchBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCatchBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c45e1fa6bda8b0330b0098a42b80ec11208a0b14
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCatchBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCatchBVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCeramicsandSpicesMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCeramicsandSpicesMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..37f3bd74a0381f2d5fdee7f73194c6fa7f5db186
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCeramicsandSpicesMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCeramicsandSpicesMoroccoVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCharactersYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCharactersYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2b57d110a80f7dee83a800bb3c1144ef05863ed2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCharactersYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCharactersYonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasPresentsIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasPresentsIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..254c765485d31ea4f8756141f8a2dd7fd154f12a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasPresentsIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DChristmasPresentsIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasRoomDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasRoomDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c10039571bcdf81beb005f9e6c809e161fa59746
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DChristmasRoomDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DChristmasRoomDareful_480x272_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DChurchInsideMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DChurchInsideMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0e6b1946c5c43aac1672e71bac88a2cad8715c30
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DChurchInsideMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DChurchInsideMCLJCV_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..663b6a496ee8f9151ff911d49befc688e09df7e1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityScapesS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3b97ca64695149cc0ffb8a2ff7cf6088482b3835
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityScapesS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d7f9fe0e9f17b27f2b20db50ffd0b33091305614
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityScapesS3IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..091c277ddfc66afac6dc22e3e390db3cab0583f1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6b3a8d3ec0057c340b84cc5827a93c7e4e405089
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS3IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e2ee135ddff2be825c68e029ce4e538c9d0d85cc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS4IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..80e11efeae5cedac10f6fb8affd9a327ae5e17bd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS5IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS6IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS6IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f5470a9a88866c1e05d615ac9e41745194e410c7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS6IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS6IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS7IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS7IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c7f152f34ead75bb1f25a19deb345bc80a8dfd6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS7IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCityStreetS7IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCloseUpBasketballSceneVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCloseUpBasketballSceneVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8affd753608e97d77abf1f680fd7f42825cc1595
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCloseUpBasketballSceneVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCloseUpBasketballSceneVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCloudsStaticBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCloudsStaticBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a2d8b0db7b71a7ccefd7cfbcf941f6ee68b33f56
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCloudsStaticBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCloudsStaticBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulDecorationWatPhoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulDecorationWatPhoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b2d04f803cd84d7063ff4a2a7f57bffa238141c0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulDecorationWatPhoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DColourfulDecorationWatPhoVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulKoreanLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulKoreanLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..63287d02f6b01f1715e55d232d2109a023629fb2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulKoreanLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DColourfulKoreanLanternsVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulPaperLanternsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulPaperLanternsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..60195807d50665c083f6dbe9b1df65ab0c242bd3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulPaperLanternsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DColourfulPaperLanternsVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulRugsMoroccoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulRugsMoroccoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ab381277f7898212e814b8fe3134bf8b22c22952
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DColourfulRugsMoroccoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DColourfulRugsMoroccoVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DConstructionS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DConstructionS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1a6ba2876e08877be59ca766b88d054c4c41507b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DConstructionS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DConstructionS2YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCostaRicaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCostaRicaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c6fbd861cc44e2e71f51c3b76a7f8c7c81bdbf54
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCostaRicaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCostaRicaS3Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ad11c50574c884bdc79549dc400b5f32921b6047
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCrosswalkHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1dbbdf4b58971c8470b6631fbeffeaaa152ae044
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCrosswalkHongKong2S1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..def4b347a6e0971f90b81e3b453a4be61e1c14c5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCrosswalkHongKong2S2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6d038206ac166320ceb6e9a80abd6aca8d309dd7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCrosswalkHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCrowdRunMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCrowdRunMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..854eccc749ca447453f7462efcb8a61f978414a2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCrowdRunMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCrowdRunMCLV_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..37bbda8d3d08696186d5bd17d971874ea441a235
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCyclistS1BVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistVeniceBeachBoardwalkVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistVeniceBeachBoardwalkVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5d89e6ba561cfbc9ded244c8e4b1592f2c93073d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DCyclistVeniceBeachBoardwalkVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DCyclistVeniceBeachBoardwalkVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8d90168e5ada2b44cd23b3f73f8ed6d877a2809c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DDollsScene1YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e0b6b434dec8cba99e1ae1bfd17820b9e5c9db4e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DDollsScene2YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DDowntownHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DDowntownHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1f3ce661dc50539ccb88e5b7b0ca423d69626e47
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DDowntownHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DDowntownHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DDrivingPOVHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DDrivingPOVHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..05d6dcde4eb09379c49fdf68069b766f78310869
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DDrivingPOVHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DDrivingPOVHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DDropsOnWaterBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DDropsOnWaterBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3b4dbd970b52da3f42fbd47e0b92256ba9587a0f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DDropsOnWaterBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DDropsOnWaterBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DElFuenteMaskLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DElFuenteMaskLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..24d2cd42cc3b27e244ea58775f8932cbfd59280a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DElFuenteMaskLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DElFuenteMaskLIVENetFlix_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c035242caa92c3e8537b0c2e86ebcaf0066b196c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DEnteringHongKongStallS1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..53beb6a0d1f222f3c0ef00a5cccc3140aac36813
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DEnteringHongKongStallS2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFerrisWheelTurningVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFerrisWheelTurningVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..80f56c89368d9b5e3f1aa6be3ba388ed93f28a9e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFerrisWheelTurningVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFerrisWheelTurningVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFireS18Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS18Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b4522e8fb37b6a37839ef0d57f51dfb295eec018
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS18Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFireS18Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFireS21Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS21Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9e46b2d1110a43d22e6d351d9a94d9ccf009fdc5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS21Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFireS21Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFireS71Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS71Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4a2a7254d0d8d3adb330fbeffd8ce6c6da4785e0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFireS71Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFireS71Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e3c096aee2f5f490c4964157ae032523e4ba2912
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFirewoodS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e5a0df60c6a60fd808d35a5a9f2e6b479c0c51f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFirewoodS2IRIS_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFitnessIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFitnessIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..75ded72a54c20bfac986d950e431e215c1ebbc06
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFitnessIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFitnessIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFjordsS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFjordsS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..55e13b3ea6264601381007de283cfbe8585e7c1e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFjordsS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFjordsS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlagShootTUMSVT.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlagShootTUMSVT.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7aa51a1ee47292fc28807941fd221d46df1f9250
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlagShootTUMSVT.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlagShootTUMSVT_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..07ab109614d94b25696350f3b3899a51e05e4c25
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlowerChapelS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..390c1d84719cf7ca4f4cf60632c4199e0a59564d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlowerChapelS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingCountrysideDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingCountrysideDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5bbf73b497430e4b691ffe3a4e44fdbeb86721a8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingCountrysideDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlyingCountrysideDareful_480x272_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingMountainsDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingMountainsDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..156fca634decc43a2feb179e3e5b1246fb88a5ca
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingMountainsDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlyingMountainsDareful_480x272_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingThroughLAStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingThroughLAStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ab99ecbf1237618a66a8ccd9b05ed569cfe178ea
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFlyingThroughLAStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFlyingThroughLAStreetVidevo_480x272_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DFungusZoomBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DFungusZoomBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6ca6f040dce2ca1b9040d1632c03815463762575
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DFungusZoomBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DFungusZoomBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DGrassBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DGrassBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..311ebc42ae8019c29be96c3f0411e7c583853988
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DGrassBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DGrassBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DGrazTowerIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DGrazTowerIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f040840c4ee8afbbecb02642b776c10e3f71dba9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DGrazTowerIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DGrazTowerIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHamsterBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHamsterBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2ffccbafc2d56c34aa56f3f70b3cd089c10f39b4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHamsterBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHamsterBVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHarleyDavidsonIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHarleyDavidsonIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0da23ff98085cc67d40d7477d233e95356f70e0e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHarleyDavidsonIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHarleyDavidsonIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongIslandVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongIslandVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a0561b87361cee349c5bb1f1c112e336570c5f42
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongIslandVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongIslandVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..39f9f16d2ba28cdb1acf4d9875b6fe4c19331b6d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f8db252cb1a07dc70baa4123a8abb1cef45a9a29
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..292b0af979e548d0ff50fb6c09ed03d1763a5c17
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket3S1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..56e5bb15f619bea5840a750c251e3fc81f15e36c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket3S2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8358aa5d814d1aa76185e2be67b2ba1df3cee2b4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket4S1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..453d4a81e88eb9eda72888f0d77e86bb86d38f5f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongMarket4S2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b529774f28b4b7dac2ada5e041a9ceaaf50aa542
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5acd49bfc13c8d1de6649927bf2eae991ee7caab
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongS2Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ba1366bf2eb6d7468d0cd1d934b63946ba31bf69
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHongKongS3Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHorseDrawnCarriagesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseDrawnCarriagesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aec2fe063a8533ca803e16f2e0d666ca92e87306
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseDrawnCarriagesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHorseDrawnCarriagesVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ce910792b1de0ae053d497f87bbaf40e84910704
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHorseStaringS1Videvo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aac1136517476767856525fbde582273df25f6a1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DHorseStaringS2Videvo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DJockeyHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DJockeyHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..91c64bbd9a74dfb3d90cba91965b38020372ae10
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DJockeyHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DJockeyHarmonics_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS1BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS1BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8d04c231b4f80fd505c8fd8fc331e8ca8ab4ba69
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS1BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DJoggersS1BVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS2BVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS2BVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e7b0fa886d3ac17d65f23d84c6b26e3b4a3c4727
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS2BVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DJoggersS2BVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DKartingIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DKartingIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2c11cd5a5e9fcaf234b0917f44de8c0a472f024d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DKartingIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DKartingIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DKoraDrumsVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DKoraDrumsVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..37320cc6577f6b89e044c58b07a84689c600d9af
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DKoraDrumsVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DKoraDrumsVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLakeYonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLakeYonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..63c459725e4565b3ccfa33779aa1bf4137d1c72c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLakeYonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLakeYonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLampLeavesBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLampLeavesBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0df8771b4d9690acd0ede774f062346bdc38e759
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLampLeavesBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLampLeavesBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLaundryHangingOverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLaundryHangingOverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..143916612a9fb02e72672439aa6d08a15074d285
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLaundryHangingOverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLaundryHangingOverHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves1BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves1BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..161c0ce96f5351f6ef53910380e834b15c8a321b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves1BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLeaves1BVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves3BVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves3BVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..278a2236f58bdec2e5e22fe4724af1df3da80545
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLeaves3BVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLeaves3BVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLowLevelShotAlongHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLowLevelShotAlongHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9245af2bb29dc803c17db20390a7c5a970093925
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLowLevelShotAlongHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLowLevelShotAlongHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..89b1bf75c5c88ebf660a7180f275795d222ccd48
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLungshanTempleS1Videvo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cb6253016ed052e46c55af9de183ed0b0f32a357
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DLungshanTempleS2Videvo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DManMoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DManMoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..88db4dd6c65b4d0bfcab2ccd03e7a192fa36b665
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DManMoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DManMoTempleVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DManStandinginProduceTruckVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DManStandinginProduceTruckVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..22048849c2e3b2e7451783d707c203264ccdf167
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DManStandinginProduceTruckVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DManStandinginProduceTruckVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DManWalkingThroughBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DManWalkingThroughBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..370e368df8237acff74ba514cfe8d0ef419f3753
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DManWalkingThroughBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DManWalkingThroughBangkokVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS1YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS1YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..cc761b2b4133ced6d89272c19974a190aea6b16c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS1YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMaplesS1YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS2YonseiUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS2YonseiUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..651e1997e4b9129dae463c36f67422ad78bd84b5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS2YonseiUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMaplesS2YonseiUniversity_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..11aff1e2aae62b24aac1df5467c6077fcbfb16b1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMirabellParkS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c3f533e1ac4ac6a4b0cbb0ba668099f33d486e27
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMirabellParkS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMobileHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMobileHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..950b7963823cb998484e5fa37ff428b55a1e306a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMobileHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMobileHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanCeramicsShopVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanCeramicsShopVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6d0612fea101e45a603e6b231643e2bd578ea7ab
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanCeramicsShopVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMoroccanCeramicsShopVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanSlippersVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanSlippersVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1a78b44814b1ceaa6f3d9589a4f1ab70892791a0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanSlippersVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMoroccanSlippersVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMuralPaintingVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMuralPaintingVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8ef2cfd6b7f04f92719d3b65801689ec4c247123
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMuralPaintingVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMuralPaintingVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS4Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS4Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3ce3e2b756f53fbeff87c419242eb9728a68e3ad
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS4Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMyanmarS4Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS6Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS6Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..37401b04e8cadd7a37ec7f73e433bcf65134c6e1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS6Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMyanmarS6Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DMyeongDongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DMyeongDongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..93df73bf17430c2b39f4cf7d06b45a5076072d49
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DMyeongDongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DMyeongDongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DNewYorkStreetDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DNewYorkStreetDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5b76ef1d296e12ccf0ba0945b7dd2f529cf2e43e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DNewYorkStreetDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DNewYorkStreetDareful_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DOrangeBuntingoverHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DOrangeBuntingoverHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b214d76277e679fa9ae58f007743ad2c0034dc01
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DOrangeBuntingoverHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DOrangeBuntingoverHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPaintingTiltingBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPaintingTiltingBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f08021cf433220476db401c31a8aa5e1366b9fe1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPaintingTiltingBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPaintingTiltingBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DParkViolinMCLJCV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DParkViolinMCLJCV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4da3183324b180eba7db3aefc4435da473c24da9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DParkViolinMCLJCV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DParkViolinMCLJCV_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPedestriansSeoulatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPedestriansSeoulatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..73c258e4b38d9913fd3f6e4a1a562d66386a2bfc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPedestriansSeoulatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPedestriansSeoulatDawnVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPeopleWalkingS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPeopleWalkingS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5525c9521255c59c41d7046accc9f702f137977d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPeopleWalkingS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPeopleWalkingS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPersonRunningOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPersonRunningOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1e0c96e77ea3d33978bb2dee3a870c6856e0a5b6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPersonRunningOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPersonRunningOutsideVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPillowsTransBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPillowsTransBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c969ad347f382a096b5b421685b1986d215cc1d0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPillowsTransBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPillowsTransBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPlasmaFreeBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPlasmaFreeBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8f7726081ae2a7e120c57a5ff617104fede1af85
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPlasmaFreeBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPlasmaFreeBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DPresentsChristmasTreeDareful.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DPresentsChristmasTreeDareful.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7451f9166a4dceb17a8a25fa2451b5f30e610f38
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DPresentsChristmasTreeDareful.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DPresentsChristmasTreeDareful_480x272_29fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 29
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DReadySetGoS2TampereUniversity.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DReadySetGoS2TampereUniversity.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f4d63ea5829458bbba11bbe9db41c99d58853188
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DReadySetGoS2TampereUniversity.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DReadySetGoS2TampereUniversity_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DResidentialBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DResidentialBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d245b13308ca43bcae07bb55e63d6612ff738ce6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DResidentialBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DResidentialBuildingSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DRollerCoaster2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DRollerCoaster2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ad8f7f26c1335a3123087af9a7b954b4138fb1a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DRollerCoaster2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DRollerCoaster2Netflix_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DRunnersSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DRunnersSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8cb266ece2f9f07cb0af4c3b6c7c4e61264d1156
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DRunnersSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DRunnersSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..414f156fcbd6a4bc321b6bab1fe85e37d749e9a6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DRuralSetupIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d166316208b16f7a3bf035c8bf44b533b1ee62aa
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DRuralSetupS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DScarfSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DScarfSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9ac09b1799bc5e1085c32360f66fb00c72a4d80b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DScarfSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DScarfSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSeasideWalkIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSeasideWalkIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bafc8c7c556cf0f882e28653df932b9795f96e63
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSeasideWalkIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSeasideWalkIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSeekingMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSeekingMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..851eae90c8a8286f291f6b68d86960a5586741f0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSeekingMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSeekingMCLV_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSeoulCanalatDawnVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSeoulCanalatDawnVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c7190ac619f1a883b37a705b1fb0c6f0606680f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSeoulCanalatDawnVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSeoulCanalatDawnVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DShoppingCentreVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DShoppingCentreVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..25cc6dba9e9a0d3541b01bc90406af5de4a9fab3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DShoppingCentreVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DShoppingCentreVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSignboardBoatLIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSignboardBoatLIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bbec1a2a3a2042542a52799ec703108b4904a344
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSignboardBoatLIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSignboardBoatLIVENetFlix_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSkyscraperBangkokVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSkyscraperBangkokVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dc37d7fbeaf0a806db11d85d055a5cd3646ff514
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSkyscraperBangkokVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSkyscraperBangkokVidevo_480x272_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeClearBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeClearBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ec60e125663a3786c3b58aae1594bdb4ca707356
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeClearBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSmokeClearBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeS45Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeS45Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..055a0976574f081a8555d3841aee4f71a8754f5c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSmokeS45Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSmokeS45Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSparklerBVIHFR.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSparklerBVIHFR.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e84cc0b7acb084c83aea15e9313d2f04f3cc6a4a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSparklerBVIHFR.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSparklerBVIHFR_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSquareAndTimelapseHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareAndTimelapseHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3d17e749761d48e8ae6833f329b3271926bdc1cd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareAndTimelapseHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSquareAndTimelapseHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8f698823cb189ba3c77734efef4ca0d5e482d4ea
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSquareS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..99cab0da42c5e23d651fddb085c6979a3a7b2d38
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DSquareS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DSquareS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetArtVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetArtVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..87ece2219d441b9c19232fbe756e51542cc93e28
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetArtVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetArtVidevo_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS1IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS1IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3ae53cf88b3cdf095f68d0b8f1afc7067e739939
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS1IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetDancerS1IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS2IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS2IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bb9250726091fe49b1b78ad1aa637f29c6ac96c4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS2IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetDancerS2IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS3IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS3IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bf1198db995ac1dc4bfe4e791d546b8b2b113658
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS3IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetDancerS3IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS4IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS4IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..2edd9aa2a426a8af54326457b5e975ae82a6298e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS4IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetDancerS4IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS5IRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS5IRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d0ad1a248bd09e2f568d90353c1e7bebfcedd25a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS5IRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetDancerS5IRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..26bcd1987dfcfcb12c7b9137d90e53188a5a4fe5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetsOfIndiaS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d82445466271f6bacc84d1c870a1251289fd7e68
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetsOfIndiaS2Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS3Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS3Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..513bf9f4a62e46b223dc735c4ba637743a86bb4e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS3Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DStreetsOfIndiaS3Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7c8268443790d5839e9780ce709b661147aa5ed3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaiChiHongKongS1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df8271f4c0c22e55f173c3d1c1c7dacf75913d30
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaiChiHongKongS2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftops8Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftops8Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a3455f4dfbf0b6a29756873aa3f51fc3804c0874
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftops8Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaipeiCityRooftops8Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS1Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS1Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..638268feec3837a7e9413c09895069047080b434
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS1Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaipeiCityRooftopsS1Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS2Videvo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS2Videvo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e6b841d79960e334ff47246ced8b4e434375a2c1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS2Videvo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaipeiCityRooftopsS2Videvo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTaksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTaksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..22adb6ba7d8fb141fdc64cd99ad606cc5009372f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTaksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTaksinBridgeVidevo_480x272_23fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 23
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTallBuildingsSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTallBuildingsSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..047935ae2dcbbad9dc4f01c38f53ad63de1c2c34
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTallBuildingsSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTallBuildingsSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTennisMCLV.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTennisMCLV.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e4ac13aae98edcaea638d42c476b552ec06a6014
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTennisMCLV.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTennisMCLV_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DToddlerFountain2Netflix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DToddlerFountain2Netflix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4c54e5bebfa404f48404c68d82767a32007d5bd1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DToddlerFountain2Netflix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DToddlerFountain2Netflix_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTouristsSatOutsideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTouristsSatOutsideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..035cc6b84cf1c2d79f2a3dd67431752acc9968a8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTouristsSatOutsideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTouristsSatOutsideVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DToyCalendarHarmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DToyCalendarHarmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..717ba0aa4134011aebe3fce89afe047e699cb850
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DToyCalendarHarmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DToyCalendarHarmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingDownHongKongSideVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingDownHongKongSideVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9e395b81f34d93947dae318c425f6d668f03127d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingDownHongKongSideVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrackingDownHongKongSideVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastRestaurantVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastRestaurantVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..186919b18a07941fbba60398f2c3e9043f183686
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastRestaurantVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrackingPastRestaurantVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastStallHongKongVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastStallHongKongVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8e11bd4f4999b9b173a58aadd4d1704fc6b37397
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastStallHongKongVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrackingPastStallHongKongVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTraditionalIndonesianKecakVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTraditionalIndonesianKecakVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..10be49a6d53d2d7f8e66ed842e52388481a23c52
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTraditionalIndonesianKecakVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTraditionalIndonesianKecakVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficFlowSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficFlowSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e901c095d9eec922eeb960740364a0e5d685dacf
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficFlowSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrafficFlowSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficandBuildingSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficandBuildingSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3ad637a20cd9d4ee1f55b4d741a906c0008db1e7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficandBuildingSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrafficandBuildingSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficonTasksinBridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficonTasksinBridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..96528e5da85b6e3fa9ccc78f1794e565e7348e46
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTrafficonTasksinBridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTrafficonTasksinBridgeVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTreeWillsBVITexture.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTreeWillsBVITexture.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fefbe76446d1e4a22e508be6fd4582f97deb1c26
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTreeWillsBVITexture.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTreeWillsBVITexture_480x272_120fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTruckIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTruckIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3cb774c4c80c8e55279c2b6337a880442a5faf60
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTruckIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTruckIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DTunnelFlagS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DTunnelFlagS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dc997e63eeb43c9006728703991e797d290dda0d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DTunnelFlagS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DTunnelFlagS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DUnloadingVegetablesVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DUnloadingVegetablesVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5a6bd4c8ea36ee64da75bbfb7aaf93847adeaadc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DUnloadingVegetablesVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DUnloadingVegetablesVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS1LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS1LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ccd978ac651f80cf23fde701ec5d24f1889ab3bd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS1LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVegetableMarketS1LIVENetFlix_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS2LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS2LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3fefe6c5d78a6b27bb781ac70cbfe3940b907465
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS2LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVegetableMarketS2LIVENetFlix_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS3LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS3LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..421e4968b26866cec9d2f5e0c52a58a97297e82a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS3LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVegetableMarketS3LIVENetFlix_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS4LIVENetFlix.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS4LIVENetFlix.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c467d0cfad2b86e5c7e60f553a1208565d92166c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS4LIVENetFlix.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVegetableMarketS4LIVENetFlix_480x272_30fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 30
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS1Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS1Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..69315bcf94eda00a8c6d0b988a91e5b2cec90b81
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS1Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVeniceS1Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS2Harmonics.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS2Harmonics.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..beeb88e5b9a849b5e4410d80f0c8ec8fcf883b37
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS2Harmonics.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVeniceS2Harmonics_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceSceneIRIS.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceSceneIRIS.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..324f097683270d64ddfe237f0fa4d1b4c6a33c2f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DVeniceSceneIRIS.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DVeniceSceneIRIS_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownKhaoStreetVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownKhaoStreetVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bed7fb7ce99e7ca3900ecfbc36ad7868aea86fe0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownKhaoStreetVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWalkingDownKhaoStreetVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownNorthRodeoVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownNorthRodeoVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..12c01deabe92cd49d9f47bfd7fd620e1661ead8c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownNorthRodeoVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWalkingDownNorthRodeoVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingThroughFootbridgeVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingThroughFootbridgeVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aa618b27776bae8399b4a92a562d9474001d1fc6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWalkingThroughFootbridgeVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWalkingThroughFootbridgeVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWatPhoTempleVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWatPhoTempleVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d1f9df3d2d057dae86b4df900772aca00e04f5f8
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWatPhoTempleVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWatPhoTempleVidevo_480x272_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS65Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS65Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..56d281b174e40a389e869a9d785551ff554b5b83
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS65Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWaterS65Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS81Mitch.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS81Mitch.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c1a41a6c72168bc1bf75effc2384fa025c51ebf6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWaterS81Mitch.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWaterS81Mitch_480x272_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWoodSJTU.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWoodSJTU.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..76776070f2637b71968ed7c6b16e0af8883ee6ab
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWoodSJTU.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWoodSJTU_480x272_60fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/bvidvc/DWovenVidevo.cfg b/training/training_intra_prediction/cfgs_training/bvidvc/DWovenVidevo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f06e8aeb6b2bddda7660e58210b9e6472c83b45d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/bvidvc/DWovenVidevo.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : DWovenVidevo_480x272_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 480
+SourceHeight                  : 272
+FramesToBeEncoded             : 64
+Level                         : 3
diff --git a/training/training_intra_prediction/cfgs_training/tvd/Bamboo.cfg b/training/training_intra_prediction/cfgs_training/tvd/Bamboo.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8f0058e3c345182658b8965d54b5346d50701a9b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/Bamboo.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : Bamboo_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BlackBird.cfg b/training/training_intra_prediction/cfgs_training/tvd/BlackBird.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3b550fa3de21ea4ccdf6eef6a1990a2dbc5c84bc
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BlackBird.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BlackBird_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BoyDressing1.cfg b/training/training_intra_prediction/cfgs_training/tvd/BoyDressing1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c59010407af028f90862b871c35467a14b83018e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BoyDressing1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BoyDressing1_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BoyDressing2.cfg b/training/training_intra_prediction/cfgs_training/tvd/BoyDressing2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..aaca66ea01819bfbcf562a0f15beff44771354a4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BoyDressing2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BoyDressing2_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp1.cfg b/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..410cb329aa1a424574110c9da6b3e0419688f7f4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BoyMakingUp1_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp2.cfg b/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bd05a8bbef662a2ffe379b5029e4f3682bad6977
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BoyMakingUp2_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BoyWithCostume.cfg b/training/training_intra_prediction/cfgs_training/tvd/BoyWithCostume.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d6eeeebfc283622180ef3dc65ec059b11499fe7d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BoyWithCostume.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BoyWithCostume_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction1.cfg b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c63de03473f8b9f52d3732753b0677d04e9de03c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BuildingTouristAttraction1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction2.cfg b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ab11f9d93331e07c2ebbd3637b6feb7d35b76d2a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BuildingTouristAttraction2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction3.cfg b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6cf20f416d3b0ba9031b9bfd6438a04cdeac5523
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : BuildingTouristAttraction3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/CableCar.cfg b/training/training_intra_prediction/cfgs_training/tvd/CableCar.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..52bc711d31c15e5f4ec5c3696c96063265232ae3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/CableCar.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : CableCar_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCooking1.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a7edd2b19d93586b4c9973b05b39b3e2e36c5a1d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCooking1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCooking2.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1e448466672caef21f46053a15f5353571f441a3
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCooking2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCooking3.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b74452e93daa97e78f19446a4eb2a21ef9fbe9c6
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCooking3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCooking4.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking4.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..67c8f9c7fa2276bf643c44d9490a194efe196ef4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking4.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCooking4_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCooking5.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking5.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..79d2dfb55fcacfa0750f8007bdbadfebafcd5946
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCooking5.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCooking5_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp1.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1e27461e2275022793a87c6ad714eac1a1569c82
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCuttingUp1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp2.cfg b/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d9cc01cff9455a82cf5019b8300aa86be34fa275
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ChefCuttingUp2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/DryRedPepper.cfg b/training/training_intra_prediction/cfgs_training/tvd/DryRedPepper.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4988fe53a62e570e3c8b10d4c010b01b07b248a2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/DryRedPepper.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : DryRedPepper_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/FallenLeaves.cfg b/training/training_intra_prediction/cfgs_training/tvd/FallenLeaves.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b711e3a775242112c8effa192311add205d32878
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/FallenLeaves.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : FallenLeaves_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/FallingLeaves.cfg b/training/training_intra_prediction/cfgs_training/tvd/FallingLeaves.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7ae0c7db62f1b91721c9e6ae02885791d318ce43
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/FallingLeaves.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : FallingLeaves_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/FilmMachine.cfg b/training/training_intra_prediction/cfgs_training/tvd/FilmMachine.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..02e48b49326faf7d376a7dbdc193e0cb47a128ec
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/FilmMachine.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : FilmMachine_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/FlowingWater.cfg b/training/training_intra_prediction/cfgs_training/tvd/FlowingWater.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..86bb639a47739352acbd342fdcc0650ea6aad144
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/FlowingWater.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : FlowingWater_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/Fountain.cfg b/training/training_intra_prediction/cfgs_training/tvd/Fountain.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a45dbf8f234d27a3abcdddef92efe270043bf73f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/Fountain.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : Fountain_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/FruitOnTree.cfg b/training/training_intra_prediction/cfgs_training/tvd/FruitOnTree.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c6e564911cdc4fe839e92cba2fb7310320b7b965
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/FruitOnTree.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : FruitOnTree_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlRunningOnGrass.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlRunningOnGrass.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5849393e00a7cc85492b16196f02d73e4f4f9a29
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlRunningOnGrass.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlRunningOnGrass_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlThrowingLeaves.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlThrowingLeaves.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ba5004d55d980de83b68228a2813bfa701d33676
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlThrowingLeaves.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlThrowingLeaves_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlWalkingOnStreet.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlWalkingOnStreet.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..84a5d45e4c0cbf145fa56ba1662175c54905f519
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlWalkingOnStreet.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlWalkingOnStreet_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlWatchingPhone.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlWatchingPhone.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5008ed9b740209ba3917a51dd53f673bd09ebe5f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlWatchingPhone.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlWatchingPhone_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet1.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..707d5d50d9cc720850b2d6c9a199d1f0bcfeebee
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlWithTeaSet1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet2.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..520ed9298267026fe6fd36454a88c584105d5375
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlWithTeaSet2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet3.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..10de8d0ef1b929d5c09ba8743652ef0e3aad7085
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlWithTeaSet3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass1.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..fa5d577bd670ef4e07bdee7db8b0c25bd459590e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlsOnGrass1_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass2.cfg b/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b85c50377fa868208fe94b362e1bc31c3722807e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GirlsOnGrass2_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/GrassLand.cfg b/training/training_intra_prediction/cfgs_training/tvd/GrassLand.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1e8f6e44266eb14a77e8e634d49bd675fda57e3d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/GrassLand.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : GrassLand_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/HotPot.cfg b/training/training_intra_prediction/cfgs_training/tvd/HotPot.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dfe84df5e98e06b1f0562f05576c9b7291cf7c15
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/HotPot.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : HotPot_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/HotelClerks.cfg b/training/training_intra_prediction/cfgs_training/tvd/HotelClerks.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..18a5d039c986bd4d2fab52cf11631c229d91c89c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/HotelClerks.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : HotelClerks_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/LeavesOnTree.cfg b/training/training_intra_prediction/cfgs_training/tvd/LeavesOnTree.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..11022cc6d2a23b3dbd172a779bbdaf0fe9dc374d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/LeavesOnTree.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : LeavesOnTree_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/LyingDog.cfg b/training/training_intra_prediction/cfgs_training/tvd/LyingDog.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c559f236dc0fc7a4a61c1f24135f5c610574a5a2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/LyingDog.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : LyingDog_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/ManWithFilmMachine.cfg b/training/training_intra_prediction/cfgs_training/tvd/ManWithFilmMachine.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..66556d47d53b36de2dbd739d5e64035469085e22
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/ManWithFilmMachine.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : ManWithFilmMachine_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs1.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1172a5984eb3717acd472015639da83ae2677c4f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsAndStairs1_3840x2160_24fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 24
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs2.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a122525f1028084f0a9666bba8a043a16b620cd0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsAndStairs2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs3.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..924d5848597d686af886ba93dd973506d5692143
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsAndStairs3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs4.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs4.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f524fe182deb9ead08ee20846cf10ca97eb9cc8b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs4.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsAndStairs4_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsView1.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsView1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c83752e95a93effe72df474c6fef2bb9ad01aed2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsView1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsView1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsView2.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsView2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d3328ee095b773293c8b945420e14b1c66299d2f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsView2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsView2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsView3.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsView3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1d470c05cc36e7eb5a96a0e9d5b6f282c50afbb1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsView3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsView3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MountainsView4.cfg b/training/training_intra_prediction/cfgs_training/tvd/MountainsView4.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..54e759f227192129e0e19b54745c5645e7c73169
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MountainsView4.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MountainsView4_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MovingBikes.cfg b/training/training_intra_prediction/cfgs_training/tvd/MovingBikes.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..390bbb62883f2be59b9f1dda02312ad57a47c4e4
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MovingBikes.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MovingBikes_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/MovingBikesAndPedestrian4.cfg b/training/training_intra_prediction/cfgs_training/tvd/MovingBikesAndPedestrian4.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e134c8e177f1e6bb5783f39d572ac5a8916a864f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/MovingBikesAndPedestrian4.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : MovingBikesAndPedestrian4_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/OilPainting1.cfg b/training/training_intra_prediction/cfgs_training/tvd/OilPainting1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..209e832db0e51394490fb9b36067594383b438b7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/OilPainting1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : OilPainting1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/OilPainting2.cfg b/training/training_intra_prediction/cfgs_training/tvd/OilPainting2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..99d15fdd8b2c99738d59b50110a6d97461e981a1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/OilPainting2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : OilPainting2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/PeopleNearDesk.cfg b/training/training_intra_prediction/cfgs_training/tvd/PeopleNearDesk.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e2e5cad5b16bfecb21b6ac750a0c18eb66533ae2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/PeopleNearDesk.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : PeopleNearDesk_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/PeopleOnGrass.cfg b/training/training_intra_prediction/cfgs_training/tvd/PeopleOnGrass.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..76251fda7c106395bda439b4bb927a47878b094b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/PeopleOnGrass.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : PeopleOnGrass_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/Plaque.cfg b/training/training_intra_prediction/cfgs_training/tvd/Plaque.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..61c3f1a13d23c2f38e637de221c3ee561b1ee1b7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/Plaque.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : Plaque_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/PressureCooker.cfg b/training/training_intra_prediction/cfgs_training/tvd/PressureCooker.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4b530f9f439da800abbd7f8b373fa1b7ff53e606
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/PressureCooker.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : PressureCooker_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RawDucks.cfg b/training/training_intra_prediction/cfgs_training/tvd/RawDucks.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ca0fc116380c012c9fb96fb7f579f1d0d3aa120c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RawDucks.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RawDucks_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RedBush.cfg b/training/training_intra_prediction/cfgs_training/tvd/RedBush.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6a11c31ac87e34f09103d2c6b6fa09289f669a9c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RedBush.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RedBush_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RedRibbonsWithLocks.cfg b/training/training_intra_prediction/cfgs_training/tvd/RedRibbonsWithLocks.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1ce353999800a8ccfb1ac613c612c791dae28195
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RedRibbonsWithLocks.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RedRibbonsWithLocks_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress1.cfg b/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..02578df5f537ea7162d8e62c1ac0a5687f1fee39
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RestaurantWaitress1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress2.cfg b/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..52b1a3490421dc2d602aab61afea00343ecb5853
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RestaurantWaitress2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RiverAndTrees.cfg b/training/training_intra_prediction/cfgs_training/tvd/RiverAndTrees.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..846f9a80a5a60d5a660b60ae3dc7d4f38a47093a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RiverAndTrees.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RiverAndTrees_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoastedDuck.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoastedDuck.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1ed10c421ce967369b3e17ef17d3ea6ad5819b46
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoastedDuck.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoastedDuck_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction1.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..407736f020a556531d5c43bb6020368b1bfb73b2
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction2.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..62d0f7a75f2dfed2583dd92570c07208e68fc943
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction3.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c09cdda741ee6fb91cecff84705f934e28b5520b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction4.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction4.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9d8b9ac59b293e3ebdb8f58fbabd69061eff9a51
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction4.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction4_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction5.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction5.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..6edcd2f917ba6ee5b077090cecd66af76e560e3c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction5.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction5_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction6.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction6.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..dacfafda660cb656ee5b806fbe8ab51f9a41bb59
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction6.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction6_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction7.cfg b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction7.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..412bb94301fad600d22959ed86cb37464233bc2d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction7.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : RoomTouristAttraction7_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/StampCarving1.cfg b/training/training_intra_prediction/cfgs_training/tvd/StampCarving1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..232d6cbb130cda2f005d622c6bd95b65b457c243
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/StampCarving1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : StampCarving1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/StampCarving2.cfg b/training/training_intra_prediction/cfgs_training/tvd/StampCarving2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0870d475a95d9be86f09ce4c649e6753c4e0b56f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/StampCarving2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : StampCarving2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/StaticRocks.cfg b/training/training_intra_prediction/cfgs_training/tvd/StaticRocks.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..7e9b17912a92337d5658e6d9d732ef0531c7d88f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/StaticRocks.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : StaticRocks_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/StaticWaterAndBikes2.cfg b/training/training_intra_prediction/cfgs_training/tvd/StaticWaterAndBikes2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c633de35559448ca3f90afa6ba40e63e9901ea7f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/StaticWaterAndBikes2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : StaticWaterAndBikes2_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/SunAndTrees.cfg b/training/training_intra_prediction/cfgs_training/tvd/SunAndTrees.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ad4b626de0e7b5539087bc9c7b9252a4e4e66fb7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/SunAndTrees.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : SunAndTrees_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/SunriseMountainHuang.cfg b/training/training_intra_prediction/cfgs_training/tvd/SunriseMountainHuang.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1a38767d5db29ba8eb5e4e45db9b1dd151a2fa15
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/SunriseMountainHuang.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : SunriseMountainHuang_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang1.cfg b/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..081bb0b7c8de449dc5ce9ef132a757848906f3fb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : SunsetMountainHuang1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang2.cfg b/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..da348220ef25f690753609493d731d0776e11d1b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : SunsetMountainHuang2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/TreeTrunkMoving.cfg b/training/training_intra_prediction/cfgs_training/tvd/TreeTrunkMoving.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4be34b670f084bef94e6f293263abfe84b23f780
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/TreeTrunkMoving.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : TreeTrunkMoving_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/TreesAndLeaves.cfg b/training/training_intra_prediction/cfgs_training/tvd/TreesAndLeaves.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1b3518b52f7dc1d3da2f77f015877788c6b9e535
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/TreesAndLeaves.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : TreesAndLeaves_3840x2160_50fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains1.cfg b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a02876c2149c08188e1c614e16223097b086802e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : TreesOnMountains1_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains2.cfg b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..9920dfdcb6dd2f731ad1bf267f5fb836c3fe3fa1
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : TreesOnMountains2_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains3.cfg b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains3.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ea2e08ff0683a427016d37f7aa9a845229ffa32b
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains3.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : TreesOnMountains3_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass1.cfg b/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass1.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f0b0d99f954bf7a2249e37572bc54b57b2f74264
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass1.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : WaterOnGrass1_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass2.cfg b/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..69b0e8784194e51526156f331e1e5ee1a5426d8a
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass2.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : WaterOnGrass2_3840x2160_50fps_8bit_420.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/tvd/Weave.cfg b/training/training_intra_prediction/cfgs_training/tvd/Weave.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bab1302988d17f800d2a82af00900a859d4830c5
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/tvd/Weave.cfg
@@ -0,0 +1,11 @@
+#======== File I/O ===============
+InputFile                     : Weave_3840x2160_25fps_10bit_420.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 25
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 65
+Level                         : 6
+
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Beauty_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/Beauty_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e7c70c995ace7e6fe7ebc69f0a6fa95a463e183f
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Beauty_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Beauty_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Beauty_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/Beauty_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..92201d65f1ce83e074bd4739da5938abb1643b74
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Beauty_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Beauty_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0639e1ebc38d4cc790bdbb1410f52236cf7f4ba0
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Bosphorus_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..91672002a86a42cd7a3320de3ad367e86016252d
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Bosphorus_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Bosphorus_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/CityAlley_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/CityAlley_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a57569340a61fd07cfa464302df355801fa4ee73
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/CityAlley_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : CityAlley_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/FlowerFocus_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/FlowerFocus_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..98cd4eb275d9ff5ab1d5577b358205225a98b091
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/FlowerFocus_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : FlowerFocus_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/FlowerKids_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/FlowerKids_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..c8f75e9b7ada62d96e55f45f84c19795870686d7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/FlowerKids_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : FlowerKids_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/FlowerPan_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/FlowerPan_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..83d034977dcd59872dd09d772c8743299a916ccd
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/FlowerPan_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : FlowerPan_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8eb084a7de3202a3d59bcc0e7091a57da049e917
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : HoneyBee_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b8160b23b13b4402fb821dd8e6a6a36acd42af8e
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/HoneyBee_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : HoneyBee_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Jockey_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/Jockey_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ab00641548495b013cbe5e8b708038813dba2c73
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Jockey_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Jockey_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Jockey_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/Jockey_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..4bf126b8d74163344b8763c46508aee06eeb5abb
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Jockey_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Jockey_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Lips_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/Lips_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5e4f2ba8ae0fc444888baa92988170a4c29269da
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Lips_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Lips_3840x2160_120fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/RaceNight_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/RaceNight_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..30889f60ef85d5303b9b9d3c033da6685c27f238
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/RaceNight_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : RaceNight_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..073e5cdebc33d8daa868ab6f7344cd4c7b452e07
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ReadySteadyGo_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bc773aa3952da406412de08cbff83e5f75724275
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ReadySetGo_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/RiverBank_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/RiverBank_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..8edee3080c074d66a5397329f4239d1f6ecb03d9
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/RiverBank_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : RiverBank_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..df123227003ec05aaa7c97900972c46328866971
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ShakeNDry_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 300
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..5434c9aa942fcdc3077de845a57e06f93022e24c
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : ShakeNDry_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 300
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/SunBath_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/SunBath_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..bd6224260738ad465d9ffd98cdf81e6ce1e2d973
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/SunBath_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : SunBath_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 300
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/Twilight_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/Twilight_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..57e7ace18e147fa56100919ce2ec1c423fa8d8fa
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/Twilight_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : Twilight_3840x2160_50fps_10bit.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 50
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/YachtRide_1920x1080.cfg b/training/training_intra_prediction/cfgs_training/uvg/YachtRide_1920x1080.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..ffbcade982e4d00aea1eba348d2d664eead14354
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/YachtRide_1920x1080.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : YachtRide_1920x1080_120fps_420_8bit_YUV.yuv
+InputBitDepth                 : 8
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 1920
+SourceHeight                  : 1080
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/cfgs_training/uvg/YachtRide_3840x2160.cfg b/training/training_intra_prediction/cfgs_training/uvg/YachtRide_3840x2160.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..d5dd243a2e05d5d86b111af3f993b85e1817acf7
--- /dev/null
+++ b/training/training_intra_prediction/cfgs_training/uvg/YachtRide_3840x2160.cfg
@@ -0,0 +1,10 @@
+#======== File I/O ===============
+InputFile                     : YachtRide_3840x2160_120fps_420_10bit_YUV.yuv
+InputBitDepth                 : 10
+InputChromaFormat             : 420
+FrameRate                     : 120
+FrameSkip                     : 0
+SourceWidth                   : 3840
+SourceHeight                  : 2160
+FramesToBeEncoded             : 600
+Level                         : 6
diff --git a/training/training_intra_prediction/dispatching_paths_to_raw.py b/training/training_intra_prediction/dispatching_paths_to_raw.py
new file mode 100644
index 0000000000000000000000000000000000000000..b30e13c7ce836082e25a6352ab6b000b84d945fc
--- /dev/null
+++ b/training/training_intra_prediction/dispatching_paths_to_raw.py
@@ -0,0 +1,180 @@
+"""
+The copyright in this software is being made available under the BSD
+License, included below. This software may be subject to other third party
+and contributor rights, including patent rights, and no such rights are
+granted under this license.
+
+Copyright (c) 2010-2022, ITU/ISO/IEC
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+    Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+    be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import argparse
+import os
+import pickle
+import random
+import re
+
+def getting_specialized(input_in):
+    list_out = []
+    for item in input_in.split(','):
+        if item:
+            list_out.append(item)
+    return tuple(list_out)
+
+def collecting_inout(psingle, list_grouping, params_inline):
+    for str_given_in in os.listdir(psingle):
+        item = os.path.join(psingle,str_given_in)
+        if os.path.isdir(item):
+            collecting_inout(item,list_grouping,params_inline)
+        else:
+            if item.endswith(params_inline):
+                list_grouping.append(item)
+
+def create_indef(line_in, list_in, list_out, file_0, file_1):
+    for item in list_in:
+        if re.search('(?<=' + item + ')\s*:', line_in) is not None:
+            file_0.write(line_in)
+            list_in.remove(item)
+            return
+    for item in list_out:
+        if re.search('(?<=' + item + ')\s*:', line_in) is not None:
+            file_1.write(line_in)
+            list_out.remove(item)
+            return
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Dispatches paths to raw data used to create the training sets via different jobs.')
+    parser.add_argument('nb_jobs', help='number of jobs', type=int)
+    parser.add_argument('--paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved', help='pairs of the path to a directory containing the configuration files of the video sequences and the path to the directory containing the video sequences, the pairs and the pair items being separated by commas', type=getting_specialized)
+    parser.add_argument('--tuple_paths_to_directories_rgbs', help='paths to the directories containing RGB images, separated by commas', type=getting_specialized)
+    args = parser.parse_args()
+    if args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved is None and args.tuple_paths_to_directories_rgbs is None:
+        raise ValueError('`args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved` is None and `args.tuple_paths_to_directories_rgbs` is None.')
+    descrip_all_1 = 'results/dispatching_paths_to_raw/'
+    descrip_all_2 = 'results/temporary/common/'
+    if not os.path.isdir(descrip_all_2):
+        os.makedirs(descrip_all_2)
+    store_for_next = []
+    if args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved is not None:
+        if len(args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved) % 2 != 0:
+            raise ValueError('`len(args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved)` is not divisible by 2.')
+        for i in range(0, len(args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved), 2):
+            destin_0 = os.path.join(descrip_all_1,'configuration','description','dataset_video_{}'.format(i//2))
+            os.makedirs(destin_0)
+            destin_1 = os.path.join(descrip_all_1,'configuration','extension','dataset_video_{}'.format(i//2))
+            os.makedirs(destin_1)
+            list_grouping = []
+            collecting_inout(args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved[i],list_grouping,'.cfg')
+            list_grouping.sort()
+            for pbast in list_grouping:
+                nm_data_on = None
+                nb_acc = None
+                with open(pbast, 'r') as file:
+                    for line_0 in file:
+                        if re.search('(?<=InputFile)\s*:', line_0) is not None:
+                            nm_data_on = ''.join(line_0.split(':')[1].split())
+                        elif re.search('(?<=FramesToBeEncoded)\s*:', line_0) is not None:
+                            nb_acc = int(line_0.split(':')[1])
+                if nm_data_on is None:
+                    raise RuntimeError('`nm_data_on` is None.')
+                if nb_acc is None:
+                    raise RuntimeError('`nb_acc` is None.')
+                nb_pbfe_found = 0
+                for (path_final_out, _, params_files_given) in os.walk(args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved[i + 1]):
+                    for nmf in params_files_given:
+                        if nmf == nm_data_on:
+                            pbfe = os.path.join(path_final_out,nmf)
+                            nb_pbfe_found += 1
+                if nb_pbfe_found != 1:
+                    print('The configuration file {} is associated to no YUV frame. Therefore, this YUV frame is ignored.'.format(nm_data_on))
+                    print('Maybe your TVD dataset is partial (less than 86 video sequences)? Maybe your UVG dataset is partial (less than 23 video sequences)?')
+                    continue
+                del nb_pbfe_found
+                list_in = ['InputBitDepth','InputChromaFormat','SourceWidth','SourceHeight','FramesToBeEncoded']
+                list_out = ['FrameRate','Level']
+                with open(pbast, 'r') as file_2:
+                    with open(os.path.join(destin_0, os.path.basename(pbast)), 'x') as file_0:
+                        with open(os.path.join(destin_1, os.path.basename(pbast)), 'x') as file_1:
+                            for line_in in file_2:
+                                create_indef(line_in,list_in,list_out,file_0,file_1)
+                for nb_fixed in range(0, nb_acc, 8):
+                    for data_ordered_0 in (False, True):
+                        for data_ordered_1 in (False,):
+                            store_for_next.append({'pbfe': pbfe,'pdetx': os.path.join(destin_0, os.path.basename(pbast)),'nb_fixed': nb_fixed,'pcetx': os.path.join(destin_1, os.path.basename(pbast)),'data_ordered_0': data_ordered_0,'data_ordered_1': data_ordered_1})
+                del pbfe
+    if args.tuple_paths_to_directories_rgbs is not None:
+        list_grouping = []
+        for psingle in args.tuple_paths_to_directories_rgbs:
+            list_temporary = []
+            collecting_inout(psingle,list_temporary,('.JPEG', '.jpg', '.png'))
+            if len(list_temporary) > 1300000:
+                print('[INFO] For the dataset of RGB images in the directory at \"{}\", the number of collected RGB images is limited to 1300000.'.format(psingle))
+                list_grouping += list_temporary[0:1300000]
+            else:
+                list_grouping += list_temporary
+        list_grouping.sort()
+        for i, jjj in enumerate(list_grouping):
+            for ii in (False, True):
+                if ii:
+                    tg = 'ffon'
+                else:
+                    tg = 'ffoff'
+                store_for_next.append({'prdef': jjj,'pbfe': os.path.join(descrip_all_2,'video_before_encoding_from_rgb_{0}_{1}.yuv'.format(i, tg)),'is_expanded': ii})
+    if not len(store_for_next):
+        raise ValueError('No path to raw data is collected. Are you sure that `args.paths_to_directories_cfgs_paths_to_directories_yuvs_interleaved` or `args.tuple_paths_to_directories_rgbs` lead to non-empty directories?')
+    random.shuffle(store_for_next)
+    kkk = len(store_for_next) % args.nb_jobs
+    li_00 = 0
+    li_01 = 0
+    list_prev = []
+    for i in range(args.nb_jobs):
+        if i < kkk:
+            temporary = (len(store_for_next)//args.nb_jobs) + 1
+        else:
+            temporary = len(store_for_next)//args.nb_jobs
+        li_01 += temporary
+        list_prev.append(store_for_next[li_00:li_01])
+        li_00 += temporary
+    path_to_dir_out = os.path.join(descrip_all_1,'list_dicts_characteristics_own')
+    if not os.path.isdir(path_to_dir_out):
+        os.makedirs(path_to_dir_out)
+    is_file_overwitten = False
+    for i in range(args.nb_jobs):
+        path_to_file_out = os.path.join(path_to_dir_out,'list_dicts_characteristics_own_{}.pkl'.format(i + 1))
+        if os.path.isfile(path_to_file_out):
+            print('[INFO] The file at \"{}\" is overwritten.'.format(path_to_file_out))
+            is_file_overwitten = True
+            os.remove(path_to_file_out)
+        with open(path_to_file_out, 'xb') as file:
+            pickle.dump(list_prev[i], file, protocol=2)
+    if is_file_overwitten:
+        print('[WARNING] The dispatching of paths to raw data was probably run two times in a row, without removing the files written at the first run to the directory at "{}".'.format(descrip_all_1))
+        print('[WARNING] Please make sure that the same arguments were used for the two runs of the script "dispatching_paths_to_raw.py".')
+        print('[WARNING] If different arguments were used for the two runs of the script "dispatching_paths_to_raw.py", two different dispatching are mixed up.')
+    print('The dispatching of paths to raw data succeeded.')
+
+
diff --git a/training/training_intra_prediction/generating_data_intra.py b/training/training_intra_prediction/generating_data_intra.py
new file mode 100644
index 0000000000000000000000000000000000000000..53a71c404fae9e525c881318d4e1d96a9a87aa75
--- /dev/null
+++ b/training/training_intra_prediction/generating_data_intra.py
@@ -0,0 +1,630 @@
+"""
+The copyright in this software is being made available under the BSD
+License, included below. This software may be subject to other third party
+and contributor rights, including patent rights, and no such rights are
+granted under this license.
+
+Copyright (c) 2010-2022, ITU/ISO/IEC
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+    Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+    be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import argparse
+try:
+    import itertools.izip as zip
+except ImportError:
+    pass
+import errno
+import functools
+import numpy
+import os
+import PIL.Image
+import pickle
+import random
+import re
+import subprocess
+import sys
+import tensorflow as tf
+
+# The three variables below define the used Visual Studio version.
+VERSION_VS_MAJOR = 16
+VERSION_VS_MINOR_0 = 19
+VERSION_VS_MINOR_1 = 29
+
+if sys.platform in ('win32', 'cygwin'):
+    PATH_TO_EXE_ENCODER_VTM_REGULAR = os.path.join('bin/','vs{}'.format(VERSION_VS_MAJOR),'msvc-{0}.{1}'.format(VERSION_VS_MINOR_0, VERSION_VS_MINOR_1),'x86_64','release','regular','EncoderApp.exe')
+    PATH_TO_EXE_DECODER_VTM_REGULAR = os.path.join('bin/','vs{}'.format(VERSION_VS_MAJOR),'msvc-{0}.{1}'.format(VERSION_VS_MINOR_0, VERSION_VS_MINOR_1),'x86_64','release','regular','DecoderApp.exe')
+    PATH_TO_EXE_ENCODER_VTM_NN = os.path.join('bin/','vs{}'.format(VERSION_VS_MAJOR),'msvc-{0}.{1}'.format(VERSION_VS_MINOR_0, VERSION_VS_MINOR_1),'x86_64','release','search','EncoderApp.exe')
+    PATH_TO_EXE_DECODER_VTM_NN = os.path.join('bin/','vs{}'.format(VERSION_VS_MAJOR),'msvc-{0}.{1}'.format(VERSION_VS_MINOR_0, VERSION_VS_MINOR_1),'x86_64','release','search','DecoderApp.exe')
+else:
+    PATH_TO_EXE_ENCODER_VTM_REGULAR = 'bin/regular/EncoderAppStatic'
+    PATH_TO_EXE_DECODER_VTM_REGULAR = 'bin/regular/DecoderAppStatic'
+    PATH_TO_EXE_ENCODER_VTM_NN = 'bin/search/EncoderAppStatic'
+    PATH_TO_EXE_DECODER_VTM_NN = 'bin/search/DecoderAppStatic'
+
+DICT_DESC_FULL = {(4, 4): 8,(4, 8): 11,(4, 16): 22,(4, 32): 44,(8, 8): 16,(8, 16): 22,(16, 16): 64}
+
+def create_dconcurrently(value_in):
+    if sys.version_info[0] < 3:
+        try:
+            os.makedirs(value_in)
+        except OSError as err:
+            if err.errno != errno.EEXIST:
+                raise
+    else:
+        os.makedirs(value_in,exist_ok=True)
+
+def getting_specialized(input_in):
+    list_0 = input_in.split(',')
+    if len(list_0) != 2:
+        raise argparse.ArgumentTypeError('"{}" does not contain two strings separated by a comma.'.format(input_in))
+    if not list_0[0]:
+        raise argparse.ArgumentTypeError('In "{}", the first string on the left side of the comma is empty.'.format(input_in))
+    try:
+        if list_0[1]:
+            tuple_0 = (int(list_0[0]), list_0[1])
+        else:
+            tuple_0 = (int(list_0[0]),)
+    except ValueError:
+        raise argparse.ArgumentTypeError('In "{}", either the string on the left side of the comma or the string on the right side of the comma cannot be converted into an integer.'.format(input_in))
+    if tuple_0[0] < 0:
+        raise argparse.ArgumentTypeError('In "{}", the string on the left side of the comma is not a positive integer.'.format(input_in))
+    else:
+        return tuple_0
+
+def get_individual_saved(value_in):
+    if value_in > 8:
+        return value_in//2
+    else:
+        return value_in
+
+def get_sizes_ind_saved(value_in):
+    if value_in <= 8:
+        return (value_in << 1) + 4
+    else:
+        return value_in << 1
+
+def getting_right_left(line_in, string_0, string_1):
+    sre_match = re.search('(?<={0})\s*[0-9]+\s*(?={1})'.format(string_0, string_1),line_in)
+    if sre_match is None:
+        raise RuntimeError('Error.')
+    return int(sre_match.group(0))
+
+def getting_above_only(line_in, string_0, string_1):
+    sre_match = re.search('(?<={0})\s*-?[0-9]+\s*(?={1})'.format(string_0, string_1),line_in)
+    if sre_match is None:
+        raise RuntimeError('Error.')
+    return int(sre_match.group(0))
+
+def extracting_partially(line_in, string_0, string_1, nbprsd):
+    pttrn = '(?<={})'.format(string_0)
+    for i in range(nbprsd):
+        pttrn += '\s*[0-9]+\s*'
+        if i < nbprsd - 1:
+            pttrn += '\|'
+    pttrn += '(?={})'.format(string_1)
+    sre_match = re.search(pttrn,line_in)
+    if sre_match is None:
+        raise RuntimeError('Error.')
+    return [int(item) for item in sre_match.group(0).split('|')]
+
+def getting_content(dim_a, dim_t, nbfr, data_type, in_form, path, nbsk):
+    if data_type == numpy.uint8:
+        nbbpc = 1
+    elif data_type == numpy.uint16:
+        nbbpc = 2
+    nbbpef = dim_a*dim_t*nbbpc
+    if in_form == '400':
+        nb_cs = 1
+    elif in_form in ('420', '444'):
+        nb_cs = 3
+        if in_form == '420':
+            factor_00 = 2
+            factor_01 = 2
+        else:
+            factor_00 = 1
+            factor_01 = 1
+        nbbpppf = (dim_a*dim_t)//(factor_00*factor_01)
+        nbbpef += 2*nbbpppf*nbbpc
+    cont_out = numpy.zeros((dim_a, dim_t, nb_cs, nbfr),dtype=data_type)
+    with open(path, 'rb') as file:
+        if nbsk > 0:
+            file.seek(nbsk*nbbpef)
+        for i in range(nbfr):
+            cont_out[:, :, 0, i] = numpy.reshape(numpy.fromfile(file,dtype=data_type,count=dim_a*dim_t),(dim_a, dim_t))
+            if in_form in ('420', '444'):
+                for j in (1, 2):
+                    cont_out[:, :, j, i] = numpy.repeat(numpy.repeat(numpy.reshape(numpy.fromfile(file,dtype=data_type,count=nbbpppf),(dim_a//factor_00, dim_t//factor_01)), factor_00, axis=0),factor_01,axis=1)
+    return cont_out
+
+def change_inpre_optionally(value_in,is_changed):
+    value_modf = value_in
+    if is_changed:
+        if value_in not in (0, 1):
+            value_modf = 68 - value_in
+    return value_modf
+
+class IndexerCtx(object):
+    def __init__(self, pair_height_width_after_tr, tpl_factors_used, is_changed_def):
+        self.pair_height_width_after_tr = pair_height_width_after_tr
+        self.tpl_factors_used = tpl_factors_used
+        self.is_changed_def = is_changed_def
+
+def find_indexer_matching(tuple_pairs_reference, pair_imposed):
+    if pair_imposed in tuple_pairs_reference:
+        return IndexerCtx(pair_imposed,(1, 1),False)
+    if (pair_imposed[1], pair_imposed[0]) in tuple_pairs_reference:
+        return IndexerCtx((pair_imposed[1], pair_imposed[0]),(1, 1),True)
+    if pair_imposed in ((8, 32), (32, 8)):
+        if (8, 16) in tuple_pairs_reference:
+            if pair_imposed == (8, 32):
+                tuple_factors_prop = (1, 2)
+                is_changed_def = False
+            else:
+                tuple_factors_prop = (2, 1)
+                is_changed_def = True
+            return IndexerCtx((8, 16),tuple_factors_prop,is_changed_def)
+        if (16, 8) in tuple_pairs_reference:
+            if pair_imposed == (8, 32):
+                tuple_factors_prop = (1, 2)
+                is_changed_def = True
+            else:
+                tuple_factors_prop = (2, 1)
+                is_changed_def = False
+            return IndexerCtx((16, 8),tuple_factors_prop,is_changed_def)
+    if pair_imposed in ((128, 128), (64, 64), (32, 32), (16, 32), (32, 16)):
+        if (16, 16) in tuple_pairs_reference:
+            return IndexerCtx((16, 16),(pair_imposed[0]//16, pair_imposed[1]//16),False)
+    return None
+
+def reduce_with_data_loss(array_input_optional, tuple_factors):
+    array_temporary = numpy.reshape(array_input_optional,(array_input_optional.shape[0],array_input_optional.shape[1]//tuple_factors[0],tuple_factors[0],array_input_optional.shape[2]//tuple_factors[1],tuple_factors[1],array_input_optional.shape[3]))
+    if array_input_optional.dtype == numpy.uint64:
+        array_intermediate_temporary = array_temporary
+    else:
+        array_intermediate_temporary = array_temporary.astype(numpy.uint64)
+    array_output = (numpy.sum(array_intermediate_temporary,axis=(2, 4))+(tuple_factors[0]*tuple_factors[1])//2)//(tuple_factors[0]*tuple_factors[1])
+    if array_input_optional.dtype == numpy.uint64:
+        return array_output
+    else:
+        return array_output.astype(array_input_optional.dtype)
+
+class GeneratorDataPart(object):
+    def __enter__(self):
+        for itemm in self._dict_attributes.values():
+            if os.path.isfile(itemm['path_to_tfrecord']):
+                print('[WARNING] The same training set (at the same training cycle) is being re-written to the same directory once more. If it is expected, please remove the existing files to regenerate the same training set.')
+                raise OSError('The file at \"{}\" already exists.'.format(itemm['path_to_tfrecord']))
+            itemm['record_writer'] = tf.io.TFRecordWriter(itemm['path_to_tfrecord'])
+    
+    def __exit__(self,exception_type,exception_value,exception_traceback):
+        self._evaluate_ccs_imposed_unchanged()
+        for itemm in self._dict_attributes.values():
+            itemm['record_writer'].close()
+            itemm['record_writer'] = None
+    
+    def __init__(self,dict_hwt,are_csts_mapgsym):
+        self._dict_attributes = {}
+        for pair_key_dict in dict_hwt:
+            self._dict_attributes[pair_key_dict] =  {'ccs_imposed_unchanged': 0}
+        self._are_csts_mapgsym = are_csts_mapgsym
+        for pair_key_dict, itemm in self._dict_attributes.items():
+            itemm['record_writer'] = None
+            itemm['ccs_recomputed'] = numpy.zeros((2, 7),dtype=numpy.int64)
+            itemm['nb_imposed_unchanged'] = dict_hwt[pair_key_dict]
+    
+    def _evaluate_ccs_imposed_unchanged(self):
+        for item in self._dict_attributes.values():
+            item['ccs_imposed_unchanged'] = 0
+    
+    def save_ccs_for_next(self,dict_in):
+        for pair_key_dict, item in dict_in.items():
+            numpy.save(item,self._dict_attributes[pair_key_dict]['ccs_recomputed'])
+    
+    def set_paths_completely(self,dict_in):
+        for pair_key_dict, item in dict_in.items():
+            self._dict_attributes[pair_key_dict]['path_to_tfrecord'] = item
+    
+    def run_generator_data_part(self,list_primary,dict_picked):
+        for dict_chr_own in list_primary:
+            if 'prdef' in dict_chr_own:
+                if dict_chr_own['prdef'].endswith('n02105855_2933.JPEG'):
+                    continue
+                try:
+                    image = PIL.Image.open(dict_chr_own['prdef'])
+                    if image.mode != 'RGB':
+                        raise ValueError('Error.')
+                    data_given_uint8 = numpy.asarray(image)
+                    if data_given_uint8.dtype != numpy.uint8:
+                        raise TypeError('Error.')
+                    if data_given_uint8.ndim != 3:
+                        raise ValueError('Error.')
+                    if data_given_uint8.shape[2] != 3:
+                        raise ValueError('Error.')
+                    data_given_float64 = data_given_uint8.astype(numpy.float64)
+                    out_collected_0 = numpy.round(numpy.stack((0.299*data_given_float64[:, :, 0] + 0.587*data_given_float64[:, :, 1] + 0.114*data_given_float64[:, :, 2], 128. - (0.299/1.772)*data_given_float64[:, :, 0] - (0.587/1.772)*data_given_float64[:, :, 1] + (0.886/1.772)*data_given_float64[:, :, 2], 128. + (0.701/1.402)*data_given_float64[:, :, 0] - (0.587/1.402)*data_given_float64[:, :, 1] - (0.114/1.402)*data_given_float64[:, :, 2]),axis=2).clip(min=0., max=float((1 << 8) - 1))).astype(numpy.uint8)
+                except (TypeError, ValueError):
+                    continue
+                if dict_chr_own['is_expanded']:
+                    out_collected_1 = numpy.flip(out_collected_0,axis=1)
+                else:
+                    out_collected_1 = out_collected_0
+                out_collected_2 = 4*out_collected_1.astype(numpy.uint16)
+                dict_input =  {'data_add_basic': out_collected_2[0:8*(out_collected_2.shape[0]//8), 0:8*(out_collected_2.shape[1]//8), :]}
+            else:
+                dict_input = dict_chr_own.copy()
+            if 'data_add_basic' in dict_input:
+                are_orgf_definitely = (False, False)
+            else:
+                are_orgf_definitely = (dict_input['data_ordered_0'], dict_input['data_ordered_1'])
+            if 'data_add_basic' in dict_input:
+                (height_video, width_video, nb_channels) = dict_input['data_add_basic'].shape
+                if dict_input['data_add_basic'].dtype == numpy.uint8:
+                    input_bit_depth = 8
+                elif dict_input['data_add_basic'].dtype == numpy.uint16:
+                    input_bit_depth = 10
+                if nb_channels == 1:
+                    input_chroma_format = '400'
+                elif nb_channels == 3:
+                    input_chroma_format = '420'
+                nb_frames = 1
+                nb_fixed = 0
+                pcetx = ''
+            else:
+                dict_desc = {}
+                with open(dict_input['pdetx'], 'r') as file:
+                    for line_0 in file:
+                        if line_0.isspace() or line_0.startswith('#'):
+                            continue
+                        dict_desc[line_0.split(':')[0].strip()] = int(line_0.split(':')[1])
+                height_video = dict_desc['SourceHeight']
+                width_video = dict_desc['SourceWidth']
+                input_bit_depth = dict_desc['InputBitDepth']
+                input_chroma_format = str(dict_desc['InputChromaFormat'])
+                nb_frames = 1
+                del dict_desc
+                nb_fixed = dict_input['nb_fixed']
+                pcetx = dict_input['pcetx']
+            if os.path.isfile(dict_picked['path_to_bitstream']):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['path_to_bitstream']))
+            if os.path.isfile(dict_picked['path_provided_0']):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['path_provided_0']))
+            if os.path.isfile(dict_picked['path_provided_1']):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['path_provided_1']))
+            if os.path.isfile(dict_picked['path_provided_2']):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['path_provided_2']))
+            if os.path.isfile(dict_picked['tuple_reference_writing'][0]):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['tuple_reference_writing'][0]))
+            if os.path.isfile(dict_picked['tuple_reference_writing'][1]):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['tuple_reference_writing'][1]))
+            if os.path.isfile(dict_picked['tuple_reference_writing'][2]):
+                raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_picked['tuple_reference_writing'][2]))
+            if 'data_add_basic' in dict_input:
+                if os.path.isfile(dict_chr_own['pbfe']):
+                    raise OSError('The file at \"{}\" already exists. This file is a temporary file. It is supposed to be automatically suppressed after the decoding completion. Did the VTM-11-NNVC encoder/decoder crash? Please remove this file manually.'.format(dict_chr_own['pbfe']))
+                with open(dict_chr_own['pbfe'], 'xb') as file:
+                    dict_input['data_add_basic'][:, :, 0].flatten().tofile(file)
+                    if input_chroma_format == '420':
+                        dict_input['data_add_basic'][::2, ::2, 1].flatten().tofile(file)
+                        dict_input['data_add_basic'][::2, ::2, 2].flatten().tofile(file)
+                    elif input_chroma_format == '444':
+                        dict_input['data_add_basic'][:, :, 1].flatten().tofile(file)
+                        dict_input['data_add_basic'][:, :, 2].flatten().tofile(file)
+            args_encoding = [dict_picked['path_to_exe_encoder'],'-c',dict_picked['path_to_cfg'],'-i',dict_chr_own['pbfe'],'-b',dict_picked['path_to_bitstream'],'-wdt',str(width_video),'-hgt',str(height_video),'--InputBitDepth={}'.format(input_bit_depth),'--OutputBitDepth={}'.format(input_bit_depth),'--InputChromaFormat={}'.format(input_chroma_format),'--SEIDecodedPictureHash=1','--ReconFile=','--FramesToBeEncoded={}'.format(nb_frames),'--FrameSkip={}'.format(nb_fixed),'--QP={}'.format(numpy.random.choice(dict_picked['qps_int']).item())]
+            if dict_picked['descr_stacked_up']:
+                args_encoding.append('--DescriptionPairHeightWidthPathToGraphOutput={}'.format(dict_picked['descr_stacked_up']))
+            if pcetx:
+                args_encoding += ['-c', pcetx]
+            else:
+                args_encoding.append('--FrameRate=25')
+            if dict_picked['path_provided_0']:
+                args_encoding.append('--PathToQuadtreeRecords={}'.format(dict_picked['path_provided_0']))
+            if self._are_csts_mapgsym:
+                args_encoding.append('--AreCostsWritten=1')
+            if are_orgf_definitely[0]:
+                args_encoding.append('--AreOriginalFv=1')
+            if are_orgf_definitely[1]:
+                args_encoding.append('--AreOriginalFh=1')
+            del are_orgf_definitely
+            args_decoding = [dict_picked['path_to_exe_decoder'],'-b',dict_picked['path_to_bitstream'],'-o',dict_picked['path_provided_2'],'--OutputBitDepth={}'.format(input_bit_depth)]
+            if dict_picked['descr_stacked_up']:
+                args_decoding.append('--DescriptionPairHeightWidthPathToGraphOutput={}'.format(dict_picked['descr_stacked_up']))
+            if dict_picked['path_provided_1']:
+                args_decoding.append('--PathToQuadtreeRecords={}'.format(dict_picked['path_provided_1']))
+            if self._are_csts_mapgsym:
+                args_decoding.append('--AreCostsWritten=1')
+            args_encoding.append('--PathToFileLOriginal={}'.format(dict_picked['tuple_reference_writing'][0]))
+            args_encoding.append('--PathToFileLReconstructed={}'.format(dict_picked['tuple_reference_writing'][1]))
+            args_decoding.append('--PathToFileLDecoded={}'.format(dict_picked['tuple_reference_writing'][2]))
+            subprocess.check_call(args_encoding,stdout=None,shell=False)
+            subprocess.check_call(args_decoding,stdout=None,shell=False)
+            del args_encoding
+            del args_decoding
+            if 'data_add_basic' in dict_input:
+                os.remove(dict_chr_own['pbfe'])
+            os.remove(dict_picked['path_to_bitstream'])
+            outs_intims = (numpy.squeeze(getting_content(height_video,width_video,1,numpy.uint16,input_chroma_format,dict_picked['tuple_reference_writing'][0],0),axis=3),numpy.squeeze(getting_content(height_video,width_video,1,numpy.uint16,input_chroma_format,dict_picked['tuple_reference_writing'][1],0),axis=3),numpy.squeeze(getting_content(height_video,width_video,1,numpy.uint16,input_chroma_format,dict_picked['tuple_reference_writing'][2],0),axis=3))
+            os.remove(dict_picked['tuple_reference_writing'][0])
+            os.remove(dict_picked['tuple_reference_writing'][1])
+            os.remove(dict_picked['tuple_reference_writing'][2])
+            os.remove(dict_picked['path_provided_2'])
+            ch_single_or_pair_given = numpy.concatenate((outs_intims[0][:, :, 0:1],outs_intims[2][:, :, 0:1]),axis=2)
+            del outs_intims
+            is_r0 = False
+            is_r1 = False
+            list_3 = []
+            with open(dict_picked['path_provided_0'], 'r') as file_0, open(dict_picked['path_provided_1'], 'r') as file_1:
+                for line_0, line_1 in zip(file_0, file_1):
+                    if not is_r0:
+                        if line_0.find('GOP of index 0 - Frame of index 0 - Beginning') == -1 or line_1.find('GOP of index 0 - Frame of index 0 - Beginning') == -1:
+                            raise RuntimeError('Error.')
+                        is_r0 = True
+                        continue
+                    if line_0.find('GOP of index 0 - Frame of index 0 - End') != -1:
+                        if line_1.find('GOP of index 0 - Frame of index 0 - End') == -1:
+                            raise RuntimeError('Error.')
+                        is_r1 = True
+                        break
+                    if line_0.isspace() and line_1.isspace():
+                        continue
+                    if getting_right_left(line_0, 'channel index', ';') == 0:
+                        list_0 = re.search('(?<=block size)\s*[0-9]+\s*x\s*[0-9]+\s*(?=;)', line_0).group(0).split('x')
+                        list_1 = re.search('(?<=block position \()\s*[0-9]+\s*,\s*[0-9]+\s*(?=\)\s*;)', line_0).group(0).split(',')
+                        list_2 = extracting_partially(line_0,'intra prediction SATDs regular',';',6)
+                        try:
+                            is_ok = True
+                            dpnn = getting_right_left(line_0,'intra prediction SATD PNN',';')
+                        except RuntimeError:
+                            is_ok = False
+                            pass
+                        else:
+                            list_2.append(dpnn)
+                        dict_chr = {'base_without_extra': numpy.array([int(list_0[1]), int(list_0[0]), int(list_1[1]), int(list_1[0]), getting_right_left(line_0, 'intra prediction mode index', ';'), getting_right_left(line_0, 'depth of the TB relatively to its CB', ';'), getting_right_left(line_0, 'flag of splitting the CB into 4 PBs', ';')], dtype=numpy.uint32), 'mip_flag': getting_right_left(line_0, 'MIP flag', ';'), 'idb_measuring': numpy.array(extracting_partially(line_0, 'indices best modes SATDs regular', ';', 6), dtype=numpy.uint8), 'dist_selected': numpy.array(list_2, dtype=numpy.uint64), 'msk_chosen': numpy.array([getting_above_only(line_1, 'width mask above', ';'), getting_above_only(line_1, 'height mask left', ';')], dtype=numpy.int32)}
+                        if is_ok:
+                            dict_chr['extra_init'] = numpy.array([float(item) for item in re.search('(?<=measures of discrepancies PNN \()\s*\s*[0-9]+\.?[0-9]*\s*(e[+\-][0-9]+)?\s*\s*,\s*[+\-]?\s*[0-9]+\.?[0-9]*\s*(e[+\-][0-9]+)?\s*\s*(?=\);)', line_0).group(0).split(',')], dtype=numpy.float64)
+                        if self._are_csts_mapgsym:
+                            pttrn = '(?<=costs mapping)'
+                            for i in range(14):
+                                pttrn += '\s*[0-9]+\.?[0-9]*\s*(e[+\-][0-9]+)?\s*'
+                                if i < 13:
+                                    pttrn += '\|'
+                            pttrn += '(?=;)'
+                            srematch = re.search(pttrn, line_0)
+                            if srematch is None:
+                                list_0 = []
+                            else:
+                                list_0 = [float(item) for item in srematch.group(0).split('|')]
+                            dict_chr['costs_found_finally'] = numpy.array(list_0, dtype=numpy.float64)
+                        list_3.append(dict_chr)
+            if not is_r1:
+                raise RuntimeError('Error.')
+            del is_r0
+            del is_r1
+            list_0 = []
+            for dict_chr in list_3:
+                chrc = dict_chr['base_without_extra']
+                if find_indexer_matching(((4, 4),(4, 8),(4, 16),(4, 32),(8, 8),(8, 16),(16, 16)), (chrc[0].item(), chrc[1].item())) is not None:
+                    if (chrc[0].item() <= 8 or chrc[1].item() <= 8) and chrc[0].item()*chrc[1].item() < 256:
+                        tpllines = (min(chrc[0].item(),chrc[1].item()), min(chrc[0].item(),chrc[1].item()))
+                    else:
+                        tpllines = (get_individual_saved(chrc[0].item()), get_individual_saved(chrc[1].item()))
+                    tplctx = (get_sizes_ind_saved(chrc[0].item()), get_sizes_ind_saved(chrc[1].item()))
+                    if chrc[2].item() >= tpllines[0] and chrc[3].item() >= tpllines[1] and chrc[2].item() + tplctx[0] <= ch_single_or_pair_given.shape[0] and chrc[3].item() + tplctx[1] <= ch_single_or_pair_given.shape[1]:
+                        list_0.append(dict_chr)
+            random.shuffle(list_0)
+            self._evaluate_ccs_imposed_unchanged()
+            for dict_chr in list_0:
+                if 'costs_found_finally' in dict_chr:
+                    if dict_chr['costs_found_finally'].size != 0:
+                        costs_found_finally = numpy.expand_dims(dict_chr['costs_found_finally'].astype(numpy.float32),axis=0)
+                    else:
+                        continue
+                else:
+                    costs_found_finally = None
+                pair_key_dict = (dict_chr['base_without_extra'][0].item(), dict_chr['base_without_extra'][1].item())
+                transfos = find_indexer_matching(((4, 4),(4, 8),(4, 16),(4, 32),(8, 8),(8, 16),(16, 16)),pair_key_dict)
+                if transfos.pair_height_width_after_tr in self._dict_attributes:
+                    if self._dict_attributes[transfos.pair_height_width_after_tr]['ccs_imposed_unchanged'] < self._dict_attributes[transfos.pair_height_width_after_tr]['nb_imposed_unchanged']:
+                        is_authorized = dict_chr['base_without_extra'][5].item() != 0 and not (dict_chr['base_without_extra'][6].item() != 0)
+                        if 'extra_init' in dict_chr:
+                            if is_authorized:
+                                is_not_finalized = dict_chr['base_without_extra'][4].item() == 71
+                            else:
+                                is_not_finalized = dict_chr['dist_selected'][-1].item() < 1.05*dict_chr['dist_selected'][4].item() + DICT_DESC_FULL[transfos.pair_height_width_after_tr] and dict_chr['extra_init'][0].item() > 0.6 and dict_chr['extra_init'][1].item() > 0.6
+                        else:
+                            is_not_finalized = not is_authorized
+                        if is_not_finalized:
+                            if (pair_key_dict[0] <= 8 or pair_key_dict[1] <= 8) and pair_key_dict[0]*pair_key_dict[1] < 256:
+                                lines_pairing = (min(pair_key_dict[0],pair_key_dict[1]), min(pair_key_dict[0],pair_key_dict[1]))
+                            else:
+                                lines_pairing = (get_individual_saved(pair_key_dict[0]), get_individual_saved(pair_key_dict[1]))
+                            sizes_pairing = (get_sizes_ind_saved(pair_key_dict[0]), get_sizes_ind_saved(pair_key_dict[1]))
+                            row_1sts = dict_chr['base_without_extra'][2:3] - lines_pairing[0]
+                            col_1sts = dict_chr['base_without_extra'][3:4] - lines_pairing[1]
+                            dict_transfos = {'tpl_wh_used': tuple(dict_chr['msk_chosen']),'tpl_factors_used': transfos.tpl_factors_used,'is_changed_def': transfos.is_changed_def}
+                            if 'idb_measuring' in dict_chr and 'dist_selected' in dict_chr:
+                                tuple_iind_unchanged = (numpy.expand_dims(dict_chr['idb_measuring'],axis=0),numpy.expand_dims(dict_chr['dist_selected'],axis=0))
+                            elif 'idb_measuring' not in dict_chr and 'dist_selected' not in dict_chr:
+                                tuple_iind_unchanged = None
+                            portsa_uint8or16 = numpy.zeros((row_1sts.size, lines_pairing[0], lines_pairing[1] + sizes_pairing[1], 1), dtype=ch_single_or_pair_given.dtype)
+                            portsl_uint8or16 = numpy.zeros((row_1sts.size, sizes_pairing[0], lines_pairing[1], 1), dtype=ch_single_or_pair_given.dtype)
+                            targs_uint8or16 = numpy.zeros((row_1sts.size, pair_key_dict[0], pair_key_dict[1], 1), dtype=ch_single_or_pair_given.dtype)
+                            for i in range(row_1sts.size):
+                                idxx = ch_single_or_pair_given.shape[2] - 1
+                                portsa_uint8or16[i] = ch_single_or_pair_given[row_1sts[i].item():row_1sts[i].item() + lines_pairing[0], col_1sts[i].item():col_1sts[i].item() + lines_pairing[1] + sizes_pairing[1], idxx:idxx + 1]
+                                portsl_uint8or16[i] = ch_single_or_pair_given[row_1sts[i].item() + lines_pairing[0]:row_1sts[i].item() + lines_pairing[0] + sizes_pairing[0], col_1sts[i].item():col_1sts[i].item() + lines_pairing[1], idxx:idxx + 1]
+                                targs_uint8or16[i] = ch_single_or_pair_given[row_1sts[i].item() + lines_pairing[0]:row_1sts[i].item() + lines_pairing[0] + pair_key_dict[0], col_1sts[i].item() + lines_pairing[1]:col_1sts[i].item() + lines_pairing[1] + pair_key_dict[1], 0:1]
+                            if dict_transfos is None:
+                                intermediate_a = portsa_uint8or16
+                                intermediate_l = portsl_uint8or16
+                                intermediate_t = targs_uint8or16
+                                tuple_mann = None
+                            else:
+                                tuple_portions_dwd = (reduce_with_data_loss(portsa_uint8or16,dict_transfos['tpl_factors_used']),reduce_with_data_loss(portsl_uint8or16,dict_transfos['tpl_factors_used']))
+                                if dict_transfos['is_changed_def']:
+                                    intermediate_a = numpy.concatenate((numpy.transpose(tuple_portions_dwd[0][:, :, 0:tuple_portions_dwd[1].shape[2], :],axes=(0, 2, 1, 3)),numpy.transpose(tuple_portions_dwd[1],axes=(0, 2, 1, 3))),axis=2)
+                                    intermediate_l = numpy.transpose(tuple_portions_dwd[0][:, :, tuple_portions_dwd[1].shape[2]:, :],axes=(0, 2, 1, 3))
+                                    intermediate_t = numpy.transpose(reduce_with_data_loss(targs_uint8or16,dict_transfos['tpl_factors_used']),axes=(0, 2, 1, 3))
+                                    tuple_mann = (dict_transfos['tpl_wh_used'][1]//dict_transfos['tpl_factors_used'][0], dict_transfos['tpl_wh_used'][0]//dict_transfos['tpl_factors_used'][1])
+                                else:
+                                    (intermediate_a,intermediate_l) = tuple_portions_dwd
+                                    intermediate_t = reduce_with_data_loss(targs_uint8or16,dict_transfos['tpl_factors_used'])
+                                    tuple_mann = (dict_transfos['tpl_wh_used'][0]//dict_transfos['tpl_factors_used'][1], dict_transfos['tpl_wh_used'][1]//dict_transfos['tpl_factors_used'][0])
+                            if costs_found_finally is None:
+                                csts_mapgsym = None
+                            else:
+                                arrtempin = numpy.reshape(costs_found_finally,(costs_found_finally.shape[0], 2, 7))
+                                if dict_transfos['is_changed_def']:
+                                    arrtempinin = arrtempin.copy()
+                                    arrtempinin[..., 1:] = numpy.flip(arrtempin[..., 1:], axis=-1)
+                                else:
+                                    arrtempinin = arrtempin
+                                csts_mapgsym = numpy.reshape(arrtempinin,(costs_found_finally.shape[0], -1))
+                            if tuple_iind_unchanged is None:
+                                tpl_indices_distmssym = None
+                            else:
+                                tpl_indices_distmssym = (numpy.reshape(numpy.array(list(map(functools.partial(change_inpre_optionally,is_changed=dict_transfos['is_changed_def']), tuple_iind_unchanged[0].flatten())),dtype=tuple_iind_unchanged[0].dtype),tuple_iind_unchanged[0].shape),tuple_iind_unchanged[1])
+                            if intermediate_a.dtype == numpy.uint8:
+                                intermediate_aa = 4*intermediate_a.astype(numpy.uint16)
+                                intermediate_ll = 4*intermediate_l.astype(numpy.uint16)
+                                targs_fin = 4*intermediate_t.astype(numpy.uint16)
+                            elif intermediate_a.dtype == numpy.uint16:
+                                intermediate_aa = intermediate_a
+                                intermediate_ll = intermediate_l
+                                targs_fin = intermediate_t
+                            width_mareg = max(0, -intermediate_aa.shape[2] + intermediate_ll.shape[2] + 2*targs_fin.shape[2] + tuple_mann[0])
+                            height_mareg = max(0, -intermediate_ll.shape[1] + 2*targs_fin.shape[1] + tuple_mann[1])
+                            above_substs = numpy.squeeze(intermediate_aa[:, intermediate_aa.shape[1] - 1, intermediate_ll.shape[2] - 1:intermediate_ll.shape[2] + 2*targs_fin.shape[2], :],axis=2)
+                            left_substs = numpy.squeeze(intermediate_ll[:, 0:2*targs_fin.shape[1], intermediate_ll.shape[2] - 1, :],axis=2)
+                            if width_mareg:
+                                above_substs[..., above_substs.shape[-1] - width_mareg:] = numpy.expand_dims(above_substs[..., above_substs.shape[-1] - width_mareg - 1], axis=above_substs.ndim - 1)
+                            if height_mareg:
+                                left_substs[..., left_substs.shape[-1] - height_mareg:] = numpy.expand_dims(left_substs[..., left_substs.shape[-1] - height_mareg - 1], axis=left_substs.ndim - 1)
+                            portsa_int16 = intermediate_aa.astype(numpy.int16)
+                            portsl_int16 = intermediate_ll.astype(numpy.int16)
+                            unnb_pixels = portsa_int16.shape[1]*(portsa_int16.shape[2] - tuple_mann[0]) + portsl_int16.shape[2]*(portsl_int16.shape[1] - tuple_mann[1])
+                            mctxts = ((numpy.sum(numpy.squeeze(portsa_int16[:, :, 0:portsa_int16.shape[2] - tuple_mann[0], :], axis=3), axis=(1, 2), dtype=numpy.int32) + numpy.sum(numpy.squeeze(portsl_int16[:, 0:portsl_int16.shape[1] - tuple_mann[1], :, :], axis=3), axis=(1, 2), dtype=numpy.int32) + unnb_pixels//2)//unnb_pixels).astype(numpy.int16)
+                            portsa_int16 -= numpy.reshape(mctxts,(mctxts.size, 1, 1, 1))
+                            portsl_int16 -= numpy.reshape(mctxts,(mctxts.size, 1, 1, 1))
+                            portsa_int16[:, :, portsa_int16.shape[2] - tuple_mann[0]:, :] = 0
+                            portsl_int16[:, portsl_int16.shape[1] - tuple_mann[1]:, :, :] = 0
+                            for i in range(targs_fin.shape[0]):
+                                if csts_mapgsym is None:
+                                    csts_mapg = None
+                                else:
+                                    csts_mapg = csts_mapgsym[i]
+                                if tpl_indices_distmssym is None:
+                                    tpl_indices_distms = None
+                                else:
+                                    tpl_indices_distms = (tpl_indices_distmssym[0][i], tpl_indices_distmssym[1][i])
+                                feature = {'data_written_0': tf.train.Feature(bytes_list=tf.train.BytesList(value=[portsa_int16[i].tobytes()])), 'data_written_1': tf.train.Feature(bytes_list=tf.train.BytesList(value=[portsl_int16[i].tobytes()])), 'data_written_2': tf.train.Feature(bytes_list=tf.train.BytesList(value=[targs_fin[i].tobytes()])),'data_written_3': tf.train.Feature(bytes_list=tf.train.BytesList(value=[mctxts[i].tobytes()])),'data_written_4' : tf.train.Feature(bytes_list=tf.train.BytesList(value=[above_substs[i].tobytes()])),'data_written_5' : tf.train.Feature(bytes_list=tf.train.BytesList(value=[left_substs[i].tobytes()]))}
+                                if csts_mapg is not None:
+                                    feature['data_written_6'] = tf.train.Feature(bytes_list=tf.train.BytesList(value=[csts_mapg.tobytes()]))
+                                if tpl_indices_distms is not None:
+                                    feature['data_written_7'] = tf.train.Feature(bytes_list=tf.train.BytesList(value=[tpl_indices_distms[0].tobytes()]))
+                                    feature['data_written_8'] = tf.train.Feature(bytes_list=tf.train.BytesList(value=[(tpl_indices_distms[1].astype(numpy.int64)).tobytes()]))
+                                self._dict_attributes[transfos.pair_height_width_after_tr]['record_writer'].write(tf.train.Example(features=tf.train.Features(feature=feature)).SerializeToString())
+                            if costs_found_finally is not None:
+                                arrtempin = numpy.reshape(costs_found_finally, (costs_found_finally.shape[0], 2, 7))
+                                if transfos.is_changed_def:
+                                    arrtempinin = arrtempin.copy()
+                                    arrtempinin[..., 1:] = numpy.flip(arrtempin[..., 1:], axis=-1)
+                                else:
+                                    arrtempinin = arrtempin
+                                diffusers_temp = numpy.argmin(arrtempinin, axis=2)
+                                for i in range(diffusers_temp.shape[0]):
+                                    for j in range(diffusers_temp.shape[1]):
+                                        self._dict_attributes[transfos.pair_height_width_after_tr]['ccs_recomputed'][j, diffusers_temp[i, j].item()] += 1
+                            self._dict_attributes[transfos.pair_height_width_after_tr]['ccs_imposed_unchanged'] += 1
+            os.remove(dict_picked['path_provided_0'])
+            os.remove(dict_picked['path_provided_1'])
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Creates a training set.')
+    parser.add_argument('path_to_directory_sets_training', help='path to the directory containing the different training sets')
+    parser.add_argument('tuple_index_cycle_tag_sparsity', help='index of the training cycle and tag characterizing the sparsity constraints on the weights of the neural network', type=getting_specialized)
+    parser.add_argument('index_job', help='index of the job creating a portion of the training set', type=int)
+    parser.add_argument('--are_costs_parsed', help='if given, the costs are parsed', action='store_true', default=False)
+    args = parser.parse_args()
+    index_cycle = args.tuple_index_cycle_tag_sparsity[0]
+    if not index_cycle:
+        if len(args.tuple_index_cycle_tag_sparsity) != 1:
+            raise ValueError('`args.tuple_index_cycle_tag_sparsity[0]` is equal to 0 and `len(tuple_index_cycle_tag_sparsity)` is not equal to 1.')
+    tag_training_set = 'partitioning_{}_reconstruction_vtm'.format(index_cycle)
+    if args.are_costs_parsed:
+        tag_training_set += '_ttm'
+    tag_suffix_job = os.path.join(tag_training_set,'job_{}'.format(args.index_job))
+    path_to_directory_temp = os.path.join('results/temporary/',tag_suffix_job)
+    create_dconcurrently(path_to_directory_temp)
+    if index_cycle:
+        path_to_exe_encoder = PATH_TO_EXE_ENCODER_VTM_NN
+        path_to_exe_decoder = PATH_TO_EXE_DECODER_VTM_NN
+    else:
+        path_to_exe_encoder = PATH_TO_EXE_ENCODER_VTM_REGULAR
+        path_to_exe_decoder = PATH_TO_EXE_DECODER_VTM_REGULAR
+    if index_cycle:
+        tag_sf = os.path.join('partitioning_{}_reconstruction_vtm'.format(index_cycle - 1),args.tuple_index_cycle_tag_sparsity[1],'float','graph_output.pb')
+        dfout = ''
+        for i, pair_hw in enumerate(((4, 4),(4, 8),(4, 16),(4, 32),(8, 8),(8, 16),(16, 16))):
+            dfout += '{0},{1},'.format(pair_hw[0], pair_hw[1])
+            dfout += os.path.join('results/freezing_graph_pnn/','target_{0}_{1}'.format(pair_hw[0], pair_hw[1]),tag_sf)
+            if i != 6:
+                dfout += ';'
+    else:
+        dfout = ''
+    dict_picked = {'path_provided_2': os.path.join(path_to_directory_temp,'video_after_decoding.yuv'),'path_to_cfg': '../../cfg/encoder_intra_vtm.cfg','path_to_bitstream': os.path.join(path_to_directory_temp,'bitstream.bin'),'path_to_exe_encoder': path_to_exe_encoder,'path_to_exe_decoder': path_to_exe_decoder,'qps_int': numpy.array([8, 9, 10, 22, 27, 32, 37]),'descr_stacked_up': dfout,'path_provided_0': os.path.join(path_to_directory_temp, 'file_quad_encoder.txt'),'path_provided_1': os.path.join(path_to_directory_temp,'file_quad_decoder.txt'),'tuple_reference_writing': (os.path.join(path_to_directory_temp,'video_before_encoding_after_check.yuv'),os.path.join(path_to_directory_temp,'video_after_encoding_before_check.yuv'),os.path.join(path_to_directory_temp,'video_after_decoding_before_check.yuv'))}
+    dict_hwt = {}
+    dict_in = {}
+    if args.are_costs_parsed:
+        dict_supp = {}
+    else:
+        dict_supp = None
+    for pair_key in ((4, 4),(4, 8),(4, 16),(4, 32),(8, 8),(8, 16),(16, 16)):
+        if pair_key in ((4, 16), (16, 4), (4, 32), (32, 4), (16, 16)):
+            dict_hwt[pair_key] = 32768
+        elif pair_key in ((8, 16), (16, 8)):
+            dict_hwt[pair_key] = 448
+        else:
+            if index_cycle:
+                dict_hwt[pair_key] = 320
+            else:
+                dict_hwt[pair_key] = 256
+        path_location = os.path.join(args.path_to_directory_sets_training,'target_{0}_{1}'.format(pair_key[0], pair_key[1]),tag_suffix_job)
+        create_dconcurrently(path_location)
+        dict_in[pair_key] = os.path.join(path_location,'data.tfrecord')
+        if args.are_costs_parsed:
+            dict_supp[pair_key] = os.path.join(path_location,'ccs_tm_saved.npy')
+    with open(os.path.join('results/dispatching_paths_to_raw/list_dicts_characteristics_own','list_dicts_characteristics_own_{}.pkl'.format(args.index_job)), 'rb') as file:
+        list_primary = pickle.load(file)
+    generator_data_part = GeneratorDataPart(dict_hwt,dict_supp is not None)
+    generator_data_part.set_paths_completely(dict_in)
+    with generator_data_part:
+        generator_data_part.run_generator_data_part(list_primary,dict_picked)
+    if dict_supp is not None:
+        generator_data_part.save_ccs_for_next(dict_supp)
+    print('The generation of the portion of the training sets for the job of index {} succeeded.'.format(args.index_job))
+
+
diff --git a/training/training_intra_prediction/run_setups_vtm.sh b/training/training_intra_prediction/run_setups_vtm.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ce5a61fe835c56732aff45bb1174d6a20d24acce
--- /dev/null
+++ b/training/training_intra_prediction/run_setups_vtm.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+############ Parameters to be set #################################
+
+# Path to the G++ executable.
+PATH_TO_GPLUSPLUS=""
+
+# Path to the GCC executable.
+PATH_TO_GCC=""
+
+###################################################################
+
+cd ../..
+mkdir build
+cd build
+
+# Step 0: VTM-11-NNVC without Filter-Set, without the neural network-based intra prediction mode is built (for writing training data).
+mkdir regular
+cd regular
+cmake3 ../../training/training_intra_prediction -DCMAKE_CXX_COMPILER=${PATH_TO_GPLUSPLUS} -DCMAKE_C_COMPILER=${PATH_TO_GCC} -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG"
+make -j 8
+cd ..
+
+# Step 1: VTM-11-NNVC without Filter-Set, with the neural network-based intra prediction mode in floating-point is built (for writing training data).
+mkdir search
+cd search
+cmake3 ../../training/training_intra_prediction -DCMAKE_CXX_COMPILER=${PATH_TO_GPLUSPLUS} -DCMAKE_C_COMPILER=${PATH_TO_GCC} -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG" -DUSE_SEARCH=1
+make -j 8
+cd ..
+
+# Step 2: VTM-11-NNVC without Filter-Set, with the neural network-based intra prediction mode in floating-point is built (for final rate-distortion tests).
+mkdir tm_inf
+cd tm_inf
+cmake3 ../../training/training_intra_prediction -DCMAKE_CXX_COMPILER=${PATH_TO_GPLUSPLUS} -DCMAKE_C_COMPILER=${PATH_TO_GCC} -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG" -DUSE_TM_INF=1
+make -j 8
+cd ../..
+
+
diff --git a/training/training_intra_prediction/training_nn_intra.py b/training/training_intra_prediction/training_nn_intra.py
new file mode 100644
index 0000000000000000000000000000000000000000..83d7af5a0078dc23f24725aaf8b0dbd8da1b78c0
--- /dev/null
+++ b/training/training_intra_prediction/training_nn_intra.py
@@ -0,0 +1,393 @@
+"""
+The copyright in this software is being made available under the BSD
+License, included below. This software may be subject to other third party
+and contributor rights, including patent rights, and no such rights are
+granted under this license.
+
+Copyright (c) 2010-2022, ITU/ISO/IEC
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+    Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    Neither the name of the ITU/ISO/IEC nor the names of its contributors may
+    be used to endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+import argparse
+import errno
+import numpy
+import onnx
+import os
+import re
+import scipy
+import shutil
+import subprocess
+import sys
+import tensorflow as tf
+import tensorflow_model_optimization
+import tf2onnx
+import time
+
+from tensorflow_model_optimization.python.core.sparsity.keras.pruning_wrapper import PruneLowMagnitude
+
+def create_apply_w_to_dense(nb_iters_training,frequency):
+    end_step = nb_iters_training - 600000
+    def apply_w_to_dense(layer):
+        if isinstance(layer, tf.keras.layers.Dense):
+            if layer.trainable:
+                
+                # There is no sparsity constraint on the weights of the fully-connected layer
+                # returning the unscaled log-probability for each LFNST group index.
+                if layer.name == 'dense_tmf':
+                    raise ValueError('Error.')
+                
+                # In the fully-connected layer returning the prediction of the current block
+                # and the fully-connected layer returning the unscaled log-probability for
+                # each of the 67 VVC intra prediction modes, the ratio of non-zero weights
+                # is 50% at the end of the training.
+                if layer.name in ('dense_p', 'dense_mmf'):
+                    fs_done = 0.5
+                else:
+                    fs_done = 0.95
+                return tensorflow_model_optimization.sparsity.keras.prune_low_magnitude(layer,pruning_schedule=tensorflow_model_optimization.sparsity.keras.PolynomialDecay(0.,fs_done,0,end_step,power=4,frequency=frequency))
+        return layer
+    return apply_w_to_dense
+
+def getting_specialized(value_in):
+    list_in = value_in.split(',')
+    if not list_in[0] and not list_in[1]:
+        return ()
+    try:
+        tuple_in = tuple(map(int, list_in))
+    except ValueError:
+        raise argparse.ArgumentTypeError('{} does not contain two integers separated by a comma.'.format(value_in))
+    if tuple_in[0] <= 0 or tuple_in[1] <= 0:
+        raise argparse.ArgumentTypeError('{} does not contain two strictly positive integers separated by a comma.'.format(value_in))
+    else:
+        return tuple_in
+
+def get_individual_saved(value_in):
+    if value_in > 8:
+        return value_in//2
+    else:
+        return value_in
+
+def get_extensions_saved(value_in):
+    if value_in <= 8:
+        return (value_in << 1)+4
+    else:
+        return value_in << 1
+
+def collecting_inout(psingle,list_grouping,params_inline):
+    for str_given_in in os.listdir(psingle):
+        item = os.path.join(psingle,str_given_in)
+        if os.path.isdir(item):
+            collecting_inout(item,list_grouping,params_inline)
+        else:
+            if item.endswith(params_inline):
+                list_grouping.append(item)
+
+def save_probs_training(path_in,path_storage):
+    list_grouping = []
+    collecting_inout(path_in,list_grouping,'ccs_tm_saved.npy')
+    ccs_saved = numpy.zeros((2,7),dtype=numpy.int64)
+    for item in list_grouping:
+        ccs_saved += numpy.load(item)
+    ccs_saved[numpy.equal(ccs_saved, 0)] = 1
+    numpy.save(path_storage,ccs_saved.astype(numpy.float64)/numpy.tile(numpy.expand_dims(numpy.sum(ccs_saved, axis=1),axis=1),(1, 7)))
+
+def parse_example_df(serialized_e,are_csts_mapgsym):
+    features = {'data_written_0': tf.io.FixedLenFeature([],tf.string),'data_written_1': tf.io.FixedLenFeature([],tf.string),'data_written_2': tf.io.FixedLenFeature([],tf.string),'data_written_3': tf.io.FixedLenFeature([],tf.string),'data_written_4': tf.io.FixedLenFeature([],tf.string),'data_written_5': tf.io.FixedLenFeature([],tf.string),'data_written_7': tf.io.FixedLenFeature([],tf.string),'data_written_8': tf.io.FixedLenFeature([],tf.string)}
+    if are_csts_mapgsym:
+        features['data_written_6'] = tf.io.FixedLenFeature([],tf.string)
+    dict_features = tf.io.parse_single_example(serialized_e,features)
+    dict_extra = {'ind_best':tf.io.decode_raw(dict_features['data_written_7'],tf.uint8),'dis_best':tf.io.decode_raw(dict_features['data_written_8'],tf.int64)}
+    if are_csts_mapgsym:
+        dict_extra['csts_mapg'] = tf.io.decode_raw(dict_features['data_written_6'],tf.float32)
+    return (tf.io.decode_raw(dict_features['data_written_0'],tf.int16),tf.io.decode_raw(dict_features['data_written_1'],tf.int16),tf.io.decode_raw(dict_features['data_written_2'],tf.uint16),tf.squeeze(tf.io.decode_raw(dict_features['data_written_3'],tf.int16)),tf.io.decode_raw(dict_features['data_written_4'],tf.uint16),tf.io.decode_raw(dict_features['data_written_5'],tf.uint16),dict_extra)
+
+def create_map_range_statically(batch_size,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,model):
+    @tf.function(input_signature=(tf.TensorSpec([batch_size, nb_lines_above*(nb_lines_left + size_ctx_width)],dtype=tf.int16),tf.TensorSpec([batch_size, size_ctx_height*nb_lines_left],dtype=tf.int16),tf.TensorSpec([],dtype=tf.bool)))
+    def map_range_statically(pa_flattened,pl_flattened,is_t_bool):
+        return model((tf.concat((tf.reshape(tf.transpose(tf.reshape(tf.cast(pa_flattened, tf.float32)/4.,(pa_flattened.shape[0],nb_lines_above,nb_lines_left+size_ctx_width,1)),perm=[0,2,1,3]),(pa_flattened.shape[0], nb_lines_above*(nb_lines_left+size_ctx_width))),tf.cast(pl_flattened, tf.float32)/4.),1),),training=is_t_bool)
+    return map_range_statically
+
+def glob_at_last(tensor_in,tensor_out):
+    return tf.reshape(tf.gather_nd(tf.reshape(tensor_in,(-1,tensor_in.shape[-1])), tf.concat((tf.expand_dims(tf.range(0,numpy.prod(tensor_out.shape).item(),dtype=tensor_out.dtype),1),tf.reshape(tensor_out,(numpy.prod(tensor_out.shape).item(),1))),1)),tensor_out.shape)
+
+def create_compute_component_tm_statically(batch_size,updown_single):
+    @tf.function(input_signature=(tf.TensorSpec([batch_size,2,7], dtype=tf.float32),tf.TensorSpec([batch_size,14],dtype=tf.float32)))
+    def compute_component_tm_statically(ulogs,trgts_prov):
+        intermediate_0=tf.reshape(trgts_prov,ulogs.shape)
+        intermediate_1=tf.argmin(intermediate_0,axis=2)
+        return tf.reduce_sum(tf.reduce_mean(glob_at_last(tf.tile(tf.expand_dims(updown_single,0),(ulogs.shape[0],1,1)),intermediate_1)*(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=intermediate_1,logits=ulogs) + tf.reduce_sum(tf.nn.softmax(ulogs)*(intermediate_0/tf.tile(tf.reduce_min(intermediate_0,axis=2,keepdims=True),(1,1,intermediate_0.shape[2])) - 1.),axis=2)),axis=0))
+    return compute_component_tm_statically
+
+def create_compute_components_mm_statically(batch_size,height_target,width_target,model):
+    @tf.function(input_signature=(tf.TensorSpec([batch_size, height_target, width_target,1],dtype=tf.float32),tf.TensorSpec([batch_size,height_target*width_target],dtype=tf.uint16),tf.TensorSpec([batch_size],dtype=tf.int16),tf.TensorSpec([batch_size,67],dtype=tf.float32),tf.TensorSpec([batch_size],dtype=tf.int32),tf.TensorSpec([67],dtype=tf.float32)))
+    def compute_components_mm_statically(pds,trgts_prov,ms_p,ulogs,trgts_alv,wghts_alv):
+        intermediate = tf.squeeze((4.*pds+tf.reshape(tf.cast(ms_p,tf.float32), tuple([ms_p.shape[0]]+(len(pds.shape)-1)*[1])))-tf.cast(tf.reshape(trgts_prov,pds.shape),tf.float32),axis=3)
+        if intermediate.dtype == tf.float64:
+            dtype_numpy = numpy.float64
+        elif intermediate.dtype == tf.float32:
+            dtype_numpy = numpy.float32
+        elif intermediate.dtype == tf.int64:
+            dtype_numpy = numpy.int64
+        elif intermediate.dtype == tf.int32:
+            dtype_numpy = numpy.int32
+        cumul = tf.zeros((), dtype=tf.float32)
+        for layer in model.layers:
+            if layer.trainable_weights:
+                cumul += tf.reduce_sum(tf.abs(layer.trainable_weights[0]))
+        return (tf.reduce_mean(tf.reduce_sum(tf.abs(tf.matmul(tf.matmul(tf.constant(numpy.tile(numpy.reshape(scipy.linalg.hadamard(intermediate.shape[-2],dtype=dtype_numpy),tuple([1]*(len(intermediate.shape) - 2) + [intermediate.shape[-2], intermediate.shape[-2]])),tuple(intermediate.shape[0:-2] + [1, 1]))),intermediate),tf.constant(numpy.tile(numpy.reshape(scipy.linalg.hadamard(intermediate.shape[-1],dtype=dtype_numpy),tuple([1]*(len(intermediate.shape) - 2) + [intermediate.shape[-1],intermediate.shape[-1]])),tuple(intermediate.shape[0:-2]+[1, 1]))))),axis=(len(intermediate.shape) - 2,len(intermediate.shape) - 1))),5.e-4*tf.reduce_mean(glob_at_last(tf.tile(tf.expand_dims(wghts_alv,0),(pds.shape[0],1)),trgts_alv)*tf.nn.sparse_softmax_cross_entropy_with_logits(labels=trgts_alv,logits=ulogs)),5.e-5*cumul)
+    return compute_components_mm_statically
+
+def create_compute_grads_tm_statically(batch_size,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,model,map_range_statically,compute_component_tm_statically):
+    @tf.function(input_signature=(tf.TensorSpec([batch_size, nb_lines_above*(nb_lines_left + size_ctx_width)], dtype=tf.int16),tf.TensorSpec([batch_size, size_ctx_height*nb_lines_left], dtype=tf.int16),tf.TensorSpec([batch_size, 14], dtype=tf.float32)))
+    def compute_grads_tm_statically(pa_flattened,pl_flattened,trgts_prov):
+        with tf.GradientTape() as tape:
+            comp_isolated = compute_component_tm_statically(map_range_statically(pa_flattened,pl_flattened,tf.constant(True))[2],trgts_prov)
+        return tape.gradient(comp_isolated,model.trainable_weights)
+    return compute_grads_tm_statically
+
+def create_compute_grads_mm_statically(batch_size,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,height_target,width_target,model,map_range_statically,compute_components_mm_statically):
+    @tf.function(input_signature=(tf.TensorSpec([batch_size, nb_lines_above*(nb_lines_left + size_ctx_width)], dtype=tf.int16),tf.TensorSpec([batch_size, size_ctx_height*nb_lines_left], dtype=tf.int16),tf.TensorSpec([batch_size, height_target*width_target], dtype=tf.uint16),tf.TensorSpec([batch_size], dtype=tf.int16),tf.TensorSpec([batch_size], dtype=tf.int32),tf.TensorSpec([67], dtype=tf.float32)))
+    def compute_grads_mm_statically(pa_flattened,pl_flattened,trgts_prov,ms_p,trgts_alv,wghts_alv):
+        with tf.GradientTape() as tape:
+            (pds,ulogs,_)=map_range_statically(pa_flattened,pl_flattened,tf.constant(True))
+            comp_isolated=tf.reduce_sum(tf.stack(compute_components_mm_statically(pds,trgts_prov,ms_p,ulogs,trgts_alv,wghts_alv)))
+        return tape.gradient(comp_isolated,model.trainable_weights)
+    return compute_grads_mm_statically
+
+def update_mem_in(mem_in,reference_in,i_init):
+    mem_in[i_init, :] = 0
+    for j_init in reference_in:
+        mem_in[i_init, j_init] += 1
+
+def compute_derived_once(mem_in):
+    intermediate_0 = numpy.sum(mem_in, axis=0).astype(numpy.float32)
+    intermediate_1 = intermediate_0/numpy.sum(intermediate_0)
+    intermediate_1[intermediate_1 < 1.e-3] = 1.e-3
+    return 1./intermediate_1
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Trains a neural network for intra prediction.')
+    parser.add_argument('path_to_directory_sets_training',help='path to the directory containing the different training sets')
+    parser.add_argument('tuple_height_width_target',help='height of the target patch and its width',type=getting_specialized)
+    parser.add_argument('tag_training_set',help='tag characterizing the current training set')
+    parser.add_argument('tag_sparsity',help='tag characterizing the sparsity constraints on the weights')
+    parser.add_argument('nb_files_expected_training',help='expected number of files \".tfrecord\" collected from the directory at `args.path_to_directory_sets_training`',type=int)
+    parser.add_argument('--is_training_resumed_from_last_checkpoint',help='is the training resumed from the last checkpoint?',action='store_true',default=False)
+    parser.add_argument('--nb_iters_snapshot',help='number of training iterations between two successive snapshots of the parameters of the neural network',type=int,default=400000,metavar='')
+    parser.add_argument('--is_last_cycle',help='is it the last training cycle? If true, the final graph is stored in the directory at \"../../models_intra_prediction\" for the final rate-distortion tests',action='store_true',default=False)
+    args = parser.parse_args()
+    is_tm_used = args.tag_training_set.endswith('_ttm')
+    if args.tag_sparsity == 'sparsity_0':
+        is_sparsity_applied = False
+    elif args.tag_sparsity == 'sparsity_1':
+        is_sparsity_applied = not is_tm_used
+    else:
+        raise ValueError('`args.tag_sparsity` is equal to neither \'sparsity_0\' nor \'sparsity_1\'.')
+    tag_shape_target = 'target_{0}_{1}'.format(args.tuple_height_width_target[0], args.tuple_height_width_target[1])
+    path_to_directory_top_tfrecords_training = os.path.join(args.path_to_directory_sets_training,tag_shape_target,args.tag_training_set)
+    path_to_directory_saving = os.path.join('results/training_pnn/',tag_shape_target,args.tag_training_set,args.tag_sparsity)
+    sre_match = re.search('(?<={0})\s*[0-9]+\s*(?={1})'.format('partitioning_', '_reconstruction'),args.tag_training_set)
+    if sre_match is None:
+        raise RuntimeError('Error.')
+    index_cycle = int(sre_match.group(0))
+    if sys.version_info[0] < 3:
+        try:
+            os.makedirs(path_to_directory_saving)
+        except OSError as err:
+            if err.errno != errno.EEXIST:
+                raise
+    else:
+        os.makedirs(path_to_directory_saving,exist_ok=True)
+    if args.is_training_resumed_from_last_checkpoint:
+        path_to_directory_loading = path_to_directory_saving
+        if is_tm_used:
+            path_to_pb_repres = os.path.join(path_to_directory_top_tfrecords_training,'pb_repres.npy')
+            if not os.path.isfile(path_to_pb_repres):
+                save_probs_training(path_to_directory_top_tfrecords_training,path_to_pb_repres)
+    else:
+        if is_sparsity_applied:
+            path_to_directory_loading = os.path.join('results/training_pnn/',tag_shape_target,args.tag_training_set,'sparsity_0')
+        else:
+            if index_cycle:
+                if is_tm_used:
+                    path_to_pb_repres = os.path.join(path_to_directory_top_tfrecords_training,'pb_repres.npy')
+                    if not os.path.isfile(path_to_pb_repres):
+                        save_probs_training(path_to_directory_top_tfrecords_training,path_to_pb_repres)
+                    string_0 = '_ttm'
+                else:
+                    string_0 = ''
+                sre_match = re.search('(?<={0})[a-zA-Z0-9_]+(?={1})'.format('partitioning_{}_'.format(index_cycle), string_0), args.tag_training_set)
+                del string_0
+                if sre_match is None:
+                    raise RuntimeError('Error.')
+                path_to_directory_loading = os.path.join('results/training_pnn/',tag_shape_target,'partitioning_{0}_{1}'.format(index_cycle - 1, sre_match.group(0)),args.tag_sparsity)
+            else:
+                path_to_directory_loading = ''
+    if (args.tuple_height_width_target[0] <= 8 or args.tuple_height_width_target[1] <= 8) and args.tuple_height_width_target[0]*args.tuple_height_width_target[1] < 256:
+        nb_lines_above = min(args.tuple_height_width_target[0],args.tuple_height_width_target[1])
+        nb_lines_left = nb_lines_above
+    else:
+        nb_lines_above = get_individual_saved(args.tuple_height_width_target[0])
+        nb_lines_left = get_individual_saved(args.tuple_height_width_target[1])
+    size_ctx_height = get_extensions_saved(args.tuple_height_width_target[0])
+    size_ctx_width = get_extensions_saved(args.tuple_height_width_target[1])
+    if args.tuple_height_width_target[0] <= 8 or args.tuple_height_width_target[1] <= 8:
+        nb_layers_tfc = 2
+    else:
+        nb_layers_tfc = 3
+    node_ip = tf.keras.Input(shape=(nb_lines_above*(nb_lines_left + size_ctx_width) + nb_lines_left*size_ctx_height,),name='node_flattened_contexts',dtype=tf.float32)
+    node_rp = node_ip
+    for i in range(nb_layers_tfc):
+        if i == 0:
+            stddev = 0.01
+        else:
+            stddev = 1./numpy.sqrt(node_rp.shape[1]).item()
+        node_rp = tf.keras.layers.Dense(1216,activation=tf.keras.layers.LeakyReLU(alpha=0.1,name='leaky_relu'),kernel_initializer=tf.keras.initializers.RandomNormal(stddev=stddev),name='dense_{}'.format(i))(node_rp)
+        del stddev
+    del nb_layers_tfc
+    
+    # Names of the three layers of the fully-connected neural network returning the three outputs:
+    #     'dense_p': fully-connected layer returning the prediction of the current block
+    #     'dense_mmf': fully-connected layer returning the unscaled log-probability for each of the 67 VVC intra prediction modes
+    #     'dense_tmf': fully-connected layer returning the unscaled log-probability for each LFNST group index.
+    model = tf.keras.Model(inputs=node_ip,outputs=(tf.keras.layers.Reshape((args.tuple_height_width_target[0],args.tuple_height_width_target[1],1),name='reshape_p')(tf.keras.layers.Dense(args.tuple_height_width_target[0]*args.tuple_height_width_target[1],activation=None,kernel_initializer=tf.keras.initializers.RandomNormal(stddev=0.01),name='dense_p')(node_rp)),tf.keras.layers.Dense(67,activation=None,kernel_initializer=tf.keras.initializers.RandomNormal(stddev=2.e-3),name='dense_mmf')(node_rp),tf.keras.layers.Reshape((2, 7),name='reshape_tmf')(tf.keras.layers.Dense(14,activation=None,kernel_initializer=tf.keras.initializers.RandomNormal(stddev=3.e-3),name='dense_tmf')(node_rp))),name='prediction_neural_network')
+    if is_tm_used:
+        for layer in model.layers:
+            if layer.name != 'dense_tmf':
+                layer.trainable = False
+    else:
+        model.get_layer(name='dense_tmf').trainable = False
+    if is_tm_used:
+        nb_iters_training = 800000
+        optimizer = tf.optimizers.Adam(learning_rate=tf.optimizers.schedules.PiecewiseConstantDecay([nb_iters_training - 400000,nb_iters_training - 200000,nb_iters_training - 100000], [2.e-4, 2.e-5, 2.e-6, 2.e-7]))
+    else:
+        if is_sparsity_applied:
+            nb_iters_training = 6400000
+            optimizer = tf.optimizers.Adam(learning_rate=tf.optimizers.schedules.PiecewiseConstantDecay([nb_iters_training - 1800000,nb_iters_training - 400000,nb_iters_training - 200000,nb_iters_training - 100000], [1.e-4, 5.e-5, 5.e-6, 5.e-7, 5.e-8]))
+        else:
+            if index_cycle == 0:
+                nb_iters_training = 3200000
+                optimizer = tf.optimizers.Adam(learning_rate=tf.optimizers.schedules.PiecewiseConstantDecay([nb_iters_training - 1800000,nb_iters_training - 400000,nb_iters_training - 200000,nb_iters_training - 100000], [1.e-4, 5.e-5, 5.e-6, 5.e-7, 5.e-8]))
+            else:
+                nb_iters_training = 800000
+                optimizer = tf.optimizers.Adam(learning_rate=tf.optimizers.schedules.PiecewiseConstantDecay([nb_iters_training - 500000,nb_iters_training - 200000,nb_iters_training - 100000,nb_iters_training - 50000], [1.e-4, 5.e-5, 5.e-6, 5.e-7, 5.e-8]))
+    node_mem_ccs = tf.Variable(tf.zeros((200, 67), dtype=tf.uint64),trainable=False)
+    if is_sparsity_applied and args.is_training_resumed_from_last_checkpoint:
+        model = tf.keras.models.clone_model(model,clone_function=create_apply_w_to_dense(nb_iters_training,250))
+    checkpoint = tf.train.Checkpoint(model=model,step=optimizer.iterations,mem_ccs_saved=node_mem_ccs)
+    if path_to_directory_loading:
+        path_to_latest_checkpoint = tf.train.latest_checkpoint(path_to_directory_loading)
+        checkpoint.restore(path_to_latest_checkpoint).assert_consumed()
+        print('Initializing the model from the file at {}.'.format(path_to_latest_checkpoint))
+    else:
+        print('Initializing the model randomly.')
+    if not args.is_training_resumed_from_last_checkpoint:
+        if optimizer.iterations.numpy().item() == 0:
+            print('Iteration of the optimizer already at 0.')
+        else:
+            optimizer.iterations.assign(0)
+            print('Iteration of the optimizer reset to 0.')
+    if is_sparsity_applied and not args.is_training_resumed_from_last_checkpoint:
+        model = tf.keras.models.clone_model(model,clone_function=create_apply_w_to_dense(nb_iters_training,250))
+        checkpoint.model = model
+    list_grouping = []
+    collecting_inout(path_to_directory_top_tfrecords_training,list_grouping,'.tfrecord')
+    if len(list_grouping) != args.nb_files_expected_training:
+        raise OSError('{0} files have been collected whereas {1} files are expected.'.format(len(list_grouping), args.nb_files_expected_training))
+    td_all=tf.data.Dataset.from_tensor_slices(list_grouping).shuffle(len(list_grouping),reshuffle_each_iteration=True).interleave(tf.data.TFRecordDataset,cycle_length=16,num_parallel_calls=tf.data.AUTOTUNE,deterministic=False).map(lambda serialized_e : parse_example_df(serialized_e,is_tm_used),num_parallel_calls=tf.data.AUTOTUNE,deterministic=False).shuffle(64*2048,reshuffle_each_iteration=True).repeat().batch(2048).prefetch(tf.data.AUTOTUNE)
+    del list_grouping
+    i_td_all = iter(td_all)
+    nb_iters_init = optimizer.iterations.numpy().item()
+    if nb_iters_init > nb_iters_training:
+        raise ValueError('`nb_iters_init` is not smaller than `nb_iters_training`.')
+    nb_iters_remaining = nb_iters_training - nb_iters_init
+    if not is_tm_used:
+        mem_ccs = node_mem_ccs.numpy()
+    map_range_statically = create_map_range_statically(2048,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,model)
+    if is_tm_used:
+        compute_component_tm_statically = create_compute_component_tm_statically(2048,tf.constant(1./numpy.load(path_to_pb_repres),dtype=tf.float32))
+        compute_grads_tm_statically = create_compute_grads_tm_statically(2048,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,model,map_range_statically,compute_component_tm_statically)
+    else:
+        compute_components_mm_statically = create_compute_components_mm_statically(2048,args.tuple_height_width_target[0],args.tuple_height_width_target[1],model)
+        compute_grads_mm_statically = create_compute_grads_mm_statically(2048,nb_lines_above,nb_lines_left,size_ctx_height,size_ctx_width,args.tuple_height_width_target[0],args.tuple_height_width_target[1],model,map_range_statically,compute_components_mm_statically)
+    if is_sparsity_applied:
+        callback_ws = tensorflow_model_optimization.sparsity.keras.UpdatePruningStep()
+        callback_ws.set_model(model)
+        callback_ws.on_train_begin()
+    t_start = time.time()
+    for i in range(nb_iters_remaining):
+        (node_pa_flattened,node_pl_flattened,node_trgts_prov,node_ms_p,_,_,dict_nodes_extra) = next(i_td_all)
+        if is_tm_used:
+            optimizer.apply_gradients(zip(compute_grads_tm_statically(node_pa_flattened,node_pl_flattened,dict_nodes_extra['csts_mapg']), model.trainable_weights))
+        else:
+            trgts_alv = dict_nodes_extra['ind_best'][:, 0].numpy().astype(numpy.int32)
+            update_mem_in(mem_ccs,trgts_alv,i % 200)
+            if i == 0 or i % 200 == 0:
+                wghts_alv = compute_derived_once(mem_ccs)
+            optimizer.apply_gradients(zip(compute_grads_mm_statically(node_pa_flattened,node_pl_flattened,node_trgts_prov,node_ms_p,tf.constant(trgts_alv),tf.constant(wghts_alv)),model.trainable_weights))
+        if optimizer.iterations.numpy().item() % args.nb_iters_snapshot == 0 or optimizer.iterations.numpy().item() == nb_iters_training:
+            if not is_tm_used:
+                node_mem_ccs.assign(mem_ccs)
+            checkpoint.save(os.path.join(path_to_directory_saving, 'parameters'))
+            print('Learning rate at {0} training steps: {1}'.format(optimizer.iterations.numpy().item(), round(optimizer.lr(optimizer.iterations).numpy().item(), 8)))
+        if optimizer.iterations.numpy().item() % 1000 == 0:
+            if optimizer.iterations.numpy().item() != i + nb_iters_init + 1:
+                raise AssertionError('The optimizer iteration is not equal to `i` + `nb_iters_init` + 1.')
+            if is_sparsity_applied:
+                for layer in model.layers:
+                    if isinstance(layer, PruneLowMagnitude):
+                        tf.debugging.assert_equal(layer.pruning_step,optimizer.iterations,message='Error.')
+    if is_sparsity_applied:
+        callback_ws.on_epoch_end(-1)
+        model = tensorflow_model_optimization.sparsity.keras.strip_pruning(model)
+        checkpoint.model = model
+        checkpoint.save(os.path.join(path_to_directory_saving, 'parameters'))
+    t_stop = time.time()
+    nb_hours = int((t_stop - t_start)/3600)
+    nb_minutes = int((t_stop - t_start)/60)
+    print('\nThe training completed after {0} hours and {1} minutes.'.format(nb_hours, nb_minutes - 60*nb_hours))
+    path_to_directory_frozen = os.path.join('results/freezing_graph_pnn/',tag_shape_target,args.tag_training_set,args.tag_sparsity,'float')
+    if sys.version_info[0] < 3:
+        try:
+            os.makedirs(path_to_directory_frozen)
+        except OSError as err:
+            if err.errno != errno.EEXIST:
+                raise
+    else:
+        os.makedirs(path_to_directory_frozen,exist_ok=True)
+    path_to_frozen_graph_onnx = os.path.join(path_to_directory_frozen,'graph_output.onnx')
+    path_to_frozen_graph_sadl = os.path.join(path_to_directory_frozen,'graph_output.pb')
+    onnx.save(tf2onnx.convert.from_keras(model, input_signature=(tf.TensorSpec([1, nb_lines_above*(nb_lines_left + size_ctx_width) + nb_lines_left*size_ctx_height], dtype=tf.float32),), opset=13)[0],path_to_frozen_graph_onnx)
+    subprocess.check_call([sys.executable, '../../sadl/converter/main.py', '--input_onnx={}'.format(path_to_frozen_graph_onnx), '--output={}'.format(path_to_frozen_graph_sadl)],shell=False)
+    if args.is_last_cycle:
+        path_to_directory_test = '../../models_intra_prediction/target_{0}_{1}/float'.format(args.tuple_height_width_target[0],args.tuple_height_width_target[1])
+        if not os.path.isdir(path_to_directory_test):
+            os.makedirs(path_to_directory_test)
+        shutil.copy(path_to_frozen_graph_sadl,os.path.join(path_to_directory_test,'graph_output.pb'))
+    print('The writing of the neural network graph in SADL format succeeded.')
+
+
diff --git a/training/training_intra_prediction/training_workflow.pdf b/training/training_intra_prediction/training_workflow.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ee251c25efa64d7e25693e3d2351ba94246cc7ef
Binary files /dev/null and b/training/training_intra_prediction/training_workflow.pdf differ