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

📄 fiasco.h

📁 linux下将各类格式图片转换工具
💻 H
字号:
/* *  fiasco.h		 * *  Written by:		Ullrich Hafner *		 *  This file is part of FIASCO (獸籸actal 獻籱age 獳籲d 玈籩quence 獵O籨ec) *  Copyright (C) 1994-2000 Ullrich Hafner <hafner@bigfoot.de> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. *//* *  $Date: 2000/10/28 17:39:28 $ *  $Author: hafner $ *  $Revision: 5.6 $ *  $State: Exp $ */#undef __BEGIN_DECLS#undef __END_DECLS#ifdef __cplusplus# define __BEGIN_DECLS extern "C" {# define __END_DECLS }#else# define __BEGIN_DECLS /* empty */# define __END_DECLS /* empty */#endif#ifndef _FIASCO_H#define _FIASCO_H 1__BEGIN_DECLS/****************************************************************************			  FIASCO data types****************************************************************************//* *  Verbosity level: *  FIASCO_NO_VERBOSITY:       No output at all. *  FIASCO_SOME_VERBOSITY:     Show progress meter during coding *  FIASCO_ULTIMATE_VERBOSITY: Show debugging output */typedef enum {FIASCO_NO_VERBOSITY,	      FIASCO_SOME_VERBOSITY,	      FIASCO_ULTIMATE_VERBOSITY} fiasco_verbosity_e;  /* *  Image tiling methods: *  VARIANCE_ASC:  Tiles are sorted by variance. *                 The first tile has the lowest variance. *  VARIANCE_DSC:  Tiles are sorted by variance. *                 The first tile has the largest variance. *  SPIRAL_ASC:    Tiles are sorted like a spiral starting *                 in the middle of the image. *  SPIRAL_DSC:    Tiles are sorted like a spiral starting *                 in the upper left corner. */typedef enum {FIASCO_TILING_SPIRAL_ASC,	      FIASCO_TILING_SPIRAL_DSC,	      FIASCO_TILING_VARIANCE_ASC,	      FIASCO_TILING_VARIANCE_DSC} fiasco_tiling_e;/* *  Range of reduced precision format: *  FIASCO_RPF_RANGE_0_75: use interval [-0.75,0.75] *  FIASCO_RPF_RANGE_1_00: use interval [-1.00,1.00] *  FIASCO_RPF_RANGE_1_50: use interval [-1.50,0.75] *  FIASCO_RPF_RANGE_2_00: use interval [-2.00,2.00] */typedef enum {FIASCO_RPF_RANGE_0_75,	      FIASCO_RPF_RANGE_1_00,	      FIASCO_RPF_RANGE_1_50,	      FIASCO_RPF_RANGE_2_00} fiasco_rpf_range_e;/* *  Type of progress meter to be used during coding *  FIASCO_PROGRESS_NONE:    no output at all *  FIASCO_PROGRESS_BAR:     RPM style progress bar using 50 hash marks ######  *  FIASCO_PROGRESS_PERCENT: percentage meter 50%  */typedef enum {FIASCO_PROGRESS_NONE,	      FIASCO_PROGRESS_BAR,	      FIASCO_PROGRESS_PERCENT} fiasco_progress_e;/* * Class to encapsulate FIASCO images. */typedef struct fiasco_image{   void		(*delete)	(struct fiasco_image *image);   unsigned	(*get_width)	(struct fiasco_image *image);   unsigned	(*get_height)	(struct fiasco_image *image);   int		(*is_color)	(struct fiasco_image *image);   void *private;} fiasco_image_t;/* * Class to store internal state of decoder. */typedef struct fiasco_decoder{   int			(*delete)	 (struct fiasco_decoder *decoder);   int			(*write_frame)   (struct fiasco_decoder *decoder,					  const char *filename);   fiasco_image_t *	(*get_frame)     (struct fiasco_decoder *decoder);   unsigned		(*get_length)    (struct fiasco_decoder *decoder);   unsigned		(*get_rate)	 (struct fiasco_decoder *decoder);   unsigned		(*get_width)	 (struct fiasco_decoder *decoder);   unsigned		(*get_height)	 (struct fiasco_decoder *decoder);   const char *		(*get_title)	 (struct fiasco_decoder *decoder);   const char *		(*get_comment)	 (struct fiasco_decoder *decoder);   int			(*is_color)	 (struct fiasco_decoder *decoder);   void *private;} fiasco_decoder_t;/* * Class to encapsulate advanced coder options. */typedef struct fiasco_c_options{   void (*delete)            (struct fiasco_c_options *options);   int (*set_tiling)         (struct fiasco_c_options *options,			      fiasco_tiling_e method,			      unsigned exponent);   int (*set_frame_pattern)  (struct fiasco_c_options *options,			      const char *pattern);   int (*set_basisfile)      (struct fiasco_c_options *options,			      const char *filename);   int (*set_chroma_quality) (struct fiasco_c_options *options,			      float quality_factor,			      unsigned dictionary_size);   int (*set_optimizations)  (struct fiasco_c_options *options,			      unsigned min_block_level,			      unsigned max_block_level,			      unsigned max_elements,			      unsigned dictionary_size,			      unsigned optimization_level);   int (*set_prediction)     (struct fiasco_c_options *options,			      int intra_prediction,			      unsigned min_block_level,			      unsigned max_block_level);   int (*set_video_param)    (struct fiasco_c_options *options,			      unsigned frames_per_second,			      int half_pixel_prediction,			      int cross_B_search,			      int B_as_past_ref);   int (*set_quantization)   (struct fiasco_c_options *options,			      unsigned mantissa,			      fiasco_rpf_range_e range,			      unsigned dc_mantissa,			      fiasco_rpf_range_e dc_range);   int (*set_progress_meter) (struct fiasco_c_options *options,			      fiasco_progress_e type);   int (*set_smoothing)      (struct fiasco_c_options *options,			      int smoothing);   int (*set_comment)        (struct fiasco_c_options *options,			      const char *comment);   int (*set_title)          (struct fiasco_c_options *options,			      const char *title);   void *private;} fiasco_c_options_t;/* * Class to encapsulate advanced decoder options. */typedef struct fiasco_d_options{   void (*delete)            (struct fiasco_d_options *options);   int (*set_smoothing)      (struct fiasco_d_options *options,			      int smoothing);   int (*set_magnification)  (struct fiasco_d_options *options,			      int level);   int (*set_4_2_0_format)   (struct fiasco_d_options *options,			      int format);   void *private;} fiasco_d_options_t;/* * Class to convert internal FIASCO image structure to a XImage structure. * Method `renderer()' is used to convert internal image to XImage.  * Method `delete()' is used to delete and free internal image.  */typedef struct fiasco_renderer{   int  (*render) (const struct fiasco_renderer *this,		   unsigned char *data,		   const fiasco_image_t *fiasco_image);   void (*delete) (struct fiasco_renderer *this);   void *private;} fiasco_renderer_t;/****************************************************************************		       miscellaneous functions****************************************************************************/  /* Get last error message of FIASCO library */const char *fiasco_get_error_message (void);/* Set verbosity of FIASCO library */void fiasco_set_verbosity (fiasco_verbosity_e level);/* Get verbosity of FIASCO library */fiasco_verbosity_e fiasco_get_verbosity (void);/****************************************************************************			  decoder functions****************************************************************************//* Decode FIASCO image or sequence */fiasco_decoder_t *fiasco_decoder_new (const char *filename,				      const fiasco_d_options_t *options);/* Flush and discard FIASCO decoder */int fiasco_decoder_delete (fiasco_decoder_t *decoder);/* Decode next FIASCO frame and write to PNM image 'filename' */int fiasco_decoder_write_frame (fiasco_decoder_t *decoder,				const char *filename);/* Decode next FIASCO frame to FIASCO image structure */fiasco_image_t *fiasco_decoder_get_frame (fiasco_decoder_t *decoder);/* Get width of FIASCO image or sequence */unsigned fiasco_decoder_get_width (fiasco_decoder_t *decoder);/* Get height of FIASCO image or sequence */unsigned fiasco_decoder_get_height (fiasco_decoder_t *decoder);/* Get width of FIASCO image or sequence */int fiasco_decoder_is_color (fiasco_decoder_t *decoder);/* Get frame rate of FIASCO sequence */unsigned fiasco_decoder_get_rate (fiasco_decoder_t *decoder);/* Get number of frames of FIASCO file */unsigned fiasco_decoder_get_length (fiasco_decoder_t *decoder);/* Get title of FIASCO file */const char *fiasco_decoder_get_title (fiasco_decoder_t *decoder);/* Get comment of FIASCO file */const char *fiasco_decoder_get_comment (fiasco_decoder_t *decoder);/****************************************************************************			  image functions****************************************************************************//* Read FIASCO image (raw ppm or pgm format) */fiasco_image_t * fiasco_image_new (const char *filename);/* Discard FIASCO image */void fiasco_image_delete (fiasco_image_t *image); /* Get width of FIASCO image or sequence */unsigned fiasco_image_get_width (fiasco_image_t *image);/* Get height of FIASCO image or sequence */unsigned fiasco_image_get_height (fiasco_image_t *image);/* Get width of FIASCO image or sequence */int fiasco_image_is_color (fiasco_image_t *image);/****************************************************************************			  renderer functions****************************************************************************//* Constructor of FIASCO image structure to a XImage renderer */fiasco_renderer_t *fiasco_renderer_new (unsigned long red_mask, unsigned long green_mask,		     unsigned long blue_mask, unsigned bpp,		     int double_resolution);/* Destructor of FIASCO image structure to a XImage renderer */voidfiasco_renderer_delete (fiasco_renderer_t *renderer);/* FIASCO image structure to a XImage renderer */intfiasco_renderer_render (const fiasco_renderer_t *renderer,			unsigned char *ximage,			const fiasco_image_t *fiasco_image);/****************************************************************************			   coder functions****************************************************************************//* Encode image or sequence by FIASCO */int fiasco_coder (char const * const *inputname,		  const char *outputname,		  float quality,		  const fiasco_c_options_t *options);/****************************************************************************		 coder options functions****************************************************************************//* FIASCO additional options constructor */fiasco_c_options_t *fiasco_c_options_new (void);/* FIASCO additional options destructor */void fiasco_c_options_delete (fiasco_c_options_t *options);/* Define `smoothing'-percentage along partitioning borders.*/int fiasco_c_options_set_smoothing (fiasco_c_options_t *options,				    int smoothing);/* Set type of frame prediction for sequence of frames */int fiasco_c_options_set_frame_pattern (fiasco_c_options_t *options,					const char *pattern);/* Set method and number of tiles for image tiling */int fiasco_c_options_set_tiling (fiasco_c_options_t *options,				 fiasco_tiling_e method,				 unsigned exponent);/* Set FIASCO initial basis file */int fiasco_c_options_set_basisfile (fiasco_c_options_t *options,				    const char *filename);/* Set quality and dictionary size of chroma compression */int fiasco_c_options_set_chroma_quality (fiasco_c_options_t *options,					 float quality_factor,					 unsigned dictionary_size);/* *  Since FIASCO internally works with binary trees, all functions *  (which are handling image geometry) rather expect the `level' of *  the corresponding binary tree than the traditional `width' and *  `height' arguments.  Refer to following table to convert these *  values: *   *  level | width | height *  ------+-------+-------- *    0   |    1  |    1   *    1   |    1  |    2   *    2   |    2  |    2   *    3   |    2  |    4   *    4   |    4  |    4   *    5   |    4  |    8   *    6   |    8  |    8   *    7   |    8  |   16 * */   /* Set various optimization parameters. */int fiasco_c_options_set_optimizations (fiasco_c_options_t *options,					unsigned min_block_level,					unsigned max_block_level,					unsigned max_elements,					unsigned dictionary_size,					unsigned optimization_level);/* Set minimum and maximum size of image block prediction */int fiasco_c_options_set_prediction (fiasco_c_options_t *options,				     int intra_prediction,				     unsigned min_block_level,				     unsigned max_block_level);/*  Set various parameters used for video compensation */int fiasco_c_options_set_video_param (fiasco_c_options_t *options,				      unsigned frames_per_second,				      int half_pixel_prediction,				      int cross_B_search,				      int B_as_past_ref);/* Set accuracy of coefficients quantization */int fiasco_c_options_set_quantization (fiasco_c_options_t *options,				       unsigned mantissa,				       fiasco_rpf_range_e range,				       unsigned dc_mantissa,				       fiasco_rpf_range_e dc_range);/* Set type of progress meter */int fiasco_c_options_set_progress_meter (fiasco_c_options_t *options,					 fiasco_progress_e type);/*  Set comment of FIASCO stream */int fiasco_c_options_set_comment (fiasco_c_options_t *options,				  const char *comment);/*  Set title of FIASCO stream */int fiasco_c_options_set_title (fiasco_c_options_t *options,				const char *title);/****************************************************************************		 decoder options functions****************************************************************************//* FIASCO additional options constructor */fiasco_d_options_t *fiasco_d_options_new (void);/* FIASCO additional options destructor */void fiasco_d_options_delete (fiasco_d_options_t *options);/* Define `smoothing'-percentage along partitioning borders.*/int fiasco_d_options_set_smoothing (fiasco_d_options_t *options,				  int smoothing);/* Set magnification-'level' of decoded image */int fiasco_d_options_set_magnification (fiasco_d_options_t *options,				      int level);/* Set image format to 4:2:0 or 4:4:4 */int fiasco_d_options_set_4_2_0_format (fiasco_d_options_t *options,				     int format);__END_DECLS#endif /* not _FIASCO_H */

⌨️ 快捷键说明

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