xref: /aosp_15_r20/external/libxaac/test/decoder/ixheaacd_error.c (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker /******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker  *                                                                            *
3*15dc779aSAndroid Build Coastguard Worker  * Copyright (C) 2018 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker  *
5*15dc779aSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker  *
9*15dc779aSAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker  *
11*15dc779aSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker  * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker  *
17*15dc779aSAndroid Build Coastguard Worker  *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker */
20*15dc779aSAndroid Build Coastguard Worker #include <stdio.h>
21*15dc779aSAndroid Build Coastguard Worker #include "ixheaac_type_def.h"
22*15dc779aSAndroid Build Coastguard Worker #include "ixheaac_error_standards.h"
23*15dc779aSAndroid Build Coastguard Worker #include "ixheaacd_error_handler.h"
24*15dc779aSAndroid Build Coastguard Worker 
25*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
26*15dc779aSAndroid Build Coastguard Worker /* Global memory constants                                                   */
27*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
28*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
29*15dc779aSAndroid Build Coastguard Worker /* Ittiam enhaacplus_dec ErrorCode Definitions                               */
30*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
31*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
32*15dc779aSAndroid Build Coastguard Worker /* Class 0: API Errors
33*15dc779aSAndroid Build Coastguard Worker  */
34*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
35*15dc779aSAndroid Build Coastguard Worker /* Non Fatal Errors */
36*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_api_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
37*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "No Error",
38*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "API Command not supported",
39*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "API Command type not supported"};
40*15dc779aSAndroid Build Coastguard Worker /* Fatal Errors */
41*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_api_fatal[IA_MAX_ERROR_SUB_CODE] = {
42*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Memory Table Index",
43*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Library ID String Index",
44*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "NULL Pointer: Memory Allocation Error",
45*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Config Param",
46*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Execute type",
47*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Command",
48*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Memory Allocation Error: Alignment requirement not met"};
49*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
50*15dc779aSAndroid Build Coastguard Worker /* Class 1: Configuration Errors
51*15dc779aSAndroid Build Coastguard Worker  */
52*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
53*15dc779aSAndroid Build Coastguard Worker /* Non Fatal Errors */
54*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_config_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
55*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Output PCM WORD Size. Setting to default, 16 ",
56*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Down-mix flag option. Setting to default, 0 ",
57*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid eSBR PS flag option. Setting to default, 0 ",
58*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid downmix to stereo flag option. Setting to default, 0 ",
59*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid interleave to stereo flag option. Setting to default, 1 ",
60*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid downsample flag option. Setting to default, 0 ",
61*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid peak limiter flag option. Setting to default, 1 ",
62*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid MP4 flag option. Setting to default, 0 ",
63*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid maximum number of channels. limiting to between 2 and 8",
64*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid instance for coupling channel. Setting to default 1",
65*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid error concealment flag option. Setting to default 0",
66*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Disable Sync flag option. Setting to default, 0 ",
67*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Auto SBR upsample option. Setting to default, 1 ",
68*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid DRC heavy compression flag option. Setting to default 0",
69*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid DRC cut value",
70*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid DRC boost value",
71*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid DRC target",
72*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Frame size",
73*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid LD testing flag option. Setting to default 0",
74*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid effect type",
75*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid target loudness value",
76*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid HQ eSBR flag option. Setting to default 0",
77*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid frame length flag option. Setting to default 0",
78*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid eSBR flag option. Setting to default 1"};
79*15dc779aSAndroid Build Coastguard Worker /* Fatal Errors */
80*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_config_fatal[IA_MAX_ERROR_SUB_CODE] = {
81*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid Sample rate specified for RAW decoding"};
82*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
83*15dc779aSAndroid Build Coastguard Worker /* Class 2: Initialization Errors
84*15dc779aSAndroid Build Coastguard Worker  */
85*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
86*15dc779aSAndroid Build Coastguard Worker /* Non Fatal Errors */
87*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_init_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
88*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Header not found at the beginning of input data continuing syncing",
89*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid number of QMF bands", (pWORD8) "Decoder initialization failed",
90*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Input bytes insufficient for decoding", (pWORD8) "Error in AAC decoding"};
91*15dc779aSAndroid Build Coastguard Worker /* Fatal Errors */
92*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_init_fatal[IA_MAX_ERROR_SUB_CODE] = {
93*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "AAC Decoder initialization failed",
94*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "End of input reached during initialization",
95*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "No. of channels in stream greater than max channels defined",
96*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Audio object type is not supported",
97*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Decoder initialization failed",
98*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Channel coupling not supported"};
99*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
100*15dc779aSAndroid Build Coastguard Worker /* Class 3: Execution Errors
101*15dc779aSAndroid Build Coastguard Worker  */
102*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
103*15dc779aSAndroid Build Coastguard Worker /* Non Fatal Errors */
104*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_exe_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
105*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "ADTS syncronization is lost. Re-syncing",
106*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Though SBR was present in previous frame, not present in current"
107*15dc779aSAndroid Build Coastguard Worker              "frame (SBR turned off)",
108*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "SBR was not present in previous frame, but it is present in"
109*15dc779aSAndroid Build Coastguard Worker              "current frame (SBR turned on)",
110*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "ADTS Header CRC failed.Re-syncing",
111*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Input bytes insufficient for decoding",
112*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Element instance tag mismatch, because of new channel mode",
113*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "max huffman decoded value exceeded",
114*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Error in AAC decoding",
115*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Scale factor exceeds the transmitted boundary",
116*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Gain control not supported",
117*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Filter Order of TNS data is greater than maximum order",
118*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "LTP data found, not supported",
119*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "The base sampling frequency has changed in ADTS header",
120*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Pulse Data exceeds the permitted boundary",
121*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid code ixheaacd_book number in ia_huffman_data_type decoding",
122*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Channel index not within allowed range",
123*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Smoothing mode not within allowed range",
124*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Smoothing time not within allowed range",
125*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Extension type in the bitstream not within allowed range",
126*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "QMF update type in the bitstream not within allowed range",
127*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Window type in the bitstream not within allowed range",
128*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Evaluated sine parameter not within allowed range"};
129*15dc779aSAndroid Build Coastguard Worker /* Fatal Errors */
130*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_exe_fatal[IA_MAX_ERROR_SUB_CODE] = {
131*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Channel coupling not supported",
132*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "TNS data range is errorneous",
133*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid LOAS header",
134*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Invalid DRC data",
135*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "MPS reshaping input not valid",
136*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Tree config present in bit stream not valid",
137*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Number of timeslots not valid",
138*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "MPS dequantization parameter not valid",
139*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "MPS quantization mode not valid",
140*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "MPS input channels not valid",
141*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Bitstream data in arbitrary downmix spatial frame not valid",
142*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Window sequence value not valid",
143*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Temporal shape config in the bitstream not valid",
144*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "3D audio HRTF set present in the bitstream not valid",
145*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "TTT mode read from the bitstream not valid",
146*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Number of OTT boxes in the bitstream not valid",
147*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Number of parameter sets present in the bitstream not valid",
148*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Mapping of index data failed during decoding",
149*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Number of parameter bands present in the bitstream not valid"};
150*15dc779aSAndroid Build Coastguard Worker 
151*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
152*15dc779aSAndroid Build Coastguard Worker /* error info structure                                                      */
153*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
154*15dc779aSAndroid Build Coastguard Worker /* The Module's Error Info Structure */
155*15dc779aSAndroid Build Coastguard Worker ia_error_info_struct ixheaacd_error_info = {
156*15dc779aSAndroid Build Coastguard Worker     /* The Module Name  */
157*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Ittiam xheaac_dec",
158*15dc779aSAndroid Build Coastguard Worker     {/* The Class Names */
159*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "API", (pWORD8) "Configuration", (pWORD8) "Initialization",
160*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "Execution", (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "",
161*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "",
162*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "", (pWORD8) "", (pWORD8) "xHeaac"},
163*15dc779aSAndroid Build Coastguard Worker     {/* The Message Pointers    */
164*15dc779aSAndroid Build Coastguard Worker      {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
165*15dc779aSAndroid Build Coastguard Worker       NULL, NULL, NULL, NULL},
166*15dc779aSAndroid Build Coastguard Worker      {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
167*15dc779aSAndroid Build Coastguard Worker       NULL, NULL, NULL, NULL}}};
168*15dc779aSAndroid Build Coastguard Worker 
169*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
170*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
171*15dc779aSAndroid Build Coastguard Worker /*  Function name : ixheaacd_error_handler_init                     */
172*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
173*15dc779aSAndroid Build Coastguard Worker /*  Description   : Initialize the error struct with string pointers         */
174*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
175*15dc779aSAndroid Build Coastguard Worker /*  Inputs        : none                                                     */
176*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
177*15dc779aSAndroid Build Coastguard Worker /*  Globals       : ia_error_info_struct ixheaacd_error_info        */
178*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_api_non_fatal               */
179*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_api_fatal                   */
180*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_config_non_fatal            */
181*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_config_fatal                */
182*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_init_non_fatal              */
183*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_init_fatal                  */
184*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_exe_non_fatal               */
185*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_exe_fatal                   */
186*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
187*15dc779aSAndroid Build Coastguard Worker /*  Processing    : Init the struct with error string pointers               */
188*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
189*15dc779aSAndroid Build Coastguard Worker /*  Outputs       : none                                                     */
190*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
191*15dc779aSAndroid Build Coastguard Worker /*  Returns       : none                                                     */
192*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
193*15dc779aSAndroid Build Coastguard Worker /*  Issues        : none                                                     */
194*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
195*15dc779aSAndroid Build Coastguard Worker /*  Revision history :                                                       */
196*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
197*15dc779aSAndroid Build Coastguard Worker /*        DD MM YYYY       Author                Changes                     */
198*15dc779aSAndroid Build Coastguard Worker /*        29 07 2005       Ittiam                Created                     */
199*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
200*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
201*15dc779aSAndroid Build Coastguard Worker 
ixheaacd_error_handler_init()202*15dc779aSAndroid Build Coastguard Worker VOID ixheaacd_error_handler_init() {
203*15dc779aSAndroid Build Coastguard Worker   /* The Message Pointers   */
204*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[0][0] =
205*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_api_non_fatal;
206*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[1][0] = ixheaacd_ppb_api_fatal;
207*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[0][1] =
208*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_config_non_fatal;
209*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[1][1] =
210*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_config_fatal;
211*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[0][2] =
212*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_init_non_fatal;
213*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[1][2] = ixheaacd_ppb_init_fatal;
214*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[0][3] =
215*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_exe_non_fatal;
216*15dc779aSAndroid Build Coastguard Worker   ixheaacd_error_info.ppppb_error_msg_pointers[1][3] = ixheaacd_ppb_exe_fatal;
217*15dc779aSAndroid Build Coastguard Worker }
218*15dc779aSAndroid Build Coastguard Worker 
219*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
220*15dc779aSAndroid Build Coastguard Worker /* ia_testbench ErrorCode Definitions                                        */
221*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
222*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
223*15dc779aSAndroid Build Coastguard Worker /* Class 0: Memory & File Manager Errors
224*15dc779aSAndroid Build Coastguard Worker  */
225*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
226*15dc779aSAndroid Build Coastguard Worker /* Non Fatal Errors */
227*15dc779aSAndroid Build Coastguard Worker /* Fatal Errors */
228*15dc779aSAndroid Build Coastguard Worker pWORD8 ixheaacd_ppb_ia_testbench_mem_file_man_fatal[IA_MAX_ERROR_SUB_CODE] = {
229*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "Memory Allocation Error", (pWORD8) "File Open Failed"};
230*15dc779aSAndroid Build Coastguard Worker 
231*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
232*15dc779aSAndroid Build Coastguard Worker /* error info structure                                                      */
233*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
234*15dc779aSAndroid Build Coastguard Worker /* The Module's Error Info Structure */
235*15dc779aSAndroid Build Coastguard Worker ia_error_info_struct ixheaacd_ia_testbench_error_info = {
236*15dc779aSAndroid Build Coastguard Worker     /* The Module Name  */
237*15dc779aSAndroid Build Coastguard Worker     (pWORD8) "ia_testbench",
238*15dc779aSAndroid Build Coastguard Worker     {/* The Class Names */
239*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "Memory & File Manager", (pWORD8) "", (pWORD8) "", (pWORD8) "",
240*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "",
241*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "", (pWORD8) "",
242*15dc779aSAndroid Build Coastguard Worker      (pWORD8) "", (pWORD8) ""},
243*15dc779aSAndroid Build Coastguard Worker     {/* The Message Pointers    */
244*15dc779aSAndroid Build Coastguard Worker      {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
245*15dc779aSAndroid Build Coastguard Worker       NULL, NULL, NULL, NULL},
246*15dc779aSAndroid Build Coastguard Worker      {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
247*15dc779aSAndroid Build Coastguard Worker       NULL, NULL, NULL, NULL}}};
248*15dc779aSAndroid Build Coastguard Worker 
249*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
250*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
251*15dc779aSAndroid Build Coastguard Worker /*  Function name : ia_testbench_error_handler_init                          */
252*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
253*15dc779aSAndroid Build Coastguard Worker /*  Description   : Initialize the error struct with string pointers         */
254*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
255*15dc779aSAndroid Build Coastguard Worker /*  Inputs        : none                                                     */
256*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
257*15dc779aSAndroid Build Coastguard Worker /*  Globals       : ia_error_info_struct ixheaacd_ia_testbench_error_info */
258*15dc779aSAndroid Build Coastguard Worker /*                  pWORD8 ixheaacd_ppb_ia_testbench_mem_file_man_fatal */
259*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
260*15dc779aSAndroid Build Coastguard Worker /*  Processing    : Init the struct with error string pointers               */
261*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
262*15dc779aSAndroid Build Coastguard Worker /*  Outputs       : none                                                     */
263*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
264*15dc779aSAndroid Build Coastguard Worker /*  Returns       : none                                                     */
265*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
266*15dc779aSAndroid Build Coastguard Worker /*  Issues        : none                                                     */
267*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
268*15dc779aSAndroid Build Coastguard Worker /*  Revision history :                                                       */
269*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
270*15dc779aSAndroid Build Coastguard Worker /*        DD MM YYYY       Author                Changes                     */
271*15dc779aSAndroid Build Coastguard Worker /*        29 07 2005       Ittiam                Created                     */
272*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
273*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
274*15dc779aSAndroid Build Coastguard Worker 
ia_testbench_error_handler_init()275*15dc779aSAndroid Build Coastguard Worker VOID ia_testbench_error_handler_init() {
276*15dc779aSAndroid Build Coastguard Worker   /* The Message Pointers   */
277*15dc779aSAndroid Build Coastguard Worker   ixheaacd_ia_testbench_error_info.ppppb_error_msg_pointers[1][0] =
278*15dc779aSAndroid Build Coastguard Worker       ixheaacd_ppb_ia_testbench_mem_file_man_fatal;
279*15dc779aSAndroid Build Coastguard Worker }
280*15dc779aSAndroid Build Coastguard Worker 
281*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
282*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
283*15dc779aSAndroid Build Coastguard Worker /*  Function name : ixheaacd_error_handler */
284*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
285*15dc779aSAndroid Build Coastguard Worker /*  Description   : Called Prints the status error code from the err_info    */
286*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
287*15dc779aSAndroid Build Coastguard Worker /*  Inputs        : ia_error_info_struct *p_mod_err_info (Error info struct) */
288*15dc779aSAndroid Build Coastguard Worker /*                  WORD8 *pb_context (Context of error)                     */
289*15dc779aSAndroid Build Coastguard Worker /*                  IA_ERRORCODE code (Error code)                           */
290*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
291*15dc779aSAndroid Build Coastguard Worker /*  Globals       : none                                                     */
292*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
293*15dc779aSAndroid Build Coastguard Worker /*  Processing    : whenever any module calls the errorhandler,  it  informs */
294*15dc779aSAndroid Build Coastguard Worker /*                  it about the module for which it is called and a context */
295*15dc779aSAndroid Build Coastguard Worker /*                  in which it was  called  in addition to  the  error_code */
296*15dc779aSAndroid Build Coastguard Worker /*                  the message is displayed  based  on the  module's  error */
297*15dc779aSAndroid Build Coastguard Worker /*                  message  array  that maps to  the error_code the context */
298*15dc779aSAndroid Build Coastguard Worker /*                  gives specific info in which the error occured  e.g. for */
299*15dc779aSAndroid Build Coastguard Worker /*                  testbench   module,  memory  allocator   can   call  the */
300*15dc779aSAndroid Build Coastguard Worker /*                  errorhandler   for  memory  inavailability  in   various */
301*15dc779aSAndroid Build Coastguard Worker /*                  contexts like input_buf or output_buf e.g.  for  mp3_enc */
302*15dc779aSAndroid Build Coastguard Worker /*                  module, there can be various instances running.  context */
303*15dc779aSAndroid Build Coastguard Worker /*                  can be used to  identify  the  particular  instance  the */
304*15dc779aSAndroid Build Coastguard Worker /*                  error handler is being called for                        */
305*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
306*15dc779aSAndroid Build Coastguard Worker /*  Outputs       : None                                                     */
307*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
308*15dc779aSAndroid Build Coastguard Worker /*  Returns       : IA_ERRORCODE error_value  (Error value)                  */
309*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
310*15dc779aSAndroid Build Coastguard Worker /*  Issues        : none                                                     */
311*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
312*15dc779aSAndroid Build Coastguard Worker /*  Revision history :                                                       */
313*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
314*15dc779aSAndroid Build Coastguard Worker /*        DD MM YYYY       Author                Changes                     */
315*15dc779aSAndroid Build Coastguard Worker /*        29 07 2005       Tejaswi/Vishal        Created                     */
316*15dc779aSAndroid Build Coastguard Worker /*                                                                           */
317*15dc779aSAndroid Build Coastguard Worker /*****************************************************************************/
318*15dc779aSAndroid Build Coastguard Worker 
ixheaacd_error_handler(ia_error_info_struct * p_mod_err_info,WORD8 * pb_context,IA_ERRORCODE code)319*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaacd_error_handler(ia_error_info_struct *p_mod_err_info,
320*15dc779aSAndroid Build Coastguard Worker                                     WORD8 *pb_context, IA_ERRORCODE code) {
321*15dc779aSAndroid Build Coastguard Worker   if (code == IA_NO_ERROR) {
322*15dc779aSAndroid Build Coastguard Worker     return IA_NO_ERROR;
323*15dc779aSAndroid Build Coastguard Worker   }
324*15dc779aSAndroid Build Coastguard Worker   {
325*15dc779aSAndroid Build Coastguard Worker     WORD is_fatal, err_class, err_sub_code;
326*15dc779aSAndroid Build Coastguard Worker 
327*15dc779aSAndroid Build Coastguard Worker     if (code == IA_FATAL_ERROR)
328*15dc779aSAndroid Build Coastguard Worker       is_fatal = 1;
329*15dc779aSAndroid Build Coastguard Worker     else
330*15dc779aSAndroid Build Coastguard Worker       is_fatal = (((UWORD)code & 0x8000) >> 15);
331*15dc779aSAndroid Build Coastguard Worker 
332*15dc779aSAndroid Build Coastguard Worker     err_class = (((UWORD)code & 0x7800) >> 11);
333*15dc779aSAndroid Build Coastguard Worker     err_sub_code = (((UWORD)code & 0x07FF));
334*15dc779aSAndroid Build Coastguard Worker 
335*15dc779aSAndroid Build Coastguard Worker     if (!is_fatal) {
336*15dc779aSAndroid Build Coastguard Worker       printf("non ");
337*15dc779aSAndroid Build Coastguard Worker     }
338*15dc779aSAndroid Build Coastguard Worker     printf("fatal error: ");
339*15dc779aSAndroid Build Coastguard Worker 
340*15dc779aSAndroid Build Coastguard Worker     if (p_mod_err_info->pb_module_name != NULL) {
341*15dc779aSAndroid Build Coastguard Worker       printf("%s: ", p_mod_err_info->pb_module_name);
342*15dc779aSAndroid Build Coastguard Worker     }
343*15dc779aSAndroid Build Coastguard Worker     if (p_mod_err_info->ppb_class_names[err_class] != NULL) {
344*15dc779aSAndroid Build Coastguard Worker       printf("%s: ", p_mod_err_info->ppb_class_names[err_class]);
345*15dc779aSAndroid Build Coastguard Worker     }
346*15dc779aSAndroid Build Coastguard Worker     if (pb_context != NULL) {
347*15dc779aSAndroid Build Coastguard Worker       printf("%s: ", pb_context);
348*15dc779aSAndroid Build Coastguard Worker     }
349*15dc779aSAndroid Build Coastguard Worker     if (err_sub_code >= IA_MAX_ERROR_SUB_CODE ||
350*15dc779aSAndroid Build Coastguard Worker         p_mod_err_info->ppppb_error_msg_pointers[is_fatal][err_class]
351*15dc779aSAndroid Build Coastguard Worker                                                 [err_sub_code] == NULL) {
352*15dc779aSAndroid Build Coastguard Worker       printf("error unlisted");
353*15dc779aSAndroid Build Coastguard Worker     } else {
354*15dc779aSAndroid Build Coastguard Worker       printf("%s\n",
355*15dc779aSAndroid Build Coastguard Worker              p_mod_err_info
356*15dc779aSAndroid Build Coastguard Worker                  ->ppppb_error_msg_pointers[is_fatal][err_class][err_sub_code]);
357*15dc779aSAndroid Build Coastguard Worker     }
358*15dc779aSAndroid Build Coastguard Worker   }
359*15dc779aSAndroid Build Coastguard Worker   return IA_NO_ERROR;
360*15dc779aSAndroid Build Coastguard Worker }