• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  *  ih264e_platform_macros.h
24  *
25  * @brief
26  *  Contains platform specific routines used for codec context intialization
27  *
28  * @author
29  *  ittiam
30  *
31  * @remarks
32  *  none
33  *
34  *******************************************************************************
35  */
36 
37 
38 #ifndef IH264E_PLATFORM_MACROS_H_
39 #define IH264E_PLATFORM_MACROS_H_
40 
41 /*****************************************************************************/
42 /* Extern Function Declarations                                              */
43 /*****************************************************************************/
44 
45 /**
46 *******************************************************************************
47 *
48 * @brief Initialize the intra/inter/transform/deblk function pointers of
49 * codec context
50 *
51 * @par Description: the current routine initializes the function pointers of
52 * codec context basing on the architecture in use
53 *
54 * @param[in] ps_codec
55 *  Codec context pointer
56 *
57 * @returns  none
58 *
59 * @remarks none
60 *
61 *******************************************************************************
62 */
63 void ih264e_init_function_ptr_generic(codec_t *ps_codec);
64 /**
65 *******************************************************************************
66 *
67 * @brief Initialize the intra/inter/transform/deblk function pointers of
68 * codec context
69 *
70 * @par Description: the current routine initializes the function pointers of
71 * codec context basing on the architecture in use
72 *
73 * @param[in] ps_codec
74 *  Codec context pointer
75 *
76 * @returns  none
77 *
78 * @remarks none
79 *
80 *******************************************************************************
81 */
82 void ih264e_init_function_ptr_ssse3(codec_t *ps_codec);
83 void ih264e_init_function_ptr_sse42(codec_t *ps_codec);
84 
85 /**
86 *******************************************************************************
87 *
88 * @brief Initialize the intra/inter/transform/deblk function pointers of
89 * codec context
90 *
91 * @par Description: the current routine initializes the function pointers of
92 * codec context basing on the architecture in use
93 *
94 * @param[in] ps_codec
95 *  Codec context pointer
96 *
97 * @returns  none
98 *
99 * @remarks none
100 *
101 *******************************************************************************
102 */
103 void ih264e_init_function_ptr(void *pv_codec);
104 
105 /**
106 *******************************************************************************
107 *
108 * @brief Determine the architecture of the encoder executing environment
109 *
110 * @par Description: This routine returns the architecture of the enviro-
111 * ment in which the current encoder is being tested
112 *
113 * @param[in] void
114 *
115 * @returns  IV_ARCH_T
116 *  architecture
117 *
118 * @remarks none
119 *
120 *******************************************************************************
121 */
122 IV_ARCH_T ih264e_default_arch(void);
123 
124 /**
125 *******************************************************************************
126 *
127 * @brief Data Memory Barrier, Data Synchronization Barrier
128 *
129 *
130 * @par Description: These functions do nothing on x86 side. But on arm platforms,
131 *
132 * Data Memory Barrier acts as a memory barrier. It ensures that all explicit
133 * memory accesses that appear in program order before the DMB instruction are
134 * observed before any explicit memory accesses that appear in program order
135 * after the DMB instruction. It does not affect the ordering of any other
136 * instructions executing on the processor
137 *
138 * Data Synchronization Barrier acts as a special kind of memory barrier. No
139 * instruction in program order after this instruction executes until this instruction
140 * completes. This instruction completes when:
141 *       1. All explicit memory accesses before this instruction complete.
142 *       2. All Cache, Branch predictor and TLB maintenance operations before
143 *       this instruction complete.
144 *
145 * @param[in] void
146 *
147 * @returns  void
148 *
149 * @remarks none
150 *
151 *******************************************************************************
152 */
153 
154 #endif /* IH264E_PLATFORM_MACROS_H_ */
155