/*
 * Copyright (c) 2015 Parag Salasakar (Parag.Salasakar@imgtec.com)
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#include "../hpeldsp.h"
#include "libavcodec/mips/hpeldsp_mips.h"

#if HAVE_MSA
static void ff_hpeldsp_init_msa(HpelDSPContext *c, int flags)
{
    c->put_pixels_tab[0][0] = ff_put_pixels16_msa;
    c->put_pixels_tab[0][1] = ff_put_pixels16_x2_msa;
    c->put_pixels_tab[0][2] = ff_put_pixels16_y2_msa;
    c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_msa;

    c->put_pixels_tab[1][0] = ff_put_pixels8_msa;
    c->put_pixels_tab[1][1] = ff_put_pixels8_x2_msa;
    c->put_pixels_tab[1][2] = ff_put_pixels8_y2_msa;
    c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_msa;

    c->put_pixels_tab[2][1] = ff_put_pixels4_x2_msa;
    c->put_pixels_tab[2][2] = ff_put_pixels4_y2_msa;
    c->put_pixels_tab[2][3] = ff_put_pixels4_xy2_msa;

    c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_msa;
    c->put_no_rnd_pixels_tab[0][1] = ff_put_no_rnd_pixels16_x2_msa;
    c->put_no_rnd_pixels_tab[0][2] = ff_put_no_rnd_pixels16_y2_msa;
    c->put_no_rnd_pixels_tab[0][3] = ff_put_no_rnd_pixels16_xy2_msa;

    c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_msa;
    c->put_no_rnd_pixels_tab[1][1] = ff_put_no_rnd_pixels8_x2_msa;
    c->put_no_rnd_pixels_tab[1][2] = ff_put_no_rnd_pixels8_y2_msa;
    c->put_no_rnd_pixels_tab[1][3] = ff_put_no_rnd_pixels8_xy2_msa;

    c->avg_pixels_tab[0][0] = ff_avg_pixels16_msa;
    c->avg_pixels_tab[0][1] = ff_avg_pixels16_x2_msa;
    c->avg_pixels_tab[0][2] = ff_avg_pixels16_y2_msa;
    c->avg_pixels_tab[0][3] = ff_avg_pixels16_xy2_msa;

    c->avg_pixels_tab[1][0] = ff_avg_pixels8_msa;
    c->avg_pixels_tab[1][1] = ff_avg_pixels8_x2_msa;
    c->avg_pixels_tab[1][2] = ff_avg_pixels8_y2_msa;
    c->avg_pixels_tab[1][3] = ff_avg_pixels8_xy2_msa;

    c->avg_pixels_tab[2][0] = ff_avg_pixels4_msa;
    c->avg_pixels_tab[2][1] = ff_avg_pixels4_x2_msa;
    c->avg_pixels_tab[2][2] = ff_avg_pixels4_y2_msa;
    c->avg_pixels_tab[2][3] = ff_avg_pixels4_xy2_msa;
}
#endif  // #if HAVE_MSA

void ff_hpeldsp_init_mips(HpelDSPContext *c, int flags)
{
#if HAVE_MSA
    ff_hpeldsp_init_msa(c, flags);
#endif  // #if HAVE_MSA
}
