working together with FATFileSystem
Fork of TinyJpgDec by
Diff: TinyJpgDec.cpp
- Revision:
- 1:79e97662234d
- Parent:
- 0:b6f284347a66
diff -r b6f284347a66 -r 79e97662234d TinyJpgDec.cpp --- a/TinyJpgDec.cpp Sat Mar 22 18:00:42 2014 +0000 +++ b/TinyJpgDec.cpp Sat Nov 14 02:43:21 2015 +0000 @@ -66,7 +66,7 @@ #if JD_TBLCLIP -#define BYTECLIP(v) Clip8[(UINT)(v) & 0x3FF] +#define BYTECLIP(v) Clip8[(JPG_UINT)(v) & 0x3FF] static const BYTE Clip8[1024] = { @@ -112,7 +112,7 @@ inline BYTE BYTECLIP ( - INT val + JPG_INT val ) { if (val < 0) val = 0; @@ -132,7 +132,7 @@ static void* alloc_pool ( /* Pointer to allocated memory block (NULL:no memory available) */ JDEC* jd, /* Pointer to the decompressor object */ - UINT nd /* Number of bytes to allocate */ + JPG_UINT nd /* Number of bytes to allocate */ ) { char *rp = 0; @@ -157,14 +157,14 @@ /*-----------------------------------------------------------------------*/ static -JRESULT // UINT evillive +JRESULT // JPG_UINT evillive create_qt_tbl ( /* 0:OK, !0:Failed */ JDEC* jd, /* Pointer to the decompressor object */ const BYTE* data, /* Pointer to the quantizer tables */ - UINT ndata /* Size of input data */ + JPG_UINT ndata /* Size of input data */ ) { - UINT i; + JPG_UINT i; BYTE d, z; LONG *pb; @@ -195,14 +195,14 @@ /*-----------------------------------------------------------------------*/ static -JRESULT //UINT evillive +JRESULT //JPG_UINT evillive create_huffman_tbl ( /* 0:OK, !0:Failed */ JDEC* jd, /* Pointer to the decompressor object */ const BYTE* data, /* Pointer to the packed huffman tables */ - UINT ndata /* Size of input data */ + JPG_UINT ndata /* Size of input data */ ) { - UINT i, j, b, np, cls, num; + JPG_UINT i, j, b, np, cls, num; BYTE d, *pb, *pd; WORD hc, *ph; @@ -255,13 +255,13 @@ /*-----------------------------------------------------------------------*/ static -INT bitext ( /* >=0: extracted data, <0: error code */ +JPG_INT bitext ( /* >=0: extracted data, <0: error code */ JDEC* jd, /* Pointer to the decompressor object */ - UINT nbit /* Number of bits to extract (1 to 11) */ + JPG_UINT nbit /* Number of bits to extract (1 to 11) */ ) { BYTE msk, s, *dp; - UINT dc, v, f; + JPG_UINT dc, v, f; msk = jd->dmsk; @@ -274,14 +274,14 @@ if (!dc) { /* No input data is available, re-fill input buffer */ dp = jd->inbuf; /* Top of input buffer */ dc = jd->infunc(jd, dp, JD_SZBUF); - if (!dc) return 0 - (INT)JDR_INP; /* Err: read error or wrong stream termination */ + if (!dc) return 0 - (JPG_INT)JDR_INP; /* Err: read error or wrong stream termination */ } else { dp++; /* Next data ptr */ } dc--; /* Decrement number of available bytes */ if (f) { /* In flag sequence? */ f = 0; /* Exit flag sequence */ - if (*dp != 0) return 0 - (INT)JDR_FMT1; /* Err: unexpected flag is detected (may be collapted data) */ + if (*dp != 0) return 0 - (JPG_INT)JDR_FMT1; /* Err: unexpected flag is detected (may be collapted data) */ *dp = s = 0xFF; /* The flag is a data 0xFF */ } else { s = *dp; /* Get next data byte */ @@ -301,7 +301,7 @@ jd->dctr = dc; jd->dptr = dp; - return (INT)v; + return (JPG_INT)v; } @@ -312,7 +312,7 @@ /*-----------------------------------------------------------------------*/ static -INT huffext ( /* >=0: decoded data, <0: error code */ +JPG_INT huffext ( /* >=0: decoded data, <0: error code */ JDEC* jd, /* Pointer to the decompressor object */ const BYTE* hbits, /* Pointer to the bit distribution table */ const WORD* hcode, /* Pointer to the code word table */ @@ -320,7 +320,7 @@ ) { BYTE msk, s, *dp; - UINT dc, v, f, bl, nd; + JPG_UINT dc, v, f, bl, nd; msk = jd->dmsk; @@ -334,7 +334,7 @@ if (!dc) { /* No input data is available, re-fill input buffer */ dp = jd->inbuf; /* Top of input buffer */ dc = jd->infunc(jd, dp, JD_SZBUF); - if (!dc) {printf("huffext KO 1\n");return 0 - (INT)JDR_INP;} /* Err: read error or wrong stream termination */ + if (!dc) {printf("huffext KO 1\n");return 0 - (JPG_INT)JDR_INP;} /* Err: read error or wrong stream termination */ } else { dp++; /* Next data ptr */ } @@ -342,7 +342,7 @@ if (f) { /* In flag sequence? */ f = 0; /* Exit flag sequence */ if (*dp != 0) - {printf("huffext KO 2\n");return 0 - (INT)JDR_FMT1;} /* Err: unexpected flag is detected (may be collapted data) */ + {printf("huffext KO 2\n");return 0 - (JPG_INT)JDR_FMT1;} /* Err: unexpected flag is detected (may be collapted data) */ *dp = s = 0xFF; /* The flag is a data 0xFF */ } else { s = *dp; /* Get next data byte */ @@ -370,7 +370,7 @@ bl--; } while (bl); printf("huffext KO 3\n"); - return 0 - (INT)JDR_FMT1; /* Err: code not found (may be collapted data) */ + return 0 - (JPG_INT)JDR_FMT1; /* Err: code not found (may be collapted data) */ } @@ -389,7 +389,7 @@ const LONG M13 = (LONG)(1.41421*4096), M2 = (LONG)(1.08239*4096), M4 = (LONG)(2.61313*4096), M5 = (LONG)(1.84776*4096); LONG v0, v1, v2, v3, v4, v5, v6, v7; LONG t10, t11, t12, t13; - UINT i; + JPG_UINT i; /* Process columns */ for (i = 0; i < 8; i++) { @@ -495,14 +495,14 @@ static JRESULT -//INT evillive +//JPG_INT evillive mcu_load ( JDEC* jd /* Pointer to the decompressor object */ ) { LONG *tmp = (LONG*)jd->workbuf; /* Block working buffer for de-quantize and IDCT */ - UINT blk, nby, nbc, i, z, id, cmp; - INT b, d, e; + JPG_UINT blk, nby, nbc, i, z, id, cmp; + JPG_INT b, d, e; BYTE *bp; const BYTE *hb, *hd; const WORD *hc; @@ -548,7 +548,7 @@ if (b == 0) break; /* EOB? */ //if (b < 0) return 0 - b; /* Err: invalid code or input error */ if (b < 0) {printf("mcu_load KO 3\n");return (JRESULT)(-b);}//evillive - z = (UINT)b >> 4; /* Number of leading zero elements */ + z = (JPG_UINT)b >> 4; /* Number of leading zero elements */ if (z) { i += z; /* Skip zero elements */ if (i >= 64) {printf("mcu_load KO 4\n");return JDR_FMT1;} /* Too long zero run */ @@ -585,14 +585,14 @@ static JRESULT mcu_output ( JDEC* jd, /* Pointer to the decompressor object */ - UINT (*outfunc)(JDEC*, void*, JRECT*), /* RGB output function */ - UINT x, /* MCU position in the image (left of the MCU) */ - UINT y /* MCU position in the image (top of the MCU) */ + JPG_UINT (*outfunc)(JDEC*, void*, JRECT*), /* RGB output function */ + JPG_UINT x, /* MCU position in the image (left of the MCU) */ + JPG_UINT y /* MCU position in the image (top of the MCU) */ ) { - const INT CVACC = (sizeof (INT) > 2) ? 1024 : 128; - UINT ix, iy, mx, my, rx, ry; - INT yy, cb, cr; + const JPG_INT CVACC = (sizeof (JPG_INT) > 2) ? 1024 : 128; + JPG_UINT ix, iy, mx, my, rx, ry; + JPG_INT yy, cb, cr; BYTE *py, *pc, *rgb24; JRECT rect; @@ -639,15 +639,15 @@ yy = *py++; /* Get Y component */ /* Convert YCbCr to RGB */ - *rgb24++ = /* R */ BYTECLIP(yy + ((INT)(1.402 * CVACC) * cr) / CVACC); - *rgb24++ = /* G */ BYTECLIP(yy - ((INT)(0.344 * CVACC) * cb + (INT)(0.714 * CVACC) * cr) / CVACC); - *rgb24++ = /* B */ BYTECLIP(yy + ((INT)(1.772 * CVACC) * cb) / CVACC); + *rgb24++ = /* R */ BYTECLIP(yy + ((JPG_INT)(1.402 * CVACC) * cr) / CVACC); + *rgb24++ = /* G */ BYTECLIP(yy - ((JPG_INT)(0.344 * CVACC) * cb + (JPG_INT)(0.714 * CVACC) * cr) / CVACC); + *rgb24++ = /* B */ BYTECLIP(yy + ((JPG_INT)(1.772 * CVACC) * cb) / CVACC); } } /* Descale the MCU rectangular if needed */ if (JD_USE_SCALE && jd->scale) { - UINT x, y, r, g, b, s, w, a; + JPG_UINT x, y, r, g, b, s, w, a; BYTE *op; /* Get averaged RGB value of each square correcponds to a pixel */ @@ -689,9 +689,9 @@ py += 64; /* Convert YCbCr to RGB */ - *rgb24++ = /* R */ BYTECLIP(yy + ((INT)(1.402 * CVACC) * cr / CVACC)); - *rgb24++ = /* G */ BYTECLIP(yy - ((INT)(0.344 * CVACC) * cb + (INT)(0.714 * CVACC) * cr) / CVACC); - *rgb24++ = /* B */ BYTECLIP(yy + ((INT)(1.772 * CVACC) * cb / CVACC)); + *rgb24++ = /* R */ BYTECLIP(yy + ((JPG_INT)(1.402 * CVACC) * cr / CVACC)); + *rgb24++ = /* G */ BYTECLIP(yy - ((JPG_INT)(0.344 * CVACC) * cb + (JPG_INT)(0.714 * CVACC) * cr) / CVACC); + *rgb24++ = /* B */ BYTECLIP(yy + ((JPG_INT)(1.772 * CVACC) * cb / CVACC)); } } } @@ -700,7 +700,7 @@ mx >>= jd->scale; if (rx < mx) { BYTE *s, *d; - UINT x, y; + JPG_UINT x, y; s = d = (BYTE*)jd->workbuf; for (y = 0; y < ry; y++) { @@ -717,7 +717,7 @@ if (JD_FORMAT == 1) { BYTE *s = (BYTE*)jd->workbuf; WORD w, *d = (WORD*)s; - UINT n = rx * ry; + JPG_UINT n = rx * ry; do { w = (*s++ & 0xF8) << 8; /* RRRRR----------- */ @@ -744,7 +744,7 @@ WORD rstn /* Expected restert sequense number */ ) { - UINT i, dc; + JPG_UINT i, dc; WORD d; BYTE *dp; @@ -789,19 +789,19 @@ JRESULT -//INT +//JPG_INT jd_prepare ( JDEC* jd, /* Blank decompressor object */ - UINT (*infunc)(JDEC*, BYTE*, UINT), /* JPEG strem input function */ + JPG_UINT (*infunc)(JDEC*, BYTE*, JPG_UINT), /* JPEG strem input function */ void* pool, /* Working buffer for the decompression session */ - UINT sz_pool, /* Size of working buffer */ + JPG_UINT sz_pool, /* Size of working buffer */ void* dev /* I/O device identifier for the session */ ) { BYTE *seg, b; WORD marker; DWORD ofs; - UINT n, i, j, len; + JPG_UINT n, i, j, len; JRESULT rc; @@ -928,7 +928,7 @@ jd->dctr = 0; jd->dmsk = 0; /* Prepare to read bit stream */ if (ofs %= JD_SZBUF) { /* Align read offset to JD_SZBUF */ - jd->dctr = jd->infunc(jd, seg + ofs, JD_SZBUF - (UINT)ofs); + jd->dctr = jd->infunc(jd, seg + ofs, JD_SZBUF - (JPG_UINT)ofs); jd->dptr = seg + ofs - 1; } @@ -966,11 +966,11 @@ JRESULT jd_decomp ( JDEC* jd, /* Initialized decompression object */ - UINT (*outfunc)(JDEC*, void*, JRECT*), /* RGB output function */ + JPG_UINT (*outfunc)(JDEC*, void*, JRECT*), /* RGB output function */ BYTE scale /* Output de-scaling factor (0 to 3) */ ) { - UINT x, y, mx, my; + JPG_UINT x, y, mx, my; WORD rst, rsc; JRESULT rc;