LCOV - code coverage report
Current view: top level - libavcodec/x86 - h264_intrapred_init.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 173 173 100.0 %
Date: 2017-10-18 21:45:51 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2010 Fiona Glaser <fiona@x264.com>
       3             :  *
       4             :  * This file is part of FFmpeg.
       5             :  *
       6             :  * FFmpeg is free software; you can redistribute it and/or
       7             :  * modify it under the terms of the GNU Lesser General Public
       8             :  * License as published by the Free Software Foundation; either
       9             :  * version 2.1 of the License, or (at your option) any later version.
      10             :  *
      11             :  * FFmpeg is distributed in the hope that it will be useful,
      12             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14             :  * Lesser General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU Lesser General Public
      17             :  * License along with FFmpeg; if not, write to the Free Software
      18             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      19             :  */
      20             : 
      21             : #include "libavutil/attributes.h"
      22             : #include "libavutil/cpu.h"
      23             : #include "libavutil/x86/cpu.h"
      24             : #include "libavcodec/avcodec.h"
      25             : #include "libavcodec/h264pred.h"
      26             : 
      27             : #define PRED4x4(TYPE, DEPTH, OPT) \
      28             : void ff_pred4x4_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
      29             :                                                     const uint8_t *topright, \
      30             :                                                     ptrdiff_t stride);
      31             : 
      32             : PRED4x4(dc, 10, mmxext)
      33             : PRED4x4(down_left, 10, sse2)
      34             : PRED4x4(down_left, 10, avx)
      35             : PRED4x4(down_right, 10, sse2)
      36             : PRED4x4(down_right, 10, ssse3)
      37             : PRED4x4(down_right, 10, avx)
      38             : PRED4x4(vertical_left, 10, sse2)
      39             : PRED4x4(vertical_left, 10, avx)
      40             : PRED4x4(vertical_right, 10, sse2)
      41             : PRED4x4(vertical_right, 10, ssse3)
      42             : PRED4x4(vertical_right, 10, avx)
      43             : PRED4x4(horizontal_up, 10, mmxext)
      44             : PRED4x4(horizontal_down, 10, sse2)
      45             : PRED4x4(horizontal_down, 10, ssse3)
      46             : PRED4x4(horizontal_down, 10, avx)
      47             : 
      48             : #define PRED8x8(TYPE, DEPTH, OPT) \
      49             : void ff_pred8x8_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
      50             :                                                     ptrdiff_t stride);
      51             : 
      52             : PRED8x8(dc, 10, mmxext)
      53             : PRED8x8(dc, 10, sse2)
      54             : PRED8x8(top_dc, 10, sse2)
      55             : PRED8x8(plane, 10, sse2)
      56             : PRED8x8(vertical, 10, sse2)
      57             : PRED8x8(horizontal, 10, sse2)
      58             : 
      59             : #define PRED8x8L(TYPE, DEPTH, OPT)\
      60             : void ff_pred8x8l_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
      61             :                                                      int has_topleft, \
      62             :                                                      int has_topright, \
      63             :                                                      ptrdiff_t stride);
      64             : 
      65             : PRED8x8L(dc, 10, sse2)
      66             : PRED8x8L(dc, 10, avx)
      67             : PRED8x8L(128_dc, 10, mmxext)
      68             : PRED8x8L(128_dc, 10, sse2)
      69             : PRED8x8L(top_dc, 10, sse2)
      70             : PRED8x8L(top_dc, 10, avx)
      71             : PRED8x8L(vertical, 10, sse2)
      72             : PRED8x8L(vertical, 10, avx)
      73             : PRED8x8L(horizontal, 10, sse2)
      74             : PRED8x8L(horizontal, 10, ssse3)
      75             : PRED8x8L(horizontal, 10, avx)
      76             : PRED8x8L(down_left, 10, sse2)
      77             : PRED8x8L(down_left, 10, ssse3)
      78             : PRED8x8L(down_left, 10, avx)
      79             : PRED8x8L(down_right, 10, sse2)
      80             : PRED8x8L(down_right, 10, ssse3)
      81             : PRED8x8L(down_right, 10, avx)
      82             : PRED8x8L(vertical_right, 10, sse2)
      83             : PRED8x8L(vertical_right, 10, ssse3)
      84             : PRED8x8L(vertical_right, 10, avx)
      85             : PRED8x8L(horizontal_up, 10, sse2)
      86             : PRED8x8L(horizontal_up, 10, ssse3)
      87             : PRED8x8L(horizontal_up, 10, avx)
      88             : 
      89             : #define PRED16x16(TYPE, DEPTH, OPT)\
      90             : void ff_pred16x16_ ## TYPE ## _ ## DEPTH ## _ ## OPT (uint8_t *src, \
      91             :                                                       ptrdiff_t stride);
      92             : 
      93             : PRED16x16(dc, 10, mmxext)
      94             : PRED16x16(dc, 10, sse2)
      95             : PRED16x16(top_dc, 10, mmxext)
      96             : PRED16x16(top_dc, 10, sse2)
      97             : PRED16x16(128_dc, 10, mmxext)
      98             : PRED16x16(128_dc, 10, sse2)
      99             : PRED16x16(left_dc, 10, mmxext)
     100             : PRED16x16(left_dc, 10, sse2)
     101             : PRED16x16(vertical, 10, mmxext)
     102             : PRED16x16(vertical, 10, sse2)
     103             : PRED16x16(horizontal, 10, mmxext)
     104             : PRED16x16(horizontal, 10, sse2)
     105             : 
     106             : /* 8-bit versions */
     107             : PRED16x16(vertical, 8, mmx)
     108             : PRED16x16(vertical, 8, sse)
     109             : PRED16x16(horizontal, 8, mmx)
     110             : PRED16x16(horizontal, 8, mmxext)
     111             : PRED16x16(horizontal, 8, ssse3)
     112             : PRED16x16(dc, 8, mmxext)
     113             : PRED16x16(dc, 8, sse2)
     114             : PRED16x16(dc, 8, ssse3)
     115             : PRED16x16(plane_h264, 8, mmx)
     116             : PRED16x16(plane_h264, 8, mmxext)
     117             : PRED16x16(plane_h264, 8, sse2)
     118             : PRED16x16(plane_h264, 8, ssse3)
     119             : PRED16x16(plane_rv40, 8, mmx)
     120             : PRED16x16(plane_rv40, 8, mmxext)
     121             : PRED16x16(plane_rv40, 8, sse2)
     122             : PRED16x16(plane_rv40, 8, ssse3)
     123             : PRED16x16(plane_svq3, 8, mmx)
     124             : PRED16x16(plane_svq3, 8, mmxext)
     125             : PRED16x16(plane_svq3, 8, sse2)
     126             : PRED16x16(plane_svq3, 8, ssse3)
     127             : PRED16x16(tm_vp8, 8, mmx)
     128             : PRED16x16(tm_vp8, 8, mmxext)
     129             : PRED16x16(tm_vp8, 8, sse2)
     130             : PRED16x16(tm_vp8, 8, avx2)
     131             : 
     132             : PRED8x8(top_dc, 8, mmxext)
     133             : PRED8x8(dc_rv40, 8, mmxext)
     134             : PRED8x8(dc, 8, mmxext)
     135             : PRED8x8(vertical, 8, mmx)
     136             : PRED8x8(horizontal, 8, mmx)
     137             : PRED8x8(horizontal, 8, mmxext)
     138             : PRED8x8(horizontal, 8, ssse3)
     139             : PRED8x8(plane, 8, mmx)
     140             : PRED8x8(plane, 8, mmxext)
     141             : PRED8x8(plane, 8, sse2)
     142             : PRED8x8(plane, 8, ssse3)
     143             : PRED8x8(tm_vp8, 8, mmx)
     144             : PRED8x8(tm_vp8, 8, mmxext)
     145             : PRED8x8(tm_vp8, 8, sse2)
     146             : PRED8x8(tm_vp8, 8, ssse3)
     147             : 
     148             : PRED8x8L(top_dc, 8, mmxext)
     149             : PRED8x8L(top_dc, 8, ssse3)
     150             : PRED8x8L(dc, 8, mmxext)
     151             : PRED8x8L(dc, 8, ssse3)
     152             : PRED8x8L(horizontal, 8, mmxext)
     153             : PRED8x8L(horizontal, 8, ssse3)
     154             : PRED8x8L(vertical, 8, mmxext)
     155             : PRED8x8L(vertical, 8, ssse3)
     156             : PRED8x8L(down_left, 8, mmxext)
     157             : PRED8x8L(down_left, 8, sse2)
     158             : PRED8x8L(down_left, 8, ssse3)
     159             : PRED8x8L(down_right, 8, mmxext)
     160             : PRED8x8L(down_right, 8, sse2)
     161             : PRED8x8L(down_right, 8, ssse3)
     162             : PRED8x8L(vertical_right, 8, mmxext)
     163             : PRED8x8L(vertical_right, 8, sse2)
     164             : PRED8x8L(vertical_right, 8, ssse3)
     165             : PRED8x8L(vertical_left, 8, sse2)
     166             : PRED8x8L(vertical_left, 8, ssse3)
     167             : PRED8x8L(horizontal_up, 8, mmxext)
     168             : PRED8x8L(horizontal_up, 8, ssse3)
     169             : PRED8x8L(horizontal_down, 8, mmxext)
     170             : PRED8x8L(horizontal_down, 8, sse2)
     171             : PRED8x8L(horizontal_down, 8, ssse3)
     172             : 
     173             : PRED4x4(dc, 8, mmxext)
     174             : PRED4x4(down_left, 8, mmxext)
     175             : PRED4x4(down_right, 8, mmxext)
     176             : PRED4x4(vertical_left, 8, mmxext)
     177             : PRED4x4(vertical_right, 8, mmxext)
     178             : PRED4x4(horizontal_up, 8, mmxext)
     179             : PRED4x4(horizontal_down, 8, mmxext)
     180             : PRED4x4(tm_vp8, 8, mmx)
     181             : PRED4x4(tm_vp8, 8, mmxext)
     182             : PRED4x4(tm_vp8, 8, ssse3)
     183             : PRED4x4(vertical_vp8, 8, mmxext)
     184             : 
     185        1039 : av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id,
     186             :                                    const int bit_depth,
     187             :                                    const int chroma_format_idc)
     188             : {
     189        1039 :     int cpu_flags = av_get_cpu_flags();
     190             : 
     191        1039 :     if (bit_depth == 8) {
     192         789 :         if (EXTERNAL_MMX(cpu_flags)) {
     193         265 :             h->pred16x16[VERT_PRED8x8         ] = ff_pred16x16_vertical_8_mmx;
     194         265 :             h->pred16x16[HOR_PRED8x8          ] = ff_pred16x16_horizontal_8_mmx;
     195         265 :             if (chroma_format_idc <= 1) {
     196         215 :                 h->pred8x8  [VERT_PRED8x8     ] = ff_pred8x8_vertical_8_mmx;
     197         215 :                 h->pred8x8  [HOR_PRED8x8      ] = ff_pred8x8_horizontal_8_mmx;
     198             :             }
     199         265 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     200          56 :                 h->pred16x16[PLANE_PRED8x8    ] = ff_pred16x16_tm_vp8_8_mmx;
     201          56 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_mmx;
     202          56 :                 h->pred4x4  [TM_VP8_PRED      ] = ff_pred4x4_tm_vp8_8_mmx;
     203             :             } else {
     204         209 :                 if (chroma_format_idc <= 1)
     205         159 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmx;
     206         209 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     207          50 :                     if (cpu_flags & AV_CPU_FLAG_CMOV)
     208          50 :                         h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_mmx;
     209         159 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     210          48 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_mmx;
     211             :                 } else {
     212         111 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_mmx;
     213             :                 }
     214             :             }
     215             :         }
     216             : 
     217         789 :         if (EXTERNAL_MMXEXT(cpu_flags)) {
     218         245 :             h->pred16x16[HOR_PRED8x8            ] = ff_pred16x16_horizontal_8_mmxext;
     219         245 :             h->pred16x16[DC_PRED8x8             ] = ff_pred16x16_dc_8_mmxext;
     220         245 :             if (chroma_format_idc <= 1)
     221         199 :                 h->pred8x8[HOR_PRED8x8          ] = ff_pred8x8_horizontal_8_mmxext;
     222         245 :             h->pred8x8l [TOP_DC_PRED            ] = ff_pred8x8l_top_dc_8_mmxext;
     223         245 :             h->pred8x8l [DC_PRED                ] = ff_pred8x8l_dc_8_mmxext;
     224         245 :             h->pred8x8l [HOR_PRED               ] = ff_pred8x8l_horizontal_8_mmxext;
     225         245 :             h->pred8x8l [VERT_PRED              ] = ff_pred8x8l_vertical_8_mmxext;
     226         245 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED   ] = ff_pred8x8l_down_right_8_mmxext;
     227         245 :             h->pred8x8l [VERT_RIGHT_PRED        ] = ff_pred8x8l_vertical_right_8_mmxext;
     228         245 :             h->pred8x8l [HOR_UP_PRED            ] = ff_pred8x8l_horizontal_up_8_mmxext;
     229         245 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED    ] = ff_pred8x8l_down_left_8_mmxext;
     230         245 :             h->pred8x8l [HOR_DOWN_PRED          ] = ff_pred8x8l_horizontal_down_8_mmxext;
     231         245 :             h->pred4x4  [DIAG_DOWN_RIGHT_PRED   ] = ff_pred4x4_down_right_8_mmxext;
     232         245 :             h->pred4x4  [VERT_RIGHT_PRED        ] = ff_pred4x4_vertical_right_8_mmxext;
     233         245 :             h->pred4x4  [HOR_DOWN_PRED          ] = ff_pred4x4_horizontal_down_8_mmxext;
     234         245 :             h->pred4x4  [DC_PRED                ] = ff_pred4x4_dc_8_mmxext;
     235         245 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8 ||
     236             :                 codec_id == AV_CODEC_ID_H264) {
     237         155 :                 h->pred4x4  [DIAG_DOWN_LEFT_PRED] = ff_pred4x4_down_left_8_mmxext;
     238             :             }
     239         245 :             if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) {
     240         149 :                 h->pred4x4  [VERT_LEFT_PRED     ] = ff_pred4x4_vertical_left_8_mmxext;
     241             :             }
     242         245 :             if (codec_id != AV_CODEC_ID_RV40) {
     243         201 :                 h->pred4x4  [HOR_UP_PRED        ] = ff_pred4x4_horizontal_up_8_mmxext;
     244             :             }
     245         245 :             if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) {
     246         149 :                 if (chroma_format_idc <= 1) {
     247         103 :                     h->pred8x8[TOP_DC_PRED8x8   ] = ff_pred8x8_top_dc_8_mmxext;
     248         103 :                     h->pred8x8[DC_PRED8x8       ] = ff_pred8x8_dc_8_mmxext;
     249             :                 }
     250             :             }
     251         245 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     252          52 :                 h->pred16x16[PLANE_PRED8x8      ] = ff_pred16x16_tm_vp8_8_mmxext;
     253          52 :                 h->pred8x8  [DC_PRED8x8         ] = ff_pred8x8_dc_rv40_8_mmxext;
     254          52 :                 h->pred8x8  [PLANE_PRED8x8      ] = ff_pred8x8_tm_vp8_8_mmxext;
     255          52 :                 h->pred4x4  [TM_VP8_PRED        ] = ff_pred4x4_tm_vp8_8_mmxext;
     256          52 :                 h->pred4x4  [VERT_PRED          ] = ff_pred4x4_vertical_vp8_8_mmxext;
     257             :             } else {
     258         193 :                 if (chroma_format_idc <= 1)
     259         147 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmxext;
     260         193 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     261          46 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_svq3_8_mmxext;
     262         147 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     263          44 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_rv40_8_mmxext;
     264             :                 } else {
     265         103 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_h264_8_mmxext;
     266             :                 }
     267             :             }
     268             :         }
     269             : 
     270         789 :         if (EXTERNAL_SSE(cpu_flags)) {
     271         225 :             h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_8_sse;
     272             :         }
     273             : 
     274         789 :         if (EXTERNAL_SSE2(cpu_flags)) {
     275         205 :             h->pred16x16[DC_PRED8x8           ] = ff_pred16x16_dc_8_sse2;
     276         205 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED  ] = ff_pred8x8l_down_left_8_sse2;
     277         205 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_sse2;
     278         205 :             h->pred8x8l [VERT_RIGHT_PRED      ] = ff_pred8x8l_vertical_right_8_sse2;
     279         205 :             h->pred8x8l [VERT_LEFT_PRED       ] = ff_pred8x8l_vertical_left_8_sse2;
     280         205 :             h->pred8x8l [HOR_DOWN_PRED        ] = ff_pred8x8l_horizontal_down_8_sse2;
     281         205 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     282          44 :                 h->pred16x16[PLANE_PRED8x8    ] = ff_pred16x16_tm_vp8_8_sse2;
     283          44 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_sse2;
     284             :             } else {
     285         161 :                 if (chroma_format_idc <= 1)
     286         123 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_sse2;
     287         161 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     288          38 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_sse2;
     289         123 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     290          36 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_sse2;
     291             :                 } else {
     292          87 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_sse2;
     293             :                 }
     294             :             }
     295             :         }
     296             : 
     297         789 :         if (EXTERNAL_SSSE3(cpu_flags)) {
     298         165 :             h->pred16x16[HOR_PRED8x8          ] = ff_pred16x16_horizontal_8_ssse3;
     299         165 :             h->pred16x16[DC_PRED8x8           ] = ff_pred16x16_dc_8_ssse3;
     300         165 :             if (chroma_format_idc <= 1)
     301         135 :                 h->pred8x8  [HOR_PRED8x8      ] = ff_pred8x8_horizontal_8_ssse3;
     302         165 :             h->pred8x8l [TOP_DC_PRED          ] = ff_pred8x8l_top_dc_8_ssse3;
     303         165 :             h->pred8x8l [DC_PRED              ] = ff_pred8x8l_dc_8_ssse3;
     304         165 :             h->pred8x8l [HOR_PRED             ] = ff_pred8x8l_horizontal_8_ssse3;
     305         165 :             h->pred8x8l [VERT_PRED            ] = ff_pred8x8l_vertical_8_ssse3;
     306         165 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED  ] = ff_pred8x8l_down_left_8_ssse3;
     307         165 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_ssse3;
     308         165 :             h->pred8x8l [VERT_RIGHT_PRED      ] = ff_pred8x8l_vertical_right_8_ssse3;
     309         165 :             h->pred8x8l [VERT_LEFT_PRED       ] = ff_pred8x8l_vertical_left_8_ssse3;
     310         165 :             h->pred8x8l [HOR_UP_PRED          ] = ff_pred8x8l_horizontal_up_8_ssse3;
     311         165 :             h->pred8x8l [HOR_DOWN_PRED        ] = ff_pred8x8l_horizontal_down_8_ssse3;
     312         165 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     313          36 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_ssse3;
     314          36 :                 h->pred4x4  [TM_VP8_PRED      ] = ff_pred4x4_tm_vp8_8_ssse3;
     315             :             } else {
     316         129 :                 if (chroma_format_idc <= 1)
     317          99 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_ssse3;
     318         129 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     319          30 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_ssse3;
     320          99 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     321          28 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_ssse3;
     322             :                 } else {
     323          71 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_ssse3;
     324             :                 }
     325             :             }
     326             :         }
     327             : 
     328         789 :         if(EXTERNAL_AVX2(cpu_flags)){
     329          45 :             if (codec_id == AV_CODEC_ID_VP8) {
     330          12 :                 h->pred16x16[PLANE_PRED8x8    ] = ff_pred16x16_tm_vp8_8_avx2;
     331             :             }
     332             :         }
     333         250 :     } else if (bit_depth == 10) {
     334         141 :         if (EXTERNAL_MMXEXT(cpu_flags)) {
     335          88 :             h->pred4x4[DC_PRED             ] = ff_pred4x4_dc_10_mmxext;
     336          88 :             h->pred4x4[HOR_UP_PRED         ] = ff_pred4x4_horizontal_up_10_mmxext;
     337             : 
     338          88 :             if (chroma_format_idc <= 1)
     339          44 :                 h->pred8x8[DC_PRED8x8      ] = ff_pred8x8_dc_10_mmxext;
     340             : 
     341          88 :             h->pred8x8l[DC_128_PRED        ] = ff_pred8x8l_128_dc_10_mmxext;
     342             : 
     343          88 :             h->pred16x16[DC_PRED8x8        ] = ff_pred16x16_dc_10_mmxext;
     344          88 :             h->pred16x16[TOP_DC_PRED8x8    ] = ff_pred16x16_top_dc_10_mmxext;
     345          88 :             h->pred16x16[DC_128_PRED8x8    ] = ff_pred16x16_128_dc_10_mmxext;
     346          88 :             h->pred16x16[LEFT_DC_PRED8x8   ] = ff_pred16x16_left_dc_10_mmxext;
     347          88 :             h->pred16x16[VERT_PRED8x8      ] = ff_pred16x16_vertical_10_mmxext;
     348          88 :             h->pred16x16[HOR_PRED8x8       ] = ff_pred16x16_horizontal_10_mmxext;
     349             :         }
     350         141 :         if (EXTERNAL_SSE2(cpu_flags)) {
     351          72 :             h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;
     352          72 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_sse2;
     353          72 :             h->pred4x4[VERT_LEFT_PRED      ] = ff_pred4x4_vertical_left_10_sse2;
     354          72 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_sse2;
     355          72 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_sse2;
     356             : 
     357          72 :             if (chroma_format_idc <= 1) {
     358          36 :                 h->pred8x8[DC_PRED8x8      ] = ff_pred8x8_dc_10_sse2;
     359          36 :                 h->pred8x8[TOP_DC_PRED8x8  ] = ff_pred8x8_top_dc_10_sse2;
     360          36 :                 h->pred8x8[PLANE_PRED8x8   ] = ff_pred8x8_plane_10_sse2;
     361          36 :                 h->pred8x8[VERT_PRED8x8    ] = ff_pred8x8_vertical_10_sse2;
     362          36 :                 h->pred8x8[HOR_PRED8x8     ] = ff_pred8x8_horizontal_10_sse2;
     363             :             }
     364             : 
     365          72 :             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_sse2;
     366          72 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_sse2;
     367          72 :             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_sse2;
     368          72 :             h->pred8x8l[DC_128_PRED         ] = ff_pred8x8l_128_dc_10_sse2;
     369          72 :             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_sse2;
     370          72 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_sse2;
     371          72 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_sse2;
     372          72 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_sse2;
     373          72 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_sse2;
     374             : 
     375          72 :             h->pred16x16[DC_PRED8x8        ] = ff_pred16x16_dc_10_sse2;
     376          72 :             h->pred16x16[TOP_DC_PRED8x8    ] = ff_pred16x16_top_dc_10_sse2;
     377          72 :             h->pred16x16[DC_128_PRED8x8    ] = ff_pred16x16_128_dc_10_sse2;
     378          72 :             h->pred16x16[LEFT_DC_PRED8x8   ] = ff_pred16x16_left_dc_10_sse2;
     379          72 :             h->pred16x16[VERT_PRED8x8      ] = ff_pred16x16_vertical_10_sse2;
     380          72 :             h->pred16x16[HOR_PRED8x8       ] = ff_pred16x16_horizontal_10_sse2;
     381             :         }
     382         141 :         if (EXTERNAL_SSSE3(cpu_flags)) {
     383          56 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_ssse3;
     384          56 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_ssse3;
     385          56 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_ssse3;
     386             : 
     387          56 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_ssse3;
     388          56 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_ssse3;
     389          56 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_ssse3;
     390          56 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_ssse3;
     391          56 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_ssse3;
     392             :         }
     393         141 :         if (EXTERNAL_AVX(cpu_flags)) {
     394          24 :             h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_avx;
     395          24 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_avx;
     396          24 :             h->pred4x4[VERT_LEFT_PRED      ] = ff_pred4x4_vertical_left_10_avx;
     397          24 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_avx;
     398          24 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_avx;
     399             : 
     400          24 :             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_avx;
     401          24 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_avx;
     402          24 :             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_avx;
     403          24 :             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_avx;
     404          24 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_avx;
     405          24 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_avx;
     406          24 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_avx;
     407          24 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_avx;
     408             :         }
     409             :     }
     410        1039 : }

Generated by: LCOV version 1.13