From 4c80deb93b7193cdc6400ac2cb968b77f4fe5db0 Mon Sep 17 00:00:00 2001
From: Yushin Cho <ycho@mozilla.com>
Date: Wed, 5 Sep 2018 14:21:48 -0700
Subject: [PATCH] Pass prediction mode to coefficient coder

---
 src/context.rs | 2 +-
 src/encoder.rs | 2 +-
 src/rdo.rs     | 3 ---
 3 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/context.rs b/src/context.rs
index f33ceb99..c2ef119e 100755
--- a/src/context.rs
+++ b/src/context.rs
@@ -2960,10 +2960,10 @@ impl ContextWriter {
 
   pub fn write_coeffs_lv_map(
     &mut self, w: &mut dyn Writer, plane: usize, bo: &BlockOffset, coeffs_in: &[i32],
+    pred_mode: PredictionMode,
     tx_size: TxSize, tx_type: TxType, plane_bsize: BlockSize, xdec: usize,
     ydec: usize, use_reduced_tx_set: bool
   ) -> bool {
-    let pred_mode = self.bc.get_mode(bo);
     let is_inter = pred_mode >= PredictionMode::NEARESTMV;
     //assert!(!is_inter);
     // Note: Both intra and inter mode uses inter scan order. Surprised?
diff --git a/src/encoder.rs b/src/encoder.rs
index 2599631a..503c19ae 100644
--- a/src/encoder.rs
+++ b/src/encoder.rs
@@ -1222,7 +1222,7 @@ pub fn encode_tx_block(
     forward_transform(&residual.array, coeffs, tx_size.width(), tx_size, tx_type, bit_depth);
     fs.qc.quantize(coeffs);
 
-    let has_coeff = cw.write_coeffs_lv_map(w, p, bo, &coeffs, tx_size, tx_type, plane_bsize, xdec, ydec,
+    let has_coeff = cw.write_coeffs_lv_map(w, p, bo, &coeffs, mode, tx_size, tx_type, plane_bsize, xdec, ydec,
                             fi.use_reduced_tx_set);
 
     // Reconstruct
diff --git a/src/rdo.rs b/src/rdo.rs
index e3e432ab..bb733105 100755
--- a/src/rdo.rs
+++ b/src/rdo.rs
@@ -215,9 +215,6 @@ pub fn rdo_tx_size_type(seq: &Sequence, fi: &FrameInvariants,
   let is_inter = !luma_mode.is_intra();
   let tx_set = get_tx_set(tx_size, is_inter, fi.use_reduced_tx_set);
 
-  cw.bc.set_block_size(bo, bsize);
-  cw.bc.set_mode(bo, bsize, luma_mode);
-
   let tx_type = if tx_set > TxSet::TX_SET_DCTONLY && fi.config.speed <= 3 && !skip {
       // FIXME: there is one redundant transform type decision per encoded block
       rdo_tx_type_decision(fi, fs, cw, luma_mode, ref_frame, mv, bsize, bo, tx_size, tx_set, seq.bit_depth)
-- 
GitLab