xref: /utopia/UTPA2-700.0.x/mxlib/include/apiJPEG.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// @file   apiJPEG.h
98*53ee8cc1Swenshuai.xi /// @brief  JPEG API
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi /*! \defgroup JPEG JPEG interface (apiJPEG.h)
104*53ee8cc1Swenshuai.xi     \ingroup JPEG
105*53ee8cc1Swenshuai.xi     The supporting features of Mstar JPD HW IP are listed in the following:
106*53ee8cc1Swenshuai.xi -# Support JPEG sequential mode, single scan.
107*53ee8cc1Swenshuai.xi -# Mstar JPD IP supports sequential mode only. If the file is of JPD progressive mode, DDI will pre-do software variable length decoding (SVLD) and then call Mstar JPD IP to do the rest of the decoding procedure.
108*53ee8cc1Swenshuai.xi -# Support both color picture and grayscale format.
109*53ee8cc1Swenshuai.xi -# Operate in scan unit, the decoder will handle the part after scan header.
110*53ee8cc1Swenshuai.xi -# Support JPEG decoder based on programmable region of interest (ROI).
111*53ee8cc1Swenshuai.xi -# Support color format: YUV444/YUV422/YUV420/YUV411. The decoded result will be stored in YUV422 format.
112*53ee8cc1Swenshuai.xi -# One ECS read-from-memory channel MRC.
113*53ee8cc1Swenshuai.xi 	   -It means that Mstar JPD only support interleaved baseline decoding.
114*53ee8cc1Swenshuai.xi -# JPD read data form read buffer which is defined by software. Its minimum size is 16 double words and multiple of 8.
115*53ee8cc1Swenshuai.xi -# Read Buffer is divided into low and high portion, and valid bit for each portion is set by software and clear by decoder.
116*53ee8cc1Swenshuai.xi -# Decode picture data output to write buffer which is for the picture of original size, 1/2 downscaled, 1/4 downscaled or 1/8 downscaled.
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi     <b> Operation Code Flow: </b> \n
119*53ee8cc1Swenshuai.xi     check flow chart directly.
120*53ee8cc1Swenshuai.xi     \image html JPD_decode_flow.png
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi *! \defgroup JPEG_Basic JPEG Basic APIs
123*53ee8cc1Swenshuai.xi *  \ingroup JPEG
124*53ee8cc1Swenshuai.xi *! \defgroup JPEG_MPO MPO related APIs
125*53ee8cc1Swenshuai.xi *  \ingroup JPEG
126*53ee8cc1Swenshuai.xi *! \defgroup JPEG_MJPEG MJPEG related APIs
127*53ee8cc1Swenshuai.xi *  \ingroup JPEG
128*53ee8cc1Swenshuai.xi *! \defgroup JPEG_HW_BUG Previous HW bug related APIs (to be removed)
129*53ee8cc1Swenshuai.xi *  \ingroup JPEG
130*53ee8cc1Swenshuai.xi *! \defgroup JPEG_oJPD oJPD use related APIs (to be removed)
131*53ee8cc1Swenshuai.xi *  \ingroup JPEG
132*53ee8cc1Swenshuai.xi *! \defgroup JPEG_MHEG5 MHEG5 use related APIs (to be removed)
133*53ee8cc1Swenshuai.xi *  \ingroup JPEG
134*53ee8cc1Swenshuai.xi *! \defgroup JPEG_Debug JPEG Debug APIs
135*53ee8cc1Swenshuai.xi *  \ingroup JPEG
136*53ee8cc1Swenshuai.xi *! \defgroup JPEG_to_be_integrated JPEG_to_be_integrated (to be removed)
137*53ee8cc1Swenshuai.xi *  \ingroup JPEG
138*53ee8cc1Swenshuai.xi *! \defgroup JPEG_to_be_removed JPEG_to_be_removed (to be removed)
139*53ee8cc1Swenshuai.xi *  \ingroup JPEG
140*53ee8cc1Swenshuai.xi *! \defgroup JPEG_to_be_added JPEG_to_be_added
141*53ee8cc1Swenshuai.xi *  \ingroup JPEG
142*53ee8cc1Swenshuai.xi */
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi #ifndef _API_JPEG_H_
145*53ee8cc1Swenshuai.xi #define _API_JPEG_H_
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi #ifdef __cplusplus
148*53ee8cc1Swenshuai.xi extern "C" {
149*53ee8cc1Swenshuai.xi #endif
150*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
151*53ee8cc1Swenshuai.xi //  Macro and Define
152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
153*53ee8cc1Swenshuai.xi #define MSIF_JPEG_LIB_CODE                     {'J','P','E','G'}                    ///<Lib code
154*53ee8cc1Swenshuai.xi #define MSIF_JPEG_LIBVER                       {'0','1'}                            ///<LIB version
155*53ee8cc1Swenshuai.xi #define MSIF_JPEG_BUILDNUM                     {'0','H'}                            ///<Build Number
156*53ee8cc1Swenshuai.xi #define MSIF_JPEG_CHANGELIST                   {'0','0','7','1','8','4','1','5'}    ///<P4 ChangeList Number
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
159*53ee8cc1Swenshuai.xi /// @brief \b JPEG_API_VERSION : JPEG Version
160*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
161*53ee8cc1Swenshuai.xi #define JPEG_API_VERSION                /* Character String for DRV/API version             */  \
162*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
163*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
164*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
165*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
166*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
167*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
168*53ee8cc1Swenshuai.xi     MSIF_JPEG_LIB_CODE,                 /* IP__                                             */  \
169*53ee8cc1Swenshuai.xi     MSIF_JPEG_LIBVER,                   /* 0.0 ~ Z.Z                                        */  \
170*53ee8cc1Swenshuai.xi     MSIF_JPEG_BUILDNUM,                 /* 00 ~ 99                                          */  \
171*53ee8cc1Swenshuai.xi     MSIF_JPEG_CHANGELIST,               /* CL#                                              */  \
172*53ee8cc1Swenshuai.xi     MSIF_OS
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
175*53ee8cc1Swenshuai.xi /// @brief \b JPEG_DEFAULT_EXIF_SIZE : The buffer size for thumbnail
176*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
177*53ee8cc1Swenshuai.xi #define JPEG_DEFAULT_EXIF_SIZE  (64*1024UL + 128)
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi #define SUPPORT_MPO_FORMAT          1
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi #define SUPPORT_EXIF_EXTRA_INFO       TRUE // FALSE
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi #define SUPPORT_GET_FULL_IMAGE_INFO          1
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi #if SUPPORT_MPO_FORMAT
186*53ee8cc1Swenshuai.xi #define JPEG_MPO_MAX_SUPPORT_IMAGE  4
187*53ee8cc1Swenshuai.xi #endif
188*53ee8cc1Swenshuai.xi 
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi #define JPEG_UTOPIA20       (1)
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
194*53ee8cc1Swenshuai.xi //  Type and Structure
195*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
196*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
197*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_Result
198*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG decode result
199*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
200*53ee8cc1Swenshuai.xi typedef enum
201*53ee8cc1Swenshuai.xi {
202*53ee8cc1Swenshuai.xi     E_JPEG_FAILED   = 0
203*53ee8cc1Swenshuai.xi   , E_JPEG_OKAY     = 1
204*53ee8cc1Swenshuai.xi   , E_JPEG_DONE     = 2
205*53ee8cc1Swenshuai.xi   , E_JPEG_RETRY    = 3
206*53ee8cc1Swenshuai.xi } JPEG_Result;
207*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
208*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_ErrCode
209*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG error code
210*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
211*53ee8cc1Swenshuai.xi typedef enum
212*53ee8cc1Swenshuai.xi {
213*53ee8cc1Swenshuai.xi     E_JPEG_NO_ERROR                     = 0
214*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DHT_COUNTS               = -200
215*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DHT_INDEX                = -201
216*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DHT_MARKER               = -202
217*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DQT_MARKER               = -203
218*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DQT_TABLE                = -204
219*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_PRECISION                = -205
220*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_HEIGHT                   = -206
221*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_WIDTH                    = -207
222*53ee8cc1Swenshuai.xi   , E_JPEG_TOO_MANY_COMPONENTS          = -208
223*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_SOF_LENGTH               = -209
224*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_VARIABLE_MARKER          = -210
225*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DRI_LENGTH               = -211
226*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_SOS_LENGTH               = -212
227*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_SOS_COMP_ID              = -213
228*53ee8cc1Swenshuai.xi   , E_JPEG_W_EXTRA_BYTES_BEFORE_MARKER  = -214
229*53ee8cc1Swenshuai.xi   , E_JPEG_NO_ARITHMETIC_SUPPORT        = -215
230*53ee8cc1Swenshuai.xi   , E_JPEG_UNEXPECTED_MARKER            = -216
231*53ee8cc1Swenshuai.xi   , E_JPEG_NOT_JPEG                     = -217
232*53ee8cc1Swenshuai.xi   , E_JPEG_UNSUPPORTED_MARKER           = -218
233*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_DQT_LENGTH               = -219
234*53ee8cc1Swenshuai.xi   , E_JPEG_TOO_MANY_BLOCKS              = -221
235*53ee8cc1Swenshuai.xi   , E_JPEG_UNDEFINED_QUANT_TABLE        = -222
236*53ee8cc1Swenshuai.xi   , E_JPEG_UNDEFINED_HUFF_TABLE         = -223
237*53ee8cc1Swenshuai.xi   , E_JPEG_NOT_SINGLE_SCAN              = -224
238*53ee8cc1Swenshuai.xi   , E_JPEG_UNSUPPORTED_COLORSPACE       = -225
239*53ee8cc1Swenshuai.xi   , E_JPEG_UNSUPPORTED_SAMP_FACTORS     = -226
240*53ee8cc1Swenshuai.xi   , E_JPEG_DECODE_ERROR                 = -227
241*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_RESTART_MARKER           = -228
242*53ee8cc1Swenshuai.xi   , E_JPEG_ASSERTION_ERROR              = -229
243*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_SOS_SPECTRAL             = -230
244*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_SOS_SUCCESSIVE           = -231
245*53ee8cc1Swenshuai.xi   , E_JPEG_STREAM_READ                  = -232
246*53ee8cc1Swenshuai.xi   , E_JPEG_NOTENOUGHMEM                 = -233
247*53ee8cc1Swenshuai.xi   , E_JPEG_STOP_DECODE                  = -234 //kevinhuang, add
248*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_APP1_MARKER              = -235
249*53ee8cc1Swenshuai.xi   , E_JPEG_NO_THUMBNAIL                 = -236
250*53ee8cc1Swenshuai.xi   , E_JPEG_UNSUPPORTED_HUFF_DECODE      = -237
251*53ee8cc1Swenshuai.xi   , E_JPEG_READBUFFER_TOOSMALL          = -238
252*53ee8cc1Swenshuai.xi   , E_JPEG_NOT_ENOUGH_HEADER_INFO       = -240
253*53ee8cc1Swenshuai.xi   , E_JPEG_RE_INIT                      = -241
254*53ee8cc1Swenshuai.xi   , E_JPEG_NOT_INIT                     = -242
255*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_APP0_MARKER              = -243
256*53ee8cc1Swenshuai.xi #if SUPPORT_MPO_FORMAT
257*53ee8cc1Swenshuai.xi   , E_JPEG_BAD_APP2_MARKER              = -250
258*53ee8cc1Swenshuai.xi #endif
259*53ee8cc1Swenshuai.xi   , E_JPEG_JPD_DECODE_ERROR             = 0x5566
260*53ee8cc1Swenshuai.xi } JPEG_ErrCode;
261*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
262*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_DecType
263*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG decode type
264*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
265*53ee8cc1Swenshuai.xi typedef enum
266*53ee8cc1Swenshuai.xi {
267*53ee8cc1Swenshuai.xi     E_JPEG_TYPE_MAIN        = 0
268*53ee8cc1Swenshuai.xi   , E_JPEG_TYPE_THUMBNAIL   = 1
269*53ee8cc1Swenshuai.xi   , E_JPEG_TYPE_MJPEG       = 2
270*53ee8cc1Swenshuai.xi }JPEG_DecType;
271*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
272*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_BuffLoadType
273*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG buffer loading mode
274*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
275*53ee8cc1Swenshuai.xi typedef enum
276*53ee8cc1Swenshuai.xi {
277*53ee8cc1Swenshuai.xi     E_JPEG_BUFFER_NONE  = 0
278*53ee8cc1Swenshuai.xi   , E_JPEG_BUFFER_HIGH  = 1
279*53ee8cc1Swenshuai.xi   , E_JPEG_BUFFER_LOW   = 2
280*53ee8cc1Swenshuai.xi } JPEG_BuffLoadType;
281*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
282*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_DbgLevel
283*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG debug mode
284*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
285*53ee8cc1Swenshuai.xi typedef enum
286*53ee8cc1Swenshuai.xi {
287*53ee8cc1Swenshuai.xi     E_JPEG_DEBUG_NONE   = 0x0
288*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_API    = 0x01
289*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_DRV    = 0x02
290*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_HAL    = 0x04
291*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_MSG    = 0x07
292*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_ERR    = 0x08
293*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_ALL    = 0x0F
294*53ee8cc1Swenshuai.xi   , E_JPEG_DEBUG_MJPEG    = 0x10
295*53ee8cc1Swenshuai.xi } JPEG_DbgLevel;
296*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
297*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_Event
298*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG decode event flag
299*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
300*53ee8cc1Swenshuai.xi typedef enum
301*53ee8cc1Swenshuai.xi {
302*53ee8cc1Swenshuai.xi     E_JPEG_EVENT_DEC_NONE       = 0x00
303*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_DONE       = 0x01
304*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_ECS_ERROR  = 0x02
305*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_IS_ERROR   = 0x04
306*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_RST_ERROR  = 0x08
307*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_MRBL_DONE  = 0x10
308*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_MRBH_DONE  = 0x20
309*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_MRB_DONE   = 0x30
310*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_MWB_FULL   = 0x40
311*53ee8cc1Swenshuai.xi   , E_JPEG_EVENT_DEC_ERROR_MASK = 0x0E
312*53ee8cc1Swenshuai.xi } JPEG_Event;
313*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
314*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_DecodeStatus
315*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: JPEG decoder status
316*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
317*53ee8cc1Swenshuai.xi typedef enum
318*53ee8cc1Swenshuai.xi {
319*53ee8cc1Swenshuai.xi     E_JPEG_DEC_DONE             = 0
320*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_FAILED           = 1
321*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_RST_ERROR        = 2
322*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_BITSTREAM_ERROR  = 3
323*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_MRBL_DONE        = 4
324*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_MRBH_DONE        = 5
325*53ee8cc1Swenshuai.xi   , E_JPEG_DEC_DECODING         = 6
326*53ee8cc1Swenshuai.xi } JPEG_DecodeStatus;
327*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
328*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Name: JPEG_EXIF_IFD0_Orientation
329*53ee8cc1Swenshuai.xi /// @brief \b Enum \b Description: The orientation of JPEG EXIF
330*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
331*53ee8cc1Swenshuai.xi typedef enum
332*53ee8cc1Swenshuai.xi {
333*53ee8cc1Swenshuai.xi     E_JPEG_EXIF_ORIENT_NOT_FOUND              = 0
334*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_0               = 1
335*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_MIRROR_LR              = 2
336*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_180             = 3
337*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_MIRROR_TB              = 4
338*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_90_MIRROR_LR    = 5
339*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_90              = 6
340*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_90_MIRROR_TB    = 7
341*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_ROTATE_270             = 8
342*53ee8cc1Swenshuai.xi   , E_JPEG_EXIF_ORIENT_RESERVED               = 9
343*53ee8cc1Swenshuai.xi } JPEG_EXIF_Orientation;
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi typedef enum
346*53ee8cc1Swenshuai.xi {
347*53ee8cc1Swenshuai.xi     E_JPEG_GET_EXIF_MANUFACTURER            = 0
348*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_MODEL                   = 1
349*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_FLASH                   = 2
350*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_ISO_SPEED_RATINGS       = 3
351*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_SHUTTER_SPEED_VALUE     = 4
352*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_APERTURE_VALUE          = 5
353*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_EXPOSURE_BIAS_VALUE     = 6
354*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_FOCAL_LENGTH            = 7
355*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_IMAGE_WIDTH             = 8
356*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_IMAGE_HEIGHT            = 9
357*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_EXPOSURE_TIME           = 10
358*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_F_NUMBER                = 11
359*53ee8cc1Swenshuai.xi   , E_JPEG_GET_EXIF_EXPOSURE_PROGRAM        = 12
360*53ee8cc1Swenshuai.xi   , E_JPEG_GET_Y_SAMPLING_FACTOR_HORIZONTAL = 13
361*53ee8cc1Swenshuai.xi   , E_JPEG_GET_Y_SAMPLING_FACTOR_VERTICAL   = 14
362*53ee8cc1Swenshuai.xi   , E_JPEG_GET_COMPONENTS_NUM               = 15
363*53ee8cc1Swenshuai.xi   , E_JPEG_GET_IS_PROGRESSIVE               = 16
364*53ee8cc1Swenshuai.xi   , E_JPEG_GET_COLOR_FORMAT                 = 17
365*53ee8cc1Swenshuai.xi #if SUPPORT_GET_FULL_IMAGE_INFO
366*53ee8cc1Swenshuai.xi   , E_JPEG_GET_FULL_IMAGE_WIDTH             = 18
367*53ee8cc1Swenshuai.xi   , E_JPEG_GET_FULL_IMAGE_HEIGHT            = 19
368*53ee8cc1Swenshuai.xi   , E_JPEG_IS_FULL_IMAGE_PROGRESSIVE        = 20
369*53ee8cc1Swenshuai.xi #endif
370*53ee8cc1Swenshuai.xi } EN_JPEG_GET_CTRL_ID;
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi typedef enum
373*53ee8cc1Swenshuai.xi {
374*53ee8cc1Swenshuai.xi      E_JPEG_INPUT_FORMAT_GRAY_SCALE     = 0
375*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_YUV444         = 1
376*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_YUV422         = 2
377*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_YUV420         = 3
378*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_YUV411         = 4
379*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_CMYK           = 5
380*53ee8cc1Swenshuai.xi ,    E_JPEG_INPUT_FORMAT_RGB            = 6
381*53ee8cc1Swenshuai.xi }EN_JPEG_INPUT_COLOR_FORMAT;
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi 
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi // the structure of NJPEG_VerificationMode should be the same as NJPD_VerificationMode
386*53ee8cc1Swenshuai.xi typedef enum
387*53ee8cc1Swenshuai.xi {
388*53ee8cc1Swenshuai.xi     E_NJPEG00_NONE,
389*53ee8cc1Swenshuai.xi     E_NJPEG01_TABLE_READ_WRITE,
390*53ee8cc1Swenshuai.xi     E_NJPEG13_ROI,
391*53ee8cc1Swenshuai.xi     E_NJPEG17_OBUF_OUTPUT_FORMAT_YC_SWAP,
392*53ee8cc1Swenshuai.xi     E_NJPEG17_OBUF_OUTPUT_FORMAT_UV_SWAP,
393*53ee8cc1Swenshuai.xi     E_NJPEG17_OBUF_OUTPUT_FORMAT_UV_7BIT,
394*53ee8cc1Swenshuai.xi     E_NJPEG17_OBUF_OUTPUT_FORMAT_UV_MSB,
395*53ee8cc1Swenshuai.xi     E_NJPEG18_IBUF_BURST_LENGTH,
396*53ee8cc1Swenshuai.xi     E_NJPEG21_NO_RESET_TABLE,
397*53ee8cc1Swenshuai.xi     E_NJPEG23_WRITE_PROTECT,
398*53ee8cc1Swenshuai.xi     E_NJPEG25_DOWNSCALE_1_2,
399*53ee8cc1Swenshuai.xi     E_NJPEG25_DOWNSCALE_1_4,
400*53ee8cc1Swenshuai.xi     E_NJPEG25_DOWNSCALE_1_8
401*53ee8cc1Swenshuai.xi }NJPEG_VerificationMode;
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
404*53ee8cc1Swenshuai.xi ///@brief \b Typedef \b Name: *JPEG_FillHdrFunc
405*53ee8cc1Swenshuai.xi ///@brief \b Typedef \b Description: the function for fill header information
406*53ee8cc1Swenshuai.xi ///@param <IN> \b BufAddr : fill buffer address
407*53ee8cc1Swenshuai.xi ///@param <IN> \b BufLength : fill buffer size
408*53ee8cc1Swenshuai.xi ///@return The amount of byte read
409*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
410*53ee8cc1Swenshuai.xi typedef MS_S32 (*JPEG_FillHdrFunc)(MS_PHY BufAddr, MS_U32 BufLength);
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
413*53ee8cc1Swenshuai.xi ///@brief \b Typedef \b Name: *JPEG_IsrFuncCb
414*53ee8cc1Swenshuai.xi ///@brief \b Typedef \b Description: the function handling JPD interrupt
415*53ee8cc1Swenshuai.xi ///@param None
416*53ee8cc1Swenshuai.xi ///@return None
417*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
418*53ee8cc1Swenshuai.xi typedef void (*JPEG_IsrFuncCb)(void);
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
421*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Name: JPEG_InitParam
422*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Description: JPEG decode parameter setting
423*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
424*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
425*53ee8cc1Swenshuai.xi {
426*53ee8cc1Swenshuai.xi     MS_PHY u32MRCBufAddr;       ///< MRC buffer address
427*53ee8cc1Swenshuai.xi     MS_U32 u32MRCBufSize;           ///< MRC buffer size
428*53ee8cc1Swenshuai.xi     MS_PHY u32MWCBufAddr;       ///< MWC buffer address
429*53ee8cc1Swenshuai.xi     MS_U32 u32MWCBufSize;           ///< MWC buffer size
430*53ee8cc1Swenshuai.xi     MS_PHY u32InternalBufAddr;  ///< internal buffer address
431*53ee8cc1Swenshuai.xi     MS_U32 u32InternalBufSize;      ///< internal buffer size
432*53ee8cc1Swenshuai.xi     MS_U32 u32DecByteRead;          ///< how many byte read for JPEG decoder initialization
433*53ee8cc1Swenshuai.xi     MS_BOOL bEOF;                   ///< has read to the end of file
434*53ee8cc1Swenshuai.xi     MS_U8 u8DecodeType;             ///< JPEG decode type : JPEG main, thumbnail, or MJPEG
435*53ee8cc1Swenshuai.xi     MS_BOOL bInitMem;               ///< initialize memory pool or not
436*53ee8cc1Swenshuai.xi     JPEG_FillHdrFunc pFillHdrFunc;  ///< the function for fill header information
437*53ee8cc1Swenshuai.xi } JPEG_InitParam;
438*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
439*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Name: JPEG_DrvCap
440*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Description: JPEG decode driver capability
441*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
442*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
443*53ee8cc1Swenshuai.xi {
444*53ee8cc1Swenshuai.xi     MS_U16 u16MaxWidth;     ///< max decoded width for baseline
445*53ee8cc1Swenshuai.xi     MS_U16 u16MaxHeight;    ///< max decoded height for baseline
446*53ee8cc1Swenshuai.xi     MS_U16 u16MaxProWidth;  ///< max decoded width for progressive
447*53ee8cc1Swenshuai.xi     MS_U16 u16MaxProHeight; ///< max decoded height for progressive
448*53ee8cc1Swenshuai.xi     MS_BOOL bBaseline;      ///< support baseline decode
449*53ee8cc1Swenshuai.xi     MS_BOOL bProgressive;   ///< support progressive decode
450*53ee8cc1Swenshuai.xi     MS_BOOL bMJPEG;         ///< support motion JPEG
451*53ee8cc1Swenshuai.xi } JPEG_DrvCap;
452*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
453*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Name: JPEG_Info
454*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Description: JPEG decode information
455*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
456*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
457*53ee8cc1Swenshuai.xi {
458*53ee8cc1Swenshuai.xi     const MSIF_Version* pu8DrvVer;  ///< JPEG DRV version
459*53ee8cc1Swenshuai.xi     MS_U8* pu8HalVer;               ///< JPEG HAL version
460*53ee8cc1Swenshuai.xi     MS_U8* pu8FwVer;                ///< JPEG FW version
461*53ee8cc1Swenshuai.xi     JPEG_DrvCap stDrvCap;           ///< JPEG driver capability
462*53ee8cc1Swenshuai.xi } JPEG_Info;
463*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
464*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Name: JPEG_Status
465*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Description: JPD driver Status
466*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
467*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
468*53ee8cc1Swenshuai.xi {
469*53ee8cc1Swenshuai.xi     MS_U32  u32CurMRCAddr;  ///< JPD current decoded address
470*53ee8cc1Swenshuai.xi     MS_U16  u16CurVidx;     ///< JPD current decoded vertical index
471*53ee8cc1Swenshuai.xi     MS_U16  u16CurRow;      ///< JPD current decoded row
472*53ee8cc1Swenshuai.xi     MS_U16  u16CurCol;      ///< JPD current decoded column
473*53ee8cc1Swenshuai.xi     MS_BOOL bDrvBusy;       ///< JPD status
474*53ee8cc1Swenshuai.xi     MS_BOOL bIsrEnable;     ///< JPD ISR status
475*53ee8cc1Swenshuai.xi } JPEG_Status;
476*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
477*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Name: JPEG_EXIF_DateTime
478*53ee8cc1Swenshuai.xi /// @brief \b Struct \b Description: The DateTime info of JPEG EXIF.
479*53ee8cc1Swenshuai.xi //-----------------------------------------------------------------------------
480*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
481*53ee8cc1Swenshuai.xi {
482*53ee8cc1Swenshuai.xi     MS_U32 u32Year;         ///< The year info of JPEG EXIF DataTime
483*53ee8cc1Swenshuai.xi     MS_U32 u32Month;        ///< The month info of JPEG EXIF DataTime
484*53ee8cc1Swenshuai.xi     MS_U32 u32Day;          ///< The day info of JPEG EXIF DataTime
485*53ee8cc1Swenshuai.xi     MS_U32 u32Hour;         ///< The hour info of JPEG EXIF DataTime
486*53ee8cc1Swenshuai.xi     MS_U32 u32Minute;       ///< The minute info of JPEG EXIF DataTime
487*53ee8cc1Swenshuai.xi     MS_U32 u32Second;       ///< The second info of JPEG EXIF DataTime
488*53ee8cc1Swenshuai.xi     MS_BOOL bHasDataTime;   ///< JPEG EXIF DataTime info exist or not
489*53ee8cc1Swenshuai.xi }JPEG_EXIF_DateTime;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi typedef enum
492*53ee8cc1Swenshuai.xi {
493*53ee8cc1Swenshuai.xi     E_DECODE_NONE = 0,
494*53ee8cc1Swenshuai.xi     E_DECODE_DONE,
495*53ee8cc1Swenshuai.xi     E_DECODING,
496*53ee8cc1Swenshuai.xi     E_DECODE_ERR,
497*53ee8cc1Swenshuai.xi     E_STREAM_READ_ERR
498*53ee8cc1Swenshuai.xi } EN_JPEG_DECODE_STATUS;
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
501*53ee8cc1Swenshuai.xi {
502*53ee8cc1Swenshuai.xi     MS_U16 u16Xdensity;      //inch or cm
503*53ee8cc1Swenshuai.xi     MS_U16 u16Ydensity;      //inch or cm
504*53ee8cc1Swenshuai.xi     MS_U8 u8Unit;                  //APP0 Mark units : 0-> no units, X and Y specify the pixel aspect ratio
505*53ee8cc1Swenshuai.xi                                       //                       1 -> X and Y are dots per inch
506*53ee8cc1Swenshuai.xi                                       //                       2 -> X and Y are dots per cm
507*53ee8cc1Swenshuai.xi }APP0_Unit;
508*53ee8cc1Swenshuai.xi 
509*53ee8cc1Swenshuai.xi 
510*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
511*53ee8cc1Swenshuai.xi {
512*53ee8cc1Swenshuai.xi     union
513*53ee8cc1Swenshuai.xi     {
514*53ee8cc1Swenshuai.xi         struct
515*53ee8cc1Swenshuai.xi         {
516*53ee8cc1Swenshuai.xi             MS_U32 numerator;
517*53ee8cc1Swenshuai.xi             MS_U32 denominator;
518*53ee8cc1Swenshuai.xi         };
519*53ee8cc1Swenshuai.xi 
520*53ee8cc1Swenshuai.xi         struct
521*53ee8cc1Swenshuai.xi         {
522*53ee8cc1Swenshuai.xi             MS_S32 s_numerator;
523*53ee8cc1Swenshuai.xi             MS_S32 s_denominator;
524*53ee8cc1Swenshuai.xi         };
525*53ee8cc1Swenshuai.xi     };
526*53ee8cc1Swenshuai.xi } JPEG_RATIONAL;
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _JPEG_CB_EVENT_PARAM
529*53ee8cc1Swenshuai.xi {
530*53ee8cc1Swenshuai.xi     MS_U32 type;
531*53ee8cc1Swenshuai.xi     MS_PHY BufAddr;
532*53ee8cc1Swenshuai.xi     MS_U32 BufLength;
533*53ee8cc1Swenshuai.xi     MS_S32 param;
534*53ee8cc1Swenshuai.xi }JPEG_CB_EVENT_PARAM, *PJPEG_CB_EVENT_PARAM;
535*53ee8cc1Swenshuai.xi 
536*53ee8cc1Swenshuai.xi typedef enum
537*53ee8cc1Swenshuai.xi {
538*53ee8cc1Swenshuai.xi     JPEG_CB_EVENT_NONE,
539*53ee8cc1Swenshuai.xi     JPEG_CB_EVENT_FILL_HDR,
540*53ee8cc1Swenshuai.xi     JPEG_CB_EVENT_ISR
541*53ee8cc1Swenshuai.xi }JPEG_CB_EVENT;
542*53ee8cc1Swenshuai.xi 
543*53ee8cc1Swenshuai.xi #if SUPPORT_MPO_FORMAT
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
546*53ee8cc1Swenshuai.xi {
547*53ee8cc1Swenshuai.xi     MS_U32 attribute;
548*53ee8cc1Swenshuai.xi     MS_U32 size;
549*53ee8cc1Swenshuai.xi     MS_U32 offset;
550*53ee8cc1Swenshuai.xi     MS_U16 image1_no;
551*53ee8cc1Swenshuai.xi     MS_U16 image2_no;
552*53ee8cc1Swenshuai.xi } JPEG_MPO_MP_ENTRY_INFO;
553*53ee8cc1Swenshuai.xi 
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
556*53ee8cc1Swenshuai.xi {
557*53ee8cc1Swenshuai.xi     MS_U32 start_of_offset;
558*53ee8cc1Swenshuai.xi     MS_U32 num_of_image;
559*53ee8cc1Swenshuai.xi     JPEG_MPO_MP_ENTRY_INFO mp_entry[JPEG_MPO_MAX_SUPPORT_IMAGE];
560*53ee8cc1Swenshuai.xi } JPEG_MPO_INDEX_INFO;
561*53ee8cc1Swenshuai.xi 
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
564*53ee8cc1Swenshuai.xi {
565*53ee8cc1Swenshuai.xi     MS_U32 MPIndividualNum;
566*53ee8cc1Swenshuai.xi     MS_U32 PanOrientation;
567*53ee8cc1Swenshuai.xi     JPEG_RATIONAL PanOverlap_H;
568*53ee8cc1Swenshuai.xi     JPEG_RATIONAL PanOverlap_V;
569*53ee8cc1Swenshuai.xi     MS_U32 BaseViewpointNum;
570*53ee8cc1Swenshuai.xi     JPEG_RATIONAL ConvergenceAngle;
571*53ee8cc1Swenshuai.xi     JPEG_RATIONAL BaselineLength;
572*53ee8cc1Swenshuai.xi     JPEG_RATIONAL VerticalDivergence;
573*53ee8cc1Swenshuai.xi     JPEG_RATIONAL AxisDistance_X;
574*53ee8cc1Swenshuai.xi     JPEG_RATIONAL AxisDistance_Y;
575*53ee8cc1Swenshuai.xi     JPEG_RATIONAL AxisDistance_Z;
576*53ee8cc1Swenshuai.xi     JPEG_RATIONAL YawAngle;
577*53ee8cc1Swenshuai.xi     JPEG_RATIONAL PitchAngle;
578*53ee8cc1Swenshuai.xi     JPEG_RATIONAL RollAngle;
579*53ee8cc1Swenshuai.xi     MS_BOOL used;
580*53ee8cc1Swenshuai.xi } JPEG_MPO_ATTRIBUTE_INFO;
581*53ee8cc1Swenshuai.xi 
582*53ee8cc1Swenshuai.xi #endif
583*53ee8cc1Swenshuai.xi 
584*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
585*53ee8cc1Swenshuai.xi /// Enable oJPD for Edison, only Camera use(to be removed).
586*53ee8cc1Swenshuai.xi /// @ingroup JPEG_oJPD
587*53ee8cc1Swenshuai.xi /// @param bOnOff \b IN : enable/disable
588*53ee8cc1Swenshuai.xi /// @return void.
589*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
590*53ee8cc1Swenshuai.xi void MApi_JPEG_EnableOJPD(MS_BOOL bOnOff);
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
593*53ee8cc1Swenshuai.xi /// JPEG init oJPD for Edison, only Camera use(to be removed).
594*53ee8cc1Swenshuai.xi /// @ingroup JPEG_oJPD
595*53ee8cc1Swenshuai.xi /// @param pInitParam \b IN : pointer to initial parameter
596*53ee8cc1Swenshuai.xi /// @return JPEG_Result
597*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
598*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
599*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
600*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
601*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
602*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_Init_UsingOJPD(JPEG_InitParam *pInitParam);
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
606*53ee8cc1Swenshuai.xi /// This function will get APP0 info.(to be removed).
607*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
608*53ee8cc1Swenshuai.xi /// @param unit \b OUT : pointer to get the unit info
609*53ee8cc1Swenshuai.xi /// @param x \b OUT : pointer to get the x info
610*53ee8cc1Swenshuai.xi /// @param y \b OUT : pointer to get the y info
611*53ee8cc1Swenshuai.xi /// @return void.
612*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
613*53ee8cc1Swenshuai.xi void msAPI_JPEG_get_APP0_info( MS_U8 *unit,MS_U16 *x, MS_U16 *y );
614*53ee8cc1Swenshuai.xi 
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
617*53ee8cc1Swenshuai.xi /// This function will initialize the parameters of Mstar JPD
618*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
619*53ee8cc1Swenshuai.xi /// @param pInitParam \b IN : pointer to initial parameter
620*53ee8cc1Swenshuai.xi /// @return JPEG_Result
621*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
622*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
623*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
624*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
625*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
626*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_Init(JPEG_InitParam *pInitParam);
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
629*53ee8cc1Swenshuai.xi /// This function will parse JPEG header
630*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
631*53ee8cc1Swenshuai.xi /// @param void.
632*53ee8cc1Swenshuai.xi /// @return JPEG_Result
633*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
634*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
635*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
636*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
637*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
638*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_DecodeHdr(void);
639*53ee8cc1Swenshuai.xi 
640*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
641*53ee8cc1Swenshuai.xi /// This function will start JPEG decode
642*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
643*53ee8cc1Swenshuai.xi /// @param void.
644*53ee8cc1Swenshuai.xi /// @return JPEG_Result
645*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
646*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
647*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
648*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
649*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
650*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_Decode(void);
651*53ee8cc1Swenshuai.xi 
652*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
653*53ee8cc1Swenshuai.xi /// This function will free all block of JPD and power off JPD IP
654*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
655*53ee8cc1Swenshuai.xi /// @param void.
656*53ee8cc1Swenshuai.xi /// @return void.
657*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
658*53ee8cc1Swenshuai.xi void MApi_JPEG_Exit(void);
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
661*53ee8cc1Swenshuai.xi /// This function will get JPD error code
662*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
663*53ee8cc1Swenshuai.xi /// @param void.
664*53ee8cc1Swenshuai.xi /// @return JPEG_ErrCode.
665*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
666*53ee8cc1Swenshuai.xi JPEG_ErrCode MApi_JPEG_GetErrorCode(void);
667*53ee8cc1Swenshuai.xi 
668*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
669*53ee8cc1Swenshuai.xi /// This function will get JPD IP decode event
670*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
671*53ee8cc1Swenshuai.xi /// @param void.
672*53ee8cc1Swenshuai.xi /// @return JPEG_Event.
673*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
674*53ee8cc1Swenshuai.xi JPEG_Event MApi_JPEG_GetJPDEventFlag(void);
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
677*53ee8cc1Swenshuai.xi /// This function will set JPD event.(to be removed).
678*53ee8cc1Swenshuai.xi /// @ingroup JPEG_HW_BUG
679*53ee8cc1Swenshuai.xi /// @param eEvtVal
680*53ee8cc1Swenshuai.xi /// @return void.
681*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
682*53ee8cc1Swenshuai.xi void MApi_JPEG_SetJPDEventFlag(JPEG_Event eEvtVal);
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
685*53ee8cc1Swenshuai.xi /// This function will reset JPD IP decoding
686*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
687*53ee8cc1Swenshuai.xi /// @param void.
688*53ee8cc1Swenshuai.xi /// @return void.
689*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
690*53ee8cc1Swenshuai.xi void MApi_JPEG_Rst(void);
691*53ee8cc1Swenshuai.xi 
692*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
693*53ee8cc1Swenshuai.xi /// This function will turn on JPD IP.(to be removed).
694*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
695*53ee8cc1Swenshuai.xi /// @param void
696*53ee8cc1Swenshuai.xi /// @return void.
697*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
698*53ee8cc1Swenshuai.xi void MApi_JPEG_PowerOn(void);
699*53ee8cc1Swenshuai.xi 
700*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
701*53ee8cc1Swenshuai.xi /// This function will turn off JPD IP.(to be removed).
702*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
703*53ee8cc1Swenshuai.xi /// @param void
704*53ee8cc1Swenshuai.xi /// @return void.
705*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
706*53ee8cc1Swenshuai.xi void MApi_JPEG_PowerOff(void);
707*53ee8cc1Swenshuai.xi 
708*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
709*53ee8cc1Swenshuai.xi /// Get current Memory write veritcal index(to be removed).
710*53ee8cc1Swenshuai.xi /// @ingroup JPEG_HW_BUG
711*53ee8cc1Swenshuai.xi /// @param void.
712*53ee8cc1Swenshuai.xi /// @return MS_U16: current Memory write veritcal index
713*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
714*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetCurVidx(void);
715*53ee8cc1Swenshuai.xi 
716*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
717*53ee8cc1Swenshuai.xi /// This function will check JPEG image is progressive mode or not(to be JPEG_to_be_integrated by get ctrl function).
718*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
719*53ee8cc1Swenshuai.xi /// @param void
720*53ee8cc1Swenshuai.xi /// @return MS_BOOL: is progressive mode or not
721*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
722*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_IsProgressive(void);
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
725*53ee8cc1Swenshuai.xi /// This function will check JPEG image has thumbnail or not(to be JPEG_to_be_integrated by get ctrl function).
726*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
727*53ee8cc1Swenshuai.xi /// @param void
728*53ee8cc1Swenshuai.xi /// @return MS_BOOL:  has thumbnail or not
729*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
730*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_ThumbnailFound(void);
731*53ee8cc1Swenshuai.xi 
732*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
733*53ee8cc1Swenshuai.xi /// This function will get the alignment width of the image(to be JPEG_to_be_integrated by get ctrl function).
734*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
735*53ee8cc1Swenshuai.xi /// @param void
736*53ee8cc1Swenshuai.xi /// @return MS_U16:  the alignment width of the image
737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
738*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetWidth(void);
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
741*53ee8cc1Swenshuai.xi /// This function will get the alignment Height of the image(to be JPEG_to_be_integrated by get ctrl function).
742*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
743*53ee8cc1Swenshuai.xi /// @param void
744*53ee8cc1Swenshuai.xi /// @return MS_U16:  the alignment Height of the image
745*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
746*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetHeight(void);
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
749*53ee8cc1Swenshuai.xi /// This function will get the original width of the image(to be JPEG_to_be_integrated by get ctrl function).
750*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
751*53ee8cc1Swenshuai.xi /// @param void
752*53ee8cc1Swenshuai.xi /// @return MS_U16:  the original width of the image
753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
754*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetOriginalWidth(void);
755*53ee8cc1Swenshuai.xi 
756*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
757*53ee8cc1Swenshuai.xi /// This function will get the original Height of the image(to be JPEG_to_be_integrated by get ctrl function).
758*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
759*53ee8cc1Swenshuai.xi /// @param void
760*53ee8cc1Swenshuai.xi /// @return MS_U16:  the original Height of the image
761*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
762*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetOriginalHeight(void);
763*53ee8cc1Swenshuai.xi 
764*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
765*53ee8cc1Swenshuai.xi /// This function will get the width before alignment(to be JPEG_to_be_integrated by get ctrl function).
766*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
767*53ee8cc1Swenshuai.xi /// @param void
768*53ee8cc1Swenshuai.xi /// @return MS_U16:  the width before alignment
769*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
770*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetNonAlignmentWidth(void);
771*53ee8cc1Swenshuai.xi 
772*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
773*53ee8cc1Swenshuai.xi /// This function will get the Height before alignment(to be JPEG_to_be_integrated by get ctrl function).
774*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
775*53ee8cc1Swenshuai.xi /// @param void
776*53ee8cc1Swenshuai.xi /// @return MS_U16:  the Height before alignment
777*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
778*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetNonAlignmentHeight(void);
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
781*53ee8cc1Swenshuai.xi /// This function will get displayed pitch of the image(to be JPEG_to_be_integrated by get ctrl function).
782*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
783*53ee8cc1Swenshuai.xi /// @param void
784*53ee8cc1Swenshuai.xi /// @return MS_U16: displayed pitch of the image
785*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
786*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetAlignedPitch(void);
787*53ee8cc1Swenshuai.xi 
788*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
789*53ee8cc1Swenshuai.xi /// Get information for MHEG5 use(to be removed).
790*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MHEG5
791*53ee8cc1Swenshuai.xi /// @param void.
792*53ee8cc1Swenshuai.xi /// @return: MS_U16: information
793*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
794*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetAlignedPitch_H(void);
795*53ee8cc1Swenshuai.xi 
796*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
797*53ee8cc1Swenshuai.xi /// This function will get the displayed width of the image(to be JPEG_to_be_integrated by get ctrl function).
798*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
799*53ee8cc1Swenshuai.xi /// @param void
800*53ee8cc1Swenshuai.xi /// @return MS_U16:  the displayed width of the image
801*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
802*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetAlignedWidth(void);
803*53ee8cc1Swenshuai.xi 
804*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
805*53ee8cc1Swenshuai.xi /// This function will get the displayed Height of the image(to be JPEG_to_be_integrated by get ctrl function).
806*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
807*53ee8cc1Swenshuai.xi /// @param void
808*53ee8cc1Swenshuai.xi /// @return MS_U16:  the displayed Height of the image
809*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
810*53ee8cc1Swenshuai.xi MS_U16 MApi_JPEG_GetAlignedHeight(void);
811*53ee8cc1Swenshuai.xi 
812*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
813*53ee8cc1Swenshuai.xi /// This function will get scale down factor of JPEG image(to be JPEG_to_be_integrated by get ctrl function).
814*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
815*53ee8cc1Swenshuai.xi /// @param void
816*53ee8cc1Swenshuai.xi /// @return MS_U8:  scale down factor of JPEG image
817*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
818*53ee8cc1Swenshuai.xi MS_U8 MApi_JPEG_GetScaleDownFactor(void);
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
821*53ee8cc1Swenshuai.xi /// This function will set maximum output resolution of JPD baseline mode
822*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
823*53ee8cc1Swenshuai.xi /// @param u16Width \b IN : width
824*53ee8cc1Swenshuai.xi /// @param u16Height \b IN : height
825*53ee8cc1Swenshuai.xi /// @return void.
826*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
827*53ee8cc1Swenshuai.xi void MApi_JPEG_SetMaxDecodeResolution(MS_U16 u16Width, MS_U16 u16Height);
828*53ee8cc1Swenshuai.xi 
829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
830*53ee8cc1Swenshuai.xi /// This function will set maximum output resolution of JPD progressive mode
831*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
832*53ee8cc1Swenshuai.xi /// @param u16ProWidth \b IN : width
833*53ee8cc1Swenshuai.xi /// @param u16ProHeight \b IN : height
834*53ee8cc1Swenshuai.xi /// @return void.
835*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
836*53ee8cc1Swenshuai.xi void MApi_JPEG_SetProMaxDecodeResolution(MS_U16 u16ProWidth, MS_U16 u16ProHeight);
837*53ee8cc1Swenshuai.xi 
838*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
839*53ee8cc1Swenshuai.xi /// This function will notify JPD IP that the data loaded to low/high portion of read buffer is ready
840*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
841*53ee8cc1Swenshuai.xi /// @param u8MRBuffType \b IN : JPEG_BuffLoadType
842*53ee8cc1Swenshuai.xi /// @return void.
843*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
844*53ee8cc1Swenshuai.xi void MApi_JPEG_SetMRBufferValid(JPEG_BuffLoadType u8MRBuffType);
845*53ee8cc1Swenshuai.xi 
846*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
847*53ee8cc1Swenshuai.xi /// This function will set JPEG EOF flag and the total byte-read of JPEG file. It is called after loading data to read buffer when JPD IP is decoding
848*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
849*53ee8cc1Swenshuai.xi /// @param u32DataRead \b IN : data be read
850*53ee8cc1Swenshuai.xi /// @param bEOFflag \b IN : if eof
851*53ee8cc1Swenshuai.xi /// @return void.
852*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
853*53ee8cc1Swenshuai.xi void MApi_JPEG_UpdateReadInfo(MS_U32 u32DataRead, MS_BOOL bEOFflag);
854*53ee8cc1Swenshuai.xi 
855*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
856*53ee8cc1Swenshuai.xi /// This function will set JPD IP of low/high portion done event. It is called when EOF.(to be removed).
857*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
858*53ee8cc1Swenshuai.xi /// @param u8MRBuffType: IN : JPEG_BuffLoadType
859*53ee8cc1Swenshuai.xi /// @return void.
860*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
861*53ee8cc1Swenshuai.xi void MApi_JPEG_ProcessEOF(JPEG_BuffLoadType u8MRBuffType);
862*53ee8cc1Swenshuai.xi 
863*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
864*53ee8cc1Swenshuai.xi /// This function will set JPD error code when the upper layer encounter some error.(to be removed).
865*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
866*53ee8cc1Swenshuai.xi /// @param ErrStatus: IN : JPEG_ErrCode
867*53ee8cc1Swenshuai.xi /// @return void.
868*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
869*53ee8cc1Swenshuai.xi void MApi_JPEG_SetErrCode(JPEG_ErrCode ErrStatus);
870*53ee8cc1Swenshuai.xi 
871*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
872*53ee8cc1Swenshuai.xi /// This function will enable/disable JPD API debug message
873*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
874*53ee8cc1Swenshuai.xi /// @param u8DbgLevel: IN : debug level
875*53ee8cc1Swenshuai.xi /// @return void.
876*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
877*53ee8cc1Swenshuai.xi void MApi_JPEG_SetDbgLevel(MS_U8 u8DbgLevel);
878*53ee8cc1Swenshuai.xi 
879*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
880*53ee8cc1Swenshuai.xi /// This function will get current dbg level.(to be removed).
881*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
882*53ee8cc1Swenshuai.xi /// @param void.
883*53ee8cc1Swenshuai.xi /// @return MS_U8: dbg level
884*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
885*53ee8cc1Swenshuai.xi MS_U8 MApi_JPEG_GetDbgLevel(void);
886*53ee8cc1Swenshuai.xi 
887*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
888*53ee8cc1Swenshuai.xi /// This function will get jpeg info.(to be removed).
889*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
890*53ee8cc1Swenshuai.xi /// @param pJPEG_Info: OUT : pointer to jpeg info
891*53ee8cc1Swenshuai.xi /// @return void.
892*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
893*53ee8cc1Swenshuai.xi void MApi_JPEG_GetInfo(JPEG_Info *pJPEG_Info);
894*53ee8cc1Swenshuai.xi 
895*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
896*53ee8cc1Swenshuai.xi /// This function will get jpeg status.(to be removed).
897*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
898*53ee8cc1Swenshuai.xi /// @param pJPEG_Status: OUT : pointer to jpeg status
899*53ee8cc1Swenshuai.xi /// @return void.
900*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
901*53ee8cc1Swenshuai.xi void MApi_JPEG_GetStatus(JPEG_Status *pJPEG_Status);
902*53ee8cc1Swenshuai.xi 
903*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
904*53ee8cc1Swenshuai.xi /// This function will get lib info.(to be removed).
905*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
906*53ee8cc1Swenshuai.xi /// @param ppVersion OUT : pointer to lib version's pointer
907*53ee8cc1Swenshuai.xi /// @return JPEG_Result
908*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
909*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
910*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
911*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
912*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
913*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetLibVer(const MSIF_Version **ppVersion);
914*53ee8cc1Swenshuai.xi 
915*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
916*53ee8cc1Swenshuai.xi /// This function will check current vertical index of JPD and handle a timeout of JPD IP decoding.(to be removed).
917*53ee8cc1Swenshuai.xi /// @ingroup JPEG_HW_BUG
918*53ee8cc1Swenshuai.xi /// @param void.
919*53ee8cc1Swenshuai.xi /// @return JPEG_Result
920*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
921*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
922*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
923*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
924*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
925*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_HdlVidxChk(void);
926*53ee8cc1Swenshuai.xi 
927*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
928*53ee8cc1Swenshuai.xi /// This function will get buffer load type for preloading data when JPD IP is decoding
929*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
930*53ee8cc1Swenshuai.xi /// @pBuffLoadType u32DataRead \b IN : JPEG_BuffLoadType
931*53ee8cc1Swenshuai.xi /// @return JPEG_Result
932*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
933*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
934*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
935*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
937*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetBuffLoadType(JPEG_BuffLoadType *pBuffLoadType);
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
940*53ee8cc1Swenshuai.xi /// This function will enable ISR.(to be removed).
941*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
942*53ee8cc1Swenshuai.xi /// @param IsrCb: callback function
943*53ee8cc1Swenshuai.xi /// @return JPEG_Result
944*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
945*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
946*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
947*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
948*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
949*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_EnableISR(JPEG_IsrFuncCb IsrCb);
950*53ee8cc1Swenshuai.xi 
951*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
952*53ee8cc1Swenshuai.xi /// This function will disable ISR.(to be removed).
953*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
954*53ee8cc1Swenshuai.xi /// @param void.
955*53ee8cc1Swenshuai.xi /// @return JPEG_Result
956*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
957*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
958*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
959*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
960*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
961*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_DisableISR(void);
962*53ee8cc1Swenshuai.xi 
963*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
964*53ee8cc1Swenshuai.xi /// wait decode done and get decode status, this API is only for bringup/FPGA use
965*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Debug
966*53ee8cc1Swenshuai.xi /// @param void.
967*53ee8cc1Swenshuai.xi /// @return: JPEG_DecodeStatus
968*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
969*53ee8cc1Swenshuai.xi JPEG_DecodeStatus MApi_JPEG_WaitDone(void);
970*53ee8cc1Swenshuai.xi 
971*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
972*53ee8cc1Swenshuai.xi /// This function will get date time of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
973*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
974*53ee8cc1Swenshuai.xi /// @param DateTime: This function will get date time of JPEG EXIF
975*53ee8cc1Swenshuai.xi /// @return JPEG_Result
976*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
977*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
978*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
979*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
980*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
981*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFDateTime(JPEG_EXIF_DateTime *DateTime);
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
984*53ee8cc1Swenshuai.xi /// This function will get Orientation of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
985*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
986*53ee8cc1Swenshuai.xi /// @param eOrientation: This function will get Orientation of JPEG EXIF
987*53ee8cc1Swenshuai.xi /// @return JPEG_Result
988*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
989*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
990*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
991*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
992*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
993*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFOrientation(JPEG_EXIF_Orientation *eOrientation);
994*53ee8cc1Swenshuai.xi #if SUPPORT_EXIF_EXTRA_INFO
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
997*53ee8cc1Swenshuai.xi /// This function will get Manufacturer of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
998*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
999*53ee8cc1Swenshuai.xi /// @param pu8Manufacturer: This function will get Manufacturer of JPEG EXIF
1000*53ee8cc1Swenshuai.xi /// @param u8size: size of Manufacturer
1001*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1002*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1003*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1004*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1005*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1006*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1007*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFManufacturer(MS_U8 *pu8Manufacturer, MS_U8 u8size);
1008*53ee8cc1Swenshuai.xi 
1009*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1010*53ee8cc1Swenshuai.xi /// This function will get Model of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1011*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1012*53ee8cc1Swenshuai.xi /// @param pu8Model: This function will get Model of JPEG EXIF
1013*53ee8cc1Swenshuai.xi /// @param u8size: size of Model
1014*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1015*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1016*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1017*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1018*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1019*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1020*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFModel(MS_U8 *pu8Model, MS_U8 u8size);
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1023*53ee8cc1Swenshuai.xi /// This function will get Flash of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1024*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1025*53ee8cc1Swenshuai.xi /// @param pu16Flash: This function will get Flash of JPEG EXIF
1026*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1027*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1028*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1029*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1030*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1031*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1032*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFFlash(MS_U16 *pu16Flash);
1033*53ee8cc1Swenshuai.xi 
1034*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1035*53ee8cc1Swenshuai.xi /// This function will get ISOSpeedRatings of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1036*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1037*53ee8cc1Swenshuai.xi /// @param pu32ISOSpeedRatings: This function will get ISOSpeedRatings of JPEG EXIF
1038*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1039*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1040*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1041*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1042*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1043*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1044*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFISOSpeedRatings(MS_U32 *pu32ISOSpeedRatings);
1045*53ee8cc1Swenshuai.xi 
1046*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1047*53ee8cc1Swenshuai.xi /// This function will get ShutterSpeedValue of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1048*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1049*53ee8cc1Swenshuai.xi /// @param pShutterSpeedValue: This function will get ShutterSpeedValue of JPEG EXIF
1050*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1051*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1052*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1053*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1054*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1055*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1056*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFShutterSpeedValue(JPEG_RATIONAL *pShutterSpeedValue);
1057*53ee8cc1Swenshuai.xi 
1058*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1059*53ee8cc1Swenshuai.xi /// This function will get pApertureValue of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1060*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1061*53ee8cc1Swenshuai.xi /// @param pApertureValue: This function will get ApertureValue of JPEG EXIF
1062*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1063*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1064*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1065*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1066*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1067*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1068*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFApertureValue(JPEG_RATIONAL *pApertureValue);
1069*53ee8cc1Swenshuai.xi 
1070*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1071*53ee8cc1Swenshuai.xi /// This function will get ExposureBiasValue of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1072*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1073*53ee8cc1Swenshuai.xi /// @param pExposureBiasValue: This function will get ExposureBiasValue of JPEG EXIF
1074*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1075*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1076*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1077*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1078*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1079*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1080*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFExposureBiasValue(JPEG_RATIONAL *pExposureBiasValue);
1081*53ee8cc1Swenshuai.xi 
1082*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1083*53ee8cc1Swenshuai.xi /// This function will get FocalLength of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1084*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1085*53ee8cc1Swenshuai.xi /// @param pFocalLength: This function will get FocalLength of JPEG EXIF
1086*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1087*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1088*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1089*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1090*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1091*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1092*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFFocalLength(JPEG_RATIONAL *pFocalLength);
1093*53ee8cc1Swenshuai.xi 
1094*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1095*53ee8cc1Swenshuai.xi /// This function will get ImageWidth of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1096*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1097*53ee8cc1Swenshuai.xi /// @param pu32ImageWidth: This function will get ImageWidth of JPEG EXIF
1098*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1099*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1100*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1101*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1102*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1104*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFImageWidth(MS_U32 *pu32ImageWidth);
1105*53ee8cc1Swenshuai.xi 
1106*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1107*53ee8cc1Swenshuai.xi /// This function will get ImageHeight of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1108*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1109*53ee8cc1Swenshuai.xi /// @param pu32ImageHeight: This function will get ImageHeight of JPEG EXIF
1110*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1111*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1112*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1113*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1114*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1115*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1116*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFImageHeight(MS_U32 *pu32ImageHeight);
1117*53ee8cc1Swenshuai.xi 
1118*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1119*53ee8cc1Swenshuai.xi /// This function will get ExposureTime of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1120*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1121*53ee8cc1Swenshuai.xi /// @param pExposureTime: This function will get ExposureTime of JPEG EXIF
1122*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1123*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1124*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1125*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1126*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1127*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1128*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFExposureTime(JPEG_RATIONAL *pExposureTime);
1129*53ee8cc1Swenshuai.xi 
1130*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1131*53ee8cc1Swenshuai.xi /// This function will get FNumber of JPEG EXIF(to be JPEG_to_be_integrated by get ctrl function).
1132*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_integrated
1133*53ee8cc1Swenshuai.xi /// @param pFNumber: This function will get FNumber of JPEG EXIF
1134*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1135*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1136*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1137*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1138*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1139*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1140*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetEXIFFNumber(JPEG_RATIONAL *pFNumber);
1141*53ee8cc1Swenshuai.xi #endif
1142*53ee8cc1Swenshuai.xi 
1143*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1144*53ee8cc1Swenshuai.xi /// This function will get the jpeg information
1145*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Basic
1146*53ee8cc1Swenshuai.xi /// @EN_JPEG_GET_CTRL_ID eGetID \b IN : control ID
1147*53ee8cc1Swenshuai.xi /// @param param \b IN : control info
1148*53ee8cc1Swenshuai.xi /// @param u32Size\b IN : control info size
1149*53ee8cc1Swenshuai.xi /// @return JPEG_Result
1150*53ee8cc1Swenshuai.xi ///     - E_JPEG_FAILED: The result of API execution is failed
1151*53ee8cc1Swenshuai.xi ///     - E_JPEG_OKAY: The result of API execution is successful
1152*53ee8cc1Swenshuai.xi ///     - E_JPEG_DONE: For CMYK/progressive decoding, it means one line decode done
1153*53ee8cc1Swenshuai.xi ///     - E_JPEG_RETRY: Cannot get any information, need to re-call API
1154*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1155*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_GetControl(EN_JPEG_GET_CTRL_ID eGetID, MS_U32 *param, MS_U32 u32Size);
1156*53ee8cc1Swenshuai.xi 
1157*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1158*53ee8cc1Swenshuai.xi /// This function would disable address convert for MJPEG use(to be removed).
1159*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MJPEG
1160*53ee8cc1Swenshuai.xi /// @param void
1161*53ee8cc1Swenshuai.xi /// @return void.
1162*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1163*53ee8cc1Swenshuai.xi void MApi_JPEG_DisableAddressConvert(void);
1164*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1165*53ee8cc1Swenshuai.xi /// This function will get free memory to use.(to be removed).
1166*53ee8cc1Swenshuai.xi /// @ingroup JPEG_HW_BUG
1167*53ee8cc1Swenshuai.xi /// @param size
1168*53ee8cc1Swenshuai.xi /// @return MS_PHYADDR
1169*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1170*53ee8cc1Swenshuai.xi MS_PHY MApi_JPEG_GetFreeMemory(MS_U32 size);
1171*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1172*53ee8cc1Swenshuai.xi /// Get current data offset(to be removed).
1173*53ee8cc1Swenshuai.xi /// @ingroup JPEG_HW_BUG
1174*53ee8cc1Swenshuai.xi /// @param void.
1175*53ee8cc1Swenshuai.xi /// @return MS_U32: current data offset
1176*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1177*53ee8cc1Swenshuai.xi MS_U32 MApi_JPEG_GetDataOffset(void);
1178*53ee8cc1Swenshuai.xi 
1179*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1180*53ee8cc1Swenshuai.xi /// This function will sof offset.(to be removed).
1181*53ee8cc1Swenshuai.xi /// @ingroup JPEG_to_be_removed
1182*53ee8cc1Swenshuai.xi /// @param void
1183*53ee8cc1Swenshuai.xi /// @return MS_U32: offset
1184*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1185*53ee8cc1Swenshuai.xi MS_U32 MApi_JPEG_GetSOFOffset(void);
1186*53ee8cc1Swenshuai.xi 
1187*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1188*53ee8cc1Swenshuai.xi /// This function would set NJPD number for MJPEG use
1189*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MJPEG
1190*53ee8cc1Swenshuai.xi /// @param JPDNum: JPD number
1191*53ee8cc1Swenshuai.xi /// @return void.
1192*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1193*53ee8cc1Swenshuai.xi void MApi_JPEG_SetNJPDInstance(MS_U8 JPDNum);
1194*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_SupportCMYK(MS_BOOL bEnable);
1195*53ee8cc1Swenshuai.xi JPEG_Result MApi_JPEG_SupportRGB(MS_BOOL bEnable);
1196*53ee8cc1Swenshuai.xi 
1197*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1198*53ee8cc1Swenshuai.xi /// Enable MHEG5 function(to be removed).
1199*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MHEG5
1200*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable/disable
1201*53ee8cc1Swenshuai.xi /// @return void.
1202*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1203*53ee8cc1Swenshuai.xi void MApi_JPEG_SetMHEG5(MS_BOOL bEnable);
1204*53ee8cc1Swenshuai.xi 
1205*53ee8cc1Swenshuai.xi #if SUPPORT_MPO_FORMAT
1206*53ee8cc1Swenshuai.xi //For MPO
1207*53ee8cc1Swenshuai.xi 
1208*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1209*53ee8cc1Swenshuai.xi /// This function would check if it is MPO format
1210*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1211*53ee8cc1Swenshuai.xi /// @param void
1212*53ee8cc1Swenshuai.xi /// @return BOOL: MPO:1, not MPO: 0
1213*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1214*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_IsMPOFormat(void);
1215*53ee8cc1Swenshuai.xi 
1216*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1217*53ee8cc1Swenshuai.xi /// This function would get MPO index information
1218*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1219*53ee8cc1Swenshuai.xi /// @param ppMPOIndex: pointer to MPO index info pointer
1220*53ee8cc1Swenshuai.xi /// @return BOOL: ok:1, fail: 0
1221*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1222*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_GetMPOIndex(JPEG_MPO_INDEX_INFO **ppMPOIndex);
1223*53ee8cc1Swenshuai.xi 
1224*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1225*53ee8cc1Swenshuai.xi /// This function would get MPO attribute information
1226*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1227*53ee8cc1Swenshuai.xi /// @param ppMPOIndex: pointer to MPO attribute info pointer
1228*53ee8cc1Swenshuai.xi /// @return BOOL: ok:1, fail: 0
1229*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1230*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_GetMPOAttr(MS_U32 image_no, JPEG_MPO_ATTRIBUTE_INFO **ppMPOAttr);
1231*53ee8cc1Swenshuai.xi 
1232*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1233*53ee8cc1Swenshuai.xi /// This function would print MPO information
1234*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1235*53ee8cc1Swenshuai.xi /// @param void
1236*53ee8cc1Swenshuai.xi /// @return void
1237*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1238*53ee8cc1Swenshuai.xi void MApi_JPEG_DumpMPO(void);
1239*53ee8cc1Swenshuai.xi 
1240*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1241*53ee8cc1Swenshuai.xi /// This function would set MPO Buffer information (to be removed)
1242*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1243*53ee8cc1Swenshuai.xi /// @param read_offset \b IN : read_offset
1244*53ee8cc1Swenshuai.xi /// @param output_start \b IN : output_start
1245*53ee8cc1Swenshuai.xi /// @return BOOL: ok:1, fail: 0
1246*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1247*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_SetMPOBuffer(MS_U32 read_offset, MS_U32 output_start);
1248*53ee8cc1Swenshuai.xi 
1249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1250*53ee8cc1Swenshuai.xi /// This function would set MPO max decode resolution(baseline)
1251*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1252*53ee8cc1Swenshuai.xi /// @param u16Width \b IN : width
1253*53ee8cc1Swenshuai.xi /// @param u16Height \b IN : height
1254*53ee8cc1Swenshuai.xi /// @return void
1255*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1256*53ee8cc1Swenshuai.xi void MApi_JPEG_SetMPOMaxDecodeResolution(MS_U16 u16Width, MS_U16 u16Height);
1257*53ee8cc1Swenshuai.xi 
1258*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1259*53ee8cc1Swenshuai.xi /// This function would set MPO max decode resolution(progressive)
1260*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MPO
1261*53ee8cc1Swenshuai.xi /// @param u16ProWidth \b IN : width
1262*53ee8cc1Swenshuai.xi /// @param u16ProHeight \b IN : height
1263*53ee8cc1Swenshuai.xi /// @return void
1264*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1265*53ee8cc1Swenshuai.xi void MApi_JPEG_SetMPOProMaxDecodeResolution(MS_U16 u16ProWidth, MS_U16 u16ProHeight);
1266*53ee8cc1Swenshuai.xi #endif
1267*53ee8cc1Swenshuai.xi 
1268*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1269*53ee8cc1Swenshuai.xi /// set verification mode, this API is only for bringup/FPGA use
1270*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Debug
1271*53ee8cc1Swenshuai.xi /// @param IN : NJPEG_VerificationMode.
1272*53ee8cc1Swenshuai.xi /// @return void.
1273*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1274*53ee8cc1Swenshuai.xi void MApi_JPEG_SetVerificationMode(NJPEG_VerificationMode VerificationMode);
1275*53ee8cc1Swenshuai.xi 
1276*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1277*53ee8cc1Swenshuai.xi /// get current verification mode, this API is only for bringup/FPGA use
1278*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Debug
1279*53ee8cc1Swenshuai.xi /// @param void.
1280*53ee8cc1Swenshuai.xi /// @return: NJPEG_VerificationMode.
1281*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1282*53ee8cc1Swenshuai.xi NJPEG_VerificationMode MApi_JPEG_GetVerificationMode(void);
1283*53ee8cc1Swenshuai.xi 
1284*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1285*53ee8cc1Swenshuai.xi /// print the debug message
1286*53ee8cc1Swenshuai.xi /// @ingroup JPEG_Debug
1287*53ee8cc1Swenshuai.xi /// @param void.
1288*53ee8cc1Swenshuai.xi /// @return void.
1289*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1290*53ee8cc1Swenshuai.xi void MApi_NJPD_Debug(void);
1291*53ee8cc1Swenshuai.xi 
1292*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1293*53ee8cc1Swenshuai.xi /// This function would check if it is nJPD or oJPD for MJPEG use
1294*53ee8cc1Swenshuai.xi /// @ingroup JPEG_MJPEG
1295*53ee8cc1Swenshuai.xi /// @param void
1296*53ee8cc1Swenshuai.xi /// @return BOOL: nJPD:1, oJPD: 0
1297*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1298*53ee8cc1Swenshuai.xi MS_BOOL MApi_JPEG_IsNJPD(void);
1299*53ee8cc1Swenshuai.xi 
1300*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1301*53ee8cc1Swenshuai.xi }
1302*53ee8cc1Swenshuai.xi #endif
1303*53ee8cc1Swenshuai.xi 
1304*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1305*53ee8cc1Swenshuai.xi #endif // _API_JPEG_H_
1306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1307