The Fib multimedia language or Fib multimedia format is the centerpiece of the Fib multimedia system. With it multimedia objects (e.g. pictures) can be coded.
The Fib multimedia format (Fib language) is used to store multimedia information in a structured, functional and hierarchical form. The structure of the Fib multimedia format supports the object view of things. The Fib format is very powerful, since expressions can be combined and nested (modular system).
The Fib multimedia format is based on diversity rather than specialization.
With Fib the question is not whether you can do something, but just how to do something.
The only restriction on the multimedia data, that can be displayed in the Fib format, is, that they can be represented as properties of points of a finite, euclidean and discrete (there are smallest units) space. Therefore, not only images and sounds can be stored with Fib, but for example also smells and how soft something is. Also objects and subobjects can be commented.
The memory cost of a multimedia object in Fib is much more dependent on its complexity as of its size (in terms of expansion in the dimensions, for example, the number of points in images), as in conventional multimedia formats.
Unlike other multimedia languages the Fib multimedia language is not build on a particular algotithmus or program system. Thus it becomes more independent and more versatile usable. You don't have to depend, like with JPEG or MPEG, on cosine transforms, wavelets or entropy encoding, so you can adapt the approach to the given multimedia data and desired use.
The basic framework for the Fib multimedia data is a tree. The leaves are endpoints, that are used for displaying respectively assignments to points or multimedia subobjects. In the branches and the alignment of these, which are, for example, on the leftmost, the display parameters or properties of the leaves are encoded, for example how often they are shown and with which color.
Each node of the tree is a Fib element. The tree is evaluated from the root to the leaves, whereupon the elements affect the evaluation.
A complete Fib object (tree) represents a multimedia object.
A valid Fib object (tree) is cycle free, to ensure a finite processing time.
The elements of the multimedia description language are oriented on some of the usual imperative programming languages (e. g. C++, Java).
The Fib language elements or short Fib elements are the building blocks from which Fib objects are built. In which various combinations of Fib elements can represent the same multimedia object.
In the following the main Fib elements are briefly presented. A detailed description of the language elements can be found in the documentation .
On the Fib example page the use of the Fib elements is demonstrated with an example.
VectorsVectors are used for providing numerical values. Each vector element is either a number or a variable, which is defined above the Fib object. To each vector type belongs a domain, which is in normally defined in the root-element.
VariablesVariables are defined by some Fib elements and can be used in the entire contained (or below) Fib object.
Fib objects are made out of Fib elements as valid composite objects.
PointsObj = p( PositionVector )
The points are the performing elements. At them the actual properties are evaluated. The empty point p() has no effect. Points with an empty position vector p(()) create the background.
Property elementObj = pr( PropertyVectorname, Obj1 )
With the property element, properties (of type name) are set for Fib objects.
List elementObj = l( Obj1, …, Objn ); with n ∈ Ν and 2 ≤ n
With the list element several Fib objects are combined into one object.
Comment elementObj = c( Key , Value , Obj1)
The comment element is used to name or describe subobjects.
Area elementObj = for( Variable, ( B1, B2,…, Bn), Obj1)
The area element sets a variable to the values in the range of integer area (discrete zones), which the variable occupies. The area element contains a list of subareas Bi, through which the variable runs.
FunctionObj = f( Variable ,UF ,Obj1 )
Functions are Fib elements that assign a variable to a value, that the function element calculates using a formula. A function contains for this a subfunction UF.
Call external objectsObj = obj( Identifierer , ( inVal1 , … , inValn ) , ( outVar1, … ,outVarv1, Obj1), … , ( outVar1, … ,outVarvm, Objm) )
External objects stands for Fib objects, that are not defined in the current Fib subobject. These can be from a root-element (root) or from the Fib object database. In this way, parts of Fib objects can be used multiple times in the Fib object or can be reused for different Fib objects.
External subobjectsObj = sub( Number , ( value1, … , valuev ) )
External subobjects are objects, that are already provided during the evaluation of the current Fib object.
If-elementObj=if( Condition, Obj1, Obj2)
The if-element is used to make decisions. Depending on the truth value of a condition (Condition) the if-element only evaluates the first (Obj1) or only the second sub-object (Obj2).
Set-elementObj = set( (Variable1, …, Variablen), [DomainNr,] ( (W1.1, …, Wn.1), …,(W1.k, …, Wn.k) ), Obj1)
With the set-element data can be handled easily and concentrated. For that, to a number of variables (Variablei) will be assigned consecutive sets of values (Wn.k) .
Matrix elementObj = matrix( (Variable1, …, Variabled, Variabled+1, …, Variabld+i), [DomainNr,] ( (Startvalue1, Endvalue1), …, (Startvalued, Endvalued) ), ( (W1.1, …, Wi.1), …, (W1.k, …, Wi.k) ), Obj1)
With the matrix element matrices can be created and used. For that, to a number of variables (Variablei) will be assigned consecutive sets of values (Wn.k) . The first d variables are used as counter variables (in the range of Startvaluei to Endvaluei).
The root-elementRootobj = root( [Multimediainformation], [Domains], [DomainsValues], [((inVar1, S1), … , (inVarv, Sv) )], Obj , [((Identifier1, Rootobj1) , … , (Identifiern, Rootobjn))], [( DB_Identifier1, … , DB_Identifierd)], [Optionalpart] )
The root-element serves as the root-element of a Fib object. It should provide all (enviroment) information that are needed to evaluate the Fib object. The root-element itself can just be contained in other root-elements, but not in other Fib elements.