OSDN Git Service

h264: drop a pointless indirection
authorAnton Khirnov <anton@khirnov.net>
Mon, 11 Apr 2016 14:19:01 +0000 (16:19 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 24 Apr 2016 08:06:25 +0000 (10:06 +0200)
libavcodec/h264.h
libavcodec/h264_mb_template.c
libavcodec/h264_mc_template.c
libavcodec/h264_slice.c

index 7944927..3dc7d66 100644 (file)
@@ -644,10 +644,6 @@ typedef struct H264Context {
     AVBufferPool *mb_type_pool;
     AVBufferPool *motion_val_pool;
     AVBufferPool *ref_index_pool;
-
-    /* Motion Estimation */
-    qpel_mc_func (*qpel_put)[16];
-    qpel_mc_func (*qpel_avg)[16];
 } H264Context;
 
 extern const uint16_t ff_h264_mb_sizes[4];
index 7da4f41..1f583df 100644 (file)
@@ -173,14 +173,18 @@ static av_noinline void FUNC(hl_decode_mb)(const H264Context *h, H264SliceContex
         } else {
             if (chroma422) {
                 FUNC(hl_motion_422)(h, sl, dest_y, dest_cb, dest_cr,
-                              h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                              h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                              h->h264qpel.put_h264_qpel_pixels_tab,
+                              h->h264chroma.put_h264_chroma_pixels_tab,
+                              h->h264qpel.avg_h264_qpel_pixels_tab,
+                              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, sl, dest_y, dest_cb, dest_cr,
-                              h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                              h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                              h->h264qpel.put_h264_qpel_pixels_tab,
+                              h->h264chroma.put_h264_chroma_pixels_tab,
+                              h->h264qpel.avg_h264_qpel_pixels_tab,
+                              h->h264chroma.avg_h264_chroma_pixels_tab,
                               h->h264dsp.weight_h264_pixels_tab,
                               h->h264dsp.biweight_h264_pixels_tab);
             }
@@ -336,8 +340,10 @@ static av_noinline void FUNC(hl_decode_mb_444)(const H264Context *h, H264SliceCo
                                linesize, 0, 1, SIMPLE, PIXEL_SHIFT);
         } else {
             FUNC(hl_motion_444)(h, sl, dest[0], dest[1], dest[2],
-                      h->qpel_put, h->h264chroma.put_h264_chroma_pixels_tab,
-                      h->qpel_avg, h->h264chroma.avg_h264_chroma_pixels_tab,
+                      h->h264qpel.put_h264_qpel_pixels_tab,
+                      h->h264chroma.put_h264_chroma_pixels_tab,
+                      h->h264qpel.avg_h264_qpel_pixels_tab,
+                      h->h264chroma.avg_h264_chroma_pixels_tab,
                       h->h264dsp.weight_h264_pixels_tab,
                       h->h264dsp.biweight_h264_pixels_tab);
         }
index 8ae1eef..0c8a925 100644 (file)
@@ -64,9 +64,9 @@ static void mc_part(const H264Context *h, H264SliceContext *sl,
 static void MCFUNC(hl_motion)(const H264Context *h, H264SliceContext *sl,
                               uint8_t *dest_y,
                               uint8_t *dest_cb, uint8_t *dest_cr,
-                              qpel_mc_func(*qpix_put)[16],
+                              const qpel_mc_func(*qpix_put)[16],
                               const h264_chroma_mc_func(*chroma_put),
-                              qpel_mc_func(*qpix_avg)[16],
+                              const qpel_mc_func(*qpix_avg)[16],
                               const h264_chroma_mc_func(*chroma_avg),
                               const h264_weight_func *weight_op,
                               const h264_biweight_func *weight_avg)
index fda6d32..ee4b74a 100644 (file)
@@ -934,9 +934,6 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
     int frame_num, droppable, picture_structure;
     int mb_aff_frame = 0;
 
-    h->qpel_put = h->h264qpel.put_h264_qpel_pixels_tab;
-    h->qpel_avg = h->h264qpel.avg_h264_qpel_pixels_tab;
-
     first_mb_in_slice = get_ue_golomb(&sl->gb);
 
     if (first_mb_in_slice == 0) { // FIXME better field boundary detection