[FFmpeg-cvslog] h264: move decode_mb_skip() from h264.h to h.264_mvpred.h

Diego Biurrun git at videolan.org
Wed Jul 13 00:49:13 CEST 2011


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Tue Jul 12 20:36:50 2011 +0200| [028216b2c2d81f7fe918163c74b0a59cd327f2f7] | committer: Diego Biurrun

h264: move decode_mb_skip() from h264.h to h.264_mvpred.h

This resolves a circular dependency between the headers.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=028216b2c2d81f7fe918163c74b0a59cd327f2f7
---

 libavcodec/h264.h        |   41 -----------------------------------------
 libavcodec/h264_mvpred.h |   39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 41 deletions(-)

diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 9d46ab4..95b4715 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -770,8 +770,6 @@ static av_always_inline int get_chroma_qp(H264Context *h, int t, int qscale){
     return h->pps.chroma_qp_table[t][qscale];
 }
 
-#include "h264_mvpred.h" //For pred_pskip_motion()
-
 static void fill_decode_neighbors(H264Context *h, int mb_type){
     MpegEncContext * const s = &h->s;
     const int mb_xy= h->mb_xy;
@@ -1302,43 +1300,4 @@ static av_always_inline int get_dct8x8_allowed(H264Context *h){
         return !(AV_RN64A(h->sub_mb_type) & ((MB_TYPE_16x8|MB_TYPE_8x16|MB_TYPE_8x8|MB_TYPE_DIRECT2)*0x0001000100010001ULL));
 }
 
-/**
- * decodes a P_SKIP or B_SKIP macroblock
- */
-static void av_unused decode_mb_skip(H264Context *h){
-    MpegEncContext * const s = &h->s;
-    const int mb_xy= h->mb_xy;
-    int mb_type=0;
-
-    memset(h->non_zero_count[mb_xy], 0, 48);
-
-    if(MB_FIELD)
-        mb_type|= MB_TYPE_INTERLACED;
-
-    if( h->slice_type_nos == AV_PICTURE_TYPE_B )
-    {
-        // just for fill_caches. pred_direct_motion will set the real mb_type
-        mb_type|= MB_TYPE_L0L1|MB_TYPE_DIRECT2|MB_TYPE_SKIP;
-        if(h->direct_spatial_mv_pred){
-            fill_decode_neighbors(h, mb_type);
-        fill_decode_caches(h, mb_type); //FIXME check what is needed and what not ...
-        }
-        ff_h264_pred_direct_motion(h, &mb_type);
-        mb_type|= MB_TYPE_SKIP;
-    }
-    else
-    {
-        mb_type|= MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P1L0|MB_TYPE_SKIP;
-
-        fill_decode_neighbors(h, mb_type);
-        pred_pskip_motion(h);
-    }
-
-    write_back_motion(h, mb_type);
-    s->current_picture.f.mb_type[mb_xy]      = mb_type;
-    s->current_picture.f.qscale_table[mb_xy] = s->qscale;
-    h->slice_table[ mb_xy ]= h->slice_num;
-    h->prev_mb_skipped= 1;
-}
-
 #endif /* AVCODEC_H264_H */
diff --git a/libavcodec/h264_mvpred.h b/libavcodec/h264_mvpred.h
index 1d40c0a..52c0323 100644
--- a/libavcodec/h264_mvpred.h
+++ b/libavcodec/h264_mvpred.h
@@ -327,4 +327,43 @@ zeromv:
     return;
 }
 
+/**
+ * decodes a P_SKIP or B_SKIP macroblock
+ */
+static void av_unused decode_mb_skip(H264Context *h){
+    MpegEncContext * const s = &h->s;
+    const int mb_xy= h->mb_xy;
+    int mb_type=0;
+
+    memset(h->non_zero_count[mb_xy], 0, 48);
+
+    if(MB_FIELD)
+        mb_type|= MB_TYPE_INTERLACED;
+
+    if( h->slice_type_nos == AV_PICTURE_TYPE_B )
+    {
+        // just for fill_caches. pred_direct_motion will set the real mb_type
+        mb_type|= MB_TYPE_L0L1|MB_TYPE_DIRECT2|MB_TYPE_SKIP;
+        if(h->direct_spatial_mv_pred){
+            fill_decode_neighbors(h, mb_type);
+        fill_decode_caches(h, mb_type); //FIXME check what is needed and what not ...
+        }
+        ff_h264_pred_direct_motion(h, &mb_type);
+        mb_type|= MB_TYPE_SKIP;
+    }
+    else
+    {
+        mb_type|= MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P1L0|MB_TYPE_SKIP;
+
+        fill_decode_neighbors(h, mb_type);
+        pred_pskip_motion(h);
+    }
+
+    write_back_motion(h, mb_type);
+    s->current_picture.f.mb_type[mb_xy]      = mb_type;
+    s->current_picture.f.qscale_table[mb_xy] = s->qscale;
+    h->slice_table[ mb_xy ]= h->slice_num;
+    h->prev_mb_skipped= 1;
+}
+
 #endif /* AVCODEC_H264_MVPRED_H */



More information about the ffmpeg-cvslog mailing list