nu_jpeg.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. /**************************************************************************//**
  2. * @file jpeg.h
  3. * @brief N9H30 JPEG driver header file
  4. *
  5. * @note
  6. * SPDX-License-Identifier: Apache-2.0
  7. * Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
  8. *****************************************************************************/
  9. #ifndef __NU_JPEG_H__
  10. #define __NU_JPEG_H__
  11. #include "nu_jpegcodec.h"
  12. /** @addtogroup N9H30_Device_Driver N9H30 Device Driver
  13. @{
  14. */
  15. /** @addtogroup N9H30_JPEG_Driver JPEG Driver
  16. @{
  17. */
  18. /** @addtogroup N9H30_JPEG_EXPORTED_CONSTANTS JPEG Exported Constants
  19. @{
  20. */
  21. /// @cond HIDDEN_SYMBOLS
  22. // Define bits mask
  23. #define NVTBIT(start,end) ((0xFFFFFFFFUL >> (31 - start)) & (0xFFFFFFFFUL >>end << end))
  24. /// @endcond HIDDEN_SYMBOLS
  25. //JMCR
  26. #define RESUMEI BIT9 /*!< Resume JPEG Operation for Input On-the-Fly Mode */
  27. #define RESUMEO BIT8 /*!< Resume JPEG Operation for Output On-the-Fly Mode */
  28. #define ENC_DEC BIT7 /*!< JPEG Encode/Decode Mode */
  29. #define WIN_DEC BIT6 /*!< JPEG Window Decode Mode */
  30. #define PRI BIT5 /*!< Encode Primary Image */
  31. #define THB BIT4 /*!< Encode Thumbnail Image */
  32. #define EY422 BIT3 /*!< Encode Image Format */
  33. #define QT_BUSY BIT2 /*!< Quantization-Table Busy Status (Read-Only) */
  34. #define ENG_RST BIT1 /*!< Soft Reset JPEG Engine (Except JPEG Control Registers) */
  35. #define JPG_EN BIT0 /*!< JPEG Engine Operation Control */
  36. //JHEADER
  37. #define P_JFIF BIT7 /*!< Primary JPEG Bit-stream Include JFIF Header */
  38. #define P_HTAB BIT6 /*!< Primary JPEG Bit-stream Include Huffman-Table */
  39. #define P_QTAB BIT5 /*!< Primary JPEG Bit-stream Include Quantization-Table */
  40. #define P_DRI BIT4 /*!< Primary JPEG Bit-stream Include Restart Interval */
  41. #define T_JFIF BIT3 /*!< Thumbnail JPEG Bit-stream Include JFIF Header */
  42. #define T_HTAB BIT2 /*!< Thumbnail JPEG Bit-stream Include Huffman-Table */
  43. #define T_QTAB BIT1 /*!< Thumbnail JPEG Bit-stream Include Quantization-Table */
  44. #define T_DRI BIT0 /*!< Thumbnail JPEG Bit-stream Include Restart Interval */
  45. //JITCR
  46. #define Dec_Scatter_Gather BIT18
  47. #define DEC_OTF BIT17 /*!< Decoder on the fly with VPE */
  48. #define ARGB8888 BIT16 /*!< ARGB8888 */
  49. #define PLANAR_ON BIT15 /*!< Packet On */
  50. #define ORDER BIT14 /*!< Decode Packet Data Order */
  51. #define RGB_555_565 BIT13 /*!< RGB555 & RGB565 */
  52. #define ROTATE NVTBIT(12,11) /*!< Encode Image Rotate */
  53. #define DYUV_MODE NVTBIT(10,8) /*!< Decoded Image YUV Color Format (Read-Only) */
  54. #define EXIF BIT7 /*!< Encode Quantization-Table & Huffman-Table Header Format Selection */
  55. #define EY_ONLY BIT6 /*!< Encode Gray-level (Y-component Only) Image */
  56. #define DHEND BIT5 /*!< Header Decode Complete Stop Enable */
  57. #define DTHB BIT4 /*!< Decode Thumbnail Image Only */
  58. #define E3QTAB BIT3 /*!< Numbers of Quantization-Table are Used For Encode */
  59. #define D3QTAB BIT2 /*!< Numbers of Quantization-Table are Used For Decode (Read-Only) */
  60. #define ERR_DIS BIT1 /*!< Decode Error Engine Abort */
  61. #define PDHTAB BIT0 /*!< Programmable Huffman-Table Function For Decode */
  62. //JPRIQC
  63. #define P_QADJUST NVTBIT(7,4) /*!< Primary Quantization-Table Adjustment */
  64. #define P_QVS NVTBIT(3,0) /*!< Primary Quantization-Table Scaling Control */
  65. //JTHBQC
  66. #define T_QADJUST NVTBIT(7,4) /*!< Thumbnail Quantization-Table Adjustment */
  67. #define T_QVS NVTBIT(3,0) /*!< Thumbnail Quantization-Table Scaling Control */
  68. //JPRIWH
  69. #define P_HEIGHT NVTBIT(27,16) /*!< Primary Encode Image Height */
  70. #define P_WIDTH NVTBIT(11,0) /*!< Primary Encode Image Width */
  71. //JTHBWH
  72. #define T_HEIGHT NVTBIT(27,16) /*!< Thumbnail Encode Image Height */
  73. #define T_WIDTH NVTBIT(11,0) /*!< Thumbnail Encode Image Width */
  74. //JPRST
  75. #define P_RST NVTBIT(7,0) /*!< Primary Encode Restart Interval Value */
  76. //JTRST
  77. #define T_RST NVTBIT(7,0) /*!< Thumbnail Encode Restart Interval Value */
  78. //JDECWH
  79. #define DEC_HEIGHT NVTBIT(31,16) /*!< 13-bit Bit Stream Buffer threshold */
  80. #define DEC_WIDTH NVTBIT(15,0) /*!< 13-bit Header Offset Address */
  81. //JINTCR
  82. #define JPG_DOW_INTE BIT28 /*!< Decoding Output Wait Interrupt Enable */
  83. #define JPG_DOW_INTS BIT24 /*!< Status of Decoding Output Wait */
  84. #define JPG_WAITI BIT23 /*!< JPEG Input Wait Status (Read-Only) */
  85. #define JPG_WAITO BIT22 /*!< JPEG Output Wait Status (Read-Only) */
  86. #define BAbort BIT16 /*!< JPEG Memory Access Error Status (Read-Only) */
  87. #define CER_INTE BIT15 /*!< Un-complete Capture On-The-Fly Frame Occur Interrupt Enable */
  88. #define DHE_INTE BIT14 /*!< JPEG Header Decode End Wait Interrupt Enable */
  89. #define IPW_INTE BIT13 /*!< Input Wait Interrupt Enable */
  90. #define OPW_INTE BIT12 /*!< Output Wait Interrupt Enable */
  91. #define ENC_INTE BIT11 /*!< Encode Complete Interrupt Enable */
  92. #define DEC_INTE BIT10 /*!< Decode Complete Interrupt Enable */
  93. #define DER_INTE BIT9 /*!< Decode Error Interrupt Enable */
  94. #define EER_INTE BIT8 /*!< Encode (On-The-Fly) Error Interrupt Enable */
  95. #define CER_INTS BIT7 /*!< Un-complete Capture On-The-Fly Frame Occur Interrupt Status */
  96. #define DHE_INTS BIT6 /*!< JPEG Header Decode End Wait Interrupt Status */
  97. #define IPW_INTS BIT5 /*!< Input Wait Interrupt Status */
  98. #define OPW_INTS BIT4 /*!< Output Wait Interrupt Status */
  99. #define ENC_INTS BIT3 /*!< Encode Complete Interrupt Status */
  100. #define DEC_INTS BIT2 /*!< Decode Complete Interrupt Status */
  101. #define DER_INTS BIT1 /*!< Decode Error Interrupt Status */
  102. #define EER_INTS BIT0 /*!< Encode (On-The-Fly) Error Interrupt Status */
  103. //JPEG_BSBAD
  104. #define BIST_ST NVTBIT(23,16) /*!< Internal SRAM BIST Status (Read-Only) */
  105. #define TEST_DOUT NVTBIT(15,8) /*!< Test Data Output (Read-Only) */
  106. #define TEST_ON BIT7 /*!< Test Enable */
  107. #define BIST_ON BIT6 /*!< Internal SRAM BIST Mode Enable */
  108. #define BIST_FINI BIT5 /*!< Internal SRAM BIST Mode Finish (Read-Only) */
  109. #define BSBAD_BIST_FAIL BIT4 /*!< Internal SRAM BIST Mode Fail (Read-Only) */
  110. #define TEST_SEL NVTBIT(3,0) /*!< Test Data Selection */
  111. //JWINDEC0
  112. #define MCU_S_Y NVTBIT(24,16) /*!< MCU Start Position Y For Window Decode Mode */
  113. #define MCU_S_X NVTBIT(8,0) /*!< MCU Start Position X For Window Decode Mode */
  114. //JWINDEC1
  115. #define MCU_E_Y NVTBIT(24,16) /*!< MCU End Position Y For Window Decode Mode */
  116. #define MCU_E_X NVTBIT(8,0) /*!< MCU End Position X For Window Decode Mode */
  117. //JWINDEC2
  118. #define WD_WIDTH NVTBIT(11,0)) /*!< Image Width (Y-Stride) For Window Decode Mode */
  119. //JMACR
  120. #define FLY_SEL NVTBIT(29,24) /*!< Hardware Memory On-the-Fly Access Image Buffer-Size Selection for Encode */
  121. #define FLY_TYPE NVTBIT(23,22) /*!< Dual/Single buffer on-the fly */
  122. #define BSF_SEL NVTBIT(17,8) /*!< Memory On-the-Fly Access Bitstream Buffer-Size Selection */
  123. #define FLY_ON BIT7 /*!< Hardware Memory On-the-Fly Access Mode */
  124. #define IP_SF_ON BIT3 /*!< Software Memory On-the-Fly Access Mode for Data Input */
  125. #define OP_SF_ON BIT2 /*!< Software Memory On-the-Fly Access Mode for Data Output */
  126. #define ENC_MODE NVTBIT(1,0) /*!< JPEG Memory Address Mode Control */
  127. //JPSCALU
  128. #define JPSCALU_8X BIT6 /*!< Primary Image Up-Scaling For Encode */
  129. #define A_JUMP BIT2 /*!< Reserve Buffer Size In JPEG Bit-stream For Software Application */
  130. //JPSCALD
  131. #define PSX_ON BIT15 /*!< Primary Image Horizontal Down-Scaling For Encode/Decode */
  132. #define PS_LPF_ON BIT14 /*!< Primary Image Down-Scaling Low Pass Filter For Decode */
  133. #define PSCALX_F NVTBIT(12,8) /*!< Primary Image Horizontal Down-Scaling Factor */
  134. #define PSCALY_F NVTBIT(5,0) /*!< Primary Image Vertical Down-Scaling Factor */
  135. //JTSCALD
  136. #define TSX_ON BIT15 /*!< Thumbnail Image Horizontal Down-Scaling For Encode/Decode */
  137. #define TSCALX_F NVTBIT(14,8) /*!< Thumbnail Image Horizontal Down-Scaling Factor */
  138. #define TSCALY_F NVTBIT(7,0) /*!< Thumbnail Image Vertical Down-Scaling Factor */
  139. //JDBCR
  140. #define DBF_EN BIT7 /*!< Dual Buffering Control */
  141. #define IP_BUF BIT4 /*!< Input Dual Buffer Control */
  142. //JRESERVE
  143. #define RES_SIZE NVTBIT(15,0) /*!< Primary Encode Bit-stream Reserved Size */
  144. //JOFFSET
  145. #define OFFSET_SIZE NVTBIT(23,0) /*!< Primary/Thumbnail Starting Address Offset Size */
  146. //JFSTRIDE
  147. #define F_STRIDE NVTBIT(23,0) /*!< JPEG Encode Bit-stream Frame Stride */
  148. //JYADDR0
  149. #define Y_IADDR0 NVTBIT(31,0) /*!< JPEG Y Component Frame Buffer-0 Starting Address */
  150. //JUADDR0
  151. #define U_IADDR0 NVTBIT(31,0) /*!< JPEG U Component Frame Buffer-0 Starting Address */
  152. //JVADDR0
  153. #define V_IADDR0 NVTBIT(31,0) /*!< JPEG V Component Frame Buffer-0 Starting Address */
  154. //JYADDR1
  155. #define Y_IADDR1 NVTBIT(31,0) /*!< JPEG Y Component Frame Buffer-1 Starting Address */
  156. //JUADDR1
  157. #define U_IADDR1 NVTBIT(31,0) /*!< JPEG U Component Frame Buffer-1 Starting Address */
  158. //JVADDR1
  159. #define V_IADDR1 NVTBIT(31,0) /*!< JPEG V Component Frame Buffer-1 Starting Address */
  160. //JYSTRIDE
  161. #define Y_STRIDE NVTBIT(11,0) /*!< JPEG Y Component Frame Buffer Stride */
  162. //JUSTRIDE
  163. #define U_STRIDE NVTBIT(11,0) /*!< JPEG U Component Frame Buffer Stride */
  164. //JVSTRIDE
  165. #define V_STRIDE NVTBIT(11,0) /*!< JPEG V Component Frame Buffer Stride */
  166. //JIOADDR0
  167. #define IO_IADDR0 NVTBIT(31,0) /*!< JPEG Bit-stream Frame Buffer-0 Starting Address */
  168. //JIOADDR1
  169. #define IO_IADDR1 NVTBIT(31,0) /*!< JPEG Bit-stream Frame Buffer-1 Starting Address */
  170. //JPRI_SIZE
  171. #define PRI_SIZE NVTBIT(23,0) /*!< JPEG Primary Image Encode Bit-stream Size */
  172. //JTHB_SIZE
  173. #define THB_SIZE NVTBIT(15,0) /*!< JPEG Thumbnail Image Encode Bit-stream Size */
  174. //JUPRAT
  175. #define S_HEIGHT NVTBIT(29,16) /*!< JPEG Image Height Up-Scale Ratio */
  176. #define S_WIDTH NVTBIT(13,0) /*!< JPEG Image Width Up-Scale Ratio */
  177. //JBSFIFO
  178. #define BSFIFO_HT NVTBIT(6,4) /*!< Bit-stream FIFO High-Threshold Control */
  179. #define BSFIFO_LT NVTBIT(2,0) /*!< Bit-stream FIFO Low-Threshold Control */
  180. //JSRCH
  181. #define JSRCH_JSRCH NVTBIT(11,0) /*!< JPEG Encode Source Image Height */
  182. /*@}*/ /* end of group N9H30_JPEG_EXPORTED_CONSTANTS */
  183. /// @cond HIDDEN_SYMBOLS
  184. //Define for Interrupt Status
  185. #define JPEG_EER_INTS EER_INTS
  186. #define JPEG_DER_INTS DER_INTS
  187. #define JPEG_DEC_INTS DEC_INTS
  188. #define JPEG_ENC_INTS ENC_INTS
  189. #define JPEG_DHE_INTS DHE_INTS
  190. #define JPEG_IPW_INTS IPW_INTS
  191. //Define for Scaling
  192. #define JPEG_ENC_UPSCALE_MODE 0
  193. #define JPEG_DEC_PACKET_DOWNSCALE_MODE 1
  194. #define JPEG_DEC_PLANAR_DOWNSCALE_MODE 2
  195. #define JPEG_ENC_PLANAR_PRIMARY_DOWNSCALE_MODE 3
  196. #define JPEG_ENC_PLANAR_THUMBNAIL_DOWNSCALE_MODE 4
  197. //Define for Interrupt Enable
  198. #define JPEG_EER_INTE ERR_INTE
  199. #define JPEG_DER_INTE DER_INTE
  200. #define JPEG_DEC_INTE DEC_INTE
  201. #define JPEG_ENC_INTE ENC_INTE
  202. #define JPEG_DHE_INTE DHE_INTE
  203. #define JPEG_IPW_INTE IPW_INTE
  204. //Register
  205. #define REG_JMCR JMCR /*!< JPEG Mode Control Register */
  206. #define REG_JHEADER JHEADER /*!< JPEG Encode Header Control Register */
  207. #define REG_JITCR JITCR /*!< JPEG Image Type Control Register */
  208. #define REG_JPRIQC JPRIQC /*!< JPEG Primary Q-Table Control Register */
  209. #define REG_JTHBQC JTHBQC /*!< JPEG Thumbnail Q-Table Control Register */
  210. #define REG_JPRIWH JPRIWH /*!< JPEG Encode Primary Width/Height Register */
  211. #define REG_JTHBWH JTHBWH /*!< JPEG Encode Thumbnail Width/Height Register */
  212. #define REG_JPRST JPRST /*!< JPEG Encode Primary Restart Interval Register */
  213. #define REG_JTRST JTRST /*!< JPEG Encode Thumbnail Restart Interval */
  214. #define REG_JDECWH JDECWH /*!< JPEG Decode Image Width/Height Register */
  215. #define REG_JINTCR JINTCR /*!< JPEG Interrupt Control and Status Register */
  216. #define REG_JTEST JTEST /*!< JPEG Test Control Register */
  217. #define REG_JWINDEC0 JWINDEC0 /*!< JPEG Window Decode Mode Control Register 0 */
  218. #define REG_JWINDEC1 JWINDEC1 /*!< JPEG Window Decode Mode Control Register 1 */
  219. #define REG_JWINDEC2 JWINDEC2 /*!< JPEG Window Decode Mode Control Register 2 */
  220. #define REG_JMACR JMACR /*!< JPEG Memory Address Mode Control Register */
  221. #define REG_JPSCALU JPSCALU /*!< JPEG Primary Scaling-Up Control Register */
  222. #define REG_JPSCALD JPSCALD /*!< JPEG Primary Scaling-Down Control Register */
  223. #define REG_JTSCALD JTSCALD /*!< JPEG Thumbnail Scaling-Down Control Register */
  224. #define REG_JDBCR JDBCR /*!< JPEG Dual-Buffer Control Register */
  225. #define REG_JRESERVE JRESERVE /*!< JPEG Encode Primary Bit-stream Reserved Size Register */
  226. #define REG_JOFFSET JOFFSET /*!< JPEG Offset Between Primary & Thumbnail Register */
  227. #define REG_JFSTRIDE JFSTRIDE /*!< JPEG Encode Bit-stream Frame Stride Register */
  228. #define REG_JYADDR0 JYADDR0 /*!< JPEG Y Component Frame Buffer-0 Starting Address Register */
  229. #define REG_JUADDR0 JUADDR0 /*!< JPEG U Component Frame Buffer-0 Starting Address Register */
  230. #define REG_JVADDR0 JVADDR0 /*!< JPEG V Component Frame Buffer-0 Starting Address Register */
  231. #define REG_JYADDR1 JYADDR1 /*!< JPEG Y Component Frame Buffer-1 Starting Address Register */
  232. #define REG_JUADDR1 JUADDR1 /*!< JPEG U Component Frame Buffer-1 Starting Address Register */
  233. #define REG_JVADDR1 JVADDR1 /*!< JPEG V Component Frame Buffer-1 Starting Address Register */
  234. #define REG_JYSTRIDE JYSTRIDE /*!< JPEG Y Component Frame Buffer Stride Register */
  235. #define REG_JUSTRIDE JUSTRIDE /*!< JPEG U Component Frame Buffer Stride Register */
  236. #define REG_JVSTRIDE JVSTRIDE /*!< JPEG V Component Frame Buffer Stride Register */
  237. #define REG_JIOADDR0 JIOADDR0 /*!< JPEG Bit-stream Frame Buffer-0 Starting Address Register */
  238. #define REG_JIOADDR1 JIOADDR1 /*!< JPEG Bit-stream Frame Buffer-1 Starting Address Register */
  239. #define REG_JPRI_SIZE JPRI_SIZE /*!< JPEG Encode Primary Image Bit-stream Size Register */
  240. #define REG_JTHB_SIZE JTHB_SIZE /*!< JPEG Encode Thumbnail Image Bit-stream Size Register */
  241. #define REG_JUPRAT JUPRAT /*!< JPEG Encode Up-Scale Ratio Register */
  242. #define REG_JBSFIFO JBSFIFO /*!< JPEG Bit-stream FIFO Control Register */
  243. #define REG_JSRCH JSRCH /*!< JPEG Encode Source Image Height */
  244. #define REG_JQTAB0 JQTAB0 /*!< JPEG Quantization-Table 0 Register */
  245. #define REG_JQTAB1 JQTAB1 /*!< JPEG Quantization-Table 1 Register */
  246. #define REG_JQTAB2 JQTAB2 /*!< JPEG Quantization-Table 2 Register */
  247. //Export functions
  248. #define JPEG_SET_YADDR(u32Address) outp32(REG_JYADDR0, u32Address)
  249. #define JPEG_SET_UADDR(u32Address) outp32(REG_JUADDR0, u32Address)
  250. #define JPEG_SET_VADDR(u32Address) outp32(REG_JVADDR0, u32Address)
  251. #define JPEG_GET_YADDR() inp32(REG_JYADDR0)
  252. #define JPEG_GET_UADDR() inp32(REG_JUADDR0)
  253. #define JPEG_GET_VADDR() inp32(REG_JVADDR0)
  254. #define JPEG_SET_YSTRIDE(u32Stride) outp32(REG_JYSTRIDE, u32Stride)
  255. #define JPEG_SET_USTRIDE(u32Stride) outp32(REG_JUSTRIDE, u32Stride)
  256. #define JPEG_SET_VSTRIDE(u32Stride) outp32(REG_JVSTRIDE, u32Stride)
  257. #define JPEG_GET_YSTRIDE() inp32(REG_JYSTRIDE)
  258. #define JPEG_GET_USTRIDE() inp32(REG_JUSTRIDE)
  259. #define JPEG_GET_VSTRIDE() inp32(REG_JVSTRIDE)
  260. #define JPEG_SET_BITSTREAM_ADDR(u32Address) outp32(REG_JIOADDR0,u32Address)
  261. #define JPEG_GET_BITSTREAM_ADDR() inp32(REG_JIOADDR0)
  262. #define JPEG_SET_ENC_DEC(u8Mode) outp32(REG_JMCR, (inp32(REG_JMCR) & ~ENC_DEC) | (u8Mode << 7));
  263. //Encode
  264. #define JPEG_GET_ENC_PRIMARY_BITSTREAM_SIZE() inp32(REG_JPRI_SIZE)
  265. #define JPEG_GET_ENC_THUMBNAIL_BITSTREAM_SIZE() inp32(REG_JTHB_SIZE)
  266. #define JPEG_SET_SOURCE_IMAGE_HEIGHT(u16Size) outp32(REG_JSRCH,u16Size)
  267. #define JPEG_GET_SOURCE_IMAGE_HEIGHT() inp32(REG_JSRCH)
  268. #define JPEG_ENC_ENABLE_UPSCALING() outp32(REG_JPSCALU,inp32(REG_JPSCALU) | JPSCALU_8X)
  269. #define JPEG_ENC_DISABLE_UPSCALING() outp32(REG_JPSCALU,inp32(REG_JPSCALU) & ~JPSCALU_8X)
  270. #define JPEG_ENC_ISENABLE_UPSCALING() ((inp32(REG_JPSCALU) & JPSCALU_8X) >> 6)
  271. #define JPEG_ENC_SET_HEADER_CONTROL(u8Control) outp32(REG_JHEADER, u8Control)
  272. #define JPEG_ENC_GET_HEADER_CONTROL() inp32(REG_JHEADER)
  273. #define JPEG_ENC_SET_RDI_VALUE(u8Value) outp32(REG_JPRST,u8Value)
  274. #define JPEG_ENC_GET_RDI_VALUE() inp32(REG_JPRST)
  275. //Decode
  276. #define JPEG_DEC_ENABLE_DOWNSCALING() outp32(REG_JPSCALD, PSX_ON)
  277. #define JPEG_DEC_ISENABLE_DOWNSCALING() ((inp32(REG_JPSCALD) & PSX_ON) >> 15)
  278. #define JPEG_DEC_DISABLE_DOWNSCALING() outp32(REG_JPSCALD,~PSX_ON)
  279. #define JPEG_DEC_GET_DECODED_IMAGE_FORMAT() (inp32(REG_JITCR) & DYUV_MODE)
  280. #define JPEG_DEC_ENABLE_LOW_PASS_FILTER() outp32(REG_JPSCALD,inp32(REG_JPSCALD) | PS_LPF_ON)
  281. #define JPEG_DEC_DISABLE_LOW_PASS_FILTER() outp32(REG_JPSCALD,inp32(REG_JPSCALD) & ~PS_LPF_ON)
  282. #define JPEG_DEC_ISENABLE_LOW_PASS_FILTER() ((inp32(REG_JPSCALD) & PS_LPF_ON) >> 14)
  283. #define JPEG_DEC_SET_INPUT_WAIT(u16Size) outp32(REG_JMACR, 0x00400008 | ((u16Size & 0x3FF)<< 8) );
  284. #define JPEG_DEC_RESUME_INPUT_WAIT() outp32(REG_JMCR,inp32(REG_JMCR) | RESUMEI);
  285. #define JPEG_DEC_DISABLE_WINDOWDECODE() outp32(REG_JMCR, inp32(REG_JMCR) & ~(WIN_DEC));
  286. //Interrupt
  287. #define JPEG_INT_ENABLE(u32Intflag) outp32(REG_JINTCR, u32Intflag)
  288. #define JPEG_INT_DISABLE(u32Intflag) outp32(REG_JINTCR, inp32 (REG_JINTCR) & ~(u32Intflag))
  289. #define JPEG_GET_INT_STATUS() (inp32(REG_JINTCR) & 0x010000FF)
  290. #define JPEG_CLEAR_INT(u32Intflag) outp32(REG_JINTCR, (inp32 (REG_JINTCR) & ~0xFF) | u32Intflag)
  291. static INT jpegSetEncodeMode(UINT8 u8SourceFormat, UINT16 u16JpegFormat);
  292. static INT jpegSetDecodeMode(UINT32 u8OutputFormat);
  293. static BOOL jpegPollInt(UINT32 u32Intflag);
  294. static VOID jpegEncodeTrigger(void);
  295. static VOID jpegDecodeTrigger(void);
  296. static VOID jpegGetDecodedDimension(
  297. PUINT16 pu16Height, //Decode/Encode Height
  298. PUINT16 pu16Width //Decode/Encode Width
  299. );
  300. static VOID jpegSetDimension(
  301. UINT16 u16Height, //Decode/Encode Height
  302. UINT16 u16Width //Decode/Encode Width
  303. );
  304. static VOID jpegGetDimension(
  305. PUINT16 pu16Height, //Decoded Height from bit stream
  306. PUINT16 pu16Width //Decoded Width from bit stream
  307. );
  308. static INT jpegSetWindowDecode(
  309. UINT16 u16StartMCUX, //Start X MCU
  310. UINT16 u16StartMCUY, //Horizontal Scaling Factor
  311. UINT16 u16EndMCUX, //Vertical Scaling Factor
  312. UINT16 u16EndMCUY, //Horizontal Scaling Factor
  313. UINT32 u32Stride //Decode Output Stride
  314. );
  315. static INT jpegCalScalingFactor(
  316. UINT8 u8Mode, //Up / Down Scaling
  317. UINT16 u16Height, //Original Height
  318. UINT16 u16Width, //Original Width
  319. UINT16 u16ScalingHeight, //Scaled Height
  320. UINT16 u16ScalingWidth, //Scaled Width
  321. PUINT16 pu16RatioH, //Horizontal Ratio
  322. PUINT16 pu16RatioW //Vertical Ratio
  323. );
  324. static INT jpegSetScalingFactor(
  325. UINT8 u8Mode, //Up / Down Scaling
  326. UINT16 u16FactorH, //Vertical Scaling Factor
  327. UINT16 u16FactorW //Horizontal Scaling Factor
  328. );
  329. static VOID jpegGetScalingFactor(
  330. UINT8 u8Mode, //Up / Down Scaling
  331. PUINT16 pu16FactorH, //Vertical Scaling Factor
  332. PUINT16 pu16FactorW //Horizontal Scaling Factor
  333. );
  334. /// @endcond HIDDEN_SYMBOLS
  335. /*@}*/ /* end of group N9H30_JPEG_Driver */
  336. /*@}*/ /* end of group N9H30_Device_Driver */
  337. #endif