本项止转自github官方arduino-esp32 传在这里仅为阅读源码方便
projectuser
2019-07-05 50148ccffe21ff54262064ec9f2245900eaf18aa
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
/*----------------------------------------------------------------------------/
/ TJpgDec - Tiny JPEG Decompressor include file               (C)ChaN, 2012
/----------------------------------------------------------------------------*/
#ifndef _TJPGDEC
#define _TJPGDEC
/*---------------------------------------------------------------------------*/
/* System Configurations */
 
#define    JD_SZBUF        512    /* Size of stream input buffer */
#define JD_FORMAT        0    /* Output pixel format 0:RGB888 (3 BYTE/pix), 1:RGB565 (1 WORD/pix) */
#define    JD_USE_SCALE    1    /* Use descaling feature for output */
#define JD_TBLCLIP        1    /* Use table for saturation (might be a bit faster but increases 1K bytes of code size) */
 
/*---------------------------------------------------------------------------*/
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* These types must be 16-bit, 32-bit or larger integer */
typedef int                INT;
typedef unsigned int    UINT;
 
/* These types must be 8-bit integer */
typedef char            CHAR;
typedef unsigned char    UCHAR;
typedef unsigned char    BYTE;
 
/* These types must be 16-bit integer */
typedef short            SHORT;
typedef unsigned short    USHORT;
typedef unsigned short    WORD;
typedef unsigned short    WCHAR;
 
/* These types must be 32-bit integer */
typedef long            LONG;
typedef unsigned long    ULONG;
typedef unsigned long    DWORD;
 
 
/* Error code */
typedef enum {
    JDR_OK = 0,    /* 0: Succeeded */
    JDR_INTR,    /* 1: Interrupted by output function */    
    JDR_INP,    /* 2: Device error or wrong termination of input stream */
    JDR_MEM1,    /* 3: Insufficient memory pool for the image */
    JDR_MEM2,    /* 4: Insufficient stream input buffer */
    JDR_PAR,    /* 5: Parameter error */
    JDR_FMT1,    /* 6: Data format error (may be damaged data) */
    JDR_FMT2,    /* 7: Right format but not supported */
    JDR_FMT3    /* 8: Not supported JPEG standard */
} JRESULT;
 
 
 
/* Rectangular structure */
typedef struct {
    WORD left, right, top, bottom;
} JRECT;
 
 
 
/* Decompressor object structure */
typedef struct JDEC JDEC;
struct JDEC {
    UINT dctr;                /* Number of bytes available in the input buffer */
    BYTE* dptr;                /* Current data read ptr */
    BYTE* inbuf;            /* Bit stream input buffer */
    BYTE dmsk;                /* Current bit in the current read byte */
    BYTE scale;                /* Output scaling ratio */
    BYTE msx, msy;            /* MCU size in unit of block (width, height) */
    BYTE qtid[3];            /* Quantization table ID of each component */
    SHORT dcv[3];            /* Previous DC element of each component */
    WORD nrst;                /* Restart inverval */
    UINT width, height;        /* Size of the input image (pixel) */
    BYTE* huffbits[2][2];    /* Huffman bit distribution tables [id][dcac] */
    WORD* huffcode[2][2];    /* Huffman code word tables [id][dcac] */
    BYTE* huffdata[2][2];    /* Huffman decoded data tables [id][dcac] */
    LONG* qttbl[4];            /* Dequaitizer tables [id] */
    void* workbuf;            /* Working buffer for IDCT and RGB output */
    BYTE* mcubuf;            /* Working buffer for the MCU */
    void* pool;                /* Pointer to available memory pool */
    UINT sz_pool;            /* Size of momory pool (bytes available) */
    UINT (*infunc)(JDEC*, BYTE*, UINT);/* Pointer to jpeg stream input function */
    void* device;            /* Pointer to I/O device identifiler for the session */
};
 
 
 
/* TJpgDec API functions */
JRESULT jd_prepare (JDEC*, UINT(*)(JDEC*,BYTE*,UINT), void*, UINT, void*);
JRESULT jd_decomp (JDEC*, UINT(*)(JDEC*,void*,JRECT*), BYTE);
 
 
#ifdef __cplusplus
}
#endif
 
#endif /* _TJPGDEC */