LCOV - code coverage report
Current view: top level - libavcodec - h264qpel.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 13 19 68.4 %
Date: 2017-12-13 02:34:56 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :  * H.26L/H.264/AVC/JVT/14496-10/... encoder/decoder
       3             :  * Copyright (c) 2003-2010 Michael Niedermayer <michaelni@gmx.at>
       4             :  *
       5             :  * This file is part of FFmpeg.
       6             :  *
       7             :  * FFmpeg is free software; you can redistribute it and/or
       8             :  * modify it under the terms of the GNU Lesser General Public
       9             :  * License as published by the Free Software Foundation; either
      10             :  * version 2.1 of the License, or (at your option) any later version.
      11             :  *
      12             :  * FFmpeg is distributed in the hope that it will be useful,
      13             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      14             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15             :  * Lesser General Public License for more details.
      16             :  *
      17             :  * You should have received a copy of the GNU Lesser General Public
      18             :  * License along with FFmpeg; if not, write to the Free Software
      19             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      20             :  */
      21             : 
      22             : #include "libavutil/attributes.h"
      23             : #include "h264qpel.h"
      24             : 
      25             : #define pixeltmp int16_t
      26             : #define BIT_DEPTH 8
      27             : #include "h264qpel_template.c"
      28             : #undef BIT_DEPTH
      29             : 
      30             : #define BIT_DEPTH 9
      31             : #include "h264qpel_template.c"
      32             : #undef BIT_DEPTH
      33             : 
      34             : #define BIT_DEPTH 10
      35             : #include "h264qpel_template.c"
      36             : #undef BIT_DEPTH
      37             : #undef pixeltmp
      38             : 
      39             : #define pixeltmp int32_t
      40             : #define BIT_DEPTH 12
      41             : #include "h264qpel_template.c"
      42             : #undef BIT_DEPTH
      43             : 
      44             : #define BIT_DEPTH 14
      45             : #include "h264qpel_template.c"
      46             : #undef BIT_DEPTH
      47             : 
      48             : 
      49         620 : av_cold void ff_h264qpel_init(H264QpelContext *c, int bit_depth)
      50             : {
      51             : #undef FUNCC
      52             : #define FUNCC(f, depth) f ## _ ## depth ## _c
      53             : 
      54             : #define dspfunc2(PFX, IDX, NUM, depth)                                  \
      55             :     c->PFX ## _pixels_tab[IDX][ 0] = FUNCC(PFX ## NUM ## _mc00, depth); \
      56             :     c->PFX ## _pixels_tab[IDX][ 1] = FUNCC(PFX ## NUM ## _mc10, depth); \
      57             :     c->PFX ## _pixels_tab[IDX][ 2] = FUNCC(PFX ## NUM ## _mc20, depth); \
      58             :     c->PFX ## _pixels_tab[IDX][ 3] = FUNCC(PFX ## NUM ## _mc30, depth); \
      59             :     c->PFX ## _pixels_tab[IDX][ 4] = FUNCC(PFX ## NUM ## _mc01, depth); \
      60             :     c->PFX ## _pixels_tab[IDX][ 5] = FUNCC(PFX ## NUM ## _mc11, depth); \
      61             :     c->PFX ## _pixels_tab[IDX][ 6] = FUNCC(PFX ## NUM ## _mc21, depth); \
      62             :     c->PFX ## _pixels_tab[IDX][ 7] = FUNCC(PFX ## NUM ## _mc31, depth); \
      63             :     c->PFX ## _pixels_tab[IDX][ 8] = FUNCC(PFX ## NUM ## _mc02, depth); \
      64             :     c->PFX ## _pixels_tab[IDX][ 9] = FUNCC(PFX ## NUM ## _mc12, depth); \
      65             :     c->PFX ## _pixels_tab[IDX][10] = FUNCC(PFX ## NUM ## _mc22, depth); \
      66             :     c->PFX ## _pixels_tab[IDX][11] = FUNCC(PFX ## NUM ## _mc32, depth); \
      67             :     c->PFX ## _pixels_tab[IDX][12] = FUNCC(PFX ## NUM ## _mc03, depth); \
      68             :     c->PFX ## _pixels_tab[IDX][13] = FUNCC(PFX ## NUM ## _mc13, depth); \
      69             :     c->PFX ## _pixels_tab[IDX][14] = FUNCC(PFX ## NUM ## _mc23, depth); \
      70             :     c->PFX ## _pixels_tab[IDX][15] = FUNCC(PFX ## NUM ## _mc33, depth)
      71             : 
      72             : #define SET_QPEL(depth)                         \
      73             :     dspfunc2(put_h264_qpel, 0, 16, depth);      \
      74             :     dspfunc2(put_h264_qpel, 1,  8, depth);      \
      75             :     dspfunc2(put_h264_qpel, 2,  4, depth);      \
      76             :     dspfunc2(put_h264_qpel, 3,  2, depth);      \
      77             :     dspfunc2(avg_h264_qpel, 0, 16, depth);      \
      78             :     dspfunc2(avg_h264_qpel, 1,  8, depth);      \
      79             :     dspfunc2(avg_h264_qpel, 2,  4, depth)
      80             : 
      81         620 :     switch (bit_depth) {
      82         526 :     default:
      83         526 :         SET_QPEL(8);
      84         526 :         break;
      85          31 :     case 9:
      86          31 :         SET_QPEL(9);
      87          31 :         break;
      88          63 :     case 10:
      89          63 :         SET_QPEL(10);
      90          63 :         break;
      91           0 :     case 12:
      92           0 :         SET_QPEL(12);
      93           0 :         break;
      94           0 :     case 14:
      95           0 :         SET_QPEL(14);
      96           0 :         break;
      97             :     }
      98             : 
      99             :     if (ARCH_AARCH64)
     100             :         ff_h264qpel_init_aarch64(c, bit_depth);
     101             :     if (ARCH_ARM)
     102             :         ff_h264qpel_init_arm(c, bit_depth);
     103             :     if (ARCH_PPC)
     104             :         ff_h264qpel_init_ppc(c, bit_depth);
     105             :     if (ARCH_X86)
     106         620 :         ff_h264qpel_init_x86(c, bit_depth);
     107             :     if (ARCH_MIPS)
     108             :         ff_h264qpel_init_mips(c, bit_depth);
     109         620 : }

Generated by: LCOV version 1.13