diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg
index fb8fdd7d157e01960768fffd140a2eef64b079a1..9fe357d1596f37aeba8ab80ed6d11d684720bbc9 100644
--- a/cfg/encoder_intra_vtm.cfg
+++ b/cfg/encoder_intra_vtm.cfg
@@ -110,14 +110,15 @@ LMChroma                     : 1      # use CCLM only
 DepQuant                     : 1
 IMV                          : 1
 ALF                          : 1
-IBC                          : 0      # turned off in CTC 
+IBC                          : 0      # turned off in CTC
 AllowDisFracMMVD             : 1
 AffineAmvr                   : 0
 LMCSEnable                   : 1      # LMCS: 0: disable, 1:enable
 LMCSSignalType               : 0      # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
 LMCSUpdateCtrl               : 1      # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
 MIP                          : 1
-JointCbCr                    : 1      # JointCbCr: 0: disable, 1: enable
+JointCbCr                    : 1      # joint coding of chroma residuals (if available): 0: disable, 1: enable
+
 # Fast tools
 PBIntraFast                  : 1
 ISPFast                      : 1
diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg
index 3fb15fda80aa4cda87b11573ce79a3b7bea4562c..9f5e3eeb2d02580acd71fc8bf67eecedb54a859f 100644
--- a/cfg/encoder_lowdelay_P_vtm.cfg
+++ b/cfg/encoder_lowdelay_P_vtm.cfg
@@ -132,7 +132,7 @@ LMCSEnable                   : 1      # LMCS: 0: disable, 1:enable
 LMCSSignalType               : 0      # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
 LMCSUpdateCtrl               : 2      # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
 MIP                          : 1
-JointCbCr                    : 1      # JointCbCr: 0: disable, 1: enable
+JointCbCr                    : 1      # joint coding of chroma residuals (if available): 0: disable, 1: enable
 PROF                         : 1
 
 # Fast tools
diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg
index 518d2506f162ea6c05c48614ea15f841ec85749c..9cb4f366ce7d53ca0347049ead1ee031bf747cd2 100644
--- a/cfg/encoder_lowdelay_vtm.cfg
+++ b/cfg/encoder_lowdelay_vtm.cfg
@@ -125,8 +125,8 @@ LMChroma                     : 1      # use CCLM only
 DepQuant                     : 1
 IMV                          : 1
 ALF                          : 1
-GBi                          : 1 
-GBiFast                      : 1 
+GBi                          : 1
+GBiFast                      : 1
 MHIntra                      : 1
 Triangle                     : 1
 IBC                          : 0      # turned off in CTC
@@ -136,7 +136,7 @@ LMCSEnable                   : 1      # LMCS: 0: disable, 1:enable
 LMCSSignalType               : 0      # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
 LMCSUpdateCtrl               : 2      # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
 MIP                          : 1
-JointCbCr                    : 1      # JointCbCr: 0: disable, 1: enable
+JointCbCr                    : 1      # joint coding of chroma residuals (if available): 0: disable, 1: enable
 PROF                         : 1
 
 # Fast tools
diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg
index f651f78b32351bcf8c4c350a03a3b4f9f303f7c5..c882cf980d698a6e1583a4a39addd437a7233b04 100644
--- a/cfg/encoder_randomaccess_vtm.cfg
+++ b/cfg/encoder_randomaccess_vtm.cfg
@@ -140,9 +140,9 @@ LMChroma                     : 1      # use CCLM only
 DepQuant                     : 1
 IMV                          : 1
 ALF                          : 1
-GBi                          : 1 
+GBi                          : 1
 GBiFast                      : 1
-BIO                          : 1 
+BIO                          : 1
 MHIntra                      : 1
 Triangle                     : 1
 IBC                          : 0      # turned off in CTC
@@ -154,7 +154,7 @@ LMCSUpdateCtrl               : 0      # LMCS model update control: 0:RA, 1:AI, 2
 MIP                          : 1
 DMVR                         : 1
 SMVD                         : 1
-JointCbCr                    : 1      # JointCbCr: 0: disable, 1: enable
+JointCbCr                    : 1      # joint coding of chroma residuals (if available): 0: disable, 1: enable
 PROF                         : 1
 
 # Fast tools
diff --git a/doc/software-manual.tex b/doc/software-manual.tex
index 0e0a2124c6a844c27dbd152817e01c3f133268e8..a4510fbe7aa4f3db41a8e18137e4f0bcaa9ed60c 100644
--- a/doc/software-manual.tex
+++ b/doc/software-manual.tex
@@ -1882,7 +1882,7 @@ This option has no effect if either ISP or MTS are disabled.
 \Option{JointCbCr} &
 %\ShortOption{\None} &
 \Default{false} &
-Enables or disables the joint coding of chroma residuals.
+Enables or disables the joint coding of chroma residuals (if available, disabled if not).
 \\
 
 \Option{SAO} &
@@ -3417,6 +3417,11 @@ Specifies the colour space conversion to apply to 444 video. Permitted values ar
 If no value is specified, no colour space conversion is applied. The list may eventually also include RGB to YCbCr or YCgCo conversions.\\
 \\
 
+\Option{PYUV} &
+\Default{false} &
+When true, output 10-bit and 12-bit YUV data as 5-byte and 3-byte (respectively) packed YUV data. See doc/pyuv_format.pdf for details. Ignored for interlaced output.
+\\
+
 \Option{SEINoDisplay} &
 \Default{false} &
 When true, do not output frames for which there is an SEI NoDisplay message.
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 044ef7517d1fa9770c46e2e7e2828c03a86103bb..397ee5cd633394e668c291c39ede7be09709efb3 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -1943,7 +1943,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
   CHECK(cfg_qpInValCb.values.size() != cfg_qpOutValCb.values.size(), "Chroma QP table for Cb is incomplete.");
   CHECK(cfg_qpInValCr.values.size() != cfg_qpOutValCr.values.size(), "Chroma QP table for Cr is incomplete.");
   CHECK(cfg_qpInValCbCr.values.size() != cfg_qpOutValCbCr.values.size(), "Chroma QP table for CbCr is incomplete.");
-  if (m_useIdentityTableForNon420Chroma && m_chromaFormatIDC != CHROMA_420) 
+  if (m_useIdentityTableForNon420Chroma && m_chromaFormatIDC != CHROMA_420)
   {
     m_chromaQpMappingTableParams.m_sameCQPTableForAllChromaFlag = true;
     cfg_qpInValCb.values = { 0 };
@@ -2589,7 +2589,7 @@ bool EncAppCfg::xCheckParameter()
   if (m_JointCbCrMode && (m_chromaFormatIDC == CHROMA_400))
   {
     msg( WARNING, "****************************************************************************\n");
-    msg( WARNING, "** WARNING: --JointCbCr has been disabled due to the chromaFormat is 400       **\n");
+    msg( WARNING, "** WARNING: --JointCbCr has been disabled because the chromaFormat is 400 **\n");
     msg( WARNING, "****************************************************************************\n");
     m_JointCbCrMode = false;
   }
@@ -2658,7 +2658,7 @@ bool EncAppCfg::xCheckParameter()
 #if JVET_O0455_IBC_MAX_MERGE_NUM
   xConfirmPara( m_maxNumIBCMergeCand < 1, "MaxNumIBCMergeCand must be 1 or greater." );
   xConfirmPara( m_maxNumIBCMergeCand > IBC_MRG_MAX_NUM_CANDS, "MaxNumIBCMergeCand must be no more than IBC_MRG_MAX_NUM_CANDS." );
-#endif 
+#endif
   xConfirmPara( m_maxNumAffineMergeCand < 1, "MaxNumAffineMergeCand must be 1 or greater." );
   xConfirmPara( m_maxNumAffineMergeCand > AFFINE_MRG_MAX_NUM_CANDS, "MaxNumAffineMergeCand must be no more than AFFINE_MRG_MAX_NUM_CANDS." );
   if ( m_Affine == 0 )
diff --git a/source/Lib/EncoderLib/InterSearch.cpp b/source/Lib/EncoderLib/InterSearch.cpp
index 89f15581bc13e0801824209a5e1f2edb645efe19..9a92d1c86b4fe830c53c22ee227f0756050ef4dd 100644
--- a/source/Lib/EncoderLib/InterSearch.cpp
+++ b/source/Lib/EncoderLib/InterSearch.cpp
@@ -2882,7 +2882,7 @@ void InterSearch::predInterSearch(CodingUnit& cu, Partitioner& partitioner)
 		CHECK(iRefIdxBi[0]<0, "Invalid picture reference index");
 		CHECK(iRefIdxBi[1]<0, "Invalid picture reference index");
 		cu.cs->slice->getWpScaling(REF_PIC_LIST_0, iRefIdxBi[0], wp0);
-		cu.cs->slice->getWpScaling(REF_PIC_LIST_1, iRefIdxBi[1], wp1);	
+		cu.cs->slice->getWpScaling(REF_PIC_LIST_1, iRefIdxBi[1], wp1);
 		if ((wp0[COMPONENT_Y].bPresentFlag || wp0[COMPONENT_Cb].bPresentFlag || wp0[COMPONENT_Cr].bPresentFlag
 			|| wp1[COMPONENT_Y].bPresentFlag || wp1[COMPONENT_Cb].bPresentFlag || wp1[COMPONENT_Cr].bPresentFlag))
 		{
@@ -3302,7 +3302,7 @@ Distortion InterSearch::xGetTemplateCost( const PredictionUnit& pu,
 
   const Picture* picRef = pu.cu->slice->getRefPic( eRefPicList, iRefIdx );
   clipMv( cMvCand, pu.cu->lumaPos(), pu.cu->lumaSize(), *pu.cs->sps );
-  
+
   // prediction pattern
   const bool bi = pu.cu->slice->testWeightPred() && pu.cu->slice->getSliceType()==P_SLICE;
 
@@ -7166,7 +7166,7 @@ void InterSearch::xEstimateInterResidualQT(CodingStructure &cs, Partitioner &par
 #if JVET_O0376_SPS_JOINTCBCR_FLAG
         if ( checkJointCbCr && (tu.cu->cs->slice->getSliceQp() > 18))
         {
-            m_pcTrQuant->setLambda( 1.05 * m_pcTrQuant->getLambda() );
+          m_pcTrQuant->setLambda( 1.05 * m_pcTrQuant->getLambda() );
         }
 #else
         if ( tu.cu->cs->slice->getSliceQp() > 18 )
diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp
index d2ef38fb988cd2af308dc86298efe1295b8da969..ef347737a9590b836f559c0b5d1ec0846a115bdf 100644
--- a/source/Lib/EncoderLib/IntraSearch.cpp
+++ b/source/Lib/EncoderLib/IntraSearch.cpp
@@ -2738,7 +2738,7 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
 #if JVET_O0105_ICT
   if (isLuma(compID))
   {
-#endif
+#else
   if (flag && slice.getLmcsChromaResidualScaleFlag() && isChroma(compID))
   {
     const Area area = tu.Y().valid() ? tu.Y() : Area(recalcPosition(tu.chromaFormat, tu.chType, CHANNEL_TYPE_LUMA, tu.blocks[tu.chType].pos()), recalcSize(tu.chromaFormat, tu.chType, CHANNEL_TYPE_LUMA, tu.blocks[tu.chType].size()));
@@ -2753,6 +2753,7 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
 #endif
     tu.setChromaAdj(adj);
   }
+#endif
   //===== get residual signal =====
   piResi.copyFrom( piOrg  );
   if (slice.getLmcsEnabledFlag() && m_pcReshape->getCTUFlag() && compID == COMPONENT_Y)
@@ -2850,7 +2851,7 @@ void IntraSearch::xIntraCodingTUBlock(TransformUnit &tu, const ComponentID &comp
   {
     m_pcTrQuant->setLambda( 1.3 * m_pcTrQuant->getLambda() );
   }
-  #endif
+#endif
 #else
 #if JVET_O0376_SPS_JOINTCBCR_FLAG
   else if ( sps.getJointCbCrEnabledFlag() && isChroma(compID) && (tu.cu->cs->slice->getSliceQp() > 18) )
@@ -4234,7 +4235,7 @@ void IntraSearch::reduceHadCandList(static_vector<T, N>& candModeList, static_ve
   static_vector<double, FAST_UDI_MAX_RDMODE_NUM> tempCandCostList;
   const double minCost = candCostList[0];
   bool keepOneMip = candModeList.size() > numModesForFullRD;
-  
+
   int numConv = 0;
   int numMip = 0;
   for (int idx = 0; idx < candModeList.size() - (keepOneMip?0:1); idx++)