From ca4b9a80c767b5a1d6a34566f94e53e8ca34584a Mon Sep 17 00:00:00 2001
From: Thierry Dumas <thierry.dumas@interdigital.com>
Date: Thu, 2 Feb 2023 15:24:53 +0000
Subject: [PATCH] JVET-AC0116 : neural network-based intra prediction with
 learned mapping to VVC intra prediction modes.

---
 .gitignore                                    |   1 +
 CMakeLists.txt                                |   2 +-
 README.md                                     |  44 +
 source/App/DecoderApp/DecApp.cpp              |  48 +-
 source/App/DecoderApp/DecApp.h                |   5 +-
 source/App/DecoderApp/DecAppCfg.cpp           |  29 +
 source/App/DecoderApp/DecAppCfg.h             |  12 +
 source/App/EncoderApp/EncApp.cpp              |  41 +-
 source/App/EncoderApp/EncApp.h                |   3 +
 source/App/EncoderApp/EncAppCfg.cpp           |  36 +-
 source/App/EncoderApp/EncAppCfg.h             |  15 +-
 source/Lib/CommonLib/CMakeLists.txt           |   9 +
 source/Lib/CommonLib/CommonDef.h              |  16 +-
 source/Lib/CommonLib/ContextModelling.cpp     |  27 +
 source/Lib/CommonLib/ContextModelling.h       |   3 +
 source/Lib/CommonLib/Contexts.cpp             |  23 +
 source/Lib/CommonLib/Contexts.h               |   8 +
 source/Lib/CommonLib/IntraPrediction.cpp      | 493 ++++++++-
 source/Lib/CommonLib/IntraPrediction.h        |  81 +-
 source/Lib/CommonLib/TrQuant.cpp              | 331 +++++-
 source/Lib/CommonLib/TrQuant.h                |  33 +-
 source/Lib/CommonLib/TypeDef.h                |  30 +-
 source/Lib/CommonLib/Unit.cpp                 | 151 +++
 source/Lib/CommonLib/Unit.h                   |  35 +
 source/Lib/CommonLib/UnitTools.cpp            | 276 ++++-
 source/Lib/CommonLib/UnitTools.h              |  25 +-
 .../intra_pred_downsampling_interpolation.cpp | 100 ++
 .../intra_pred_downsampling_interpolation.h   | 188 ++++
 .../intra_pred_extraction_context.cpp         | 190 ++++
 .../CommonLib/intra_pred_extraction_context.h | 445 +++++++++
 source/Lib/CommonLib/intra_pred_sadl.cpp      | 153 +++
 source/Lib/CommonLib/intra_pred_sadl.h        |  58 ++
 source/Lib/CommonLib/intra_pred_utils.cpp     | 139 +++
 source/Lib/CommonLib/intra_pred_utils.h       |  84 ++
 source/Lib/DecoderLib/CABACReader.cpp         | 298 ++++--
 source/Lib/DecoderLib/CABACReader.h           |  13 +-
 source/Lib/DecoderLib/DecCu.cpp               | 275 ++++-
 source/Lib/DecoderLib/DecCu.h                 |  29 +-
 source/Lib/DecoderLib/DecLib.cpp              |  44 +-
 source/Lib/DecoderLib/DecLib.h                |  22 +-
 source/Lib/EncoderLib/CABACWriter.cpp         | 146 ++-
 source/Lib/EncoderLib/CABACWriter.h           |  12 +-
 source/Lib/EncoderLib/EncCfg.h                |  45 +-
 source/Lib/EncoderLib/EncCu.cpp               | 222 ++++-
 source/Lib/EncoderLib/EncGOP.cpp              |  36 +-
 source/Lib/EncoderLib/EncGOP.h                |   8 +-
 source/Lib/EncoderLib/EncLib.cpp              |   4 +
 source/Lib/EncoderLib/EncSlice.cpp            | 222 ++++-
 source/Lib/EncoderLib/EncTemporalFilter.cpp   |  22 +-
 source/Lib/EncoderLib/EncTemporalFilter.h     |  11 +-
 source/Lib/EncoderLib/InterSearch.cpp         |  36 +-
 source/Lib/EncoderLib/IntraSearch.cpp         | 943 ++++++++++++++++--
 source/Lib/EncoderLib/IntraSearch.h           |  76 +-
 source/Lib/Utilities/VideoIOYuv.cpp           |  49 +-
 source/Lib/Utilities/VideoIOYuv.h             |   7 +-
 .../training_intra_prediction/CMakeLists.txt  | 205 ++++
 training/training_intra_prediction/README.md  | 236 +++++
 .../AAdvertisingMassagesBangkokVidevo.cfg     |  10 +
 .../bvidvc/AAmericanFootballS2Harmonics.cfg   |  10 +
 .../bvidvc/AAmericanFootballS3Harmonics.cfg   |  10 +
 .../bvidvc/AAmericanFootballS4Harmonics.cfg   |  10 +
 .../bvidvc/AAnimalsS11Harmonics.cfg           |  10 +
 .../bvidvc/AAnimalsS1Harmonics.cfg            |  10 +
 .../bvidvc/ABangkokMarketVidevo.cfg           |  10 +
 .../bvidvc/ABasketballGoalScoredS1Videvo.cfg  |  10 +
 .../bvidvc/ABasketballGoalScoredS2Videvo.cfg  |  10 +
 .../bvidvc/ABasketballS1YonseiUniversity.cfg  |  10 +
 .../bvidvc/ABasketballS2YonseiUniversity.cfg  |  10 +
 .../bvidvc/ABasketballS3YonseiUniversity.cfg  |  10 +
 .../bvidvc/ABoatsChaoPhrayaRiverVidevo.cfg    |  10 +
 .../bvidvc/ABobbleheadBVIHFR.cfg              |  10 +
 .../bvidvc/ABookcaseBVITexture.cfg            |  10 +
 .../bvidvc/ABoxingPracticeHarmonics.cfg       |  10 +
 .../bvidvc/ABricksBushesStaticBVITexture.cfg  |  10 +
 .../bvidvc/ABricksLeavesBVITexture.cfg        |  10 +
 .../bvidvc/ABricksTiltingBVITexture.cfg       |  10 +
 .../bvidvc/ABubblesPitcherS1BVITexture.cfg    |  10 +
 .../bvidvc/ABuildingRoofS1IRIS.cfg            |  10 +
 .../bvidvc/ABuildingRoofS2IRIS.cfg            |  10 +
 .../bvidvc/ABuildingRoofS3IRIS.cfg            |  10 +
 .../bvidvc/ABuildingRoofS4IRIS.cfg            |  10 +
 .../ABuntingHangingAcrossHongKongVidevo.cfg   |  10 +
 .../bvidvc/ABusyHongKongStreetVidevo.cfg      |  10 +
 .../bvidvc/ACalmingWaterBVITexture.cfg        |  10 +
 .../bvidvc/ACarpetPanAverageBVITexture.cfg    |  10 +
 .../cfgs_training/bvidvc/ACatchBVIHFR.cfg     |  10 +
 .../ACeramicsandSpicesMoroccoVidevo.cfg       |  10 +
 .../bvidvc/ACharactersYonseiUniversity.cfg    |  10 +
 .../bvidvc/AChristmasPresentsIRIS.cfg         |  10 +
 .../bvidvc/AChristmasRoomDareful.cfg          |  10 +
 .../bvidvc/AChurchInsideMCLJCV.cfg            |  10 +
 .../bvidvc/ACityScapesS1IRIS.cfg              |  10 +
 .../bvidvc/ACityScapesS2IRIS.cfg              |  10 +
 .../bvidvc/ACityScapesS3IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS1IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS3IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS4IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS5IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS6IRIS.cfg              |  10 +
 .../bvidvc/ACityStreetS7IRIS.cfg              |  10 +
 .../bvidvc/ACloseUpBasketballSceneVidevo.cfg  |  10 +
 .../bvidvc/ACloudsStaticBVITexture.cfg        |  10 +
 .../AColourfulDecorationWatPhoVidevo.cfg      |  10 +
 .../bvidvc/AColourfulKoreanLanternsVidevo.cfg |  10 +
 .../bvidvc/AColourfulPaperLanternsVidevo.cfg  |  10 +
 .../bvidvc/AColourfulRugsMoroccoVidevo.cfg    |  10 +
 .../AConstructionS2YonseiUniversity.cfg       |  10 +
 .../bvidvc/ACostaRicaS3Harmonics.cfg          |  10 +
 .../bvidvc/ACrosswalkHarmonics.cfg            |  10 +
 .../bvidvc/ACrosswalkHongKong2S1Videvo.cfg    |  10 +
 .../bvidvc/ACrosswalkHongKong2S2Videvo.cfg    |  10 +
 .../bvidvc/ACrosswalkHongKongVidevo.cfg       |  10 +
 .../cfgs_training/bvidvc/ACrowdRunMCLV.cfg    |  10 +
 .../cfgs_training/bvidvc/ACyclistS1BVIHFR.cfg |  10 +
 .../ACyclistVeniceBeachBoardwalkVidevo.cfg    |  10 +
 .../bvidvc/ADollsScene1YonseiUniversity.cfg   |  10 +
 .../bvidvc/ADollsScene2YonseiUniversity.cfg   |  10 +
 .../bvidvc/ADowntownHongKongVidevo.cfg        |  10 +
 .../bvidvc/ADrivingPOVHarmonics.cfg           |  10 +
 .../bvidvc/ADropsOnWaterBVITexture.cfg        |  10 +
 .../bvidvc/AElFuenteMaskLIVENetFlix.cfg       |  10 +
 .../bvidvc/AEnteringHongKongStallS1Videvo.cfg |  10 +
 .../bvidvc/AEnteringHongKongStallS2Videvo.cfg |  10 +
 .../bvidvc/AFerrisWheelTurningVidevo.cfg      |  10 +
 .../cfgs_training/bvidvc/AFireS18Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/AFireS21Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/AFireS71Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/AFirewoodS1IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/AFirewoodS2IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/AFitnessIRIS.cfg     |  10 +
 .../bvidvc/AFjordsS1Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/AFlagShootTUMSVT.cfg |  10 +
 .../bvidvc/AFlowerChapelS1IRIS.cfg            |  10 +
 .../bvidvc/AFlowerChapelS2IRIS.cfg            |  10 +
 .../bvidvc/AFlyingCountrysideDareful.cfg      |  10 +
 .../bvidvc/AFlyingMountainsDareful.cfg        |  10 +
 .../bvidvc/AFlyingThroughLAStreetVidevo.cfg   |  10 +
 .../bvidvc/AFungusZoomBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/AGrassBVITexture.cfg |  10 +
 .../cfgs_training/bvidvc/AGrazTowerIRIS.cfg   |  10 +
 .../cfgs_training/bvidvc/AHamsterBVIHFR.cfg   |  10 +
 .../bvidvc/AHarleyDavidsonIRIS.cfg            |  10 +
 .../bvidvc/AHongKongIslandVidevo.cfg          |  10 +
 .../bvidvc/AHongKongMarket1Videvo.cfg         |  10 +
 .../bvidvc/AHongKongMarket2Videvo.cfg         |  10 +
 .../bvidvc/AHongKongMarket3S1Videvo.cfg       |  10 +
 .../bvidvc/AHongKongMarket3S2Videvo.cfg       |  10 +
 .../bvidvc/AHongKongMarket4S1Videvo.cfg       |  10 +
 .../bvidvc/AHongKongMarket4S2Videvo.cfg       |  10 +
 .../bvidvc/AHongKongS1Harmonics.cfg           |  10 +
 .../bvidvc/AHongKongS2Harmonics.cfg           |  10 +
 .../bvidvc/AHongKongS3Harmonics.cfg           |  10 +
 .../bvidvc/AHorseDrawnCarriagesVidevo.cfg     |  10 +
 .../bvidvc/AHorseStaringS1Videvo.cfg          |  10 +
 .../bvidvc/AHorseStaringS2Videvo.cfg          |  10 +
 .../cfgs_training/bvidvc/AJockeyHarmonics.cfg |  10 +
 .../cfgs_training/bvidvc/AJoggersS1BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/AJoggersS2BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/AKartingIRIS.cfg     |  10 +
 .../cfgs_training/bvidvc/AKoraDrumsVidevo.cfg |  10 +
 .../bvidvc/ALakeYonseiUniversity.cfg          |  10 +
 .../bvidvc/ALampLeavesBVITexture.cfg          |  10 +
 .../ALaundryHangingOverHongKongVidevo.cfg     |  10 +
 .../bvidvc/ALeaves1BVITexture.cfg             |  10 +
 .../bvidvc/ALeaves3BVITexture.cfg             |  10 +
 .../ALowLevelShotAlongHongKongVidevo.cfg      |  10 +
 .../bvidvc/ALungshanTempleS1Videvo.cfg        |  10 +
 .../bvidvc/ALungshanTempleS2Videvo.cfg        |  10 +
 .../bvidvc/AManMoTempleVidevo.cfg             |  10 +
 .../AManStandinginProduceTruckVidevo.cfg      |  10 +
 .../AManWalkingThroughBangkokVidevo.cfg       |  10 +
 .../bvidvc/AMaplesS1YonseiUniversity.cfg      |  10 +
 .../bvidvc/AMaplesS2YonseiUniversity.cfg      |  10 +
 .../bvidvc/AMirabellParkS1IRIS.cfg            |  10 +
 .../bvidvc/AMirabellParkS2IRIS.cfg            |  10 +
 .../cfgs_training/bvidvc/AMobileHarmonics.cfg |  10 +
 .../bvidvc/AMoroccanCeramicsShopVidevo.cfg    |  10 +
 .../bvidvc/AMoroccanSlippersVidevo.cfg        |  10 +
 .../bvidvc/AMuralPaintingVidevo.cfg           |  10 +
 .../bvidvc/AMyanmarS4Harmonics.cfg            |  10 +
 .../bvidvc/AMyanmarS6Harmonics.cfg            |  10 +
 .../bvidvc/AMyeongDongVidevo.cfg              |  10 +
 .../bvidvc/ANewYorkStreetDareful.cfg          |  10 +
 .../AOrangeBuntingoverHongKongVidevo.cfg      |  10 +
 .../bvidvc/APaintingTiltingBVITexture.cfg     |  10 +
 .../bvidvc/AParkViolinMCLJCV.cfg              |  10 +
 .../bvidvc/APedestriansSeoulatDawnVidevo.cfg  |  10 +
 .../bvidvc/APeopleWalkingS1IRIS.cfg           |  10 +
 .../bvidvc/APersonRunningOutsideVidevo.cfg    |  10 +
 .../bvidvc/APillowsTransBVITexture.cfg        |  10 +
 .../bvidvc/APlasmaFreeBVITexture.cfg          |  10 +
 .../bvidvc/APresentsChristmasTreeDareful.cfg  |  10 +
 .../bvidvc/AReadySetGoS2TampereUniversity.cfg |  10 +
 .../bvidvc/AResidentialBuildingSJTU.cfg       |  10 +
 .../bvidvc/ARollerCoaster2Netflix.cfg         |  10 +
 .../cfgs_training/bvidvc/ARunnersSJTU.cfg     |  10 +
 .../cfgs_training/bvidvc/ARuralSetupIRIS.cfg  |  10 +
 .../bvidvc/ARuralSetupS2IRIS.cfg              |  10 +
 .../cfgs_training/bvidvc/AScarfSJTU.cfg       |  10 +
 .../cfgs_training/bvidvc/ASeasideWalkIRIS.cfg |  10 +
 .../cfgs_training/bvidvc/ASeekingMCLV.cfg     |  10 +
 .../bvidvc/ASeoulCanalatDawnVidevo.cfg        |  10 +
 .../bvidvc/AShoppingCentreVidevo.cfg          |  10 +
 .../bvidvc/ASignboardBoatLIVENetFlix.cfg      |  10 +
 .../bvidvc/ASkyscraperBangkokVidevo.cfg       |  10 +
 .../bvidvc/ASmokeClearBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/ASmokeS45Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/ASparklerBVIHFR.cfg  |  10 +
 .../bvidvc/ASquareAndTimelapseHarmonics.cfg   |  10 +
 .../cfgs_training/bvidvc/ASquareS1IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/ASquareS2IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/AStreetArtVidevo.cfg |  10 +
 .../bvidvc/AStreetDancerS1IRIS.cfg            |  10 +
 .../bvidvc/AStreetDancerS2IRIS.cfg            |  10 +
 .../bvidvc/AStreetDancerS3IRIS.cfg            |  10 +
 .../bvidvc/AStreetDancerS4IRIS.cfg            |  10 +
 .../bvidvc/AStreetDancerS5IRIS.cfg            |  10 +
 .../bvidvc/AStreetsOfIndiaS1Harmonics.cfg     |  10 +
 .../bvidvc/AStreetsOfIndiaS2Harmonics.cfg     |  10 +
 .../bvidvc/AStreetsOfIndiaS3Harmonics.cfg     |  10 +
 .../bvidvc/ATaiChiHongKongS1Videvo.cfg        |  10 +
 .../bvidvc/ATaiChiHongKongS2Videvo.cfg        |  10 +
 .../bvidvc/ATaipeiCityRooftops8Videvo.cfg     |  10 +
 .../bvidvc/ATaipeiCityRooftopsS1Videvo.cfg    |  10 +
 .../bvidvc/ATaipeiCityRooftopsS2Videvo.cfg    |  10 +
 .../bvidvc/ATaksinBridgeVidevo.cfg            |  10 +
 .../bvidvc/ATallBuildingsSJTU.cfg             |  10 +
 .../cfgs_training/bvidvc/ATennisMCLV.cfg      |  10 +
 .../bvidvc/AToddlerFountain2Netflix.cfg       |  10 +
 .../bvidvc/ATouristsSatOutsideVidevo.cfg      |  10 +
 .../bvidvc/AToyCalendarHarmonics.cfg          |  10 +
 .../ATrackingDownHongKongSideVidevo.cfg       |  10 +
 .../bvidvc/ATrackingPastRestaurantVidevo.cfg  |  10 +
 .../ATrackingPastStallHongKongVidevo.cfg      |  10 +
 .../ATraditionalIndonesianKecakVidevo.cfg     |  10 +
 .../cfgs_training/bvidvc/ATrafficFlowSJTU.cfg |  10 +
 .../bvidvc/ATrafficandBuildingSJTU.cfg        |  10 +
 .../bvidvc/ATrafficonTasksinBridgeVidevo.cfg  |  10 +
 .../bvidvc/ATreeWillsBVITexture.cfg           |  10 +
 .../cfgs_training/bvidvc/ATruckIRIS.cfg       |  10 +
 .../bvidvc/ATunnelFlagS1Harmonics.cfg         |  10 +
 .../bvidvc/AUnloadingVegetablesVidevo.cfg     |  10 +
 .../bvidvc/AVegetableMarketS1LIVENetFlix.cfg  |  10 +
 .../bvidvc/AVegetableMarketS2LIVENetFlix.cfg  |  10 +
 .../bvidvc/AVegetableMarketS3LIVENetFlix.cfg  |  10 +
 .../bvidvc/AVegetableMarketS4LIVENetFlix.cfg  |  10 +
 .../bvidvc/AVeniceS1Harmonics.cfg             |  10 +
 .../bvidvc/AVeniceS2Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/AVeniceSceneIRIS.cfg |  10 +
 .../bvidvc/AWalkingDownKhaoStreetVidevo.cfg   |  10 +
 .../bvidvc/AWalkingDownNorthRodeoVidevo.cfg   |  10 +
 .../AWalkingThroughFootbridgeVidevo.cfg       |  10 +
 .../bvidvc/AWatPhoTempleVidevo.cfg            |  10 +
 .../cfgs_training/bvidvc/AWaterS65Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/AWaterS81Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/AWoodSJTU.cfg        |  10 +
 .../cfgs_training/bvidvc/AWovenVidevo.cfg     |  10 +
 .../BAdvertisingMassagesBangkokVidevo.cfg     |  10 +
 .../bvidvc/BAmericanFootballS2Harmonics.cfg   |  10 +
 .../bvidvc/BAmericanFootballS3Harmonics.cfg   |  10 +
 .../bvidvc/BAmericanFootballS4Harmonics.cfg   |  10 +
 .../bvidvc/BAnimalsS11Harmonics.cfg           |  10 +
 .../bvidvc/BAnimalsS1Harmonics.cfg            |  10 +
 .../bvidvc/BBangkokMarketVidevo.cfg           |  10 +
 .../bvidvc/BBasketballGoalScoredS1Videvo.cfg  |  10 +
 .../bvidvc/BBasketballGoalScoredS2Videvo.cfg  |  10 +
 .../bvidvc/BBasketballS1YonseiUniversity.cfg  |  10 +
 .../bvidvc/BBasketballS2YonseiUniversity.cfg  |  10 +
 .../bvidvc/BBasketballS3YonseiUniversity.cfg  |  10 +
 .../bvidvc/BBoatsChaoPhrayaRiverVidevo.cfg    |  10 +
 .../bvidvc/BBobbleheadBVIHFR.cfg              |  10 +
 .../bvidvc/BBookcaseBVITexture.cfg            |  10 +
 .../bvidvc/BBoxingPracticeHarmonics.cfg       |  10 +
 .../bvidvc/BBricksBushesStaticBVITexture.cfg  |  10 +
 .../bvidvc/BBricksLeavesBVITexture.cfg        |  10 +
 .../bvidvc/BBricksTiltingBVITexture.cfg       |  10 +
 .../bvidvc/BBubblesPitcherS1BVITexture.cfg    |  10 +
 .../bvidvc/BBuildingRoofS1IRIS.cfg            |  10 +
 .../bvidvc/BBuildingRoofS2IRIS.cfg            |  10 +
 .../bvidvc/BBuildingRoofS3IRIS.cfg            |  10 +
 .../bvidvc/BBuildingRoofS4IRIS.cfg            |  10 +
 .../BBuntingHangingAcrossHongKongVidevo.cfg   |  10 +
 .../bvidvc/BBusyHongKongStreetVidevo.cfg      |  10 +
 .../bvidvc/BCalmingWaterBVITexture.cfg        |  10 +
 .../bvidvc/BCarpetPanAverageBVITexture.cfg    |  10 +
 .../cfgs_training/bvidvc/BCatchBVIHFR.cfg     |  10 +
 .../BCeramicsandSpicesMoroccoVidevo.cfg       |  10 +
 .../bvidvc/BCharactersYonseiUniversity.cfg    |  10 +
 .../bvidvc/BChristmasPresentsIRIS.cfg         |  10 +
 .../bvidvc/BChristmasRoomDareful.cfg          |  10 +
 .../bvidvc/BChurchInsideMCLJCV.cfg            |  10 +
 .../bvidvc/BCityScapesS1IRIS.cfg              |  10 +
 .../bvidvc/BCityScapesS2IRIS.cfg              |  10 +
 .../bvidvc/BCityScapesS3IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS1IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS3IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS4IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS5IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS6IRIS.cfg              |  10 +
 .../bvidvc/BCityStreetS7IRIS.cfg              |  10 +
 .../bvidvc/BCloseUpBasketballSceneVidevo.cfg  |  10 +
 .../bvidvc/BCloudsStaticBVITexture.cfg        |  10 +
 .../BColourfulDecorationWatPhoVidevo.cfg      |  10 +
 .../bvidvc/BColourfulKoreanLanternsVidevo.cfg |  10 +
 .../bvidvc/BColourfulPaperLanternsVidevo.cfg  |  10 +
 .../bvidvc/BColourfulRugsMoroccoVidevo.cfg    |  10 +
 .../BConstructionS2YonseiUniversity.cfg       |  10 +
 .../bvidvc/BCostaRicaS3Harmonics.cfg          |  10 +
 .../bvidvc/BCrosswalkHarmonics.cfg            |  10 +
 .../bvidvc/BCrosswalkHongKong2S1Videvo.cfg    |  10 +
 .../bvidvc/BCrosswalkHongKong2S2Videvo.cfg    |  10 +
 .../bvidvc/BCrosswalkHongKongVidevo.cfg       |  10 +
 .../cfgs_training/bvidvc/BCrowdRunMCLV.cfg    |  10 +
 .../cfgs_training/bvidvc/BCyclistS1BVIHFR.cfg |  10 +
 .../BCyclistVeniceBeachBoardwalkVidevo.cfg    |  10 +
 .../bvidvc/BDollsScene1YonseiUniversity.cfg   |  10 +
 .../bvidvc/BDollsScene2YonseiUniversity.cfg   |  10 +
 .../bvidvc/BDowntownHongKongVidevo.cfg        |  10 +
 .../bvidvc/BDrivingPOVHarmonics.cfg           |  10 +
 .../bvidvc/BDropsOnWaterBVITexture.cfg        |  10 +
 .../bvidvc/BElFuenteMaskLIVENetFlix.cfg       |  10 +
 .../bvidvc/BEnteringHongKongStallS1Videvo.cfg |  10 +
 .../bvidvc/BEnteringHongKongStallS2Videvo.cfg |  10 +
 .../bvidvc/BFerrisWheelTurningVidevo.cfg      |  10 +
 .../cfgs_training/bvidvc/BFireS18Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/BFireS21Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/BFireS71Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/BFirewoodS1IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/BFirewoodS2IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/BFitnessIRIS.cfg     |  10 +
 .../bvidvc/BFjordsS1Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/BFlagShootTUMSVT.cfg |  10 +
 .../bvidvc/BFlowerChapelS1IRIS.cfg            |  10 +
 .../bvidvc/BFlowerChapelS2IRIS.cfg            |  10 +
 .../bvidvc/BFlyingCountrysideDareful.cfg      |  10 +
 .../bvidvc/BFlyingMountainsDareful.cfg        |  10 +
 .../bvidvc/BFlyingThroughLAStreetVidevo.cfg   |  10 +
 .../bvidvc/BFungusZoomBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/BGrassBVITexture.cfg |  10 +
 .../cfgs_training/bvidvc/BGrazTowerIRIS.cfg   |  10 +
 .../cfgs_training/bvidvc/BHamsterBVIHFR.cfg   |  10 +
 .../bvidvc/BHarleyDavidsonIRIS.cfg            |  10 +
 .../bvidvc/BHongKongIslandVidevo.cfg          |  10 +
 .../bvidvc/BHongKongMarket1Videvo.cfg         |  10 +
 .../bvidvc/BHongKongMarket2Videvo.cfg         |  10 +
 .../bvidvc/BHongKongMarket3S1Videvo.cfg       |  10 +
 .../bvidvc/BHongKongMarket3S2Videvo.cfg       |  10 +
 .../bvidvc/BHongKongMarket4S1Videvo.cfg       |  10 +
 .../bvidvc/BHongKongMarket4S2Videvo.cfg       |  10 +
 .../bvidvc/BHongKongS1Harmonics.cfg           |  10 +
 .../bvidvc/BHongKongS2Harmonics.cfg           |  10 +
 .../bvidvc/BHongKongS3Harmonics.cfg           |  10 +
 .../bvidvc/BHorseDrawnCarriagesVidevo.cfg     |  10 +
 .../bvidvc/BHorseStaringS1Videvo.cfg          |  10 +
 .../bvidvc/BHorseStaringS2Videvo.cfg          |  10 +
 .../cfgs_training/bvidvc/BJockeyHarmonics.cfg |  10 +
 .../cfgs_training/bvidvc/BJoggersS1BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/BJoggersS2BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/BKartingIRIS.cfg     |  10 +
 .../cfgs_training/bvidvc/BKoraDrumsVidevo.cfg |  10 +
 .../bvidvc/BLakeYonseiUniversity.cfg          |  10 +
 .../bvidvc/BLampLeavesBVITexture.cfg          |  10 +
 .../BLaundryHangingOverHongKongVidevo.cfg     |  10 +
 .../bvidvc/BLeaves1BVITexture.cfg             |  10 +
 .../bvidvc/BLeaves3BVITexture.cfg             |  10 +
 .../BLowLevelShotAlongHongKongVidevo.cfg      |  10 +
 .../bvidvc/BLungshanTempleS1Videvo.cfg        |  10 +
 .../bvidvc/BLungshanTempleS2Videvo.cfg        |  10 +
 .../bvidvc/BManMoTempleVidevo.cfg             |  10 +
 .../BManStandinginProduceTruckVidevo.cfg      |  10 +
 .../BManWalkingThroughBangkokVidevo.cfg       |  10 +
 .../bvidvc/BMaplesS1YonseiUniversity.cfg      |  10 +
 .../bvidvc/BMaplesS2YonseiUniversity.cfg      |  10 +
 .../bvidvc/BMirabellParkS1IRIS.cfg            |  10 +
 .../bvidvc/BMirabellParkS2IRIS.cfg            |  10 +
 .../cfgs_training/bvidvc/BMobileHarmonics.cfg |  10 +
 .../bvidvc/BMoroccanCeramicsShopVidevo.cfg    |  10 +
 .../bvidvc/BMoroccanSlippersVidevo.cfg        |  10 +
 .../bvidvc/BMuralPaintingVidevo.cfg           |  10 +
 .../bvidvc/BMyanmarS4Harmonics.cfg            |  10 +
 .../bvidvc/BMyanmarS6Harmonics.cfg            |  10 +
 .../bvidvc/BMyeongDongVidevo.cfg              |  10 +
 .../bvidvc/BNewYorkStreetDareful.cfg          |  10 +
 .../BOrangeBuntingoverHongKongVidevo.cfg      |  10 +
 .../bvidvc/BPaintingTiltingBVITexture.cfg     |  10 +
 .../bvidvc/BParkViolinMCLJCV.cfg              |  10 +
 .../bvidvc/BPedestriansSeoulatDawnVidevo.cfg  |  10 +
 .../bvidvc/BPeopleWalkingS1IRIS.cfg           |  10 +
 .../bvidvc/BPersonRunningOutsideVidevo.cfg    |  10 +
 .../bvidvc/BPillowsTransBVITexture.cfg        |  10 +
 .../bvidvc/BPlasmaFreeBVITexture.cfg          |  10 +
 .../bvidvc/BPresentsChristmasTreeDareful.cfg  |  10 +
 .../bvidvc/BReadySetGoS2TampereUniversity.cfg |  10 +
 .../bvidvc/BResidentialBuildingSJTU.cfg       |  10 +
 .../bvidvc/BRollerCoaster2Netflix.cfg         |  10 +
 .../cfgs_training/bvidvc/BRunnersSJTU.cfg     |  10 +
 .../cfgs_training/bvidvc/BRuralSetupIRIS.cfg  |  10 +
 .../bvidvc/BRuralSetupS2IRIS.cfg              |  10 +
 .../cfgs_training/bvidvc/BScarfSJTU.cfg       |  10 +
 .../cfgs_training/bvidvc/BSeasideWalkIRIS.cfg |  10 +
 .../cfgs_training/bvidvc/BSeekingMCLV.cfg     |  10 +
 .../bvidvc/BSeoulCanalatDawnVidevo.cfg        |  10 +
 .../bvidvc/BShoppingCentreVidevo.cfg          |  10 +
 .../bvidvc/BSignboardBoatLIVENetFlix.cfg      |  10 +
 .../bvidvc/BSkyscraperBangkokVidevo.cfg       |  10 +
 .../bvidvc/BSmokeClearBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/BSmokeS45Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/BSparklerBVIHFR.cfg  |  10 +
 .../bvidvc/BSquareAndTimelapseHarmonics.cfg   |  10 +
 .../cfgs_training/bvidvc/BSquareS1IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/BSquareS2IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/BStreetArtVidevo.cfg |  10 +
 .../bvidvc/BStreetDancerS1IRIS.cfg            |  10 +
 .../bvidvc/BStreetDancerS2IRIS.cfg            |  10 +
 .../bvidvc/BStreetDancerS3IRIS.cfg            |  10 +
 .../bvidvc/BStreetDancerS4IRIS.cfg            |  10 +
 .../bvidvc/BStreetDancerS5IRIS.cfg            |  10 +
 .../bvidvc/BStreetsOfIndiaS1Harmonics.cfg     |  10 +
 .../bvidvc/BStreetsOfIndiaS2Harmonics.cfg     |  10 +
 .../bvidvc/BStreetsOfIndiaS3Harmonics.cfg     |  10 +
 .../bvidvc/BTaiChiHongKongS1Videvo.cfg        |  10 +
 .../bvidvc/BTaiChiHongKongS2Videvo.cfg        |  10 +
 .../bvidvc/BTaipeiCityRooftops8Videvo.cfg     |  10 +
 .../bvidvc/BTaipeiCityRooftopsS1Videvo.cfg    |  10 +
 .../bvidvc/BTaipeiCityRooftopsS2Videvo.cfg    |  10 +
 .../bvidvc/BTaksinBridgeVidevo.cfg            |  10 +
 .../bvidvc/BTallBuildingsSJTU.cfg             |  10 +
 .../cfgs_training/bvidvc/BTennisMCLV.cfg      |  10 +
 .../bvidvc/BToddlerFountain2Netflix.cfg       |  10 +
 .../bvidvc/BTouristsSatOutsideVidevo.cfg      |  10 +
 .../bvidvc/BToyCalendarHarmonics.cfg          |  10 +
 .../BTrackingDownHongKongSideVidevo.cfg       |  10 +
 .../bvidvc/BTrackingPastRestaurantVidevo.cfg  |  10 +
 .../BTrackingPastStallHongKongVidevo.cfg      |  10 +
 .../BTraditionalIndonesianKecakVidevo.cfg     |  10 +
 .../cfgs_training/bvidvc/BTrafficFlowSJTU.cfg |  10 +
 .../bvidvc/BTrafficandBuildingSJTU.cfg        |  10 +
 .../bvidvc/BTrafficonTasksinBridgeVidevo.cfg  |  10 +
 .../bvidvc/BTreeWillsBVITexture.cfg           |  10 +
 .../cfgs_training/bvidvc/BTruckIRIS.cfg       |  10 +
 .../bvidvc/BTunnelFlagS1Harmonics.cfg         |  10 +
 .../bvidvc/BUnloadingVegetablesVidevo.cfg     |  10 +
 .../bvidvc/BVegetableMarketS1LIVENetFlix.cfg  |  10 +
 .../bvidvc/BVegetableMarketS2LIVENetFlix.cfg  |  10 +
 .../bvidvc/BVegetableMarketS3LIVENetFlix.cfg  |  10 +
 .../bvidvc/BVegetableMarketS4LIVENetFlix.cfg  |  10 +
 .../bvidvc/BVeniceS1Harmonics.cfg             |  10 +
 .../bvidvc/BVeniceS2Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/BVeniceSceneIRIS.cfg |  10 +
 .../bvidvc/BWalkingDownKhaoStreetVidevo.cfg   |  10 +
 .../bvidvc/BWalkingDownNorthRodeoVidevo.cfg   |  10 +
 .../BWalkingThroughFootbridgeVidevo.cfg       |  10 +
 .../bvidvc/BWatPhoTempleVidevo.cfg            |  10 +
 .../cfgs_training/bvidvc/BWaterS65Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/BWaterS81Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/BWoodSJTU.cfg        |  10 +
 .../cfgs_training/bvidvc/BWovenVidevo.cfg     |  10 +
 .../CAdvertisingMassagesBangkokVidevo.cfg     |  10 +
 .../bvidvc/CAmericanFootballS2Harmonics.cfg   |  10 +
 .../bvidvc/CAmericanFootballS3Harmonics.cfg   |  10 +
 .../bvidvc/CAmericanFootballS4Harmonics.cfg   |  10 +
 .../bvidvc/CAnimalsS11Harmonics.cfg           |  10 +
 .../bvidvc/CAnimalsS1Harmonics.cfg            |  10 +
 .../bvidvc/CBangkokMarketVidevo.cfg           |  10 +
 .../bvidvc/CBasketballGoalScoredS1Videvo.cfg  |  10 +
 .../bvidvc/CBasketballGoalScoredS2Videvo.cfg  |  10 +
 .../bvidvc/CBasketballS1YonseiUniversity.cfg  |  10 +
 .../bvidvc/CBasketballS2YonseiUniversity.cfg  |  10 +
 .../bvidvc/CBasketballS3YonseiUniversity.cfg  |  10 +
 .../bvidvc/CBoatsChaoPhrayaRiverVidevo.cfg    |  10 +
 .../bvidvc/CBobbleheadBVIHFR.cfg              |  10 +
 .../bvidvc/CBookcaseBVITexture.cfg            |  10 +
 .../bvidvc/CBoxingPracticeHarmonics.cfg       |  10 +
 .../bvidvc/CBricksBushesStaticBVITexture.cfg  |  10 +
 .../bvidvc/CBricksLeavesBVITexture.cfg        |  10 +
 .../bvidvc/CBricksTiltingBVITexture.cfg       |  10 +
 .../bvidvc/CBubblesPitcherS1BVITexture.cfg    |  10 +
 .../bvidvc/CBuildingRoofS1IRIS.cfg            |  10 +
 .../bvidvc/CBuildingRoofS2IRIS.cfg            |  10 +
 .../bvidvc/CBuildingRoofS3IRIS.cfg            |  10 +
 .../bvidvc/CBuildingRoofS4IRIS.cfg            |  10 +
 .../CBuntingHangingAcrossHongKongVidevo.cfg   |  10 +
 .../bvidvc/CBusyHongKongStreetVidevo.cfg      |  10 +
 .../bvidvc/CCalmingWaterBVITexture.cfg        |  10 +
 .../bvidvc/CCarpetPanAverageBVITexture.cfg    |  10 +
 .../cfgs_training/bvidvc/CCatchBVIHFR.cfg     |  10 +
 .../CCeramicsandSpicesMoroccoVidevo.cfg       |  10 +
 .../bvidvc/CCharactersYonseiUniversity.cfg    |  10 +
 .../bvidvc/CChristmasPresentsIRIS.cfg         |  10 +
 .../bvidvc/CChristmasRoomDareful.cfg          |  10 +
 .../bvidvc/CChurchInsideMCLJCV.cfg            |  10 +
 .../bvidvc/CCityScapesS1IRIS.cfg              |  10 +
 .../bvidvc/CCityScapesS2IRIS.cfg              |  10 +
 .../bvidvc/CCityScapesS3IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS1IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS3IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS4IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS5IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS6IRIS.cfg              |  10 +
 .../bvidvc/CCityStreetS7IRIS.cfg              |  10 +
 .../bvidvc/CCloseUpBasketballSceneVidevo.cfg  |  10 +
 .../bvidvc/CCloudsStaticBVITexture.cfg        |  10 +
 .../CColourfulDecorationWatPhoVidevo.cfg      |  10 +
 .../bvidvc/CColourfulKoreanLanternsVidevo.cfg |  10 +
 .../bvidvc/CColourfulPaperLanternsVidevo.cfg  |  10 +
 .../bvidvc/CColourfulRugsMoroccoVidevo.cfg    |  10 +
 .../CConstructionS2YonseiUniversity.cfg       |  10 +
 .../bvidvc/CCostaRicaS3Harmonics.cfg          |  10 +
 .../bvidvc/CCrosswalkHarmonics.cfg            |  10 +
 .../bvidvc/CCrosswalkHongKong2S1Videvo.cfg    |  10 +
 .../bvidvc/CCrosswalkHongKong2S2Videvo.cfg    |  10 +
 .../bvidvc/CCrosswalkHongKongVidevo.cfg       |  10 +
 .../cfgs_training/bvidvc/CCrowdRunMCLV.cfg    |  10 +
 .../cfgs_training/bvidvc/CCyclistS1BVIHFR.cfg |  10 +
 .../CCyclistVeniceBeachBoardwalkVidevo.cfg    |  10 +
 .../bvidvc/CDollsScene1YonseiUniversity.cfg   |  10 +
 .../bvidvc/CDollsScene2YonseiUniversity.cfg   |  10 +
 .../bvidvc/CDowntownHongKongVidevo.cfg        |  10 +
 .../bvidvc/CDrivingPOVHarmonics.cfg           |  10 +
 .../bvidvc/CDropsOnWaterBVITexture.cfg        |  10 +
 .../bvidvc/CElFuenteMaskLIVENetFlix.cfg       |  10 +
 .../bvidvc/CEnteringHongKongStallS1Videvo.cfg |  10 +
 .../bvidvc/CEnteringHongKongStallS2Videvo.cfg |  10 +
 .../bvidvc/CFerrisWheelTurningVidevo.cfg      |  10 +
 .../cfgs_training/bvidvc/CFireS18Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/CFireS21Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/CFireS71Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/CFirewoodS1IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/CFirewoodS2IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/CFitnessIRIS.cfg     |  10 +
 .../bvidvc/CFjordsS1Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/CFlagShootTUMSVT.cfg |  10 +
 .../bvidvc/CFlowerChapelS1IRIS.cfg            |  10 +
 .../bvidvc/CFlowerChapelS2IRIS.cfg            |  10 +
 .../bvidvc/CFlyingCountrysideDareful.cfg      |  10 +
 .../bvidvc/CFlyingMountainsDareful.cfg        |  10 +
 .../bvidvc/CFlyingThroughLAStreetVidevo.cfg   |  10 +
 .../bvidvc/CFungusZoomBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/CGrassBVITexture.cfg |  10 +
 .../cfgs_training/bvidvc/CGrazTowerIRIS.cfg   |  10 +
 .../cfgs_training/bvidvc/CHamsterBVIHFR.cfg   |  10 +
 .../bvidvc/CHarleyDavidsonIRIS.cfg            |  10 +
 .../bvidvc/CHongKongIslandVidevo.cfg          |  10 +
 .../bvidvc/CHongKongMarket1Videvo.cfg         |  10 +
 .../bvidvc/CHongKongMarket2Videvo.cfg         |  10 +
 .../bvidvc/CHongKongMarket3S1Videvo.cfg       |  10 +
 .../bvidvc/CHongKongMarket3S2Videvo.cfg       |  10 +
 .../bvidvc/CHongKongMarket4S1Videvo.cfg       |  10 +
 .../bvidvc/CHongKongMarket4S2Videvo.cfg       |  10 +
 .../bvidvc/CHongKongS1Harmonics.cfg           |  10 +
 .../bvidvc/CHongKongS2Harmonics.cfg           |  10 +
 .../bvidvc/CHongKongS3Harmonics.cfg           |  10 +
 .../bvidvc/CHorseDrawnCarriagesVidevo.cfg     |  10 +
 .../bvidvc/CHorseStaringS1Videvo.cfg          |  10 +
 .../bvidvc/CHorseStaringS2Videvo.cfg          |  10 +
 .../cfgs_training/bvidvc/CJockeyHarmonics.cfg |  10 +
 .../cfgs_training/bvidvc/CJoggersS1BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/CJoggersS2BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/CKartingIRIS.cfg     |  10 +
 .../cfgs_training/bvidvc/CKoraDrumsVidevo.cfg |  10 +
 .../bvidvc/CLakeYonseiUniversity.cfg          |  10 +
 .../bvidvc/CLampLeavesBVITexture.cfg          |  10 +
 .../CLaundryHangingOverHongKongVidevo.cfg     |  10 +
 .../bvidvc/CLeaves1BVITexture.cfg             |  10 +
 .../bvidvc/CLeaves3BVITexture.cfg             |  10 +
 .../CLowLevelShotAlongHongKongVidevo.cfg      |  10 +
 .../bvidvc/CLungshanTempleS1Videvo.cfg        |  10 +
 .../bvidvc/CLungshanTempleS2Videvo.cfg        |  10 +
 .../bvidvc/CManMoTempleVidevo.cfg             |  10 +
 .../CManStandinginProduceTruckVidevo.cfg      |  10 +
 .../CManWalkingThroughBangkokVidevo.cfg       |  10 +
 .../bvidvc/CMaplesS1YonseiUniversity.cfg      |  10 +
 .../bvidvc/CMaplesS2YonseiUniversity.cfg      |  10 +
 .../bvidvc/CMirabellParkS1IRIS.cfg            |  10 +
 .../bvidvc/CMirabellParkS2IRIS.cfg            |  10 +
 .../cfgs_training/bvidvc/CMobileHarmonics.cfg |  10 +
 .../bvidvc/CMoroccanCeramicsShopVidevo.cfg    |  10 +
 .../bvidvc/CMoroccanSlippersVidevo.cfg        |  10 +
 .../bvidvc/CMuralPaintingVidevo.cfg           |  10 +
 .../bvidvc/CMyanmarS4Harmonics.cfg            |  10 +
 .../bvidvc/CMyanmarS6Harmonics.cfg            |  10 +
 .../bvidvc/CMyeongDongVidevo.cfg              |  10 +
 .../bvidvc/CNewYorkStreetDareful.cfg          |  10 +
 .../COrangeBuntingoverHongKongVidevo.cfg      |  10 +
 .../bvidvc/CPaintingTiltingBVITexture.cfg     |  10 +
 .../bvidvc/CParkViolinMCLJCV.cfg              |  10 +
 .../bvidvc/CPedestriansSeoulatDawnVidevo.cfg  |  10 +
 .../bvidvc/CPeopleWalkingS1IRIS.cfg           |  10 +
 .../bvidvc/CPersonRunningOutsideVidevo.cfg    |  10 +
 .../bvidvc/CPillowsTransBVITexture.cfg        |  10 +
 .../bvidvc/CPlasmaFreeBVITexture.cfg          |  10 +
 .../bvidvc/CPresentsChristmasTreeDareful.cfg  |  10 +
 .../bvidvc/CReadySetGoS2TampereUniversity.cfg |  10 +
 .../bvidvc/CResidentialBuildingSJTU.cfg       |  10 +
 .../bvidvc/CRollerCoaster2Netflix.cfg         |  10 +
 .../cfgs_training/bvidvc/CRunnersSJTU.cfg     |  10 +
 .../cfgs_training/bvidvc/CRuralSetupIRIS.cfg  |  10 +
 .../bvidvc/CRuralSetupS2IRIS.cfg              |  10 +
 .../cfgs_training/bvidvc/CScarfSJTU.cfg       |  10 +
 .../cfgs_training/bvidvc/CSeasideWalkIRIS.cfg |  10 +
 .../cfgs_training/bvidvc/CSeekingMCLV.cfg     |  10 +
 .../bvidvc/CSeoulCanalatDawnVidevo.cfg        |  10 +
 .../bvidvc/CShoppingCentreVidevo.cfg          |  10 +
 .../bvidvc/CSignboardBoatLIVENetFlix.cfg      |  10 +
 .../bvidvc/CSkyscraperBangkokVidevo.cfg       |  10 +
 .../bvidvc/CSmokeClearBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/CSmokeS45Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/CSparklerBVIHFR.cfg  |  10 +
 .../bvidvc/CSquareAndTimelapseHarmonics.cfg   |  10 +
 .../cfgs_training/bvidvc/CSquareS1IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/CSquareS2IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/CStreetArtVidevo.cfg |  10 +
 .../bvidvc/CStreetDancerS1IRIS.cfg            |  10 +
 .../bvidvc/CStreetDancerS2IRIS.cfg            |  10 +
 .../bvidvc/CStreetDancerS3IRIS.cfg            |  10 +
 .../bvidvc/CStreetDancerS4IRIS.cfg            |  10 +
 .../bvidvc/CStreetDancerS5IRIS.cfg            |  10 +
 .../bvidvc/CStreetsOfIndiaS1Harmonics.cfg     |  10 +
 .../bvidvc/CStreetsOfIndiaS2Harmonics.cfg     |  10 +
 .../bvidvc/CStreetsOfIndiaS3Harmonics.cfg     |  10 +
 .../bvidvc/CTaiChiHongKongS1Videvo.cfg        |  10 +
 .../bvidvc/CTaiChiHongKongS2Videvo.cfg        |  10 +
 .../bvidvc/CTaipeiCityRooftops8Videvo.cfg     |  10 +
 .../bvidvc/CTaipeiCityRooftopsS1Videvo.cfg    |  10 +
 .../bvidvc/CTaipeiCityRooftopsS2Videvo.cfg    |  10 +
 .../bvidvc/CTaksinBridgeVidevo.cfg            |  10 +
 .../bvidvc/CTallBuildingsSJTU.cfg             |  10 +
 .../cfgs_training/bvidvc/CTennisMCLV.cfg      |  10 +
 .../bvidvc/CToddlerFountain2Netflix.cfg       |  10 +
 .../bvidvc/CTouristsSatOutsideVidevo.cfg      |  10 +
 .../bvidvc/CToyCalendarHarmonics.cfg          |  10 +
 .../CTrackingDownHongKongSideVidevo.cfg       |  10 +
 .../bvidvc/CTrackingPastRestaurantVidevo.cfg  |  10 +
 .../CTrackingPastStallHongKongVidevo.cfg      |  10 +
 .../CTraditionalIndonesianKecakVidevo.cfg     |  10 +
 .../cfgs_training/bvidvc/CTrafficFlowSJTU.cfg |  10 +
 .../bvidvc/CTrafficandBuildingSJTU.cfg        |  10 +
 .../bvidvc/CTrafficonTasksinBridgeVidevo.cfg  |  10 +
 .../bvidvc/CTreeWillsBVITexture.cfg           |  10 +
 .../cfgs_training/bvidvc/CTruckIRIS.cfg       |  10 +
 .../bvidvc/CTunnelFlagS1Harmonics.cfg         |  10 +
 .../bvidvc/CUnloadingVegetablesVidevo.cfg     |  10 +
 .../bvidvc/CVegetableMarketS1LIVENetFlix.cfg  |  10 +
 .../bvidvc/CVegetableMarketS2LIVENetFlix.cfg  |  10 +
 .../bvidvc/CVegetableMarketS3LIVENetFlix.cfg  |  10 +
 .../bvidvc/CVegetableMarketS4LIVENetFlix.cfg  |  10 +
 .../bvidvc/CVeniceS1Harmonics.cfg             |  10 +
 .../bvidvc/CVeniceS2Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/CVeniceSceneIRIS.cfg |  10 +
 .../bvidvc/CWalkingDownKhaoStreetVidevo.cfg   |  10 +
 .../bvidvc/CWalkingDownNorthRodeoVidevo.cfg   |  10 +
 .../CWalkingThroughFootbridgeVidevo.cfg       |  10 +
 .../bvidvc/CWatPhoTempleVidevo.cfg            |  10 +
 .../cfgs_training/bvidvc/CWaterS65Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/CWaterS81Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/CWoodSJTU.cfg        |  10 +
 .../cfgs_training/bvidvc/CWovenVidevo.cfg     |  10 +
 .../DAdvertisingMassagesBangkokVidevo.cfg     |  10 +
 .../bvidvc/DAmericanFootballS2Harmonics.cfg   |  10 +
 .../bvidvc/DAmericanFootballS3Harmonics.cfg   |  10 +
 .../bvidvc/DAmericanFootballS4Harmonics.cfg   |  10 +
 .../bvidvc/DAnimalsS11Harmonics.cfg           |  10 +
 .../bvidvc/DAnimalsS1Harmonics.cfg            |  10 +
 .../bvidvc/DBangkokMarketVidevo.cfg           |  10 +
 .../bvidvc/DBasketballGoalScoredS1Videvo.cfg  |  10 +
 .../bvidvc/DBasketballGoalScoredS2Videvo.cfg  |  10 +
 .../bvidvc/DBasketballS1YonseiUniversity.cfg  |  10 +
 .../bvidvc/DBasketballS2YonseiUniversity.cfg  |  10 +
 .../bvidvc/DBasketballS3YonseiUniversity.cfg  |  10 +
 .../bvidvc/DBoatsChaoPhrayaRiverVidevo.cfg    |  10 +
 .../bvidvc/DBobbleheadBVIHFR.cfg              |  10 +
 .../bvidvc/DBookcaseBVITexture.cfg            |  10 +
 .../bvidvc/DBoxingPracticeHarmonics.cfg       |  10 +
 .../bvidvc/DBricksBushesStaticBVITexture.cfg  |  10 +
 .../bvidvc/DBricksLeavesBVITexture.cfg        |  10 +
 .../bvidvc/DBricksTiltingBVITexture.cfg       |  10 +
 .../bvidvc/DBubblesPitcherS1BVITexture.cfg    |  10 +
 .../bvidvc/DBuildingRoofS1IRIS.cfg            |  10 +
 .../bvidvc/DBuildingRoofS2IRIS.cfg            |  10 +
 .../bvidvc/DBuildingRoofS3IRIS.cfg            |  10 +
 .../bvidvc/DBuildingRoofS4IRIS.cfg            |  10 +
 .../DBuntingHangingAcrossHongKongVidevo.cfg   |  10 +
 .../bvidvc/DBusyHongKongStreetVidevo.cfg      |  10 +
 .../bvidvc/DCalmingWaterBVITexture.cfg        |  10 +
 .../bvidvc/DCarpetPanAverageBVITexture.cfg    |  10 +
 .../cfgs_training/bvidvc/DCatchBVIHFR.cfg     |  10 +
 .../DCeramicsandSpicesMoroccoVidevo.cfg       |  10 +
 .../bvidvc/DCharactersYonseiUniversity.cfg    |  10 +
 .../bvidvc/DChristmasPresentsIRIS.cfg         |  10 +
 .../bvidvc/DChristmasRoomDareful.cfg          |  10 +
 .../bvidvc/DChurchInsideMCLJCV.cfg            |  10 +
 .../bvidvc/DCityScapesS1IRIS.cfg              |  10 +
 .../bvidvc/DCityScapesS2IRIS.cfg              |  10 +
 .../bvidvc/DCityScapesS3IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS1IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS3IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS4IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS5IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS6IRIS.cfg              |  10 +
 .../bvidvc/DCityStreetS7IRIS.cfg              |  10 +
 .../bvidvc/DCloseUpBasketballSceneVidevo.cfg  |  10 +
 .../bvidvc/DCloudsStaticBVITexture.cfg        |  10 +
 .../DColourfulDecorationWatPhoVidevo.cfg      |  10 +
 .../bvidvc/DColourfulKoreanLanternsVidevo.cfg |  10 +
 .../bvidvc/DColourfulPaperLanternsVidevo.cfg  |  10 +
 .../bvidvc/DColourfulRugsMoroccoVidevo.cfg    |  10 +
 .../DConstructionS2YonseiUniversity.cfg       |  10 +
 .../bvidvc/DCostaRicaS3Harmonics.cfg          |  10 +
 .../bvidvc/DCrosswalkHarmonics.cfg            |  10 +
 .../bvidvc/DCrosswalkHongKong2S1Videvo.cfg    |  10 +
 .../bvidvc/DCrosswalkHongKong2S2Videvo.cfg    |  10 +
 .../bvidvc/DCrosswalkHongKongVidevo.cfg       |  10 +
 .../cfgs_training/bvidvc/DCrowdRunMCLV.cfg    |  10 +
 .../cfgs_training/bvidvc/DCyclistS1BVIHFR.cfg |  10 +
 .../DCyclistVeniceBeachBoardwalkVidevo.cfg    |  10 +
 .../bvidvc/DDollsScene1YonseiUniversity.cfg   |  10 +
 .../bvidvc/DDollsScene2YonseiUniversity.cfg   |  10 +
 .../bvidvc/DDowntownHongKongVidevo.cfg        |  10 +
 .../bvidvc/DDrivingPOVHarmonics.cfg           |  10 +
 .../bvidvc/DDropsOnWaterBVITexture.cfg        |  10 +
 .../bvidvc/DElFuenteMaskLIVENetFlix.cfg       |  10 +
 .../bvidvc/DEnteringHongKongStallS1Videvo.cfg |  10 +
 .../bvidvc/DEnteringHongKongStallS2Videvo.cfg |  10 +
 .../bvidvc/DFerrisWheelTurningVidevo.cfg      |  10 +
 .../cfgs_training/bvidvc/DFireS18Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/DFireS21Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/DFireS71Mitch.cfg    |  10 +
 .../cfgs_training/bvidvc/DFirewoodS1IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/DFirewoodS2IRIS.cfg  |  10 +
 .../cfgs_training/bvidvc/DFitnessIRIS.cfg     |  10 +
 .../bvidvc/DFjordsS1Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/DFlagShootTUMSVT.cfg |  10 +
 .../bvidvc/DFlowerChapelS1IRIS.cfg            |  10 +
 .../bvidvc/DFlowerChapelS2IRIS.cfg            |  10 +
 .../bvidvc/DFlyingCountrysideDareful.cfg      |  10 +
 .../bvidvc/DFlyingMountainsDareful.cfg        |  10 +
 .../bvidvc/DFlyingThroughLAStreetVidevo.cfg   |  10 +
 .../bvidvc/DFungusZoomBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/DGrassBVITexture.cfg |  10 +
 .../cfgs_training/bvidvc/DGrazTowerIRIS.cfg   |  10 +
 .../cfgs_training/bvidvc/DHamsterBVIHFR.cfg   |  10 +
 .../bvidvc/DHarleyDavidsonIRIS.cfg            |  10 +
 .../bvidvc/DHongKongIslandVidevo.cfg          |  10 +
 .../bvidvc/DHongKongMarket1Videvo.cfg         |  10 +
 .../bvidvc/DHongKongMarket2Videvo.cfg         |  10 +
 .../bvidvc/DHongKongMarket3S1Videvo.cfg       |  10 +
 .../bvidvc/DHongKongMarket3S2Videvo.cfg       |  10 +
 .../bvidvc/DHongKongMarket4S1Videvo.cfg       |  10 +
 .../bvidvc/DHongKongMarket4S2Videvo.cfg       |  10 +
 .../bvidvc/DHongKongS1Harmonics.cfg           |  10 +
 .../bvidvc/DHongKongS2Harmonics.cfg           |  10 +
 .../bvidvc/DHongKongS3Harmonics.cfg           |  10 +
 .../bvidvc/DHorseDrawnCarriagesVidevo.cfg     |  10 +
 .../bvidvc/DHorseStaringS1Videvo.cfg          |  10 +
 .../bvidvc/DHorseStaringS2Videvo.cfg          |  10 +
 .../cfgs_training/bvidvc/DJockeyHarmonics.cfg |  10 +
 .../cfgs_training/bvidvc/DJoggersS1BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/DJoggersS2BVIHFR.cfg |  10 +
 .../cfgs_training/bvidvc/DKartingIRIS.cfg     |  10 +
 .../cfgs_training/bvidvc/DKoraDrumsVidevo.cfg |  10 +
 .../bvidvc/DLakeYonseiUniversity.cfg          |  10 +
 .../bvidvc/DLampLeavesBVITexture.cfg          |  10 +
 .../DLaundryHangingOverHongKongVidevo.cfg     |  10 +
 .../bvidvc/DLeaves1BVITexture.cfg             |  10 +
 .../bvidvc/DLeaves3BVITexture.cfg             |  10 +
 .../DLowLevelShotAlongHongKongVidevo.cfg      |  10 +
 .../bvidvc/DLungshanTempleS1Videvo.cfg        |  10 +
 .../bvidvc/DLungshanTempleS2Videvo.cfg        |  10 +
 .../bvidvc/DManMoTempleVidevo.cfg             |  10 +
 .../DManStandinginProduceTruckVidevo.cfg      |  10 +
 .../DManWalkingThroughBangkokVidevo.cfg       |  10 +
 .../bvidvc/DMaplesS1YonseiUniversity.cfg      |  10 +
 .../bvidvc/DMaplesS2YonseiUniversity.cfg      |  10 +
 .../bvidvc/DMirabellParkS1IRIS.cfg            |  10 +
 .../bvidvc/DMirabellParkS2IRIS.cfg            |  10 +
 .../cfgs_training/bvidvc/DMobileHarmonics.cfg |  10 +
 .../bvidvc/DMoroccanCeramicsShopVidevo.cfg    |  10 +
 .../bvidvc/DMoroccanSlippersVidevo.cfg        |  10 +
 .../bvidvc/DMuralPaintingVidevo.cfg           |  10 +
 .../bvidvc/DMyanmarS4Harmonics.cfg            |  10 +
 .../bvidvc/DMyanmarS6Harmonics.cfg            |  10 +
 .../bvidvc/DMyeongDongVidevo.cfg              |  10 +
 .../bvidvc/DNewYorkStreetDareful.cfg          |  10 +
 .../DOrangeBuntingoverHongKongVidevo.cfg      |  10 +
 .../bvidvc/DPaintingTiltingBVITexture.cfg     |  10 +
 .../bvidvc/DParkViolinMCLJCV.cfg              |  10 +
 .../bvidvc/DPedestriansSeoulatDawnVidevo.cfg  |  10 +
 .../bvidvc/DPeopleWalkingS1IRIS.cfg           |  10 +
 .../bvidvc/DPersonRunningOutsideVidevo.cfg    |  10 +
 .../bvidvc/DPillowsTransBVITexture.cfg        |  10 +
 .../bvidvc/DPlasmaFreeBVITexture.cfg          |  10 +
 .../bvidvc/DPresentsChristmasTreeDareful.cfg  |  10 +
 .../bvidvc/DReadySetGoS2TampereUniversity.cfg |  10 +
 .../bvidvc/DResidentialBuildingSJTU.cfg       |  10 +
 .../bvidvc/DRollerCoaster2Netflix.cfg         |  10 +
 .../cfgs_training/bvidvc/DRunnersSJTU.cfg     |  10 +
 .../cfgs_training/bvidvc/DRuralSetupIRIS.cfg  |  10 +
 .../bvidvc/DRuralSetupS2IRIS.cfg              |  10 +
 .../cfgs_training/bvidvc/DScarfSJTU.cfg       |  10 +
 .../cfgs_training/bvidvc/DSeasideWalkIRIS.cfg |  10 +
 .../cfgs_training/bvidvc/DSeekingMCLV.cfg     |  10 +
 .../bvidvc/DSeoulCanalatDawnVidevo.cfg        |  10 +
 .../bvidvc/DShoppingCentreVidevo.cfg          |  10 +
 .../bvidvc/DSignboardBoatLIVENetFlix.cfg      |  10 +
 .../bvidvc/DSkyscraperBangkokVidevo.cfg       |  10 +
 .../bvidvc/DSmokeClearBVITexture.cfg          |  10 +
 .../cfgs_training/bvidvc/DSmokeS45Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/DSparklerBVIHFR.cfg  |  10 +
 .../bvidvc/DSquareAndTimelapseHarmonics.cfg   |  10 +
 .../cfgs_training/bvidvc/DSquareS1IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/DSquareS2IRIS.cfg    |  10 +
 .../cfgs_training/bvidvc/DStreetArtVidevo.cfg |  10 +
 .../bvidvc/DStreetDancerS1IRIS.cfg            |  10 +
 .../bvidvc/DStreetDancerS2IRIS.cfg            |  10 +
 .../bvidvc/DStreetDancerS3IRIS.cfg            |  10 +
 .../bvidvc/DStreetDancerS4IRIS.cfg            |  10 +
 .../bvidvc/DStreetDancerS5IRIS.cfg            |  10 +
 .../bvidvc/DStreetsOfIndiaS1Harmonics.cfg     |  10 +
 .../bvidvc/DStreetsOfIndiaS2Harmonics.cfg     |  10 +
 .../bvidvc/DStreetsOfIndiaS3Harmonics.cfg     |  10 +
 .../bvidvc/DTaiChiHongKongS1Videvo.cfg        |  10 +
 .../bvidvc/DTaiChiHongKongS2Videvo.cfg        |  10 +
 .../bvidvc/DTaipeiCityRooftops8Videvo.cfg     |  10 +
 .../bvidvc/DTaipeiCityRooftopsS1Videvo.cfg    |  10 +
 .../bvidvc/DTaipeiCityRooftopsS2Videvo.cfg    |  10 +
 .../bvidvc/DTaksinBridgeVidevo.cfg            |  10 +
 .../bvidvc/DTallBuildingsSJTU.cfg             |  10 +
 .../cfgs_training/bvidvc/DTennisMCLV.cfg      |  10 +
 .../bvidvc/DToddlerFountain2Netflix.cfg       |  10 +
 .../bvidvc/DTouristsSatOutsideVidevo.cfg      |  10 +
 .../bvidvc/DToyCalendarHarmonics.cfg          |  10 +
 .../DTrackingDownHongKongSideVidevo.cfg       |  10 +
 .../bvidvc/DTrackingPastRestaurantVidevo.cfg  |  10 +
 .../DTrackingPastStallHongKongVidevo.cfg      |  10 +
 .../DTraditionalIndonesianKecakVidevo.cfg     |  10 +
 .../cfgs_training/bvidvc/DTrafficFlowSJTU.cfg |  10 +
 .../bvidvc/DTrafficandBuildingSJTU.cfg        |  10 +
 .../bvidvc/DTrafficonTasksinBridgeVidevo.cfg  |  10 +
 .../bvidvc/DTreeWillsBVITexture.cfg           |  10 +
 .../cfgs_training/bvidvc/DTruckIRIS.cfg       |  10 +
 .../bvidvc/DTunnelFlagS1Harmonics.cfg         |  10 +
 .../bvidvc/DUnloadingVegetablesVidevo.cfg     |  10 +
 .../bvidvc/DVegetableMarketS1LIVENetFlix.cfg  |  10 +
 .../bvidvc/DVegetableMarketS2LIVENetFlix.cfg  |  10 +
 .../bvidvc/DVegetableMarketS3LIVENetFlix.cfg  |  10 +
 .../bvidvc/DVegetableMarketS4LIVENetFlix.cfg  |  10 +
 .../bvidvc/DVeniceS1Harmonics.cfg             |  10 +
 .../bvidvc/DVeniceS2Harmonics.cfg             |  10 +
 .../cfgs_training/bvidvc/DVeniceSceneIRIS.cfg |  10 +
 .../bvidvc/DWalkingDownKhaoStreetVidevo.cfg   |  10 +
 .../bvidvc/DWalkingDownNorthRodeoVidevo.cfg   |  10 +
 .../DWalkingThroughFootbridgeVidevo.cfg       |  10 +
 .../bvidvc/DWatPhoTempleVidevo.cfg            |  10 +
 .../cfgs_training/bvidvc/DWaterS65Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/DWaterS81Mitch.cfg   |  10 +
 .../cfgs_training/bvidvc/DWoodSJTU.cfg        |  10 +
 .../cfgs_training/bvidvc/DWovenVidevo.cfg     |  10 +
 .../cfgs_training/tvd/Bamboo.cfg              |  11 +
 .../cfgs_training/tvd/BlackBird.cfg           |  11 +
 .../cfgs_training/tvd/BoyDressing1.cfg        |  11 +
 .../cfgs_training/tvd/BoyDressing2.cfg        |  11 +
 .../cfgs_training/tvd/BoyMakingUp1.cfg        |  11 +
 .../cfgs_training/tvd/BoyMakingUp2.cfg        |  11 +
 .../cfgs_training/tvd/BoyWithCostume.cfg      |  11 +
 .../tvd/BuildingTouristAttraction1.cfg        |  11 +
 .../tvd/BuildingTouristAttraction2.cfg        |  11 +
 .../tvd/BuildingTouristAttraction3.cfg        |  11 +
 .../cfgs_training/tvd/CableCar.cfg            |  11 +
 .../cfgs_training/tvd/ChefCooking1.cfg        |  11 +
 .../cfgs_training/tvd/ChefCooking2.cfg        |  11 +
 .../cfgs_training/tvd/ChefCooking3.cfg        |  11 +
 .../cfgs_training/tvd/ChefCooking4.cfg        |  11 +
 .../cfgs_training/tvd/ChefCooking5.cfg        |  11 +
 .../cfgs_training/tvd/ChefCuttingUp1.cfg      |  11 +
 .../cfgs_training/tvd/ChefCuttingUp2.cfg      |  11 +
 .../cfgs_training/tvd/DryRedPepper.cfg        |  11 +
 .../cfgs_training/tvd/FallenLeaves.cfg        |  11 +
 .../cfgs_training/tvd/FallingLeaves.cfg       |  11 +
 .../cfgs_training/tvd/FilmMachine.cfg         |  11 +
 .../cfgs_training/tvd/FlowingWater.cfg        |  11 +
 .../cfgs_training/tvd/Fountain.cfg            |  11 +
 .../cfgs_training/tvd/FruitOnTree.cfg         |  11 +
 .../cfgs_training/tvd/GirlRunningOnGrass.cfg  |  11 +
 .../cfgs_training/tvd/GirlThrowingLeaves.cfg  |  11 +
 .../cfgs_training/tvd/GirlWalkingOnStreet.cfg |  11 +
 .../cfgs_training/tvd/GirlWatchingPhone.cfg   |  11 +
 .../cfgs_training/tvd/GirlWithTeaSet1.cfg     |  11 +
 .../cfgs_training/tvd/GirlWithTeaSet2.cfg     |  11 +
 .../cfgs_training/tvd/GirlWithTeaSet3.cfg     |  11 +
 .../cfgs_training/tvd/GirlsOnGrass1.cfg       |  11 +
 .../cfgs_training/tvd/GirlsOnGrass2.cfg       |  11 +
 .../cfgs_training/tvd/GrassLand.cfg           |  11 +
 .../cfgs_training/tvd/HotPot.cfg              |  11 +
 .../cfgs_training/tvd/HotelClerks.cfg         |  11 +
 .../cfgs_training/tvd/LeavesOnTree.cfg        |  11 +
 .../cfgs_training/tvd/LyingDog.cfg            |  11 +
 .../cfgs_training/tvd/ManWithFilmMachine.cfg  |  11 +
 .../cfgs_training/tvd/MountainsAndStairs1.cfg |  11 +
 .../cfgs_training/tvd/MountainsAndStairs2.cfg |  11 +
 .../cfgs_training/tvd/MountainsAndStairs3.cfg |  11 +
 .../cfgs_training/tvd/MountainsAndStairs4.cfg |  11 +
 .../cfgs_training/tvd/MountainsView1.cfg      |  11 +
 .../cfgs_training/tvd/MountainsView2.cfg      |  11 +
 .../cfgs_training/tvd/MountainsView3.cfg      |  11 +
 .../cfgs_training/tvd/MountainsView4.cfg      |  11 +
 .../cfgs_training/tvd/MovingBikes.cfg         |  11 +
 .../tvd/MovingBikesAndPedestrian4.cfg         |  11 +
 .../cfgs_training/tvd/OilPainting1.cfg        |  11 +
 .../cfgs_training/tvd/OilPainting2.cfg        |  11 +
 .../cfgs_training/tvd/PeopleNearDesk.cfg      |  11 +
 .../cfgs_training/tvd/PeopleOnGrass.cfg       |  11 +
 .../cfgs_training/tvd/Plaque.cfg              |  11 +
 .../cfgs_training/tvd/PressureCooker.cfg      |  11 +
 .../cfgs_training/tvd/RawDucks.cfg            |  11 +
 .../cfgs_training/tvd/RedBush.cfg             |  11 +
 .../cfgs_training/tvd/RedRibbonsWithLocks.cfg |  11 +
 .../cfgs_training/tvd/RestaurantWaitress1.cfg |  11 +
 .../cfgs_training/tvd/RestaurantWaitress2.cfg |  11 +
 .../cfgs_training/tvd/RiverAndTrees.cfg       |  11 +
 .../cfgs_training/tvd/RoastedDuck.cfg         |  11 +
 .../tvd/RoomTouristAttraction1.cfg            |  11 +
 .../tvd/RoomTouristAttraction2.cfg            |  11 +
 .../tvd/RoomTouristAttraction3.cfg            |  11 +
 .../tvd/RoomTouristAttraction4.cfg            |  11 +
 .../tvd/RoomTouristAttraction5.cfg            |  11 +
 .../tvd/RoomTouristAttraction6.cfg            |  11 +
 .../tvd/RoomTouristAttraction7.cfg            |  11 +
 .../cfgs_training/tvd/StampCarving1.cfg       |  11 +
 .../cfgs_training/tvd/StampCarving2.cfg       |  11 +
 .../cfgs_training/tvd/StaticRocks.cfg         |  11 +
 .../tvd/StaticWaterAndBikes2.cfg              |  11 +
 .../cfgs_training/tvd/SunAndTrees.cfg         |  11 +
 .../tvd/SunriseMountainHuang.cfg              |  11 +
 .../tvd/SunsetMountainHuang1.cfg              |  11 +
 .../tvd/SunsetMountainHuang2.cfg              |  11 +
 .../cfgs_training/tvd/TreeTrunkMoving.cfg     |  11 +
 .../cfgs_training/tvd/TreesAndLeaves.cfg      |  11 +
 .../cfgs_training/tvd/TreesOnMountains1.cfg   |  11 +
 .../cfgs_training/tvd/TreesOnMountains2.cfg   |  11 +
 .../cfgs_training/tvd/TreesOnMountains3.cfg   |  11 +
 .../cfgs_training/tvd/WaterOnGrass1.cfg       |  11 +
 .../cfgs_training/tvd/WaterOnGrass2.cfg       |  11 +
 .../cfgs_training/tvd/Weave.cfg               |  11 +
 .../cfgs_training/uvg/Beauty_1920x1080.cfg    |  10 +
 .../cfgs_training/uvg/Beauty_3840x2160.cfg    |  10 +
 .../cfgs_training/uvg/Bosphorus_1920x1080.cfg |  10 +
 .../cfgs_training/uvg/Bosphorus_3840x2160.cfg |  10 +
 .../cfgs_training/uvg/CityAlley_3840x2160.cfg |  10 +
 .../uvg/FlowerFocus_3840x2160.cfg             |  10 +
 .../uvg/FlowerKids_3840x2160.cfg              |  10 +
 .../cfgs_training/uvg/FlowerPan_3840x2160.cfg |  10 +
 .../cfgs_training/uvg/HoneyBee_1920x1080.cfg  |  10 +
 .../cfgs_training/uvg/HoneyBee_3840x2160.cfg  |  10 +
 .../cfgs_training/uvg/Jockey_1920x1080.cfg    |  10 +
 .../cfgs_training/uvg/Jockey_3840x2160.cfg    |  10 +
 .../cfgs_training/uvg/Lips_3840x2160.cfg      |  10 +
 .../cfgs_training/uvg/RaceNight_3840x2160.cfg |  10 +
 .../uvg/ReadySetGo_1920x1080.cfg              |  10 +
 .../uvg/ReadySetGo_3840x2160.cfg              |  10 +
 .../cfgs_training/uvg/RiverBank_3840x2160.cfg |  10 +
 .../cfgs_training/uvg/ShakeNDry_1920x1080.cfg |  10 +
 .../cfgs_training/uvg/ShakeNDry_3840x2160.cfg |  10 +
 .../cfgs_training/uvg/SunBath_3840x2160.cfg   |  10 +
 .../cfgs_training/uvg/Twilight_3840x2160.cfg  |  10 +
 .../cfgs_training/uvg/YachtRide_1920x1080.cfg |  10 +
 .../cfgs_training/uvg/YachtRide_3840x2160.cfg |  10 +
 .../dispatching_paths_to_raw.py               | 180 ++++
 .../generating_data_intra.py                  | 630 ++++++++++++
 .../run_setups_vtm.sh                         |  38 +
 .../training_nn_intra.py                      | 393 ++++++++
 .../training_workflow.pdf                     | Bin 0 -> 136624 bytes
 971 files changed, 16165 insertions(+), 347 deletions(-)
 create mode 100644 source/Lib/CommonLib/intra_pred_downsampling_interpolation.cpp
 create mode 100644 source/Lib/CommonLib/intra_pred_downsampling_interpolation.h
 create mode 100644 source/Lib/CommonLib/intra_pred_extraction_context.cpp
 create mode 100644 source/Lib/CommonLib/intra_pred_extraction_context.h
 create mode 100644 source/Lib/CommonLib/intra_pred_sadl.cpp
 create mode 100644 source/Lib/CommonLib/intra_pred_sadl.h
 create mode 100644 source/Lib/CommonLib/intra_pred_utils.cpp
 create mode 100644 source/Lib/CommonLib/intra_pred_utils.h
 create mode 100644 training/training_intra_prediction/CMakeLists.txt
 create mode 100644 training/training_intra_prediction/README.md
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAdvertisingMassagesBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAmericanFootballS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS11Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AAnimalsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABangkokMarketVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABasketballGoalScoredS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABasketballS3YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABoatsChaoPhrayaRiverVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABobbleheadBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABookcaseBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABoxingPracticeHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABricksBushesStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABricksLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABricksTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABubblesPitcherS1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABuildingRoofS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABuntingHangingAcrossHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ABusyHongKongStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACalmingWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACarpetPanAverageBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACatchBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACeramicsandSpicesMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACharactersYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AChristmasPresentsIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AChristmasRoomDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AChurchInsideMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityScapesS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS6IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACityStreetS7IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACloseUpBasketballSceneVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACloudsStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AColourfulDecorationWatPhoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AColourfulKoreanLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AColourfulPaperLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AColourfulRugsMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AConstructionS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACostaRicaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKong2S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACrosswalkHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACrowdRunMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACyclistS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ACyclistVeniceBeachBoardwalkVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ADollsScene2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ADowntownHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ADrivingPOVHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ADropsOnWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AElFuenteMaskLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AEnteringHongKongStallS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFerrisWheelTurningVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFireS18Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFireS21Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFireS71Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFirewoodS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFitnessIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFjordsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlagShootTUMSVT.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlowerChapelS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlyingCountrysideDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlyingMountainsDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFlyingThroughLAStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AFungusZoomBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AGrassBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AGrazTowerIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHamsterBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHarleyDavidsonIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongIslandVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket3S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongMarket4S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHongKongS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHorseDrawnCarriagesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AHorseStaringS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AJockeyHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AJoggersS2BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AKartingIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AKoraDrumsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALakeYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALampLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALaundryHangingOverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALeaves1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALeaves3BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALowLevelShotAlongHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ALungshanTempleS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AManMoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AManStandinginProduceTruckVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AManWalkingThroughBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMaplesS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMirabellParkS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMobileHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanCeramicsShopVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMoroccanSlippersVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMuralPaintingVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMyanmarS6Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AMyeongDongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ANewYorkStreetDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AOrangeBuntingoverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APaintingTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AParkViolinMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APedestriansSeoulatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APeopleWalkingS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APersonRunningOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APillowsTransBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APlasmaFreeBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/APresentsChristmasTreeDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AReadySetGoS2TampereUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AResidentialBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ARollerCoaster2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ARunnersSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ARuralSetupS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AScarfSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASeasideWalkIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASeekingMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASeoulCanalatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AShoppingCentreVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASignboardBoatLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASkyscraperBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASmokeClearBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASmokeS45Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASparklerBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASquareAndTimelapseHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASquareS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ASquareS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetArtVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetDancerS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AStreetsOfIndiaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaiChiHongKongS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftops8Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaipeiCityRooftopsS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATaksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATallBuildingsSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATennisMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AToddlerFountain2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATouristsSatOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AToyCalendarHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrackingDownHongKongSideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastRestaurantVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrackingPastStallHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATraditionalIndonesianKecakVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrafficFlowSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrafficandBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATrafficonTasksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATreeWillsBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATruckIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/ATunnelFlagS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AUnloadingVegetablesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS1LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS2LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS3LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVegetableMarketS4LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVeniceS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AVeniceSceneIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownKhaoStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWalkingDownNorthRodeoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWalkingThroughFootbridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWatPhoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWaterS65Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWaterS81Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWoodSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/AWovenVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAdvertisingMassagesBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAmericanFootballS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS11Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BAnimalsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBangkokMarketVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBasketballGoalScoredS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBasketballS3YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBoatsChaoPhrayaRiverVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBobbleheadBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBookcaseBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBoxingPracticeHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBricksBushesStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBricksLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBricksTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBubblesPitcherS1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBuildingRoofS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBuntingHangingAcrossHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BBusyHongKongStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCalmingWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCarpetPanAverageBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCatchBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCeramicsandSpicesMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCharactersYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BChristmasPresentsIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BChristmasRoomDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BChurchInsideMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityScapesS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS6IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCityStreetS7IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCloseUpBasketballSceneVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCloudsStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BColourfulDecorationWatPhoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BColourfulKoreanLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BColourfulPaperLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BColourfulRugsMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BConstructionS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCostaRicaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKong2S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCrosswalkHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCrowdRunMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCyclistS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BCyclistVeniceBeachBoardwalkVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BDollsScene2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BDowntownHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BDrivingPOVHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BDropsOnWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BElFuenteMaskLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BEnteringHongKongStallS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFerrisWheelTurningVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFireS18Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFireS21Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFireS71Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFirewoodS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFitnessIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFjordsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlagShootTUMSVT.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlowerChapelS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlyingCountrysideDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlyingMountainsDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFlyingThroughLAStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BFungusZoomBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BGrassBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BGrazTowerIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHamsterBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHarleyDavidsonIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongIslandVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket3S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongMarket4S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHongKongS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHorseDrawnCarriagesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BHorseStaringS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BJockeyHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BJoggersS2BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BKartingIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BKoraDrumsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLakeYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLampLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLaundryHangingOverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLeaves1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLeaves3BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLowLevelShotAlongHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BLungshanTempleS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BManMoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BManStandinginProduceTruckVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BManWalkingThroughBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMaplesS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMirabellParkS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMobileHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanCeramicsShopVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMoroccanSlippersVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMuralPaintingVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMyanmarS6Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BMyeongDongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BNewYorkStreetDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BOrangeBuntingoverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPaintingTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BParkViolinMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPedestriansSeoulatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPeopleWalkingS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPersonRunningOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPillowsTransBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPlasmaFreeBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BPresentsChristmasTreeDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BReadySetGoS2TampereUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BResidentialBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BRollerCoaster2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BRunnersSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BRuralSetupS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BScarfSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSeasideWalkIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSeekingMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSeoulCanalatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BShoppingCentreVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSignboardBoatLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSkyscraperBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSmokeClearBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSmokeS45Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSparklerBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSquareAndTimelapseHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSquareS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BSquareS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetArtVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetDancerS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BStreetsOfIndiaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaiChiHongKongS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftops8Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaipeiCityRooftopsS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTaksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTallBuildingsSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTennisMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BToddlerFountain2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTouristsSatOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BToyCalendarHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrackingDownHongKongSideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastRestaurantVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrackingPastStallHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTraditionalIndonesianKecakVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrafficFlowSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrafficandBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTrafficonTasksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTreeWillsBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTruckIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BTunnelFlagS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BUnloadingVegetablesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS1LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS2LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS3LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVegetableMarketS4LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVeniceS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BVeniceSceneIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownKhaoStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWalkingDownNorthRodeoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWalkingThroughFootbridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWatPhoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWaterS65Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWaterS81Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWoodSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/BWovenVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAdvertisingMassagesBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAmericanFootballS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS11Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CAnimalsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBangkokMarketVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBasketballGoalScoredS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBasketballS3YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBoatsChaoPhrayaRiverVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBobbleheadBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBookcaseBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBoxingPracticeHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBricksBushesStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBricksLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBricksTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBubblesPitcherS1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBuildingRoofS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBuntingHangingAcrossHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CBusyHongKongStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCalmingWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCarpetPanAverageBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCatchBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCeramicsandSpicesMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCharactersYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CChristmasPresentsIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CChristmasRoomDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CChurchInsideMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityScapesS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS6IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCityStreetS7IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCloseUpBasketballSceneVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCloudsStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CColourfulDecorationWatPhoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CColourfulKoreanLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CColourfulPaperLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CColourfulRugsMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CConstructionS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCostaRicaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKong2S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCrosswalkHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCrowdRunMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCyclistS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CCyclistVeniceBeachBoardwalkVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CDollsScene2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CDowntownHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CDrivingPOVHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CDropsOnWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CElFuenteMaskLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CEnteringHongKongStallS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFerrisWheelTurningVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFireS18Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFireS21Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFireS71Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFirewoodS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFitnessIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFjordsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlagShootTUMSVT.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlowerChapelS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlyingCountrysideDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlyingMountainsDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFlyingThroughLAStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CFungusZoomBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CGrassBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CGrazTowerIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHamsterBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHarleyDavidsonIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongIslandVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket3S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongMarket4S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHongKongS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHorseDrawnCarriagesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CHorseStaringS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CJockeyHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CJoggersS2BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CKartingIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CKoraDrumsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLakeYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLampLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLaundryHangingOverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLeaves1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLeaves3BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLowLevelShotAlongHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CLungshanTempleS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CManMoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CManStandinginProduceTruckVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CManWalkingThroughBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMaplesS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMirabellParkS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMobileHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanCeramicsShopVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMoroccanSlippersVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMuralPaintingVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMyanmarS6Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CMyeongDongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CNewYorkStreetDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/COrangeBuntingoverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPaintingTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CParkViolinMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPedestriansSeoulatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPeopleWalkingS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPersonRunningOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPillowsTransBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPlasmaFreeBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CPresentsChristmasTreeDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CReadySetGoS2TampereUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CResidentialBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CRollerCoaster2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CRunnersSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CRuralSetupS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CScarfSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSeasideWalkIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSeekingMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSeoulCanalatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CShoppingCentreVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSignboardBoatLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSkyscraperBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSmokeClearBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSmokeS45Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSparklerBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSquareAndTimelapseHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSquareS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CSquareS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetArtVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetDancerS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CStreetsOfIndiaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaiChiHongKongS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftops8Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaipeiCityRooftopsS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTaksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTallBuildingsSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTennisMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CToddlerFountain2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTouristsSatOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CToyCalendarHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrackingDownHongKongSideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastRestaurantVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrackingPastStallHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTraditionalIndonesianKecakVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrafficFlowSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrafficandBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTrafficonTasksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTreeWillsBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTruckIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CTunnelFlagS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CUnloadingVegetablesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS1LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS2LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS3LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVegetableMarketS4LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVeniceS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CVeniceSceneIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownKhaoStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWalkingDownNorthRodeoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWalkingThroughFootbridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWatPhoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWaterS65Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWaterS81Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWoodSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/CWovenVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAdvertisingMassagesBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAmericanFootballS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS11Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DAnimalsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBangkokMarketVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBasketballGoalScoredS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBasketballS3YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBoatsChaoPhrayaRiverVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBobbleheadBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBookcaseBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBoxingPracticeHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBricksBushesStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBricksLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBricksTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBubblesPitcherS1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBuildingRoofS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBuntingHangingAcrossHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DBusyHongKongStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCalmingWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCarpetPanAverageBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCatchBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCeramicsandSpicesMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCharactersYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DChristmasPresentsIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DChristmasRoomDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DChurchInsideMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityScapesS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS6IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCityStreetS7IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCloseUpBasketballSceneVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCloudsStaticBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DColourfulDecorationWatPhoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DColourfulKoreanLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DColourfulPaperLanternsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DColourfulRugsMoroccoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DConstructionS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCostaRicaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKong2S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCrosswalkHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCrowdRunMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCyclistS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DCyclistVeniceBeachBoardwalkVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DDollsScene2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DDowntownHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DDrivingPOVHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DDropsOnWaterBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DElFuenteMaskLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DEnteringHongKongStallS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFerrisWheelTurningVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFireS18Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFireS21Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFireS71Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFirewoodS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFitnessIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFjordsS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlagShootTUMSVT.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlowerChapelS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlyingCountrysideDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlyingMountainsDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFlyingThroughLAStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DFungusZoomBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DGrassBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DGrazTowerIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHamsterBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHarleyDavidsonIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongIslandVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket3S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongMarket4S2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHongKongS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHorseDrawnCarriagesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DHorseStaringS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DJockeyHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS1BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DJoggersS2BVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DKartingIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DKoraDrumsVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLakeYonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLampLeavesBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLaundryHangingOverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLeaves1BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLeaves3BVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLowLevelShotAlongHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DLungshanTempleS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DManMoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DManStandinginProduceTruckVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DManWalkingThroughBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS1YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMaplesS2YonseiUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMirabellParkS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMobileHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanCeramicsShopVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMoroccanSlippersVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMuralPaintingVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS4Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMyanmarS6Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DMyeongDongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DNewYorkStreetDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DOrangeBuntingoverHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPaintingTiltingBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DParkViolinMCLJCV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPedestriansSeoulatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPeopleWalkingS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPersonRunningOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPillowsTransBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPlasmaFreeBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DPresentsChristmasTreeDareful.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DReadySetGoS2TampereUniversity.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DResidentialBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DRollerCoaster2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DRunnersSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DRuralSetupS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DScarfSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSeasideWalkIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSeekingMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSeoulCanalatDawnVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DShoppingCentreVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSignboardBoatLIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSkyscraperBangkokVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSmokeClearBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSmokeS45Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSparklerBVIHFR.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSquareAndTimelapseHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSquareS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DSquareS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetArtVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS1IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS2IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS3IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS4IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetDancerS5IRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DStreetsOfIndiaS3Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaiChiHongKongS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftops8Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS1Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaipeiCityRooftopsS2Videvo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTaksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTallBuildingsSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTennisMCLV.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DToddlerFountain2Netflix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTouristsSatOutsideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DToyCalendarHarmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrackingDownHongKongSideVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastRestaurantVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrackingPastStallHongKongVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTraditionalIndonesianKecakVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrafficFlowSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrafficandBuildingSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTrafficonTasksinBridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTreeWillsBVITexture.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTruckIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DTunnelFlagS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DUnloadingVegetablesVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS1LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS2LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS3LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVegetableMarketS4LIVENetFlix.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS1Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVeniceS2Harmonics.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DVeniceSceneIRIS.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownKhaoStreetVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWalkingDownNorthRodeoVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWalkingThroughFootbridgeVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWatPhoTempleVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWaterS65Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWaterS81Mitch.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWoodSJTU.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/bvidvc/DWovenVidevo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/Bamboo.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BlackBird.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BoyDressing1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BoyDressing2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BoyMakingUp2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BoyWithCostume.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/BuildingTouristAttraction3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/CableCar.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCooking1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCooking2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCooking3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCooking4.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCooking5.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ChefCuttingUp2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/DryRedPepper.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/FallenLeaves.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/FallingLeaves.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/FilmMachine.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/FlowingWater.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/Fountain.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/FruitOnTree.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlRunningOnGrass.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlThrowingLeaves.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlWalkingOnStreet.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlWatchingPhone.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlWithTeaSet3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GirlsOnGrass2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/GrassLand.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/HotPot.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/HotelClerks.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/LeavesOnTree.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/LyingDog.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/ManWithFilmMachine.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsAndStairs4.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsView1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsView2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsView3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MountainsView4.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MovingBikes.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/MovingBikesAndPedestrian4.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/OilPainting1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/OilPainting2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/PeopleNearDesk.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/PeopleOnGrass.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/Plaque.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/PressureCooker.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RawDucks.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RedBush.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RedRibbonsWithLocks.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RestaurantWaitress2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RiverAndTrees.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoastedDuck.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction4.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction5.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction6.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/RoomTouristAttraction7.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/StampCarving1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/StampCarving2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/StaticRocks.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/StaticWaterAndBikes2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/SunAndTrees.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/SunriseMountainHuang.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/SunsetMountainHuang2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/TreeTrunkMoving.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/TreesAndLeaves.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/TreesOnMountains3.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass1.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/WaterOnGrass2.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/tvd/Weave.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Beauty_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Beauty_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Bosphorus_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Bosphorus_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/CityAlley_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/FlowerFocus_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/FlowerKids_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/FlowerPan_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/HoneyBee_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/HoneyBee_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Jockey_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Jockey_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Lips_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/RaceNight_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/ReadySetGo_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/RiverBank_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/ShakeNDry_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/SunBath_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/Twilight_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/YachtRide_1920x1080.cfg
 create mode 100644 training/training_intra_prediction/cfgs_training/uvg/YachtRide_3840x2160.cfg
 create mode 100644 training/training_intra_prediction/dispatching_paths_to_raw.py
 create mode 100644 training/training_intra_prediction/generating_data_intra.py
 create mode 100644 training/training_intra_prediction/run_setups_vtm.sh
 create mode 100644 training/training_intra_prediction/training_nn_intra.py
 create mode 100644 training/training_intra_prediction/training_workflow.pdf

diff --git a/.gitignore b/.gitignore
index 8de22b3bb0..ef9af6c971 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 c8e195113e..175e5ad33c 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 976f544845..60beddecfa 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 0fc7d179c8..c899390c29 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 84af1ec888..ac38f4d453 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 58d4f9a6e4..027d4a3e58 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 2315e946ec..7dbb765f40 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 69d6bcf279..03f3e3cca1 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 0efa6935e5..b3b2f3e8c4 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 eb409f7ff1..8ba5c3cf29 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 62c09f67e0..5d59c2ab36 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 f448473ce3..262398f0a6 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 ab594c457c..a8c42e17eb 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 3e1a44b0e3..5d9dfee978 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 e3006c3e50..ca092fd80d 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 35b5e67815..68aabbc248 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 40a67e0002..f3bc207535 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 c70917b889..bfb61ba01b 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 ff4c6d12e7..6be1275f03 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 95e339fff0..10f8b8b4b3 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 72c951024f..f0002b90d6 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 4c0978a281..6db54c3455 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 ab3fc757ee..1009a1a0eb 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 8a6858fdf5..361d5875d0 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 f76f64ea23..98c98a7612 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 c87fbdc939..508a8191f2 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 0000000000..e01007feef
--- /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 0000000000..2eace88b19
--- /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 0000000000..8a81b9703f
--- /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 0000000000..42dca202a2
--- /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 0000000000..81bae3c522
--- /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 0000000000..a0fd275029
--- /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 0000000000..e964e7c556
--- /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 0000000000..b1a6ea44b1
--- /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 826813df83..fe745fc940 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 ab27eba411..6d9871e8df 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 35705a9914..5af7e4aaed 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 8789afadb4..ad87ae825d 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 b10d764e34..67eb276970 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 bd7a03f171..3c4e673400 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 29d923a874..21202e4f49 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 e4182ed12a..dbdb6f95f2 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 feb426be5c..016d0fad20 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 77f2e285e3..cea3f9d7d0 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 d2bd5f5693..609e63118a 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 ecd77be4d7..f6cc19ed03 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 03481b3f7e..2421b93953 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 babb8b516f..f9f828752c 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 18ae4e37dc..521d852dcb 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 0184888109..a8bbe8d3ba 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 ff9ba841d3..e6c7520e97 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 063ef8b3af..24c9c10946 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 f911e0fe2d..a3c273439f 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 8a30ccc5dd..cc26a7d615 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 bf2c470560..4140383623 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 0000000000..ef78d8173b
--- /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 0000000000..47be48e6d8
--- /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 0000000000..bf3146a84b
--- /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 0000000000..86302edf0c
--- /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 0000000000..c0a5bc57e6
--- /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 0000000000..c7429e0653
--- /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 0000000000..df4020c3ac
--- /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 0000000000..783ba84b15
--- /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 0000000000..9b826dc81b
--- /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 0000000000..e5e4c17274
--- /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 0000000000..811fb2b32a
--- /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 0000000000..42bf2f478b
--- /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 0000000000..a8d8724133
--- /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 0000000000..2408fd9a7f
--- /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 0000000000..8dc85a262f
--- /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 0000000000..195c218de5
--- /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 0000000000..06858e6924
--- /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 0000000000..ccd40b4469
--- /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 0000000000..be7de499db
--- /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 0000000000..c67c1cced5
--- /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 0000000000..73690dbba9
--- /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 0000000000..c41d515211
--- /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 0000000000..933bf2342c
--- /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 0000000000..01185ba8a1
--- /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 0000000000..acbd40c0d3
--- /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 0000000000..b945e836a7
--- /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 0000000000..80718555a7
--- /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 0000000000..4814fb0e5d
--- /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 0000000000..832acabe3d
--- /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 0000000000..15e6828b39
--- /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 0000000000..9b8647cded
--- /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 0000000000..e4cca5087d
--- /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 0000000000..eb4a88a64b
--- /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 0000000000..cd82aa20c9
--- /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 0000000000..3e05df55e8
--- /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 0000000000..2caec41f7f
--- /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 0000000000..c168592ed5
--- /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 0000000000..f5669dcf5f
--- /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 0000000000..ffbf8fd1ce
--- /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 0000000000..a4d1576fa2
--- /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 0000000000..e36dcd6740
--- /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 0000000000..a629e48427
--- /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 0000000000..f88b6dd9fb
--- /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 0000000000..0f4c8d0dbb
--- /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 0000000000..a2c7c6d544
--- /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 0000000000..0275f03fa3
--- /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 0000000000..a623464570
--- /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 0000000000..d94d372c8b
--- /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 0000000000..4d13f7c2a0
--- /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 0000000000..c030e9d81f
--- /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 0000000000..79d639d114
--- /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 0000000000..76b8d579c9
--- /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 0000000000..cf0eebc97b
--- /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 0000000000..1f4e4045aa
--- /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 0000000000..d9f9367fe0
--- /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 0000000000..bc0c6ceae0
--- /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 0000000000..e8ca4ac7dc
--- /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 0000000000..88f308e443
--- /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 0000000000..13e96047d2
--- /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 0000000000..47e5c10375
--- /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 0000000000..ea658bea8e
--- /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 0000000000..7762f2c9a5
--- /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 0000000000..06848226c9
--- /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 0000000000..5e625a5fc8
--- /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 0000000000..c89c04b693
--- /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 0000000000..418805ae29
--- /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 0000000000..c60db98e08
--- /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 0000000000..2bfbef71e2
--- /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 0000000000..6b06be3cc1
--- /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 0000000000..2329587b43
--- /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 0000000000..4ce5beb370
--- /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 0000000000..8d5bff0f4d
--- /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 0000000000..3428fb4508
--- /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 0000000000..1d399e4e58
--- /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 0000000000..4df18e49e8
--- /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 0000000000..c1bddf3614
--- /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 0000000000..06c2f56333
--- /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 0000000000..0149406031
--- /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 0000000000..b1c43f85a5
--- /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 0000000000..0f7fd32497
--- /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 0000000000..6c1dc41ef9
--- /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 0000000000..f682536823
--- /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 0000000000..66a14ee3b5
--- /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 0000000000..606eeb3c97
--- /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 0000000000..58a905d5d8
--- /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 0000000000..0a33623941
--- /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 0000000000..4c97eab5d0
--- /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 0000000000..1673a1c727
--- /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 0000000000..2d320ecb71
--- /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 0000000000..7ddd5b207e
--- /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 0000000000..04e3effbc8
--- /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 0000000000..fab4a2495d
--- /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 0000000000..301e9f0a7a
--- /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 0000000000..272ea1a739
--- /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 0000000000..1a1ea6f426
--- /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 0000000000..f64c02b4a9
--- /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 0000000000..2302fbdce2
--- /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 0000000000..df5e246888
--- /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 0000000000..1b611453fe
--- /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 0000000000..57d7f34c0f
--- /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 0000000000..1ce120351c
--- /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 0000000000..c73b0150d5
--- /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 0000000000..639a26182b
--- /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 0000000000..45c55d5286
--- /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 0000000000..08a9a0287b
--- /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 0000000000..8be3c94a0d
--- /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 0000000000..9386b47e1c
--- /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 0000000000..50e0ae0486
--- /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 0000000000..d529d3213c
--- /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 0000000000..af03153e50
--- /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 0000000000..80602aba82
--- /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 0000000000..8384f18f2a
--- /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 0000000000..83c0b06c9a
--- /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 0000000000..667ba2bba6
--- /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 0000000000..e95abac76f
--- /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 0000000000..cbdca8dced
--- /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 0000000000..1979fefce2
--- /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 0000000000..fb1d5922e4
--- /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 0000000000..94b641bbac
--- /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 0000000000..c0e3fd7194
--- /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 0000000000..a448726d11
--- /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 0000000000..7f51af241b
--- /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 0000000000..4c36e887d5
--- /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 0000000000..a2391f01fe
--- /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 0000000000..c4e3f4d8d7
--- /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 0000000000..c1591f26ff
--- /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 0000000000..a76b3f6dc6
--- /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 0000000000..61508b0199
--- /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 0000000000..040df24e1a
--- /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 0000000000..2b02ba5272
--- /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 0000000000..28540f1139
--- /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 0000000000..3d63847f85
--- /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 0000000000..ee8a2fdc91
--- /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 0000000000..7fceab98f0
--- /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 0000000000..a14e33ef7f
--- /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 0000000000..88ba7145cb
--- /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 0000000000..c7c52f6df2
--- /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 0000000000..ecfdd8dd14
--- /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 0000000000..843d763d57
--- /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 0000000000..f16776698b
--- /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 0000000000..e01cfd1b2c
--- /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 0000000000..0642c0a5c5
--- /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 0000000000..632bfdefcb
--- /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 0000000000..bbe0440ec2
--- /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 0000000000..7d0cd49e3c
--- /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 0000000000..f10bad13e9
--- /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 0000000000..aa32817cda
--- /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 0000000000..a78a33c91c
--- /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 0000000000..391742e233
--- /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 0000000000..99221034a6
--- /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 0000000000..78f5e2966c
--- /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 0000000000..4512561e0c
--- /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 0000000000..872b6541ee
--- /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 0000000000..955c1238b7
--- /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 0000000000..0b2f57409c
--- /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 0000000000..971b2f9256
--- /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 0000000000..44015f560c
--- /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 0000000000..85cc6df936
--- /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 0000000000..6c8cd84652
--- /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 0000000000..e7772d6a39
--- /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 0000000000..7fee3d520e
--- /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 0000000000..1112a5f08a
--- /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 0000000000..470041d115
--- /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 0000000000..4558265241
--- /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 0000000000..8de22a6005
--- /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 0000000000..86ffa6f95a
--- /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 0000000000..7c2a6553b6
--- /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 0000000000..59428fa135
--- /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 0000000000..a8118ca894
--- /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 0000000000..125b1af788
--- /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 0000000000..3a2a699946
--- /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 0000000000..474f79665c
--- /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 0000000000..b5691f1aa8
--- /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 0000000000..17128735e5
--- /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 0000000000..2bfd065a45
--- /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 0000000000..7d31f0d586
--- /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 0000000000..8595e46a70
--- /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 0000000000..255b387aaa
--- /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 0000000000..f18d32b61b
--- /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 0000000000..d95707969c
--- /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 0000000000..ec58f89694
--- /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 0000000000..9cf80606fc
--- /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 0000000000..1ce7ccb362
--- /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 0000000000..a0b7d5ab33
--- /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 0000000000..52dda699c3
--- /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 0000000000..4f5b7c8d1f
--- /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 0000000000..70d2e96b6c
--- /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 0000000000..9955117269
--- /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 0000000000..49b512c933
--- /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 0000000000..005829df76
--- /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 0000000000..f08a6e0734
--- /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 0000000000..fbdd1c7f5b
--- /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 0000000000..a07f9788bb
--- /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 0000000000..1263b609e1
--- /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 0000000000..db10039137
--- /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 0000000000..96364a9fa0
--- /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 0000000000..b7729cac72
--- /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 0000000000..dd1311809a
--- /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 0000000000..3e7b04fe18
--- /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 0000000000..4ab70c3862
--- /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 0000000000..7cec42cc24
--- /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 0000000000..7f47fdf14a
--- /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 0000000000..c245d44871
--- /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 0000000000..5cbad73940
--- /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 0000000000..46a53f2545
--- /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 0000000000..834d181920
--- /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 0000000000..7c84c9c67e
--- /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 0000000000..c09af8a17f
--- /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 0000000000..72a978e9ff
--- /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 0000000000..6a091cec68
--- /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 0000000000..f3999ea7d6
--- /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 0000000000..d9ccd198ac
--- /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 0000000000..1216901ecf
--- /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 0000000000..8f73ffc8f6
--- /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 0000000000..06cd2a6413
--- /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 0000000000..d179a81409
--- /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 0000000000..3224531fc0
--- /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 0000000000..8c8c06bb8b
--- /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 0000000000..89e0c97b69
--- /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 0000000000..6fc3dd5592
--- /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 0000000000..66a27ecd06
--- /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 0000000000..2d16264cbc
--- /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 0000000000..5f551009a8
--- /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 0000000000..44d6a936e5
--- /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 0000000000..32cfb2c3f3
--- /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 0000000000..0dca7e62f3
--- /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 0000000000..27b1636584
--- /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 0000000000..c63fa963a6
--- /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 0000000000..43b2779ede
--- /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 0000000000..2c34d12f31
--- /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 0000000000..2e8d8fb77d
--- /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 0000000000..1a4ce212fc
--- /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 0000000000..f3161e45bc
--- /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 0000000000..fd044dcc69
--- /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 0000000000..79dc100852
--- /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 0000000000..911c59a8b1
--- /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 0000000000..da56ccc7b1
--- /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 0000000000..b377635b5b
--- /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 0000000000..cb7fb17103
--- /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 0000000000..6d25be0608
--- /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 0000000000..6a9ff74244
--- /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 0000000000..df23f0e02f
--- /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 0000000000..f3a2ca21d4
--- /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 0000000000..3ff400cdbe
--- /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 0000000000..7ed739fb74
--- /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 0000000000..b6ff5f981b
--- /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 0000000000..59573e7635
--- /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 0000000000..da68650e20
--- /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 0000000000..455710e90e
--- /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 0000000000..5a353ad20d
--- /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 0000000000..714630943f
--- /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 0000000000..89d9c865dd
--- /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 0000000000..9d6aec42ee
--- /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 0000000000..6527cec7db
--- /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 0000000000..a0908ebc9c
--- /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 0000000000..62454c6ab0
--- /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 0000000000..e41da3a67f
--- /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 0000000000..33ca5b31d2
--- /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 0000000000..b2d669ac9f
--- /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 0000000000..f198b996c0
--- /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 0000000000..35e9d3096a
--- /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 0000000000..a81df624bc
--- /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 0000000000..028fb392c6
--- /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 0000000000..8e87d37ee9
--- /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 0000000000..aa07c30f53
--- /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 0000000000..1624be1e34
--- /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 0000000000..1adaae1ec6
--- /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 0000000000..7bb03fed9b
--- /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 0000000000..c7ea042187
--- /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 0000000000..e0b7031b7b
--- /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 0000000000..140daa00df
--- /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 0000000000..1624bb8bb5
--- /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 0000000000..9cbcd022e6
--- /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 0000000000..5db7ae813b
--- /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 0000000000..24548acf50
--- /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 0000000000..cac1fed4de
--- /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 0000000000..323216301b
--- /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 0000000000..c25487836e
--- /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 0000000000..d4db52fa3f
--- /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 0000000000..d9b3b1e9e9
--- /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 0000000000..2ebec0491e
--- /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 0000000000..78a917e952
--- /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 0000000000..6ea8e6f1b5
--- /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 0000000000..afcb2352e6
--- /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 0000000000..57c1ded699
--- /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 0000000000..d02992ab9d
--- /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 0000000000..d457492ea4
--- /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 0000000000..7d95ae7173
--- /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 0000000000..355ebe65a3
--- /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 0000000000..6f82766415
--- /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 0000000000..4c4964a8a3
--- /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 0000000000..d3700b1577
--- /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 0000000000..d0fd58f063
--- /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 0000000000..12d38ad8d6
--- /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 0000000000..fc7723a0a3
--- /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 0000000000..c6f9a3ba9f
--- /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 0000000000..7149015b0e
--- /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 0000000000..954e5a3d65
--- /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 0000000000..f78b443404
--- /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 0000000000..cad9888a9d
--- /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 0000000000..1bb0c72ac8
--- /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 0000000000..df7b5e40cb
--- /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 0000000000..f2455f65cf
--- /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 0000000000..33577f3b46
--- /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 0000000000..ad94890710
--- /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 0000000000..190c35cb7f
--- /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 0000000000..630e6e7018
--- /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 0000000000..3d4704700f
--- /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 0000000000..069d2dce1c
--- /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 0000000000..3359288d14
--- /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 0000000000..25c6c6356c
--- /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 0000000000..25e4bd1301
--- /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 0000000000..e1fd587ce3
--- /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 0000000000..a55325a95f
--- /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 0000000000..cc943486d0
--- /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 0000000000..c0dedd6502
--- /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 0000000000..1d8bc5efd0
--- /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 0000000000..47aa9e2134
--- /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 0000000000..ce49df1827
--- /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 0000000000..e9fe753363
--- /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 0000000000..db58837c8d
--- /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 0000000000..0267d3cdfd
--- /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 0000000000..dfc6060fc5
--- /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 0000000000..54fc8d759a
--- /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 0000000000..c49d69a24a
--- /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 0000000000..b7495e2984
--- /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 0000000000..9b213f5f4b
--- /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 0000000000..ad9732f07c
--- /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 0000000000..53209b7232
--- /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 0000000000..2a0bf99cde
--- /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 0000000000..3629091769
--- /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 0000000000..475f101cda
--- /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 0000000000..d7c19617a8
--- /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 0000000000..5b1314590b
--- /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 0000000000..77d9ef9822
--- /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 0000000000..2ef4e2a05e
--- /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 0000000000..cc0af4bbcd
--- /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 0000000000..4d1784980c
--- /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 0000000000..bcbaafeb3d
--- /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 0000000000..962736ae0a
--- /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 0000000000..2f2ab27836
--- /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 0000000000..e3d8b83c55
--- /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 0000000000..a9368faf29
--- /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 0000000000..4c392dfcde
--- /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 0000000000..cee67800c2
--- /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 0000000000..baffe3f868
--- /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 0000000000..34ccaf0e2a
--- /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 0000000000..d775fd7479
--- /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 0000000000..741224bb70
--- /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 0000000000..ba315fae96
--- /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 0000000000..e0df8cee8d
--- /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 0000000000..7b971f63c4
--- /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 0000000000..b4a7a5a344
--- /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 0000000000..c314418674
--- /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 0000000000..1ba888084e
--- /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 0000000000..75a71ebc28
--- /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 0000000000..f0ab62cde1
--- /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 0000000000..a1a64dfb14
--- /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 0000000000..c9c4bc4c1b
--- /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 0000000000..bebd7eb604
--- /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 0000000000..c922089376
--- /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 0000000000..61b6cb6891
--- /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 0000000000..142e7b9f33
--- /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 0000000000..e631cca3d8
--- /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 0000000000..d421dbad08
--- /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 0000000000..3f9f992306
--- /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 0000000000..95fb6fdc71
--- /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 0000000000..397435f6fb
--- /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 0000000000..687c4278f1
--- /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 0000000000..7c05ee9298
--- /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 0000000000..967f854a0d
--- /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 0000000000..b4257e4b66
--- /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 0000000000..9d72bef7dc
--- /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 0000000000..0cfc454011
--- /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 0000000000..8a445d698e
--- /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 0000000000..452ea48f5d
--- /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 0000000000..ccff09d70d
--- /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 0000000000..469c7014a4
--- /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 0000000000..588b161a22
--- /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 0000000000..ce8867a44f
--- /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 0000000000..feb8d62576
--- /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 0000000000..29c212286a
--- /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 0000000000..d47967bb8b
--- /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 0000000000..403386950e
--- /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 0000000000..24f6efddef
--- /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 0000000000..886719bfed
--- /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 0000000000..bb33815e64
--- /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 0000000000..418acdf95b
--- /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 0000000000..b5ce4e0d63
--- /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 0000000000..9adc659247
--- /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 0000000000..8cb1c45820
--- /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 0000000000..1bff67cf7b
--- /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 0000000000..4b78f43294
--- /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 0000000000..8e579b91c0
--- /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 0000000000..3996c68143
--- /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 0000000000..be30f80249
--- /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 0000000000..fa364af547
--- /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 0000000000..2b61b7d80d
--- /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 0000000000..3102253be9
--- /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 0000000000..01fea93941
--- /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 0000000000..b09460b8c9
--- /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 0000000000..b739489744
--- /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 0000000000..0638825922
--- /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 0000000000..4fcdbd9b60
--- /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 0000000000..bdb97197aa
--- /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 0000000000..677ea67f0a
--- /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 0000000000..880a2191ac
--- /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 0000000000..19c5f5f0e5
--- /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 0000000000..72812c23b1
--- /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 0000000000..4e37137aae
--- /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 0000000000..406b18e0ee
--- /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 0000000000..a4ea932cdd
--- /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 0000000000..2184106ebf
--- /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 0000000000..c89d46a341
--- /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 0000000000..df4bbe731e
--- /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 0000000000..36e84a62c1
--- /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 0000000000..47a95de2c2
--- /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 0000000000..0b1f0119ff
--- /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 0000000000..5e3c6aeaea
--- /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 0000000000..3f16f31ffa
--- /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 0000000000..f2d6e625f2
--- /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 0000000000..950801be4b
--- /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 0000000000..e9bef49966
--- /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 0000000000..e96c00f1ae
--- /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 0000000000..4a415c5c54
--- /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 0000000000..e0497d4d89
--- /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 0000000000..f710b8b79d
--- /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 0000000000..f2d139eae5
--- /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 0000000000..bb24752eec
--- /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 0000000000..77b0bbba64
--- /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 0000000000..76d290cde1
--- /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 0000000000..3192c035e6
--- /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 0000000000..fe94b05e8f
--- /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 0000000000..c95b83e055
--- /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 0000000000..ac592bb7cd
--- /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 0000000000..43103a070f
--- /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 0000000000..b18e75f321
--- /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 0000000000..0390b93f48
--- /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 0000000000..2334c7c3b6
--- /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 0000000000..ac3d8a7e40
--- /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 0000000000..9a55a2fd0d
--- /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 0000000000..78defae656
--- /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 0000000000..793b72c5b6
--- /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 0000000000..1423f20a4d
--- /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 0000000000..1595e5569e
--- /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 0000000000..1b7102022e
--- /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 0000000000..a49f70f89c
--- /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 0000000000..998f116e75
--- /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 0000000000..4499164bea
--- /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 0000000000..a31f686fbd
--- /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 0000000000..f340cc1b9a
--- /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 0000000000..d5eb300f1b
--- /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 0000000000..372f02fb3f
--- /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 0000000000..8e77af5790
--- /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 0000000000..ef174a8997
--- /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 0000000000..b56e9c77ba
--- /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 0000000000..456d22ebe1
--- /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 0000000000..3ae527db1d
--- /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 0000000000..6e053f9f3f
--- /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 0000000000..bd5ff1ce1d
--- /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 0000000000..0a5361c568
--- /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 0000000000..e5be29c30f
--- /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 0000000000..31a471ac55
--- /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 0000000000..5fb91d9683
--- /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 0000000000..e4a0ab5f73
--- /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 0000000000..73a2caa792
--- /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 0000000000..997bb9143b
--- /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 0000000000..35a715366b
--- /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 0000000000..c47287ecf3
--- /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 0000000000..ede1b336f5
--- /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 0000000000..9bde4dbe30
--- /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 0000000000..4dc89c42df
--- /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 0000000000..9ce23ac805
--- /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 0000000000..04ef1915a7
--- /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 0000000000..c3bf01d3e2
--- /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 0000000000..08f525d08a
--- /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 0000000000..73a70b40ed
--- /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 0000000000..604ab71b39
--- /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 0000000000..1dcca65ac7
--- /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 0000000000..95fe7b165b
--- /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 0000000000..9e0d67add8
--- /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 0000000000..ec952a7b7f
--- /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 0000000000..3f3f4aaf43
--- /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 0000000000..c3acfbff4f
--- /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 0000000000..cf81a1ceb4
--- /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 0000000000..1c5dae6023
--- /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 0000000000..3e7f36d2d6
--- /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 0000000000..bdcb0b793e
--- /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 0000000000..491f379ca6
--- /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 0000000000..72b9f58dd2
--- /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 0000000000..78679b9f1e
--- /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 0000000000..570ed15ac3
--- /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 0000000000..7b00ed4ecd
--- /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 0000000000..22743fb44a
--- /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 0000000000..9bb2a85242
--- /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 0000000000..97c3c11f83
--- /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 0000000000..45ffa235cd
--- /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 0000000000..3a4e3a013a
--- /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 0000000000..84a0fcb938
--- /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 0000000000..3a1f612c19
--- /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 0000000000..011603b975
--- /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 0000000000..e8e0294ac0
--- /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 0000000000..527624ef15
--- /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 0000000000..7b454bb59e
--- /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 0000000000..2f6b5833fc
--- /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 0000000000..7fcb983698
--- /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 0000000000..9631081abc
--- /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 0000000000..9c6644d01c
--- /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 0000000000..f166ddafec
--- /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 0000000000..c21b16c435
--- /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 0000000000..fb33ce1ba4
--- /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 0000000000..7917d39644
--- /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 0000000000..b9cd514dba
--- /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 0000000000..45a841a7c9
--- /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 0000000000..0af9ae3e28
--- /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 0000000000..04f0ccf9b5
--- /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 0000000000..d7a7e49d87
--- /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 0000000000..396a955649
--- /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 0000000000..b9106593ab
--- /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 0000000000..2abe1237e1
--- /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 0000000000..b21ff901ba
--- /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 0000000000..5ab83b8e48
--- /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 0000000000..d3a218d0ec
--- /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 0000000000..3dd03f7d40
--- /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 0000000000..f09a440a0c
--- /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 0000000000..0c91570c45
--- /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 0000000000..862fd4f90a
--- /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 0000000000..1828b6077f
--- /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 0000000000..26d6b69467
--- /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 0000000000..70fe36406f
--- /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 0000000000..910bbdf52d
--- /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 0000000000..c6dbd48356
--- /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 0000000000..4899f1a599
--- /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 0000000000..85db2d8060
--- /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 0000000000..675020bb39
--- /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 0000000000..c381cfb0c6
--- /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 0000000000..2214f43646
--- /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 0000000000..1735d93905
--- /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 0000000000..2d12782bdf
--- /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 0000000000..fb860c8604
--- /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 0000000000..f0070642c6
--- /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 0000000000..de1704e69c
--- /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 0000000000..8b3ea21858
--- /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 0000000000..29ad24f32e
--- /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 0000000000..ac83150200
--- /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 0000000000..160fc97466
--- /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 0000000000..fbf7d5a854
--- /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 0000000000..06c53e4a06
--- /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 0000000000..0c627ba0a7
--- /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 0000000000..88add97790
--- /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 0000000000..a515a586f3
--- /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 0000000000..54348ed9b6
--- /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 0000000000..397627056d
--- /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 0000000000..55ed87e166
--- /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 0000000000..24c874a7c2
--- /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 0000000000..4de47423bd
--- /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 0000000000..6ae52d4aa0
--- /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 0000000000..3a3dc56abe
--- /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 0000000000..fd7fd2b563
--- /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 0000000000..9c2b5fb983
--- /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 0000000000..42a05e72d5
--- /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 0000000000..dacc3f0859
--- /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 0000000000..781932d7d0
--- /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 0000000000..fc3e29d59e
--- /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 0000000000..57f6748fde
--- /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 0000000000..f80fcc8ef6
--- /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 0000000000..5771138bd7
--- /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 0000000000..7c24913186
--- /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 0000000000..94bf641bf3
--- /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 0000000000..257fa03323
--- /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 0000000000..998c8df2e1
--- /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 0000000000..1289ec9de5
--- /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 0000000000..584c9746bd
--- /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 0000000000..caf703a77c
--- /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 0000000000..3d218f4ab4
--- /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 0000000000..793aada1c3
--- /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 0000000000..cf55033c5e
--- /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 0000000000..e04de21c22
--- /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 0000000000..c35730b1b7
--- /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 0000000000..fb057d752c
--- /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 0000000000..57f76aa148
--- /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 0000000000..6a594c2bb9
--- /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 0000000000..9be1ee2796
--- /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 0000000000..7a6aead688
--- /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 0000000000..a014a4274e
--- /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 0000000000..c72cd2cfa5
--- /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 0000000000..b2bc6b2871
--- /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 0000000000..e9f5cae5da
--- /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 0000000000..2af37bc5d6
--- /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 0000000000..cc83cd0095
--- /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 0000000000..a633de2094
--- /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 0000000000..a38895177a
--- /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 0000000000..7c798c574b
--- /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 0000000000..cb02c6206d
--- /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 0000000000..51ad0f7d25
--- /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 0000000000..bd911c1ce9
--- /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 0000000000..680041d79b
--- /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 0000000000..8ffb17ec66
--- /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 0000000000..2d216013f1
--- /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 0000000000..cc31bcad50
--- /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 0000000000..d84a9efb4f
--- /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 0000000000..0d0e5a7b63
--- /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 0000000000..279fb16eeb
--- /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 0000000000..d4aa5f1f19
--- /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 0000000000..9a0f4e4e55
--- /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 0000000000..de0a972dd8
--- /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 0000000000..eeeb49b8b6
--- /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 0000000000..d3361a8ca4
--- /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 0000000000..b53d0b19f4
--- /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 0000000000..98fed945f7
--- /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 0000000000..e767be91fd
--- /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 0000000000..61f76e938a
--- /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 0000000000..4a35ed7573
--- /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 0000000000..09df784f06
--- /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 0000000000..136878c32a
--- /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 0000000000..0a518ed747
--- /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 0000000000..936fbdf191
--- /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 0000000000..ea09d073ad
--- /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 0000000000..27f4b63b04
--- /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 0000000000..6458a19d40
--- /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 0000000000..4cf196e2e3
--- /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 0000000000..89fe7cd34c
--- /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 0000000000..57bae7d930
--- /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 0000000000..538fa98101
--- /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 0000000000..a584d54f21
--- /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 0000000000..d1c30fc527
--- /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 0000000000..7c3fdfc7a1
--- /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 0000000000..f91c1b9a1d
--- /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 0000000000..8e6b8d9eb8
--- /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 0000000000..c7f77339fb
--- /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 0000000000..c45e1fa6bd
--- /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 0000000000..37f3bd74a0
--- /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 0000000000..2b57d110a8
--- /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 0000000000..254c765485
--- /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 0000000000..c10039571b
--- /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 0000000000..0e6b1946c5
--- /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 0000000000..663b6a496e
--- /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 0000000000..3b97ca6469
--- /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 0000000000..d7f9fe0e9f
--- /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 0000000000..091c277ddf
--- /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 0000000000..6b3a8d3ec0
--- /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 0000000000..e2ee135ddf
--- /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 0000000000..80e11efeae
--- /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 0000000000..f5470a9a88
--- /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 0000000000..4c7f152f34
--- /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 0000000000..8affd75360
--- /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 0000000000..a2d8b0db7b
--- /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 0000000000..b2d04f803c
--- /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 0000000000..63287d02f6
--- /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 0000000000..60195807d5
--- /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 0000000000..ab381277f7
--- /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 0000000000..1a6ba2876e
--- /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 0000000000..c6fbd861cc
--- /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 0000000000..ad11c50574
--- /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 0000000000..1dbbdf4b58
--- /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 0000000000..def4b347a6
--- /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 0000000000..6d038206ac
--- /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 0000000000..854eccc749
--- /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 0000000000..37bbda8d3d
--- /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 0000000000..5d89e6ba56
--- /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 0000000000..8d90168e5a
--- /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 0000000000..e0b6b434de
--- /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 0000000000..1f3ce661dc
--- /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 0000000000..05d6dcde4e
--- /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 0000000000..3b4dbd970b
--- /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 0000000000..24d2cd42cc
--- /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 0000000000..c035242caa
--- /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 0000000000..53beb6a0d1
--- /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 0000000000..80f56c8936
--- /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 0000000000..b4522e8fb3
--- /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 0000000000..9e46b2d111
--- /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 0000000000..4a2a7254d0
--- /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 0000000000..e3c096aee2
--- /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 0000000000..8e5a0df60c
--- /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 0000000000..75ded72a54
--- /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 0000000000..55e13b3ea6
--- /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 0000000000..7aa51a1ee4
--- /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 0000000000..07ab109614
--- /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 0000000000..390c1d8471
--- /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 0000000000..5bbf73b497
--- /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 0000000000..156fca634d
--- /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 0000000000..ab99ecbf12
--- /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 0000000000..6ca6f040dc
--- /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 0000000000..311ebc42ae
--- /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 0000000000..f040840c4e
--- /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 0000000000..2ffccbafc2
--- /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 0000000000..0da23ff980
--- /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 0000000000..a0561b8736
--- /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 0000000000..39f9f16d2b
--- /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 0000000000..f8db252cb1
--- /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 0000000000..292b0af979
--- /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 0000000000..56e5bb15f6
--- /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 0000000000..8358aa5d81
--- /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 0000000000..453d4a81e8
--- /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 0000000000..b529774f28
--- /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 0000000000..5acd49bfc1
--- /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 0000000000..ba1366bf2e
--- /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 0000000000..aec2fe063a
--- /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 0000000000..ce910792b1
--- /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 0000000000..aac1136517
--- /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 0000000000..91c64bbd9a
--- /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 0000000000..8d04c231b4
--- /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 0000000000..e7b0fa886d
--- /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 0000000000..2c11cd5a5e
--- /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 0000000000..37320cc657
--- /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 0000000000..63c459725e
--- /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 0000000000..0df8771b4d
--- /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 0000000000..143916612a
--- /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 0000000000..161c0ce96f
--- /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 0000000000..278a2236f5
--- /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 0000000000..9245af2bb2
--- /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 0000000000..89b1bf75c5
--- /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 0000000000..cb6253016e
--- /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 0000000000..88db4dd6c6
--- /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 0000000000..22048849c2
--- /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 0000000000..370e368df8
--- /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 0000000000..cc761b2b41
--- /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 0000000000..651e1997e4
--- /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 0000000000..11aff1e2aa
--- /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 0000000000..c3f533e1ac
--- /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 0000000000..950b796382
--- /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 0000000000..6d0612fea1
--- /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 0000000000..1a78b44814
--- /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 0000000000..8ef2cfd6b7
--- /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 0000000000..3ce3e2b756
--- /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 0000000000..37401b04e8
--- /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 0000000000..93df73bf17
--- /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 0000000000..5b76ef1d29
--- /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 0000000000..b214d76277
--- /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 0000000000..f08021cf43
--- /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 0000000000..4da3183324
--- /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 0000000000..73c258e4b3
--- /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 0000000000..5525c95212
--- /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 0000000000..1e0c96e77e
--- /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 0000000000..c969ad347f
--- /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 0000000000..8f7726081a
--- /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 0000000000..7451f9166a
--- /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 0000000000..f4d63ea582
--- /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 0000000000..d245b13308
--- /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 0000000000..ad8f7f26c1
--- /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 0000000000..8cb266ece2
--- /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 0000000000..414f156fcb
--- /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 0000000000..d166316208
--- /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 0000000000..9ac09b1799
--- /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 0000000000..bafc8c7c55
--- /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 0000000000..851eae90c8
--- /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 0000000000..c7190ac619
--- /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 0000000000..25cc6dba9e
--- /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 0000000000..bbec1a2a3a
--- /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 0000000000..dc37d7fbea
--- /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 0000000000..ec60e12566
--- /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 0000000000..055a097657
--- /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 0000000000..e84cc0b7ac
--- /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 0000000000..3d17e74976
--- /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 0000000000..8f698823cb
--- /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 0000000000..99cab0da42
--- /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 0000000000..87ece2219d
--- /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 0000000000..3ae53cf88b
--- /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 0000000000..bb92507260
--- /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 0000000000..bf1198db99
--- /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 0000000000..2edd9aa2a4
--- /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 0000000000..d0ad1a248b
--- /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 0000000000..26bcd1987d
--- /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 0000000000..d824454662
--- /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 0000000000..513bf9f4a6
--- /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 0000000000..7c82684437
--- /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 0000000000..df8271f4c0
--- /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 0000000000..a3455f4dfb
--- /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 0000000000..638268feec
--- /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 0000000000..e6b841d799
--- /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 0000000000..22adb6ba7d
--- /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 0000000000..047935ae2d
--- /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 0000000000..e4ac13aae9
--- /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 0000000000..4c54e5bebf
--- /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 0000000000..035cc6b84c
--- /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 0000000000..717ba0aa41
--- /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 0000000000..9e395b81f3
--- /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 0000000000..186919b18a
--- /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 0000000000..8e11bd4f49
--- /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 0000000000..10be49a6d5
--- /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 0000000000..e901c095d9
--- /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 0000000000..3ad637a20c
--- /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 0000000000..96528e5da8
--- /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 0000000000..fefbe76446
--- /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 0000000000..3cb774c4c8
--- /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 0000000000..dc997e63ee
--- /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 0000000000..5a6bd4c8ea
--- /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 0000000000..ccd978ac65
--- /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 0000000000..3fefe6c5d7
--- /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 0000000000..421e4968b2
--- /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 0000000000..c467d0cfad
--- /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 0000000000..69315bcf94
--- /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 0000000000..beeb88e5b9
--- /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 0000000000..324f097683
--- /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 0000000000..bed7fb7ce9
--- /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 0000000000..12c01deabe
--- /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 0000000000..aa618b2777
--- /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 0000000000..d1f9df3d2d
--- /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 0000000000..56d281b174
--- /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 0000000000..c1a41a6c72
--- /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 0000000000..76776070f2
--- /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 0000000000..f06e8aeb6b
--- /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 0000000000..8f0058e3c3
--- /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 0000000000..3b550fa3de
--- /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 0000000000..c59010407a
--- /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 0000000000..aaca66ea01
--- /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 0000000000..410cb329aa
--- /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 0000000000..bd05a8bbef
--- /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 0000000000..d6eeeebfc2
--- /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 0000000000..c63de03473
--- /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 0000000000..ab11f9d933
--- /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 0000000000..6cf20f416d
--- /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 0000000000..52bc711d31
--- /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 0000000000..a7edd2b19d
--- /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 0000000000..1e44846667
--- /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 0000000000..b74452e93d
--- /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 0000000000..67c8f9c7fa
--- /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 0000000000..79d2dfb55f
--- /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 0000000000..1e27461e22
--- /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 0000000000..d9cc01cff9
--- /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 0000000000..4988fe53a6
--- /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 0000000000..b711e3a775
--- /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 0000000000..7ae0c7db62
--- /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 0000000000..02e48b4932
--- /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 0000000000..86bb639a47
--- /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 0000000000..a45dbf8f23
--- /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 0000000000..c6e564911c
--- /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 0000000000..5849393e00
--- /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 0000000000..ba5004d55d
--- /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 0000000000..84a5d45e4c
--- /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 0000000000..5008ed9b74
--- /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 0000000000..707d5d50d9
--- /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 0000000000..520ed92982
--- /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 0000000000..10de8d0ef1
--- /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 0000000000..fa5d577bd6
--- /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 0000000000..b85c50377f
--- /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 0000000000..1e8f6e4426
--- /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 0000000000..dfe84df5e9
--- /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 0000000000..18a5d039c9
--- /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 0000000000..11022cc6d2
--- /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 0000000000..c559f236dc
--- /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 0000000000..66556d47d5
--- /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 0000000000..1172a5984e
--- /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 0000000000..a122525f10
--- /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 0000000000..924d584859
--- /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 0000000000..f524fe182d
--- /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 0000000000..c83752e95a
--- /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 0000000000..d3328ee095
--- /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 0000000000..1d470c05cc
--- /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 0000000000..54e759f227
--- /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 0000000000..390bbb6288
--- /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 0000000000..e134c8e177
--- /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 0000000000..209e832db0
--- /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 0000000000..99d15fdd8b
--- /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 0000000000..e2e5cad5b1
--- /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 0000000000..76251fda7c
--- /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 0000000000..61c3f1a13d
--- /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 0000000000..4b530f9f43
--- /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 0000000000..ca0fc11638
--- /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 0000000000..6a11c31ac8
--- /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 0000000000..1ce3539998
--- /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 0000000000..02578df5f5
--- /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 0000000000..52b1a34904
--- /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 0000000000..846f9a80a5
--- /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 0000000000..1ed10c421c
--- /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 0000000000..407736f020
--- /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 0000000000..62d0f7a75f
--- /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 0000000000..c09cdda741
--- /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 0000000000..9d8b9ac59b
--- /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 0000000000..6edcd2f917
--- /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 0000000000..dacfafda66
--- /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 0000000000..412bb94301
--- /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 0000000000..232d6cbb13
--- /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 0000000000..0870d475a9
--- /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 0000000000..7e9b17912a
--- /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 0000000000..c633de3555
--- /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 0000000000..ad4b626de0
--- /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 0000000000..1a38767d5d
--- /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 0000000000..081bb0b7c8
--- /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 0000000000..da348220ef
--- /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 0000000000..4be34b670f
--- /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 0000000000..1b3518b52f
--- /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 0000000000..a02876c214
--- /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 0000000000..9920dfdcb6
--- /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 0000000000..ea2e08ff06
--- /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 0000000000..f0b0d99f95
--- /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 0000000000..69b0e87841
--- /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 0000000000..bab1302988
--- /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 0000000000..e7c70c995a
--- /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 0000000000..92201d65f1
--- /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 0000000000..0639e1ebc3
--- /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 0000000000..91672002a8
--- /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 0000000000..a57569340a
--- /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 0000000000..98cd4eb275
--- /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 0000000000..c8f75e9b7a
--- /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 0000000000..83d034977d
--- /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 0000000000..8eb084a7de
--- /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 0000000000..b8160b23b1
--- /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 0000000000..ab00641548
--- /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 0000000000..4bf126b8d7
--- /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 0000000000..5e4f2ba8ae
--- /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 0000000000..30889f60ef
--- /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 0000000000..073e5cdebc
--- /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 0000000000..bc773aa395
--- /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 0000000000..8edee3080c
--- /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 0000000000..df12322700
--- /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 0000000000..5434c9aa94
--- /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 0000000000..bd62242607
--- /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 0000000000..57e7ace18e
--- /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 0000000000..ffbcade982
--- /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 0000000000..d5dd243a2e
--- /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 0000000000..b30e13c7ce
--- /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 0000000000..53a71c404f
--- /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 0000000000..ce5a61fe83
--- /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 0000000000..83d7af5a00
--- /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
GIT binary patch
literal 136624
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

literal 0
HcmV?d00001

-- 
GitLab