diff --git a/av1/common/av1_common_int.h b/av1/common/av1_common_int.h
index 4f41ec9..d1473cc 100644
--- a/av1/common/av1_common_int.h
+++ b/av1/common/av1_common_int.h
@@ -1378,12 +1378,6 @@
   int qmatrix_level_u; /*!< Level index for U plane */
   int qmatrix_level_v; /*!< Level index for V plane */
   /**@}*/
-#if CONFIG_TCQ
-  /*!
-   * Frame tcq_mode: 0 = disabled, 1 = enabled (8-state)
-   */
-  int tcq_mode;
-#endif  // CONFIG_TCQ
 };
 
 typedef struct CommonContexts CommonContexts;
diff --git a/av1/encoder/av1_quantize.c b/av1/encoder/av1_quantize.c
index 4abbeaf..98d5325 100644
--- a/av1/encoder/av1_quantize.c
+++ b/av1/encoder/av1_quantize.c
@@ -437,7 +437,8 @@
 
 void av1_init_quantizer(SequenceHeader *seq_params,
                         EncQuantDequantParams *const enc_quant_dequant_params,
-                        const CommonQuantParams *quant_params) {
+                        const AV1_COMMON *const cm) {
+  const CommonQuantParams *quant_params = &cm->quant_params;
   QUANTS *const quants = &enc_quant_dequant_params->quants;
   Dequants *const dequants = &enc_quant_dequant_params->dequants;
   av1_build_quantizer(seq_params->bit_depth, quant_params->y_dc_delta_q,
@@ -453,7 +454,7 @@
                       quants, dequants
 #if CONFIG_TCQ
                       ,
-                      quant_params->tcq_mode
+                      cm->features.tcq_mode
 #endif  // CONFIG_TCQ
   );
 }
@@ -596,9 +597,6 @@
   // quantizer has to be reinitialized with av1_init_quantizer() if any
   // delta_q changes.
   CommonQuantParams *quant_params = &cm->quant_params;
-#if CONFIG_TCQ
-  quant_params->tcq_mode = cm->features.tcq_mode;
-#endif  // CONFIG_TCQ
   quant_params->base_qindex = AOMMAX(cm->delta_q_info.delta_q_present_flag, q);
   cm->cur_frame->base_qindex = quant_params->base_qindex;
   set_frame_dc_delta_q(cm, &quant_params->y_dc_delta_q, enable_chroma_deltaq,
diff --git a/av1/encoder/av1_quantize.h b/av1/encoder/av1_quantize.h
index 675260e..ca16938 100644
--- a/av1/encoder/av1_quantize.h
+++ b/av1/encoder/av1_quantize.h
@@ -122,7 +122,7 @@
 
 void av1_init_quantizer(SequenceHeader *seq_params,
                         EncQuantDequantParams *const enc_quant_dequant_params,
-                        const CommonQuantParams *quant_params);
+                        const AV1_COMMON *const cm);
 
 void av1_set_quantizer(struct AV1Common *const cm, int min_qmlevel,
                        int max_qmlevel, int q, int enable_chroma_deltaq);
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index cdb3ad3..611a984 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -1548,7 +1548,75 @@
 #endif  // CONFIG_TIP_LD
 }
 
-static void av1_enc_setup_ph_frame(AV1_COMP *cpi) {
+/*!\brief Set the lossless flags for a frame before encoding it
+ *
+ * \ingroup high_level_algo
+ */
+void av1_set_lossless(AV1_COMP *cpi) {
+  // NOTE lossless flags needs to be set before tcq_mode and parity_hiding are
+  // set for a frame
+  MACROBLOCKD *const xd = &cpi->td.mb.e_mbd;
+  AV1_COMMON *const cm = &cpi->common;
+  const CommonQuantParams *quant_params = &cm->quant_params;
+  for (int i = 0; i < MAX_SEGMENTS; ++i) {
+    const int qindex =
+        cm->seg.enabled ? av1_get_qindex(&cm->seg, i, quant_params->base_qindex,
+                                         cm->seq_params.bit_depth)
+                        : quant_params->base_qindex;
+    xd->lossless[i] =
+        qindex == 0 && cm->features.tcq_mode == 0 &&
+        (quant_params->y_dc_delta_q + cm->seq_params.base_y_dc_delta_q <= 0) &&
+        (quant_params->u_dc_delta_q + cm->seq_params.base_uv_dc_delta_q <= 0) &&
+        (quant_params->v_dc_delta_q + cm->seq_params.base_uv_dc_delta_q <= 0) &&
+#if CONFIG_EXT_QUANT_UPD
+        (quant_params->u_ac_delta_q + cm->seq_params.base_uv_ac_delta_q <= 0) &&
+        (quant_params->v_ac_delta_q + cm->seq_params.base_uv_ac_delta_q <= 0);
+#else
+        (quant_params->u_ac_delta_q <= 0) && (quant_params->v_ac_delta_q <= 0);
+#endif  // CONFIG_EXT_QUANT_UPD
+
+    if (xd->lossless[i]) cpi->enc_seg.has_lossless_segment = 1;
+    xd->qindex[i] = qindex;
+    if (xd->lossless[i]) {
+      cpi->optimize_seg_arr[i] = NO_TRELLIS_OPT;
+    } else {
+      cpi->optimize_seg_arr[i] = cpi->sf.rd_sf.optimize_coefficients;
+    }
+  }
+  cm->features.coded_lossless = is_coded_lossless(cm, xd);
+  cm->features.all_lossless = cm->features.coded_lossless
+#if CONFIG_ENABLE_SR
+                              && !av1_superres_scaled(cm)
+#endif  // CONFIG_ENABLE_SR
+      ;
+}
+
+#if CONFIG_TCQ
+/*!\brief Set the tcq_mode for a frame before encoding it
+ *
+ * \ingroup high_level_algo
+ */
+void av1_set_frame_tcq_mode(AV1_COMP *cpi) {
+  // NOTE tcq_mode needs to be set after lossless flags are set and before
+  // parity_hiding is set for a frame
+  AV1_COMMON *const cm = &cpi->common;
+  if (is_lossless_requested(&cpi->oxcf.rc_cfg)) {
+    // Disable TCQ for lossless since TCQ may not be reversible
+    cm->features.tcq_mode = 0;
+  } else {
+    if (cm->seq_params.enable_tcq >= TCQ_8ST_FR) {
+      cm->features.tcq_mode =
+          frame_is_intra_only(cm) || cm->current_frame.pyramid_level <= 1;
+    } else {
+      cm->features.tcq_mode = cm->seq_params.enable_tcq;
+    }
+  }
+}
+#endif  // CONFIG_TCQ
+
+void av1_enc_setup_ph_frame(AV1_COMP *cpi) {
+  // Note parity_hiding is to be set for a frame after lossless and tcq_mode
+  // are set
   AV1_COMMON *const cm = &cpi->common;
   if (cm->features.coded_lossless || !cm->seq_params.enable_parity_hiding
 #if CONFIG_TCQ
@@ -1695,37 +1763,6 @@
   }
 
   const CommonQuantParams *quant_params = &cm->quant_params;
-  for (i = 0; i < MAX_SEGMENTS; ++i) {
-    const int qindex =
-        cm->seg.enabled ? av1_get_qindex(&cm->seg, i, quant_params->base_qindex,
-                                         cm->seq_params.bit_depth)
-                        : quant_params->base_qindex;
-    xd->lossless[i] =
-        qindex == 0 && cm->features.tcq_mode == 0 &&
-        (quant_params->y_dc_delta_q + cm->seq_params.base_y_dc_delta_q <= 0) &&
-        (quant_params->u_dc_delta_q + cm->seq_params.base_uv_dc_delta_q <= 0) &&
-        (quant_params->v_dc_delta_q + cm->seq_params.base_uv_dc_delta_q <= 0) &&
-#if CONFIG_EXT_QUANT_UPD
-        (quant_params->u_ac_delta_q + cm->seq_params.base_uv_ac_delta_q <= 0) &&
-        (quant_params->v_ac_delta_q + cm->seq_params.base_uv_ac_delta_q <= 0);
-#else
-        (quant_params->u_ac_delta_q <= 0) && (quant_params->v_ac_delta_q <= 0);
-#endif  // CONFIG_EXT_QUANT_UPD
-
-    if (xd->lossless[i]) cpi->enc_seg.has_lossless_segment = 1;
-    xd->qindex[i] = qindex;
-    if (xd->lossless[i]) {
-      cpi->optimize_seg_arr[i] = NO_TRELLIS_OPT;
-    } else {
-      cpi->optimize_seg_arr[i] = cpi->sf.rd_sf.optimize_coefficients;
-    }
-  }
-  features->coded_lossless = is_coded_lossless(cm, xd);
-  features->all_lossless = features->coded_lossless
-#if CONFIG_ENABLE_SR
-                           && !av1_superres_scaled(cm)
-#endif  // CONFIG_ENABLE_SR
-      ;
 
   // Fix delta q resolution for the moment
   cm->delta_q_info.delta_q_res = 0;
@@ -1847,8 +1884,6 @@
 
   av1_enc_setup_tip_frame(cpi);
 
-  av1_enc_setup_ph_frame(cpi);
-
   cm->current_frame.skip_mode_info.skip_mode_flag =
       check_skip_mode_enabled(cpi) && cpi->oxcf.tool_cfg.enable_skip_mode;
 
@@ -1969,6 +2004,8 @@
       map += mi_cols;
     }
   }
+  // av1_set_lossless(cpi, xd);
+  // av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params, cm);
 
   av1_setup_frame_buf_refs(cm);
   enforce_max_ref_frames(cpi, &cm->ref_frame_flags);
diff --git a/av1/encoder/encodeframe.h b/av1/encoder/encodeframe.h
index 598190d..42e4efb 100644
--- a/av1/encoder/encodeframe.h
+++ b/av1/encoder/encodeframe.h
@@ -52,6 +52,12 @@
                                 int use_optflow_refinement, uint16_t **mc_buf,
                                 uint16_t **pre, SubpelParams *subpel_params,
                                 int *src_stride);
+void av1_set_lossless(struct AV1_COMP *cpi);
+void av1_enc_setup_ph_frame(struct AV1_COMP *cpi);
+#if CONFIG_TCQ
+void av1_set_frame_tcq_mode(struct AV1_COMP *cpi);
+#endif  // CONFIG_TCQ
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index fec494f..7157cf2 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -1398,8 +1398,7 @@
    * called later when needed. This will avoid unnecessary calls of
    * av1_init_quantizer() for every frame.
    */
-  av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params,
-                     &cm->quant_params);
+  av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params, cm);
   av1_qm_init(&cm->quant_params, av1_num_planes(cm));
 
 #if CONFIG_DF_PAR_BITS
@@ -3145,8 +3144,7 @@
 #endif  // CONFIG_PRIMARY_REF_FRAME_OPT
 
   av1_set_speed_features_qindex_dependent(cpi, cpi->oxcf.speed);
-  av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params,
-                     &cm->quant_params);
+
   av1_setup_frame(cpi);
 
   if (q_cfg->aq_mode == CYCLIC_REFRESH_AQ) {
@@ -3185,6 +3183,13 @@
     // av1_set_high_precision_mv(cpi, MV_PRECISION_ONE_PEL);
   }
 
+#if CONFIG_TCQ
+  av1_set_frame_tcq_mode(cpi);
+#endif  // CONFIG_TCQ
+  av1_set_lossless(cpi);
+  av1_enc_setup_ph_frame(cpi);
+  av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params, cm);
+
   // transform / motion compensation build reconstruction frame
   av1_encode_frame(cpi);
 
@@ -3337,6 +3342,7 @@
       q = av1_get_vmaf_base_qindex(cpi, q);
     }
 #endif
+
     av1_set_quantizer(cm, q_cfg->qm_minlevel, q_cfg->qm_maxlevel, q,
                       q_cfg->enable_chroma_deltaq);
 
@@ -3345,8 +3351,6 @@
 #endif  // CONFIG_PRIMARY_REF_FRAME_OPT
 
     av1_set_speed_features_qindex_dependent(cpi, oxcf->speed);
-    av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params,
-                       &cm->quant_params);
 
     // printf("Frame %d/%d: q = %d, frame_type = %d superres_denom = %d\n",
     //        cm->current_frame.frame_number, cm->show_frame, q,
@@ -3410,6 +3414,13 @@
       // av1_set_high_precision_mv(cpi, MV_PRECISION_ONE_PEL);
     }
 
+#if CONFIG_TCQ
+    av1_set_frame_tcq_mode(cpi);
+#endif  // CONFIG_TCQ
+    av1_set_lossless(cpi);
+    av1_enc_setup_ph_frame(cpi);
+    av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params, cm);
+
     // transform / motion compensation build reconstruction frame
     av1_encode_frame(cpi);
 
@@ -3940,6 +3951,8 @@
 #endif
   int err;
 
+  AV1_COMMON *const cm = &cpi->common;
+
   if (cpi->sf.hl_sf.recode_loop == DISALLOW_RECODE)
     err = encode_without_recode(cpi);
   else
@@ -3959,7 +3972,6 @@
     return err;
   }
 
-  AV1_COMMON *const cm = &cpi->common;
   SequenceHeader *const seq_params = &cm->seq_params;
 #if CONFIG_BRU
   if (cm->bru.enabled && cm->current_frame.frame_type != KEY_FRAME) {
@@ -4739,20 +4751,6 @@
     av1_invalidate_corner_list(cpi->source->corners);
   }
 
-#if CONFIG_TCQ
-  if (is_lossless_requested(&oxcf->rc_cfg)) {
-    // Disable TCQ for lossless since TCQ may not be reversible
-    features->tcq_mode = 0;
-  } else {
-    if (cm->seq_params.enable_tcq >= TCQ_8ST_FR) {
-      features->tcq_mode =
-          frame_is_intra_only(cm) || current_frame->pyramid_level <= 1;
-    } else {
-      features->tcq_mode = cm->seq_params.enable_tcq;
-    }
-  }
-#endif  // CONFIG_TCQ
-
   int largest_tile_id = 0;
 #if CONFIG_ENABLE_SR
   if (av1_superres_in_recode_allowed(cpi)) {
diff --git a/av1/encoder/encoder_utils.c b/av1/encoder/encoder_utils.c
index 02584db..f86c1a2 100644
--- a/av1/encoder/encoder_utils.c
+++ b/av1/encoder/encoder_utils.c
@@ -1179,10 +1179,13 @@
                       q_cfg->enable_chroma_deltaq);
     av1_set_speed_features_qindex_dependent(cpi, oxcf->speed);
 
-    av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params,
-                       &cm->quant_params);
-
     av1_setup_frame(cpi);
+#if CONFIG_TCQ
+    cm->features.tcq_mode = 0;
+#endif  // CONFIG_TCQ
+    av1_set_lossless(cpi);
+    av1_enc_setup_ph_frame(cpi);
+    av1_init_quantizer(&cm->seq_params, &cpi->enc_quant_dequant_params, cm);
 
     // transform / motion compensation build reconstruction frame
     av1_encode_frame(cpi);
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index ff59d5c..1766709 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -894,7 +894,7 @@
 
 int av1_compute_rd_mult_based_on_qindex(const AV1_COMP *cpi, int qindex) {
 #if CONFIG_TCQ
-  const int tcq_mode = cpi->common.quant_params.tcq_mode;
+  const int tcq_mode = cpi->common.features.tcq_mode;
   const int q =
       av1_dc_quant_QTX_tcq(qindex, 0, cpi->common.seq_params.base_y_dc_delta_q,
                            cpi->common.seq_params.bit_depth, tcq_mode);
