Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 2015 Manojkumar Bhosale (Manojkumar.Bhosale@imgtec.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 "libavcodec/mips/hevcdsp_mips.h"
  22.  
  23. #if HAVE_MSA
  24. static av_cold void hevc_dsp_init_msa(HEVCDSPContext *c,
  25.                                       const int bit_depth)
  26. {
  27.     if (8 == bit_depth) {
  28.         c->put_hevc_qpel[1][0][0] = ff_hevc_put_hevc_pel_pixels4_8_msa;
  29.         c->put_hevc_qpel[2][0][0] = ff_hevc_put_hevc_pel_pixels6_8_msa;
  30.         c->put_hevc_qpel[3][0][0] = ff_hevc_put_hevc_pel_pixels8_8_msa;
  31.         c->put_hevc_qpel[4][0][0] = ff_hevc_put_hevc_pel_pixels12_8_msa;
  32.         c->put_hevc_qpel[5][0][0] = ff_hevc_put_hevc_pel_pixels16_8_msa;
  33.         c->put_hevc_qpel[6][0][0] = ff_hevc_put_hevc_pel_pixels24_8_msa;
  34.         c->put_hevc_qpel[7][0][0] = ff_hevc_put_hevc_pel_pixels32_8_msa;
  35.         c->put_hevc_qpel[8][0][0] = ff_hevc_put_hevc_pel_pixels48_8_msa;
  36.         c->put_hevc_qpel[9][0][0] = ff_hevc_put_hevc_pel_pixels64_8_msa;
  37.  
  38.         c->put_hevc_qpel[1][0][1] = ff_hevc_put_hevc_qpel_h4_8_msa;
  39.         c->put_hevc_qpel[3][0][1] = ff_hevc_put_hevc_qpel_h8_8_msa;
  40.         c->put_hevc_qpel[4][0][1] = ff_hevc_put_hevc_qpel_h12_8_msa;
  41.         c->put_hevc_qpel[5][0][1] = ff_hevc_put_hevc_qpel_h16_8_msa;
  42.         c->put_hevc_qpel[6][0][1] = ff_hevc_put_hevc_qpel_h24_8_msa;
  43.         c->put_hevc_qpel[7][0][1] = ff_hevc_put_hevc_qpel_h32_8_msa;
  44.         c->put_hevc_qpel[8][0][1] = ff_hevc_put_hevc_qpel_h48_8_msa;
  45.         c->put_hevc_qpel[9][0][1] = ff_hevc_put_hevc_qpel_h64_8_msa;
  46.  
  47.         c->put_hevc_qpel[1][1][0] = ff_hevc_put_hevc_qpel_v4_8_msa;
  48.         c->put_hevc_qpel[3][1][0] = ff_hevc_put_hevc_qpel_v8_8_msa;
  49.         c->put_hevc_qpel[4][1][0] = ff_hevc_put_hevc_qpel_v12_8_msa;
  50.         c->put_hevc_qpel[5][1][0] = ff_hevc_put_hevc_qpel_v16_8_msa;
  51.         c->put_hevc_qpel[6][1][0] = ff_hevc_put_hevc_qpel_v24_8_msa;
  52.         c->put_hevc_qpel[7][1][0] = ff_hevc_put_hevc_qpel_v32_8_msa;
  53.         c->put_hevc_qpel[8][1][0] = ff_hevc_put_hevc_qpel_v48_8_msa;
  54.         c->put_hevc_qpel[9][1][0] = ff_hevc_put_hevc_qpel_v64_8_msa;
  55.  
  56.         c->put_hevc_qpel[1][1][1] = ff_hevc_put_hevc_qpel_hv4_8_msa;
  57.         c->put_hevc_qpel[3][1][1] = ff_hevc_put_hevc_qpel_hv8_8_msa;
  58.         c->put_hevc_qpel[4][1][1] = ff_hevc_put_hevc_qpel_hv12_8_msa;
  59.         c->put_hevc_qpel[5][1][1] = ff_hevc_put_hevc_qpel_hv16_8_msa;
  60.         c->put_hevc_qpel[6][1][1] = ff_hevc_put_hevc_qpel_hv24_8_msa;
  61.         c->put_hevc_qpel[7][1][1] = ff_hevc_put_hevc_qpel_hv32_8_msa;
  62.         c->put_hevc_qpel[8][1][1] = ff_hevc_put_hevc_qpel_hv48_8_msa;
  63.         c->put_hevc_qpel[9][1][1] = ff_hevc_put_hevc_qpel_hv64_8_msa;
  64.  
  65.         c->put_hevc_epel[1][0][0] = ff_hevc_put_hevc_pel_pixels4_8_msa;
  66.         c->put_hevc_epel[2][0][0] = ff_hevc_put_hevc_pel_pixels6_8_msa;
  67.         c->put_hevc_epel[3][0][0] = ff_hevc_put_hevc_pel_pixels8_8_msa;
  68.         c->put_hevc_epel[4][0][0] = ff_hevc_put_hevc_pel_pixels12_8_msa;
  69.         c->put_hevc_epel[5][0][0] = ff_hevc_put_hevc_pel_pixels16_8_msa;
  70.         c->put_hevc_epel[6][0][0] = ff_hevc_put_hevc_pel_pixels24_8_msa;
  71.         c->put_hevc_epel[7][0][0] = ff_hevc_put_hevc_pel_pixels32_8_msa;
  72.  
  73.         c->put_hevc_epel[1][0][1] = ff_hevc_put_hevc_epel_h4_8_msa;
  74.         c->put_hevc_epel[2][0][1] = ff_hevc_put_hevc_epel_h6_8_msa;
  75.         c->put_hevc_epel[3][0][1] = ff_hevc_put_hevc_epel_h8_8_msa;
  76.         c->put_hevc_epel[4][0][1] = ff_hevc_put_hevc_epel_h12_8_msa;
  77.         c->put_hevc_epel[5][0][1] = ff_hevc_put_hevc_epel_h16_8_msa;
  78.         c->put_hevc_epel[6][0][1] = ff_hevc_put_hevc_epel_h24_8_msa;
  79.         c->put_hevc_epel[7][0][1] = ff_hevc_put_hevc_epel_h32_8_msa;
  80.  
  81.         c->put_hevc_epel[1][1][0] = ff_hevc_put_hevc_epel_v4_8_msa;
  82.         c->put_hevc_epel[2][1][0] = ff_hevc_put_hevc_epel_v6_8_msa;
  83.         c->put_hevc_epel[3][1][0] = ff_hevc_put_hevc_epel_v8_8_msa;
  84.         c->put_hevc_epel[4][1][0] = ff_hevc_put_hevc_epel_v12_8_msa;
  85.         c->put_hevc_epel[5][1][0] = ff_hevc_put_hevc_epel_v16_8_msa;
  86.         c->put_hevc_epel[6][1][0] = ff_hevc_put_hevc_epel_v24_8_msa;
  87.         c->put_hevc_epel[7][1][0] = ff_hevc_put_hevc_epel_v32_8_msa;
  88.  
  89.         c->put_hevc_epel[1][1][1] = ff_hevc_put_hevc_epel_hv4_8_msa;
  90.         c->put_hevc_epel[2][1][1] = ff_hevc_put_hevc_epel_hv6_8_msa;
  91.         c->put_hevc_epel[3][1][1] = ff_hevc_put_hevc_epel_hv8_8_msa;
  92.         c->put_hevc_epel[4][1][1] = ff_hevc_put_hevc_epel_hv12_8_msa;
  93.         c->put_hevc_epel[5][1][1] = ff_hevc_put_hevc_epel_hv16_8_msa;
  94.         c->put_hevc_epel[6][1][1] = ff_hevc_put_hevc_epel_hv24_8_msa;
  95.         c->put_hevc_epel[7][1][1] = ff_hevc_put_hevc_epel_hv32_8_msa;
  96.  
  97.         c->put_hevc_qpel_uni[3][0][0] = ff_hevc_put_hevc_uni_pel_pixels8_8_msa;
  98.         c->put_hevc_qpel_uni[4][0][0] = ff_hevc_put_hevc_uni_pel_pixels12_8_msa;
  99.         c->put_hevc_qpel_uni[5][0][0] = ff_hevc_put_hevc_uni_pel_pixels16_8_msa;
  100.         c->put_hevc_qpel_uni[6][0][0] = ff_hevc_put_hevc_uni_pel_pixels24_8_msa;
  101.         c->put_hevc_qpel_uni[7][0][0] = ff_hevc_put_hevc_uni_pel_pixels32_8_msa;
  102.         c->put_hevc_qpel_uni[8][0][0] = ff_hevc_put_hevc_uni_pel_pixels48_8_msa;
  103.         c->put_hevc_qpel_uni[9][0][0] = ff_hevc_put_hevc_uni_pel_pixels64_8_msa;
  104.  
  105.         c->put_hevc_qpel_uni[1][0][1] = ff_hevc_put_hevc_uni_qpel_h4_8_msa;
  106.         c->put_hevc_qpel_uni[3][0][1] = ff_hevc_put_hevc_uni_qpel_h8_8_msa;
  107.         c->put_hevc_qpel_uni[4][0][1] = ff_hevc_put_hevc_uni_qpel_h12_8_msa;
  108.         c->put_hevc_qpel_uni[5][0][1] = ff_hevc_put_hevc_uni_qpel_h16_8_msa;
  109.         c->put_hevc_qpel_uni[6][0][1] = ff_hevc_put_hevc_uni_qpel_h24_8_msa;
  110.         c->put_hevc_qpel_uni[7][0][1] = ff_hevc_put_hevc_uni_qpel_h32_8_msa;
  111.         c->put_hevc_qpel_uni[8][0][1] = ff_hevc_put_hevc_uni_qpel_h48_8_msa;
  112.         c->put_hevc_qpel_uni[9][0][1] = ff_hevc_put_hevc_uni_qpel_h64_8_msa;
  113.  
  114.         c->put_hevc_qpel_uni[1][1][0] = ff_hevc_put_hevc_uni_qpel_v4_8_msa;
  115.         c->put_hevc_qpel_uni[3][1][0] = ff_hevc_put_hevc_uni_qpel_v8_8_msa;
  116.         c->put_hevc_qpel_uni[4][1][0] = ff_hevc_put_hevc_uni_qpel_v12_8_msa;
  117.         c->put_hevc_qpel_uni[5][1][0] = ff_hevc_put_hevc_uni_qpel_v16_8_msa;
  118.         c->put_hevc_qpel_uni[6][1][0] = ff_hevc_put_hevc_uni_qpel_v24_8_msa;
  119.         c->put_hevc_qpel_uni[7][1][0] = ff_hevc_put_hevc_uni_qpel_v32_8_msa;
  120.         c->put_hevc_qpel_uni[8][1][0] = ff_hevc_put_hevc_uni_qpel_v48_8_msa;
  121.         c->put_hevc_qpel_uni[9][1][0] = ff_hevc_put_hevc_uni_qpel_v64_8_msa;
  122.  
  123.         c->put_hevc_qpel_uni[1][1][1] = ff_hevc_put_hevc_uni_qpel_hv4_8_msa;
  124.         c->put_hevc_qpel_uni[3][1][1] = ff_hevc_put_hevc_uni_qpel_hv8_8_msa;
  125.         c->put_hevc_qpel_uni[4][1][1] = ff_hevc_put_hevc_uni_qpel_hv12_8_msa;
  126.         c->put_hevc_qpel_uni[5][1][1] = ff_hevc_put_hevc_uni_qpel_hv16_8_msa;
  127.         c->put_hevc_qpel_uni[6][1][1] = ff_hevc_put_hevc_uni_qpel_hv24_8_msa;
  128.         c->put_hevc_qpel_uni[7][1][1] = ff_hevc_put_hevc_uni_qpel_hv32_8_msa;
  129.         c->put_hevc_qpel_uni[8][1][1] = ff_hevc_put_hevc_uni_qpel_hv48_8_msa;
  130.         c->put_hevc_qpel_uni[9][1][1] = ff_hevc_put_hevc_uni_qpel_hv64_8_msa;
  131.  
  132.         c->put_hevc_epel_uni[3][0][0] = ff_hevc_put_hevc_uni_pel_pixels8_8_msa;
  133.         c->put_hevc_epel_uni[4][0][0] = ff_hevc_put_hevc_uni_pel_pixels12_8_msa;
  134.         c->put_hevc_epel_uni[5][0][0] = ff_hevc_put_hevc_uni_pel_pixels16_8_msa;
  135.         c->put_hevc_epel_uni[6][0][0] = ff_hevc_put_hevc_uni_pel_pixels24_8_msa;
  136.         c->put_hevc_epel_uni[7][0][0] = ff_hevc_put_hevc_uni_pel_pixels32_8_msa;
  137.  
  138.         c->put_hevc_epel_uni[1][0][1] = ff_hevc_put_hevc_uni_epel_h4_8_msa;
  139.         c->put_hevc_epel_uni[2][0][1] = ff_hevc_put_hevc_uni_epel_h6_8_msa;
  140.         c->put_hevc_epel_uni[3][0][1] = ff_hevc_put_hevc_uni_epel_h8_8_msa;
  141.         c->put_hevc_epel_uni[4][0][1] = ff_hevc_put_hevc_uni_epel_h12_8_msa;
  142.         c->put_hevc_epel_uni[5][0][1] = ff_hevc_put_hevc_uni_epel_h16_8_msa;
  143.         c->put_hevc_epel_uni[6][0][1] = ff_hevc_put_hevc_uni_epel_h24_8_msa;
  144.         c->put_hevc_epel_uni[7][0][1] = ff_hevc_put_hevc_uni_epel_h32_8_msa;
  145.  
  146.         c->put_hevc_epel_uni[1][1][0] = ff_hevc_put_hevc_uni_epel_v4_8_msa;
  147.         c->put_hevc_epel_uni[2][1][0] = ff_hevc_put_hevc_uni_epel_v6_8_msa;
  148.         c->put_hevc_epel_uni[3][1][0] = ff_hevc_put_hevc_uni_epel_v8_8_msa;
  149.         c->put_hevc_epel_uni[4][1][0] = ff_hevc_put_hevc_uni_epel_v12_8_msa;
  150.         c->put_hevc_epel_uni[5][1][0] = ff_hevc_put_hevc_uni_epel_v16_8_msa;
  151.         c->put_hevc_epel_uni[6][1][0] = ff_hevc_put_hevc_uni_epel_v24_8_msa;
  152.         c->put_hevc_epel_uni[7][1][0] = ff_hevc_put_hevc_uni_epel_v32_8_msa;
  153.  
  154.         c->put_hevc_epel_uni[1][1][1] = ff_hevc_put_hevc_uni_epel_hv4_8_msa;
  155.         c->put_hevc_epel_uni[2][1][1] = ff_hevc_put_hevc_uni_epel_hv6_8_msa;
  156.         c->put_hevc_epel_uni[3][1][1] = ff_hevc_put_hevc_uni_epel_hv8_8_msa;
  157.         c->put_hevc_epel_uni[4][1][1] = ff_hevc_put_hevc_uni_epel_hv12_8_msa;
  158.         c->put_hevc_epel_uni[5][1][1] = ff_hevc_put_hevc_uni_epel_hv16_8_msa;
  159.         c->put_hevc_epel_uni[6][1][1] = ff_hevc_put_hevc_uni_epel_hv24_8_msa;
  160.         c->put_hevc_epel_uni[7][1][1] = ff_hevc_put_hevc_uni_epel_hv32_8_msa;
  161.  
  162.         c->put_hevc_qpel_uni_w[1][0][0] =
  163.             ff_hevc_put_hevc_uni_w_pel_pixels4_8_msa;
  164.         c->put_hevc_qpel_uni_w[3][0][0] =
  165.             ff_hevc_put_hevc_uni_w_pel_pixels8_8_msa;
  166.         c->put_hevc_qpel_uni_w[4][0][0] =
  167.             ff_hevc_put_hevc_uni_w_pel_pixels12_8_msa;
  168.         c->put_hevc_qpel_uni_w[5][0][0] =
  169.             ff_hevc_put_hevc_uni_w_pel_pixels16_8_msa;
  170.         c->put_hevc_qpel_uni_w[6][0][0] =
  171.             ff_hevc_put_hevc_uni_w_pel_pixels24_8_msa;
  172.         c->put_hevc_qpel_uni_w[7][0][0] =
  173.             ff_hevc_put_hevc_uni_w_pel_pixels32_8_msa;
  174.         c->put_hevc_qpel_uni_w[8][0][0] =
  175.             ff_hevc_put_hevc_uni_w_pel_pixels48_8_msa;
  176.         c->put_hevc_qpel_uni_w[9][0][0] =
  177.             ff_hevc_put_hevc_uni_w_pel_pixels64_8_msa;
  178.  
  179.         c->put_hevc_qpel_uni_w[1][0][1] = ff_hevc_put_hevc_uni_w_qpel_h4_8_msa;
  180.         c->put_hevc_qpel_uni_w[3][0][1] = ff_hevc_put_hevc_uni_w_qpel_h8_8_msa;
  181.         c->put_hevc_qpel_uni_w[4][0][1] = ff_hevc_put_hevc_uni_w_qpel_h12_8_msa;
  182.         c->put_hevc_qpel_uni_w[5][0][1] = ff_hevc_put_hevc_uni_w_qpel_h16_8_msa;
  183.         c->put_hevc_qpel_uni_w[6][0][1] = ff_hevc_put_hevc_uni_w_qpel_h24_8_msa;
  184.         c->put_hevc_qpel_uni_w[7][0][1] = ff_hevc_put_hevc_uni_w_qpel_h32_8_msa;
  185.         c->put_hevc_qpel_uni_w[8][0][1] = ff_hevc_put_hevc_uni_w_qpel_h48_8_msa;
  186.         c->put_hevc_qpel_uni_w[9][0][1] = ff_hevc_put_hevc_uni_w_qpel_h64_8_msa;
  187.  
  188.         c->put_hevc_qpel_uni_w[1][1][0] = ff_hevc_put_hevc_uni_w_qpel_v4_8_msa;
  189.         c->put_hevc_qpel_uni_w[3][1][0] = ff_hevc_put_hevc_uni_w_qpel_v8_8_msa;
  190.         c->put_hevc_qpel_uni_w[4][1][0] = ff_hevc_put_hevc_uni_w_qpel_v12_8_msa;
  191.         c->put_hevc_qpel_uni_w[5][1][0] = ff_hevc_put_hevc_uni_w_qpel_v16_8_msa;
  192.         c->put_hevc_qpel_uni_w[6][1][0] = ff_hevc_put_hevc_uni_w_qpel_v24_8_msa;
  193.         c->put_hevc_qpel_uni_w[7][1][0] = ff_hevc_put_hevc_uni_w_qpel_v32_8_msa;
  194.         c->put_hevc_qpel_uni_w[8][1][0] = ff_hevc_put_hevc_uni_w_qpel_v48_8_msa;
  195.         c->put_hevc_qpel_uni_w[9][1][0] = ff_hevc_put_hevc_uni_w_qpel_v64_8_msa;
  196.  
  197.         c->put_hevc_qpel_uni_w[1][1][1] = ff_hevc_put_hevc_uni_w_qpel_hv4_8_msa;
  198.         c->put_hevc_qpel_uni_w[3][1][1] = ff_hevc_put_hevc_uni_w_qpel_hv8_8_msa;
  199.         c->put_hevc_qpel_uni_w[4][1][1] =
  200.             ff_hevc_put_hevc_uni_w_qpel_hv12_8_msa;
  201.         c->put_hevc_qpel_uni_w[5][1][1] =
  202.             ff_hevc_put_hevc_uni_w_qpel_hv16_8_msa;
  203.         c->put_hevc_qpel_uni_w[6][1][1] =
  204.             ff_hevc_put_hevc_uni_w_qpel_hv24_8_msa;
  205.         c->put_hevc_qpel_uni_w[7][1][1] =
  206.             ff_hevc_put_hevc_uni_w_qpel_hv32_8_msa;
  207.         c->put_hevc_qpel_uni_w[8][1][1] =
  208.             ff_hevc_put_hevc_uni_w_qpel_hv48_8_msa;
  209.         c->put_hevc_qpel_uni_w[9][1][1] =
  210.             ff_hevc_put_hevc_uni_w_qpel_hv64_8_msa;
  211.  
  212.         c->put_hevc_epel_uni_w[1][0][0] =
  213.             ff_hevc_put_hevc_uni_w_pel_pixels4_8_msa;
  214.         c->put_hevc_epel_uni_w[2][0][0] =
  215.             ff_hevc_put_hevc_uni_w_pel_pixels6_8_msa;
  216.         c->put_hevc_epel_uni_w[3][0][0] =
  217.             ff_hevc_put_hevc_uni_w_pel_pixels8_8_msa;
  218.         c->put_hevc_epel_uni_w[4][0][0] =
  219.             ff_hevc_put_hevc_uni_w_pel_pixels12_8_msa;
  220.         c->put_hevc_epel_uni_w[5][0][0] =
  221.             ff_hevc_put_hevc_uni_w_pel_pixels16_8_msa;
  222.         c->put_hevc_epel_uni_w[6][0][0] =
  223.             ff_hevc_put_hevc_uni_w_pel_pixels24_8_msa;
  224.         c->put_hevc_epel_uni_w[7][0][0] =
  225.             ff_hevc_put_hevc_uni_w_pel_pixels32_8_msa;
  226.  
  227.         c->put_hevc_epel_uni_w[1][0][1] = ff_hevc_put_hevc_uni_w_epel_h4_8_msa;
  228.         c->put_hevc_epel_uni_w[2][0][1] = ff_hevc_put_hevc_uni_w_epel_h6_8_msa;
  229.         c->put_hevc_epel_uni_w[3][0][1] = ff_hevc_put_hevc_uni_w_epel_h8_8_msa;
  230.         c->put_hevc_epel_uni_w[4][0][1] = ff_hevc_put_hevc_uni_w_epel_h12_8_msa;
  231.         c->put_hevc_epel_uni_w[5][0][1] = ff_hevc_put_hevc_uni_w_epel_h16_8_msa;
  232.         c->put_hevc_epel_uni_w[6][0][1] = ff_hevc_put_hevc_uni_w_epel_h24_8_msa;
  233.         c->put_hevc_epel_uni_w[7][0][1] = ff_hevc_put_hevc_uni_w_epel_h32_8_msa;
  234.  
  235.         c->put_hevc_epel_uni_w[1][1][0] = ff_hevc_put_hevc_uni_w_epel_v4_8_msa;
  236.         c->put_hevc_epel_uni_w[2][1][0] = ff_hevc_put_hevc_uni_w_epel_v6_8_msa;
  237.         c->put_hevc_epel_uni_w[3][1][0] = ff_hevc_put_hevc_uni_w_epel_v8_8_msa;
  238.         c->put_hevc_epel_uni_w[4][1][0] = ff_hevc_put_hevc_uni_w_epel_v12_8_msa;
  239.         c->put_hevc_epel_uni_w[5][1][0] = ff_hevc_put_hevc_uni_w_epel_v16_8_msa;
  240.         c->put_hevc_epel_uni_w[6][1][0] = ff_hevc_put_hevc_uni_w_epel_v24_8_msa;
  241.         c->put_hevc_epel_uni_w[7][1][0] = ff_hevc_put_hevc_uni_w_epel_v32_8_msa;
  242.  
  243.         c->put_hevc_epel_uni_w[1][1][1] = ff_hevc_put_hevc_uni_w_epel_hv4_8_msa;
  244.         c->put_hevc_epel_uni_w[2][1][1] = ff_hevc_put_hevc_uni_w_epel_hv6_8_msa;
  245.         c->put_hevc_epel_uni_w[3][1][1] = ff_hevc_put_hevc_uni_w_epel_hv8_8_msa;
  246.         c->put_hevc_epel_uni_w[4][1][1] =
  247.             ff_hevc_put_hevc_uni_w_epel_hv12_8_msa;
  248.         c->put_hevc_epel_uni_w[5][1][1] =
  249.             ff_hevc_put_hevc_uni_w_epel_hv16_8_msa;
  250.         c->put_hevc_epel_uni_w[6][1][1] =
  251.             ff_hevc_put_hevc_uni_w_epel_hv24_8_msa;
  252.         c->put_hevc_epel_uni_w[7][1][1] =
  253.             ff_hevc_put_hevc_uni_w_epel_hv32_8_msa;
  254.  
  255.         c->put_hevc_qpel_bi[1][0][0] = ff_hevc_put_hevc_bi_pel_pixels4_8_msa;
  256.         c->put_hevc_qpel_bi[3][0][0] = ff_hevc_put_hevc_bi_pel_pixels8_8_msa;
  257.         c->put_hevc_qpel_bi[4][0][0] = ff_hevc_put_hevc_bi_pel_pixels12_8_msa;
  258.         c->put_hevc_qpel_bi[5][0][0] = ff_hevc_put_hevc_bi_pel_pixels16_8_msa;
  259.         c->put_hevc_qpel_bi[6][0][0] = ff_hevc_put_hevc_bi_pel_pixels24_8_msa;
  260.         c->put_hevc_qpel_bi[7][0][0] = ff_hevc_put_hevc_bi_pel_pixels32_8_msa;
  261.         c->put_hevc_qpel_bi[8][0][0] = ff_hevc_put_hevc_bi_pel_pixels48_8_msa;
  262.         c->put_hevc_qpel_bi[9][0][0] = ff_hevc_put_hevc_bi_pel_pixels64_8_msa;
  263.  
  264.         c->put_hevc_qpel_bi[1][0][1] = ff_hevc_put_hevc_bi_qpel_h4_8_msa;
  265.         c->put_hevc_qpel_bi[3][0][1] = ff_hevc_put_hevc_bi_qpel_h8_8_msa;
  266.         c->put_hevc_qpel_bi[4][0][1] = ff_hevc_put_hevc_bi_qpel_h12_8_msa;
  267.         c->put_hevc_qpel_bi[5][0][1] = ff_hevc_put_hevc_bi_qpel_h16_8_msa;
  268.         c->put_hevc_qpel_bi[6][0][1] = ff_hevc_put_hevc_bi_qpel_h24_8_msa;
  269.         c->put_hevc_qpel_bi[7][0][1] = ff_hevc_put_hevc_bi_qpel_h32_8_msa;
  270.         c->put_hevc_qpel_bi[8][0][1] = ff_hevc_put_hevc_bi_qpel_h48_8_msa;
  271.         c->put_hevc_qpel_bi[9][0][1] = ff_hevc_put_hevc_bi_qpel_h64_8_msa;
  272.  
  273.         c->put_hevc_qpel_bi[1][1][0] = ff_hevc_put_hevc_bi_qpel_v4_8_msa;
  274.         c->put_hevc_qpel_bi[3][1][0] = ff_hevc_put_hevc_bi_qpel_v8_8_msa;
  275.         c->put_hevc_qpel_bi[4][1][0] = ff_hevc_put_hevc_bi_qpel_v12_8_msa;
  276.         c->put_hevc_qpel_bi[5][1][0] = ff_hevc_put_hevc_bi_qpel_v16_8_msa;
  277.         c->put_hevc_qpel_bi[6][1][0] = ff_hevc_put_hevc_bi_qpel_v24_8_msa;
  278.         c->put_hevc_qpel_bi[7][1][0] = ff_hevc_put_hevc_bi_qpel_v32_8_msa;
  279.         c->put_hevc_qpel_bi[8][1][0] = ff_hevc_put_hevc_bi_qpel_v48_8_msa;
  280.         c->put_hevc_qpel_bi[9][1][0] = ff_hevc_put_hevc_bi_qpel_v64_8_msa;
  281.  
  282.         c->put_hevc_qpel_bi[1][1][1] = ff_hevc_put_hevc_bi_qpel_hv4_8_msa;
  283.         c->put_hevc_qpel_bi[3][1][1] = ff_hevc_put_hevc_bi_qpel_hv8_8_msa;
  284.         c->put_hevc_qpel_bi[4][1][1] = ff_hevc_put_hevc_bi_qpel_hv12_8_msa;
  285.         c->put_hevc_qpel_bi[5][1][1] = ff_hevc_put_hevc_bi_qpel_hv16_8_msa;
  286.         c->put_hevc_qpel_bi[6][1][1] = ff_hevc_put_hevc_bi_qpel_hv24_8_msa;
  287.         c->put_hevc_qpel_bi[7][1][1] = ff_hevc_put_hevc_bi_qpel_hv32_8_msa;
  288.         c->put_hevc_qpel_bi[8][1][1] = ff_hevc_put_hevc_bi_qpel_hv48_8_msa;
  289.         c->put_hevc_qpel_bi[9][1][1] = ff_hevc_put_hevc_bi_qpel_hv64_8_msa;
  290.  
  291.         c->put_hevc_epel_bi[1][0][0] = ff_hevc_put_hevc_bi_pel_pixels4_8_msa;
  292.         c->put_hevc_epel_bi[2][0][0] = ff_hevc_put_hevc_bi_pel_pixels6_8_msa;
  293.         c->put_hevc_epel_bi[3][0][0] = ff_hevc_put_hevc_bi_pel_pixels8_8_msa;
  294.         c->put_hevc_epel_bi[4][0][0] = ff_hevc_put_hevc_bi_pel_pixels12_8_msa;
  295.         c->put_hevc_epel_bi[5][0][0] = ff_hevc_put_hevc_bi_pel_pixels16_8_msa;
  296.         c->put_hevc_epel_bi[6][0][0] = ff_hevc_put_hevc_bi_pel_pixels24_8_msa;
  297.         c->put_hevc_epel_bi[7][0][0] = ff_hevc_put_hevc_bi_pel_pixels32_8_msa;
  298.  
  299.         c->put_hevc_epel_bi[1][0][1] = ff_hevc_put_hevc_bi_epel_h4_8_msa;
  300.         c->put_hevc_epel_bi[2][0][1] = ff_hevc_put_hevc_bi_epel_h6_8_msa;
  301.         c->put_hevc_epel_bi[3][0][1] = ff_hevc_put_hevc_bi_epel_h8_8_msa;
  302.         c->put_hevc_epel_bi[4][0][1] = ff_hevc_put_hevc_bi_epel_h12_8_msa;
  303.         c->put_hevc_epel_bi[5][0][1] = ff_hevc_put_hevc_bi_epel_h16_8_msa;
  304.         c->put_hevc_epel_bi[6][0][1] = ff_hevc_put_hevc_bi_epel_h24_8_msa;
  305.         c->put_hevc_epel_bi[7][0][1] = ff_hevc_put_hevc_bi_epel_h32_8_msa;
  306.  
  307.         c->put_hevc_epel_bi[1][1][0] = ff_hevc_put_hevc_bi_epel_v4_8_msa;
  308.         c->put_hevc_epel_bi[2][1][0] = ff_hevc_put_hevc_bi_epel_v6_8_msa;
  309.         c->put_hevc_epel_bi[3][1][0] = ff_hevc_put_hevc_bi_epel_v8_8_msa;
  310.         c->put_hevc_epel_bi[4][1][0] = ff_hevc_put_hevc_bi_epel_v12_8_msa;
  311.         c->put_hevc_epel_bi[5][1][0] = ff_hevc_put_hevc_bi_epel_v16_8_msa;
  312.         c->put_hevc_epel_bi[6][1][0] = ff_hevc_put_hevc_bi_epel_v24_8_msa;
  313.         c->put_hevc_epel_bi[7][1][0] = ff_hevc_put_hevc_bi_epel_v32_8_msa;
  314.  
  315.         c->put_hevc_epel_bi[1][1][1] = ff_hevc_put_hevc_bi_epel_hv4_8_msa;
  316.         c->put_hevc_epel_bi[2][1][1] = ff_hevc_put_hevc_bi_epel_hv6_8_msa;
  317.         c->put_hevc_epel_bi[3][1][1] = ff_hevc_put_hevc_bi_epel_hv8_8_msa;
  318.         c->put_hevc_epel_bi[4][1][1] = ff_hevc_put_hevc_bi_epel_hv12_8_msa;
  319.         c->put_hevc_epel_bi[5][1][1] = ff_hevc_put_hevc_bi_epel_hv16_8_msa;
  320.         c->put_hevc_epel_bi[6][1][1] = ff_hevc_put_hevc_bi_epel_hv24_8_msa;
  321.         c->put_hevc_epel_bi[7][1][1] = ff_hevc_put_hevc_bi_epel_hv32_8_msa;
  322.  
  323.         c->put_hevc_qpel_bi_w[1][0][0] =
  324.             ff_hevc_put_hevc_bi_w_pel_pixels4_8_msa;
  325.         c->put_hevc_qpel_bi_w[3][0][0] =
  326.             ff_hevc_put_hevc_bi_w_pel_pixels8_8_msa;
  327.         c->put_hevc_qpel_bi_w[4][0][0] =
  328.             ff_hevc_put_hevc_bi_w_pel_pixels12_8_msa;
  329.         c->put_hevc_qpel_bi_w[5][0][0] =
  330.             ff_hevc_put_hevc_bi_w_pel_pixels16_8_msa;
  331.         c->put_hevc_qpel_bi_w[6][0][0] =
  332.             ff_hevc_put_hevc_bi_w_pel_pixels24_8_msa;
  333.         c->put_hevc_qpel_bi_w[7][0][0] =
  334.             ff_hevc_put_hevc_bi_w_pel_pixels32_8_msa;
  335.         c->put_hevc_qpel_bi_w[8][0][0] =
  336.             ff_hevc_put_hevc_bi_w_pel_pixels48_8_msa;
  337.         c->put_hevc_qpel_bi_w[9][0][0] =
  338.             ff_hevc_put_hevc_bi_w_pel_pixels64_8_msa;
  339.  
  340.         c->put_hevc_qpel_bi_w[1][0][1] = ff_hevc_put_hevc_bi_w_qpel_h4_8_msa;
  341.         c->put_hevc_qpel_bi_w[3][0][1] = ff_hevc_put_hevc_bi_w_qpel_h8_8_msa;
  342.         c->put_hevc_qpel_bi_w[4][0][1] = ff_hevc_put_hevc_bi_w_qpel_h12_8_msa;
  343.         c->put_hevc_qpel_bi_w[5][0][1] = ff_hevc_put_hevc_bi_w_qpel_h16_8_msa;
  344.         c->put_hevc_qpel_bi_w[6][0][1] = ff_hevc_put_hevc_bi_w_qpel_h24_8_msa;
  345.         c->put_hevc_qpel_bi_w[7][0][1] = ff_hevc_put_hevc_bi_w_qpel_h32_8_msa;
  346.         c->put_hevc_qpel_bi_w[8][0][1] = ff_hevc_put_hevc_bi_w_qpel_h48_8_msa;
  347.         c->put_hevc_qpel_bi_w[9][0][1] = ff_hevc_put_hevc_bi_w_qpel_h64_8_msa;
  348.  
  349.         c->put_hevc_qpel_bi_w[1][1][0] = ff_hevc_put_hevc_bi_w_qpel_v4_8_msa;
  350.         c->put_hevc_qpel_bi_w[3][1][0] = ff_hevc_put_hevc_bi_w_qpel_v8_8_msa;
  351.         c->put_hevc_qpel_bi_w[4][1][0] = ff_hevc_put_hevc_bi_w_qpel_v12_8_msa;
  352.         c->put_hevc_qpel_bi_w[5][1][0] = ff_hevc_put_hevc_bi_w_qpel_v16_8_msa;
  353.         c->put_hevc_qpel_bi_w[6][1][0] = ff_hevc_put_hevc_bi_w_qpel_v24_8_msa;
  354.         c->put_hevc_qpel_bi_w[7][1][0] = ff_hevc_put_hevc_bi_w_qpel_v32_8_msa;
  355.         c->put_hevc_qpel_bi_w[8][1][0] = ff_hevc_put_hevc_bi_w_qpel_v48_8_msa;
  356.         c->put_hevc_qpel_bi_w[9][1][0] = ff_hevc_put_hevc_bi_w_qpel_v64_8_msa;
  357.  
  358.         c->put_hevc_qpel_bi_w[1][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv4_8_msa;
  359.         c->put_hevc_qpel_bi_w[3][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv8_8_msa;
  360.         c->put_hevc_qpel_bi_w[4][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv12_8_msa;
  361.         c->put_hevc_qpel_bi_w[5][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv16_8_msa;
  362.         c->put_hevc_qpel_bi_w[6][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv24_8_msa;
  363.         c->put_hevc_qpel_bi_w[7][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv32_8_msa;
  364.         c->put_hevc_qpel_bi_w[8][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv48_8_msa;
  365.         c->put_hevc_qpel_bi_w[9][1][1] = ff_hevc_put_hevc_bi_w_qpel_hv64_8_msa;
  366.  
  367.         c->put_hevc_epel_bi_w[1][0][0] =
  368.             ff_hevc_put_hevc_bi_w_pel_pixels4_8_msa;
  369.         c->put_hevc_epel_bi_w[2][0][0] =
  370.             ff_hevc_put_hevc_bi_w_pel_pixels6_8_msa;
  371.         c->put_hevc_epel_bi_w[3][0][0] =
  372.             ff_hevc_put_hevc_bi_w_pel_pixels8_8_msa;
  373.         c->put_hevc_epel_bi_w[4][0][0] =
  374.             ff_hevc_put_hevc_bi_w_pel_pixels12_8_msa;
  375.         c->put_hevc_epel_bi_w[5][0][0] =
  376.             ff_hevc_put_hevc_bi_w_pel_pixels16_8_msa;
  377.         c->put_hevc_epel_bi_w[6][0][0] =
  378.             ff_hevc_put_hevc_bi_w_pel_pixels24_8_msa;
  379.         c->put_hevc_epel_bi_w[7][0][0] =
  380.             ff_hevc_put_hevc_bi_w_pel_pixels32_8_msa;
  381.  
  382.         c->put_hevc_epel_bi_w[1][0][1] = ff_hevc_put_hevc_bi_w_epel_h4_8_msa;
  383.         c->put_hevc_epel_bi_w[2][0][1] = ff_hevc_put_hevc_bi_w_epel_h6_8_msa;
  384.         c->put_hevc_epel_bi_w[3][0][1] = ff_hevc_put_hevc_bi_w_epel_h8_8_msa;
  385.         c->put_hevc_epel_bi_w[4][0][1] = ff_hevc_put_hevc_bi_w_epel_h12_8_msa;
  386.         c->put_hevc_epel_bi_w[5][0][1] = ff_hevc_put_hevc_bi_w_epel_h16_8_msa;
  387.         c->put_hevc_epel_bi_w[6][0][1] = ff_hevc_put_hevc_bi_w_epel_h24_8_msa;
  388.         c->put_hevc_epel_bi_w[7][0][1] = ff_hevc_put_hevc_bi_w_epel_h32_8_msa;
  389.  
  390.         c->put_hevc_epel_bi_w[1][1][0] = ff_hevc_put_hevc_bi_w_epel_v4_8_msa;
  391.         c->put_hevc_epel_bi_w[2][1][0] = ff_hevc_put_hevc_bi_w_epel_v6_8_msa;
  392.         c->put_hevc_epel_bi_w[3][1][0] = ff_hevc_put_hevc_bi_w_epel_v8_8_msa;
  393.         c->put_hevc_epel_bi_w[4][1][0] = ff_hevc_put_hevc_bi_w_epel_v12_8_msa;
  394.         c->put_hevc_epel_bi_w[5][1][0] = ff_hevc_put_hevc_bi_w_epel_v16_8_msa;
  395.         c->put_hevc_epel_bi_w[6][1][0] = ff_hevc_put_hevc_bi_w_epel_v24_8_msa;
  396.         c->put_hevc_epel_bi_w[7][1][0] = ff_hevc_put_hevc_bi_w_epel_v32_8_msa;
  397.  
  398.         c->put_hevc_epel_bi_w[1][1][1] = ff_hevc_put_hevc_bi_w_epel_hv4_8_msa;
  399.         c->put_hevc_epel_bi_w[2][1][1] = ff_hevc_put_hevc_bi_w_epel_hv6_8_msa;
  400.         c->put_hevc_epel_bi_w[3][1][1] = ff_hevc_put_hevc_bi_w_epel_hv8_8_msa;
  401.         c->put_hevc_epel_bi_w[4][1][1] = ff_hevc_put_hevc_bi_w_epel_hv12_8_msa;
  402.         c->put_hevc_epel_bi_w[5][1][1] = ff_hevc_put_hevc_bi_w_epel_hv16_8_msa;
  403.         c->put_hevc_epel_bi_w[6][1][1] = ff_hevc_put_hevc_bi_w_epel_hv24_8_msa;
  404.         c->put_hevc_epel_bi_w[7][1][1] = ff_hevc_put_hevc_bi_w_epel_hv32_8_msa;
  405.  
  406.         c->sao_band_filter[0] =
  407.         c->sao_band_filter[1] =
  408.         c->sao_band_filter[2] =
  409.         c->sao_band_filter[3] =
  410.         c->sao_band_filter[4] = ff_hevc_sao_band_filter_0_8_msa;
  411.  
  412.         c->sao_edge_filter[0] =
  413.         c->sao_edge_filter[1] =
  414.         c->sao_edge_filter[2] =
  415.         c->sao_edge_filter[3] =
  416.         c->sao_edge_filter[4] = ff_hevc_sao_edge_filter_8_msa;
  417.  
  418.         c->hevc_h_loop_filter_luma = ff_hevc_loop_filter_luma_h_8_msa;
  419.         c->hevc_v_loop_filter_luma = ff_hevc_loop_filter_luma_v_8_msa;
  420.  
  421.         c->hevc_h_loop_filter_chroma = ff_hevc_loop_filter_chroma_h_8_msa;
  422.         c->hevc_v_loop_filter_chroma = ff_hevc_loop_filter_chroma_v_8_msa;
  423.  
  424.         c->hevc_h_loop_filter_luma_c = ff_hevc_loop_filter_luma_h_8_msa;
  425.         c->hevc_v_loop_filter_luma_c = ff_hevc_loop_filter_luma_v_8_msa;
  426.  
  427.         c->hevc_h_loop_filter_chroma_c =
  428.             ff_hevc_loop_filter_chroma_h_8_msa;
  429.         c->hevc_v_loop_filter_chroma_c =
  430.             ff_hevc_loop_filter_chroma_v_8_msa;
  431.  
  432.         c->idct[0] = ff_hevc_idct_4x4_msa;
  433.         c->idct[1] = ff_hevc_idct_8x8_msa;
  434.         c->idct[2] = ff_hevc_idct_16x16_msa;
  435.         c->idct[3] = ff_hevc_idct_32x32_msa;
  436.         c->idct_dc[0] = ff_hevc_idct_dc_4x4_msa;
  437.         c->idct_dc[1] = ff_hevc_idct_dc_8x8_msa;
  438.         c->idct_dc[2] = ff_hevc_idct_dc_16x16_msa;
  439.         c->idct_dc[3] = ff_hevc_idct_dc_32x32_msa;
  440.         c->transform_add[0] = ff_hevc_addblk_4x4_msa;
  441.         c->transform_add[1] = ff_hevc_addblk_8x8_msa;
  442.         c->transform_add[2] = ff_hevc_addblk_16x16_msa;
  443.         c->transform_add[3] = ff_hevc_addblk_32x32_msa;
  444.         c->idct_4x4_luma = ff_hevc_idct_luma_4x4_msa;
  445.     }
  446. }
  447. #endif  // #if HAVE_MSA
  448.  
  449. void ff_hevc_dsp_init_mips(HEVCDSPContext *c, const int bit_depth)
  450. {
  451. #if HAVE_MSA
  452.     hevc_dsp_init_msa(c, bit_depth);
  453. #endif  // #if HAVE_MSA
  454. }
  455.