LCOV - code coverage report
Current view: top level - src/libavcodec/x86 - h264_intrapred_init.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 170 170 100.0 %
Date: 2017-01-22 02:20:28 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             : 
     131             : PRED8x8(top_dc, 8, mmxext)
     132             : PRED8x8(dc_rv40, 8, mmxext)
     133             : PRED8x8(dc, 8, mmxext)
     134             : PRED8x8(vertical, 8, mmx)
     135             : PRED8x8(horizontal, 8, mmx)
     136             : PRED8x8(horizontal, 8, mmxext)
     137             : PRED8x8(horizontal, 8, ssse3)
     138             : PRED8x8(plane, 8, mmx)
     139             : PRED8x8(plane, 8, mmxext)
     140             : PRED8x8(plane, 8, sse2)
     141             : PRED8x8(plane, 8, ssse3)
     142             : PRED8x8(tm_vp8, 8, mmx)
     143             : PRED8x8(tm_vp8, 8, mmxext)
     144             : PRED8x8(tm_vp8, 8, sse2)
     145             : PRED8x8(tm_vp8, 8, ssse3)
     146             : 
     147             : PRED8x8L(top_dc, 8, mmxext)
     148             : PRED8x8L(top_dc, 8, ssse3)
     149             : PRED8x8L(dc, 8, mmxext)
     150             : PRED8x8L(dc, 8, ssse3)
     151             : PRED8x8L(horizontal, 8, mmxext)
     152             : PRED8x8L(horizontal, 8, ssse3)
     153             : PRED8x8L(vertical, 8, mmxext)
     154             : PRED8x8L(vertical, 8, ssse3)
     155             : PRED8x8L(down_left, 8, mmxext)
     156             : PRED8x8L(down_left, 8, sse2)
     157             : PRED8x8L(down_left, 8, ssse3)
     158             : PRED8x8L(down_right, 8, mmxext)
     159             : PRED8x8L(down_right, 8, sse2)
     160             : PRED8x8L(down_right, 8, ssse3)
     161             : PRED8x8L(vertical_right, 8, mmxext)
     162             : PRED8x8L(vertical_right, 8, sse2)
     163             : PRED8x8L(vertical_right, 8, ssse3)
     164             : PRED8x8L(vertical_left, 8, sse2)
     165             : PRED8x8L(vertical_left, 8, ssse3)
     166             : PRED8x8L(horizontal_up, 8, mmxext)
     167             : PRED8x8L(horizontal_up, 8, ssse3)
     168             : PRED8x8L(horizontal_down, 8, mmxext)
     169             : PRED8x8L(horizontal_down, 8, sse2)
     170             : PRED8x8L(horizontal_down, 8, ssse3)
     171             : 
     172             : PRED4x4(dc, 8, mmxext)
     173             : PRED4x4(down_left, 8, mmxext)
     174             : PRED4x4(down_right, 8, mmxext)
     175             : PRED4x4(vertical_left, 8, mmxext)
     176             : PRED4x4(vertical_right, 8, mmxext)
     177             : PRED4x4(horizontal_up, 8, mmxext)
     178             : PRED4x4(horizontal_down, 8, mmxext)
     179             : PRED4x4(tm_vp8, 8, mmx)
     180             : PRED4x4(tm_vp8, 8, mmxext)
     181             : PRED4x4(tm_vp8, 8, ssse3)
     182             : PRED4x4(vertical_vp8, 8, mmxext)
     183             : 
     184         948 : av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id,
     185             :                                    const int bit_depth,
     186             :                                    const int chroma_format_idc)
     187             : {
     188         948 :     int cpu_flags = av_get_cpu_flags();
     189             : 
     190         948 :     if (bit_depth == 8) {
     191         730 :         if (EXTERNAL_MMX(cpu_flags)) {
     192         224 :             h->pred16x16[VERT_PRED8x8         ] = ff_pred16x16_vertical_8_mmx;
     193         224 :             h->pred16x16[HOR_PRED8x8          ] = ff_pred16x16_horizontal_8_mmx;
     194         224 :             if (chroma_format_idc <= 1) {
     195         182 :                 h->pred8x8  [VERT_PRED8x8     ] = ff_pred8x8_vertical_8_mmx;
     196         182 :                 h->pred8x8  [HOR_PRED8x8      ] = ff_pred8x8_horizontal_8_mmx;
     197             :             }
     198         224 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     199          48 :                 h->pred16x16[PLANE_PRED8x8    ] = ff_pred16x16_tm_vp8_8_mmx;
     200          48 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_mmx;
     201          48 :                 h->pred4x4  [TM_VP8_PRED      ] = ff_pred4x4_tm_vp8_8_mmx;
     202             :             } else {
     203         176 :                 if (chroma_format_idc <= 1)
     204         134 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmx;
     205         176 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     206          42 :                     if (cpu_flags & AV_CPU_FLAG_CMOV)
     207          42 :                         h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_mmx;
     208         134 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     209          40 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_mmx;
     210             :                 } else {
     211          94 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_mmx;
     212             :                 }
     213             :             }
     214             :         }
     215             : 
     216         730 :         if (EXTERNAL_MMXEXT(cpu_flags)) {
     217         204 :             h->pred16x16[HOR_PRED8x8            ] = ff_pred16x16_horizontal_8_mmxext;
     218         204 :             h->pred16x16[DC_PRED8x8             ] = ff_pred16x16_dc_8_mmxext;
     219         204 :             if (chroma_format_idc <= 1)
     220         166 :                 h->pred8x8[HOR_PRED8x8          ] = ff_pred8x8_horizontal_8_mmxext;
     221         204 :             h->pred8x8l [TOP_DC_PRED            ] = ff_pred8x8l_top_dc_8_mmxext;
     222         204 :             h->pred8x8l [DC_PRED                ] = ff_pred8x8l_dc_8_mmxext;
     223         204 :             h->pred8x8l [HOR_PRED               ] = ff_pred8x8l_horizontal_8_mmxext;
     224         204 :             h->pred8x8l [VERT_PRED              ] = ff_pred8x8l_vertical_8_mmxext;
     225         204 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED   ] = ff_pred8x8l_down_right_8_mmxext;
     226         204 :             h->pred8x8l [VERT_RIGHT_PRED        ] = ff_pred8x8l_vertical_right_8_mmxext;
     227         204 :             h->pred8x8l [HOR_UP_PRED            ] = ff_pred8x8l_horizontal_up_8_mmxext;
     228         204 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED    ] = ff_pred8x8l_down_left_8_mmxext;
     229         204 :             h->pred8x8l [HOR_DOWN_PRED          ] = ff_pred8x8l_horizontal_down_8_mmxext;
     230         204 :             h->pred4x4  [DIAG_DOWN_RIGHT_PRED   ] = ff_pred4x4_down_right_8_mmxext;
     231         204 :             h->pred4x4  [VERT_RIGHT_PRED        ] = ff_pred4x4_vertical_right_8_mmxext;
     232         204 :             h->pred4x4  [HOR_DOWN_PRED          ] = ff_pred4x4_horizontal_down_8_mmxext;
     233         204 :             h->pred4x4  [DC_PRED                ] = ff_pred4x4_dc_8_mmxext;
     234         204 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8 ||
     235             :                 codec_id == AV_CODEC_ID_H264) {
     236         130 :                 h->pred4x4  [DIAG_DOWN_LEFT_PRED] = ff_pred4x4_down_left_8_mmxext;
     237             :             }
     238         204 :             if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) {
     239         124 :                 h->pred4x4  [VERT_LEFT_PRED     ] = ff_pred4x4_vertical_left_8_mmxext;
     240             :             }
     241         204 :             if (codec_id != AV_CODEC_ID_RV40) {
     242         168 :                 h->pred4x4  [HOR_UP_PRED        ] = ff_pred4x4_horizontal_up_8_mmxext;
     243             :             }
     244         204 :             if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) {
     245         124 :                 if (chroma_format_idc <= 1) {
     246          86 :                     h->pred8x8[TOP_DC_PRED8x8   ] = ff_pred8x8_top_dc_8_mmxext;
     247          86 :                     h->pred8x8[DC_PRED8x8       ] = ff_pred8x8_dc_8_mmxext;
     248             :                 }
     249             :             }
     250         204 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     251          44 :                 h->pred16x16[PLANE_PRED8x8      ] = ff_pred16x16_tm_vp8_8_mmxext;
     252          44 :                 h->pred8x8  [DC_PRED8x8         ] = ff_pred8x8_dc_rv40_8_mmxext;
     253          44 :                 h->pred8x8  [PLANE_PRED8x8      ] = ff_pred8x8_tm_vp8_8_mmxext;
     254          44 :                 h->pred4x4  [TM_VP8_PRED        ] = ff_pred4x4_tm_vp8_8_mmxext;
     255          44 :                 h->pred4x4  [VERT_PRED          ] = ff_pred4x4_vertical_vp8_8_mmxext;
     256             :             } else {
     257         160 :                 if (chroma_format_idc <= 1)
     258         122 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_mmxext;
     259         160 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     260          38 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_svq3_8_mmxext;
     261         122 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     262          36 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_rv40_8_mmxext;
     263             :                 } else {
     264          86 :                     h->pred16x16[PLANE_PRED8x8  ] = ff_pred16x16_plane_h264_8_mmxext;
     265             :                 }
     266             :             }
     267             :         }
     268             : 
     269         730 :         if (EXTERNAL_SSE(cpu_flags)) {
     270         184 :             h->pred16x16[VERT_PRED8x8] = ff_pred16x16_vertical_8_sse;
     271             :         }
     272             : 
     273         730 :         if (EXTERNAL_SSE2(cpu_flags)) {
     274         164 :             h->pred16x16[DC_PRED8x8           ] = ff_pred16x16_dc_8_sse2;
     275         164 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED  ] = ff_pred8x8l_down_left_8_sse2;
     276         164 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_sse2;
     277         164 :             h->pred8x8l [VERT_RIGHT_PRED      ] = ff_pred8x8l_vertical_right_8_sse2;
     278         164 :             h->pred8x8l [VERT_LEFT_PRED       ] = ff_pred8x8l_vertical_left_8_sse2;
     279         164 :             h->pred8x8l [HOR_DOWN_PRED        ] = ff_pred8x8l_horizontal_down_8_sse2;
     280         164 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     281          36 :                 h->pred16x16[PLANE_PRED8x8    ] = ff_pred16x16_tm_vp8_8_sse2;
     282          36 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_sse2;
     283             :             } else {
     284         128 :                 if (chroma_format_idc <= 1)
     285          98 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_sse2;
     286         128 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     287          30 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_sse2;
     288          98 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     289          28 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_sse2;
     290             :                 } else {
     291          70 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_sse2;
     292             :                 }
     293             :             }
     294             :         }
     295             : 
     296         730 :         if (EXTERNAL_SSSE3(cpu_flags)) {
     297         124 :             h->pred16x16[HOR_PRED8x8          ] = ff_pred16x16_horizontal_8_ssse3;
     298         124 :             h->pred16x16[DC_PRED8x8           ] = ff_pred16x16_dc_8_ssse3;
     299         124 :             if (chroma_format_idc <= 1)
     300         102 :                 h->pred8x8  [HOR_PRED8x8      ] = ff_pred8x8_horizontal_8_ssse3;
     301         124 :             h->pred8x8l [TOP_DC_PRED          ] = ff_pred8x8l_top_dc_8_ssse3;
     302         124 :             h->pred8x8l [DC_PRED              ] = ff_pred8x8l_dc_8_ssse3;
     303         124 :             h->pred8x8l [HOR_PRED             ] = ff_pred8x8l_horizontal_8_ssse3;
     304         124 :             h->pred8x8l [VERT_PRED            ] = ff_pred8x8l_vertical_8_ssse3;
     305         124 :             h->pred8x8l [DIAG_DOWN_LEFT_PRED  ] = ff_pred8x8l_down_left_8_ssse3;
     306         124 :             h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_ssse3;
     307         124 :             h->pred8x8l [VERT_RIGHT_PRED      ] = ff_pred8x8l_vertical_right_8_ssse3;
     308         124 :             h->pred8x8l [VERT_LEFT_PRED       ] = ff_pred8x8l_vertical_left_8_ssse3;
     309         124 :             h->pred8x8l [HOR_UP_PRED          ] = ff_pred8x8l_horizontal_up_8_ssse3;
     310         124 :             h->pred8x8l [HOR_DOWN_PRED        ] = ff_pred8x8l_horizontal_down_8_ssse3;
     311         124 :             if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) {
     312          28 :                 h->pred8x8  [PLANE_PRED8x8    ] = ff_pred8x8_tm_vp8_8_ssse3;
     313          28 :                 h->pred4x4  [TM_VP8_PRED      ] = ff_pred4x4_tm_vp8_8_ssse3;
     314             :             } else {
     315          96 :                 if (chroma_format_idc <= 1)
     316          74 :                     h->pred8x8  [PLANE_PRED8x8] = ff_pred8x8_plane_8_ssse3;
     317          96 :                 if (codec_id == AV_CODEC_ID_SVQ3) {
     318          22 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_8_ssse3;
     319          74 :                 } else if (codec_id == AV_CODEC_ID_RV40) {
     320          20 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_8_ssse3;
     321             :                 } else {
     322          54 :                     h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_h264_8_ssse3;
     323             :                 }
     324             :             }
     325             :         }
     326         218 :     } else if (bit_depth == 10) {
     327         125 :         if (EXTERNAL_MMXEXT(cpu_flags)) {
     328          72 :             h->pred4x4[DC_PRED             ] = ff_pred4x4_dc_10_mmxext;
     329          72 :             h->pred4x4[HOR_UP_PRED         ] = ff_pred4x4_horizontal_up_10_mmxext;
     330             : 
     331          72 :             if (chroma_format_idc <= 1)
     332          36 :                 h->pred8x8[DC_PRED8x8      ] = ff_pred8x8_dc_10_mmxext;
     333             : 
     334          72 :             h->pred8x8l[DC_128_PRED        ] = ff_pred8x8l_128_dc_10_mmxext;
     335             : 
     336          72 :             h->pred16x16[DC_PRED8x8        ] = ff_pred16x16_dc_10_mmxext;
     337          72 :             h->pred16x16[TOP_DC_PRED8x8    ] = ff_pred16x16_top_dc_10_mmxext;
     338          72 :             h->pred16x16[DC_128_PRED8x8    ] = ff_pred16x16_128_dc_10_mmxext;
     339          72 :             h->pred16x16[LEFT_DC_PRED8x8   ] = ff_pred16x16_left_dc_10_mmxext;
     340          72 :             h->pred16x16[VERT_PRED8x8      ] = ff_pred16x16_vertical_10_mmxext;
     341          72 :             h->pred16x16[HOR_PRED8x8       ] = ff_pred16x16_horizontal_10_mmxext;
     342             :         }
     343         125 :         if (EXTERNAL_SSE2(cpu_flags)) {
     344          56 :             h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_sse2;
     345          56 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_sse2;
     346          56 :             h->pred4x4[VERT_LEFT_PRED      ] = ff_pred4x4_vertical_left_10_sse2;
     347          56 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_sse2;
     348          56 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_sse2;
     349             : 
     350          56 :             if (chroma_format_idc <= 1) {
     351          28 :                 h->pred8x8[DC_PRED8x8      ] = ff_pred8x8_dc_10_sse2;
     352          28 :                 h->pred8x8[TOP_DC_PRED8x8  ] = ff_pred8x8_top_dc_10_sse2;
     353          28 :                 h->pred8x8[PLANE_PRED8x8   ] = ff_pred8x8_plane_10_sse2;
     354          28 :                 h->pred8x8[VERT_PRED8x8    ] = ff_pred8x8_vertical_10_sse2;
     355          28 :                 h->pred8x8[HOR_PRED8x8     ] = ff_pred8x8_horizontal_10_sse2;
     356             :             }
     357             : 
     358          56 :             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_sse2;
     359          56 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_sse2;
     360          56 :             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_sse2;
     361          56 :             h->pred8x8l[DC_128_PRED         ] = ff_pred8x8l_128_dc_10_sse2;
     362          56 :             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_sse2;
     363          56 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_sse2;
     364          56 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_sse2;
     365          56 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_sse2;
     366          56 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_sse2;
     367             : 
     368          56 :             h->pred16x16[DC_PRED8x8        ] = ff_pred16x16_dc_10_sse2;
     369          56 :             h->pred16x16[TOP_DC_PRED8x8    ] = ff_pred16x16_top_dc_10_sse2;
     370          56 :             h->pred16x16[DC_128_PRED8x8    ] = ff_pred16x16_128_dc_10_sse2;
     371          56 :             h->pred16x16[LEFT_DC_PRED8x8   ] = ff_pred16x16_left_dc_10_sse2;
     372          56 :             h->pred16x16[VERT_PRED8x8      ] = ff_pred16x16_vertical_10_sse2;
     373          56 :             h->pred16x16[HOR_PRED8x8       ] = ff_pred16x16_horizontal_10_sse2;
     374             :         }
     375         125 :         if (EXTERNAL_SSSE3(cpu_flags)) {
     376          40 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_ssse3;
     377          40 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_ssse3;
     378          40 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_ssse3;
     379             : 
     380          40 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_ssse3;
     381          40 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_ssse3;
     382          40 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_ssse3;
     383          40 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_ssse3;
     384          40 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_ssse3;
     385             :         }
     386         125 :         if (EXTERNAL_AVX(cpu_flags)) {
     387           8 :             h->pred4x4[DIAG_DOWN_LEFT_PRED ] = ff_pred4x4_down_left_10_avx;
     388           8 :             h->pred4x4[DIAG_DOWN_RIGHT_PRED] = ff_pred4x4_down_right_10_avx;
     389           8 :             h->pred4x4[VERT_LEFT_PRED      ] = ff_pred4x4_vertical_left_10_avx;
     390           8 :             h->pred4x4[VERT_RIGHT_PRED     ] = ff_pred4x4_vertical_right_10_avx;
     391           8 :             h->pred4x4[HOR_DOWN_PRED       ] = ff_pred4x4_horizontal_down_10_avx;
     392             : 
     393           8 :             h->pred8x8l[VERT_PRED           ] = ff_pred8x8l_vertical_10_avx;
     394           8 :             h->pred8x8l[HOR_PRED            ] = ff_pred8x8l_horizontal_10_avx;
     395           8 :             h->pred8x8l[DC_PRED             ] = ff_pred8x8l_dc_10_avx;
     396           8 :             h->pred8x8l[TOP_DC_PRED         ] = ff_pred8x8l_top_dc_10_avx;
     397           8 :             h->pred8x8l[DIAG_DOWN_RIGHT_PRED] = ff_pred8x8l_down_right_10_avx;
     398           8 :             h->pred8x8l[DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_10_avx;
     399           8 :             h->pred8x8l[VERT_RIGHT_PRED     ] = ff_pred8x8l_vertical_right_10_avx;
     400           8 :             h->pred8x8l[HOR_UP_PRED         ] = ff_pred8x8l_horizontal_up_10_avx;
     401             :         }
     402             :     }
     403         948 : }

Generated by: LCOV version 1.12