diff --git a/cfg/sei_vui/neural_network_post_filter_characteristics.cfg b/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
index 0a3b7963c47ac8dc778ed75e9e4e9263f1547d41..352f8e252d871cd977d0bfd29a0cd475fe3d4c4c 100644
--- a/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
+++ b/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
@@ -12,6 +12,11 @@ SEINNPostFilterCharacteristicsOutSubHeightCFlag0:              1
 SEINNPostFilterCharacteristicsComponentLastFlag0:              0
 SEINNPostFilterCharacteristicsInpSampleIdc0:                   1
 SEINNPostFilterCharacteristicsInpTensorBitDepthMinus80:        2
+SEINNPostFilterCharacteristicsAuxInpIdc0:                      1
+SEINNPostFilterCharacteristicsSepColDescriptionFlag0:          0
+SEINNPostFilterCharacteristicsColPrimaries0:                   9
+SEINNPostFilterCharacteristicsTransCharacteristics0:           16
+SEINNPostFilterCharacteristicsMatrixCoeffs0:                   14
 SEINNPostFilterCharacteristicsInpOrderIdc0:                    2
 SEINNPostFilterCharacteristicsOutSampleIdc0:                   1
 SEINNPostFilterCharacteristicsOutTensorBitDepthMinus80:        2
diff --git a/doc/software-manual.tex b/doc/software-manual.tex
index 64cc080ab753b677b8a02fa31e2af23a645af1c5..9501d86cde7670505e6290899198159359906692 100644
--- a/doc/software-manual.tex
+++ b/doc/software-manual.tex
@@ -5430,6 +5430,31 @@ Specifies sii_num_units_in_shutter_interval for single entry.If multiple entries
   \Default{0} &
   Specifies the bit depth of the input tensor - 8 for the \emph{i}-th neural network post-filter, when nnpfc_inp_sample_idc = 4.
   \\
+  \Option{SEINNPostFilterCharacteristicsAuxInpIdc\emph{i}} &
+  \Default{0} &
+  Specifies that auxiliary input data may be present in the neural network input tensor for any allowed luma-only, chroma-only, and luma-chroma configuration.
+  \\
+  \Option{SEINNPostFilterCharacteristicsSepColDescriptionFlag\emph{i}} &
+  \Default{false} &
+  Specifies that the colour primaries, transfer characteristics, and matrix coefficients of the picture that results from the neural-network post filtering may be different than for the input to the filter.
+  \par
+  \begin{tabular}{p{0.49\columnwidth}}
+    When true (non-zero) the syntax elements nnpfc_colour_primaries, nnpfc_transfer_characteristic, and nnpfc_matrix_coeffs specify the colour primaries, transfer characteristics, and matrix coefficients of the picture that results from the neural-network post filtering. \\
+    When false the syntax elements nnpfc_colour_primaries, nnpfc_transfer_chracteristics, and nnpfc_matrix_coeffs are assumed to be the same as the input to the filter. \\
+  \end{tabular}
+  \\
+  \Option{SEINNPostFilterCharacteristicsColPrimaries\emph{i}} &
+  \Default{0} &
+  Specifies the colour primaries of the picture resulting from applying the neural-network post-filter specified in the SEI message, rather than the colour primaries used for the CLVS.
+  \\
+  \Option{SEINNPostFilterCharacteristicsTransCharacteristics\emph{i}} &
+  \Default{0} &
+  Specifies the transfer characteristics of the picture resulting from applying the neural-network post-filter specified in the SEI message, rather than the transfer characteristics used for the CLVS.
+  \\
+  \Option{SEINNPostFilterCharacteristicsMatrixCoeffs\emph{i}} &
+  \Default{0} &
+  Specifies the matrix coefficients of the picture resulting from applying the neural-network post-filter specified in the SEI message, rather than the matrix coefficients used for the CLVS
+  \\
   \Option{SEINNPostFilterCharacteristicsInpOrderIdc\emph{i}} &
   \Default{0} &
   Specifies the method of ordering the input sample arrays for the \emph{i}-th neural network post-filter.
diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp
index 3d797acad5aab5b2840f82377aa2ce595858a1fa..262ab1176253a9f28a70362b95445207237ef672 100644
--- a/source/App/EncoderApp/EncApp.cpp
+++ b/source/App/EncoderApp/EncApp.cpp
@@ -1179,6 +1179,15 @@ void EncApp::xInitLibCfg()
     m_cEncLib.setNNPostFilterSEICharacteristicsPicHeightInLumaSamples  (m_nnPostFilterSEICharacteristicsPicHeightInLumaSamples[i], i);
     m_cEncLib.setNNPostFilterSEICharacteristicsInpTensorBitDepthMinus8 (m_nnPostFilterSEICharacteristicsInpTensorBitDepthMinus8[i], i);
     m_cEncLib.setNNPostFilterSEICharacteristicsOutTensorBitDepthMinus8 (m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[i], i);
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS 
+    m_cEncLib.setNNPostFilterSEICharacteristicsAuxInpIdc               (m_nnPostFilterSEICharacteristicsAuxInpIdc[i], i);
+    m_cEncLib.setNNPostFilterSEICharacteristicsSepColDescriptionFlag   (m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[i], i);
+    if (m_cEncLib.getNNPostFilterSEICharacteristicsSepColDescriptionFlag(i)){
+      m_cEncLib.setNNPostFilterSEICharacteristicsColPrimaries          (m_nnPostFilterSEICharacteristicsColPrimaries[i],i);
+      m_cEncLib.setNNPostFilterSEICharacteristicsTransCharacteristics  (m_nnPostFilterSEICharacteristicsTransCharacteristics[i],i);
+      m_cEncLib.setNNPostFilterSEICharacteristicsMatrixCoeffs          (m_nnPostFilterSEICharacteristicsMatrixCoeffs[i],i);
+    }
+#endif
     m_cEncLib.setNNPostFilterSEICharacteristicsComponentLastFlag       (m_nnPostFilterSEICharacteristicsComponentLastFlag[i], i);
     m_cEncLib.setNNPostFilterSEICharacteristicsInpSampleIdc            (m_nnPostFilterSEICharacteristicsInpSampleIdc[i], i);
     m_cEncLib.setNNPostFilterSEICharacteristicsInpOrderIdc             (m_nnPostFilterSEICharacteristicsInpOrderIdc[i], i);
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 1601e61cf45fe2e16d7df9ccec027f2fdacd53b5..fe9b25c03a27f1dc8a0deaed194281a5367dc73f 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -1713,7 +1713,27 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
     std::ostringstream inpSampleIdc;
     inpSampleIdc << "SEINNPostFilterCharacteristicsInpSampleIdc" << i;
     opts.addOptions()(inpSampleIdc.str(), m_nnPostFilterSEICharacteristicsInpSampleIdc[i], 0u, "Specifies the method of converting an input sample in the the Neural Network Post Filter Characteristics SEI message");
-
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+    std::ostringstream auxInpIdc;
+    auxInpIdc << "SEINNPostFilterCharacteristicsAuxInpIdc" << i;
+    opts.addOptions()(auxInpIdc.str(), m_nnPostFilterSEICharacteristicsAuxInpIdc[i], 0u, "Specifies the auxillary input index in the Nueral Network Post Filter Characteristics SEI message");
+
+    std::ostringstream sepColDescriptionFlag;
+    sepColDescriptionFlag << "SEINNPostFilterCharacteristicsSepColDescriptionFlag" << i;
+    opts.addOptions()(sepColDescriptionFlag.str(), m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[i], false, "Specifies the presence of seperate color descriptions in the Nueral Network Post Filter Characteristics SEI message");
+
+    std::ostringstream colPrimaries;
+    colPrimaries << "SEINNPostFilterCharacteristicsColPrimaries" << i;
+    opts.addOptions()(colPrimaries.str(), m_nnPostFilterSEICharacteristicsColPrimaries[i], 0u, "Specifies color primaries in the Nueral Network Post Filter Characteristics SEI message");
+
+    std::ostringstream transCharacteristics;
+    transCharacteristics << "SEINNPostFilterCharacteristicsTransCharacteristics" << i;
+    opts.addOptions()(transCharacteristics.str(), m_nnPostFilterSEICharacteristicsTransCharacteristics[i], 0u, "Specifies Transfer Characteristics in the Nueral Network Post Filter Characteristics SEI message");
+
+    std::ostringstream matrixCoeffs;
+    matrixCoeffs << "SEINNPostFilterCharacteristicsMatrixCoeffs" << i;
+    opts.addOptions()(matrixCoeffs.str(), m_nnPostFilterSEICharacteristicsMatrixCoeffs[i], 0u, "Specifies color matrix coefficients in the Nueral Network Post Filter Characteristics SEI message");
+#endif
     std::ostringstream inpOrderIdc;
     inpOrderIdc << "SEINNPostFilterCharacteristicsInpOrderIdc" << i;
     opts.addOptions()(inpOrderIdc.str(), m_nnPostFilterSEICharacteristicsInpOrderIdc[i], 0u, "Specifies the method of ordering the input sample arrays in the Neural Network Post Filter Characteristics SEI message");
@@ -4618,6 +4638,11 @@ bool EncAppCfg::xCheckParameter()
       xConfirmPara(m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[i] > 24, "SEINNPostFilterCharacteristicsOutTensorBitDepthMinus8 must be in the range of 0 to 24");
       xConfirmPara(m_nnPostFilterSEICharacteristicsInpSampleIdc[i] > 255, "SEINNPostFilterCharacteristicsInpSampleIdc must be in the range of 0 to 255");
       xConfirmPara(m_nnPostFilterSEICharacteristicsInpOrderIdc[i] > 255, "SEINNPostFilterCharacteristicsInpOrderIdc must be in the range of  0 to 255");
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+      xConfirmPara(m_nnPostFilterSEICharacteristicsColPrimaries[i] > 255, "m_nnPostFilterSEICharacteristicsColPrimaries must in the range 0 to 255");
+      xConfirmPara(m_nnPostFilterSEICharacteristicsTransCharacteristics[i] > 255, "m_nnPostFilterSEICharacteristicsTransCharacteristics must in the range 0 to 255");
+      xConfirmPara(m_nnPostFilterSEICharacteristicsMatrixCoeffs[i] > 255, "m_nnPostFilterSEICharacteristicsMatrixCoeffs must in the range 0 to 255");
+#endif
       xConfirmPara(m_nnPostFilterSEICharacteristicsOutSampleIdc[i] > 255, "SEINNPostFilterCharacteristicsOutSampleIdc must be in the range of 0 to 255");
       xConfirmPara(m_nnPostFilterSEICharacteristicsOutOrderIdc[i] > 255, "SEINNPostFilterCharacteristicsOutOrderIdc must be in the range of 0 to 255");
       xConfirmPara(m_nnPostFilterSEICharacteristicsPatchWidthMinus1[i] > 32766, "SEINNPostFilterCharacteristicsPatchWidthMinus1 must be in the range of 0 to 32766");
diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h
index 305b979c4ef4d8f2f8f50b291632ddb65bb19092..5cd8bdb2bf3b3a2a7b7ddcf770397d13b998f420 100644
--- a/source/App/EncoderApp/EncAppCfg.h
+++ b/source/App/EncoderApp/EncAppCfg.h
@@ -746,6 +746,13 @@ protected:
   uint32_t              m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[MAX_NUM_NN_POST_FILTERS];
   bool                  m_nnPostFilterSEICharacteristicsComponentLastFlag[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsInpSampleIdc[MAX_NUM_NN_POST_FILTERS];
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+  uint32_t              m_nnPostFilterSEICharacteristicsAuxInpIdc[MAX_NUM_NN_POST_FILTERS];
+  bool                  m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[MAX_NUM_NN_POST_FILTERS];
+  uint32_t              m_nnPostFilterSEICharacteristicsColPrimaries[MAX_NUM_NN_POST_FILTERS];
+  uint32_t              m_nnPostFilterSEICharacteristicsTransCharacteristics[MAX_NUM_NN_POST_FILTERS];
+  uint32_t              m_nnPostFilterSEICharacteristicsMatrixCoeffs[MAX_NUM_NN_POST_FILTERS];
+#endif  
   uint32_t              m_nnPostFilterSEICharacteristicsInpOrderIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsOutSampleIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsOutOrderIdc[MAX_NUM_NN_POST_FILTERS];
diff --git a/source/Lib/CommonLib/SEI.h b/source/Lib/CommonLib/SEI.h
index 50a7f8b43dd6e734653e685d4578c6ee6b7ff9a7..75b711637a231bdbbdec9fab21341a337ed2dc10 100644
--- a/source/Lib/CommonLib/SEI.h
+++ b/source/Lib/CommonLib/SEI.h
@@ -1080,6 +1080,13 @@ public:
   , m_outTensorBitDepthMinus8(0)
   , m_componentLastFlag(false)
   , m_inpSampleIdc(0)
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+  , m_AuxInpIdc(0)
+  , m_SepColDescriptionFlag(false)
+  , m_ColPrimaries(0)
+  , m_TransCharacteristics(0)
+  , m_MatrixCoeffs(0)
+#endif
   , m_inpOrderIdc(0)
   , m_outSampleIdc(0)
   , m_outOrderIdc(0)
@@ -1119,6 +1126,13 @@ public:
   uint32_t       m_outTensorBitDepthMinus8;
   bool           m_componentLastFlag;
   uint32_t       m_inpSampleIdc;
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS 
+  uint32_t       m_AuxInpIdc;
+  bool           m_SepColDescriptionFlag;
+  uint8_t        m_ColPrimaries;
+  uint8_t        m_TransCharacteristics;
+  uint8_t        m_MatrixCoeffs;
+#endif
   uint32_t       m_inpOrderIdc;
   uint32_t       m_outSampleIdc;
   uint32_t       m_outOrderIdc;
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index f61a7eddc7285d02b6fd4eac54fc98e08b52435d..76bc9c3cfaf3b8a9282261a45746dcd68aece24e 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -55,6 +55,7 @@
 
 //########### place macros to be removed in next cycle below this line ###############
 #define JVET_AA0056_GATING_FILTER_CHARACTERISTICS         1 // JVET-AA0056 AHG9: on syntax gating in the neural-network post-filter characteristics SEI message
+#define JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS        1 // JVET-AA0100 AHG9: On auxiliary input and separate colour description in the neural-network post-filter characteristics SEI message
 
 //########### place macros to be be kept below this line ###############
 #define JVET_X0143_ALF_APS_ID_OFFSET                      0 // A value between 0 to 7 inclusive. This macro should be kept, or to be defined as a configuration parameter if possible.
diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp
index 9f38b62e4f62d7508ec1cf4901fd6f50d6c93500..52b142fdaf64b24121fb2bfcf146d2e45ada14e8 100644
--- a/source/Lib/DecoderLib/SEIread.cpp
+++ b/source/Lib/DecoderLib/SEIread.cpp
@@ -2516,6 +2516,22 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
       sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_inp_tensor_bitdepth_minus8");
       sei.m_inpTensorBitDepthMinus8 = val;
     }
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+    sei_read_uvlc(pDecodedMessageOutputStream,val,"nnpfc_aux_inp_idc");
+    sei.m_AuxInpIdc = val;
+    sei_read_flag(pDecodedMessageOutputStream,val,"nnpfc_sep_col_desc_flag");
+    sei.m_SepColDescriptionFlag = val;
+
+    if(sei.m_SepColDescriptionFlag)
+  {
+      sei_read_code(pDecodedMessageOutputStream, 8, val,"nnpfc_col_primaries");
+      sei.m_ColPrimaries = val;
+      sei_read_code(pDecodedMessageOutputStream, 8, val,"nnpfc_trans_characteristics");
+      sei.m_TransCharacteristics = val;
+      sei_read_code(pDecodedMessageOutputStream, 8, val,"nnpfc_matrix_coeffs");
+      sei.m_MatrixCoeffs = val;
+    }
+#endif
 
     sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_inp_order_idc");
     sei.m_inpOrderIdc = val;
diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h
index 9748e165cdc37b3c949dfa4226f1bec57d7f1b95..0fc08479d2fc0c4b61a310c756527fe741ec460c 100644
--- a/source/Lib/EncoderLib/EncCfg.h
+++ b/source/Lib/EncoderLib/EncCfg.h
@@ -678,6 +678,13 @@ protected:
   uint32_t                m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[MAX_NUM_NN_POST_FILTERS];
   bool                    m_nnPostFilterSEICharacteristicsComponentLastFlag[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsInpSampleIdc[MAX_NUM_NN_POST_FILTERS];
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+  uint32_t                m_nnPostFilterSEICharacteristicsAuxInpIdc[MAX_NUM_NN_POST_FILTERS];
+  bool                    m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[MAX_NUM_NN_POST_FILTERS];
+  uint32_t                m_nnPostFilterSEICharacteristicsColPrimaries[MAX_NUM_NN_POST_FILTERS];
+  uint32_t                m_nnPostFilterSEICharacteristicsTransCharacteristics[MAX_NUM_NN_POST_FILTERS];
+  uint32_t                m_nnPostFilterSEICharacteristicsMatrixCoeffs[MAX_NUM_NN_POST_FILTERS];
+#endif  
   uint32_t                m_nnPostFilterSEICharacteristicsInpOrderIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsOutSampleIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsOutOrderIdc[MAX_NUM_NN_POST_FILTERS];
@@ -1796,7 +1803,18 @@ public:
   uint32_t    getNNPostFilterSEICharacteristicsInpTensorBitDepthMinus8(int filterIdx) const                             { return m_nnPostFilterSEICharacteristicsInpTensorBitDepthMinus8[filterIdx]; }
   void        setNNPostFilterSEICharacteristicsOutTensorBitDepthMinus8(uint32_t outTensorBitDepthMinus8, int filterIdx) { m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[filterIdx] = outTensorBitDepthMinus8; }
   uint32_t    getNNPostFilterSEICharacteristicsOutTensorBitDepthMinus8(int filterIdx) const                             { return m_nnPostFilterSEICharacteristicsOutTensorBitDepthMinus8[filterIdx]; }
-
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+  void        setNNPostFilterSEICharacteristicsAuxInpIdc(uint32_t auxInpIdc, int filterIdx)                             { m_nnPostFilterSEICharacteristicsAuxInpIdc[filterIdx] = auxInpIdc; }  
+  uint32_t    getNNPostFilterSEICharacteristicsAuxInpIdc(int filterIdx) const                                           { return m_nnPostFilterSEICharacteristicsAuxInpIdc[filterIdx]; } 
+  void        setNNPostFilterSEICharacteristicsSepColDescriptionFlag(bool sepColDescriptionFlag, int filterIdx)         { m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[filterIdx] = sepColDescriptionFlag; }  
+  bool        getNNPostFilterSEICharacteristicsSepColDescriptionFlag(int filterIdx) const                               { return m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[filterIdx]; } 
+  void        setNNPostFilterSEICharacteristicsColPrimaries(uint32_t colPrimaries, int filterIdx)                       { m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx] = colPrimaries; }
+  uint32_t    getNNPostFilterSEICharacteristicsColPrimaries(int filterIdx) const                                        { return m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx]; }
+  void        setNNPostFilterSEICharacteristicsTransCharacteristics(uint32_t transCharacteristics, int filterIdx)       { m_nnPostFilterSEICharacteristicsTransCharacteristics[filterIdx] = transCharacteristics; }
+  uint32_t    getNNPostFilterSEICharacteristicsTransCharacteristics(int filterIdx) const                                { return m_nnPostFilterSEICharacteristicsTransCharacteristics[filterIdx]; }
+  void        setNNPostFilterSEICharacteristicsMatrixCoeffs(uint32_t matrixCoeffs, int filterIdx)                       { m_nnPostFilterSEICharacteristicsMatrixCoeffs[filterIdx] = matrixCoeffs; }
+  uint32_t    getNNPostFilterSEICharacteristicsMatrixCoeffs(int filterIdx) const                                        { return m_nnPostFilterSEICharacteristicsMatrixCoeffs[filterIdx]; }
+#endif 
   void        setNNPostFilterSEICharacteristicsComponentLastFlag(bool componentLastFlag, int filterIdx)                 { m_nnPostFilterSEICharacteristicsComponentLastFlag[filterIdx] = componentLastFlag; }
   bool        getNNPostFilterSEICharacteristicsComponentLastFlag(int filterIdx) const                                   { return m_nnPostFilterSEICharacteristicsComponentLastFlag[filterIdx]; }
   void        setNNPostFilterSEICharacteristicsInpSampleIdc(uint32_t inpSampleIdc, int filterIdx)                       { m_nnPostFilterSEICharacteristicsInpSampleIdc[filterIdx] = inpSampleIdc; }
diff --git a/source/Lib/EncoderLib/SEIEncoder.cpp b/source/Lib/EncoderLib/SEIEncoder.cpp
index 4c35d8c27df693ac4c6b552b60f3b7e6552bed7c..05302155f757ba2881b6bb3dd3bbc03437f047b6 100644
--- a/source/Lib/EncoderLib/SEIEncoder.cpp
+++ b/source/Lib/EncoderLib/SEIEncoder.cpp
@@ -1193,6 +1193,15 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP
     {
       sei->m_outTensorBitDepthMinus8 = m_pcCfg->getNNPostFilterSEICharacteristicsOutTensorBitDepthMinus8(filterIdx);
     }
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+    sei->m_AuxInpIdc = m_pcCfg->getNNPostFilterSEICharacteristicsAuxInpIdc(filterIdx);
+    sei->m_SepColDescriptionFlag = m_pcCfg->getNNPostFilterSEICharacteristicsSepColDescriptionFlag(filterIdx);
+    if(sei->m_SepColDescriptionFlag){
+      sei->m_ColPrimaries = m_pcCfg->getNNPostFilterSEICharacteristicsColPrimaries(filterIdx);
+      sei->m_TransCharacteristics = m_pcCfg->getNNPostFilterSEICharacteristicsTransCharacteristics(filterIdx);
+      sei->m_MatrixCoeffs = m_pcCfg->getNNPostFilterSEICharacteristicsMatrixCoeffs(filterIdx);
+    }
+#endif
 
     sei->m_outOrderIdc = m_pcCfg->getNNPostFilterSEICharacteristicsOutOrderIdc(filterIdx);
     sei->m_constantPatchSizeFlag = m_pcCfg->getNNPostFilterSEICharacteristicsConstantPatchSizeFlag(filterIdx);
diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp
index 604044cd72e599586a2620c2f8caf4f6cdb0325b..c185535d0600a6713b74d51ba70829af7ca00f83 100644
--- a/source/Lib/EncoderLib/SEIwrite.cpp
+++ b/source/Lib/EncoderLib/SEIwrite.cpp
@@ -1424,6 +1424,16 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN
     {
       WRITE_UVLC(sei.m_inpTensorBitDepthMinus8, "nnpfc_inp_tensor_bitdepth_minus8");
     }
+#if JVET_AA0100_SEPERATE_COLOR_CHARACTERISTICS
+    WRITE_UVLC(sei.m_AuxInpIdc,"nnpfc_aux_inp_idc");
+    WRITE_FLAG(sei.m_SepColDescriptionFlag,"nnpfc_sep_col_desc_flag");
+
+    if(sei.m_SepColDescriptionFlag){
+      WRITE_CODE(sei.m_ColPrimaries,8,"nnpfc_col_primaries");
+      WRITE_CODE(sei.m_TransCharacteristics,8,"nnpfc_trans_characteristics");
+      WRITE_CODE(sei.m_MatrixCoeffs,8,"nnpfc_matrix_coeffs");
+    }
+#endif
 
     WRITE_UVLC(sei.m_inpOrderIdc, "nnpfc_inp_order_idc");
     WRITE_UVLC(sei.m_outSampleIdc, "nnpfc_out_sample_idc");