]> granicus.if.org Git - libvpx/commitdiff
Moved prob_dualpred to common.
authorPaul Wilkins <paulwilkins@google.com>
Thu, 2 Feb 2012 14:33:34 +0000 (14:33 +0000)
committerPaul Wilkins <paulwilkins@google.com>
Mon, 6 Feb 2012 16:37:11 +0000 (16:37 +0000)
Moved the prob_dualpred[] sturcture to common.
Created common prediction entry for Dual flag.

Change-Id: I9ac3d128bae6114f09e5c18216d4b95cf36453d5

vp8/common/onyxc_int.h
vp8/common/pred_common.h
vp8/decoder/decodemv.c
vp8/decoder/onyxd_int.h
vp8/encoder/bitstream.c
vp8/encoder/onyx_if.c
vp8/encoder/onyx_int.h
vp8/encoder/rdopt.c

index a86635a7c67e3a878e1fe8a1dcd51f079f0b6397..bca9aed4cde9349d30adff772d5a7763c042a68e 100644 (file)
@@ -241,6 +241,10 @@ typedef struct VP8Common
     vp8_prob mod_refprobs[MAX_REF_FRAMES][PREDICTION_PROBS];
 #endif
 
+#if CONFIG_DUALPRED
+    vp8_prob prob_dualpred[3];
+#endif /* CONFIG_DUALPRED */
+
     FRAME_CONTEXT lfc_a; /* last alt ref entropy */
     FRAME_CONTEXT lfc; /* last frame entropy */
     FRAME_CONTEXT fc;  /* this frame entropy */
index 9463937dbe95df4b30f0b140fe75a6b689cc8770..94a9ffe2dcaf76ba6baf149fcea1196da78fa803 100644 (file)
@@ -22,7 +22,8 @@ typedef enum
     PRED_SEG_ID = 0,               // Segment identifier
 
 #if CONFIG_COMPRED
-    PRED_REF = 1
+    PRED_REF = 1,
+    PRED_DUAL = 2
 #endif
 
 } PRED_ID;
index 4238e4d18ef9187036fb6d2dc9bf67d8ea983749..78139655c02352d5828e5f5837a67ee47437fad0 100644 (file)
@@ -521,9 +521,9 @@ static void mb_mode_mv_init(VP8D_COMP *pbi)
             cm->dual_pred_mode += vp8_read(bc, 128);
         if (cm->dual_pred_mode == HYBRID_PREDICTION)
         {
-            pbi->prob_dualpred[0] = (vp8_prob)vp8_read_literal(bc, 8);
-            pbi->prob_dualpred[1] = (vp8_prob)vp8_read_literal(bc, 8);
-            pbi->prob_dualpred[2] = (vp8_prob)vp8_read_literal(bc, 8);
+            cm->prob_dualpred[0] = (vp8_prob)vp8_read_literal(bc, 8);
+            cm->prob_dualpred[1] = (vp8_prob)vp8_read_literal(bc, 8);
+            cm->prob_dualpred[2] = (vp8_prob)vp8_read_literal(bc, 8);
         }
 #endif /* CONFIG_DUALPRED */
 
@@ -842,8 +842,8 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
 #if CONFIG_DUALPRED
             if (pbi->common.dual_pred_mode == DUAL_PREDICTION_ONLY ||
                 (pbi->common.dual_pred_mode == HYBRID_PREDICTION &&
-                 vp8_read(bc, pbi->prob_dualpred[(mi[-1].mbmi.second_ref_frame != INTRA_FRAME) +
-                                                 (mi[-mis].mbmi.second_ref_frame != INTRA_FRAME)])))
+                 vp8_read(bc, cm->prob_dualpred[(mi[-1].mbmi.second_ref_frame != INTRA_FRAME) +
+                                                (mi[-mis].mbmi.second_ref_frame != INTRA_FRAME)])))
             {
                 mbmi->second_ref_frame = mbmi->ref_frame + 1;
                 if (mbmi->second_ref_frame == 4)
index 4e22bd04109c4c38ee3c65c0d66fe01b9ade06f4..df2cc6fcb2de1014f530ce1e81f90a374ed1af6d 100644 (file)
@@ -130,9 +130,6 @@ typedef struct VP8Decompressor
 #endif
 
     vp8_prob prob_skip_false;
-#if CONFIG_DUALPRED
-    vp8_prob prob_dualpred[3];
-#endif /* CONFIG_DUALPRED */
 
 #if CONFIG_ERROR_CONCEALMENT
     MB_OVERLAP *overlaps;
index 3c0ea4c2baeadb7b69fa908f76a25e797696fd5e..99f3df9dcd864aa940e433201095f6e69f0cf453 100644 (file)
@@ -1419,9 +1419,9 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
 #if CONFIG_DUALPRED
     if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
     {
-        cpi->prob_dualpred[0] = (prob_dual_pred[0] + cpi->prob_dualpred[0] + 1) >> 1;
-        cpi->prob_dualpred[1] = (prob_dual_pred[1] + cpi->prob_dualpred[1] + 1) >> 1;
-        cpi->prob_dualpred[2] = (prob_dual_pred[2] + cpi->prob_dualpred[2] + 1) >> 1;
+        pc->prob_dualpred[0] = (prob_dual_pred[0] + pc->prob_dualpred[0] + 1) >> 1;
+        pc->prob_dualpred[1] = (prob_dual_pred[1] + pc->prob_dualpred[1] + 1) >> 1;
+        pc->prob_dualpred[2] = (prob_dual_pred[2] + pc->prob_dualpred[2] + 1) >> 1;
     }
 #endif /* CONFIG_DUALPRED */
 }
@@ -1782,9 +1782,9 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
 #if CONFIG_DUALPRED
     if (cpi->common.dual_pred_mode == HYBRID_PREDICTION)
     {
-        cpi->prob_dualpred[0] = (prob_dual_pred[0] + cpi->prob_dualpred[0] + 1) >> 1;
-        cpi->prob_dualpred[1] = (prob_dual_pred[1] + cpi->prob_dualpred[1] + 1) >> 1;
-        cpi->prob_dualpred[2] = (prob_dual_pred[2] + cpi->prob_dualpred[2] + 1) >> 1;
+        pc->prob_dualpred[0] = (prob_dual_pred[0] + pc->prob_dualpred[0] + 1) >> 1;
+        pc->prob_dualpred[1] = (prob_dual_pred[1] + pc->prob_dualpred[1] + 1) >> 1;
+        pc->prob_dualpred[2] = (prob_dual_pred[2] + pc->prob_dualpred[2] + 1) >> 1;
     }
 #endif /* CONFIG_DUALPRED */
 }
index e3656e2d8021947cc32bacfa25cfde23ff98d85a..c50898886d7a4dab689310de3a6f6e2a95ed9595 100644 (file)
@@ -2355,9 +2355,9 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf)
     cm->prob_gf_coded                 = 128;
     cm->prob_intra_coded              = 63;
 #if CONFIG_DUALPRED
-    cpi->prob_dualpred[0]             = 128;
-    cpi->prob_dualpred[1]             = 128;
-    cpi->prob_dualpred[2]             = 128;
+    cm->prob_dualpred[0]             = 128;
+    cm->prob_dualpred[1]             = 128;
+    cm->prob_dualpred[2]             = 128;
 #endif /* CONFIG_DUALPRED */
 
     // Prime the recent reference frame useage counters.
index cd2f25eaa77979f7fb1aef9a8b2a8c2c817c7c2e..184c650ee6e6b44113c2046798c5539dd562bd08 100644 (file)
@@ -509,9 +509,6 @@ typedef struct VP8_COMP
     int prob_skip_false;
     int last_skip_false_probs[3];
     int last_skip_probs_q[3];
-#if CONFIG_DUALPRED
-    int prob_dualpred[3];
-#endif /* CONFIG_DUALPRED */
 
     int recent_ref_frame_usage[MAX_REF_FRAMES];
     int count_mb_ref_frame_usage[MAX_REF_FRAMES];
index 86d53d324d1d6413809c835824d32cb9e2a3c19d..094ad4a219bd1ff0f2521cee985ea5aeeb0a5c1f 100644 (file)
@@ -2103,6 +2103,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
                             int *best_single_rd_diff, int *best_dual_rd_diff,
                             int *best_hybrid_rd_diff)
 {
+    VP8_COMMON *cm = &cpi->common;
     BLOCK *b = &x->block[0];
     BLOCKD *d = &x->e_mbd.block[0];
     MACROBLOCKD *xd = &x->e_mbd;
@@ -2631,7 +2632,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
                 MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi;
                 MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi;
                 int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME);
-                dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 0);
+                dualmode_cost = vp8_cost_bit(cm->prob_dualpred[cnt], 0);
             }
 #endif /* CONFIG_DUALPRED */
 
@@ -2791,7 +2792,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
                 MB_MODE_INFO *t = &x->e_mbd.mode_info_context[-cpi->common.mode_info_stride].mbmi;
                 MB_MODE_INFO *l = &x->e_mbd.mode_info_context[-1].mbmi;
                 int cnt = (t->second_ref_frame != INTRA_FRAME) + (l->second_ref_frame != INTRA_FRAME);
-                dualmode_cost = vp8_cost_bit(cpi->prob_dualpred[cnt], 1);
+                dualmode_cost = vp8_cost_bit(cm->prob_dualpred[cnt], 1);
             }
         }
 #endif /* CONFIG_DUALPRED */