fiasco(3) Fractal Image And Sequence COdec fiasco(3)NAME
fiasco_c_options_new, fiasco_c_options_delete,
fiasco_c_options_set_progress_meter, fiasco_c_options_set_basisfile,
fiasco_c_options_set_smoothing, fiasco_c_options_set_tiling,
fiasco_c_options_set_chroma_quality, fiasco_c_options_set_optimiza‐
tions, fiasco_c_options_set_prediction,
fiasco_c_options_set_video_param, fiasco_c_options_set_quantization,
fiasco_c_options_set_frame_pattern fiasco_c_options_set_title,
fiasco_c_options_set_comment - define additional options of FIASCO
coder and decoder
SYNOPSIS
#include <fiasco.h>
fiasco_c_options_t *
fiasco_c_options_new
(void);
void
fiasco_c_options_delete
(fiasco_c_options_t * options);
int
fiasco_c_options_set_basisfile
(fiasco_c_options_t * options,
const char * filename);
int
fiasco_c_options_set_chroma_quality
(fiasco_c_options_t * options,
float quality_factor,
unsigned dictionary_size);
int
fiasco_c_options_set_comment
(fiasco_c_options_t * options,
const char * comment);
int
fiasco_c_options_set_frame_pattern
(fiasco_c_options_t * options,
const char * pattern);
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);
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);
int
fiasco_c_options_set_prediction
(fiasco_c_options_t * options,
int intra_prediction,
unsigned min_block_level,
unsigned max_block_level);
int
fiasco_c_options_set_progress_meter
(fiasco_c_options_t * options,
fiasco_progress_e type);
int
fiasco_c_options_set_smoothing
(fiasco_c_options_t * options,
unsigned smoothing);
int
fiasco_c_options_set_tiling
(fiasco_c_options_t * options,
fiasco_tiling_e method,
unsigned exponent);
int
fiasco_c_options_set_title
(fiasco_c_options_t * options,
const char * title);
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);
DESCRIPTION
The fiasco_c_options_new() function allocates and initializes a FIASCO
options object which is used to control additional compression
parameters.
Conversely, the function fiasco_c_options_delete() discards the given
FIASCO coder options object.
Several member functions are available to modify the default behavior
of the FIASCO coder.
fiasco_c_options_set_smoothing() sets the smoothing-percentage along
partitioning borders when the image is regenerated; default is 70. This
value is stored in the FIASCO file and is used as default smoothing
percentage in the decoder.
fiasco_c_options_set_frame_pattern() sets the type of inter frame com‐
pression which should be applied to individual frames of a video
stream; default is "IPPPPPPPPP".
fiasco_c_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_c_options_set_basisfile() sets the filename of the FIASCO ini‐
tial basis (codebook of dictionary vectors); default is "small.fco".
fiasco_c_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_c_options_set_comment() sets a comment string to be stored in
the FIASCO file; default is the empty string.
fiasco_c_options_set_title() sets a title string to be stored in the
FIASCO file; default is the empty string.
fiasco_c_options_set_optimizations() toggles various coding optimiza‐
tions. 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_c_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_c_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_c_options_set_quantization() defines the quantization parameters
of the approximation coefficients. By default the range of DC coeffi‐
cients 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_c_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 various coding 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.
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.
title This value is the title string of the FIASCO file. It is dis‐
played, e.g., in the window title of the decoder.
comment
This value defines an optional comment to be stored in the
FIASCO file.
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 pre‐
diction 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 pre‐
diction).
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 approxi‐
mate 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 approx‐
imation (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 deter‐
mined 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 approx‐
imation (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, run‐
ning 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 addi‐
tional 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 cod‐
ing, 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. Oth‐
erwise, 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 quantiza‐
tion.
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_man‐
tissa 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_PER‐
CENT: percentage meter (50%)
RETURN VALUES
The function fiasco_c_options_new() returns a pointer to the newly
allocated coder 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 ALSOfiasco_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>
FIASCO April, 2000 fiasco(3)