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

📄 jpeglib.h

📁 基于Linux的ffmepg decoder
💻 H
📖 第 1 页 / 共 4 页
字号:
  //  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables *///  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables *///  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */  int num_scans;		/* # of entries in scan_info array */  const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */  /* The default value of scan_info is NULL, which causes a single-scan   * sequential JPEG file to be emitted.  To create a multi-scan file,   * set num_scans and scan_info to point to an array of scan definitions.   */  boolean raw_data_in;		/* TRUE=caller supplies downsampled data */  boolean arith_code;		/* TRUE=arithmetic coding, FALSE=Huffman */  boolean optimize_coding;	/* TRUE=optimize entropy encoding parms */  boolean CCIR601_sampling;	/* TRUE=first samples are cosited */  int smoothing_factor;		/* 1..100, or 0 for no input smoothing */  J_DCT_METHOD dct_method;	/* DCT algorithm selector */  /* The restart interval can be specified in absolute MCUs by setting   * restart_interval, or in MCU rows by setting restart_in_rows   * (in which case the correct restart_interval will be figured   * for each scan).   */  unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */  int restart_in_rows;		/* if > 0, MCU rows per restart interval */  /* Parameters controlling emission of special markers. */  boolean write_JFIF_header;	/* should a JFIF marker be written? */  UINT8 JFIF_major_version;	/* What to write for the JFIF version number */  UINT8 JFIF_minor_version;  /* These three values are not used by the JPEG code, merely copied */  /* into the JFIF APP0 marker.  density_unit can be 0 for unknown, */  /* 1 for dots/inch, or 2 for dots/cm.  Note that the pixel aspect */  /* ratio is defined by X_density/Y_density even when density_unit=0. */  UINT8 density_unit;		/* JFIF code for pixel size units */  UINT16 X_density;		/* Horizontal pixel density */  UINT16 Y_density;		/* Vertical pixel density */  boolean write_Adobe_marker;	/* should an Adobe marker be written? */    /* State variable: index of next scanline to be written to   * jpeg_write_scanlines().  Application may use this to control its   * processing loop, e.g., "while (next_scanline < image_height)".   */  JDIMENSION next_scanline;	/* 0 .. image_height-1  */  /* Remaining fields are known throughout compressor, but generally   * should not be touched by a surrounding application.   */  /*   * These fields are computed during compression startup   */  boolean progressive_mode;	/* TRUE if scan script uses progressive mode */  int max_h_samp_factor;	/* largest h_samp_factor */  int max_v_samp_factor;	/* largest v_samp_factor */  JDIMENSION total_iMCU_rows;	/* # of iMCU rows to be input to coef ctlr */  /* The coefficient controller receives data in units of MCU rows as defined   * for fully interleaved scans (whether the JPEG file is interleaved or not).   * There are v_samp_factor * DCTSIZE sample rows of each component in an   * "iMCU" (interleaved MCU) row.   */    /*   * These fields are valid during any one scan.   * They describe the components and MCUs actually appearing in the scan.   */  int comps_in_scan;		/* # of JPEG components in this scan */  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];  /* *cur_comp_info[i] describes component that appears i'th in SOS */    JDIMENSION MCUs_per_row;	/* # of MCUs across the image */  JDIMENSION MCU_rows_in_scan;	/* # of MCU rows in the image */    int blocks_in_MCU;		/* # of DCT blocks per MCU */  int MCU_membership[C_MAX_BLOCKS_IN_MCU];  /* MCU_membership[i] is index in cur_comp_info of component owning */  /* i'th block in an MCU */  int Ss, Se, Ah, Al;		/* progressive JPEG parameters for scan */  /*   * Links to compression subobjects (methods and private variables of modules)   */  struct jpeg_comp_master * master;  struct jpeg_c_main_controller * main;  struct jpeg_c_prep_controller * prep;  struct jpeg_c_coef_controller * coef;  struct jpeg_marker_writer * marker;  struct jpeg_color_converter * cconvert;  struct jpeg_downsampler * downsample;  struct jpeg_forward_dct * fdct;  struct jpeg_entropy_encoder * entropy;  jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */  int script_space_size;};/* "Object" declarations for JPEG modules that may be supplied or called * directly by the surrounding application. * As with all objects in the JPEG library, these structs only define the * publicly visible methods and state variables of a module.  Additional * private fields may exist after the public ones. *//* Error handler object */struct jpeg_error_mgr {  /* Error exit handler: does not return to caller */  JMETHOD(void, error_exit, (j_common_ptr cinfo));  /* Conditionally emit a trace or warning message */  JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));  /* Routine that actually outputs a trace or error message */  JMETHOD(void, output_message, (j_common_ptr cinfo));  /* Format a message string for the most recent JPEG error or message */  JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));#define JMSG_LENGTH_MAX  200	/* recommended size of format_message buffer */  /* Reset error state variables at start of a new image */  JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));    /* The message ID code and any parameters are saved here.   * A message can have one string parameter or up to 8 int parameters.   */  int msg_code;#define JMSG_STR_PARM_MAX  80  union {    int i[8];    char s[JMSG_STR_PARM_MAX];  } msg_parm;    /* Standard state variables for error facility */    int trace_level;		/* max msg_level that will be displayed */    /* For recoverable corrupt-data errors, we emit a warning message,   * but keep going unless emit_message chooses to abort.  emit_message   * should count warnings in num_warnings.  The surrounding application   * can check for bad data by seeing if num_warnings is nonzero at the   * end of processing.   */  long num_warnings;		/* number of corrupt-data warnings */  /* These fields point to the table(s) of error message strings.   * An application can change the table pointer to switch to a different   * message list (typically, to change the language in which errors are   * reported).  Some applications may wish to add additional error codes   * that will be handled by the JPEG library error mechanism; the second   * table pointer is used for this purpose.   *   * First table includes all errors generated by JPEG library itself.   * Error code 0 is reserved for a "no such error string" message.   */  const char * const * jpeg_message_table; /* Library errors */  int last_jpeg_message;    /* Table contains strings 0..last_jpeg_message */  /* Second table can be added by application (see cjpeg/djpeg for example).   * It contains strings numbered first_addon_message..last_addon_message.   */  const char * const * addon_message_table; /* Non-library errors */  int first_addon_message;	/* code for first string in addon table */  int last_addon_message;	/* code for last string in addon table */};/* Progress monitor object */struct jpeg_progress_mgr {  JMETHOD(void, progress_monitor, (j_common_ptr cinfo));  long pass_counter;		/* work units completed in this pass */  long pass_limit;		/* total number of work units in this pass */  int completed_passes;		/* passes completed so far */  int total_passes;		/* total number of passes expected */};/* Data destination object for compression */struct jpeg_destination_mgr {  JOCTET * next_output_byte;	/* => next byte to write in buffer */  unsigned int * next_output_word;	/* => next word to write in buffer */									//pwhsu++:20040112  size_t free_in_buffer;	/* # of byte spaces remaining in buffer *///  JMETHOD(void, init_destination, (j_compress_ptr cinfo));  //JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));//  JMETHOD(void, term_destination, (j_compress_ptr cinfo));};/* Memory manager object. * Allocates "small" objects (a few K total), "large" objects (tens of K), * and "really big" objects (virtual arrays with backing store if needed). * The memory manager does not allow individual objects to be freed; rather, * each created object is assigned to a pool, and whole pools can be freed * at once.  This is faster and more convenient than remembering exactly what * to free, especially where malloc()/free() are not too speedy. * NB: alloc routines never return NULL.  They exit to error_exit if not * successful. */#define JPOOL_PERMANENT	0	/* lasts until master record is destroyed */#define JPOOL_IMAGE	1	/* lasts until done with image/datastream */#define JPOOL_NUMPOOLS	2typedef struct jvirt_sarray_control * jvirt_sarray_ptr;typedef struct jvirt_barray_control * jvirt_barray_ptr;struct jpeg_memory_mgr {  /* Method pointers */  JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,				size_t sizeofobject));  JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,				     size_t sizeofobject));  JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,				     JDIMENSION samplesperrow,				     JDIMENSION numrows));  JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,				      JDIMENSION blocksperrow,				      JDIMENSION numrows));  JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));  JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));  JMETHOD(void, self_destruct, (j_common_ptr cinfo));  /* Limit on memory allocation for this JPEG object.  (Note that this is   * merely advisory, not a guaranteed maximum; it only affects the space   * used for virtual-array buffers.)  May be changed by outer application   * after creating the JPEG object.   */  long max_memory_to_use;  /* Maximum allocation request accepted by alloc_large. */  long max_alloc_chunk;};//pwhsu++:20031020struct Compress_recon{		//pixel buffer	unsigned char PixelBuf[2][10][DCTSIZE2]; //internal MCU pixel buffer	//Quant table	UINT16 Inter_quant[4][DCTSIZE2]; //quant table	unsigned int QUTTBL[4][DCTSIZE2];		//pwhsu++:20040922		int Dma_bnum;  //Chage the internal mem for DMA pipeline	int Coef_bnum; //Chage the internal mem for COEF pipeline		int mcublkn;	int MCUnum;    //Total MCU number of the image   		int nCount;     //Count the MCU number for pipeline	};//typedef struct Compress_recon * Comp_recon_ptr;extern struct Compress_recon rinfo; //pwhsu++:20031020//pwhsu++: 20040107//--------------- Bank0 ---------------------//// storing the qcoeff and vlc output in MCUextern unsigned short *qcoef_b0 ;// DMA_commandextern unsigned int *DMA_COMMAND_local ;// vlc outputextern unsigned int *Vlcout ;//--------------- Bank1 ---------------------//// storing the pointer of each block in MCU (double buffer)extern unsigned char *cur_b0;extern unsigned char *cur_b1;extern unsigned char *cur_b2;extern unsigned char *cur_b3;extern unsigned char *cur_b4;extern unsigned char *cur_b5;extern unsigned char *cur_b6;extern unsigned char *cur_b7;extern unsigned char *cur_b8;extern unsigned char *cur_b9;extern const int stride_MCU ;extern const int stride_blk ;//--------------- Qtable ---------------------//// storing the qval and invqval in local mem (31k~32k)extern unsigned int *qtbl0 ;extern unsigned int *qtbl1 ;extern unsigned int *qtbl2 ;extern unsigned int *qtbl3 ;//--------------- Bank2,3 ---------------------//// storing the huffman table in local mem (32k~36k)extern unsigned int *huftbl0_ac ;extern unsigned int *huftbl1_ac ;extern unsigned int *huftbl0_dc ;extern unsigned int *huftbl1_dc ;

⌨️ 快捷键说明

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