setting special motion vectors in intra macroblocks
authorStefan Gehrer <stefan.gehrer@gmx.de>
Sat, 7 Jul 2007 06:34:30 +0000 (06:34 +0000)
committerStefan Gehrer <stefan.gehrer@gmx.de>
Sat, 7 Jul 2007 06:34:30 +0000 (06:34 +0000)
is now in its own inline function

Originally committed as revision 9516 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/cavs.c
libavcodec/cavs.h

index 4e4e592..6846074 100644 (file)
@@ -645,15 +645,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code) {
 
     decode_residual_chroma(h);
     filter_mb(h,I_8X8);
-
-    /* mark motion vectors as intra */
-    h->mv[MV_FWD_X0] = ff_cavs_intra_mv;
-    set_mvs(&h->mv[MV_FWD_X0], BLK_16X16);
-    h->mv[MV_BWD_X0] = ff_cavs_intra_mv;
-    set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
-    if(h->pic_type != FF_B_TYPE)
-        *h->col_type = I_8X8;
-
+    set_mv_intra(h);
     return 0;
 }
 
index b30f0ac..aceb3b9 100644 (file)
@@ -228,6 +228,7 @@ extern const int_fast8_t ff_left_modifier_l[8];
 extern const int_fast8_t ff_top_modifier_l[8];
 extern const int_fast8_t ff_left_modifier_c[7];
 extern const int_fast8_t ff_top_modifier_c[7];
+extern const vector_t ff_cavs_intra_mv;
 extern const vector_t ff_cavs_un_mv;
 
 static inline void load_intra_pred_luma(AVSContext *h, uint8_t *top,
@@ -344,6 +345,16 @@ static inline void set_mvs(vector_t *mv, enum block_t size) {
     }
 }
 
+static inline void set_mv_intra(AVSContext *h) {
+    h->mv[MV_FWD_X0] = ff_cavs_intra_mv;
+    set_mvs(&h->mv[MV_FWD_X0], BLK_16X16);
+    h->mv[MV_BWD_X0] = ff_cavs_intra_mv;
+    set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
+    if(h->pic_type != FF_B_TYPE)
+        *h->col_type = I_8X8;
+}
+
+
 /**
  * initialise predictors for motion vectors and intra prediction
  */