]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/h264_mb_template.c
Postpone API-incompatible changes until the next bump.
[ffmpeg] / libavcodec / h264_mb_template.c
index a39d4c9ca0e4fd8455da341cde5471778bfbca15..5b2917f51c17796a96f536b15d3121d06f764a97 100644 (file)
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "svq3.h"
+
 #undef FUNC
 #undef PIXEL_SHIFT
 
@@ -53,7 +55,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
     const int is_h264 = !CONFIG_SVQ3_DECODER || SIMPLE || h->avctx->codec_id == AV_CODEC_ID_H264;
     void (*idct_add)(uint8_t *dst, int16_t *block, int stride);
     const int block_h   = 16 >> h->chroma_y_shift;
-    const int chroma422 = CHROMA422;
+    const int chroma422 = CHROMA422(h);
 
     dest_y  = h->cur_pic.f.data[0] + ((mb_x << PIXEL_SHIFT)     + mb_y * h->linesize)  * 16;
     dest_cb = h->cur_pic.f.data[1] +  (mb_x << PIXEL_SHIFT) * 8 + mb_y * h->uvlinesize * block_h;
@@ -64,7 +66,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
 
     h->list_counts[mb_xy] = h->list_count;
 
-    if (!SIMPLE && MB_FIELD) {
+    if (!SIMPLE && MB_FIELD(h)) {
         linesize     = h->mb_linesize = h->linesize * 2;
         uvlinesize   = h->mb_uvlinesize = h->uvlinesize * 2;
         block_offset = &h->block_offset[48];
@@ -73,7 +75,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
             dest_cb -= h->uvlinesize * (block_h - 1);
             dest_cr -= h->uvlinesize * (block_h - 1);
         }
-        if (FRAME_MBAFF) {
+        if (FRAME_MBAFF(h)) {
             int list;
             for (list = 0; list < h->list_count; list++) {
                 if (!USES_LIST(mb_type, list))
@@ -175,14 +177,14 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
         } else if (is_h264) {
             if (chroma422) {
                 FUNC(hl_motion_422)(h, dest_y, dest_cb, dest_cr,
-                              h->me.qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                              h->me.qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                              h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
+                              h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
                               h->h264dsp.weight_h264_pixels_tab,
                               h->h264dsp.biweight_h264_pixels_tab);
             } else {
                 FUNC(hl_motion_420)(h, dest_y, dest_cb, dest_cr,
-                              h->me.qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                              h->me.qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                              h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
+                              h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
                               h->h264dsp.weight_h264_pixels_tab,
                               h->h264dsp.biweight_h264_pixels_tab);
             }
@@ -207,7 +209,7 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
                                                             h->mb + (16 * 16 * 2 << PIXEL_SHIFT),
                                                             uvlinesize);
                 } else {
-                    idct_add = h->h264dsp.h264_add_pixels4;
+                    idct_add = h->h264dsp.h264_add_pixels4_clear;
                     for (j = 1; j < 3; j++) {
                         for (i = j * 16; i < j * 16 + 4; i++)
                             if (h->non_zero_count_cache[scan8[i]] ||
@@ -261,10 +263,6 @@ static av_noinline void FUNC(hl_decode_mb)(H264Context *h)
                 }
             }
         }
-        if (h->cbp || IS_INTRA(mb_type)) {
-            h->dsp.clear_blocks(h->mb);
-            h->dsp.clear_blocks(h->mb + (24 * 16 << PIXEL_SHIFT));
-        }
     }
 }
 
@@ -296,13 +294,13 @@ static av_noinline void FUNC(hl_decode_mb_444)(H264Context *h)
 
     h->list_counts[mb_xy] = h->list_count;
 
-    if (!SIMPLE && MB_FIELD) {
+    if (!SIMPLE && MB_FIELD(h)) {
         linesize     = h->mb_linesize = h->mb_uvlinesize = h->linesize * 2;
         block_offset = &h->block_offset[48];
         if (mb_y & 1) // FIXME move out of this function?
             for (p = 0; p < 3; p++)
                 dest[p] -= h->linesize * 15;
-        if (FRAME_MBAFF) {
+        if (FRAME_MBAFF(h)) {
             int list;
             for (list = 0; list < h->list_count; list++) {
                 if (!USES_LIST(mb_type, list))
@@ -358,8 +356,8 @@ static av_noinline void FUNC(hl_decode_mb_444)(H264Context *h)
                                linesize, 0, 1, SIMPLE, PIXEL_SHIFT);
         } else {
             FUNC(hl_motion_444)(h, dest[0], dest[1], dest[2],
-                      h->me.qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                      h->me.qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                      h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
+                      h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
                       h->h264dsp.weight_h264_pixels_tab,
                       h->h264dsp.biweight_h264_pixels_tab);
         }
@@ -368,11 +366,6 @@ static av_noinline void FUNC(hl_decode_mb_444)(H264Context *h)
             hl_decode_mb_idct_luma(h, mb_type, 1, SIMPLE, transform_bypass,
                                    PIXEL_SHIFT, block_offset, linesize,
                                    dest[p], p);
-
-        if (h->cbp || IS_INTRA(mb_type)) {
-            h->dsp.clear_blocks(h->mb);
-            h->dsp.clear_blocks(h->mb + (24 * 16 << PIXEL_SHIFT));
-        }
     }
 }