fiasco
Section: Fractal Image And Sequence COdec (3)
Updated: April, 2000
Index
Return to Main Contents
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>
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- ARGUMENTS
-
- RETURN VALUES
-
- SEE ALSO
-
- AUTHOR
-
This document was created by
man2html,
using the manual pages.
Time: 16:15:36 GMT, July 31, 2024