fiasco(3)

NAME
fiasco_options_new, fiasco_options_set_magnification, fiasco_options_delete, fiasco_options_set_progress_meter, fiasco_options_set_smoothing, fiasco_options_set_tiling, fiasco_options_set_4_2_0_format, fiasco_options_set_basisfile, fiasco_options_set_chroma_quality, fiasco_options_set_optimizations, fiasco_options_set_prediction, fiasco_options_set_video_param, fiasco_options_set_quantization, fiasco_options_set_frame_pattern - define additional options of FIASCO coder and decoder

SYNOPSIS
#include <fiasco.h>

fiasco_options_t *
fiasco_options_new
(void);

void
fiasco_options_delete
(fiasco_options_t * options);

int
fiasco_options_set_4_2_0_format
(fiasco_options_t * options,
int format);

int
fiasco_options_set_basisfile
(fiasco_options_t * options,
const char * filename);

int
fiasco_options_set_chroma_quality
(fiasco_options_t * options,
float quality_factor,
unsigned dictionary_size);

int
fiasco_options_set_frame_pattern
(fiasco_options_t * options,
const char * pattern);

int
fiasco_options_set_magnification
(fiasco_options_t * options,
int level);

int
fiasco_options_set_optimizations
(fiasco_options_t * options,
unsigned min_block_level,
unsigned max_block_level,
unsigned max_elements,
unsigned dictionary_size,
unsigned optimization_level);

int
fiasco_options_set_quantization
(fiasco_options_t * options,
unsigned mantissa,
fiasco_rpf_range_e range,
unsigned dc_mantissa,
fiasco_rpf_range_e dc_range);

int
fiasco_options_set_prediction
(fiasco_options_t * options,
int intra_prediction,
unsigned min_block_level,
unsigned max_block_level);

int
fiasco_options_set_progress_meter
(fiasco_options_t * options,
fiasco_progress_e type);

int
fiasco_options_set_smoothing
(fiasco_options_t * options,
unsigned smoothing);

int
fiasco_options_set_tiling
(fiasco_options_t * options,
fiasco_tiling_e method,
unsigned exponent);

int
fiasco_options_set_video_param
(fiasco_options_t * options,
unsigned frames_per_second,
int half_pixel_prediction,
int cross_B_search,
int B_as_past_ref);

DESCRIPTION
The fiasco_options_new() function allocates and initializes a FIASCO options object which is used to control additional compression and decompression parameters. Conversely, the function fiasco_options_delete() discards the given FIASCO options object. Several member functions are available to modify the default behavior of the FIASCO coder and decoder. fiasco_options_set_smoothing() sets the smoothing-percentage along partitioning borders when the image is regenerated; default is 70. This option is used both by the decoder and encoder. You should use the smoothing value specified in the FIASCO file when you are decoding video frames. fiasco_options_set_magnification() sets the magnification of the regenerated image; default is 0, i.e., the image geometry is not changed. This option is used by the decoder only. fiasco_options_set_4_2_0_format() defines whether the decoder should use the default 4:4:4 format or the 4:2:0 format. The latter one significantly reduces the decoding time at the cost of some additional blocking artefacts. This option is used by the decoder only. fiasco_options_set_frame_pattern() sets the type of inter frame compression which should be applied to individual frames of a video stream; default is "IPPPPPPPPP". fiasco_options_set_tiling() sets method and exponent of the image tiling algorithm which runs as initial step of the encoder; by default the image is subdivided into 16 tiles which are sorted by decreasing variance. fiasco_options_set_basisfile() sets the filename of the FIASCO initial basis (codebook of dictionary vectors); default is "small.fco". fiasco_options_set_chroma_quality() sets the quality used when coding the chroma channels of a color image to the term "quality of luminance / quality_factor"; default is 2. Moreover, the size of the codebook is limited by dictionary_size; default is 40 elements. fiasco_options_set_optimizations() toggles various coding optimizations. E.g., the size of the dictionary (default is 10000), the subset of dictionary elements to use for an individual approximation (default is 5), the size of the image blocks to consider (4x4, ..., 64x64), and some additional low level optimizations (default level is 1). fiasco_options_set_prediction() enables an additional intra block prediction by using a DC component approximation. By giving levels min_block_level and max_block_level the prediction can be limited to a small range of blocks only. By default, this method is disabled. fiasco_options_set_video_param() defines the framerate (default is 25) and toggles whether to use half pixel precise motion compensated prediction (disabled by default), whether to determine motion vectors of interpolated prediction with the Cross-B-Search algorithm (disabled by default), and whether to allow B frames to be used for B frame predicion (disabled by default). fiasco_options_set_quantization() defines the quantization parameters of the approximation coefficients. By default the range of DC coefficients is [-1,+1] using a mantissa of 5 bits (and one sign bit). By default, all other coefficients are quantized with 3 mantissa bits in the interval [-1.5,+1.5]. fiasco_options_set_progress_meter() sets the type of progress meter to be used during coding. By default, an RPM style progress bar using 50 hash marks (####) is used.

ARGUMENTS

options
    This object encapsulates the various coding and decoding parameters.

smoothing
    This percentage (range is 0 - i.e., no smoothing - to 100) defines how much the regenerated image is smoothed along the partitioning borders.

level
    This value gives the magnification of the decoded image with respect to the original size. Positive values increase and negative values decrease the width and height of the image by a factor of 2^abs(level).

format
    If format is 0 then the 4:4:4 color image format is used, i.e., the chroma channel are of the same size as the luminance. Otherwise, the 4:2:0 format is used. Then, width and height of each chroma channel is only one half of the width and height of the luminance.

method
    Defines the algorithm which should be used to sort the image tiles which are generated in the initial coding step. If method is FIASCO_VARIANCE_ASC then the tiles are sorted by variance - the first tile has the lowest variance. Conversely, when using FIASCO_VARIANCE_DSC the first tile has the largest variance. If method is FIASCO_SPIRAL_ASC then the tiles are sorted like a spiral starting in the middle of the image. Conversely, when using FIASCO_SPIRAL_DSC the tiles are sorted like a spiral starting in the upper left corner.

exponent
    This value sets the number of image tiles - which are generated in the initial step of the encoder - to 2^exponent.

pattern
    This string defines the sequence of frame types. Character n of the string defines the type of frame n (pattern is periodically extended). Three different frame types are available (case insensitive): choose 'i' for intra-frames (no inter frame prediction is used), 'p' for predicted frames (a frame of the past is used for prediction), or 'b' for bi-directional predicted frames (both a frame of the past and the future is used for prediction).

filename
    The initial basis (codebook) of the coder is loaded from this (ASCII) file. Files that already come with FIASCO are "small.fco" (3 elements), "medium.fco" (132 elements), and "large.fco" (219 elements).

quality_factor
    When coding chroma channels (Cb and Cr band) the approximation quality is determined by the term `quality of Y component' / quality_factor.

dictionary_size
    FIASCO uses a dictionary (codebook) of variable size to approximate individual image blocks. The size of the codebook can be limited by dictionary_size to reduce the coding time, however, at the cost of decreasing quality.

min_block_level
    During coding only those image blocks are considered for approximation (or prediction) which binary tree level is larger than min_block_level (minimum value is 3). (Since FIASCO internally works with binary trees, the size of an image block is determined by the level of the corresponding binary tree). 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
    ------+-------+--------
    The larger this value is the faster the coder runs but the worse the image quality will be.

max_block_level
    During coding only those image blocks are considered for approximation (or prediction) which binary tree level is smaller than max_block_level. The smaller this value is the faster the coder runs but the worse the image quality will be.

max_elements
    This value defines how many dictionary elements can be used to approximate an individual image block. The smaller this positive value (range is 1 to 5) is the faster the coder runs but the worse the image quality will be.

optimization_level
    Additional low level optimizations are available by setting optimization_level to one of the following values:
    0 standard approximation method
    1 slightly increases the approximation quality, running time is twice as high as with the standard method
    2 hardly increases the approximation quality of method 1, running time is twice as high as with method 1 (this method just remains for completeness)

intra_prediction
    If intra_prediction is set to a non-zero value then an additional block prediction of intra-frames is enabled. For some images, the image quality is slightly improved, however, at the cost of a significantly increased running time of the coder.

frames_per_second
    This value defines the frame rate, i.e., how many frames per second should be displayed. This value has no effect during coding, it is just passed to the FIASCO output file where it is read and used by the decoder.

half_pixel_prediction
    A non-zero value enables half pixel precise motion compensated prediction.

cross_B_search
    A non-zero value enables the fast Cross-B-Search algorithm to determine the motion vectors of an interpolated prediction. Otherwise, exhaustive search (in the given search range) is used.

B_as_past_ref
    A non-zero value allows not only I- and P-frames but also B-frames to be used for a forward or bi-directional predicion.

mantissa, range
    Approximation coefficients are quantized to a small number of values (in fixed point format) in the interval [-range, +range]. The number of mantissa bits defines the accuracy of quantization.

dc_mantissa, dc_range
    Approximation coefficients of the DC component are quantized in a different way: the number of mantissa bits is given by dc_mantissa whereas the quantization interval is given by [-dc_range, +dc_range].

type
    This value sets the type of progress meter which should be used during coding. The following types are available:
    FIASCO_PROGRESS_NONE: no output at all
    FIASCO_PROGRESS_BAR: print hash marks (###) FIASCO_PROGRESS_PERCENT: percentage meter (50%)

RETURN VALUES
The function fiasco_decoder_new() returns a pointer to the newly allocated option object. If an error has been catched, a NULL pointer is returned. All set functions return 1 on success and 0 if an error has been catched. In case of an error, use the function fiasco_get_error_message(3) to get a string with the last error message of FIASCO.

SEE ALSO
fiasco_decoder(3), fiasco_coder(3) Ullrich Hafner, Juergen Albert, Stefan Frank, and Michael Unger. Weighted Finite Automata for Video Compression, IEEE Journal on Selected Areas In Communications, January 1998
Ullrich Hafner. Low Bit-Rate Image and Video Coding with Weighted Finite Automata, Ph.D. thesis, Mensch & Buch Verlag, ISBN 3-89820-002-7, October 1999.

AUTHOR
Ullrich Hafner <hafner@bigfoot.de>