Hacker Guide/How To Write a Module

From VideoLAN Wiki
Revision as of 19:55, 12 February 2007 by Mbarclay (talk | contribs)
Jump to navigation Jump to search
  • This guide is being written by a VLC novice. Please verify all statements below
  • Using dvdread.c as the template

Module Descriptor

A VLC Module must include a description of itself, and the parameters it accepts.

The module descriptor begins with:

vlc_module_being();

You should set some category information on your module:

    set_shortname( _("DVD without menus") );
    set_description( _("DVDRead Input (DVD without menu support)") );
    set_category( CAT_INPUT );

Note the use of _("") to create a string. -- Is this required??

Predefined Categories include:

  • CAT_INTERFACE
  • CAT_AUDIO
  • CAT_VIDEO
  • CAT_INPUT
  • CAT_SOUT
  • CAT_ADVANCED
  • CAT_PLAYLIST
    set_subcategory( SUBCAT_INPUT_ACCESS );

See include/configuration.h for definition of all categories and sub-categories

Adding Parameters

All macros take the following argument list:

 add_integer(name, value, p_callback, text, longtext, advc) 
  • name is the string that identifies this parameter in the configuration. This name may be used at the command prompt to set the configuration value
  • value is the default value for this parameter
  • p_callback is a function pointer that will be called when the value of this parameter is changed.
    • p_callback is called with the following arguments:
( p_this, psz_name, oldval, val, p_config->p_callback_data )
      • p_this is a pointer to a vlc_object_t struct
      • psz_name is the name of your parameter that is being changed
      • oldval is the old value of the parameter
      • val is the new value of the parameter
      • p_call_back_data is void* data that you can assign for each parameter. Usually NULL.
  • text A short description of the parameter
  • longtext A complete description of the parameter
  • advc Boolean, ADVanced Configuration. If TRUE, this parameter will only be displayed when using the --advanced flag. e.g.
vlc -p dvdread --advanced

e.g.

 add_integer("dvdread-angle", 1, NULL, "DVD Angle", "Default DVD Angle", NULL") 

You may add the following parameters to your module:

  • add_integer
  • add_string
  • add_double

Open(vlc_object_t *)

Close(vlc_object_t *)