this repository aim to make the official ST DISCO F746NG demo from STM32Cube_FW_F7_V1.2.0 working on mbed.

Dependencies:   BSP_DISCO_F746NG_patch mbed-rtos mbed

Committer:
NirT
Date:
Mon Nov 02 23:38:08 2015 +0000
Revision:
0:c00e6c923941
Error: Incomplete type is not allowed in "patch/LwIP/src/include/lwip/dhcp.h", Line: 83, Col: 4; ; and more like this.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NirT 0:c00e6c923941 1 /*********************************************************************
NirT 0:c00e6c923941 2 * SEGGER Microcontroller GmbH & Co. KG *
NirT 0:c00e6c923941 3 * Solutions for real time microcontroller applications *
NirT 0:c00e6c923941 4 **********************************************************************
NirT 0:c00e6c923941 5 * *
NirT 0:c00e6c923941 6 * (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG *
NirT 0:c00e6c923941 7 * *
NirT 0:c00e6c923941 8 * Internet: www.segger.com Support: support@segger.com *
NirT 0:c00e6c923941 9 * *
NirT 0:c00e6c923941 10 **********************************************************************
NirT 0:c00e6c923941 11
NirT 0:c00e6c923941 12 ** emWin V5.28 - Graphical user interface for embedded applications **
NirT 0:c00e6c923941 13 All Intellectual Property rights in the Software belongs to SEGGER.
NirT 0:c00e6c923941 14 emWin is protected by international copyright laws. Knowledge of the
NirT 0:c00e6c923941 15 source code may not be used to write a similar product. This file may
NirT 0:c00e6c923941 16 only be used in accordance with the following terms:
NirT 0:c00e6c923941 17
NirT 0:c00e6c923941 18 The software has been licensed to STMicroelectronics International
NirT 0:c00e6c923941 19 N.V. a Dutch company with a Swiss branch and its headquarters in Plan-
NirT 0:c00e6c923941 20 les-Ouates, Geneva, 39 Chemin du Champ des Filles, Switzerland for the
NirT 0:c00e6c923941 21 purposes of creating libraries for ARM Cortex-M-based 32-bit microcon_
NirT 0:c00e6c923941 22 troller products commercialized by Licensee only, sublicensed and dis_
NirT 0:c00e6c923941 23 tributed under the terms and conditions of the End User License Agree_
NirT 0:c00e6c923941 24 ment supplied by STMicroelectronics International N.V.
NirT 0:c00e6c923941 25 Full source code is available at: www.segger.com
NirT 0:c00e6c923941 26
NirT 0:c00e6c923941 27 We appreciate your understanding and fairness.
NirT 0:c00e6c923941 28 ----------------------------------------------------------------------
NirT 0:c00e6c923941 29 File : GUI_JPEG_Private.h
NirT 0:c00e6c923941 30 Purpose : Private header
NirT 0:c00e6c923941 31 ----------------------------------------------------------------------
NirT 0:c00e6c923941 32
NirT 0:c00e6c923941 33 Explanation of terms:
NirT 0:c00e6c923941 34
NirT 0:c00e6c923941 35 Component - Color channel, e.g., Red or Luminance.
NirT 0:c00e6c923941 36 Sample - Single component value (i.e., one number in the image data).
NirT 0:c00e6c923941 37 Coefficient - Frequency coefficient (a DCT transform output number).
NirT 0:c00e6c923941 38 Block - 8x8 group of samples or coefficients.
NirT 0:c00e6c923941 39 MCU - (Minimum Coded Unit) is an interleaved set of blocks of size
NirT 0:c00e6c923941 40 determined by the sampling factors, or a single block in a
NirT 0:c00e6c923941 41 noninterleaved scan.
NirT 0:c00e6c923941 42
NirT 0:c00e6c923941 43 ---------------------------END-OF-HEADER------------------------------
NirT 0:c00e6c923941 44 */
NirT 0:c00e6c923941 45
NirT 0:c00e6c923941 46 #ifndef GUI_JPEG_PRIVATE_H
NirT 0:c00e6c923941 47 #define GUI_JPEG_PRIVATE_H
NirT 0:c00e6c923941 48
NirT 0:c00e6c923941 49 /*********************************************************************
NirT 0:c00e6c923941 50 *
NirT 0:c00e6c923941 51 * Defines
NirT 0:c00e6c923941 52 *
NirT 0:c00e6c923941 53 **********************************************************************
NirT 0:c00e6c923941 54 */
NirT 0:c00e6c923941 55 #define JPEG_LOCK_H(h) (GUI_JPEG_DCONTEXT *)GUI_LOCK_H(h)
NirT 0:c00e6c923941 56
NirT 0:c00e6c923941 57 /*********************************************************************
NirT 0:c00e6c923941 58 *
NirT 0:c00e6c923941 59 * Scan types
NirT 0:c00e6c923941 60 */
NirT 0:c00e6c923941 61 #define GRAYSCALE 0
NirT 0:c00e6c923941 62 #define YH1V1 1
NirT 0:c00e6c923941 63 #define YH2V1 2
NirT 0:c00e6c923941 64 #define YH1V2 3
NirT 0:c00e6c923941 65 #define YH2V2 4
NirT 0:c00e6c923941 66
NirT 0:c00e6c923941 67 /*********************************************************************
NirT 0:c00e6c923941 68 *
NirT 0:c00e6c923941 69 * Maximum number of...
NirT 0:c00e6c923941 70 */
NirT 0:c00e6c923941 71 #define MAX_COMPONENTS 4
NirT 0:c00e6c923941 72 #define MAX_HUFFTABLES 8
NirT 0:c00e6c923941 73 #define MAX_QUANTTABLES 4
NirT 0:c00e6c923941 74 #define MAX_COMPSINSCAN 4
NirT 0:c00e6c923941 75 #define MAX_BLOCKSPERMCU 10
NirT 0:c00e6c923941 76
NirT 0:c00e6c923941 77 /*********************************************************************
NirT 0:c00e6c923941 78 *
NirT 0:c00e6c923941 79 * Marker definitions
NirT 0:c00e6c923941 80 */
NirT 0:c00e6c923941 81 #define M_SOF0 0xc0 /* Start Of Frame */
NirT 0:c00e6c923941 82 #define M_SOF1 0xc1
NirT 0:c00e6c923941 83 #define M_SOF2 0xc2
NirT 0:c00e6c923941 84 #define M_SOF3 0xc3
NirT 0:c00e6c923941 85
NirT 0:c00e6c923941 86 #define M_SOF5 0xc5
NirT 0:c00e6c923941 87 #define M_SOF6 0xc6
NirT 0:c00e6c923941 88 #define M_SOF7 0xc7
NirT 0:c00e6c923941 89
NirT 0:c00e6c923941 90 #define M_JPG 0xc8
NirT 0:c00e6c923941 91 #define M_SOF9 0xc9
NirT 0:c00e6c923941 92 #define M_SOF10 0xca
NirT 0:c00e6c923941 93 #define M_SOF11 0xcb
NirT 0:c00e6c923941 94
NirT 0:c00e6c923941 95 #define M_SOF13 0xcd
NirT 0:c00e6c923941 96 #define M_SOF14 0xce
NirT 0:c00e6c923941 97 #define M_SOF15 0xcf
NirT 0:c00e6c923941 98
NirT 0:c00e6c923941 99 #define M_DHT 0xc4 /* Define Huffman Table */
NirT 0:c00e6c923941 100
NirT 0:c00e6c923941 101 #define M_DAC 0xcc /* Define Arithmetic Coding Table */
NirT 0:c00e6c923941 102
NirT 0:c00e6c923941 103 #define M_RST0 0xd0
NirT 0:c00e6c923941 104 #define M_RST1 0xd1
NirT 0:c00e6c923941 105 #define M_RST2 0xd2
NirT 0:c00e6c923941 106 #define M_RST3 0xd3
NirT 0:c00e6c923941 107 #define M_RST4 0xd4
NirT 0:c00e6c923941 108 #define M_RST5 0xd5
NirT 0:c00e6c923941 109 #define M_RST6 0xd6
NirT 0:c00e6c923941 110 #define M_RST7 0xd7
NirT 0:c00e6c923941 111
NirT 0:c00e6c923941 112 #define M_SOI 0xd8 /* Start Of Image */
NirT 0:c00e6c923941 113 #define M_EOI 0xd9
NirT 0:c00e6c923941 114 #define M_SOS 0xda /* Start Of Scan */
NirT 0:c00e6c923941 115 #define M_DQT 0xdb /* Define Quantisation Table */
NirT 0:c00e6c923941 116 #define M_DRI 0xdd /* Define Restart Interval */
NirT 0:c00e6c923941 117
NirT 0:c00e6c923941 118 #define M_APP0 0xe0 /* Application Usage */
NirT 0:c00e6c923941 119 #define M_APP14 0xee /* Adobe marker */
NirT 0:c00e6c923941 120
NirT 0:c00e6c923941 121 #define M_TEM 0x01
NirT 0:c00e6c923941 122
NirT 0:c00e6c923941 123 #define ADOBE_TRANSFORM_RGB 0
NirT 0:c00e6c923941 124 #define ADOBE_TRANSFORM_YCBCR 1
NirT 0:c00e6c923941 125
NirT 0:c00e6c923941 126 /*********************************************************************
NirT 0:c00e6c923941 127 *
NirT 0:c00e6c923941 128 * Types
NirT 0:c00e6c923941 129 *
NirT 0:c00e6c923941 130 **********************************************************************
NirT 0:c00e6c923941 131 */
NirT 0:c00e6c923941 132 /* Default parameter structure for reading data from memory */
NirT 0:c00e6c923941 133 typedef struct {
NirT 0:c00e6c923941 134 const U8 * pFileData;
NirT 0:c00e6c923941 135 I32 FileSize;
NirT 0:c00e6c923941 136 } GUI_JPEG_PARAM;
NirT 0:c00e6c923941 137
NirT 0:c00e6c923941 138 /* Huffman table definition */
NirT 0:c00e6c923941 139 typedef struct {
NirT 0:c00e6c923941 140 unsigned aLookUp[256];
NirT 0:c00e6c923941 141 U8 aCodeSize[256];
NirT 0:c00e6c923941 142 unsigned aTree[512];
NirT 0:c00e6c923941 143 } HUFF_TABLE;
NirT 0:c00e6c923941 144
NirT 0:c00e6c923941 145 /* Coefficient buffer used for progressive JPEGs */
NirT 0:c00e6c923941 146 typedef struct {
NirT 0:c00e6c923941 147 int NumBlocksX;
NirT 0:c00e6c923941 148 int NumBlocksY;
NirT 0:c00e6c923941 149 unsigned BlockSize;
NirT 0:c00e6c923941 150 GUI_HMEM hData;
NirT 0:c00e6c923941 151 } COEFF_BUFFER;
NirT 0:c00e6c923941 152
NirT 0:c00e6c923941 153 typedef struct GUI_JPEG_DCONTEXT GUI_JPEG_DCONTEXT;
NirT 0:c00e6c923941 154
NirT 0:c00e6c923941 155 struct GUI_JPEG_DCONTEXT {
NirT 0:c00e6c923941 156 /* Function pointer for drawing one line of completely decoded pixels */
NirT 0:c00e6c923941 157 void (* pfWritePixels)(int x0, int y0, GUI_JPEG_DCONTEXT * pContext, GUI_COLOR (* pfGetColor)(const U8 ** ppData, unsigned SkipCnt), tLCDDEV_Color2Index * pfColor2Index);
NirT 0:c00e6c923941 158 /* Function pointer for reading one byte */
NirT 0:c00e6c923941 159 int (* pfGetU8)(GUI_JPEG_DCONTEXT * pContext, U8 * pByte);
NirT 0:c00e6c923941 160
NirT 0:c00e6c923941 161 GUI_GET_DATA_FUNC * pfGetData; /* 'GetData' Function pointer */
NirT 0:c00e6c923941 162 void * pParam; /* Pointer passed to 'GetData' function */
NirT 0:c00e6c923941 163 U32 Off; /* Data pointer */
NirT 0:c00e6c923941 164 /* Image size */
NirT 0:c00e6c923941 165 U16 xSize;
NirT 0:c00e6c923941 166 U16 ySize;
NirT 0:c00e6c923941 167 /* Input buffer */
NirT 0:c00e6c923941 168 const U8 * pBuffer;
NirT 0:c00e6c923941 169 unsigned NumBytesInBuffer;
NirT 0:c00e6c923941 170 U8 StartOfFile;
NirT 0:c00e6c923941 171 U8 aStuff[4]; /* Stuff back buffer */
NirT 0:c00e6c923941 172 U8 NumBytesStuffed; /* Number of stuffed bytes */
NirT 0:c00e6c923941 173 /* Bit buffer */
NirT 0:c00e6c923941 174 U32 BitBuffer;
NirT 0:c00e6c923941 175 int NumBitsLeft;
NirT 0:c00e6c923941 176 /* Huffman tables */
NirT 0:c00e6c923941 177 U8 aHuffNumTableAvail[MAX_HUFFTABLES];
NirT 0:c00e6c923941 178 U8 aaHuffNum[MAX_HUFFTABLES][17]; /* Pointer to number of Huffman codes per bit size */
NirT 0:c00e6c923941 179 U8 aaHuffVal[MAX_HUFFTABLES][256]; /* Pointer to Huffman codes */
NirT 0:c00e6c923941 180 HUFF_TABLE aHuffTable[MAX_HUFFTABLES];
NirT 0:c00e6c923941 181 HUFF_TABLE * apDC_Huff[MAX_BLOCKSPERMCU];
NirT 0:c00e6c923941 182 HUFF_TABLE * apAC_Huff[MAX_BLOCKSPERMCU];
NirT 0:c00e6c923941 183 /* Quantization tables */
NirT 0:c00e6c923941 184 U16 aaQuantTbl[MAX_QUANTTABLES][64];
NirT 0:c00e6c923941 185 U16 * apQuantTbl[MAX_QUANTTABLES];
NirT 0:c00e6c923941 186 /* Component information */
NirT 0:c00e6c923941 187 U8 NumCompsPerFrame; /* Number of components per frame */
NirT 0:c00e6c923941 188 U8 aCompHSamp[MAX_COMPONENTS]; /* Component's horizontal sampling factor */
NirT 0:c00e6c923941 189 U8 aCompVSamp[MAX_COMPONENTS]; /* Component's vertical sampling factor */
NirT 0:c00e6c923941 190 U8 aCompQuant[MAX_COMPONENTS]; /* Component's quantization table selector */
NirT 0:c00e6c923941 191 U8 aCompId [MAX_COMPONENTS]; /* Component's ID */
NirT 0:c00e6c923941 192 U8 NumCompsPerScan; /* Number of components per scan */
NirT 0:c00e6c923941 193 U8 aCompList[MAX_COMPSINSCAN]; /* Components in this scan */
NirT 0:c00e6c923941 194 U8 aCompDC_Tab[MAX_COMPONENTS]; /* Component's DC Huffman coding table selector */
NirT 0:c00e6c923941 195 U8 aCompAC_Tab[MAX_COMPONENTS]; /* Component's AC Huffman coding table selector */
NirT 0:c00e6c923941 196 unsigned * apComponent[MAX_BLOCKSPERMCU]; /* Points into the table aLastDC_Val[] */
NirT 0:c00e6c923941 197 unsigned aLastDC_Val[MAX_COMPONENTS]; /* Table of last DC values */
NirT 0:c00e6c923941 198 /* Data used for progressive scans */
NirT 0:c00e6c923941 199 U8 SpectralStart; /* Spectral selection start */
NirT 0:c00e6c923941 200 U8 SpectralEnd; /* Spectral selection end */
NirT 0:c00e6c923941 201 U8 SuccessiveLow; /* Successive approximation low */
NirT 0:c00e6c923941 202 U8 SuccessiveHigh; /* Successive approximation high */
NirT 0:c00e6c923941 203 COEFF_BUFFER aDC_Coeffs[MAX_COMPONENTS]; /* DC coefficient buffer for progressive scan */
NirT 0:c00e6c923941 204 COEFF_BUFFER aAC_Coeffs[MAX_COMPONENTS]; /* AC coefficient buffer for progressive scan */
NirT 0:c00e6c923941 205 int aBlockY_MCU[MAX_COMPONENTS]; /* */
NirT 0:c00e6c923941 206 GUI_HMEM hBmpLine;
NirT 0:c00e6c923941 207 /* Common */
NirT 0:c00e6c923941 208 U8 TransformationRequired;
NirT 0:c00e6c923941 209 U8 IsProgressive; /* Flag is set to 1 if JPEG is progressive */
NirT 0:c00e6c923941 210 U8 ScanType; /* Gray, Yh1v1, Yh1v2, Yh2v1, Yh2v2 */
NirT 0:c00e6c923941 211 int MaxMCUsPerRow; /* Maximum number of MCUs per row */
NirT 0:c00e6c923941 212 int MaxMCUsPerCol; /* Maximum number of MCUs per column */
NirT 0:c00e6c923941 213 int MaxBlocksPerMCU; /* Maximum number of blocks per MCU */
NirT 0:c00e6c923941 214 int MaxBlocksPerRow; /* Maximum number of blocks per row */
NirT 0:c00e6c923941 215 int MaxMCU_xSize; /* MCU's max. X size in pixels */
NirT 0:c00e6c923941 216 int MaxMCU_ySize; /* MCU's max. Y size in pixels */
NirT 0:c00e6c923941 217 int DestBytesPerPixel; /* 4 (RGB) or 1 (Y) */
NirT 0:c00e6c923941 218 int DestBytesPerScanline; /* Rounded up */
NirT 0:c00e6c923941 219 int RealDestBytesPerScanline; /* Actual bytes */
NirT 0:c00e6c923941 220 int EOB_Run; /* 'End Of Band' run */
NirT 0:c00e6c923941 221 int RestartInterval;
NirT 0:c00e6c923941 222 int RestartsLeft;
NirT 0:c00e6c923941 223 int NextRestartNum;
NirT 0:c00e6c923941 224 int MCUsPerRow;
NirT 0:c00e6c923941 225 int MCUsPerCol;
NirT 0:c00e6c923941 226 int NumBlocksPerMCU;
NirT 0:c00e6c923941 227 int aMCU_Org[MAX_BLOCKSPERMCU];
NirT 0:c00e6c923941 228 /* Block buffer */
NirT 0:c00e6c923941 229 GUI_HMEM hBlocks;
NirT 0:c00e6c923941 230 GUI_HMEM hBlockMaxZagSet;
NirT 0:c00e6c923941 231 /* Sample buffer */
NirT 0:c00e6c923941 232 GUI_HMEM hSampleBuf;
NirT 0:c00e6c923941 233 U8 * pSampleBuf;
NirT 0:c00e6c923941 234 /* Status */
NirT 0:c00e6c923941 235 int TotalLinesLeft; /* Total number of lines left in image */
NirT 0:c00e6c923941 236 int MCULinesLeft; /* Total number of lines left in current MCU */
NirT 0:c00e6c923941 237 /* Output buffer(s) */
NirT 0:c00e6c923941 238 GUI_HMEM hScanLine0; /* Buffer 0 */
NirT 0:c00e6c923941 239 GUI_HMEM hScanLine1; /* Buffer 1, only used for V2 sampling factors */
NirT 0:c00e6c923941 240 U8 BufferIndex;
NirT 0:c00e6c923941 241 /* Arrays used for converting YCbCr to RGB */
NirT 0:c00e6c923941 242 int aCRR[256];
NirT 0:c00e6c923941 243 int aCBB[256];
NirT 0:c00e6c923941 244 I32 aCRG[256];
NirT 0:c00e6c923941 245 I32 aCBG[256];
NirT 0:c00e6c923941 246 /* Banding */
NirT 0:c00e6c923941 247 U8 BandingRequired; /* Flag if banding is required */
NirT 0:c00e6c923941 248 unsigned NumBands; /* Number of required bands for drawing the complete frame */
NirT 0:c00e6c923941 249 int NumBlocksPerBand; /* Number of vertical blocks per band */
NirT 0:c00e6c923941 250 int FirstBlockOfBand;
NirT 0:c00e6c923941 251 int aFirstBlockOfBand[MAX_COMPONENTS];
NirT 0:c00e6c923941 252 int bpp;
NirT 0:c00e6c923941 253 };
NirT 0:c00e6c923941 254
NirT 0:c00e6c923941 255 /*********************************************************************
NirT 0:c00e6c923941 256 *
NirT 0:c00e6c923941 257 * Private interface
NirT 0:c00e6c923941 258 *
NirT 0:c00e6c923941 259 **********************************************************************
NirT 0:c00e6c923941 260 */
NirT 0:c00e6c923941 261 int GUI_JPEG__AllocBandingCoeffBuffer (GUI_HMEM hContext);
NirT 0:c00e6c923941 262 int GUI_JPEG__DecodeLine (GUI_JPEG_DCONTEXT * pContext);
NirT 0:c00e6c923941 263 int GUI_JPEG__DecodeProgressiveBanding(GUI_JPEG_DCONTEXT * pContext);
NirT 0:c00e6c923941 264 void GUI_JPEG__Free (GUI_JPEG_DCONTEXT * pContext);
NirT 0:c00e6c923941 265 GUI_COLOR GUI_JPEG__GetColorGray (const U8 ** ppData, unsigned SkipCnt);
NirT 0:c00e6c923941 266 GUI_COLOR GUI_JPEG__GetColorRGB (const U8 ** ppData, unsigned SkipCnt);
NirT 0:c00e6c923941 267 int GUI_JPEG__GetData (void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off);
NirT 0:c00e6c923941 268 int GUI_JPEG__InitDraw (GUI_HMEM hContext);
NirT 0:c00e6c923941 269 int GUI_JPEG__ReadUntilSOF (GUI_HMEM hContext);
NirT 0:c00e6c923941 270 void GUI_JPEG__SetNextBand (GUI_JPEG_DCONTEXT * pContext);
NirT 0:c00e6c923941 271 int GUI_JPEG__SkipLine (GUI_JPEG_DCONTEXT * pContext);
NirT 0:c00e6c923941 272 int GUI_JPEG__GetInfoEx (GUI_HMEM hContext, GUI_JPEG_INFO * pInfo);
NirT 0:c00e6c923941 273
NirT 0:c00e6c923941 274 #endif