Main Page   Modules   Compound List   File List   Compound Members   File Members  

XLV Pipeline API

Pipeline API description. More...

Modules

Element: type
Element: errors
Element frame: flags

Compounds

struct  _XLV_PipelineElement
 Pipeline element class description. More...

struct  _XLV_PipelineFrame
 Description of a frame for a pipeline. More...


Typedefs

typedef _XLV_Pipeline XLV_Pipeline
typedef _XLV_PipelineElement XLV_PipelineElement
typedef _XLV_PipelineFrame XLV_PipelineFrame
typedef gboolean(* XLV_PipelineElement_InitFunc )(XLV_PipelineElement *element, gpointer udata)
typedef gboolean(* XLV_PipelineElement_StopFunc )(XLV_PipelineElement *element)
typedef gboolean(* XLV_PipelineElement_SetupFunc )(XLV_PipelineElement *element, XLV_PipelineElement *caller, gpointer setup_data)
typedef gboolean(* XLV_PipelineElement_ChainTo )(XLV_PipelineElement *element, guint16 id)
typedef gboolean(* XLV_PipelineElement_GetFrame )(XLV_PipelineElement *element, XLV_PipelineFrame *frame)
typedef gboolean(* XLV_PipelineElement_GetFastFrame )(XLV_PipelineElement *element, XLV_PipelineFrame *frame)
typedef gboolean(* XLV_PipelineElement_PutFrame )(XLV_PipelineElement *element, XLV_PipelineFrame *frame)
typedef gboolean(* XLV_PipelineElement_PutFastFrame )(XLV_PipelineElement *element, XLV_PipelineFrame *frame)
typedef gboolean(* XLV_PipelineElement_SkipFrame )(XLV_PipelineElement *element)
typedef gboolean(* XLV_PipelineElement_Execute )(XLV_PipelineElement *element)

Functions

XLV_Pipeline * xlv_pipeline_new ()
 Builds a new pipeline. More...

void xlv_pipeline_release (XLV_Pipeline *pipeline)
 Pipeline destructor. More...

glong xlv_pipeline_add_element (XLV_Pipeline *pipeline, XLV_PipelineElement *e, XLV_Stream *s, gpointer udata)
 Adds a new element to the pipeline. More...

XLV_Streamxlv_pipeline_get_implementation (XLV_Pipeline *pipeline, guint16 id)
 Returns the implementation of the specified element.

GList * xlv_pipeline_get_parents (XLV_PipelineElement *element)
 Returns a GList of the input chain of the specified element. More...

GList * xlv_pipeline_get_outputs (XLV_PipelineElement *element)
 Returns a GList of the output chain of the specified element. More...

XLV_PipelineElement * xlv_pipeline_get_type_next (XLV_Pipeline *pipeline, guint8 type, XLV_PipelineElement *element)
 Iterates specifically throughout the pipeline. More...

XLV_PipelineElement * xlv_pipeline_get_element (XLV_Pipeline *pipeline, guint16 id)
 Returns the element descriptor associated to the specified id. More...

gboolean xlv_pipeline_chain (XLV_Pipeline *pipeline, guint16 id_orig, guint16 id_dest)
 Chain two elements. More...

gboolean xlv_pipeline_unchain (XLV_Pipeline *pipeline, guint16 id_orig, guint16 id_dest)
 Unchain two elements.

GList * xlv_pipeline_get_leaves (XLV_Pipeline *pipeline)
 Returns the leaves of the pipeline graph.

XLV_Streamxlv_pipeline_to_stream (XLV_Pipeline *pipeline, guint16 id)
 Adapts an element into a XLV Stream.

gboolean xlv_pipeline_propagate_setup (XLV_PipelineElement *pipeline, gpointer udata)
 Propagate a setup instruction.

gboolean xlv_pipeline_setup (XLV_Pipeline *pipeline)
gboolean xlv_pipeline_execute (XLV_Pipeline *pipeline, gboolean all)
gboolean xlv_pipeline_spawn (XLV_Pipeline *pipeline)
glong xlv_pipeline_add_source (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_writer (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_parser (XLV_Pipeline *pipeline, XLV_Session *session)
glong xlv_pipeline_add_codec (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_translator (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_video_output (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_audio_output (XLV_Pipeline *pipeline, XLV_Stream *s)
glong xlv_pipeline_add_video_translator (XLV_Pipeline *pipeline, XLV_Session *session, guint32 coding_req, glong id)
gboolean xlv_pipeline_default_build (XLV_Pipeline *pipeline, XLV_Session *session, XLV_Stream *source)
XLV_Pipeline * xlv_pipeline_load_file (XLV_Session *session, const gchar *filename)
gboolean xlv_pipeline_get_fast_frame (XLV_PipelineElement *element, XLV_PipelineFrame *frame)
gboolean xlv_pipeline_get_frame (XLV_PipelineElement *element, XLV_PipelineFrame *frame)
gboolean xlv_pipeline_put_fast_frame (XLV_PipelineElement *element, XLV_PipelineFrame *frame)
gboolean xlv_pipeline_elt_execute (XLV_PipelineElement *element)

Detailed Description

Pipeline API description.

XLV Pipeline is a way to connect various multimedia components in a single oriented graph. This graph can then be exploited. Elements generally follow the "master/slave" concept: there is a source of data and a receiver of these data. Usually, in a pipeline, there is canonic source of data followed by a single data processor and (optionally) multiple outputs.

XLV Pipeline comes with a set of already implemented elements such as:

Here is a typical example of how to use initialize a new pipeline:
#include <xlv/xlv_plugin_mgr.h>
#include <xlv/xlv_pipeline.h>

...

{
        XLV_Pipeline *pipeline;
        XLV_Stream *s;

        /* Initialize s, plugin must support xlv_read */

        pipeline = xlv_pipeline_new();

        xlv_pipeline_add_source(pipeline, s);

        ...

        xlv_pipeline_release(pipeline);
}

An build a pipeline, you need elements of tube or some data routers.


Function Documentation

glong xlv_pipeline_add_element XLV_Pipeline *    pipeline,
XLV_PipelineElement *    e,
XLV_Stream   s,
gpointer    udata
 

Adds a new element to the pipeline.

This function adds the element `e' (with an implementation `s') to the pipeline. The element is not linked to anyone by default and considered as a leaf.

Parameters:
pipeline  pipeline graph which will receive the element
e  element to add to the pipeline (this is a class)
s  element implementation (optional, may be NULL)
udata  user data passed to element Initializer
Returns:
newly created id for the added element.

gboolean xlv_pipeline_chain XLV_Pipeline *    pipeline,
guint16    id_orig,
guint16    id_dest
 

Chain two elements.

Parameters:
pipeline  a pipeline
id_orig  Element to be chained from
id_dest  element to be chained to
Returns:
TRUE if the chain action succeed else FALSE.

gboolean xlv_pipeline_default_build XLV_Pipeline *    pipeline,
XLV_Session *    session,
XLV_Stream   source
 

Auto setup a chain

XLV_PipelineElement* xlv_pipeline_get_element XLV_Pipeline *    pipeline,
guint16    id
 

Returns the element descriptor associated to the specified id.

Warning: This is an unoptimized algorithm. It parses all the pipeline to find the element associated to the id.

Parameters:
pipeline  a pipeline
id  an element id
Returns:
a pipeline element object

GList* xlv_pipeline_get_outputs XLV_PipelineElement *    element
 

Returns a GList of the output chain of the specified element.

Parameters:
element  A pipeline element
Returns:
GList

GList* xlv_pipeline_get_parents XLV_PipelineElement *    element
 

Returns a GList of the input chain of the specified element.

Parameters:
element  a Pipeline element
Returns:
GList

XLV_PipelineElement* xlv_pipeline_get_type_next XLV_Pipeline *    pipeline,
guint8    type,
XLV_PipelineElement *    element
 

Iterates specifically throughout the pipeline.

Parameters:
pipeline  a pipeline
type  an element type
element  the previous element in the iteration (may be NULL)
Returns:
a new element corresponding to the criterion.

XLV_Pipeline* xlv_pipeline_new  
 

Builds a new pipeline.

This is the constructor of the pipeline object. The build pipeline is completely empty.

Returns:
A newly built pipeline.

void xlv_pipeline_release XLV_Pipeline *    pipeline
 

Pipeline destructor.

The pipeline destructor will destroy all elements contained in the pipeline. The order of the destruction is strict: it begins by the leaves and ends with roots. This prevents from having some invalid pointers during the destruction of elements.


Generated on Mon Jul 1 19:39:11 2002 for XLV by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002