1/******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *****************************************************************************
18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
20/**
21*******************************************************************************
22* @file
23*  imp2d_function_selector.c
24*
25* @brief
26*  Contains functions to initialize function pointers used in hevc
27*
28* @author
29*  Naveen
30*
31* @par List of Functions:
32* @remarks
33*  None
34*
35*******************************************************************************
36*/
37/*****************************************************************************/
38/* File Includes                                                             */
39/*****************************************************************************/
40
41#include <stdio.h>
42#include <stddef.h>
43#include <stdlib.h>
44#include <string.h>
45
46/* User Include files */
47#include "ih264_typedefs.h"
48#include "iv.h"
49#include "ivd.h"
50#include "ih264_defs.h"
51#include "ih264_size_defs.h"
52#include "ih264_error.h"
53#include "ih264_trans_quant_itrans_iquant.h"
54#include "ih264_inter_pred_filters.h"
55
56#include "ih264d_structs.h"
57#include "ih264d_function_selector.h"
58
59void ih264d_init_function_ptr(dec_struct_t *ps_codec)
60{
61
62    ih264d_init_function_ptr_generic(ps_codec);
63    switch(ps_codec->e_processor_arch)
64    {
65        case ARCH_X86_GENERIC:
66            ih264d_init_function_ptr_generic(ps_codec);
67        break;
68        case ARCH_X86_SSSE3:
69            ih264d_init_function_ptr_ssse3(ps_codec);
70            break;
71        case ARCH_X86_SSE42:
72        default:
73            ih264d_init_function_ptr_ssse3(ps_codec);
74            ih264d_init_function_ptr_sse42(ps_codec);
75        break;
76    }
77}
78void ih264d_init_arch(dec_struct_t *ps_codec)
79{
80#ifdef DEFAULT_ARCH
81#if DEFAULT_ARCH == D_ARCH_X86_SSE42
82    ps_codec->e_processor_arch = ARCH_X86_SSE42;
83#elif DEFAULT_ARCH == D_ARCH_X86_SSSE3
84    ps_codec->e_processor_arch = ARCH_X86_SSSE3;
85#elif DEFAULT_ARCH == D_ARCH_X86_AVX2
86    ps_codec->e_processor_arch = D_ARCH_X86_AVX2;
87#else
88    ps_codec->e_processor_arch = ARCH_X86_GENERIC;
89#endif
90#else
91    ps_codec->e_processor_arch = ARCH_X86_SSE42;
92#endif
93
94}
95