xref: /aosp_15_r20/external/libavc/decoder/x86/svc/isvcd_function_selector.c (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1 /******************************************************************************
2  *
3  * Copyright (C) 2022 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 *  isvcd_function_selector.c
24 *
25 * @brief
26 *  Contains functions to initialize function pointers used in svc
27 *
28 * @author
29 *  Kishore
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 #include "isvcd_structs.h"
47 #include "ih264d_function_selector.h"
48 #include "isvcd_function_selector.h"
49 
50 /**
51  *******************************************************************************
52  *
53  * @brief Initialize the intra/inter/transform/deblk function pointers of
54  * codec context
55  *
56  * @par Description: the current routine initializes the function pointers of
57  * codec context basing on the architecture in use for svc
58  *
59  * @param[in] ps_svc_lyr_dec
60  *  svc dec layer context pointer
61  *
62  * @returns  none
63  *
64  * @remarks none
65  *
66  *******************************************************************************
67  */
isvcd_init_function_ptr(svc_dec_lyr_struct_t * ps_svc_lyr_dec)68 void isvcd_init_function_ptr(svc_dec_lyr_struct_t *ps_svc_lyr_dec)
69 {
70     isvcd_init_function_ptr_generic(ps_svc_lyr_dec);
71     switch(ps_svc_lyr_dec->s_dec.e_processor_arch)
72     {
73         case ARCH_X86_GENERIC:
74             isvcd_init_function_ptr_generic(ps_svc_lyr_dec);
75             break;
76         case ARCH_X86_SSSE3:
77             ih264d_init_function_ptr_ssse3(&ps_svc_lyr_dec->s_dec);
78             break;
79         case ARCH_X86_SSE42:
80         default:
81             ih264d_init_function_ptr_ssse3(&ps_svc_lyr_dec->s_dec);
82             isvcd_init_function_ptr_sse42(ps_svc_lyr_dec);
83             break;
84     }
85 }
86