<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbarclay</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbarclay"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Mbarclay/"/>
	<updated>2026-11-04T16:42:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Plugin_Writers_Guide&amp;diff=7567</id>
		<title>Plugin Writers Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Plugin_Writers_Guide&amp;diff=7567"/>
		<updated>2007-02-12T20:35:28Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: Plugin Writers Guide moved to Module Writers Guide: VLC doesn&amp;#039;t have plugins, it has Modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Module Writers Guide]]&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7566</id>
		<title>Hacker Guide/How To Write a Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7566"/>
		<updated>2007-02-12T20:35:28Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: Plugin Writers Guide moved to Module Writers Guide: VLC doesn&amp;#039;t have plugins, it has Modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This guide is being written by a VLC novice.  Please verify all statements below&lt;br /&gt;
*Using dvdread.c as the template&lt;br /&gt;
&lt;br /&gt;
== Module Descriptor ==&lt;br /&gt;
A VLC Module must include a description of itself, and the parameters it accepts.&lt;br /&gt;
&lt;br /&gt;
The module descriptor begins with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vlc_module_being();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should set some category information on your module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_shortname( _(&amp;quot;DVD without menus&amp;quot;) );&lt;br /&gt;
    set_description( _(&amp;quot;DVDRead Input (DVD without menu support)&amp;quot;) );&lt;br /&gt;
    set_category( CAT_INPUT );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the use of _(&amp;quot;&amp;quot;) to create a string.  -- Is this required??&lt;br /&gt;
&lt;br /&gt;
Predefined Categories include:&lt;br /&gt;
* CAT_INTERFACE &lt;br /&gt;
* CAT_AUDIO&lt;br /&gt;
* CAT_VIDEO&lt;br /&gt;
* CAT_INPUT&lt;br /&gt;
* CAT_SOUT&lt;br /&gt;
* CAT_ADVANCED&lt;br /&gt;
* CAT_PLAYLIST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_subcategory( SUBCAT_INPUT_ACCESS );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See include/configuration.h for definition of all categories and sub-categories&lt;br /&gt;
&lt;br /&gt;
=== Adding Parameters ===&lt;br /&gt;
All macros take the following argument list:&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(name, value, p_callback, text, longtext, advc) &amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; is the string that identifies this parameter in the configuration.  This name may be used at the command prompt to set the configuration value&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039; is the default value for this parameter&lt;br /&gt;
* &#039;&#039;&#039;p_callback&#039;&#039;&#039; is a function pointer that will be called when the value of this parameter is changed.&lt;br /&gt;
** p_callback is called with the following arguments:  &lt;br /&gt;
&amp;lt;pre&amp;gt;( p_this, psz_name, oldval, val, p_config-&amp;gt;p_callback_data )&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;p_this&#039;&#039;&#039; is a pointer to a vlc_object_t struct&lt;br /&gt;
*** &#039;&#039;&#039;psz_name&#039;&#039;&#039; is the &#039;&#039;&#039;name&#039;&#039;&#039; of your parameter that is being changed&lt;br /&gt;
*** &#039;&#039;&#039;oldval&#039;&#039;&#039; is the old value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;val&#039;&#039;&#039; is the new value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;p_call_back_data&#039;&#039;&#039; is void* data that you can assign for each parameter.  Usually NULL.&lt;br /&gt;
* &#039;&#039;&#039;text&#039;&#039;&#039; A short description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;longtext&#039;&#039;&#039; A complete description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;advc&#039;&#039;&#039; Boolean, ADVanced Configuration.  If TRUE, this parameter will only be displayed when using the --advanced flag. e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;vlc -p dvdread --advanced&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(&amp;quot;dvdread-angle&amp;quot;, 1, NULL, &amp;quot;DVD Angle&amp;quot;, &amp;quot;Default DVD Angle&amp;quot;, NULL&amp;quot;) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may add the following parameters to your module:&lt;br /&gt;
* add_integer&lt;br /&gt;
* add_string&lt;br /&gt;
* add_float&lt;br /&gt;
* add_bool&lt;br /&gt;
* add_key&lt;br /&gt;
* add_file&lt;br /&gt;
* add_directory&lt;br /&gt;
&lt;br /&gt;
For complete definitions, see include/configuration.h&lt;br /&gt;
&lt;br /&gt;
== Open(vlc_object_t *) ==&lt;br /&gt;
&lt;br /&gt;
== Close(vlc_object_t *) ==&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7565</id>
		<title>Hacker Guide/How To Write a Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7565"/>
		<updated>2007-02-12T20:01:38Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This guide is being written by a VLC novice.  Please verify all statements below&lt;br /&gt;
*Using dvdread.c as the template&lt;br /&gt;
&lt;br /&gt;
== Module Descriptor ==&lt;br /&gt;
A VLC Module must include a description of itself, and the parameters it accepts.&lt;br /&gt;
&lt;br /&gt;
The module descriptor begins with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vlc_module_being();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should set some category information on your module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_shortname( _(&amp;quot;DVD without menus&amp;quot;) );&lt;br /&gt;
    set_description( _(&amp;quot;DVDRead Input (DVD without menu support)&amp;quot;) );&lt;br /&gt;
    set_category( CAT_INPUT );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the use of _(&amp;quot;&amp;quot;) to create a string.  -- Is this required??&lt;br /&gt;
&lt;br /&gt;
Predefined Categories include:&lt;br /&gt;
* CAT_INTERFACE &lt;br /&gt;
* CAT_AUDIO&lt;br /&gt;
* CAT_VIDEO&lt;br /&gt;
* CAT_INPUT&lt;br /&gt;
* CAT_SOUT&lt;br /&gt;
* CAT_ADVANCED&lt;br /&gt;
* CAT_PLAYLIST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_subcategory( SUBCAT_INPUT_ACCESS );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See include/configuration.h for definition of all categories and sub-categories&lt;br /&gt;
&lt;br /&gt;
=== Adding Parameters ===&lt;br /&gt;
All macros take the following argument list:&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(name, value, p_callback, text, longtext, advc) &amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; is the string that identifies this parameter in the configuration.  This name may be used at the command prompt to set the configuration value&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039; is the default value for this parameter&lt;br /&gt;
* &#039;&#039;&#039;p_callback&#039;&#039;&#039; is a function pointer that will be called when the value of this parameter is changed.&lt;br /&gt;
** p_callback is called with the following arguments:  &lt;br /&gt;
&amp;lt;pre&amp;gt;( p_this, psz_name, oldval, val, p_config-&amp;gt;p_callback_data )&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;p_this&#039;&#039;&#039; is a pointer to a vlc_object_t struct&lt;br /&gt;
*** &#039;&#039;&#039;psz_name&#039;&#039;&#039; is the &#039;&#039;&#039;name&#039;&#039;&#039; of your parameter that is being changed&lt;br /&gt;
*** &#039;&#039;&#039;oldval&#039;&#039;&#039; is the old value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;val&#039;&#039;&#039; is the new value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;p_call_back_data&#039;&#039;&#039; is void* data that you can assign for each parameter.  Usually NULL.&lt;br /&gt;
* &#039;&#039;&#039;text&#039;&#039;&#039; A short description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;longtext&#039;&#039;&#039; A complete description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;advc&#039;&#039;&#039; Boolean, ADVanced Configuration.  If TRUE, this parameter will only be displayed when using the --advanced flag. e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;vlc -p dvdread --advanced&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(&amp;quot;dvdread-angle&amp;quot;, 1, NULL, &amp;quot;DVD Angle&amp;quot;, &amp;quot;Default DVD Angle&amp;quot;, NULL&amp;quot;) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may add the following parameters to your module:&lt;br /&gt;
* add_integer&lt;br /&gt;
* add_string&lt;br /&gt;
* add_float&lt;br /&gt;
* add_bool&lt;br /&gt;
* add_key&lt;br /&gt;
* add_file&lt;br /&gt;
* add_directory&lt;br /&gt;
&lt;br /&gt;
For complete definitions, see include/configuration.h&lt;br /&gt;
&lt;br /&gt;
== Open(vlc_object_t *) ==&lt;br /&gt;
&lt;br /&gt;
== Close(vlc_object_t *) ==&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7564</id>
		<title>Hacker Guide/How To Write a Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7564"/>
		<updated>2007-02-12T19:55:50Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This guide is being written by a VLC novice.  Please verify all statements below&lt;br /&gt;
*Using dvdread.c as the template&lt;br /&gt;
&lt;br /&gt;
== Module Descriptor ==&lt;br /&gt;
A VLC Module must include a description of itself, and the parameters it accepts.&lt;br /&gt;
&lt;br /&gt;
The module descriptor begins with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vlc_module_being();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should set some category information on your module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_shortname( _(&amp;quot;DVD without menus&amp;quot;) );&lt;br /&gt;
    set_description( _(&amp;quot;DVDRead Input (DVD without menu support)&amp;quot;) );&lt;br /&gt;
    set_category( CAT_INPUT );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the use of _(&amp;quot;&amp;quot;) to create a string.  -- Is this required??&lt;br /&gt;
&lt;br /&gt;
Predefined Categories include:&lt;br /&gt;
* CAT_INTERFACE &lt;br /&gt;
* CAT_AUDIO&lt;br /&gt;
* CAT_VIDEO&lt;br /&gt;
* CAT_INPUT&lt;br /&gt;
* CAT_SOUT&lt;br /&gt;
* CAT_ADVANCED&lt;br /&gt;
* CAT_PLAYLIST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_subcategory( SUBCAT_INPUT_ACCESS );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See include/configuration.h for definition of all categories and sub-categories&lt;br /&gt;
&lt;br /&gt;
=== Adding Parameters ===&lt;br /&gt;
All macros take the following argument list:&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(name, value, p_callback, text, longtext, advc) &amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; is the string that identifies this parameter in the configuration.  This name may be used at the command prompt to set the configuration value&lt;br /&gt;
* &#039;&#039;&#039;value&#039;&#039;&#039; is the default value for this parameter&lt;br /&gt;
* &#039;&#039;&#039;p_callback&#039;&#039;&#039; is a function pointer that will be called when the value of this parameter is changed.&lt;br /&gt;
** p_callback is called with the following arguments:  &lt;br /&gt;
&amp;lt;pre&amp;gt;( p_this, psz_name, oldval, val, p_config-&amp;gt;p_callback_data )&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** &#039;&#039;&#039;p_this&#039;&#039;&#039; is a pointer to a vlc_object_t struct&lt;br /&gt;
*** &#039;&#039;&#039;psz_name&#039;&#039;&#039; is the &#039;&#039;&#039;name&#039;&#039;&#039; of your parameter that is being changed&lt;br /&gt;
*** &#039;&#039;&#039;oldval&#039;&#039;&#039; is the old value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;val&#039;&#039;&#039; is the new value of the parameter&lt;br /&gt;
*** &#039;&#039;&#039;p_call_back_data&#039;&#039;&#039; is void* data that you can assign for each parameter.  Usually NULL.&lt;br /&gt;
* &#039;&#039;&#039;text&#039;&#039;&#039; A short description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;longtext&#039;&#039;&#039; A complete description of the parameter&lt;br /&gt;
* &#039;&#039;&#039;advc&#039;&#039;&#039; Boolean, ADVanced Configuration.  If TRUE, this parameter will only be displayed when using the --advanced flag. e.g. &lt;br /&gt;
&amp;lt;pre&amp;gt;vlc -p dvdread --advanced&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt; add_integer(&amp;quot;dvdread-angle&amp;quot;, 1, NULL, &amp;quot;DVD Angle&amp;quot;, &amp;quot;Default DVD Angle&amp;quot;, NULL&amp;quot;) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may add the following parameters to your module:&lt;br /&gt;
* add_integer&lt;br /&gt;
* add_string&lt;br /&gt;
* add_double&lt;br /&gt;
&lt;br /&gt;
== Open(vlc_object_t *) ==&lt;br /&gt;
&lt;br /&gt;
== Close(vlc_object_t *) ==&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7563</id>
		<title>Hacker Guide/How To Write a Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7563"/>
		<updated>2007-02-12T19:34:42Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This guide is being written by a VLC novice.  Please verify all statements below&lt;br /&gt;
*Using dvdread.c as the template&lt;br /&gt;
&lt;br /&gt;
== Module Descriptor ==&lt;br /&gt;
A VLC plugin must include a description of itself, and the parameters it accepts.&lt;br /&gt;
&lt;br /&gt;
The module descriptor begins with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vlc_module_being();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should set some category information on your module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_shortname( _(&amp;quot;DVD without menus&amp;quot;) );&lt;br /&gt;
    set_description( _(&amp;quot;DVDRead Input (DVD without menu support)&amp;quot;) );&lt;br /&gt;
    set_category( CAT_INPUT );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the use of _(&amp;quot;&amp;quot;) to create a string.  -- Is this required??&lt;br /&gt;
&lt;br /&gt;
Predefined Categories include:&lt;br /&gt;
* CAT_INTERFACE &lt;br /&gt;
* CAT_AUDIO&lt;br /&gt;
* CAT_VIDEO&lt;br /&gt;
* CAT_INPUT&lt;br /&gt;
* CAT_SOUT&lt;br /&gt;
* CAT_ADVANCED&lt;br /&gt;
* CAT_PLAYLIST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_subcategory( SUBCAT_INPUT_ACCESS );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See include/configuration.h for definition of all categories and sub-categories&lt;br /&gt;
&lt;br /&gt;
== Open(vlc_object_t *) ==&lt;br /&gt;
&lt;br /&gt;
== Close(vlc_object_t *) ==&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7562</id>
		<title>Hacker Guide/How To Write a Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hacker_Guide/How_To_Write_a_Module&amp;diff=7562"/>
		<updated>2007-02-12T19:28:39Z</updated>

		<summary type="html">&lt;p&gt;Mbarclay: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*This guide is being written by a VLC novice.  Please verify all statements below&lt;br /&gt;
*Using dvdread.c as the template&lt;br /&gt;
&lt;br /&gt;
== Module Descriptor ==&lt;br /&gt;
A VLC plugin must include a description of itself, and the parameters it accepts.&lt;br /&gt;
&lt;br /&gt;
The module descriptor begins with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vlc_module_being();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should set some category information on your module:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set_shortname( _(&amp;quot;DVD without menus&amp;quot;) );&lt;br /&gt;
    set_description( _(&amp;quot;DVDRead Input (DVD without menu support)&amp;quot;) );&lt;br /&gt;
    set_category( CAT_INPUT );&lt;br /&gt;
    set_subcategory( SUBCAT_INPUT_ACCESS );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note the use of _(&amp;quot;&amp;quot;) to create a string.  -- Is this required??&lt;br /&gt;
&lt;br /&gt;
Predefined Categories include:&lt;br /&gt;
* CAT_INTERFACE &lt;br /&gt;
* CAT_AUDIO&lt;br /&gt;
* CAT_VIDEO&lt;br /&gt;
* CAT_INPUT&lt;br /&gt;
* CAT_SOUT&lt;br /&gt;
* CAT_ADVANCED&lt;br /&gt;
* CAT_PLAYLIST&lt;br /&gt;
&lt;br /&gt;
== Open(vlc_object_t *) ==&lt;br /&gt;
&lt;br /&gt;
== Close(vlc_object_t *) ==&lt;/div&gt;</summary>
		<author><name>Mbarclay</name></author>
	</entry>
</feed>