Hacker Guide/Demux

From VideoLAN Wiki
Revision as of 00:14, 12 November 2010 by J-b (talk | contribs)
Jump to navigation Jump to search

Description

The modules of 'demux' capability are designed to handle the different "file" formats. They usually come after the access in the modules chain.

Examples of demuxers are WMV/ASF, Ogg or Mkv.

Write an demuxer module

To write an demuxer module, read the introduction to module writing.

Then, you should specify your module of being of demux type:

set_capability( "demux", 60 )  
set_category( CAT_INPUT )                                                                                                                                                                                  
set_subcategory( SUBCAT_INPUT_DEMUX )


Functions to implement

After implementing Open() and Close() functions, you will need to implement a few majors features that will be implemented by your functions.

As you can see include/vlc_demux.h, you should define:

  • Demux, as in pf_demux
  • Control, as in pf_control


After implementing those functions, you should assign them to the corresponding pf_ function.

Control

Prototype:

int         (*pf_control)( access_t *, int i_query, va_list args);

Control function is quite easy, the input core will query the module using this function with:

  • A pointer to the module structure.
  • An i_query parameter that can be of several type. We will cover afterward the most important on.
  • A list of arguments, that depends on the i_query type.


Return:

If the query has succeeded, it should return VLC_SUCCESS. Else it should return VLC_EGENERIC (fail).

Control Query types

See include/vlc_demux.h


Demux

Prototype:

 int (*pf_demux)  ( demux_t * ); 

Demux function is quite easy


Return:

If the query has succeeded, it should return VLC_SUCCESS. Else it should return VLC_EGENERIC (fail).


This page is part of official VLC media player Documentation (User GuideStreaming HowToHacker GuideModules)
Please read the Documentation Editing Guidelines before you edit the documentation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
??
VLC can decode this container.
The module name to use at the command line is unknown.