⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpegfmt.h

📁 ct952 source code use for Digital Frame Photo
💻 H
📖 第 1 页 / 共 3 页
字号:
    DWORD dwJPEG_COEFFBUFF_ADDR0;    DWORD dwJPEG_COEFFBUFF_ADDR1;    DWORD dwJPEG_COEFFBUFF_SIZE;    DWORD dwJPEG_DECBUFF_ADDR0;    DWORD dwJPEG_DECBUFF_ADDR1;    //decoding buffer size for BASELINE    DWORD dwJPEG_DECBUFF_SIZE_BASE;    //decoding buffer size for PROGRESSIVE: aligned to 32x    DWORD dwJPEG_DECBUFF_SIZE_PROG;    //for 16M Thumbnail mode    DWORD dwJPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_BASE;    DWORD dwJPEGFMT_BUFF_SIZE_THUMBNAIL_DEC_PROG;    DWORD dwJPEG_COEFFBUFF_SIZE_THUMBNAIL;    DWORD dwJPEGFMT_BUFF_TEMP1;        //for 64M extra buffer    DWORD dwJPEG_DECBUFF_ADDR;    DWORD dwJPEG_DECBUFF_SIZE;    DWORD dwJPEG_EXTRABUFF_END;    DWORD dwJPEG_DISPBUF_SIZE;    DWORD dwJPEG_DISPBUF_SIZE_Y;    WORD wJPEG_DISPBUF_WIDTH;    WORD wJPEG_DISPBUF_HEIGHT;    WORD wDefineMaxOrigWidth ;    WORD wDefineMaxOrigHeight;    WORD wIsDisplayFullScreen;    volatile WORD wDRAMType;    } JPEG_BUFFER_SET, *PJPEG_BUFFER_SET;typedef struct tagJPEG_SETDECODE_SC{    DWORD dwdecode_buffer_size;    WORD wdecode_strip_y_nr;//record one picture need to segment how many strip to do decoding SC for Y    //WORD wdecode_strip_uv_nr;//record one picture need to segment how many strip to do decoding SC for UV    WORD wdecode_pixel_y_nr;//record one strip need to segment how many pixel to do decoding SC for Y     //WORD wdecode_pixel_uv_nr;//record one picture need to segment how many pixel to do decoding SC for UV    WORD wdecode_Y_SCratio_v;    //WORD wdecode_UV_SCratio_v;    WORD wdecode_Y_SCratio_h;    WORD wdecode_dest_width;    WORD wdecode_dest_height;    WORD wdecode_orig_width;    WORD wdecode_orig_height;    WORD wMaxOrigWidth;    WORD wMaxOrigHeight;    //WORD wcounter_picture_height;        }JPEG_SETDECODE_SC, *PJPEG_SETDECODE_SC;typedef struct tagJPEG_SET_SC_ZONE{    DWORD dwSrcAddressY;    DWORD dwSrcAddressUV;    DWORD dwDstAddressY;    DWORD dwDstAddressUV;    WORD wSrc_width;    WORD wSrc_height;    WORD dest_width;    WORD dest_height;    //WORD WSrc_strip;}JPEG_SET_SC_ZONE, *PJPEG_SET_SC_ZONE;typedef struct tagJPEG_CALC_MC_SCALE_SET{    DWORD DecodedBufferSize;    DWORD dwStripDecodedSize;    WORD wMaxDecodingHeight;    WORD wPicWidth;    WORD wPicHeight;}JPEG_CALC_MC_SCALE_SET, *PJPEG_CALC_MC_SCALE_SET;//#ifdef JPEG_USE_TWO_PROCESSOR//#ifdef CT909R_JPEG_AND_MP3#if defined(JPEG_USE_TWO_PROCESSOR) || defined (CT909R_JPEG_AND_MP3)//senshong:check two processor status//processor 2 start decoder header#define JPEG_STATUS_PARSE_HEADER_ST     4//processor 2 start decoder vld and IDCT#define JPEG_STATUS_DEC_ST                        5//JPEG decoder status for VLD, IDCT and JPU scale#define JPEG_WAIT_DEC 0#define JPEG_WAIT_JPU 1#define JPEG_DEC_FINISH 2typedef struct tagJPEGFMT_DECODE_INFO{    WORD wTq[4];    WORD wSampleFactor_h[4];    WORD wSampleFactor_v[4];    WORD wRealSampleType;    WORD wScaleRatioH;    WORD wScaleRatioV;    WORD wScaleRatioExpH;    WORD wScaleRatioExpV;    WORD wdec_pixel_y_nr;    WORD wAdjustScaleRatio;    WORD wMaxHorizontalFreq;    WORD wMaxVerticalFreq;    WORD wMcuHeight;    WORD wMcuWidth;    WORD wMcuRows ;    WORD wMcuCols ;    WORD wJPEGFMTFrameHeight ;    WORD wJPEGFMTFrameWidth ;    WORD wJPEGFMTExifImageWidth ;    WORD wJPEGFMTExifImageHeight;    WORD wComponentCount;    WORD wJPEGFMTIsProgressive;    WORD wReservedCoeffNr;    WORD wIsGetJPEGThumbSize;    WORD wIsCTKEncodeInfo;    CHAR  cJPEGFMTExifDate[11];    BYTE bMcScale;    BYTE bMcScale_UV;    BYTE  bNeedMcScaleFormatTransform;    }JPEGFMT_DECODE_INFO,*PJPEGFMT_DECODE_INFO;#endif//#ifndef JPEG_USE_TWO_PROCESSOR// *** Function Prototype Declaration ***// Utility Functions//#ifdef USE_CT909_VLD    // Get datastream from VLD    //static DWORD Get_Bits(DWORD N);        // Use macro substitution for utility functions    //    #define GETBYTE()       _JPEGFMT_GetBits(8)    #define GETWORD()       _JPEGFMT_GetBits(16)    //#define GETBITS(x)    (BYTE)_JPEGFMT_GetBits(x)    //#define NEXTBIT()     (BYTE)_JPEGFMT_GetBits(1)    //#define BYPASS(x)     _JPEGFMT_GetBits(x << 3)    #define _JPEGFMT_MOREDATA()      1#else    #define JPEGSRC     (0x40500000)    #define JPEGEOF     (0x40800000)    //#define JPEGDST     (0x40122000)    // Use self-maintained pointers to access datastream from specific    // memory address    BYTE GETBYTE();    WORD GETWORD();    BYTE _JPEGFMT_MOREDATA();    //VOID BYPASS(DWORD count);    //BYTE NEXTBIT(VOID);    //BYTE GETBITS(BYTE count);    //VOID EXITBITMODE(VOID);    VOID ENTERBITMODE(BYTE initialposition);#endifPREFIX_INLINE WORD _JPEGFMT_NEXTBIT(VOID);PREFIX_INLINE WORD _JPEGFMT_GETBITS(WORD count);#ifdef TABLE_LOOKUP_VLD    WORD _JPEGFMT_SHOWBYTE(VOID);#endifVOID _JPEGFMT_EXITBITMODE(VOID);VOID _JPEGFMT_BYPASS(DWORD count);PREFIX_INLINE SHORT _JPEGFMT_EXTEND(SHORT vv, SHORT tt);//#endif//#ifdef CT909P_IC_SYSTEM#if defined(CT909P_IC_SYSTEM ) || defined(CT909G_IC_SYSTEM)WORD JPEGFMTDecodeGo(VOID);#ifdef SUPPORT_MOTION_JPEGDWORD _JPEGFMT_NextStartCode(VOID);#endif//#ifdef SUPPORT_MOTION_JPEG#endif// calculate IDCT/MC scaling ratio//senshong2.16:revise BYTE _JPEGFMT_CalcMcScaleRatio(VOID) to BYTE _JPEGFMT_CalcMcScaleRatio(WORD wParseType)//Because 16M must know current type whether is thumbnail mode.//BYTE _JPEGFMT_CalcMcScaleRatio(WORD wParseType);WORD _JPEGFMT_CalcMcScaleRatio(WORD wParseType);//BYTE _JPEGFMT_CalcMcScaleRatio(VOID);// calculate target width and height of JPU scaling//BYTE _JPEGFMT_CalcJpuAlignedLength(WORD *dstAlignedWidth, WORD *dstAlignedHeight);// do 1st scaling down from Forg-3/Forg-4 to Forg-1WORD _JPEGFMT_FirstScaleToForg(WORD forg_width, WORD forg_height);// For JPEG DECODER//VOID _JPEGFMT_InitJpegParser(VOID);// Read header only (from SOI to frame header finished)// bType: JPEG_PARSE_TYPE_NORMAL or JPEG_PARSE_TYPE_THUMBNAILWORD _JPEGFMT_ReadImageHeader(WORD wParseType);// Read picture contents (from end of frame header to EOI)WORD _JPEGFMT_ReadImageContent(VOID);//VOID _JPEGFMT_ReadImage(VOID);VOID _JPEGFMT_ReadStreamHeader(VOID);VOID _JPEGFMT_ReadMarker(WORD wParseType);//senshong2.16:revise _JPEGFMT_ReadFrameHeader(void) to _JPEGFMT_ReadFrameHeader(WORD wParseType) //Because 16M must know current type whether is thumbnail mode.//VOID _JPEGFMT_ReadFrameHeader(VOID);VOID _JPEGFMT_ReadFrameHeader(WORD wParseType);//VOID _JPEGFMT_ReadFrameHeader(VOID);// DQTVOID _JPEGFMT_ReadQuantizationTable(VOID);VOID _JPEGFMT_ReadContentsOfDQT(PQUANTTAB table, WORD precision);// DHT//VOID _JPEGFMT_ReadHuffmanTable(VOID);//WORD _JPEGFMT_ReadContentsOfDHT(PHUFFDECODER table);VOID _JPEGFMT_ReadHuffmanTable(VOID (*Huff_wait_vdFifo)(DWORD ), DWORD (*Huff_getbit)(DWORD));WORD _JPEGFMT_ReadContentsOfDHT(PHUFFDECODER table,VOID (*Huff_wait_vdFifo)(DWORD ), DWORD (*Huff_getbit)(DWORD));VOID _JPEGFMT_MakeTable(PHUFFDECODER table, BYTE huffbits[JPEGMAXHUFFMANCODELENGTH]);// SOS and ECSVOID _JPEGFMT_ReadScanHeader(VOID);VOID _JPEGFMT_InitComponentMembers(PCOMPONENT pcomp, WORD bnum);VOID _JPEGFMT_ReadSequentialScanData(VOID);VOID _JPEGFMT_ReadSequentialInterleavedScan(VOID);VOID _JPEGFMT_ReadSequentialNonInterleavedScan(VOID);VOID _JPEGFMT_ProcessRestartMarker(VOID);WORD _JPEGFMT_DecodeSequential(PCOMPONENT pcomp, WORD mcurow, WORD mcucol, WORD bnum);WORD _JPEGFMT_Decode(PHUFFDECODER codec);// DRIVOID _JPEGFMT_ReadRestartInterval(VOID);// Access current (protected) buffer for JPEG decoder//senshong2.16:revise _JPEGFMT_SetCurrBuffer(WORD wCurrBuff) to _JPEGFMT_SetCurrBuffer(WORD wCurrBuff, WORD wParseType)//Because 16M must know current type whether is thumbnail mode.VOID _JPEGFMT_SetCurrBuffer(WORD wCurrBuff, WORD wParseType);//VOID _JPEGFMT_SetCurrBuffer(WORD wCurrBuff);WORD _JPEGFMT_GetCurrBuffer(VOID);//tommy0.68#define JPEGFMT_ENDIAN_BIG          0#define JPEGFMT_ENDIAN_LITTLE       1#define JPEGFMT_TIFF_DATETIME       (0x0132)#define JPEGFMT_TIFF_EXIFIFD        (0x8769)#define JPEGFMT_EXIF_IMAGEWIDTH     (0xa002)#define JPEGFMT_EXIF_IMAGEHEIGHT    (0xa003)#define JPEGFMT_JPEG_IFOFFSET       (0x0201)#define JPEGFMT_JPEG_IFBYTECOUNT    (0x0202)#define JPEGFMT_THUMB_COMPRESSION   (0x0103)typedef union{    BYTE  byte4[4];    DWORD dword;} JPEGFMT_BYTE4, *PJPEGFMT_BYTE4;typedef union{    BYTE byte2[2];    WORD word;} JPEGFMT_BYTE2, *PJPEGFMT_BYTE2;WORD  _JPEGFMT_SwapByte2(WORD in_value);DWORD _JPEGFMT_SwapByte4(DWORD in_value);WORD  _JPEGFMT_ReadApp1Header(VOID);VOID  _JPEGFMT_ReadExif(WORD wParseType);WORD  _JPEGFMT_ReadExifTag(VOID);//tommy0.81VOID _JPEGFMT_ReadExifPrivateIFD(VOID);VOID _JPEGFMT_ReadExifIFD1(WORD wParseType, DWORD dwOffsetIFD1);//tommy0.91VOID _JPEGFMT_ReadExifDate(VOID);//tommy0.95: support progressive JPEG decoding// (functions from jpgdecoder.cpp)VOID _JPEGFMT_ReadProgressiveScanData(WORD sss, WORD sse, WORD sah, WORD sal);VOID _JPEGFMT_ReadDcFirst (WORD ssa);VOID _JPEGFMT_ReadDcRefine(WORD ssa);VOID _JPEGFMT_ReadAcFirst (WORD sss, WORD sse, WORD ssa);VOID _JPEGFMT_ReadAcRefine(WORD sss, WORD sse, WORD ssa);VOID _JPEGFMT_UpdateImage(VOID);// (functions from jpgdecodercomponent.cpp)VOID _JPEGFMT_DecodeDcFirst (PCOMPONENT pcomp, WORD row, WORD col, WORD ssa);VOID _JPEGFMT_DecodeDcRefine(PCOMPONENT pcomp, WORD row, WORD col, WORD ssa);VOID _JPEGFMT_DecodeAcFirst (PCOMPONENT pcomp, WORD row, WORD col, WORD sss, WORD sse, WORD ssa);VOID _JPEGFMT_DecodeAcRefine(PCOMPONENT pcomp, WORD row, WORD col, WORD sss, WORD sse, WORD ssa);VOID _JPEGFMT_RefineAcCoefficient(WORD ssa, SHORT *value);VOID _JPEGFMT_ExecProgressiveIDCT(PCOMPONENT pcomp, WORD mcurow, WORD mcucol, WORD bcomp, DWORD index);// (other functions)VOID _JPEGFMT_CalcReservedCoeffNumber(PCOMPONENT pcomp, DWORD buffsize);//senshong2.16:revise _JPEGFMT_ClearCoeffBuffer(VOID) to _JPEGFMT_ClearCoeffBuffer(WORD wParseType)//Because 16M must know current type whether is thumbnail mode.VOID _JPEGFMT_ClearCoeffBuffer(WORD wParseType);//VOID _JPEGFMT_ClearCoeffBuffer(VOID);VOID _JPEGFMT_ClearBuffBeforeDecode(VOID);//tommy1.05: fixed calculationDWORD _JPEGFMT_CalcDecodingBufferSize(WORD ratioH, WORD ratioV);//tommy1.10WORD _JPEGFMT_HasJpegThumb(VOID);//DWORD JPEG_FrameBufferSetting(DWORD dwFramebufferStart, DWORD dwFramebufferEnd, DWORD dwExtrabufferStart, DWORD dwExtrabufferEnd ,WORD wDRAMType);//senshong2.17 seting frame bufferWORD JPEG_FrameBufferSetting(PJPEG_BUFFER_SET pFrameBufferSeting);DWORD JPEG_SetFrameBufferAddress(DWORD dwFramebufferStart, DWORD dwFramebufferEnd, DWORD dwOrigBufferStart, DWORD dwOrigBufferEnd ,WORD wDRAMType);//senshong2.18: add new code to solve to qualityVOID _JPEGFMT_SetDecodingBuffer(PCOMPONENT pcomp, WORD bnum);WORD _JPEGFMT_CalcDecodingSCRatio(WORD MC_ratioH, WORD MC_ratioV, PJPEG_CALC_MC_SCALE_SET pJPEG_McScaleSet);WORD _JPEGFMT_CalcDecodingStrip(WORD SC_ratio_v, WORD MC_ratioV, WORD picWidth, WORD picHeight, DWORD DecodedBufferSize);WORD _JPEGFMT_DecodingSC(PJPEG_SET_SC_ZONE PDec_SC_zone);WORD _JPEGFMT_SetScalingBufferAddress(PJPEG_SET_SC_ZONE PAddr_zone);WORD _JPEGFMT_CheckSCHorizontalStep(WORD realWidth, WORD scaledWidth, WORD wsample_type);WORD _JPEGFMT_UseJPUMovePictureData(WORD scaledWidth, WORD scaledHeight);//senshong: Strip scale Y componentWORD _JPEGFMT_StripScaleYComponent(PJPEG_SET_SC_ZONE PDec_SC_zone);//senshong: Strip scale UV compomentWORD _JPEGFMT_StripScaleUVComponent(PJPEG_SET_SC_ZONE PDec_SC_zone);WORD _JPEGFMT_JPUScaling(WORD wSrcWidth, WORD wSrcHeight, WORD wIsCopyPicture);//WORD _JPEGFMT_CleanUVFrameBuffer(PJPEG_SET_SC_ZONE PClean_buffer_zone, WORD wSample_type);#ifdef SUPPORT_MOTION_JPEGWORD _JPEGFMT_UVFormatTransform(PJPEG_SET_SC_ZONE PDec_SC_zone);DWORD _JPEGFMT_GetHuffBit(DWORD n);VOID _JPEGFMT_wait_dummy_vdfifo(DWORD n);WORD _JPEGFMT_CalcMJPEGMcScaleRatio(VOID);VOID _JPEGFMT_InitHuffmanTable(VOID);#endif#ifdef CT909R_JPEG_AND_MP3//senshong: add API to support jpeg+MP3, this version only support Ct909RWORD _JPEGFMT_ReadImageHeaderForProcessor2(WORD wParseType);WORD _JPEGFMT_ReadImageContentForProcessor2(VOID);VOID _JPEGFMT_ReadSequentialScanForProcressor2(VOID);#endifWORD _JPEGFMT_ReadThumbMarker(VOID);#ifdef __cplusplus}#endif //__cplusplus#endif //__JPEG_FORMAT_H__// END OF FILE (jpegfmt.h)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -