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

📄 jpeg_usertypedefs.h

📁 ADI blackfin DSP的基于device friver的jpeg压缩算法
💻 H
字号:
/*****************************************************************************
Copyright(c) 2005 Analog Devices, Inc.  All Rights Reserved. This software is 
proprietary and confidential to Analog Devices, Inc. and its licensors.
******************************************************************************

$RCSfile: JPEG_UserTypedefs.h,v $
$Revision: 1.1 $
$Date: 2006/07/17 07:18:19 $

Project:	JPEG IMAGE CODEC
Title:		User-Defined Typedefs
Author(s):	D.G, A.S, P.G
Revised by:	

Description:
Header for all user-defined modules.
This header file is only for use with the user-defined data buffer module.
It must NOT be included by any JPEG Library module.

The data structures defined here are ONLY referenced in the user-defined 
modules: McuBuffer.c, BitsBuffer.c and MemAlloc.c.

References:
	
******************************************************************************
Tab Setting:			4
Target Processor:		Blackfin
Target Tools Revision:	ccblkfn		C/C++ compiler					6.3.0.0
						easmblkfn	BlackFin assembler				2.2.4.1
						elfar		ELF Librarian/Archive Utility	4.4.1.2
						linker		Linker							2.8.8.2
******************************************************************************

Modification History:
====================
$Log: JPEG_UserTypedefs.h,v $
Revision 1.1  2006/07/17 07:18:19  bmk
JPEG-MJPEG User access files


******************************************************************************/

#ifndef USER_TYPEDEFS_H
#define USER_TYPEDEFS_H

#include <stdio.h>
#include "IMG_common.h"				// for int32 and other typedefs
#include "JPEG_memalloc.h"




/****************************************************************************
 * 		Typedefs/Enumerations												*
 ****************************************************************************/


/*  Structure for Minimum Coded Unit (MCU) */
typedef struct 
{
    /*** Members common to encoder and decoder: ***/
    
	/******************************************************************************/
    /****** Do not modify those below without modifying FormMCU_BLACKFIN.asm! *****/
	int32		x;						// X
	int32		y;						// Y
	int32		frameWidth;				// Frame width
	int32		frameHeight;			// Frame Height
	uint8		*lumCurrPos;			// Actual location of Lum    
	uint8		*cbCurrPos;				// Actual location of Cb
	uint8		*crCurrPos;				// Actual location of Cr
	uint8		*frameCurrPos;			// Frame pointer
	int32		interLeaveFormat;		// Store Mcu Interleave format    
	int32		numberOfBuffers;		// Number of Mcu buffer available
	int32		mcuBufferIndex;			// Index to Mcu buffer to be read
	int32		processBufferIndex;		// Index to Mcu buffer to be processed
	int32		numberOfEmptyBuffers;	// Number of empty buffers
	uint8		*mcubuffer;				// Pointer to the linear Mcu buffers.
	int32		componentNumber;		// Progressive-mode component counter, Lum/Cb/Cr
	int32		mcuSize;				// Store number of data units for mcu
	int32		originalFramWidth;		// Store Original Width	
	int32		originalFramHeight;		// Store Original Height
    /****** Do not modify those above without modifying FormMCU_BLACKFIN.asm! *****/
	/******************************************************************************/
	
	/*** Members applicable to encoder only: ***/
	int         encodingMode;           // = SEQUENTIAL, PROGRESSIVE or LOSSLESS

	/* Members used for progressive mode: */
	int         progressiveBlockCount;          // MCU block counter
	int         progressiveBlockCount_next;     // MCU block counter, after the first scan
    int         progressiveFrameWidth_next;     // Frame width, after the first scan
	int         progressiveFrameHeight_next;    // Frame height, after the first scan

	int         component_next;         // Flag next component (for PROGRESSIVE & LOSSLESS only)
	
	/*** Members applicable to both encoder and decoder : ***/
	MemObjHandle	*ThisMemObj;		// memory allocated for tMcuBuffer itself
	MemObjHandle	*BufferMemObj;		// for buffer memory allocation

	int         is_encoder;             // Set to 1 for encoder; 0 for decoder

	/*** Members applicable to decoder only: ***/
	int         *mcuFree;               // MCU Buffer list: busy or free
	MemObjHandle	*mcuFreeMemObj;		// Memory for mcuFree
	int         mcuLossy;               // Store if lossless mode

} tMcuBuffer;



/* Structure for Bits Buffer (Encoder tPutBitsBuffer, renamed) */
typedef struct
{
    // Encoder-only members:
	uint8		*externalBuffer;        // Pointer to output buffer (ENCODER only)
	
	uint8		*desBuffer1;			// aligned to 4
	uint8		*desBuffer2;			// aligned to 4
	int32		externalBufferIndex;    // Pointer to unused part of externalBuffer
	int32		firstOrsecondBuffer;	// A bitsBufferIndex
	int32		nextBuffer;				// Flag to state that Request should use the next buffer.
	int32		numberOfBuffers;		// Number of bits buffers available
	int32		numberOfEmptyBuffers;	// Number of empty bits buffers
	int32		writeBufferCount;		// Buffer count (for dma check)
	int32		numBytes;               // Total number of bytes written TO buffer
	int32		dmaInitiateThreshold;

    // Decoder-only members:
    FILE        *ptrFile;				// Pointer to input file
    int         numBytesBuf_1;          // No of bytes read into buffer 1
    int         numBytesBuf_2;          // No of bytes read into buffer 2
    int         end_of_file;            // Set to 1 when end of input file reached

    // Encoder and Decoder Mem Alloc members:
	MemObjHandle	*ThisMemObj;		// memory allocated for tPutBitsBuffer itself
	MemObjHandle	*BufferMemObjs[2];	// for array of buffer memory allocations
	
	int         is_encoder;             // Set to 1 for encoder; 0 for decoder
} tBitsBuffer;


/* Structure for Temporary Bits Buffer */
typedef  tBitsBuffer   tTempBitsBuffer;


#endif // USER_TYPEDEFS_H

⌨️ 快捷键说明

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