summaryrefslogtreecommitdiff
path: root/bsp/nuvoton/libraries/n9h30/Driver/Include/nu_jpeg.h
blob: 4dcb153d4139a895a0df86fcc10d9b35f7184f94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
/**************************************************************************//**
* @file     jpeg.h
* @brief    N9H30 JPEG driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/

#ifndef __NU_JPEG_H__
#define __NU_JPEG_H__

#include "nu_jpegcodec.h"

/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
  @{
*/

/** @addtogroup N9H30_JPEG_Driver JPEG Driver
  @{
*/

/** @addtogroup N9H30_JPEG_EXPORTED_CONSTANTS JPEG Exported Constants
  @{
*/


/// @cond HIDDEN_SYMBOLS
// Define bits mask
#define NVTBIT(start,end) ((0xFFFFFFFFUL >> (31 - start)) & (0xFFFFFFFFUL >>end  << end))
/// @endcond HIDDEN_SYMBOLS


//JMCR
#define RESUMEI     BIT9                /*!< Resume JPEG Operation for Input On-the-Fly Mode          */
#define RESUMEO     BIT8                /*!< Resume JPEG Operation for Output On-the-Fly Mode   */
#define ENC_DEC     BIT7                /*!< JPEG Encode/Decode Mode   */
#define WIN_DEC     BIT6                /*!< JPEG Window Decode Mode   */
#define PRI         BIT5                /*!< Encode Primary Image   */
#define THB         BIT4                /*!< Encode Thumbnail Image   */
#define EY422       BIT3                /*!< Encode Image Format   */
#define QT_BUSY     BIT2                /*!< Quantization-Table Busy Status (Read-Only)   */
#define ENG_RST     BIT1                /*!< Soft Reset JPEG Engine (Except JPEG Control Registers)   */
#define JPG_EN      BIT0                /*!< JPEG Engine Operation Control  */

//JHEADER
#define P_JFIF      BIT7                /*!< Primary JPEG Bit-stream Include JFIF Header           */
#define P_HTAB      BIT6                /*!< Primary JPEG Bit-stream Include Huffman-Table  */
#define P_QTAB      BIT5                /*!< Primary JPEG Bit-stream Include Quantization-Table  */
#define P_DRI       BIT4                /*!< Primary JPEG Bit-stream Include Restart Interval  */
#define T_JFIF      BIT3                /*!< Thumbnail JPEG Bit-stream Include JFIF Header  */
#define T_HTAB      BIT2                /*!< Thumbnail JPEG Bit-stream Include Huffman-Table  */
#define T_QTAB      BIT1                /*!< Thumbnail JPEG Bit-stream Include Quantization-Table  */
#define T_DRI       BIT0                /*!< Thumbnail JPEG Bit-stream Include Restart Interval  */

//JITCR
#define Dec_Scatter_Gather  BIT18
#define DEC_OTF             BIT17               /*!< Decoder on the fly with VPE                                        */
#define ARGB8888            BIT16               /*!< ARGB8888  */
#define PLANAR_ON           BIT15               /*!< Packet On  */
#define ORDER               BIT14               /*!< Decode Packet Data Order  */
#define RGB_555_565         BIT13               /*!< RGB555 & RGB565  */
#define ROTATE              NVTBIT(12,11)       /*!< Encode Image Rotate  */
#define DYUV_MODE           NVTBIT(10,8)        /*!< Decoded Image YUV Color Format (Read-Only)  */
#define EXIF                BIT7                /*!< Encode Quantization-Table & Huffman-Table Header Format Selection  */
#define EY_ONLY             BIT6                /*!< Encode Gray-level (Y-component Only) Image                     */
#define DHEND               BIT5                /*!< Header Decode Complete Stop Enable  */
#define DTHB                BIT4                /*!< Decode Thumbnail Image Only  */
#define E3QTAB              BIT3                /*!< Numbers of Quantization-Table are Used For Encode  */
#define D3QTAB              BIT2                /*!< Numbers of Quantization-Table are Used For Decode (Read-Only)  */
#define ERR_DIS             BIT1                /*!< Decode Error Engine Abort  */
#define PDHTAB              BIT0                /*!< Programmable Huffman-Table Function For Decode  */

//JPRIQC
#define P_QADJUST   NVTBIT(7,4)         /*!< Primary Quantization-Table Adjustment       */
#define P_QVS       NVTBIT(3,0)         /*!< Primary Quantization-Table Scaling Control  */

//JTHBQC
#define T_QADJUST   NVTBIT(7,4)         /*!< Thumbnail Quantization-Table Adjustment       */
#define T_QVS       NVTBIT(3,0)         /*!< Thumbnail Quantization-Table Scaling Control  */

//JPRIWH
#define P_HEIGHT    NVTBIT(27,16)           /*!< Primary Encode Image Height   */
#define P_WIDTH     NVTBIT(11,0)            /*!< Primary Encode Image Width    */

//JTHBWH
#define T_HEIGHT    NVTBIT(27,16)           /*!< Thumbnail Encode Image Height  */
#define T_WIDTH     NVTBIT(11,0)            /*!< Thumbnail Encode Image Width   */

//JPRST
#define P_RST       NVTBIT(7,0)             /*!< Primary Encode Restart Interval Value  */

//JTRST
#define T_RST       NVTBIT(7,0)             /*!< Thumbnail Encode Restart Interval Value  */

//JDECWH
#define DEC_HEIGHT  NVTBIT(31,16)           /*!< 13-bit Bit Stream Buffer threshold  */
#define DEC_WIDTH   NVTBIT(15,0)            /*!< 13-bit Header Offset Address        */

//JINTCR
#define JPG_DOW_INTE    BIT28               /*!< Decoding Output Wait Interrupt Enable  */
#define JPG_DOW_INTS    BIT24               /*!< Status of Decoding Output Wait  */
#define JPG_WAITI       BIT23               /*!< JPEG Input Wait Status (Read-Only)  */
#define JPG_WAITO       BIT22               /*!< JPEG Output Wait Status (Read-Only)  */
#define BAbort          BIT16               /*!< JPEG Memory Access Error Status (Read-Only)  */
#define CER_INTE        BIT15               /*!< Un-complete Capture On-The-Fly Frame Occur Interrupt Enable  */
#define DHE_INTE        BIT14               /*!< JPEG Header Decode End Wait Interrupt Enable  */
#define IPW_INTE        BIT13               /*!< Input Wait Interrupt Enable  */
#define OPW_INTE        BIT12               /*!< Output Wait Interrupt Enable  */
#define ENC_INTE        BIT11               /*!< Encode Complete Interrupt Enable  */
#define DEC_INTE        BIT10               /*!< Decode Complete Interrupt Enable  */
#define DER_INTE        BIT9                /*!< Decode Error Interrupt Enable  */
#define EER_INTE        BIT8                /*!< Encode (On-The-Fly) Error Interrupt Enable  */
#define CER_INTS        BIT7                /*!< Un-complete Capture On-The-Fly Frame Occur Interrupt Status  */
#define DHE_INTS        BIT6                /*!< JPEG  Header Decode End Wait Interrupt Status  */
#define IPW_INTS        BIT5                /*!< Input Wait Interrupt Status  */
#define OPW_INTS        BIT4                /*!< Output Wait Interrupt Status  */
#define ENC_INTS        BIT3                /*!< Encode Complete Interrupt Status  */
#define DEC_INTS        BIT2                /*!< Decode Complete Interrupt Status  */
#define DER_INTS        BIT1                /*!< Decode Error Interrupt Status  */
#define EER_INTS        BIT0                /*!< Encode (On-The-Fly) Error Interrupt Status  */

//JPEG_BSBAD
#define BIST_ST         NVTBIT(23,16)       /*!< Internal SRAM BIST Status (Read-Only)  */
#define TEST_DOUT       NVTBIT(15,8)        /*!< Test Data Output (Read-Only)  */
#define TEST_ON         BIT7                /*!< Test Enable  */
#define BIST_ON         BIT6                /*!< Internal SRAM BIST Mode Enable  */
#define BIST_FINI       BIT5                /*!< Internal SRAM BIST Mode Finish (Read-Only)  */
#define BSBAD_BIST_FAIL BIT4                /*!< Internal SRAM BIST Mode Fail (Read-Only)  */
#define TEST_SEL        NVTBIT(3,0)         /*!< Test Data Selection  */

//JWINDEC0
#define MCU_S_Y     NVTBIT(24,16)           /*!< MCU Start Position Y For Window Decode Mode  */
#define MCU_S_X     NVTBIT(8,0)             /*!< MCU Start Position X For Window Decode Mode  */

//JWINDEC1
#define MCU_E_Y     NVTBIT(24,16)           /*!< MCU End Position Y For Window Decode Mode  */
#define MCU_E_X     NVTBIT(8,0)             /*!< MCU End Position X For Window Decode Mode  */

//JWINDEC2
#define WD_WIDTH    NVTBIT(11,0))           /*!< Image Width (Y-Stride) For Window Decode Mode  */

//JMACR
#define FLY_SEL     NVTBIT(29,24)       /*!< Hardware Memory On-the-Fly Access Image Buffer-Size Selection for Encode  */
#define FLY_TYPE    NVTBIT(23,22)       /*!< Dual/Single buffer on-the fly   */
#define BSF_SEL     NVTBIT(17,8)        /*!< Memory On-the-Fly Access Bitstream Buffer-Size Selection  */
#define FLY_ON      BIT7                /*!< Hardware Memory On-the-Fly Access Mode  */
#define IP_SF_ON    BIT3                /*!< Software Memory On-the-Fly Access Mode for Data Input  */
#define OP_SF_ON    BIT2                /*!< Software Memory On-the-Fly Access Mode for Data Output  */
#define ENC_MODE    NVTBIT(1,0)         /*!< JPEG Memory Address Mode Control  */

//JPSCALU
#define JPSCALU_8X  BIT6                /*!< Primary Image Up-Scaling For Encode  */
#define A_JUMP      BIT2                /*!< Reserve Buffer Size In JPEG Bit-stream For Software Application  */

//JPSCALD
#define PSX_ON      BIT15               /*!< Primary Image Horizontal Down-Scaling For Encode/Decode  */
#define PS_LPF_ON   BIT14               /*!< Primary Image Down-Scaling Low Pass Filter For Decode  */
#define PSCALX_F    NVTBIT(12,8)        /*!< Primary Image Horizontal Down-Scaling Factor  */
#define PSCALY_F    NVTBIT(5,0)         /*!< Primary Image Vertical Down-Scaling Factor  */

//JTSCALD
#define TSX_ON      BIT15               /*!< Thumbnail Image Horizontal Down-Scaling For Encode/Decode  */
#define TSCALX_F    NVTBIT(14,8)        /*!< Thumbnail Image Horizontal Down-Scaling Factor  */
#define TSCALY_F    NVTBIT(7,0)         /*!< Thumbnail Image Vertical Down-Scaling Factor  */

//JDBCR
#define DBF_EN      BIT7                /*!< Dual Buffering Control  */
#define IP_BUF      BIT4                /*!< Input Dual Buffer Control  */

//JRESERVE
#define RES_SIZE    NVTBIT(15,0)        /*!< Primary Encode Bit-stream Reserved Size  */

//JOFFSET
#define OFFSET_SIZE NVTBIT(23,0)        /*!< Primary/Thumbnail Starting Address Offset Size  */

//JFSTRIDE
#define F_STRIDE    NVTBIT(23,0)        /*!< JPEG Encode Bit-stream Frame Stride  */

//JYADDR0
#define Y_IADDR0    NVTBIT(31,0)        /*!< JPEG Y Component Frame Buffer-0 Starting Address  */

//JUADDR0
#define U_IADDR0    NVTBIT(31,0)        /*!< JPEG U Component Frame Buffer-0 Starting Address  */

//JVADDR0
#define V_IADDR0    NVTBIT(31,0)        /*!< JPEG V Component Frame Buffer-0 Starting Address  */

//JYADDR1
#define Y_IADDR1    NVTBIT(31,0)        /*!< JPEG Y Component Frame Buffer-1 Starting Address  */

//JUADDR1
#define U_IADDR1    NVTBIT(31,0)        /*!< JPEG U Component Frame Buffer-1 Starting Address  */

//JVADDR1
#define V_IADDR1    NVTBIT(31,0)        /*!< JPEG V Component Frame Buffer-1 Starting Address  */

//JYSTRIDE
#define Y_STRIDE    NVTBIT(11,0)        /*!< JPEG Y Component Frame Buffer Stride  */

//JUSTRIDE
#define U_STRIDE    NVTBIT(11,0)        /*!< JPEG U Component Frame Buffer Stride  */

//JVSTRIDE
#define V_STRIDE    NVTBIT(11,0)        /*!< JPEG V Component Frame Buffer Stride  */

//JIOADDR0
#define IO_IADDR0   NVTBIT(31,0)        /*!< JPEG Bit-stream Frame Buffer-0 Starting Address  */

//JIOADDR1
#define IO_IADDR1   NVTBIT(31,0)        /*!< JPEG Bit-stream Frame Buffer-1 Starting Address  */

//JPRI_SIZE
#define PRI_SIZE    NVTBIT(23,0)        /*!< JPEG Primary Image Encode Bit-stream Size  */

//JTHB_SIZE
#define THB_SIZE    NVTBIT(15,0)        /*!< JPEG Thumbnail Image Encode Bit-stream Size  */

//JUPRAT
#define S_HEIGHT    NVTBIT(29,16)       /*!< JPEG Image Height Up-Scale Ratio  */
#define S_WIDTH     NVTBIT(13,0)        /*!< JPEG Image Width Up-Scale Ratio  */

//JBSFIFO
#define BSFIFO_HT   NVTBIT(6,4)         /*!< Bit-stream FIFO High-Threshold Control  */
#define BSFIFO_LT   NVTBIT(2,0)         /*!< Bit-stream FIFO Low-Threshold Control  */

//JSRCH
#define JSRCH_JSRCH NVTBIT(11,0)        /*!< JPEG Encode Source Image Height  */

/*@}*/ /* end of group N9H30_JPEG_EXPORTED_CONSTANTS */

/// @cond HIDDEN_SYMBOLS

//Define for Interrupt Status
#define JPEG_EER_INTS   EER_INTS
#define JPEG_DER_INTS   DER_INTS
#define JPEG_DEC_INTS   DEC_INTS
#define JPEG_ENC_INTS   ENC_INTS
#define JPEG_DHE_INTS   DHE_INTS
#define JPEG_IPW_INTS   IPW_INTS

//Define for Scaling
#define JPEG_ENC_UPSCALE_MODE               0
#define JPEG_DEC_PACKET_DOWNSCALE_MODE      1
#define JPEG_DEC_PLANAR_DOWNSCALE_MODE              2
#define JPEG_ENC_PLANAR_PRIMARY_DOWNSCALE_MODE       3
#define JPEG_ENC_PLANAR_THUMBNAIL_DOWNSCALE_MODE  4

//Define for Interrupt Enable
#define JPEG_EER_INTE   ERR_INTE
#define JPEG_DER_INTE   DER_INTE
#define JPEG_DEC_INTE   DEC_INTE
#define JPEG_ENC_INTE   ENC_INTE
#define JPEG_DHE_INTE   DHE_INTE
#define JPEG_IPW_INTE   IPW_INTE

//Register
#define     REG_JMCR        JMCR             /*!< JPEG Mode Control Register  */
#define     REG_JHEADER     JHEADER          /*!< JPEG Encode Header Control Register  */
#define     REG_JITCR       JITCR            /*!< JPEG Image Type Control Register  */
#define     REG_JPRIQC      JPRIQC           /*!< JPEG Primary Q-Table Control Register  */
#define     REG_JTHBQC      JTHBQC           /*!< JPEG Thumbnail Q-Table Control Register  */
#define     REG_JPRIWH      JPRIWH           /*!< JPEG Encode Primary Width/Height Register  */
#define     REG_JTHBWH      JTHBWH           /*!< JPEG Encode Thumbnail Width/Height Register  */
#define     REG_JPRST       JPRST            /*!< JPEG Encode Primary Restart Interval Register  */
#define     REG_JTRST       JTRST            /*!< JPEG Encode Thumbnail Restart Interval  */
#define     REG_JDECWH      JDECWH           /*!< JPEG Decode Image Width/Height Register  */
#define     REG_JINTCR      JINTCR           /*!< JPEG Interrupt Control and Status Register  */
#define     REG_JTEST       JTEST            /*!< JPEG Test Control Register  */
#define     REG_JWINDEC0    JWINDEC0         /*!< JPEG Window Decode Mode Control Register 0  */
#define     REG_JWINDEC1    JWINDEC1         /*!< JPEG Window Decode Mode Control Register 1  */
#define     REG_JWINDEC2    JWINDEC2         /*!< JPEG Window Decode Mode Control Register 2  */
#define     REG_JMACR       JMACR            /*!< JPEG Memory Address Mode Control Register  */
#define     REG_JPSCALU     JPSCALU          /*!< JPEG Primary Scaling-Up Control Register  */
#define     REG_JPSCALD     JPSCALD          /*!< JPEG Primary Scaling-Down Control Register  */
#define     REG_JTSCALD     JTSCALD          /*!< JPEG Thumbnail  Scaling-Down Control Register  */
#define     REG_JDBCR       JDBCR            /*!< JPEG Dual-Buffer Control Register  */
#define     REG_JRESERVE    JRESERVE         /*!< JPEG Encode Primary Bit-stream Reserved Size Register  */
#define     REG_JOFFSET     JOFFSET          /*!< JPEG Offset Between Primary & Thumbnail Register  */
#define     REG_JFSTRIDE    JFSTRIDE         /*!< JPEG Encode Bit-stream Frame Stride Register  */
#define     REG_JYADDR0     JYADDR0          /*!< JPEG Y Component Frame Buffer-0 Starting Address Register  */
#define     REG_JUADDR0     JUADDR0          /*!< JPEG U Component Frame Buffer-0 Starting Address Register  */
#define     REG_JVADDR0     JVADDR0          /*!< JPEG V Component Frame Buffer-0 Starting Address Register  */
#define     REG_JYADDR1     JYADDR1          /*!< JPEG Y Component Frame Buffer-1 Starting Address Register  */
#define     REG_JUADDR1     JUADDR1          /*!< JPEG U Component Frame Buffer-1 Starting Address Register  */
#define     REG_JVADDR1     JVADDR1          /*!< JPEG V Component Frame Buffer-1 Starting Address Register  */
#define     REG_JYSTRIDE    JYSTRIDE         /*!< JPEG Y Component Frame Buffer Stride Register  */
#define     REG_JUSTRIDE    JUSTRIDE         /*!< JPEG U Component Frame Buffer Stride Register  */
#define     REG_JVSTRIDE    JVSTRIDE         /*!< JPEG V Component Frame Buffer Stride Register  */
#define     REG_JIOADDR0    JIOADDR0         /*!< JPEG Bit-stream Frame Buffer-0 Starting Address Register  */
#define     REG_JIOADDR1    JIOADDR1         /*!< JPEG Bit-stream Frame Buffer-1 Starting Address Register  */
#define     REG_JPRI_SIZE   JPRI_SIZE        /*!< JPEG Encode Primary Image Bit-stream Size Register  */
#define     REG_JTHB_SIZE   JTHB_SIZE        /*!< JPEG Encode Thumbnail Image Bit-stream Size Register  */
#define     REG_JUPRAT      JUPRAT           /*!< JPEG Encode Up-Scale Ratio Register  */
#define     REG_JBSFIFO     JBSFIFO          /*!< JPEG Bit-stream FIFO Control Register  */
#define     REG_JSRCH       JSRCH            /*!< JPEG Encode Source Image Height  */
#define     REG_JQTAB0      JQTAB0           /*!< JPEG Quantization-Table 0 Register  */
#define     REG_JQTAB1      JQTAB1           /*!< JPEG Quantization-Table 1 Register  */
#define     REG_JQTAB2      JQTAB2           /*!< JPEG Quantization-Table 2 Register  */

//Export functions
#define JPEG_SET_YADDR(u32Address)              outp32(REG_JYADDR0, u32Address)
#define JPEG_SET_UADDR(u32Address)              outp32(REG_JUADDR0, u32Address)
#define JPEG_SET_VADDR(u32Address)              outp32(REG_JVADDR0, u32Address)
#define JPEG_GET_YADDR()                        inp32(REG_JYADDR0)
#define JPEG_GET_UADDR()                        inp32(REG_JUADDR0)
#define JPEG_GET_VADDR()                        inp32(REG_JVADDR0)
#define JPEG_SET_YSTRIDE(u32Stride)             outp32(REG_JYSTRIDE, u32Stride)
#define JPEG_SET_USTRIDE(u32Stride)             outp32(REG_JUSTRIDE, u32Stride)
#define JPEG_SET_VSTRIDE(u32Stride)             outp32(REG_JVSTRIDE, u32Stride)
#define JPEG_GET_YSTRIDE()                      inp32(REG_JYSTRIDE)
#define JPEG_GET_USTRIDE()                      inp32(REG_JUSTRIDE)
#define JPEG_GET_VSTRIDE()                      inp32(REG_JVSTRIDE)
#define JPEG_SET_BITSTREAM_ADDR(u32Address)     outp32(REG_JIOADDR0,u32Address)
#define JPEG_GET_BITSTREAM_ADDR()               inp32(REG_JIOADDR0)
#define JPEG_SET_ENC_DEC(u8Mode)                outp32(REG_JMCR, (inp32(REG_JMCR) & ~ENC_DEC) | (u8Mode << 7));

//Encode
#define JPEG_GET_ENC_PRIMARY_BITSTREAM_SIZE()   inp32(REG_JPRI_SIZE)
#define JPEG_GET_ENC_THUMBNAIL_BITSTREAM_SIZE() inp32(REG_JTHB_SIZE)
#define JPEG_SET_SOURCE_IMAGE_HEIGHT(u16Size)   outp32(REG_JSRCH,u16Size)
#define JPEG_GET_SOURCE_IMAGE_HEIGHT()          inp32(REG_JSRCH)
#define JPEG_ENC_ENABLE_UPSCALING()             outp32(REG_JPSCALU,inp32(REG_JPSCALU) | JPSCALU_8X)
#define JPEG_ENC_DISABLE_UPSCALING()            outp32(REG_JPSCALU,inp32(REG_JPSCALU) & ~JPSCALU_8X)
#define JPEG_ENC_ISENABLE_UPSCALING()           ((inp32(REG_JPSCALU) & JPSCALU_8X) >> 6)
#define JPEG_ENC_SET_HEADER_CONTROL(u8Control)  outp32(REG_JHEADER, u8Control)
#define JPEG_ENC_GET_HEADER_CONTROL()           inp32(REG_JHEADER)
#define JPEG_ENC_SET_RDI_VALUE(u8Value)         outp32(REG_JPRST,u8Value)
#define JPEG_ENC_GET_RDI_VALUE()                inp32(REG_JPRST)

//Decode
#define JPEG_DEC_ENABLE_DOWNSCALING()           outp32(REG_JPSCALD, PSX_ON)
#define JPEG_DEC_ISENABLE_DOWNSCALING()         ((inp32(REG_JPSCALD) & PSX_ON) >> 15)
#define JPEG_DEC_DISABLE_DOWNSCALING()          outp32(REG_JPSCALD,~PSX_ON)
#define JPEG_DEC_GET_DECODED_IMAGE_FORMAT()     (inp32(REG_JITCR) & DYUV_MODE)
#define JPEG_DEC_ENABLE_LOW_PASS_FILTER()       outp32(REG_JPSCALD,inp32(REG_JPSCALD) | PS_LPF_ON)
#define JPEG_DEC_DISABLE_LOW_PASS_FILTER()      outp32(REG_JPSCALD,inp32(REG_JPSCALD) & ~PS_LPF_ON)
#define JPEG_DEC_ISENABLE_LOW_PASS_FILTER()     ((inp32(REG_JPSCALD) & PS_LPF_ON) >> 14)
#define JPEG_DEC_SET_INPUT_WAIT(u16Size)        outp32(REG_JMACR, 0x00400008 | ((u16Size & 0x3FF)<< 8) );
#define JPEG_DEC_RESUME_INPUT_WAIT()            outp32(REG_JMCR,inp32(REG_JMCR) | RESUMEI);
#define JPEG_DEC_DISABLE_WINDOWDECODE()         outp32(REG_JMCR, inp32(REG_JMCR) & ~(WIN_DEC));

//Interrupt
#define JPEG_INT_ENABLE(u32Intflag)             outp32(REG_JINTCR, u32Intflag)
#define JPEG_INT_DISABLE(u32Intflag)            outp32(REG_JINTCR, inp32 (REG_JINTCR) & ~(u32Intflag))
#define JPEG_GET_INT_STATUS()                   (inp32(REG_JINTCR) & 0x010000FF)
#define JPEG_CLEAR_INT(u32Intflag)              outp32(REG_JINTCR, (inp32 (REG_JINTCR) & ~0xFF) | u32Intflag)

static INT jpegSetEncodeMode(UINT8 u8SourceFormat, UINT16 u16JpegFormat);
static INT jpegSetDecodeMode(UINT32 u8OutputFormat);
static BOOL jpegPollInt(UINT32 u32Intflag);
static VOID jpegEncodeTrigger(void);
static VOID jpegDecodeTrigger(void);
static VOID jpegGetDecodedDimension(
    PUINT16 pu16Height,         //Decode/Encode Height
    PUINT16 pu16Width           //Decode/Encode Width
);
static VOID jpegSetDimension(
    UINT16 u16Height,           //Decode/Encode Height
    UINT16 u16Width             //Decode/Encode Width
);
static VOID jpegGetDimension(
    PUINT16 pu16Height,         //Decoded Height from bit stream
    PUINT16 pu16Width           //Decoded Width  from bit stream
);
static INT jpegSetWindowDecode(
    UINT16  u16StartMCUX,   //Start X MCU
    UINT16  u16StartMCUY,   //Horizontal Scaling Factor
    UINT16  u16EndMCUX,     //Vertical Scaling Factor
    UINT16  u16EndMCUY,     //Horizontal Scaling Factor
    UINT32  u32Stride       //Decode Output Stride
);
static INT jpegCalScalingFactor(
    UINT8   u8Mode,                     //Up / Down Scaling
    UINT16  u16Height,                  //Original Height
    UINT16  u16Width,                   //Original Width
    UINT16  u16ScalingHeight,           //Scaled Height
    UINT16  u16ScalingWidth,            //Scaled Width
    PUINT16 pu16RatioH,                 //Horizontal Ratio
    PUINT16 pu16RatioW                  //Vertical Ratio
);
static INT jpegSetScalingFactor(
    UINT8   u8Mode,                 //Up / Down Scaling
    UINT16  u16FactorH,             //Vertical Scaling Factor
    UINT16  u16FactorW              //Horizontal Scaling Factor
);
static VOID jpegGetScalingFactor(
    UINT8   u8Mode,             //Up / Down Scaling
    PUINT16 pu16FactorH,        //Vertical Scaling Factor
    PUINT16 pu16FactorW         //Horizontal Scaling Factor
);
/// @endcond HIDDEN_SYMBOLS

/*@}*/ /* end of group N9H30_JPEG_Driver */

/*@}*/ /* end of group N9H30_Device_Driver */

#endif