123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- /*------------------------------------------------------------------------------
- -- --
- -- This software is confidential and proprietary and may be used --
- -- only as expressly authorized by a licensing agreement from --
- -- --
- -- Hantro Products Oy. --
- -- --
- -- (C) COPYRIGHT 2006 HANTRO PRODUCTS OY --
- -- ALL RIGHTS RESERVED --
- -- --
- -- The entire notice above must be reproduced --
- -- on all copies and should not be removed. --
- -- --
- --------------------------------------------------------------------------------
- --
- -- Description : Jpeg Decoder Container
- --
- --------------------------------------------------------------------------------
- --
- -- Version control information, please leave untouched.
- --
- -- $RCSfile: jpegdeccontainer.h,v $
- -- $Revision: 1.22 $
- -- $Date: 2009/02/16 08:51:06 $
- --
- ------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- Table of contents
-
- 1. Include headers
- 2. Module defines
- 3. Data types
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- #ifndef JPEGDECCONT_H
- #define JPEGDECCONT_H
- /*------------------------------------------------------------------------------
- 1. Include headers
- ------------------------------------------------------------------------------*/
- #include "basetype.h"
- #include "jpegdecapi.h"
- #include "dwl.h"
- #include "deccfg.h"
- #include "decppif.h"
- /*------------------------------------------------------------------------------
- 2. Module defines
- ------------------------------------------------------------------------------*/
- #ifdef _ASSERT_USED
- #include <assert.h>
- #endif
- /* macro for assertion, used only if compiler flag _ASSERT_USED is defined */
- #ifdef _ASSERT_USED
- #define ASSERT(expr) assert(expr)
- #else
- #define ASSERT(expr)
- #endif
- #define MIN_NUMBER_OF_COMPONENTS 1
- #define MAX_NUMBER_OF_COMPONENTS 3
- #define JPEGDEC_X170_MIN_BUFFER 5120
- #define JPEGDEC_X170_MAX_BUFFER 16776960
- #define JPEGDEC_MAX_SLICE_SIZE 4096
- #define JPEGDEC_TABLE_SIZE 544
- #define JPEGDEC_MIN_WIDTH 48
- #define JPEGDEC_MIN_HEIGHT 48
- #define JPEGDEC_MAX_WIDTH 4672
- #define JPEGDEC_MAX_HEIGHT 4672
- #define JPEGDEC_MAX_PIXEL_AMOUNT 16370688
- #define JPEGDEC_MAX_WIDTH_8190 8176
- #define JPEGDEC_MAX_HEIGHT_8190 8176
- #define JPEGDEC_MAX_PIXEL_AMOUNT_8190 66846976
- #define JPEGDEC_MAX_SLICE_SIZE_8190 8100
- #define JPEGDEC_MAX_WIDTH_TN 256
- #define JPEGDEC_MAX_HEIGHT_TN 256
- #define JPEGDEC_YUV400 0
- #define JPEGDEC_YUV420 2
- #define JPEGDEC_YUV422 3
- #define JPEGDEC_YUV444 4
- #define JPEGDEC_YUV440 5
- #define JPEGDEC_YUV411 6
- #define JPEGDEC_BASELINE_TABLE_SIZE 544
- #define JPEGDEC_PROGRESSIVE_TABLE_SIZE 576
- #define JPEGDEC_QP_BASE 32
- #define JPEGDEC_AC1_BASE 48
- #define JPEGDEC_AC2_BASE 88
- #define JPEGDEC_DC1_BASE 129
- #define JPEGDEC_DC2_BASE 132
- #define JPEGDEC_DC3_BASE 135
- /* progressive */
- #define JPEGDEC_COEFF_SIZE 96
- /*------------------------------------------------------------------------------
- 3. Data types
- ------------------------------------------------------------------------------*/
- typedef struct
- {
- u32 C; /* Component id */
- u32 H; /* Horizontal sampling factor */
- u32 V; /* Vertical sampling factor */
- u32 Tq; /* Quantization table destination selector */
- } Components;
- typedef struct
- {
- u8 *pStartOfStream;
- u8 *pCurrPos;
- u32 streamBus;
- u32 bitPosInByte;
- u32 streamLength;
- u32 readBits;
- u32 appnFlag;
- u32 thumbnail;
- u32 returnSosMarker;
- } StreamStorage;
- typedef struct
- {
- u8 *pStartOfImage;
- u8 *pLum;
- u8 *pCr;
- u8 *pCb;
- u32 imageReady;
- u32 headerReady;
- u32 size;
- u32 sizeLuma;
- u32 sizeChroma;
- u32 ready;
- u32 columns[MAX_NUMBER_OF_COMPONENTS];
- u32 pixelsPerRow[MAX_NUMBER_OF_COMPONENTS];
- } ImageData;
- typedef struct
- {
- u32 Lf;
- u32 P;
- u32 Y;
- u32 hwY;
- u32 X;
- u32 hwX;
- u32 Nf; /* Number of components in frame */
- u32 codingType;
- u32 numMcuInFrame;
- u32 numMcuInRow;
- u32 mcuNumber;
- u32 nextRstNumber;
- u32 Ri;
- u32 driPeriod;
- u32 block;
- u32 row;
- u32 col;
- u32 cIndex;
- u32 *pBuffer;
- u32 bufferBus;
- i32 *pBufferCb;
- i32 *pBufferCr;
- DWLLinearMem_t pTableBase;
- u32 numBlocks[MAX_NUMBER_OF_COMPONENTS];
- u32 blocksPerRow[MAX_NUMBER_OF_COMPONENTS];
- u32 useAcOffset[MAX_NUMBER_OF_COMPONENTS];
- Components component[MAX_NUMBER_OF_COMPONENTS];
- } FrameInfo;
- typedef struct
- {
- u32 Ls;
- u32 Ns;
- u32 Cs[MAX_NUMBER_OF_COMPONENTS]; /* Scan component selector */
- u32 Td[MAX_NUMBER_OF_COMPONENTS]; /* Selects table for DC */
- u32 Ta[MAX_NUMBER_OF_COMPONENTS]; /* Selects table for AC */
- u32 Ss;
- u32 Se;
- u32 Ah;
- u32 Al;
- u32 index;
- i32 numIdctRows;
- i32 pred[MAX_NUMBER_OF_COMPONENTS];
- } ScanInfo;
- typedef struct
- {
- u32 sliceHeight;
- u32 amountOfQTables;
- u32 yCbCrMode;
- u32 yCbCr422;
- u32 column;
- u32 X;
- u32 Y;
- u32 memSize;
- u32 SliceCount;
- u32 SliceReadyForPause;
- u32 SliceMBCutValue;
- u32 pipeline;
- u32 userAllocMem;
- u32 sliceMbSetValue;
- u32 timeout;
- u32 rlcMode;
- u32 lumaPos;
- u32 chromaPos;
- u32 sliceStartCount;
- u32 amountOfSlices;
- u32 noSliceIrqForUser;
- u32 sliceLimitReached;
- u32 inputBufferEmpty;
- u32 fillRight;
- u32 fillBottom;
- u32 streamEnd;
- u32 streamEndFlag;
- u32 inputBufferLen;
- u32 inputStreaming;
- u32 decodedStreamLen;
- u32 init;
- u32 initThumb;
- u32 initBufferSize;
- i32 dcRes[MAX_NUMBER_OF_COMPONENTS];
- DWLLinearMem_t outLuma;
- DWLLinearMem_t outChroma;
- DWLLinearMem_t outChroma2;
- DWLLinearMem_t givenOutLuma;
- DWLLinearMem_t givenOutChroma;
- DWLLinearMem_t givenOutChroma2;
- i32 pred[MAX_NUMBER_OF_COMPONENTS];
- /* progressive parameters */
- u32 nonInterleaved;
- u32 componentId;
- u32 operationType;
- u32 operationTypeThumb;
- u32 progressiveScanReady;
- u32 nonInterleavedScanReady;
- u32 allocated;
- u32 yCbCrModeOrig;
- u32 getInfoYCbCrMode;
- u32 components[MAX_NUMBER_OF_COMPONENTS];
- DWLLinearMem_t pCoeffBase;
- u32 fillX;
- u32 fillY;
- u32 progressiveFinish;
- u32 pfCompId;
- u32 pfNeeded[MAX_NUMBER_OF_COMPONENTS];
- DWLLinearMem_t tmpStrm;
- } DecInfo;
- typedef struct
- {
- DWLLinearMem_t outLumaBuffer;
- DWLLinearMem_t outChromaBuffer;
- DWLLinearMem_t outChromaBuffer2;
- } JpegAsicBuffers;
- typedef struct
- {
- u32 bits[16];
- u32 *vals;
- u32 tableLength;
- u32 start;
- u32 last;
- } VlcTable;
- typedef struct
- {
- u32 Lh;
- VlcTable acTable0;
- VlcTable acTable1;
- VlcTable acTable2;
- VlcTable acTable3;
- VlcTable dcTable0;
- VlcTable dcTable1;
- VlcTable dcTable2;
- VlcTable dcTable3;
- VlcTable *table;
- } HuffmanTables;
- typedef struct
- {
- u32 Lq; /* Quantization table definition length */
- u32 table0[64];
- u32 table1[64];
- u32 table2[64];
- u32 table3[64];
- u32 *table;
- } QuantTables;
- typedef struct
- {
- u32 jpegRegs[DEC_X170_REGISTERS];
- u32 asicRunning;
- StreamStorage stream;
- FrameInfo frame;
- ImageData image;
- ScanInfo scan;
- DecInfo info;
- HuffmanTables vlc;
- QuantTables quant;
- u32 tmpData[64];
- u32 is8190;
- u32 fuseBurned;
- u32 minSupportedWidth;
- u32 minSupportedHeight;
- u32 maxSupportedWidth;
- u32 maxSupportedHeight;
- u32 maxSupportedPixelAmount;
- u32 maxSupportedSliceSize;
- u32 extensionsSupported;
- JpegAsicBuffers asicBuff;
- DecPpInterface ppControl;
- DecPpQuery ppConfigQuery; /* Decoder asks pp info about setup, info stored here */
- u32 ppStatus;
- const void *dwl; /* DWL instance */
- const void *ppInstance;
- void (*PPRun) (const void *, DecPpInterface *);
- void (*PPEndCallback) (const void *);
- void (*PPConfigQuery) (const void *, DecPpQuery *);
- } JpegDecContainer;
- /*------------------------------------------------------------------------------
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- #endif /* #endif JPEGDECDATA_H */
|