]> git.sesse.net Git - vlc/blobdiff - src/libvlc-module.c
Win32: implement variable cleanup more similar to POSIX...
[vlc] / src / libvlc-module.c
index d4077fe6b3e65609b997f51cb8b2d8f036da40ea..7534890187e2aeee3ce9dba6ad92a08b804c90ba 100644 (file)
@@ -52,6 +52,7 @@ static const char *const ppsz_language[] =
     "bn",
     "pt_BR",
     "en_GB",
+    "el",
     "bg",
     "ca",
     "zh_TW",
@@ -66,6 +67,7 @@ static const char *const ppsz_language[] =
     "he",
     "hr",
     "hu",
+    "hy",
     "id",
     "it",
     "ja",
@@ -84,6 +86,7 @@ static const char *const ppsz_language[] =
     "ro",
     "ru",
     "zh_CN",
+    "si",
     "sr",
     "sk",
     "sl",
@@ -104,6 +107,7 @@ static const char *const ppsz_language_text[] =
     "বাংলা",
     "Português Brasileiro",
     "British English",
+    "Νέα Ελληνικά",
     "български език",
     "Català",
     "正體中文",
@@ -118,6 +122,7 @@ static const char *const ppsz_language_text[] =
     "עברית",
     "hrvatski",
     "Magyar",
+    "հայերեն",
     "Bahasa Indonesia",
     "Italiano",
     "日本語",
@@ -136,6 +141,7 @@ static const char *const ppsz_language_text[] =
     "Română",
     "Русский",
     "简体中文",
+    "සිංහල",
     "српски",
     "Slovensky",
     "slovenščina",
@@ -344,7 +350,7 @@ static const char *const ppsz_force_dolby_descriptions[] = {
     "Protect against sound clipping" )
 
 #define AUDIO_TIME_STRETCH_TEXT N_( \
-    "Enable time streching audio" )
+    "Enable time stretching audio" )
 #define AUDIO_TIME_STRETCH_LONGTEXT N_( \
     "This allows to play audio at lower or higher speed without " \
     "affecting the audio pitch" )
@@ -505,9 +511,9 @@ static const char *const ppsz_pos_descriptions[] =
     "VLC can avoid creating window caption, frames, etc... around the video" \
     ", giving a \"minimal\" window.")
 
-#define VOUT_FILTER_TEXT N_("Video output filter module")
-#define VOUT_FILTER_LONGTEXT N_( \
-    "This adds video output filters like clone or wall" )
+#define VIDEO_SPLITTER_TEXT N_("Video splitter module")
+#define VIDEO_SPLITTER_LONGTEXT N_( \
+    "This adds video splitters like clone or wall" )
 
 #define VIDEO_FILTER_TEXT N_("Video filter module")
 #define VIDEO_FILTER_LONGTEXT N_( \
@@ -640,8 +646,8 @@ static const char *const ppsz_pos_descriptions[] =
 
 #define CLOCK_JITTER_TEXT N_("Clock jitter")
 #define CLOCK_JITTER_LONGTEXT N_( \
-    "It tells the clock algorithms what is the maximal input jitter that " \
-    "is considered valid and can be compensated (in milliseconds)" )
+    "This defines the maximum input delay jitter that the synchronization " \
+    "algorithms should try to compensate (in milliseconds)." )
 
 #define NETSYNC_TEXT N_("Network synchronisation" )
 #define NETSYNC_LONGTEXT N_( "This allows you to remotely " \
@@ -841,24 +847,44 @@ static const char *const ppsz_clock_descriptions[] =
     "Load this subtitle file. To be used when autodetect cannot detect " \
     "your subtitle file.")
 
+/* DVD and VCD devices */
 #define DVD_DEV_TEXT N_("DVD device")
+#define VCD_DEV_TEXT N_("VCD device")
+#define CDAUDIO_DEV_TEXT N_("Audio CD device")
+
 #ifdef WIN32
-#define DVD_DEV_LONGTEXT N_( \
+# define DVD_DEV_LONGTEXT N_( \
     "This is the default DVD drive (or file) to use. Don't forget the colon " \
-    "after the drive letter (eg. D:)")
+    "after the drive letter (e.g. D:)")
+# define VCD_DEV_LONGTEXT N_( \
+    "This is the default VCD drive (or file) to use. Don't forget the colon " \
+    "after the drive letter (e.g. D:)")
+# define CDAUDIO_DEV_LONGTEXT N_( \
+    "This is the default Audio CD drive (or file) to use. Don't forget the " \
+    "colon after the drive letter (e.g. D:)")
+# define DVD_DEVICE     NULL
+# define CD_DEVICE      "D:"
+
 #else
-#define DVD_DEV_LONGTEXT N_( \
+# define DVD_DEV_LONGTEXT N_( \
     "This is the default DVD device to use.")
-#endif
-
-#define VCD_DEV_TEXT N_("VCD device")
-#define VCD_DEV_LONGTEXT N_( \
+# define VCD_DEV_LONGTEXT N_( \
     "This is the default VCD device to use." )
-
-#define CDAUDIO_DEV_TEXT N_("Audio CD device")
-#define CDAUDIO_DEV_LONGTEXT N_( \
+# define CDAUDIO_DEV_LONGTEXT N_( \
     "This is the default Audio CD device to use." )
 
+# if defined(__OpenBSD__)
+#  define DVD_DEVICE     "/dev/cd0c"
+#  define CD_DEVICE      "/dev/cd0c"
+# else
+#  define DVD_DEVICE     "/dev/dvd"
+#  define CD_DEVICE      "/dev/cdrom"
+# endif
+#endif
+
+#define VCD_DEVICE       CD_DEVICE
+#define CDAUDIO_DEVICE   CD_DEVICE
+
 #define IPV6_TEXT N_("Force IPv6")
 #define IPV6_LONGTEXT N_( \
     "IPv6 will be used by default for all connections.")
@@ -1257,6 +1283,10 @@ static const char *const ppsz_albumart_descriptions[] =
     "The media library is automatically saved and reloaded each time you " \
     "start VLC." )
 
+#define LOAD_ML_TEXT N_( "Load Media Library" )
+#define LOAD_ML_LONGTEXT N_( \
+    "Enable this option to load the SQL-based Media Library at VLC startup" )
+
 #define PLTREE_TEXT N_("Display playlist tree")
 #define PLTREE_LONGTEXT N_( \
     "The playlist can use a tree to categorize some items, like the " \
@@ -1549,15 +1579,16 @@ const char vlc_usage[] = N_(
  * add_category_hint( N_(text), N_(longtext), b_advanced_option )
  * add_subcategory_hint( N_(text), N_(longtext), b_advanced_option )
  * add_usage_hint( N_(text), b_advanced_option )
- * add_string( option_name, value, p_callback, N_(text), N_(longtext),
+ * add_string( option_name, value, N_(text), N_(longtext),
                b_advanced_option )
- * add_file( option_name, psz_value, p_callback, N_(text), N_(longtext) )
+ * add_loadfile( option_name, psz_value, N_(text), N_(longtext) )
+ * add_savefile( option_name, psz_value, N_(text), N_(longtext) )
  * add_module( option_name, psz_value, i_capability, p_callback,
  *             N_(text), N_(longtext) )
- * add_integer( option_name, i_value, p_callback, N_(text), N_(longtext),
               b_advanced_option )
- * add_bool( option_name, b_value, p_callback, N_(text), N_(longtext),
            b_advanced_option )
+ * add_integer( option_name, i_value, N_(text), N_(longtext),
*              b_advanced_option )
+ * add_bool( option_name, b_value, N_(text), N_(longtext),
*           b_advanced_option )
  */
 
 vlc_module_begin ()
@@ -1566,7 +1597,7 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_AUDIO_GENERAL )
     add_category_hint( N_("Audio"), AOUT_CAT_LONGTEXT , false )
 
-    add_bool( "audio", 1, NULL, AUDIO_TEXT, AUDIO_LONGTEXT, false )
+    add_bool( "audio", 1, AUDIO_TEXT, AUDIO_LONGTEXT, false )
         change_safe ()
     add_integer_with_range( "volume", AOUT_VOLUME_DEFAULT, AOUT_VOLUME_MIN,
                             AOUT_VOLUME_MAX, NULL, VOLUME_TEXT,
@@ -1574,32 +1605,32 @@ vlc_module_begin ()
     add_integer_with_range( "volume-step", AOUT_VOLUME_STEP, AOUT_VOLUME_MIN,
                             AOUT_VOLUME_MAX, NULL, VOLUME_STEP_TEXT,
                             VOLUME_STEP_LONGTEXT, true )
-    add_integer( "aout-rate", -1, NULL, AOUT_RATE_TEXT,
+    add_integer( "aout-rate", -1, AOUT_RATE_TEXT,
                  AOUT_RATE_LONGTEXT, true )
 #if HAVE_FPU && !defined( __APPLE__ )
-    add_bool( "hq-resampling", 1, NULL, AOUT_RESAMP_TEXT,
+    add_bool( "hq-resampling", 1, AOUT_RESAMP_TEXT,
               AOUT_RESAMP_LONGTEXT, true )
 #endif
-    add_bool( "spdif", 0, NULL, SPDIF_TEXT, SPDIF_LONGTEXT, false )
-    add_integer( "force-dolby-surround", 0, NULL, FORCE_DOLBY_TEXT,
+    add_bool( "spdif", 0, SPDIF_TEXT, SPDIF_LONGTEXT, false )
+    add_integer( "force-dolby-surround", 0, FORCE_DOLBY_TEXT,
                  FORCE_DOLBY_LONGTEXT, false )
-        change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions, NULL )
-    add_integer( "audio-desync", 0, NULL, DESYNC_TEXT,
+        change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions )
+    add_integer( "audio-desync", 0, DESYNC_TEXT,
                  DESYNC_LONGTEXT, true )
         change_safe ()
 
     /* FIXME TODO create a subcat replay gain ? */
-    add_string( "audio-replay-gain-mode", ppsz_replay_gain_mode[0], NULL, AUDIO_REPLAY_GAIN_MODE_TEXT,
+    add_string( "audio-replay-gain-mode", ppsz_replay_gain_mode[0], AUDIO_REPLAY_GAIN_MODE_TEXT,
                 AUDIO_REPLAY_GAIN_MODE_LONGTEXT, false )
         change_string_list( ppsz_replay_gain_mode, ppsz_replay_gain_mode_text, 0 )
-    add_float( "audio-replay-gain-preamp", 0.0, NULL,
+    add_float( "audio-replay-gain-preamp", 0.0,
                AUDIO_REPLAY_GAIN_PREAMP_TEXT, AUDIO_REPLAY_GAIN_PREAMP_LONGTEXT, false )
-    add_float( "audio-replay-gain-default", -7.0, NULL,
+    add_float( "audio-replay-gain-default", -7.0,
                AUDIO_REPLAY_GAIN_DEFAULT_TEXT, AUDIO_REPLAY_GAIN_DEFAULT_LONGTEXT, false )
-    add_bool( "audio-replay-gain-peak-protection", true, NULL,
+    add_bool( "audio-replay-gain-peak-protection", true,
               AUDIO_REPLAY_GAIN_PEAK_PROTECTION_TEXT, AUDIO_REPLAY_GAIN_PEAK_PROTECTION_LONGTEXT, true )
 
-    add_bool( "audio-time-stretch", HAVE_FPU, NULL,
+    add_bool( "audio-time-stretch", HAVE_FPU,
               AUDIO_TIME_STRETCH_TEXT, AUDIO_TIME_STRETCH_LONGTEXT, false )
 
     set_subcategory( SUBCAT_AUDIO_AOUT )
@@ -1611,7 +1642,7 @@ vlc_module_begin ()
                          NULL, AUDIO_FILTER_TEXT,
                          AUDIO_FILTER_LONGTEXT, false )
     set_subcategory( SUBCAT_AUDIO_VISUAL )
-    add_module( "audio-visual", "visualization",NULL, NULL,AUDIO_VISUAL_TEXT,
+    add_module( "audio-visual", "visualization2",NULL, NULL,AUDIO_VISUAL_TEXT,
                 AUDIO_VISUAL_LONGTEXT, false )
 
 /* Video options */
@@ -1619,121 +1650,124 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_VIDEO_GENERAL )
     add_category_hint( N_("Video"), VOUT_CAT_LONGTEXT , false )
 
-    add_bool( "video", 1, NULL, VIDEO_TEXT, VIDEO_LONGTEXT, true )
+    add_bool( "video", 1, VIDEO_TEXT, VIDEO_LONGTEXT, true )
         change_safe ()
-    add_bool( "grayscale", 0, NULL, GRAYSCALE_TEXT,
+    add_bool( "grayscale", 0, GRAYSCALE_TEXT,
               GRAYSCALE_LONGTEXT, true )
 #if defined (HAVE_MAEMO)
 # define FULLSCREEN_DEFAULT true
 #else
 # define FULLSCREEN_DEFAULT false
 #endif
-    add_bool( "fullscreen", FULLSCREEN_DEFAULT, NULL, FULLSCREEN_TEXT,
+    add_bool( "fullscreen", FULLSCREEN_DEFAULT, FULLSCREEN_TEXT,
               FULLSCREEN_LONGTEXT, false )
         change_short('f')
         change_safe ()
-    add_bool( "embedded-video", 1, NULL, EMBEDDED_TEXT, EMBEDDED_LONGTEXT,
+    add_bool( "embedded-video", 1, EMBEDDED_TEXT, EMBEDDED_LONGTEXT,
               true )
 #ifdef __APPLE__
        add_deprecated_alias( "macosx-embedded" ) /*deprecated since 0.9.0 */
 #endif
-    add_string( "x11-display", NULL, NULL,
+    add_string( "x11-display", NULL,
                 DISPLAY_TEXT, DISPLAY_LONGTEXT, true )
         add_deprecated_alias( "xvideo-display" ) /* deprecated since 1.1.0 */
-    add_bool( "drop-late-frames", 1, NULL, DROP_LATE_FRAMES_TEXT,
+        //add_deprecated_alias( "glx-display" ) cannot have more than one
+    add_bool( "xlib", true, "", "", true )
+        change_private ()
+    add_bool( "drop-late-frames", 1, DROP_LATE_FRAMES_TEXT,
               DROP_LATE_FRAMES_LONGTEXT, true )
     /* Used in vout_synchro */
-    add_bool( "skip-frames", 1, NULL, SKIP_FRAMES_TEXT,
+    add_bool( "skip-frames", 1, SKIP_FRAMES_TEXT,
               SKIP_FRAMES_LONGTEXT, true )
-    add_bool( "quiet-synchro", 0, NULL, QUIET_SYNCHRO_TEXT,
+    add_bool( "quiet-synchro", 0, QUIET_SYNCHRO_TEXT,
               QUIET_SYNCHRO_LONGTEXT, true )
-    add_bool( "keyboard-events", true, NULL, KEYBOARD_EVENTS_TEXT,
+    add_bool( "keyboard-events", true, KEYBOARD_EVENTS_TEXT,
               KEYBOARD_EVENTS_LONGTEXT, true )
-    add_bool( "mouse-events", true, NULL, MOUSE_EVENTS_TEXT,
+    add_bool( "mouse-events", true, MOUSE_EVENTS_TEXT,
               MOUSE_EVENTS_LONGTEXT, true )
     add_obsolete_integer( "vout-event" ) /* deprecated since 1.1.0 */
     add_obsolete_integer( "x11-event" ) /* renamed since 1.0.0 */
 #ifndef __APPLE__
-    add_bool( "overlay", 1, NULL, OVERLAY_TEXT, OVERLAY_LONGTEXT, false )
+    add_bool( "overlay", 1, OVERLAY_TEXT, OVERLAY_LONGTEXT, false )
         change_safe()
 #endif
-    add_bool( "video-on-top", 0, NULL, VIDEO_ON_TOP_TEXT,
+    add_bool( "video-on-top", 0, VIDEO_ON_TOP_TEXT,
               VIDEO_ON_TOP_LONGTEXT, false )
-    add_bool( "video-wallpaper", false, NULL, WALLPAPER_TEXT,
+    add_bool( "video-wallpaper", false, WALLPAPER_TEXT,
               WALLPAPER_LONGTEXT, false )
 #ifdef WIN32
         add_deprecated_alias( "directx-wallpaper" )
 #endif
-    add_bool( "disable-screensaver", true, NULL, SS_TEXT, SS_LONGTEXT,
+    add_bool( "disable-screensaver", true, SS_TEXT, SS_LONGTEXT,
               true )
 
-    add_bool( "video-title-show", 1, NULL, VIDEO_TITLE_SHOW_TEXT,
+    add_bool( "video-title-show", 1, VIDEO_TITLE_SHOW_TEXT,
               VIDEO_TITLE_SHOW_LONGTEXT, false )
         change_safe()
-    add_integer( "video-title-timeout", 5000, NULL, VIDEO_TITLE_TIMEOUT_TEXT,
+    add_integer( "video-title-timeout", 5000, VIDEO_TITLE_TIMEOUT_TEXT,
                  VIDEO_TITLE_TIMEOUT_LONGTEXT, false )
         change_safe()
-    add_integer( "video-title-position", 8, NULL, VIDEO_TITLE_POSITION_TEXT,
+    add_integer( "video-title-position", 8, VIDEO_TITLE_POSITION_TEXT,
                  VIDEO_TITLE_POSITION_LONGTEXT, false )
         change_safe()
-        change_integer_list( pi_pos_values, ppsz_pos_descriptions, NULL )
+        change_integer_list( pi_pos_values, ppsz_pos_descriptions )
     // autohide after 1.5s
-    add_integer( "mouse-hide-timeout", 1500, NULL, MOUSE_HIDE_TIMEOUT_TEXT,
+    add_integer( "mouse-hide-timeout", 1500, MOUSE_HIDE_TIMEOUT_TEXT,
                  MOUSE_HIDE_TIMEOUT_LONGTEXT, false )
     set_section( N_("Snapshot") , NULL )
-    add_directory( "snapshot-path", NULL, NULL, SNAP_PATH_TEXT,
+    add_directory( "snapshot-path", NULL, SNAP_PATH_TEXT,
                    SNAP_PATH_LONGTEXT, false )
-    add_string( "snapshot-prefix", "vlcsnap-", NULL, SNAP_PREFIX_TEXT,
+    add_string( "snapshot-prefix", "vlcsnap-", SNAP_PREFIX_TEXT,
                    SNAP_PREFIX_LONGTEXT, false )
-    add_string( "snapshot-format", "png", NULL, SNAP_FORMAT_TEXT,
+    add_string( "snapshot-format", "png", SNAP_FORMAT_TEXT,
                    SNAP_FORMAT_LONGTEXT, false )
         change_string_list( ppsz_snap_formats, NULL, 0 )
-    add_bool( "snapshot-preview", true, NULL, SNAP_PREVIEW_TEXT,
+    add_bool( "snapshot-preview", true, SNAP_PREVIEW_TEXT,
               SNAP_PREVIEW_LONGTEXT, false )
-    add_bool( "snapshot-sequential", false, NULL, SNAP_SEQUENTIAL_TEXT,
+    add_bool( "snapshot-sequential", false, SNAP_SEQUENTIAL_TEXT,
               SNAP_SEQUENTIAL_LONGTEXT, false )
-    add_integer( "snapshot-width", -1, NULL, SNAP_WIDTH_TEXT,
+    add_integer( "snapshot-width", -1, SNAP_WIDTH_TEXT,
                  SNAP_WIDTH_LONGTEXT, true )
-    add_integer( "snapshot-height", -1, NULL, SNAP_HEIGHT_TEXT,
+    add_integer( "snapshot-height", -1, SNAP_HEIGHT_TEXT,
                  SNAP_HEIGHT_LONGTEXT, true )
 
     set_section( N_("Window properties" ), NULL )
-    add_integer( "width", -1, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, true )
+    add_integer( "width", -1, WIDTH_TEXT, WIDTH_LONGTEXT, true )
         change_safe ()
-    add_integer( "height", -1, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, true )
+    add_integer( "height", -1, HEIGHT_TEXT, HEIGHT_LONGTEXT, true )
         change_safe ()
-    add_integer( "video-x", 0, NULL, VIDEOX_TEXT, VIDEOX_LONGTEXT, true )
+    add_integer( "video-x", 0, VIDEOX_TEXT, VIDEOX_LONGTEXT, true )
         change_safe ()
-    add_integer( "video-y", 0, NULL, VIDEOY_TEXT, VIDEOY_LONGTEXT, true )
+    add_integer( "video-y", 0, VIDEOY_TEXT, VIDEOY_LONGTEXT, true )
         change_safe ()
-    add_string( "crop", NULL, NULL, CROP_TEXT, CROP_LONGTEXT, false )
+    add_string( "crop", NULL, CROP_TEXT, CROP_LONGTEXT, false )
         change_safe ()
-    add_string( "custom-crop-ratios", NULL, NULL, CUSTOM_CROP_RATIOS_TEXT,
+    add_string( "custom-crop-ratios", NULL, CUSTOM_CROP_RATIOS_TEXT,
                 CUSTOM_CROP_RATIOS_LONGTEXT, false )
-    add_string( "aspect-ratio", NULL, NULL,
+    add_string( "aspect-ratio", NULL,
                 ASPECT_RATIO_TEXT, ASPECT_RATIO_LONGTEXT, false )
         change_safe ()
-    add_bool( "autoscale", true, NULL, AUTOSCALE_TEXT, AUTOSCALE_LONGTEXT, false )
+    add_bool( "autoscale", true, AUTOSCALE_TEXT, AUTOSCALE_LONGTEXT, false )
         change_safe ()
-    add_float( "scale", 1.0, NULL, SCALEFACTOR_TEXT, SCALEFACTOR_LONGTEXT, false )
+    add_float( "scale", 1.0, SCALEFACTOR_TEXT, SCALEFACTOR_LONGTEXT, false )
         change_safe ()
-    add_string( "monitor-par", NULL, NULL,
+    add_string( "monitor-par", NULL,
                 MASPECT_RATIO_TEXT, MASPECT_RATIO_LONGTEXT, true )
-    add_string( "custom-aspect-ratios", NULL, NULL, CUSTOM_ASPECT_RATIOS_TEXT,
+    add_string( "custom-aspect-ratios", NULL, CUSTOM_ASPECT_RATIOS_TEXT,
                 CUSTOM_ASPECT_RATIOS_LONGTEXT, false )
-    add_bool( "hdtv-fix", 1, NULL, HDTV_FIX_TEXT, HDTV_FIX_LONGTEXT, true )
-    add_bool( "video-deco", 1, NULL, VIDEO_DECO_TEXT,
+    add_bool( "hdtv-fix", 1, HDTV_FIX_TEXT, HDTV_FIX_LONGTEXT, true )
+    add_bool( "video-deco", 1, VIDEO_DECO_TEXT,
               VIDEO_DECO_LONGTEXT, true )
-    add_string( "video-title", NULL, NULL, VIDEO_TITLE_TEXT,
+    add_string( "video-title", NULL, VIDEO_TITLE_TEXT,
                  VIDEO_TITLE_LONGTEXT, true )
-    add_integer( "align", 0, NULL, ALIGN_TEXT, ALIGN_LONGTEXT, true )
-        change_integer_list( pi_align_values, ppsz_align_descriptions, NULL )
-    add_float( "zoom", 1, NULL, ZOOM_TEXT, ZOOM_LONGTEXT, true )
-    add_integer( "deinterlace", 0, NULL,
+    add_integer( "align", 0, ALIGN_TEXT, ALIGN_LONGTEXT, true )
+        change_integer_list( pi_align_values, ppsz_align_descriptions )
+    add_float( "zoom", 1, ZOOM_TEXT, ZOOM_LONGTEXT, true )
+    add_integer( "deinterlace", 0,
                  DEINTERLACE_TEXT, DEINTERLACE_LONGTEXT, false )
-        change_integer_list( pi_deinterlace, ppsz_deinterlace_text, 0 )
+        change_integer_list( pi_deinterlace, ppsz_deinterlace_text )
         change_safe()
-    add_string( "deinterlace-mode", "blend", NULL,
+    add_string( "deinterlace-mode", "blend",
                 DEINTERLACE_MODE_TEXT, DEINTERLACE_MODE_LONGTEXT, false )
         change_string_list( ppsz_deinterlace_mode, ppsz_deinterlace_mode_text, 0 )
         change_safe()
@@ -1746,11 +1780,11 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_VIDEO_VFILTER )
     add_module_list_cat( "video-filter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
                 VIDEO_FILTER_TEXT, VIDEO_FILTER_LONGTEXT, false )
-        add_deprecated_alias( "filter" ) /*deprecated since 0.8.2 */
-    add_module_list_cat( "vout-filter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
-                        VOUT_FILTER_TEXT, VOUT_FILTER_LONGTEXT, false )
+    add_module_list_cat( "video-splitter", SUBCAT_VIDEO_VFILTER, NULL, NULL,
+                        VIDEO_SPLITTER_TEXT, VIDEO_SPLITTER_LONGTEXT, false )
+    add_deprecated_alias( "vout-filter" )
 #if 0
-    add_string( "pixel-ratio", "1", NULL, PIXEL_RATIO_TEXT, PIXEL_RATIO_TEXT )
+    add_string( "pixel-ratio", "1", PIXEL_RATIO_TEXT, PIXEL_RATIO_TEXT )
 #endif
 
 /* Subpictures options */
@@ -1758,30 +1792,29 @@ vlc_module_begin ()
     set_section( N_("On Screen Display") , NULL )
     add_category_hint( N_("Subpictures"), SUB_CAT_LONGTEXT , false )
 
-    add_bool( "spu", 1, NULL, SPU_TEXT, SPU_LONGTEXT, true )
+    add_bool( "spu", 1, SPU_TEXT, SPU_LONGTEXT, true )
         change_safe ()
-    add_bool( "osd", 1, NULL, OSD_TEXT, OSD_LONGTEXT, false )
+    add_bool( "osd", 1, OSD_TEXT, OSD_LONGTEXT, false )
     add_module( "text-renderer", "text renderer", NULL, NULL, TEXTRENDERER_TEXT,
                 TEXTRENDERER_LONGTEXT, true )
 
     set_section( N_("Subtitles") , NULL )
-    add_file( "sub-file", NULL, NULL, SUB_FILE_TEXT,
-              SUB_FILE_LONGTEXT, false )
+    add_loadfile( "sub-file", NULL, SUB_FILE_TEXT,
+                  SUB_FILE_LONGTEXT, false )
         change_safe()
-    add_bool( "sub-autodetect-file", true, NULL,
+    add_bool( "sub-autodetect-file", true,
                  SUB_AUTO_TEXT, SUB_AUTO_LONGTEXT, false )
-    add_integer( "sub-autodetect-fuzzy", 3, NULL,
+    add_integer( "sub-autodetect-fuzzy", 3,
                  SUB_FUZZY_TEXT, SUB_FUZZY_LONGTEXT, true )
 #ifdef WIN32
 #   define SUB_PATH ".\\subtitles"
 #else
 #   define SUB_PATH "./Subtitles, ./subtitles"
 #endif
-    add_string( "sub-autodetect-path", SUB_PATH, NULL,
+    add_string( "sub-autodetect-path", SUB_PATH,
                  SUB_PATH_TEXT, SUB_PATH_LONGTEXT, true )
-    add_integer( "sub-margin", 0, NULL, SUB_MARGIN_TEXT,
+    add_integer( "sub-margin", 0, SUB_MARGIN_TEXT,
                  SUB_MARGIN_LONGTEXT, true )
-        add_deprecated_alias( "spu-margin" ) /*Deprecated since 0.8.2 */
     set_section( N_( "Overlays" ) , NULL )
     add_module_list_cat( "sub-filter", SUBCAT_VIDEO_SUBPIC, NULL, NULL,
                 SUB_FILTER_TEXT, SUB_FILTER_LONGTEXT, false )
@@ -1791,147 +1824,146 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_INPUT_GENERAL )
 
     set_section( N_( "Track settings" ), NULL )
-    add_integer( "program", 0, NULL,
+    add_integer( "program", 0,
                  INPUT_PROGRAM_TEXT, INPUT_PROGRAM_LONGTEXT, true )
         change_safe ()
-    add_string( "programs", "", NULL,
+    add_string( "programs", "",
                 INPUT_PROGRAMS_TEXT, INPUT_PROGRAMS_LONGTEXT, true )
         change_safe ()
-    add_integer( "audio-track", -1, NULL,
+    add_integer( "audio-track", -1,
                  INPUT_AUDIOTRACK_TEXT, INPUT_AUDIOTRACK_LONGTEXT, true )
         change_safe ()
-        add_deprecated_alias( "audio-channel" ) /*deprecated since 0.8.2 */
-    add_integer( "sub-track", -1, NULL,
+    add_integer( "sub-track", -1,
                  INPUT_SUBTRACK_TEXT, INPUT_SUBTRACK_LONGTEXT, true )
         change_safe ()
-        add_deprecated_alias("spu-channel" ) /*deprecated since 0.8.2*/
-    add_string( "audio-language", "", NULL,
+    add_string( "audio-language", "",
                  INPUT_AUDIOTRACK_LANG_TEXT, INPUT_AUDIOTRACK_LANG_LONGTEXT,
                   false )
         change_safe ()
-    add_string( "sub-language", "", NULL,
+    add_string( "sub-language", "",
                  INPUT_SUBTRACK_LANG_TEXT, INPUT_SUBTRACK_LANG_LONGTEXT,
                   false )
         change_safe ()
-    add_integer( "audio-track-id", -1, NULL, INPUT_AUDIOTRACK_ID_TEXT,
+    add_integer( "audio-track-id", -1, INPUT_AUDIOTRACK_ID_TEXT,
                  INPUT_AUDIOTRACK_ID_LONGTEXT, true )
         change_safe ()
-    add_integer( "sub-track-id", -1, NULL,
+    add_integer( "sub-track-id", -1,
                  INPUT_SUBTRACK_ID_TEXT, INPUT_SUBTRACK_ID_LONGTEXT, true )
         change_safe ()
 
     set_section( N_( "Playback control" ) , NULL)
-    add_integer( "input-repeat", 0, NULL,
+    add_integer( "input-repeat", 0,
                  INPUT_REPEAT_TEXT, INPUT_REPEAT_LONGTEXT, false )
         change_safe ()
-    add_float( "start-time", 0, NULL,
+    add_float( "start-time", 0,
                START_TIME_TEXT, START_TIME_LONGTEXT, true )
         change_safe ()
-    add_float( "stop-time", 0, NULL,
+    add_float( "stop-time", 0,
                STOP_TIME_TEXT, STOP_TIME_LONGTEXT, true )
         change_safe ()
-    add_float( "run-time", 0, NULL,
+    add_float( "run-time", 0,
                RUN_TIME_TEXT, RUN_TIME_LONGTEXT, true )
         change_safe ()
-    add_bool( "input-fast-seek", false, NULL,
+    add_bool( "input-fast-seek", false,
               INPUT_FAST_SEEK_TEXT, INPUT_FAST_SEEK_LONGTEXT, false )
         change_safe ()
-    add_float( "rate", 1., NULL,
+    add_float( "rate", 1.,
                INPUT_RATE_TEXT, INPUT_RATE_LONGTEXT, false )
 
-    add_string( "input-list", NULL, NULL,
+    add_string( "input-list", NULL,
                  INPUT_LIST_TEXT, INPUT_LIST_LONGTEXT, true )
-    add_string( "input-slave", NULL, NULL,
+    add_string( "input-slave", NULL,
                  INPUT_SLAVE_TEXT, INPUT_SLAVE_LONGTEXT, true )
 
-    add_string( "bookmarks", NULL, NULL,
+    add_string( "bookmarks", NULL,
                  BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, true )
+        change_safe ()
 
     set_section( N_( "Default devices") , NULL )
 
-    add_file( "dvd", DVD_DEVICE, NULL, DVD_DEV_TEXT, DVD_DEV_LONGTEXT,
-              false )
-    add_file( "vcd", VCD_DEVICE, NULL, VCD_DEV_TEXT, VCD_DEV_LONGTEXT,
-              false )
-    add_file( "cd-audio", CDAUDIO_DEVICE, NULL, CDAUDIO_DEV_TEXT,
-              CDAUDIO_DEV_LONGTEXT, false )
+    add_loadfile( "dvd", DVD_DEVICE, DVD_DEV_TEXT, DVD_DEV_LONGTEXT,
+                  false )
+    add_loadfile( "vcd", VCD_DEVICE, VCD_DEV_TEXT, VCD_DEV_LONGTEXT,
+                  false )
+    add_loadfile( "cd-audio", CDAUDIO_DEVICE, CDAUDIO_DEV_TEXT,
+                  CDAUDIO_DEV_LONGTEXT, false )
 
     set_section( N_( "Network settings" ), NULL )
 
-    add_integer( "server-port", 1234, NULL,
+    add_integer( "server-port", 1234,
                  SERVER_PORT_TEXT, SERVER_PORT_LONGTEXT, false )
-    add_integer( "mtu", MTU_DEFAULT, NULL, MTU_TEXT, MTU_LONGTEXT, true )
-    add_bool( "ipv6", 0, NULL, IPV6_TEXT, IPV6_LONGTEXT, false )
+    add_integer( "mtu", MTU_DEFAULT, MTU_TEXT, MTU_LONGTEXT, true )
+    add_bool( "ipv6", 0, IPV6_TEXT, IPV6_LONGTEXT, false )
         change_short('6')
-    add_bool( "ipv4", 0, NULL, IPV4_TEXT, IPV4_LONGTEXT, false )
+    add_bool( "ipv4", 0, IPV4_TEXT, IPV4_LONGTEXT, false )
         change_short('4')
-    add_integer( "ipv4-timeout", 5 * 1000, NULL, TIMEOUT_TEXT,
+    add_integer( "ipv4-timeout", 5 * 1000, TIMEOUT_TEXT,
                  TIMEOUT_LONGTEXT, true )
 
     set_section( N_( "Socks proxy") , NULL )
-    add_string( "socks", NULL, NULL,
+    add_string( "socks", NULL,
                  SOCKS_SERVER_TEXT, SOCKS_SERVER_LONGTEXT, true )
-    add_string( "socks-user", NULL, NULL,
+    add_string( "socks-user", NULL,
                  SOCKS_USER_TEXT, SOCKS_USER_LONGTEXT, true )
-    add_string( "socks-pwd", NULL, NULL,
+    add_string( "socks-pwd", NULL,
                  SOCKS_PASS_TEXT, SOCKS_PASS_LONGTEXT, true )
 
 
     set_section( N_("Metadata" ) , NULL )
-    add_string( "meta-title", NULL, NULL, META_TITLE_TEXT,
+    add_string( "meta-title", NULL, META_TITLE_TEXT,
                 META_TITLE_LONGTEXT, true )
         change_safe()
-    add_string( "meta-author", NULL, NULL, META_AUTHOR_TEXT,
+    add_string( "meta-author", NULL, META_AUTHOR_TEXT,
                 META_AUTHOR_LONGTEXT, true )
         change_safe()
-    add_string( "meta-artist", NULL, NULL, META_ARTIST_TEXT,
+    add_string( "meta-artist", NULL, META_ARTIST_TEXT,
                 META_ARTIST_LONGTEXT, true )
         change_safe()
-    add_string( "meta-genre", NULL, NULL, META_GENRE_TEXT,
+    add_string( "meta-genre", NULL, META_GENRE_TEXT,
                 META_GENRE_LONGTEXT, true )
         change_safe()
-    add_string( "meta-copyright", NULL, NULL, META_CPYR_TEXT,
+    add_string( "meta-copyright", NULL, META_CPYR_TEXT,
                 META_CPYR_LONGTEXT, true )
         change_safe()
-    add_string( "meta-description", NULL, NULL, META_DESCR_TEXT,
+    add_string( "meta-description", NULL, META_DESCR_TEXT,
                 META_DESCR_LONGTEXT, true )
         change_safe()
-    add_string( "meta-date", NULL, NULL, META_DATE_TEXT,
+    add_string( "meta-date", NULL, META_DATE_TEXT,
                 META_DATE_LONGTEXT, true )
         change_safe()
-    add_string( "meta-url", NULL, NULL, META_URL_TEXT,
+    add_string( "meta-url", NULL, META_URL_TEXT,
                 META_URL_LONGTEXT, true )
         change_safe()
 
     set_section( N_( "Advanced" ), NULL )
 
-    add_integer( "cr-average", 40, NULL, CR_AVERAGE_TEXT,
+    add_integer( "cr-average", 40, CR_AVERAGE_TEXT,
                  CR_AVERAGE_LONGTEXT, true )
-    add_integer( "clock-synchro", -1, NULL, CLOCK_SYNCHRO_TEXT,
+    add_integer( "clock-synchro", -1, CLOCK_SYNCHRO_TEXT,
                  CLOCK_SYNCHRO_LONGTEXT, true )
-        change_integer_list( pi_clock_values, ppsz_clock_descriptions, NULL )
-    add_integer( "clock-jitter", 5 * CLOCK_FREQ/1000, NULL, CLOCK_JITTER_TEXT,
+        change_integer_list( pi_clock_values, ppsz_clock_descriptions )
+    add_integer( "clock-jitter", 5 * CLOCK_FREQ/1000, CLOCK_JITTER_TEXT,
               CLOCK_JITTER_LONGTEXT, true )
         change_safe()
 
-    add_bool( "network-synchronisation", false, NULL, NETSYNC_TEXT,
+    add_bool( "network-synchronisation", false, NETSYNC_TEXT,
               NETSYNC_LONGTEXT, true )
 
-    add_string( "input-record-path", NULL, NULL, INPUT_RECORD_PATH_TEXT,
+    add_string( "input-record-path", NULL, INPUT_RECORD_PATH_TEXT,
                 INPUT_RECORD_PATH_LONGTEXT, true )
-    add_bool( "input-record-native", true, NULL, INPUT_RECORD_NATIVE_TEXT,
+    add_bool( "input-record-native", true, INPUT_RECORD_NATIVE_TEXT,
               INPUT_RECORD_NATIVE_LONGTEXT, true )
 
-    add_string( "input-timeshift-path", NULL, NULL, INPUT_TIMESHIFT_PATH_TEXT,
+    add_string( "input-timeshift-path", NULL, INPUT_TIMESHIFT_PATH_TEXT,
                 INPUT_TIMESHIFT_PATH_LONGTEXT, true )
-    add_integer( "input-timeshift-granularity", -1, NULL, INPUT_TIMESHIFT_GRANULARITY_TEXT,
+    add_integer( "input-timeshift-granularity", -1, INPUT_TIMESHIFT_GRANULARITY_TEXT,
                  INPUT_TIMESHIFT_GRANULARITY_LONGTEXT, true )
 
 /* Decoder options */
     add_category_hint( N_("Decoders"), CODEC_CAT_LONGTEXT , true )
-    add_string( "codec", NULL, NULL, CODEC_TEXT,
+    add_string( "codec", NULL, CODEC_TEXT,
                 CODEC_LONGTEXT, true )
-    add_string( "encoder",  NULL, NULL, ENCODER_TEXT,
+    add_string( "encoder",  NULL, ENCODER_TEXT,
                 ENCODER_LONGTEXT, true )
 
     set_subcategory( SUBCAT_INPUT_ACCESS )
@@ -1945,7 +1977,7 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_INPUT_VCODEC )
     set_subcategory( SUBCAT_INPUT_ACODEC )
     set_subcategory( SUBCAT_INPUT_SCODEC )
-    add_bool( "prefer-system-codecs", false, NULL, SYSTEM_CODEC_TEXT,
+    add_bool( "prefer-system-codecs", false, SYSTEM_CODEC_TEXT,
                                 SYSTEM_CODEC_LONGTEXT, false )
 
     set_subcategory( SUBCAT_INPUT_STREAM_FILTER )
@@ -1958,24 +1990,24 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_SOUT_GENERAL )
     add_category_hint( N_("Stream output"), SOUT_CAT_LONGTEXT , true )
 
-    add_string( "sout", NULL, NULL, SOUT_TEXT, SOUT_LONGTEXT, true )
-    add_bool( "sout-display", false, NULL, SOUT_DISPLAY_TEXT,
+    add_string( "sout", NULL, SOUT_TEXT, SOUT_LONGTEXT, true )
+    add_bool( "sout-display", false, SOUT_DISPLAY_TEXT,
                                 SOUT_DISPLAY_LONGTEXT, true )
-    add_bool( "sout-keep", false, NULL, SOUT_KEEP_TEXT,
+    add_bool( "sout-keep", false, SOUT_KEEP_TEXT,
                                 SOUT_KEEP_LONGTEXT, true )
-    add_bool( "sout-all", 0, NULL, SOUT_ALL_TEXT,
+    add_bool( "sout-all", 0, SOUT_ALL_TEXT,
                                 SOUT_ALL_LONGTEXT, true )
-    add_bool( "sout-audio", 1, NULL, SOUT_AUDIO_TEXT,
+    add_bool( "sout-audio", 1, SOUT_AUDIO_TEXT,
                                 SOUT_AUDIO_LONGTEXT, true )
-    add_bool( "sout-video", 1, NULL, SOUT_VIDEO_TEXT,
+    add_bool( "sout-video", 1, SOUT_VIDEO_TEXT,
                                 SOUT_VIDEO_LONGTEXT, true )
-    add_bool( "sout-spu", 1, NULL, SOUT_SPU_TEXT,
+    add_bool( "sout-spu", 1, SOUT_SPU_TEXT,
                                 SOUT_SPU_LONGTEXT, true )
-    add_integer( "sout-mux-caching", 1500, NULL, SOUT_MUX_CACHING_TEXT,
+    add_integer( "sout-mux-caching", 1500, SOUT_MUX_CACHING_TEXT,
                                 SOUT_MUX_CACHING_LONGTEXT, true )
 
     set_section( N_("VLM"), NULL )
-    add_string( "vlm-conf", NULL, NULL, VLM_CONF_TEXT,
+    add_string( "vlm-conf", NULL, VLM_CONF_TEXT,
                     VLM_CONF_LONGTEXT, true )
 
 
@@ -1987,10 +2019,10 @@ vlc_module_begin ()
     set_subcategory( SUBCAT_SOUT_ACO )
     add_module( "access_output", "sout access", NULL, NULL,
                 ACCESS_OUTPUT_TEXT, ACCESS_OUTPUT_LONGTEXT, true )
-    add_integer( "ttl", -1, NULL, TTL_TEXT, TTL_LONGTEXT, true )
-    add_string( "miface", NULL, NULL, MIFACE_TEXT, MIFACE_LONGTEXT, true )
-    add_string( "miface-addr", NULL, NULL, MIFACE_ADDR_TEXT, MIFACE_ADDR_LONGTEXT, true )
-    add_integer( "dscp", 0, NULL, DSCP_TEXT, DSCP_LONGTEXT, true )
+    add_integer( "ttl", -1, TTL_TEXT, TTL_LONGTEXT, true )
+    add_string( "miface", NULL, MIFACE_TEXT, MIFACE_LONGTEXT, true )
+    add_string( "miface-addr", NULL, MIFACE_ADDR_TEXT, MIFACE_ADDR_LONGTEXT, true )
+    add_integer( "dscp", 0, DSCP_TEXT, DSCP_LONGTEXT, true )
 
     set_subcategory( SUBCAT_SOUT_PACKETIZER )
     add_module( "packetizer","packetizer", NULL, NULL,
@@ -1998,7 +2030,7 @@ vlc_module_begin ()
 
     set_subcategory( SUBCAT_SOUT_SAP )
     add_obsolete_bool( "sap-flow-control" )
-    add_integer( "sap-interval", 5, NULL, ANN_SAPINTV_TEXT,
+    add_integer( "sap-interval", 5, ANN_SAPINTV_TEXT,
                                ANN_SAPINTV_LONGTEXT, true )
 
     set_subcategory( SUBCAT_SOUT_VOD )
@@ -2009,27 +2041,27 @@ vlc_module_begin ()
     add_category_hint( N_("CPU"), CPU_CAT_LONGTEXT, true )
     add_obsolete_bool( "fpu" )
 #if defined( __i386__ ) || defined( __x86_64__ )
-    add_bool( "mmx", 1, NULL, MMX_TEXT, MMX_LONGTEXT, true )
+    add_bool( "mmx", 1, MMX_TEXT, MMX_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "3dn", 1, NULL, THREE_DN_TEXT, THREE_DN_LONGTEXT, true )
+    add_bool( "3dn", 1, THREE_DN_TEXT, THREE_DN_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "mmxext", 1, NULL, MMXEXT_TEXT, MMXEXT_LONGTEXT, true )
+    add_bool( "mmxext", 1, MMXEXT_TEXT, MMXEXT_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "sse", 1, NULL, SSE_TEXT, SSE_LONGTEXT, true )
+    add_bool( "sse", 1, SSE_TEXT, SSE_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "sse2", 1, NULL, SSE2_TEXT, SSE2_LONGTEXT, true )
+    add_bool( "sse2", 1, SSE2_TEXT, SSE2_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "sse3", 1, NULL, SSE3_TEXT, SSE3_LONGTEXT, true )
+    add_bool( "sse3", 1, SSE3_TEXT, SSE3_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "ssse3", 1, NULL, SSSE3_TEXT, SSSE3_LONGTEXT, true )
+    add_bool( "ssse3", 1, SSSE3_TEXT, SSSE3_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "sse41", 1, NULL, SSE4_1_TEXT, SSE4_1_LONGTEXT, true )
+    add_bool( "sse41", 1, SSE4_1_TEXT, SSE4_1_LONGTEXT, true )
         change_need_restart ()
-    add_bool( "sse42", 1, NULL, SSE4_2_TEXT, SSE4_2_LONGTEXT, true )
+    add_bool( "sse42", 1, SSE4_2_TEXT, SSE4_2_LONGTEXT, true )
         change_need_restart ()
 #endif
 #if defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc64__ )
-    add_bool( "altivec", 1, NULL, ALTIVEC_TEXT, ALTIVEC_LONGTEXT, true )
+    add_bool( "altivec", 1, ALTIVEC_TEXT, ALTIVEC_LONGTEXT, true )
         change_need_restart ()
 #endif
 
@@ -2042,13 +2074,13 @@ vlc_module_begin ()
         change_need_restart ()
 
     set_section( N_("Plugins" ), NULL )
-    add_bool( "plugins-cache", true, NULL, PLUGINS_CACHE_TEXT,
+    add_bool( "plugins-cache", true, PLUGINS_CACHE_TEXT,
               PLUGINS_CACHE_LONGTEXT, true )
         change_need_restart ()
-    add_directory( "plugin-path", NULL, NULL, PLUGIN_PATH_TEXT,
+    add_directory( "plugin-path", NULL, PLUGIN_PATH_TEXT,
                    PLUGIN_PATH_LONGTEXT, true )
         change_need_restart ()
-    add_directory( "data-path", NULL, NULL, DATA_PATH_TEXT,
+    add_directory( "data-path", NULL, DATA_PATH_TEXT,
                    DATA_PATH_LONGTEXT, true )
         change_need_restart ()
 
@@ -2059,38 +2091,37 @@ vlc_module_begin ()
 
     add_obsolete_bool( "auto-adjust-pts-delay" )
 
-#if !defined(__APPLE__) && !defined(SYS_BEOS) && defined(LIBVLC_USE_PTHREAD)
-    add_bool( "rt-priority", false, NULL, RT_PRIORITY_TEXT,
+#ifdef LIBVLC_USE_PTHREAD
+# ifndef __APPLE__
+    add_bool( "rt-priority", false, RT_PRIORITY_TEXT,
               RT_PRIORITY_LONGTEXT, true )
         change_need_restart ()
-#endif
-
-#if !defined(SYS_BEOS) && defined(LIBVLC_USE_PTHREAD)
-    add_integer( "rt-offset", 0, NULL, RT_OFFSET_TEXT,
+# endif
+    add_integer( "rt-offset", 0, RT_OFFSET_TEXT,
                  RT_OFFSET_LONGTEXT, true )
         change_need_restart ()
 #endif
 
 #if defined(HAVE_DBUS)
-    add_bool( "inhibit", 1, NULL, INHIBIT_TEXT,
+    add_bool( "inhibit", 1, INHIBIT_TEXT,
               INHIBIT_LONGTEXT, true )
 #endif
 
 #if defined(WIN32) || defined(HAVE_DBUS)
-    add_bool( "one-instance", 0, NULL, ONEINSTANCE_TEXT,
+    add_bool( "one-instance", 0, ONEINSTANCE_TEXT,
               ONEINSTANCE_LONGTEXT, true )
-    add_bool( "started-from-file", 0, NULL, STARTEDFROMFILE_TEXT,
+    add_bool( "started-from-file", 0, STARTEDFROMFILE_TEXT,
               STARTEDFROMFILE_LONGTEXT, true )
         change_volatile ()
-    add_bool( "one-instance-when-started-from-file", 1, NULL,
+    add_bool( "one-instance-when-started-from-file", 1,
               ONEINSTANCEWHENSTARTEDFROMFILE_TEXT,
               ONEINSTANCEWHENSTARTEDFROMFILE_LONGTEXT, true )
-    add_bool( "playlist-enqueue", 0, NULL, PLAYLISTENQUEUE_TEXT,
+    add_bool( "playlist-enqueue", 0, PLAYLISTENQUEUE_TEXT,
               PLAYLISTENQUEUE_LONGTEXT, true )
 #endif
 
 #if defined(WIN32)
-    add_bool( "high-priority", 0, NULL, HPRIORITY_TEXT,
+    add_bool( "high-priority", 0, HPRIORITY_TEXT,
               HPRIORITY_LONGTEXT, false )
         change_need_restart ()
 #endif
@@ -2099,33 +2130,37 @@ vlc_module_begin ()
     set_category( CAT_PLAYLIST )
     set_subcategory( SUBCAT_PLAYLIST_GENERAL )
     add_category_hint( N_("Playlist"), PLAYLIST_CAT_LONGTEXT , false )
-    add_bool( "random", 0, NULL, RANDOM_TEXT, RANDOM_LONGTEXT, false )
+    add_bool( "random", 0, RANDOM_TEXT, RANDOM_LONGTEXT, false )
         change_short('Z')
         change_safe()
-    add_bool( "loop", 0, NULL, LOOP_TEXT, LOOP_LONGTEXT, false )
+    add_bool( "loop", 0, LOOP_TEXT, LOOP_LONGTEXT, false )
         change_short('L')
         change_safe()
-    add_bool( "repeat", 0, NULL, REPEAT_TEXT, REPEAT_LONGTEXT, false )
+    add_bool( "repeat", 0, REPEAT_TEXT, REPEAT_LONGTEXT, false )
         change_short('R')
         change_safe()
-    add_bool( "play-and-exit", 0, NULL, PAE_TEXT, PAE_LONGTEXT, false )
-    add_bool( "play-and-stop", 0, NULL, PAS_TEXT, PAS_LONGTEXT, false )
+    add_bool( "play-and-exit", 0, PAE_TEXT, PAE_LONGTEXT, false )
+    add_bool( "play-and-stop", 0, PAS_TEXT, PAS_LONGTEXT, false )
         change_safe()
-    add_bool( "play-and-pause", 0, NULL, PAP_TEXT, PAP_LONGTEXT, true )
+    add_bool( "play-and-pause", 0, PAP_TEXT, PAP_LONGTEXT, true )
         change_safe()
-    add_bool( "media-library", 1, NULL, ML_TEXT, ML_LONGTEXT, false )
-    add_bool( "playlist-tree", 0, NULL, PLTREE_TEXT, PLTREE_LONGTEXT, false )
+    add_bool( "media-library", 0, ML_TEXT, ML_LONGTEXT, false )
+#if defined( MEDIA_LIBRARY )
+    add_bool( "load-media-library-on-startup", 1, LOAD_ML_TEXT,
+            LOAD_ML_LONGTEXT, false )
+#endif
+    add_bool( "playlist-tree", 0, PLTREE_TEXT, PLTREE_LONGTEXT, false )
 
-    add_string( "open", "", NULL, OPEN_TEXT, OPEN_LONGTEXT, false )
+    add_string( "open", "", OPEN_TEXT, OPEN_LONGTEXT, false )
         change_need_restart ()
 
-    add_bool( "auto-preparse", true, NULL, PREPARSE_TEXT,
+    add_bool( "auto-preparse", true, PREPARSE_TEXT,
               PREPARSE_LONGTEXT, false )
 
-    add_integer( "album-art", ALBUM_ART_WHEN_ASKED, NULL, ALBUM_ART_TEXT,
+    add_integer( "album-art", ALBUM_ART_WHEN_ASKED, ALBUM_ART_TEXT,
                  ALBUM_ART_LONGTEXT, false )
         change_integer_list( pi_albumart_values,
-                             ppsz_albumart_descriptions, 0 )
+                             ppsz_albumart_descriptions )
 
     set_subcategory( SUBCAT_PLAYLIST_SD )
     add_module_list_cat( "services-discovery", SUBCAT_PLAYLIST_SD, NULL,
@@ -2136,50 +2171,50 @@ vlc_module_begin ()
 /* Interface options */
     set_category( CAT_INTERFACE )
     set_subcategory( SUBCAT_INTERFACE_GENERAL )
-    add_integer( "verbose", 0, NULL, VERBOSE_TEXT, VERBOSE_LONGTEXT,
+    add_integer( "verbose", 0, VERBOSE_TEXT, VERBOSE_LONGTEXT,
                  false )
         change_short('v')
-    add_string( "verbose-objects", 0, NULL, VERBOSE_OBJECTS_TEXT, VERBOSE_OBJECTS_LONGTEXT,
+    add_string( "verbose-objects", 0, VERBOSE_OBJECTS_TEXT, VERBOSE_OBJECTS_LONGTEXT,
                  false )
-    add_bool( "quiet", 0, NULL, QUIET_TEXT, QUIET_LONGTEXT, true )
+    add_bool( "quiet", 0, QUIET_TEXT, QUIET_LONGTEXT, true )
         change_short('q')
 
 #if !defined(WIN32)
-    add_bool( "daemon", 0, NULL, DAEMON_TEXT, DAEMON_LONGTEXT, true )
+    add_bool( "daemon", 0, DAEMON_TEXT, DAEMON_LONGTEXT, true )
         change_short('d')
         change_need_restart ()
 
-    add_string( "pidfile", NULL, NULL, PIDFILE_TEXT, PIDFILE_LONGTEXT,
+    add_string( "pidfile", NULL, PIDFILE_TEXT, PIDFILE_LONGTEXT,
                                        false )
         change_need_restart ()
 #endif
 
-    add_bool( "file-logging", false, NULL, FILE_LOG_TEXT, FILE_LOG_LONGTEXT,
+    add_bool( "file-logging", false, FILE_LOG_TEXT, FILE_LOG_LONGTEXT,
               true )
         change_need_restart ()
 #ifdef HAVE_SYSLOG_H
-    add_bool ( "syslog", false, NULL, SYSLOG_TEXT, SYSLOG_LONGTEXT,
+    add_bool ( "syslog", false, SYSLOG_TEXT, SYSLOG_LONGTEXT,
                true )
         change_need_restart ()
 #endif
 
 #if defined (WIN32) || defined (__APPLE__)
-    add_string( "language", "auto", NULL, LANGUAGE_TEXT, LANGUAGE_LONGTEXT,
+    add_string( "language", "auto", LANGUAGE_TEXT, LANGUAGE_LONGTEXT,
                 false )
         change_string_list( ppsz_language, ppsz_language_text, 0 )
         change_need_restart ()
 #endif
 
-    add_bool( "color", true, NULL, COLOR_TEXT, COLOR_LONGTEXT, true )
-    add_bool( "advanced", false, NULL, ADVANCED_TEXT, ADVANCED_LONGTEXT,
+    add_bool( "color", true, COLOR_TEXT, COLOR_LONGTEXT, true )
+    add_bool( "advanced", false, ADVANCED_TEXT, ADVANCED_LONGTEXT,
                     false )
         change_need_restart ()
-    add_bool( "interact", true, NULL, INTERACTION_TEXT,
+    add_bool( "interact", true, INTERACTION_TEXT,
               INTERACTION_LONGTEXT, false )
 
     add_obsolete_bool( "show-intf" );
 
-    add_bool ( "stats", true, NULL, STATS_TEXT, STATS_LONGTEXT, true )
+    add_bool ( "stats", true, STATS_TEXT, STATS_LONGTEXT, true )
         change_need_restart ()
 
     set_subcategory( SUBCAT_INTERFACE_MAIN )
@@ -2432,10 +2467,10 @@ vlc_module_begin ()
 #   define KEY_UNCROP_RIGHT       KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|'f'
 
 /* Zooming */
-#   define KEY_ZOOM_QUARTER       KEY_MODIFIER_CTRL|'1'
-#   define KEY_ZOOM_HALF          KEY_MODIFIER_CTRL|'2'
-#   define KEY_ZOOM_ORIGINAL      KEY_MODIFIER_CTRL|'3'
-#   define KEY_ZOOM_DOUBLE        KEY_MODIFIER_CTRL|'4'
+#   define KEY_ZOOM_QUARTER       KEY_MODIFIER_ALT|'1'
+#   define KEY_ZOOM_HALF          KEY_MODIFIER_ALT|'2'
+#   define KEY_ZOOM_ORIGINAL      KEY_MODIFIER_ALT|'3'
+#   define KEY_ZOOM_DOUBLE        KEY_MODIFIER_ALT|'4'
 
 /* Bookmarks */
 #   define KEY_SET_BOOKMARK1      KEY_MODIFIER_CTRL|KEY_F1
@@ -2469,253 +2504,253 @@ vlc_module_begin ()
 #   define KEY_MENU_SELECT        KEY_MODIFIER_ALT|KEY_MODIFIER_SHIFT|KEY_ENTER
 #endif
 
-    add_key( "key-toggle-fullscreen", KEY_TOGGLE_FULLSCREEN, NULL, TOGGLE_FULLSCREEN_KEY_TEXT,
+    add_key( "key-toggle-fullscreen", KEY_TOGGLE_FULLSCREEN, TOGGLE_FULLSCREEN_KEY_TEXT,
              TOGGLE_FULLSCREEN_KEY_LONGTEXT, false )
        add_deprecated_alias( "key-fullscreen" ) /*deprecated since 0.9.0 */
-    add_key( "key-leave-fullscreen", KEY_LEAVE_FULLSCREEN, NULL, LEAVE_FULLSCREEN_KEY_TEXT,
+    add_key( "key-leave-fullscreen", KEY_LEAVE_FULLSCREEN, LEAVE_FULLSCREEN_KEY_TEXT,
              LEAVE_FULLSCREEN_KEY_LONGTEXT, false )
-    add_key( "key-play-pause", KEY_PLAY_PAUSE, NULL, PLAY_PAUSE_KEY_TEXT,
+    add_key( "key-play-pause", KEY_PLAY_PAUSE, PLAY_PAUSE_KEY_TEXT,
              PLAY_PAUSE_KEY_LONGTEXT, false )
-    add_key( "key-pause", KEY_PAUSE, NULL, PAUSE_KEY_TEXT,
+    add_key( "key-pause", KEY_PAUSE, PAUSE_KEY_TEXT,
              PAUSE_KEY_LONGTEXT, true )
-    add_key( "key-play", KEY_PLAY, NULL, PLAY_KEY_TEXT,
+    add_key( "key-play", KEY_PLAY, PLAY_KEY_TEXT,
              PLAY_KEY_LONGTEXT, true )
-    add_key( "key-faster", KEY_FASTER, NULL, FASTER_KEY_TEXT,
+    add_key( "key-faster", KEY_FASTER, FASTER_KEY_TEXT,
              FASTER_KEY_LONGTEXT, false )
-    add_key( "key-slower", KEY_SLOWER, NULL, SLOWER_KEY_TEXT,
+    add_key( "key-slower", KEY_SLOWER, SLOWER_KEY_TEXT,
              SLOWER_KEY_LONGTEXT, false )
-    add_key( "key-rate-normal", KEY_RATE_NORMAL, NULL, RATE_NORMAL_KEY_TEXT,
+    add_key( "key-rate-normal", KEY_RATE_NORMAL, RATE_NORMAL_KEY_TEXT,
              RATE_NORMAL_KEY_LONGTEXT, false )
-    add_key( "key-rate-faster-fine", KEY_RATE_FASTER_FINE, NULL, RATE_FASTER_FINE_KEY_TEXT,
+    add_key( "key-rate-faster-fine", KEY_RATE_FASTER_FINE, RATE_FASTER_FINE_KEY_TEXT,
              RATE_FASTER_FINE_KEY_LONGTEXT, false )
-    add_key( "key-rate-slower-fine", KEY_RATE_SLOWER_FINE, NULL, RATE_SLOWER_FINE_KEY_TEXT,
+    add_key( "key-rate-slower-fine", KEY_RATE_SLOWER_FINE, RATE_SLOWER_FINE_KEY_TEXT,
              RATE_SLOWER_FINE_KEY_LONGTEXT, false )
-    add_key( "key-next", KEY_NEXT, NULL, NEXT_KEY_TEXT,
+    add_key( "key-next", KEY_NEXT, NEXT_KEY_TEXT,
              NEXT_KEY_LONGTEXT, false )
-    add_key( "key-prev", KEY_PREV, NULL, PREV_KEY_TEXT,
+    add_key( "key-prev", KEY_PREV, PREV_KEY_TEXT,
              PREV_KEY_LONGTEXT, false )
-    add_key( "key-stop", KEY_STOP, NULL, STOP_KEY_TEXT,
+    add_key( "key-stop", KEY_STOP, STOP_KEY_TEXT,
              STOP_KEY_LONGTEXT, false )
-    add_key( "key-position", KEY_POSITION, NULL, POSITION_KEY_TEXT,
+    add_key( "key-position", KEY_POSITION, POSITION_KEY_TEXT,
              POSITION_KEY_LONGTEXT, true )
-    add_key( "key-jump-extrashort", KEY_JUMP_MEXTRASHORT, NULL,
+    add_key( "key-jump-extrashort", KEY_JUMP_MEXTRASHORT,
              JBEXTRASHORT_KEY_TEXT, JBEXTRASHORT_KEY_LONGTEXT, false )
-    add_key( "key-jump+extrashort", KEY_JUMP_PEXTRASHORT, NULL,
+    add_key( "key-jump+extrashort", KEY_JUMP_PEXTRASHORT,
              JFEXTRASHORT_KEY_TEXT, JFEXTRASHORT_KEY_LONGTEXT, false )
-    add_key( "key-jump-short", KEY_JUMP_MSHORT, NULL, JBSHORT_KEY_TEXT,
+    add_key( "key-jump-short", KEY_JUMP_MSHORT, JBSHORT_KEY_TEXT,
              JBSHORT_KEY_LONGTEXT, false )
-    add_key( "key-jump+short", KEY_JUMP_PSHORT, NULL, JFSHORT_KEY_TEXT,
+    add_key( "key-jump+short", KEY_JUMP_PSHORT, JFSHORT_KEY_TEXT,
              JFSHORT_KEY_LONGTEXT, false )
-    add_key( "key-jump-medium", KEY_JUMP_MMEDIUM, NULL, JBMEDIUM_KEY_TEXT,
+    add_key( "key-jump-medium", KEY_JUMP_MMEDIUM, JBMEDIUM_KEY_TEXT,
              JBMEDIUM_KEY_LONGTEXT, false )
-    add_key( "key-jump+medium", KEY_JUMP_PMEDIUM, NULL, JFMEDIUM_KEY_TEXT,
+    add_key( "key-jump+medium", KEY_JUMP_PMEDIUM, JFMEDIUM_KEY_TEXT,
              JFMEDIUM_KEY_LONGTEXT, false )
-    add_key( "key-jump-long", KEY_JUMP_MLONG, NULL, JBLONG_KEY_TEXT,
+    add_key( "key-jump-long", KEY_JUMP_MLONG, JBLONG_KEY_TEXT,
              JBLONG_KEY_LONGTEXT, false )
-    add_key( "key-jump+long", KEY_JUMP_PLONG, NULL, JFLONG_KEY_TEXT,
+    add_key( "key-jump+long", KEY_JUMP_PLONG, JFLONG_KEY_TEXT,
              JFLONG_KEY_LONGTEXT, false )
-    add_key( "key-frame-next", KEY_FRAME_NEXT, NULL, FRAME_NEXT_KEY_TEXT,
+    add_key( "key-frame-next", KEY_FRAME_NEXT, FRAME_NEXT_KEY_TEXT,
              FRAME_NEXT_KEY_LONGTEXT, false )
-    add_key( "key-nav-activate", KEY_NAV_ACTIVATE, NULL, NAV_ACTIVATE_KEY_TEXT,
+    add_key( "key-nav-activate", KEY_NAV_ACTIVATE, NAV_ACTIVATE_KEY_TEXT,
              NAV_ACTIVATE_KEY_LONGTEXT, true )
-    add_key( "key-nav-up", KEY_NAV_UP, NULL, NAV_UP_KEY_TEXT,
+    add_key( "key-nav-up", KEY_NAV_UP, NAV_UP_KEY_TEXT,
              NAV_UP_KEY_LONGTEXT, true )
-    add_key( "key-nav-down", KEY_NAV_DOWN, NULL, NAV_DOWN_KEY_TEXT,
+    add_key( "key-nav-down", KEY_NAV_DOWN, NAV_DOWN_KEY_TEXT,
              NAV_DOWN_KEY_LONGTEXT, true )
-    add_key( "key-nav-left", KEY_NAV_LEFT, NULL, NAV_LEFT_KEY_TEXT,
+    add_key( "key-nav-left", KEY_NAV_LEFT, NAV_LEFT_KEY_TEXT,
              NAV_LEFT_KEY_LONGTEXT, true )
-    add_key( "key-nav-right", KEY_NAV_RIGHT, NULL, NAV_RIGHT_KEY_TEXT,
+    add_key( "key-nav-right", KEY_NAV_RIGHT, NAV_RIGHT_KEY_TEXT,
              NAV_RIGHT_KEY_LONGTEXT, true )
 
-    add_key( "key-disc-menu", KEY_DISC_MENU, NULL, DISC_MENU_TEXT,
+    add_key( "key-disc-menu", KEY_DISC_MENU, DISC_MENU_TEXT,
              DISC_MENU_LONGTEXT, true )
-    add_key( "key-title-prev", KEY_TITLE_PREV, NULL, TITLE_PREV_TEXT,
+    add_key( "key-title-prev", KEY_TITLE_PREV, TITLE_PREV_TEXT,
              TITLE_PREV_LONGTEXT, true )
-    add_key( "key-title-next", KEY_TITLE_NEXT, NULL, TITLE_NEXT_TEXT,
+    add_key( "key-title-next", KEY_TITLE_NEXT, TITLE_NEXT_TEXT,
              TITLE_NEXT_LONGTEXT, true )
-    add_key( "key-chapter-prev", KEY_CHAPTER_PREV, NULL, CHAPTER_PREV_TEXT,
+    add_key( "key-chapter-prev", KEY_CHAPTER_PREV, CHAPTER_PREV_TEXT,
              CHAPTER_PREV_LONGTEXT, true )
-    add_key( "key-chapter-next", KEY_CHAPTER_NEXT, NULL, CHAPTER_NEXT_TEXT,
+    add_key( "key-chapter-next", KEY_CHAPTER_NEXT, CHAPTER_NEXT_TEXT,
              CHAPTER_NEXT_LONGTEXT, true )
-    add_key( "key-quit", KEY_QUIT, NULL, QUIT_KEY_TEXT,
+    add_key( "key-quit", KEY_QUIT, QUIT_KEY_TEXT,
              QUIT_KEY_LONGTEXT, false )
-    add_key( "key-vol-up", KEY_VOL_UP, NULL, VOL_UP_KEY_TEXT,
+    add_key( "key-vol-up", KEY_VOL_UP, VOL_UP_KEY_TEXT,
              VOL_UP_KEY_LONGTEXT, false )
-    add_key( "key-vol-down", KEY_VOL_DOWN, NULL, VOL_DOWN_KEY_TEXT,
+    add_key( "key-vol-down", KEY_VOL_DOWN, VOL_DOWN_KEY_TEXT,
              VOL_DOWN_KEY_LONGTEXT, false )
-    add_key( "key-vol-mute", KEY_VOL_MUTE, NULL, VOL_MUTE_KEY_TEXT,
+    add_key( "key-vol-mute", KEY_VOL_MUTE, VOL_MUTE_KEY_TEXT,
              VOL_MUTE_KEY_LONGTEXT, false )
-    add_key( "key-subdelay-up", KEY_SUBDELAY_UP, NULL,
+    add_key( "key-subdelay-up", KEY_SUBDELAY_UP,
              SUBDELAY_UP_KEY_TEXT, SUBDELAY_UP_KEY_LONGTEXT, true )
-    add_key( "key-subdelay-down", KEY_SUBDELAY_DOWN, NULL,
+    add_key( "key-subdelay-down", KEY_SUBDELAY_DOWN,
              SUBDELAY_DOWN_KEY_TEXT, SUBDELAY_DOWN_KEY_LONGTEXT, true )
-    add_key( "key-subpos-up", KEY_SUBPOS_UP, NULL,
+    add_key( "key-subpos-up", KEY_SUBPOS_UP,
              SUBPOS_UP_KEY_TEXT, SUBPOS_UP_KEY_LONGTEXT, true )
-    add_key( "key-subpos-down", KEY_SUBPOS_DOWN, NULL,
+    add_key( "key-subpos-down", KEY_SUBPOS_DOWN,
              SUBPOS_DOWN_KEY_TEXT, SUBPOS_DOWN_KEY_LONGTEXT, true )
-    add_key( "key-audiodelay-up", KEY_AUDIODELAY_UP, NULL,
+    add_key( "key-audiodelay-up", KEY_AUDIODELAY_UP,
              AUDIODELAY_UP_KEY_TEXT, AUDIODELAY_UP_KEY_LONGTEXT, true )
-    add_key( "key-audiodelay-down", KEY_AUDIODELAY_DOWN, NULL,
+    add_key( "key-audiodelay-down", KEY_AUDIODELAY_DOWN,
              AUDIODELAY_DOWN_KEY_TEXT, AUDIODELAY_DOWN_KEY_LONGTEXT, true )
-    add_key( "key-audio-track", KEY_AUDIO_TRACK, NULL, AUDIO_TRACK_KEY_TEXT,
+    add_key( "key-audio-track", KEY_AUDIO_TRACK, AUDIO_TRACK_KEY_TEXT,
              AUDIO_TRACK_KEY_LONGTEXT, false )
-    add_key( "key-audiodevice-cycle", KEY_AUDIODEVICE_CYCLE, NULL, AUDI_DEVICE_CYCLE_KEY_TEXT,
+    add_key( "key-audiodevice-cycle", KEY_AUDIODEVICE_CYCLE, AUDI_DEVICE_CYCLE_KEY_TEXT,
              AUDI_DEVICE_CYCLE_KEY_LONGTEXT, false )
-    add_key( "key-subtitle-track", KEY_SUBTITLE_TRACK, NULL,
+    add_key( "key-subtitle-track", KEY_SUBTITLE_TRACK,
              SUBTITLE_TRACK_KEY_TEXT, SUBTITLE_TRACK_KEY_LONGTEXT, false )
-    add_key( "key-aspect-ratio", KEY_ASPECT_RATIO, NULL,
+    add_key( "key-aspect-ratio", KEY_ASPECT_RATIO,
              ASPECT_RATIO_KEY_TEXT, ASPECT_RATIO_KEY_LONGTEXT, false )
-    add_key( "key-crop", KEY_CROP, NULL,
+    add_key( "key-crop", KEY_CROP,
              CROP_KEY_TEXT, CROP_KEY_LONGTEXT, false )
-    add_key( "key-toggle-autoscale", KEY_TOGGLE_AUTOSCALE, NULL,
+    add_key( "key-toggle-autoscale", KEY_TOGGLE_AUTOSCALE,
              TOGGLE_AUTOSCALE_KEY_TEXT, TOGGLE_AUTOSCALE_KEY_LONGTEXT, false )
-    add_key( "key-incr-scalefactor", KEY_SCALE_UP, NULL,
+    add_key( "key-incr-scalefactor", KEY_SCALE_UP,
              SCALE_UP_KEY_TEXT, SCALE_UP_KEY_LONGTEXT, false )
-    add_key( "key-decr-scalefactor", KEY_SCALE_DOWN, NULL,
+    add_key( "key-decr-scalefactor", KEY_SCALE_DOWN,
              SCALE_DOWN_KEY_TEXT, SCALE_DOWN_KEY_LONGTEXT, false )
-    add_key( "key-deinterlace", KEY_DEINTERLACE, NULL,
+    add_key( "key-deinterlace", KEY_DEINTERLACE,
              DEINTERLACE_KEY_TEXT, DEINTERLACE_KEY_LONGTEXT, false )
-    add_key( "key-intf-show", KEY_INTF_SHOW, NULL,
+    add_key( "key-intf-show", KEY_INTF_SHOW,
              INTF_SHOW_KEY_TEXT, INTF_SHOW_KEY_LONGTEXT, true )
-    add_key( "key-intf-hide", KEY_INTF_HIDE, NULL,
+    add_key( "key-intf-hide", KEY_INTF_HIDE,
              INTF_HIDE_KEY_TEXT, INTF_HIDE_KEY_LONGTEXT, true )
-    add_key( "key-snapshot", KEY_SNAPSHOT, NULL,
+    add_key( "key-snapshot", KEY_SNAPSHOT,
         SNAP_KEY_TEXT, SNAP_KEY_LONGTEXT, true )
-    add_key( "key-history-back", KEY_HISTORY_BACK, NULL, HISTORY_BACK_TEXT,
+    add_key( "key-history-back", KEY_HISTORY_BACK, HISTORY_BACK_TEXT,
              HISTORY_BACK_LONGTEXT, true )
-    add_key( "key-history-forward", KEY_HISTORY_FORWARD, NULL,
+    add_key( "key-history-forward", KEY_HISTORY_FORWARD,
              HISTORY_FORWARD_TEXT, HISTORY_FORWARD_LONGTEXT, true )
-    add_key( "key-record", KEY_RECORD, NULL,
+    add_key( "key-record", KEY_RECORD,
              RECORD_KEY_TEXT, RECORD_KEY_LONGTEXT, true )
-    add_key( "key-dump", KEY_DUMP, NULL,
+    add_key( "key-dump", KEY_DUMP,
              DUMP_KEY_TEXT, DUMP_KEY_LONGTEXT, true )
-    add_key( "key-zoom", KEY_ZOOM, NULL,
+    add_key( "key-zoom", KEY_ZOOM,
              ZOOM_KEY_TEXT, ZOOM_KEY_LONGTEXT, true )
-    add_key( "key-unzoom", KEY_UNZOOM, NULL,
+    add_key( "key-unzoom", KEY_UNZOOM,
              UNZOOM_KEY_TEXT, UNZOOM_KEY_LONGTEXT, true )
-    add_key( "key-wallpaper", KEY_WALLPAPER, NULL, WALLPAPER_KEY_TEXT,
+    add_key( "key-wallpaper", KEY_WALLPAPER, WALLPAPER_KEY_TEXT,
              WALLPAPER_KEY_LONGTEXT, false )
 
-    add_key( "key-menu-on", KEY_MENU_ON, NULL,
+    add_key( "key-menu-on", KEY_MENU_ON,
              MENU_ON_KEY_TEXT, MENU_ON_KEY_LONGTEXT, true )
-    add_key( "key-menu-off", KEY_MENU_OFF, NULL,
+    add_key( "key-menu-off", KEY_MENU_OFF,
              MENU_OFF_KEY_TEXT, MENU_OFF_KEY_LONGTEXT, true )
-    add_key( "key-menu-right", KEY_MENU_RIGHT, NULL,
+    add_key( "key-menu-right", KEY_MENU_RIGHT,
              MENU_RIGHT_KEY_TEXT, MENU_RIGHT_KEY_LONGTEXT, true )
-    add_key( "key-menu-left", KEY_MENU_LEFT, NULL,
+    add_key( "key-menu-left", KEY_MENU_LEFT,
              MENU_LEFT_KEY_TEXT, MENU_LEFT_KEY_LONGTEXT, true )
-    add_key( "key-menu-up", KEY_MENU_UP, NULL,
+    add_key( "key-menu-up", KEY_MENU_UP,
              MENU_UP_KEY_TEXT, MENU_UP_KEY_LONGTEXT, true )
-    add_key( "key-menu-down", KEY_MENU_DOWN, NULL,
+    add_key( "key-menu-down", KEY_MENU_DOWN,
              MENU_DOWN_KEY_TEXT, MENU_DOWN_KEY_LONGTEXT, true )
-    add_key( "key-menu-select", KEY_MENU_SELECT, NULL,
+    add_key( "key-menu-select", KEY_MENU_SELECT,
              MENU_SELECT_KEY_TEXT, MENU_SELECT_KEY_LONGTEXT, true )
 
-    add_key( "key-crop-top", KEY_CROP_TOP, NULL,
+    add_key( "key-crop-top", KEY_CROP_TOP,
              CROP_TOP_KEY_TEXT, CROP_TOP_KEY_LONGTEXT, true )
-    add_key( "key-uncrop-top", KEY_UNCROP_TOP, NULL,
+    add_key( "key-uncrop-top", KEY_UNCROP_TOP,
              UNCROP_TOP_KEY_TEXT, UNCROP_TOP_KEY_LONGTEXT, true )
-    add_key( "key-crop-left", KEY_CROP_LEFT, NULL,
+    add_key( "key-crop-left", KEY_CROP_LEFT,
              CROP_LEFT_KEY_TEXT, CROP_LEFT_KEY_LONGTEXT, true )
-    add_key( "key-uncrop-left", KEY_UNCROP_LEFT, NULL,
+    add_key( "key-uncrop-left", KEY_UNCROP_LEFT,
              UNCROP_LEFT_KEY_TEXT, UNCROP_LEFT_KEY_LONGTEXT, true )
-    add_key( "key-crop-bottom", KEY_CROP_BOTTOM, NULL,
+    add_key( "key-crop-bottom", KEY_CROP_BOTTOM,
              CROP_BOTTOM_KEY_TEXT, CROP_BOTTOM_KEY_LONGTEXT, true )
-    add_key( "key-uncrop-bottom", KEY_UNCROP_BOTTOM, NULL,
+    add_key( "key-uncrop-bottom", KEY_UNCROP_BOTTOM,
              UNCROP_BOTTOM_KEY_TEXT, UNCROP_BOTTOM_KEY_LONGTEXT, true )
-    add_key( "key-crop-right", KEY_CROP_RIGHT, NULL,
+    add_key( "key-crop-right", KEY_CROP_RIGHT,
              CROP_RIGHT_KEY_TEXT, CROP_RIGHT_KEY_LONGTEXT, true )
-    add_key( "key-uncrop-right", KEY_UNCROP_RIGHT, NULL,
+    add_key( "key-uncrop-right", KEY_UNCROP_RIGHT,
              UNCROP_RIGHT_KEY_TEXT, UNCROP_RIGHT_KEY_LONGTEXT, true )
-    add_key( "key-random", KEY_RANDOM, NULL,
+    add_key( "key-random", KEY_RANDOM,
              RANDOM_KEY_TEXT, RANDOM_KEY_LONGTEXT, false )
-    add_key( "key-loop", KEY_LOOP, NULL,
+    add_key( "key-loop", KEY_LOOP,
              LOOP_KEY_TEXT, LOOP_KEY_LONGTEXT, false )
 
     set_section ( N_("Zoom" ), NULL )
-    add_key( "key-zoom-quarter",  KEY_ZOOM_QUARTER, NULL,
+    add_key( "key-zoom-quarter",  KEY_ZOOM_QUARTER,
         ZOOM_QUARTER_KEY_TEXT,  NULL, false )
-    add_key( "key-zoom-half",     KEY_ZOOM_HALF, NULL,
+    add_key( "key-zoom-half",     KEY_ZOOM_HALF,
         ZOOM_HALF_KEY_TEXT,     NULL, false )
-    add_key( "key-zoom-original", KEY_ZOOM_ORIGINAL, NULL,
+    add_key( "key-zoom-original", KEY_ZOOM_ORIGINAL,
         ZOOM_ORIGINAL_KEY_TEXT, NULL, false )
-    add_key( "key-zoom-double",   KEY_ZOOM_DOUBLE, NULL,
+    add_key( "key-zoom-double",   KEY_ZOOM_DOUBLE,
         ZOOM_DOUBLE_KEY_TEXT,   NULL, false )
 
     set_section ( N_("Jump sizes" ), NULL )
-    add_integer( "extrashort-jump-size", 3, NULL, JIEXTRASHORT_TEXT,
+    add_integer( "extrashort-jump-size", 3, JIEXTRASHORT_TEXT,
                                     JIEXTRASHORT_LONGTEXT, false )
-    add_integer( "short-jump-size", 10, NULL, JISHORT_TEXT,
+    add_integer( "short-jump-size", 10, JISHORT_TEXT,
                                     JISHORT_LONGTEXT, false )
-    add_integer( "medium-jump-size", 60, NULL, JIMEDIUM_TEXT,
+    add_integer( "medium-jump-size", 60, JIMEDIUM_TEXT,
                                     JIMEDIUM_LONGTEXT, false )
-    add_integer( "long-jump-size", 300, NULL, JILONG_TEXT,
+    add_integer( "long-jump-size", 300, JILONG_TEXT,
                                     JILONG_LONGTEXT, false )
 
     /* HACK so these don't get displayed */
     set_category( -1 )
     set_subcategory( -1 )
-    add_key( "key-set-bookmark1", KEY_SET_BOOKMARK1, NULL,
+    add_key( "key-set-bookmark1", KEY_SET_BOOKMARK1,
              SET_BOOKMARK1_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark2", KEY_SET_BOOKMARK2, NULL,
+    add_key( "key-set-bookmark2", KEY_SET_BOOKMARK2,
              SET_BOOKMARK2_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark3", KEY_SET_BOOKMARK3, NULL,
+    add_key( "key-set-bookmark3", KEY_SET_BOOKMARK3,
              SET_BOOKMARK3_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark4", KEY_SET_BOOKMARK4, NULL,
+    add_key( "key-set-bookmark4", KEY_SET_BOOKMARK4,
              SET_BOOKMARK4_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark5", KEY_SET_BOOKMARK5, NULL,
+    add_key( "key-set-bookmark5", KEY_SET_BOOKMARK5,
              SET_BOOKMARK5_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark6", KEY_SET_BOOKMARK6, NULL,
+    add_key( "key-set-bookmark6", KEY_SET_BOOKMARK6,
              SET_BOOKMARK6_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark7", KEY_SET_BOOKMARK7, NULL,
+    add_key( "key-set-bookmark7", KEY_SET_BOOKMARK7,
              SET_BOOKMARK7_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark8", KEY_SET_BOOKMARK8, NULL,
+    add_key( "key-set-bookmark8", KEY_SET_BOOKMARK8,
              SET_BOOKMARK8_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark9", KEY_SET_BOOKMARK9, NULL,
+    add_key( "key-set-bookmark9", KEY_SET_BOOKMARK9,
              SET_BOOKMARK9_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-set-bookmark10", KEY_SET_BOOKMARK10, NULL,
+    add_key( "key-set-bookmark10", KEY_SET_BOOKMARK10,
              SET_BOOKMARK10_KEY_TEXT, SET_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark1", KEY_PLAY_BOOKMARK1, NULL,
+    add_key( "key-play-bookmark1", KEY_PLAY_BOOKMARK1,
              PLAY_BOOKMARK1_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark2", KEY_PLAY_BOOKMARK2, NULL,
+    add_key( "key-play-bookmark2", KEY_PLAY_BOOKMARK2,
              PLAY_BOOKMARK2_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark3", KEY_PLAY_BOOKMARK3, NULL,
+    add_key( "key-play-bookmark3", KEY_PLAY_BOOKMARK3,
              PLAY_BOOKMARK3_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark4", KEY_PLAY_BOOKMARK4, NULL,
+    add_key( "key-play-bookmark4", KEY_PLAY_BOOKMARK4,
              PLAY_BOOKMARK4_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark5", KEY_PLAY_BOOKMARK5, NULL,
+    add_key( "key-play-bookmark5", KEY_PLAY_BOOKMARK5,
              PLAY_BOOKMARK5_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark6", KEY_PLAY_BOOKMARK6, NULL,
+    add_key( "key-play-bookmark6", KEY_PLAY_BOOKMARK6,
              PLAY_BOOKMARK6_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark7", KEY_PLAY_BOOKMARK7, NULL,
+    add_key( "key-play-bookmark7", KEY_PLAY_BOOKMARK7,
              PLAY_BOOKMARK7_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark8", KEY_PLAY_BOOKMARK8, NULL,
+    add_key( "key-play-bookmark8", KEY_PLAY_BOOKMARK8,
              PLAY_BOOKMARK8_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark9", KEY_PLAY_BOOKMARK9, NULL,
+    add_key( "key-play-bookmark9", KEY_PLAY_BOOKMARK9,
              PLAY_BOOKMARK9_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
-    add_key( "key-play-bookmark10", KEY_PLAY_BOOKMARK10, NULL,
+    add_key( "key-play-bookmark10", KEY_PLAY_BOOKMARK10,
              PLAY_BOOKMARK10_KEY_TEXT, PLAY_BOOKMARK_KEY_LONGTEXT, true )
 
 
-    add_string( "bookmark1", NULL, NULL,
+    add_string( "bookmark1", NULL,
              BOOKMARK1_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark2", NULL, NULL,
+    add_string( "bookmark2", NULL,
              BOOKMARK2_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark3", NULL, NULL,
+    add_string( "bookmark3", NULL,
              BOOKMARK3_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark4", NULL, NULL,
+    add_string( "bookmark4", NULL,
              BOOKMARK4_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark5", NULL, NULL,
+    add_string( "bookmark5", NULL,
              BOOKMARK5_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark6", NULL, NULL,
+    add_string( "bookmark6", NULL,
              BOOKMARK6_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark7", NULL, NULL,
+    add_string( "bookmark7", NULL,
              BOOKMARK7_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark8", NULL, NULL,
+    add_string( "bookmark8", NULL,
              BOOKMARK8_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark9", NULL, NULL,
+    add_string( "bookmark9", NULL,
              BOOKMARK9_TEXT, BOOKMARK_LONGTEXT, false )
-    add_string( "bookmark10", NULL, NULL,
+    add_string( "bookmark10", NULL,
               BOOKMARK10_TEXT, BOOKMARK_LONGTEXT, false )
 
 #define HELP_TEXT \
@@ -2747,39 +2782,37 @@ vlc_module_begin ()
 #define VERSION_TEXT \
     N_("print version information")
 
-    add_bool( "help", false, NULL, HELP_TEXT, "", false )
+    add_bool( "help", false, HELP_TEXT, "", false )
         change_short( 'h' )
         change_volatile ()
-    add_bool( "full-help", false, NULL, FULL_HELP_TEXT, "", false )
+    add_bool( "full-help", false, FULL_HELP_TEXT, "", false )
         change_short( 'H' )
         change_volatile ()
-    add_bool( "longhelp", false, NULL, LONGHELP_TEXT, "", false )
+    add_bool( "longhelp", false, LONGHELP_TEXT, "", false )
         change_volatile ()
-    add_bool( "help-verbose", false, NULL, HELP_VERBOSE_TEXT, "",
+    add_bool( "help-verbose", false, HELP_VERBOSE_TEXT, "",
               false )
         change_volatile ()
-    add_bool( "list", false, NULL, LIST_TEXT, "", false )
+    add_bool( "list", false, LIST_TEXT, "", false )
         change_short( 'l' )
         change_volatile ()
-    add_bool( "list-verbose", false, NULL, LIST_VERBOSE_TEXT, "",
+    add_bool( "list-verbose", false, LIST_VERBOSE_TEXT, "",
               false )
         change_volatile ()
-    add_string( "module", NULL, NULL, MODULE_TEXT, "", false )
+    add_string( "module", NULL, MODULE_TEXT, "", false )
         change_short( 'p' )
         change_volatile ()
-    add_bool( "ignore-config", true, NULL, IGNORE_CONFIG_TEXT, "", false )
+    add_bool( "ignore-config", true, IGNORE_CONFIG_TEXT, "", false )
         change_volatile ()
     add_obsolete_bool( "save-config" )
-    add_bool( "reset-config", false, NULL, RESET_CONFIG_TEXT, "", false )
+    add_bool( "reset-config", false, RESET_CONFIG_TEXT, "", false )
         change_volatile ()
-    add_bool( "reset-plugins-cache", false, NULL,
+    add_bool( "reset-plugins-cache", false,
               RESET_PLUGINS_CACHE_TEXT, "", false )
         change_volatile ()
-    add_bool( "version", false, NULL, VERSION_TEXT, "", false )
-        change_volatile ()
-    add_string( "config", NULL, NULL, CONFIG_TEXT, "", false )
+    add_bool( "version", false, VERSION_TEXT, "", false )
         change_volatile ()
-    add_bool( "version", false, NULL, VERSION_TEXT, "", false )
+    add_string( "config", NULL, CONFIG_TEXT, "", false )
         change_volatile ()
 
    /* Usage (mainly useful for cmd line stuff) */