← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~raoul-snyman/openlp/fix-vlc-py into lp:openlp

 

Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/fix-vlc-py into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/fix-vlc-py/+merge/284337

Regenerate VLC bindings against a more current version of VLC (rather than VLC master)
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-vlc-py into lp:openlp.
=== modified file 'openlp/core/ui/media/vendor/vlc.py'
--- openlp/core/ui/media/vendor/vlc.py	2015-12-26 21:35:48 +0000
+++ openlp/core/ui/media/vendor/vlc.py	2016-01-28 19:42:23 +0000
@@ -49,7 +49,7 @@
 from inspect import getargspec
 
 __version__ = "N/A"
-build_date  = "Thu Nov  5 23:41:43 2015"
+build_date  = "Mon Jan 25 19:40:05 2016"
 
 # The libvlc doc states that filenames are expected to be in UTF8, do
 # not rely on sys.getfilesystemencoding() which will be confused,
@@ -425,20 +425,10 @@
         273: 'MediaPlayerLengthChanged',
         274: 'MediaPlayerVout',
         275: 'MediaPlayerScrambledChanged',
-        276: 'MediaPlayerESAdded',
-        277: 'MediaPlayerESDeleted',
-        278: 'MediaPlayerESSelected',
-        279: 'MediaPlayerCorked',
-        280: 'MediaPlayerUncorked',
-        281: 'MediaPlayerMuted',
-        282: 'MediaPlayerUnmuted',
-        283: 'MediaPlayerAudioVolume',
-        284: 'MediaPlayerAudioDevice',
         0x200: 'MediaListItemAdded',
         513: 'MediaListWillAddItem',
         514: 'MediaListItemDeleted',
         515: 'MediaListWillDeleteItem',
-        516: 'MediaListEndReached',
         0x300: 'MediaListViewItemAdded',
         769: 'MediaListViewWillAddItem',
         770: 'MediaListViewItemDeleted',
@@ -464,7 +454,6 @@
 EventType.MediaDiscovererStarted        = EventType(0x500)
 EventType.MediaDurationChanged          = EventType(2)
 EventType.MediaFreed                    = EventType(4)
-EventType.MediaListEndReached           = EventType(516)
 EventType.MediaListItemAdded            = EventType(0x200)
 EventType.MediaListItemDeleted          = EventType(514)
 EventType.MediaListPlayerNextItemSet    = EventType(1025)
@@ -478,20 +467,13 @@
 EventType.MediaListWillDeleteItem       = EventType(515)
 EventType.MediaMetaChanged              = EventType(0)
 EventType.MediaParsedChanged            = EventType(3)
-EventType.MediaPlayerAudioDevice        = EventType(284)
-EventType.MediaPlayerAudioVolume        = EventType(283)
 EventType.MediaPlayerBackward           = EventType(264)
 EventType.MediaPlayerBuffering          = EventType(259)
-EventType.MediaPlayerCorked             = EventType(279)
-EventType.MediaPlayerESAdded            = EventType(276)
-EventType.MediaPlayerESDeleted          = EventType(277)
-EventType.MediaPlayerESSelected         = EventType(278)
 EventType.MediaPlayerEncounteredError   = EventType(266)
 EventType.MediaPlayerEndReached         = EventType(265)
 EventType.MediaPlayerForward            = EventType(263)
 EventType.MediaPlayerLengthChanged      = EventType(273)
 EventType.MediaPlayerMediaChanged       = EventType(0x100)
-EventType.MediaPlayerMuted              = EventType(281)
 EventType.MediaPlayerNothingSpecial     = EventType(257)
 EventType.MediaPlayerOpening            = EventType(258)
 EventType.MediaPlayerPausableChanged    = EventType(270)
@@ -504,8 +486,6 @@
 EventType.MediaPlayerStopped            = EventType(262)
 EventType.MediaPlayerTimeChanged        = EventType(267)
 EventType.MediaPlayerTitleChanged       = EventType(271)
-EventType.MediaPlayerUncorked           = EventType(280)
-EventType.MediaPlayerUnmuted            = EventType(282)
 EventType.MediaPlayerVout               = EventType(274)
 EventType.MediaStateChanged             = EventType(5)
 EventType.MediaSubItemAdded             = EventType(1)
@@ -549,19 +529,15 @@
         20: 'Episode',
         21: 'ShowName',
         22: 'Actors',
-        23: 'AlbumArtist',
-        24: 'DiscNumber',
     }
 Meta.Actors      = Meta(22)
 Meta.Album       = Meta(4)
-Meta.AlbumArtist = Meta(23)
 Meta.Artist      = Meta(1)
 Meta.ArtworkURL  = Meta(15)
 Meta.Copyright   = Meta(3)
 Meta.Date        = Meta(8)
 Meta.Description = Meta(6)
 Meta.Director    = Meta(18)
-Meta.DiscNumber  = Meta(24)
 Meta.EncodedBy   = Meta(14)
 Meta.Episode     = Meta(20)
 Meta.Genre       = Meta(2)
@@ -619,40 +595,6 @@
 TrackType.unknown = TrackType(-1)
 TrackType.video   = TrackType(1)
 
-class MediaType(_Enum):
-    '''Media type
-See libvlc_media_get_type.
-    '''
-    _enum_names_ = {
-        0: 'unknown',
-        1: 'file',
-        2: 'directory',
-        3: 'disc',
-        4: 'stream',
-        5: 'playlist',
-    }
-MediaType.directory = MediaType(2)
-MediaType.disc      = MediaType(3)
-MediaType.file      = MediaType(1)
-MediaType.playlist  = MediaType(5)
-MediaType.stream    = MediaType(4)
-MediaType.unknown   = MediaType(0)
-
-class MediaParseFlag(_Enum):
-    '''Parse flags used by libvlc_media_parse_with_options()
-See libvlc_media_parse_with_options.
-    '''
-    _enum_names_ = {
-        0x00: 'local',
-        0x01: 'network',
-        0x02: 'local',
-        0x04: 'network',
-    }
-MediaParseFlag.local   = MediaParseFlag(0x00)
-MediaParseFlag.local   = MediaParseFlag(0x02)
-MediaParseFlag.network = MediaParseFlag(0x01)
-MediaParseFlag.network = MediaParseFlag(0x04)
-
 class PlaybackMode(_Enum):
     '''Defines playback modes for playlist.
     '''
@@ -823,7 +765,7 @@
 class LogCb(ctypes.c_void_p):
     """Callback prototype for LibVLC log message handler.
 \param data data pointer as given to L{libvlc_log_set}()
-\param level message level (@ref libvlc_log_level)
+\param level message level (@ref enum libvlc_log_level)
 \param ctx message context (meta-information about the message)
 \param fmt printf() format string (as defined by ISO C11)
 \param args variable argument list for the format
@@ -832,49 +774,6 @@
          variable arguments are only valid until the callback returns.
     """
     pass
-class MediaOpenCb(ctypes.c_void_p):
-    """Callback prototype to open a custom bitstream input media.
-The same media item can be opened multiple times. Each time, this callback
-is invoked. It should allocate and initialize any instance-specific
-resources, then store them in *datap. The instance resources can be freed
-in the @ref libvlc_media_close_cb callback.
-\param opaque private pointer as passed to L{libvlc_media_new_callbacks}()
-\param datap storage space for a private data pointer [OUT]
-\param sizep byte length of the bitstream or UINT64_MAX if unknown [OUT]
-\note For convenience, *datap is initially NULL and *sizep is initially 0.
-\return 0 on success, non-zero on error. In case of failure, the other
-callbacks will not be invoked and any value stored in *datap and *sizep is
-discarded.
-    """
-    pass
-class MediaReadCb(ctypes.c_void_p):
-    """Callback prototype to read data from a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-\param buf start address of the buffer to read data into
-\param len bytes length of the buffer
-\return strictly positive number of bytes read, 0 on end-of-stream,
-        or -1 on non-recoverable error
-\note If no data is immediately available, then the callback should sleep.
-\warning The application is responsible for avoiding deadlock situations.
-In particular, the callback should return an error if playback is stopped;
-if it does not return, then L{libvlc_media_player_stop}() will never return.
-    """
-    pass
-class MediaSeekCb(ctypes.c_void_p):
-    """Callback prototype to seek a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-\param offset absolute byte offset to seek to
-\return 0 on success, -1 on error.
-    """
-    pass
-class MediaCloseCb(ctypes.c_void_p):
-    """Callback prototype to close a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-    """
-    pass
 class VideoLockCb(ctypes.c_void_p):
     """Callback prototype to allocate and lock a picture buffer.
 Whenever a new video frame needs to be decoded, the lock callback is
@@ -932,7 +831,7 @@
 Similarly, the number of scanlines must be bigger than of equal to
 the pixel height.
 Furthermore, we recommend that pitches and lines be multiple of 32
-to not break assumptions that might be held by optimized code
+to not break assumption that might be made by various optimizations
 in the video decoders, video filters and/or video converters.
     """
     pass
@@ -1005,57 +904,18 @@
     Callback = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p)
     Callback.__doc__ = '''Callback function notification
 \param p_event the event triggering the callback
-    '''
+    ''' 
     LogCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int, Log_ptr, ctypes.c_char_p, ctypes.c_void_p)
     LogCb.__doc__ = '''Callback prototype for LibVLC log message handler.
 \param data data pointer as given to L{libvlc_log_set}()
-\param level message level (@ref libvlc_log_level)
+\param level message level (@ref enum libvlc_log_level)
 \param ctx message context (meta-information about the message)
 \param fmt printf() format string (as defined by ISO C11)
 \param args variable argument list for the format
 \note Log message handlers <b>must</b> be thread-safe.
 \warning The message context pointer, the format string parameters and the
          variable arguments are only valid until the callback returns.
-    '''
-    MediaOpenCb = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_int), ctypes.c_void_p, ListPOINTER(ctypes.c_void_p), ctypes.POINTER(ctypes.c_uint64))
-    MediaOpenCb.__doc__ = '''Callback prototype to open a custom bitstream input media.
-The same media item can be opened multiple times. Each time, this callback
-is invoked. It should allocate and initialize any instance-specific
-resources, then store them in *datap. The instance resources can be freed
-in the @ref libvlc_media_close_cb callback.
-\param opaque private pointer as passed to L{libvlc_media_new_callbacks}()
-\param datap storage space for a private data pointer [OUT]
-\param sizep byte length of the bitstream or UINT64_MAX if unknown [OUT]
-\note For convenience, *datap is initially NULL and *sizep is initially 0.
-\return 0 on success, non-zero on error. In case of failure, the other
-callbacks will not be invoked and any value stored in *datap and *sizep is
-discarded.
-    '''
-    MediaReadCb = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_ssize_t), ctypes.c_void_p, ctypes.c_char_p, ctypes.c_size_t)
-    MediaReadCb.__doc__ = '''Callback prototype to read data from a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-\param buf start address of the buffer to read data into
-\param len bytes length of the buffer
-\return strictly positive number of bytes read, 0 on end-of-stream,
-        or -1 on non-recoverable error
-\note If no data is immediately available, then the callback should sleep.
-\warning The application is responsible for avoiding deadlock situations.
-In particular, the callback should return an error if playback is stopped;
-if it does not return, then L{libvlc_media_player_stop}() will never return.
-    '''
-    MediaSeekCb = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_int), ctypes.c_void_p, ctypes.c_uint64)
-    MediaSeekCb.__doc__ = '''Callback prototype to seek a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-\param offset absolute byte offset to seek to
-\return 0 on success, -1 on error.
-    '''
-    MediaCloseCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)
-    MediaCloseCb.__doc__ = '''Callback prototype to close a custom bitstream input media.
-\param opaque private pointer as set by the @ref libvlc_media_open_cb
-              callback
-    '''
+    ''' 
     VideoLockCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ListPOINTER(ctypes.c_void_p))
     VideoLockCb.__doc__ = '''Callback prototype to allocate and lock a picture buffer.
 Whenever a new video frame needs to be decoded, the lock callback is
@@ -1067,7 +927,7 @@
             of void pointers, this callback must initialize the array) [OUT]
 \return a private pointer for the display and unlock callbacks to identify
         the picture buffers
-    '''
+    ''' 
     VideoUnlockCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ListPOINTER(ctypes.c_void_p))
     VideoUnlockCb.__doc__ = '''Callback prototype to unlock a picture buffer.
 When the video frame decoding is complete, the unlock callback is invoked.
@@ -1080,7 +940,7 @@
                callback [IN]
 \param planes pixel planes as defined by the @ref libvlc_video_lock_cb
               callback (this parameter is only for convenience) [IN]
-    '''
+    ''' 
     VideoDisplayCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p)
     VideoDisplayCb.__doc__ = '''Callback prototype to display a picture.
 When the video frame needs to be shown, as determined by the media playback
@@ -1088,7 +948,7 @@
 \param opaque private pointer as passed to L{libvlc_video_set_callbacks}() [IN]
 \param picture private pointer returned from the @ref libvlc_video_lock_cb
                callback [IN]
-    '''
+    ''' 
     VideoFormatCb = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_uint), ListPOINTER(ctypes.c_void_p), ctypes.c_char_p, ctypes.POINTER(ctypes.c_uint), ctypes.POINTER(ctypes.c_uint), ctypes.POINTER(ctypes.c_uint), ctypes.POINTER(ctypes.c_uint))
     VideoFormatCb.__doc__ = '''Callback prototype to configure picture buffers format.
 This callback gets the format of the video as output by the video decoder
@@ -1110,49 +970,49 @@
 Similarly, the number of scanlines must be bigger than of equal to
 the pixel height.
 Furthermore, we recommend that pitches and lines be multiple of 32
-to not break assumptions that might be held by optimized code
+to not break assumption that might be made by various optimizations
 in the video decoders, video filters and/or video converters.
-    '''
+    ''' 
     VideoCleanupCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)
     VideoCleanupCb.__doc__ = '''Callback prototype to configure picture buffers format.
 \param opaque private pointer as passed to L{libvlc_video_set_callbacks}()
               (and possibly modified by @ref libvlc_video_format_cb) [IN]
-    '''
+    ''' 
     AudioPlayCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint, ctypes.c_int64)
     AudioPlayCb.__doc__ = '''Callback prototype for audio playback.
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
 \param samples pointer to the first audio sample to play back [IN]
 \param count number of audio samples to play back
 \param pts expected play time stamp (see libvlc_delay())
-    '''
+    ''' 
     AudioPauseCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int64)
     AudioPauseCb.__doc__ = '''Callback prototype for audio pause.
 \note The pause callback is never called if the audio is already paused.
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
 \param pts time stamp of the pause request (should be elapsed already)
-    '''
+    ''' 
     AudioResumeCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int64)
     AudioResumeCb.__doc__ = '''Callback prototype for audio resumption (i.e. restart from pause).
 \note The resume callback is never called if the audio is not paused.
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
 \param pts time stamp of the resumption request (should be elapsed already)
-    '''
+    ''' 
     AudioFlushCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int64)
     AudioFlushCb.__doc__ = '''Callback prototype for audio buffer flush
 (i.e. discard all pending buffers and stop playback as soon as possible).
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
-    '''
+    ''' 
     AudioDrainCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)
     AudioDrainCb.__doc__ = '''Callback prototype for audio buffer drain
 (i.e. wait for pending buffers to be played).
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
-    '''
+    ''' 
     AudioSetVolumeCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_float, ctypes.c_bool)
     AudioSetVolumeCb.__doc__ = '''Callback prototype for audio volume change.
 \param data data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
 \param volume software volume (1. = nominal, 0. = mute)
 \param mute muted flag
-    '''
+    ''' 
     AudioSetupCb = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_int), ListPOINTER(ctypes.c_void_p), ctypes.c_char_p, ctypes.POINTER(ctypes.c_uint), ctypes.POINTER(ctypes.c_uint))
     AudioSetupCb.__doc__ = '''Callback prototype to setup the audio playback.
 This is called when the media player needs to create a new audio output.
@@ -1162,12 +1022,12 @@
 \param rate sample rate [IN/OUT]
 \param channels channels count [IN/OUT]
 \return 0 on success, anything else to skip audio playback
-    '''
+    ''' 
     AudioCleanupCb = ctypes.CFUNCTYPE(ctypes.c_void_p, ctypes.c_void_p)
     AudioCleanupCb.__doc__ = '''Callback prototype for audio playback cleanup.
 This is called when the media player no longer needs an audio output.
 \param opaque data pointer as passed to L{libvlc_audio_set_callbacks}() [IN]
-    '''
+    ''' 
 cb = CallbackDecorators
  # End of generated enum types #
 
@@ -1448,7 +1308,7 @@
 
     @note: Only a single notification can be registered
     for each event type in an EventManager instance.
-
+    
     '''
 
     _callback_handler = None
@@ -1525,7 +1385,7 @@
       - a string
       - a list of strings as first parameters
       - the parameters given as the constructor parameters (must be strings)
-
+    
     '''
 
     def __new__(cls, *args):
@@ -1643,21 +1503,21 @@
         return module_description_list(libvlc_video_filter_list_get(self))
 
 
-
+    
     def release(self):
         '''Decrement the reference count of a libvlc instance, and destroy it
         if it reaches zero.
         '''
         return libvlc_release(self)
 
-
+    
     def retain(self):
         '''Increments the reference count of a libvlc instance.
         The initial reference count is 1 after L{new}() returns.
         '''
         return libvlc_retain(self)
 
-
+    
     def add_intf(self, name):
         '''Try to start a user interface for the libvlc instance.
         @param name: interface name, or None for default.
@@ -1665,7 +1525,7 @@
         '''
         return libvlc_add_intf(self, str_to_bytes(name))
 
-
+    
     def set_user_agent(self, name, http):
         '''Sets the application name. LibVLC passes this as the user agent string
         when a protocol requires it.
@@ -1675,7 +1535,7 @@
         '''
         return libvlc_set_user_agent(self, str_to_bytes(name), str_to_bytes(http))
 
-
+    
     def set_app_id(self, id, version, icon):
         '''Sets some meta-information about the application.
         See also L{set_user_agent}().
@@ -1686,7 +1546,7 @@
         '''
         return libvlc_set_app_id(self, str_to_bytes(id), str_to_bytes(version), str_to_bytes(icon))
 
-
+    
     def log_unset(self):
         '''Unsets the logging callback for a LibVLC instance. This is rarely needed:
         the callback is implicitly unset when the instance is destroyed.
@@ -1696,7 +1556,7 @@
         '''
         return libvlc_log_unset(self)
 
-
+    
     def log_set(self, data, p_instance):
         '''Sets the logging callback for a LibVLC instance.
         This function is thread-safe: it will wait for any pending callbacks
@@ -1707,7 +1567,7 @@
         '''
         return libvlc_log_set(self, data, p_instance)
 
-
+    
     def log_set_file(self, stream):
         '''Sets up logging to a file.
         @param stream: FILE pointer opened for writing (the FILE pointer must remain valid until L{log_unset}()).
@@ -1715,7 +1575,7 @@
         '''
         return libvlc_log_set_file(self, stream)
 
-
+    
     def media_new_location(self, psz_mrl):
         '''Create a media with a certain given media resource location,
         for instance a valid URL.
@@ -1729,7 +1589,7 @@
         '''
         return libvlc_media_new_location(self, str_to_bytes(psz_mrl))
 
-
+    
     def media_new_path(self, path):
         '''Create a media for a certain file path.
         See L{media_release}.
@@ -1738,7 +1598,7 @@
         '''
         return libvlc_media_new_path(self, str_to_bytes(path))
 
-
+    
     def media_new_fd(self, fd):
         '''Create a media for an already open file descriptor.
         The file descriptor shall be open for reading (or reading and writing).
@@ -1759,20 +1619,7 @@
         '''
         return libvlc_media_new_fd(self, fd)
 
-
-    def media_new_callbacks(self, open_cb, read_cb, seek_cb, close_cb, opaque):
-        '''Create a media with custom callbacks to read the data from.
-        @param open_cb: callback to open the custom bitstream input media.
-        @param read_cb: callback to read data (must not be None).
-        @param seek_cb: callback to seek, or None if seeking is not supported.
-        @param close_cb: callback to close the media, or None if unnecessary.
-        @param opaque: data pointer for the open callback.
-        @return: the newly created media or None on error @note If open_cb is None, the opaque pointer will be passed to read_cb, seek_cb and close_cb, and the stream size will be treated as unknown. @note The callbacks may be called asynchronously (from another thread). A single stream instance need not be reentrant. However the open_cb needs to be reentrant if the media is used by multiple player instances. @warning The callbacks may be used until all or any player instances that were supplied the media item are stopped. See L{media_release}.
-        @version: LibVLC 3.0.0 and later.
-        '''
-        return libvlc_media_new_callbacks(self, open_cb, read_cb, seek_cb, close_cb, opaque)
-
-
+    
     def media_new_as_node(self, psz_name):
         '''Create a media as an empty node with a given name.
         See L{media_release}.
@@ -1781,39 +1628,29 @@
         '''
         return libvlc_media_new_as_node(self, str_to_bytes(psz_name))
 
-
-    def media_discoverer_new(self, psz_name):
-        '''Create a media discoverer object by name.
-        After this object is created, you should attach to events in order to be
-        notified of the discoverer state.
-        You should also attach to media_list events in order to be notified of new
-        items discovered.
-        You need to call L{media_discoverer_start}() in order to start the
-        discovery.
-        See L{media_discoverer_media_list}
-        See L{media_discoverer_event_manager}
-        See L{media_discoverer_start}.
+    
+    def media_discoverer_new_from_name(self, psz_name):
+        '''Discover media service by name.
         @param psz_name: service name.
         @return: media discover object or None in case of error.
-        @version: LibVLC 3.0.0 or later.
         '''
-        return libvlc_media_discoverer_new(self, str_to_bytes(psz_name))
-
-
+        return libvlc_media_discoverer_new_from_name(self, str_to_bytes(psz_name))
+
+    
     def media_library_new(self):
         '''Create an new Media Library object.
         @return: a new object or None on error.
         '''
         return libvlc_media_library_new(self)
 
-
+    
     def audio_output_list_get(self):
         '''Gets the list of available audio output modules.
-        @return: list of available audio outputs. It must be freed with In case of error, None is returned.
+        @return: list of available audio outputs. It must be freed it with In case of error, None is returned.
         '''
         return libvlc_audio_output_list_get(self)
 
-
+    
     def audio_output_device_list_get(self, aout):
         '''Gets a list of audio output devices for a given audio output module,
         See L{audio_output_device_set}().
@@ -1825,18 +1662,18 @@
         some circumstances. By default, it is recommended to not specify any
         explicit audio device.
         @param psz_aout: audio output name (as returned by L{audio_output_list_get}()).
-        @return: A None-terminated linked list of potential audio output devices. It must be freed with L{audio_output_device_list_release}().
+        @return: A None-terminated linked list of potential audio output devices. It must be freed it with L{audio_output_device_list_release}().
         @version: LibVLC 2.1.0 or later.
         '''
         return libvlc_audio_output_device_list_get(self, str_to_bytes(aout))
 
-
+    
     def vlm_release(self):
         '''Release the vlm instance related to the given L{Instance}.
         '''
         return libvlc_vlm_release(self)
 
-
+    
     def vlm_add_broadcast(self, psz_name, psz_input, psz_output, i_options, ppsz_options, b_enabled, b_loop):
         '''Add a broadcast, with one input.
         @param psz_name: the name of the new broadcast.
@@ -1850,7 +1687,7 @@
         '''
         return libvlc_vlm_add_broadcast(self, str_to_bytes(psz_name), str_to_bytes(psz_input), str_to_bytes(psz_output), i_options, ppsz_options, b_enabled, b_loop)
 
-
+    
     def vlm_add_vod(self, psz_name, psz_input, i_options, ppsz_options, b_enabled, psz_mux):
         '''Add a vod, with one input.
         @param psz_name: the name of the new vod media.
@@ -1863,7 +1700,7 @@
         '''
         return libvlc_vlm_add_vod(self, str_to_bytes(psz_name), str_to_bytes(psz_input), i_options, ppsz_options, b_enabled, str_to_bytes(psz_mux))
 
-
+    
     def vlm_del_media(self, psz_name):
         '''Delete a media (VOD or broadcast).
         @param psz_name: the media to delete.
@@ -1871,7 +1708,7 @@
         '''
         return libvlc_vlm_del_media(self, str_to_bytes(psz_name))
 
-
+    
     def vlm_set_enabled(self, psz_name, b_enabled):
         '''Enable or disable a media (VOD or broadcast).
         @param psz_name: the media to work on.
@@ -1880,7 +1717,7 @@
         '''
         return libvlc_vlm_set_enabled(self, str_to_bytes(psz_name), b_enabled)
 
-
+    
     def vlm_set_output(self, psz_name, psz_output):
         '''Set the output for a media.
         @param psz_name: the media to work on.
@@ -1889,7 +1726,7 @@
         '''
         return libvlc_vlm_set_output(self, str_to_bytes(psz_name), str_to_bytes(psz_output))
 
-
+    
     def vlm_set_input(self, psz_name, psz_input):
         '''Set a media's input MRL. This will delete all existing inputs and
         add the specified one.
@@ -1899,7 +1736,7 @@
         '''
         return libvlc_vlm_set_input(self, str_to_bytes(psz_name), str_to_bytes(psz_input))
 
-
+    
     def vlm_add_input(self, psz_name, psz_input):
         '''Add a media's input MRL. This will add the specified one.
         @param psz_name: the media to work on.
@@ -1908,7 +1745,7 @@
         '''
         return libvlc_vlm_add_input(self, str_to_bytes(psz_name), str_to_bytes(psz_input))
 
-
+    
     def vlm_set_loop(self, psz_name, b_loop):
         '''Set a media's loop status.
         @param psz_name: the media to work on.
@@ -1917,7 +1754,7 @@
         '''
         return libvlc_vlm_set_loop(self, str_to_bytes(psz_name), b_loop)
 
-
+    
     def vlm_set_mux(self, psz_name, psz_mux):
         '''Set a media's vod muxer.
         @param psz_name: the media to work on.
@@ -1926,7 +1763,7 @@
         '''
         return libvlc_vlm_set_mux(self, str_to_bytes(psz_name), str_to_bytes(psz_mux))
 
-
+    
     def vlm_change_media(self, psz_name, psz_input, psz_output, i_options, ppsz_options, b_enabled, b_loop):
         '''Edit the parameters of a media. This will delete all existing inputs and
         add the specified one.
@@ -1941,7 +1778,7 @@
         '''
         return libvlc_vlm_change_media(self, str_to_bytes(psz_name), str_to_bytes(psz_input), str_to_bytes(psz_output), i_options, ppsz_options, b_enabled, b_loop)
 
-
+    
     def vlm_play_media(self, psz_name):
         '''Play the named broadcast.
         @param psz_name: the name of the broadcast.
@@ -1949,7 +1786,7 @@
         '''
         return libvlc_vlm_play_media(self, str_to_bytes(psz_name))
 
-
+    
     def vlm_stop_media(self, psz_name):
         '''Stop the named broadcast.
         @param psz_name: the name of the broadcast.
@@ -1957,7 +1794,7 @@
         '''
         return libvlc_vlm_stop_media(self, str_to_bytes(psz_name))
 
-
+    
     def vlm_pause_media(self, psz_name):
         '''Pause the named broadcast.
         @param psz_name: the name of the broadcast.
@@ -1965,7 +1802,7 @@
         '''
         return libvlc_vlm_pause_media(self, str_to_bytes(psz_name))
 
-
+    
     def vlm_seek_media(self, psz_name, f_percentage):
         '''Seek in the named broadcast.
         @param psz_name: the name of the broadcast.
@@ -1974,7 +1811,7 @@
         '''
         return libvlc_vlm_seek_media(self, str_to_bytes(psz_name), f_percentage)
 
-
+    
     def vlm_show_media(self, psz_name):
         '''Return information about the named media as a JSON
         string representation.
@@ -1989,7 +1826,7 @@
         '''
         return libvlc_vlm_show_media(self, str_to_bytes(psz_name))
 
-
+    
     def vlm_get_media_instance_position(self, psz_name, i_instance):
         '''Get vlm_media instance position by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -1998,7 +1835,7 @@
         '''
         return libvlc_vlm_get_media_instance_position(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_time(self, psz_name, i_instance):
         '''Get vlm_media instance time by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -2007,7 +1844,7 @@
         '''
         return libvlc_vlm_get_media_instance_time(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_length(self, psz_name, i_instance):
         '''Get vlm_media instance length by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -2016,7 +1853,7 @@
         '''
         return libvlc_vlm_get_media_instance_length(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_rate(self, psz_name, i_instance):
         '''Get vlm_media instance playback rate by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -2025,7 +1862,7 @@
         '''
         return libvlc_vlm_get_media_instance_rate(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_title(self, psz_name, i_instance):
         '''Get vlm_media instance title number by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -2035,7 +1872,7 @@
         '''
         return libvlc_vlm_get_media_instance_title(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_chapter(self, psz_name, i_instance):
         '''Get vlm_media instance chapter number by name or instance id.
         @param psz_name: name of vlm media instance.
@@ -2045,7 +1882,7 @@
         '''
         return libvlc_vlm_get_media_instance_chapter(self, str_to_bytes(psz_name), i_instance)
 
-
+    
     def vlm_get_media_instance_seekable(self, psz_name, i_instance):
         '''Is libvlc instance seekable ?
         @param psz_name: name of vlm media instance.
@@ -2065,11 +1902,11 @@
 
 class Media(_Ctype):
     '''Create a new Media instance.
-
+    
     Usage: Media(MRL, *options)
 
     See vlc.Instance.media_new documentation for details.
-
+    
     '''
 
     def __new__(cls, *args):
@@ -2113,7 +1950,7 @@
         return info
 
 
-
+    
     def add_option(self, psz_options):
         '''Add an option to the media.
         This option will be used to determine how the media_player will
@@ -2130,7 +1967,7 @@
         '''
         return libvlc_media_add_option(self, str_to_bytes(psz_options))
 
-
+    
     def add_option_flag(self, psz_options, i_flags):
         '''Add an option to the media with configurable flags.
         This option will be used to determine how the media_player will
@@ -2146,7 +1983,7 @@
         '''
         return libvlc_media_add_option_flag(self, str_to_bytes(psz_options), i_flags)
 
-
+    
     def retain(self):
         '''Retain a reference to a media descriptor object (libvlc_media_t). Use
         L{release}() to decrement the reference count of a
@@ -2154,7 +1991,7 @@
         '''
         return libvlc_media_retain(self)
 
-
+    
     def release(self):
         '''Decrement the reference count of a media descriptor object. If the
         reference count is 0, then L{release}() will release the
@@ -2164,20 +2001,20 @@
         '''
         return libvlc_media_release(self)
 
-
+    
     def get_mrl(self):
         '''Get the media resource locator (mrl) from a media descriptor object.
         @return: string with mrl of media descriptor object.
         '''
         return libvlc_media_get_mrl(self)
 
-
+    
     def duplicate(self):
         '''Duplicate a media descriptor object.
         '''
         return libvlc_media_duplicate(self)
 
-
+    
     def get_meta(self, e_meta):
         '''Read the meta of the media.
         If the media has not yet been parsed this will return None.
@@ -2192,7 +2029,7 @@
         '''
         return libvlc_media_get_meta(self, e_meta)
 
-
+    
     def set_meta(self, e_meta, psz_value):
         '''Set the meta of the media (this function will not save the meta, call
         L{save_meta} in order to save the meta).
@@ -2201,14 +2038,14 @@
         '''
         return libvlc_media_set_meta(self, e_meta, str_to_bytes(psz_value))
 
-
+    
     def save_meta(self):
         '''Save the meta previously set.
         @return: true if the write operation was successful.
         '''
         return libvlc_media_save_meta(self)
 
-
+    
     def get_state(self):
         '''Get current state of media descriptor object. Possible media states
         are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
@@ -2220,7 +2057,7 @@
         '''
         return libvlc_media_get_state(self)
 
-
+    
     def get_stats(self, p_stats):
         '''Get the current statistics about the media.
         @param p_stats:: structure that contain the statistics about the media (this structure must be allocated by the caller).
@@ -2228,7 +2065,7 @@
         '''
         return libvlc_media_get_stats(self, p_stats)
 
-
+    
     def subitems(self):
         '''Get subitems of media descriptor object. This will increment
         the reference count of supplied media descriptor object. Use
@@ -2245,17 +2082,17 @@
         '''
         return libvlc_media_event_manager(self)
 
-
+    
     def get_duration(self):
         '''Get duration (in ms) of media descriptor object item.
         @return: duration of media item or -1 on error.
         '''
         return libvlc_media_get_duration(self)
 
-
+    
     def parse(self):
         '''Parse a media.
-        This fetches (local) art, meta data and tracks information.
+        This fetches (local) meta data and tracks information.
         The method is synchronous.
         See L{parse_async}
         See L{get_meta}
@@ -2263,10 +2100,10 @@
         '''
         return libvlc_media_parse(self)
 
-
+    
     def parse_async(self):
         '''Parse a media.
-        This fetches (local) art, meta data and tracks information.
+        This fetches (local) meta data and tracks information.
         The method is the asynchronous of L{parse}().
         To track when this is over you can listen to libvlc_MediaParsedChanged
         event. However if the media was already parsed you will not receive this
@@ -2278,28 +2115,7 @@
         '''
         return libvlc_media_parse_async(self)
 
-
-    def parse_with_options(self, parse_flag):
-        '''Parse the media asynchronously with options.
-        This fetches (local or network) art, meta data and/or tracks information.
-        This method is the extended version of L{parse_async}().
-        To track when this is over you can listen to libvlc_MediaParsedChanged
-        event. However if this functions returns an error, you will not receive this
-        event.
-        It uses a flag to specify parse options (see libvlc_media_parse_flag_t). All
-        these flags can be combined. By default, media is parsed if it's a local
-        file.
-        See libvlc_MediaParsedChanged
-        See L{get_meta}
-        See L{tracks_get}
-        See libvlc_media_parse_flag_t.
-        @param parse_flag: parse options:
-        @return: -1 in case of error, 0 otherwise.
-        @version: LibVLC 3.0.0 or later.
-        '''
-        return libvlc_media_parse_with_options(self, parse_flag)
-
-
+    
     def is_parsed(self):
         '''Get Parsed status for media descriptor object.
         See libvlc_MediaParsedChanged.
@@ -2307,7 +2123,7 @@
         '''
         return libvlc_media_is_parsed(self)
 
-
+    
     def set_user_data(self, p_new_user_data):
         '''Sets media descriptor's user_data. user_data is specialized data
         accessed by the host application, VLC.framework uses it as a pointer to
@@ -2316,7 +2132,7 @@
         '''
         return libvlc_media_set_user_data(self, p_new_user_data)
 
-
+    
     def get_user_data(self):
         '''Get media descriptor's user_data. user_data is specialized data
         accessed by the host application, VLC.framework uses it as a pointer to
@@ -2324,15 +2140,7 @@
         '''
         return libvlc_media_get_user_data(self)
 
-
-    def get_type(self):
-        '''Get the media type of the media descriptor object.
-        @return: media type.
-        @version: LibVLC 3.0.0 and later. See libvlc_media_type_t.
-        '''
-        return libvlc_media_get_type(self)
-
-
+    
     def player_new_from_media(self):
         '''Create a Media Player object from a Media.
         @return: a new media player object, or None on error.
@@ -2347,40 +2155,21 @@
         '''(INTERNAL) ctypes wrapper constructor.
         '''
         return _Constructor(cls, ptr)
-
-    def start(self):
-        '''Start media discovery.
-        To stop it, call L{stop}() or
-        L{release}() directly.
-        See L{stop}.
-        @return: -1 in case of error, 0 otherwise.
-        @version: LibVLC 3.0.0 or later.
-        '''
-        return libvlc_media_discoverer_start(self)
-
-
-    def stop(self):
-        '''Stop media discovery.
-        See L{start}.
-        @version: LibVLC 3.0.0 or later.
-        '''
-        return libvlc_media_discoverer_stop(self)
-
-
+    
     def release(self):
         '''Release media discover object. If the reference count reaches 0, then
         the object will be released.
         '''
         return libvlc_media_discoverer_release(self)
 
-
+    
     def localized_name(self):
         '''Get media service discover object its localized name.
         @return: localized name.
         '''
         return libvlc_media_discoverer_localized_name(self)
 
-
+    
     def media_list(self):
         '''Get media service discover media list.
         @return: list of media items.
@@ -2394,7 +2183,7 @@
         '''
         return libvlc_media_discoverer_event_manager(self)
 
-
+    
     def is_running(self):
         '''Query if media service discover object is running.
         @return: true if running, false if not \libvlc_return_bool.
@@ -2409,7 +2198,7 @@
         '''(INTERNAL) ctypes wrapper constructor.
         '''
         return _Constructor(cls, ptr)
-
+    
     def release(self):
         '''Release media library object. This functions decrements the
         reference count of the media library object. If it reaches 0,
@@ -2417,7 +2206,7 @@
         '''
         return libvlc_media_library_release(self)
 
-
+    
     def retain(self):
         '''Retain a reference to a media library object. This function will
         increment the reference counting for this object. Use
@@ -2425,14 +2214,14 @@
         '''
         return libvlc_media_library_retain(self)
 
-
+    
     def load(self):
         '''Load media library.
         @return: 0 on success, -1 on error.
         '''
         return libvlc_media_library_load(self)
 
-
+    
     def media_list(self):
         '''Get media library subitems.
         @return: media list subitems.
@@ -2441,11 +2230,11 @@
 
 class MediaList(_Ctype):
     '''Create a new MediaList instance.
-
+    
     Usage: MediaList(list_of_MRLs)
 
     See vlc.Instance.media_list_new documentation for details.
-
+    
     '''
 
     def __new__(cls, *args):
@@ -2461,10 +2250,10 @@
 
     def get_instance(self):
         return getattr(self, '_instance', None)
-
+    
     def add_media(self, mrl):
         """Add media instance to media list.
-
+        
         The L{lock} should be held upon entering this function.
         @param mrl: a media instance or a MRL.
         @return: 0 on success, -1 if the media list is read-only.
@@ -2474,19 +2263,19 @@
         return libvlc_media_list_add_media(self, mrl)
 
 
-
+    
     def release(self):
         '''Release media list created with L{new}().
         '''
         return libvlc_media_list_release(self)
 
-
+    
     def retain(self):
         '''Retain reference to a media list.
         '''
         return libvlc_media_list_retain(self)
 
-
+    
     def set_media(self, p_md):
         '''Associate media instance with this media list instance.
         If another media instance was present it will be released.
@@ -2495,7 +2284,7 @@
         '''
         return libvlc_media_list_set_media(self, p_md)
 
-
+    
     def media(self):
         '''Get media instance from this media list instance. This action will increase
         the refcount on the media instance.
@@ -2504,7 +2293,7 @@
         '''
         return libvlc_media_list_media(self)
 
-
+    
     def insert_media(self, p_md, i_pos):
         '''Insert media instance in media list on a position
         The L{lock} should be held upon entering this function.
@@ -2514,7 +2303,7 @@
         '''
         return libvlc_media_list_insert_media(self, p_md, i_pos)
 
-
+    
     def remove_index(self, i_pos):
         '''Remove media instance from media list on a position
         The L{lock} should be held upon entering this function.
@@ -2523,7 +2312,7 @@
         '''
         return libvlc_media_list_remove_index(self, i_pos)
 
-
+    
     def count(self):
         '''Get count on media list items
         The L{lock} should be held upon entering this function.
@@ -2534,7 +2323,7 @@
     def __len__(self):
         return libvlc_media_list_count(self)
 
-
+    
     def item_at_index(self, i_pos):
         '''List media instance in media list at a position
         The L{lock} should be held upon entering this function.
@@ -2550,7 +2339,7 @@
         for i in range(len(self)):
             yield self[i]
 
-
+    
     def index_of_item(self, p_md):
         '''Find index position of List media instance in media list.
         Warning: the function will return the first matched position.
@@ -2560,20 +2349,20 @@
         '''
         return libvlc_media_list_index_of_item(self, p_md)
 
-
+    
     def is_readonly(self):
         '''This indicates if this media list is read-only from a user point of view.
         @return: 1 on readonly, 0 on readwrite \libvlc_return_bool.
         '''
         return libvlc_media_list_is_readonly(self)
 
-
+    
     def lock(self):
         '''Get lock on media list items.
         '''
         return libvlc_media_list_lock(self)
 
-
+    
     def unlock(self):
         '''Release lock on media list items
         The L{lock} should be held upon entering this function.
@@ -2594,7 +2383,7 @@
     It may take as parameter either:
       - a vlc.Instance
       - nothing
-
+    
     '''
 
     def __new__(cls, arg=None):
@@ -2615,7 +2404,7 @@
         return self._instance  #PYCHOK expected
 
 
-
+    
     def release(self):
         '''Release a media_list_player after use
         Decrement the reference count of a media player object. If the
@@ -2625,7 +2414,7 @@
         '''
         return libvlc_media_list_player_release(self)
 
-
+    
     def retain(self):
         '''Retain a reference to a media player list object. Use
         L{release}() to decrement reference count.
@@ -2639,54 +2428,47 @@
         '''
         return libvlc_media_list_player_event_manager(self)
 
-
+    
     def set_media_player(self, p_mi):
         '''Replace media player in media_list_player with this instance.
         @param p_mi: media player instance.
         '''
         return libvlc_media_list_player_set_media_player(self, p_mi)
 
-
-    def get_media_player(self):
-        '''Get media player of the media_list_player instance.
-        @return: media player instance @note the caller is responsible for releasing the returned instance.
-        '''
-        return libvlc_media_list_player_get_media_player(self)
-
-
+    
     def set_media_list(self, p_mlist):
         '''Set the media list associated with the player.
         @param p_mlist: list of media.
         '''
         return libvlc_media_list_player_set_media_list(self, p_mlist)
 
-
+    
     def play(self):
         '''Play media list.
         '''
         return libvlc_media_list_player_play(self)
 
-
+    
     def pause(self):
         '''Toggle pause (or resume) media list.
         '''
         return libvlc_media_list_player_pause(self)
 
-
+    
     def is_playing(self):
         '''Is media list playing?
         @return: true for playing and false for not playing \libvlc_return_bool.
         '''
         return libvlc_media_list_player_is_playing(self)
 
-
+    
     def get_state(self):
         '''Get current libvlc_state of media list player.
         @return: libvlc_state_t for media list player.
         '''
         return libvlc_media_list_player_get_state(self)
 
-
+    
     def play_item_at_index(self, i_index):
         '''Play media list item at position index.
         @param i_index: index in media list to play.
@@ -2701,7 +2483,7 @@
         for i in range(len(self)):
             yield self[i]
 
-
+    
     def play_item(self, p_md):
         '''Play the given media item.
         @param p_md: the media instance.
@@ -2709,27 +2491,27 @@
         '''
         return libvlc_media_list_player_play_item(self, p_md)
 
-
+    
     def stop(self):
         '''Stop playing media list.
         '''
         return libvlc_media_list_player_stop(self)
 
-
+    
     def next(self):
         '''Play next item from media list.
         @return: 0 upon success -1 if there is no next item.
         '''
         return libvlc_media_list_player_next(self)
 
-
+    
     def previous(self):
         '''Play previous item from media list.
         @return: 0 upon success -1 if there is no previous item.
         '''
         return libvlc_media_list_player_previous(self)
 
-
+    
     def set_playback_mode(self, e_mode):
         '''Sets the playback mode for the playlist.
         @param e_mode: playback mode specification.
@@ -2742,13 +2524,13 @@
     It may take as parameter either:
       - a string (media URI), options... In this case, a vlc.Instance will be created.
       - a vlc.Instance, a string (media URI), options...
-
+    
     '''
 
     def __new__(cls, *args):
         if len(args) == 1 and isinstance(args[0], _Ints):
             return _Constructor(cls, args[0])
-
+        
         if args and isinstance(args[0], Instance):
             instance = args[0]
             args = args[1:]
@@ -2845,13 +2627,13 @@
         Specify where the media player should render its video
         output. If LibVLC was built without Win32/Win64 API output
         support, then this has no effects.
-
+           
         @param drawable: windows handle of the drawable.
         """
         if not isinstance(drawable, ctypes.c_void_p):
             drawable = ctypes.c_void_p(int(drawable))
         libvlc_media_player_set_hwnd(self, drawable)
-
+            
     def video_get_width(self, num=0):
         """Get the width of a video in pixels.
 
@@ -2891,7 +2673,7 @@
         raise VLCException('invalid video number (%s)' % (num,))
 
 
-
+    
     def release(self):
         '''Release a media_player after use
         Decrement the reference count of a media player object. If the
@@ -2901,14 +2683,14 @@
         '''
         return libvlc_media_player_release(self)
 
-
+    
     def retain(self):
         '''Retain a reference to a media player object. Use
         L{release}() to decrement reference count.
         '''
         return libvlc_media_player_retain(self)
 
-
+    
     def set_media(self, p_md):
         '''Set the media that will be used by the media_player. If any,
         previous md will be released.
@@ -2916,7 +2698,7 @@
         '''
         return libvlc_media_player_set_media(self, p_md)
 
-
+    
     def get_media(self):
         '''Get the media used by the media_player.
         @return: the media associated with p_mi, or None if no media is associated.
@@ -2930,21 +2712,21 @@
         '''
         return libvlc_media_player_event_manager(self)
 
-
+    
     def is_playing(self):
         '''is_playing.
         @return: 1 if the media player is playing, 0 otherwise \libvlc_return_bool.
         '''
         return libvlc_media_player_is_playing(self)
 
-
+    
     def play(self):
         '''Play.
         @return: 0 if playback started (and was already started), or -1 on error.
         '''
         return libvlc_media_player_play(self)
 
-
+    
     def set_pause(self, do_pause):
         '''Pause or resume (no effect if there is no media).
         @param do_pause: play/resume if zero, pause if non-zero.
@@ -2952,19 +2734,19 @@
         '''
         return libvlc_media_player_set_pause(self, do_pause)
 
-
+    
     def pause(self):
         '''Toggle pause (no effect if there is no media).
         '''
         return libvlc_media_player_pause(self)
 
-
+    
     def stop(self):
         '''Stop (no effect if there is no media).
         '''
         return libvlc_media_player_stop(self)
 
-
+    
     def video_set_callbacks(self, lock, unlock, display, opaque):
         '''Set callbacks and private data to render decoded video to a custom area
         in memory.
@@ -2978,7 +2760,7 @@
         '''
         return libvlc_video_set_callbacks(self, lock, unlock, display, opaque)
 
-
+    
     def video_set_format(self, chroma, width, height, pitch):
         '''Set decoded video chroma and dimensions.
         This only works in combination with L{video_set_callbacks}(),
@@ -2992,7 +2774,7 @@
         '''
         return libvlc_video_set_format(self, str_to_bytes(chroma), width, height, pitch)
 
-
+    
     def video_set_format_callbacks(self, setup, cleanup):
         '''Set decoded video chroma and dimensions. This only works in combination with
         L{video_set_callbacks}().
@@ -3002,13 +2784,13 @@
         '''
         return libvlc_video_set_format_callbacks(self, setup, cleanup)
 
-
+    
     def set_nsobject(self, drawable):
         '''Set the NSView handler where the media player should render its video output.
         Use the vout called "macosx".
         The drawable is an NSObject that follow the VLCOpenGLVideoViewEmbedding
         protocol:
-        @code.m
+        @begincode
         \@protocol VLCOpenGLVideoViewEmbedding <NSObject>
         - (void)addVoutSubview:(NSView *)view;
         - (void)removeVoutSubview:(NSView *)view;
@@ -3017,62 +2799,55 @@
         Or it can be an NSView object.
         If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
         the following code should work:
-        @code.mm
-
+        @begincode
+        
             NSView *video = [[NSView alloc] init];
             QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent);
             L{set_nsobject}(mp, video);
             [video release];
-
+        
         @endcode
         You can find a live example in VLCVideoView in VLCKit.framework.
         @param drawable: the drawable that is either an NSView or an object following the VLCOpenGLVideoViewEmbedding protocol.
         '''
         return libvlc_media_player_set_nsobject(self, drawable)
 
-
+    
     def get_nsobject(self):
         '''Get the NSView handler previously set with L{set_nsobject}().
         @return: the NSView handler or 0 if none where set.
         '''
         return libvlc_media_player_get_nsobject(self)
 
-
+    
     def set_agl(self, drawable):
-        '''\deprecated Use L{set_nsobject} instead.
+        '''Set the agl handler where the media player should render its video output.
+        @param drawable: the agl handler.
         '''
         return libvlc_media_player_set_agl(self, drawable)
 
-
+    
     def get_agl(self):
-        '''\deprecated Use L{get_nsobject} instead.
+        '''Get the agl handler previously set with L{set_agl}().
+        @return: the agl handler or 0 if none where set.
         '''
         return libvlc_media_player_get_agl(self)
 
-
+    
     def set_xwindow(self, drawable):
         '''Set an X Window System drawable where the media player should render its
-        video output. The call takes effect when the playback starts. If it is
-        already started, it might need to be stopped before changes apply.
-        If LibVLC was built without X11 output support, then this function has no
-        effects.
-        By default, LibVLC will capture input events on the video rendering area.
-        Use L{video_set_mouse_input}() and L{video_set_key_input}() to
-        disable that and deliver events to the parent window / to the application
-        instead. By design, the X11 protocol delivers input events to only one
-        recipient.
-        @warning
-        The application must call the XInitThreads() function from Xlib before
-        L{new}(), and before any call to XOpenDisplay() directly or via any
-        other library. Failure to call XInitThreads() will seriously impede LibVLC
-        performance. Calling XOpenDisplay() before XInitThreads() will eventually
-        crash the process. That is a limitation of Xlib.
-        @param drawable: X11 window ID @note The specified identifier must correspond to an existing Input/Output class X11 window. Pixmaps are B{not} currently supported. The default X11 server is assumed, i.e. that specified in the DISPLAY environment variable. @warning LibVLC can deal with invalid X11 handle errors, however some display drivers (EGL, GLX, VA and/or VDPAU) can unfortunately not. Thus the window handle must remain valid until playback is stopped, otherwise the process may abort or crash.
-        @bug No more than one window handle per media player instance can be specified. If the media has multiple simultaneously active video tracks, extra tracks will be rendered into external windows beyond the control of the application.
+        video output. If LibVLC was built without X11 output support, then this has
+        no effects.
+        The specified identifier must correspond to an existing Input/Output class
+        X11 window. Pixmaps are B{not} supported. The caller shall ensure that
+        the X11 server is the same as the one the VLC instance has been configured
+        with. This function must be called before video playback is started;
+        otherwise it will only take effect after playback stop and restart.
+        @param drawable: the ID of the X window.
         '''
         return libvlc_media_player_set_xwindow(self, drawable)
 
-
+    
     def get_xwindow(self):
         '''Get the X Window System window identifier previously set with
         L{set_xwindow}(). Note that this will return the identifier
@@ -3082,7 +2857,7 @@
         '''
         return libvlc_media_player_get_xwindow(self)
 
-
+    
     def get_hwnd(self):
         '''Get the Windows API window handle (HWND) previously set with
         L{set_hwnd}(). The handle will be returned even if LibVLC
@@ -3091,16 +2866,7 @@
         '''
         return libvlc_media_player_get_hwnd(self)
 
-
-    def set_android_context(self, p_jvm, p_awindow_handler):
-        '''Set the android context.
-        @param p_jvm: the Java VM of the android process.
-        @param awindow_handler: org.videolan.libvlc.IAWindowNativeHandler jobject implemented by the org.videolan.libvlc.MediaPlayer class from the libvlc-android project.
-        @version: LibVLC 3.0.0 and later.
-        '''
-        return libvlc_media_player_set_android_context(self, p_jvm, p_awindow_handler)
-
-
+    
     def audio_set_callbacks(self, play, pause, resume, flush, drain, opaque):
         '''Set callbacks and private data for decoded audio.
         Use L{audio_set_format}() or L{audio_set_format_callbacks}()
@@ -3115,7 +2881,7 @@
         '''
         return libvlc_audio_set_callbacks(self, play, pause, resume, flush, drain, opaque)
 
-
+    
     def audio_set_volume_callback(self, set_volume):
         '''Set callbacks and private data for decoded audio. This only works in
         combination with L{audio_set_callbacks}().
@@ -3126,7 +2892,7 @@
         '''
         return libvlc_audio_set_volume_callback(self, set_volume)
 
-
+    
     def audio_set_format_callbacks(self, setup, cleanup):
         '''Set decoded audio format. This only works in combination with
         L{audio_set_callbacks}().
@@ -3136,7 +2902,7 @@
         '''
         return libvlc_audio_set_format_callbacks(self, setup, cleanup)
 
-
+    
     def audio_set_format(self, format, rate, channels):
         '''Set decoded audio format.
         This only works in combination with L{audio_set_callbacks}(),
@@ -3148,21 +2914,21 @@
         '''
         return libvlc_audio_set_format(self, str_to_bytes(format), rate, channels)
 
-
+    
     def get_length(self):
         '''Get the current movie length (in ms).
         @return: the movie length (in ms), or -1 if there is no media.
         '''
         return libvlc_media_player_get_length(self)
 
-
+    
     def get_time(self):
         '''Get the current movie time (in ms).
         @return: the movie time (in ms), or -1 if there is no media.
         '''
         return libvlc_media_player_get_time(self)
 
-
+    
     def set_time(self, i_time):
         '''Set the movie time (in ms). This has no effect if no media is being played.
         Not all formats and protocols support this.
@@ -3170,14 +2936,14 @@
         '''
         return libvlc_media_player_set_time(self, i_time)
 
-
+    
     def get_position(self):
         '''Get movie position as percentage between 0.0 and 1.0.
         @return: movie position, or -1. in case of error.
         '''
         return libvlc_media_player_get_position(self)
 
-
+    
     def set_position(self, f_pos):
         '''Set movie position as percentage between 0.0 and 1.0.
         This has no effect if playback is not enabled.
@@ -3186,35 +2952,35 @@
         '''
         return libvlc_media_player_set_position(self, f_pos)
 
-
+    
     def set_chapter(self, i_chapter):
         '''Set movie chapter (if applicable).
         @param i_chapter: chapter number to play.
         '''
         return libvlc_media_player_set_chapter(self, i_chapter)
 
-
+    
     def get_chapter(self):
         '''Get movie chapter.
         @return: chapter number currently playing, or -1 if there is no media.
         '''
         return libvlc_media_player_get_chapter(self)
 
-
+    
     def get_chapter_count(self):
         '''Get movie chapter count.
         @return: number of chapters in movie, or -1.
         '''
         return libvlc_media_player_get_chapter_count(self)
 
-
+    
     def will_play(self):
         '''Is the player able to play.
         @return: boolean \libvlc_return_bool.
         '''
         return libvlc_media_player_will_play(self)
 
-
+    
     def get_chapter_count_for_title(self, i_title):
         '''Get title chapter count.
         @param i_title: title.
@@ -3222,40 +2988,40 @@
         '''
         return libvlc_media_player_get_chapter_count_for_title(self, i_title)
 
-
+    
     def set_title(self, i_title):
         '''Set movie title.
         @param i_title: title number to play.
         '''
         return libvlc_media_player_set_title(self, i_title)
 
-
+    
     def get_title(self):
         '''Get movie title.
         @return: title number currently playing, or -1.
         '''
         return libvlc_media_player_get_title(self)
 
-
+    
     def get_title_count(self):
         '''Get movie title count.
         @return: title number count, or -1.
         '''
         return libvlc_media_player_get_title_count(self)
 
-
+    
     def previous_chapter(self):
         '''Set previous chapter (if applicable).
         '''
         return libvlc_media_player_previous_chapter(self)
 
-
+    
     def next_chapter(self):
         '''Set next chapter (if applicable).
         '''
         return libvlc_media_player_next_chapter(self)
 
-
+    
     def get_rate(self):
         '''Get the requested movie play rate.
         @warning: Depending on the underlying media, the requested rate may be
@@ -3264,7 +3030,7 @@
         '''
         return libvlc_media_player_get_rate(self)
 
-
+    
     def set_rate(self, rate):
         '''Set movie play rate.
         @param rate: movie play rate to set.
@@ -3272,42 +3038,42 @@
         '''
         return libvlc_media_player_set_rate(self, rate)
 
-
+    
     def get_state(self):
         '''Get current movie state.
         @return: the current state of the media player (playing, paused, ...) See libvlc_state_t.
         '''
         return libvlc_media_player_get_state(self)
 
-
+    
     def get_fps(self):
         '''Get movie fps rate.
         @return: frames per second (fps) for this playing movie, or 0 if unspecified.
         '''
         return libvlc_media_player_get_fps(self)
 
-
+    
     def has_vout(self):
         '''How many video outputs does this media player have?
         @return: the number of video outputs.
         '''
         return libvlc_media_player_has_vout(self)
 
-
+    
     def is_seekable(self):
         '''Is this media player seekable?
         @return: true if the media player can seek \libvlc_return_bool.
         '''
         return libvlc_media_player_is_seekable(self)
 
-
+    
     def can_pause(self):
         '''Can this media player be paused?
         @return: true if the media player can pause \libvlc_return_bool.
         '''
         return libvlc_media_player_can_pause(self)
 
-
+    
     def program_scrambled(self):
         '''Check if the current program is scrambled.
         @return: true if the current program is scrambled \libvlc_return_bool.
@@ -3315,13 +3081,13 @@
         '''
         return libvlc_media_player_program_scrambled(self)
 
-
+    
     def next_frame(self):
         '''Display the next frame (if supported).
         '''
         return libvlc_media_player_next_frame(self)
 
-
+    
     def navigate(self, navigate):
         '''Navigate through DVD Menu.
         @param navigate: the Navigation mode.
@@ -3329,7 +3095,7 @@
         '''
         return libvlc_media_player_navigate(self, navigate)
 
-
+    
     def set_video_title_display(self, position, timeout):
         '''Set if, and how, the video title will be shown when media is played.
         @param position: position at which to display the title, or libvlc_position_disable to prevent the title from being displayed.
@@ -3338,7 +3104,7 @@
         '''
         return libvlc_media_player_set_video_title_display(self, position, timeout)
 
-
+    
     def toggle_fullscreen(self):
         '''Toggle fullscreen status on non-embedded video outputs.
         @warning: The same limitations applies to this function
@@ -3346,7 +3112,7 @@
         '''
         return libvlc_toggle_fullscreen(self)
 
-
+    
     def set_fullscreen(self, b_fullscreen):
         '''Enable or disable fullscreen.
         @warning: With most window managers, only a top-level windows can be in
@@ -3359,14 +3125,14 @@
         '''
         return libvlc_set_fullscreen(self, b_fullscreen)
 
-
+    
     def get_fullscreen(self):
         '''Get current fullscreen status.
         @return: the fullscreen status (boolean) \libvlc_return_bool.
         '''
         return libvlc_get_fullscreen(self)
 
-
+    
     def video_set_key_input(self, on):
         '''Enable or disable key press events handling, according to the LibVLC hotkeys
         configuration. By default and for historical reasons, keyboard events are
@@ -3380,7 +3146,7 @@
         '''
         return libvlc_video_set_key_input(self, on)
 
-
+    
     def video_set_mouse_input(self, on):
         '''Enable or disable mouse click events handling. By default, those events are
         handled. This is needed for DVD menus to work, as well as a few video
@@ -3391,7 +3157,7 @@
         '''
         return libvlc_video_set_mouse_input(self, on)
 
-
+    
     def video_get_scale(self):
         '''Get the current video scaling factor.
         See also L{video_set_scale}().
@@ -3399,7 +3165,7 @@
         '''
         return libvlc_video_get_scale(self)
 
-
+    
     def video_set_scale(self, f_factor):
         '''Set the video scaling factor. That is the ratio of the number of pixels on
         screen to the number of pixels in the original decoded video in each
@@ -3410,35 +3176,35 @@
         '''
         return libvlc_video_set_scale(self, f_factor)
 
-
+    
     def video_get_aspect_ratio(self):
         '''Get current video aspect ratio.
         @return: the video aspect ratio or None if unspecified (the result must be released with free() or L{free}()).
         '''
         return libvlc_video_get_aspect_ratio(self)
 
-
+    
     def video_set_aspect_ratio(self, psz_aspect):
         '''Set new video aspect ratio.
         @param psz_aspect: new video aspect-ratio or None to reset to default @note Invalid aspect ratios are ignored.
         '''
         return libvlc_video_set_aspect_ratio(self, str_to_bytes(psz_aspect))
 
-
+    
     def video_get_spu(self):
         '''Get current video subtitle.
         @return: the video subtitle selected, or -1 if none.
         '''
         return libvlc_video_get_spu(self)
 
-
+    
     def video_get_spu_count(self):
         '''Get the number of available video subtitles.
         @return: the number of available video subtitles.
         '''
         return libvlc_video_get_spu_count(self)
 
-
+    
     def video_set_spu(self, i_spu):
         '''Set new video subtitle.
         @param i_spu: video subtitle track to select (i_id from track description).
@@ -3446,7 +3212,7 @@
         '''
         return libvlc_video_set_spu(self, i_spu)
 
-
+    
     def video_set_subtitle_file(self, psz_subtitle):
         '''Set new video subtitle file.
         @param psz_subtitle: new video subtitle file.
@@ -3454,7 +3220,7 @@
         '''
         return libvlc_video_set_subtitle_file(self, str_to_bytes(psz_subtitle))
 
-
+    
     def video_get_spu_delay(self):
         '''Get the current subtitle delay. Positive values means subtitles are being
         displayed later, negative values earlier.
@@ -3463,7 +3229,7 @@
         '''
         return libvlc_video_get_spu_delay(self)
 
-
+    
     def video_set_spu_delay(self, i_delay):
         '''Set the subtitle delay. This affects the timing of when the subtitle will
         be displayed. Positive values result in subtitles being displayed later,
@@ -3475,55 +3241,55 @@
         '''
         return libvlc_video_set_spu_delay(self, i_delay)
 
-
+    
     def video_get_crop_geometry(self):
         '''Get current crop filter geometry.
         @return: the crop filter geometry or None if unset.
         '''
         return libvlc_video_get_crop_geometry(self)
 
-
+    
     def video_set_crop_geometry(self, psz_geometry):
         '''Set new crop filter geometry.
         @param psz_geometry: new crop filter geometry (None to unset).
         '''
         return libvlc_video_set_crop_geometry(self, str_to_bytes(psz_geometry))
 
-
+    
     def video_get_teletext(self):
         '''Get current teletext page requested.
         @return: the current teletext page requested.
         '''
         return libvlc_video_get_teletext(self)
 
-
+    
     def video_set_teletext(self, i_page):
         '''Set new teletext page to retrieve.
         @param i_page: teletex page number requested.
         '''
         return libvlc_video_set_teletext(self, i_page)
 
-
+    
     def toggle_teletext(self):
         '''Toggle teletext transparent status on video output.
         '''
         return libvlc_toggle_teletext(self)
 
-
+    
     def video_get_track_count(self):
         '''Get number of available video tracks.
         @return: the number of available video tracks (int).
         '''
         return libvlc_video_get_track_count(self)
 
-
+    
     def video_get_track(self):
         '''Get current video track.
         @return: the video track ID (int) or -1 if no active input.
         '''
         return libvlc_video_get_track(self)
 
-
+    
     def video_set_track(self, i_track):
         '''Set video track.
         @param i_track: the track ID (i_id field from track description).
@@ -3531,7 +3297,7 @@
         '''
         return libvlc_video_set_track(self, i_track)
 
-
+    
     def video_take_snapshot(self, num, psz_filepath, i_width, i_height):
         '''Take a snapshot of the current video window.
         If i_width AND i_height is 0, original size is used.
@@ -3544,28 +3310,28 @@
         '''
         return libvlc_video_take_snapshot(self, num, str_to_bytes(psz_filepath), i_width, i_height)
 
-
+    
     def video_set_deinterlace(self, psz_mode):
         '''Enable or disable deinterlace filter.
         @param psz_mode: type of deinterlace filter, None to disable.
         '''
         return libvlc_video_set_deinterlace(self, str_to_bytes(psz_mode))
 
-
+    
     def video_get_marquee_int(self, option):
         '''Get an integer marquee option value.
         @param option: marq option to get See libvlc_video_marquee_int_option_t.
         '''
         return libvlc_video_get_marquee_int(self, option)
 
-
+    
     def video_get_marquee_string(self, option):
         '''Get a string marquee option value.
         @param option: marq option to get See libvlc_video_marquee_string_option_t.
         '''
         return libvlc_video_get_marquee_string(self, option)
 
-
+    
     def video_set_marquee_int(self, option, i_val):
         '''Enable, disable or set an integer marquee option
         Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)
@@ -3575,7 +3341,7 @@
         '''
         return libvlc_video_set_marquee_int(self, option, i_val)
 
-
+    
     def video_set_marquee_string(self, option, psz_text):
         '''Set a marquee string option.
         @param option: marq option to set See libvlc_video_marquee_string_option_t.
@@ -3583,14 +3349,14 @@
         '''
         return libvlc_video_set_marquee_string(self, option, str_to_bytes(psz_text))
 
-
+    
     def video_get_logo_int(self, option):
         '''Get integer logo option.
         @param option: logo option to get, values of libvlc_video_logo_option_t.
         '''
         return libvlc_video_get_logo_int(self, option)
 
-
+    
     def video_set_logo_int(self, option, value):
         '''Set logo option as integer. Options that take a different type value
         are ignored.
@@ -3601,7 +3367,7 @@
         '''
         return libvlc_video_set_logo_int(self, option, value)
 
-
+    
     def video_set_logo_string(self, option, psz_value):
         '''Set logo option as string. Options that take a different type value
         are ignored.
@@ -3610,7 +3376,7 @@
         '''
         return libvlc_video_set_logo_string(self, option, str_to_bytes(psz_value))
 
-
+    
     def video_get_adjust_int(self, option):
         '''Get integer adjust option.
         @param option: adjust option to get, values of libvlc_video_adjust_option_t.
@@ -3618,7 +3384,7 @@
         '''
         return libvlc_video_get_adjust_int(self, option)
 
-
+    
     def video_set_adjust_int(self, option, value):
         '''Set adjust option as integer. Options that take a different type value
         are ignored.
@@ -3630,7 +3396,7 @@
         '''
         return libvlc_video_set_adjust_int(self, option, value)
 
-
+    
     def video_get_adjust_float(self, option):
         '''Get float adjust option.
         @param option: adjust option to get, values of libvlc_video_adjust_option_t.
@@ -3638,7 +3404,7 @@
         '''
         return libvlc_video_get_adjust_float(self, option)
 
-
+    
     def video_set_adjust_float(self, option, value):
         '''Set adjust option as float. Options that take a different type value
         are ignored.
@@ -3648,7 +3414,7 @@
         '''
         return libvlc_video_set_adjust_float(self, option, value)
 
-
+    
     def audio_output_set(self, psz_name):
         '''Selects an audio output module.
         @note: Any change will take be effect only after playback is stopped and
@@ -3658,7 +3424,7 @@
         '''
         return libvlc_audio_output_set(self, str_to_bytes(psz_name))
 
-
+    
     def audio_output_device_enum(self):
         '''Gets a list of potential audio output devices,
         See L{audio_output_device_set}().
@@ -3668,12 +3434,12 @@
         @warning: Some audio output devices in the list might not actually work in
         some circumstances. By default, it is recommended to not specify any
         explicit audio device.
-        @return: A None-terminated linked list of potential audio output devices. It must be freed with L{audio_output_device_list_release}().
+        @return: A None-terminated linked list of potential audio output devices. It must be freed it with L{audio_output_device_list_release}().
         @version: LibVLC 2.2.0 or later.
         '''
         return libvlc_audio_output_device_enum(self)
 
-
+    
     def audio_output_device_set(self, module, device_id):
         '''Configures an explicit audio output device.
         If the module paramater is None, audio output will be moved to the device
@@ -3701,52 +3467,34 @@
         '''
         return libvlc_audio_output_device_set(self, str_to_bytes(module), str_to_bytes(device_id))
 
-
-    def audio_output_device_get(self):
-        '''Get the current audio output device identifier.
-        This complements L{audio_output_device_set}().
-        @warning: The initial value for the current audio output device identifier
-        may not be set or may be some unknown value. A LibVLC application should
-        compare this value against the known device identifiers (e.g. those that
-        were previously retrieved by a call to L{audio_output_device_enum} or
-        L{audio_output_device_list_get}) to find the current audio output device.
-        It is possible that the selected audio output device changes (an external
-        change) without a call to L{audio_output_device_set}. That may make this
-        method unsuitable to use if a LibVLC application is attempting to track
-        dynamic audio device changes as they happen.
-        @return: the current audio output device identifier None if no device is selected or in case of error (the result must be released with free() or L{free}()).
-        @version: LibVLC 3.0.0 or later.
-        '''
-        return libvlc_audio_output_device_get(self)
-
-
+    
     def audio_toggle_mute(self):
         '''Toggle mute status.
         '''
         return libvlc_audio_toggle_mute(self)
 
-
+    
     def audio_get_mute(self):
         '''Get current mute status.
         @return: the mute status (boolean) if defined, -1 if undefined/unapplicable.
         '''
         return libvlc_audio_get_mute(self)
 
-
+    
     def audio_set_mute(self, status):
         '''Set mute status.
         @param status: If status is true then mute, otherwise unmute @warning This function does not always work. If there are no active audio playback stream, the mute status might not be available. If digital pass-through (S/PDIF, HDMI...) is in use, muting may be unapplicable. Also some audio output plugins do not support muting at all. @note To force silent playback, disable all audio tracks. This is more efficient and reliable than mute.
         '''
         return libvlc_audio_set_mute(self, status)
 
-
+    
     def audio_get_volume(self):
         '''Get current software audio volume.
         @return: the software volume in percents (0 = mute, 100 = nominal / 0dB).
         '''
         return libvlc_audio_get_volume(self)
 
-
+    
     def audio_set_volume(self, i_volume):
         '''Set current software audio volume.
         @param i_volume: the volume in percents (0 = mute, 100 = 0dB).
@@ -3754,21 +3502,21 @@
         '''
         return libvlc_audio_set_volume(self, i_volume)
 
-
+    
     def audio_get_track_count(self):
         '''Get number of available audio tracks.
         @return: the number of available audio tracks (int), or -1 if unavailable.
         '''
         return libvlc_audio_get_track_count(self)
 
-
+    
     def audio_get_track(self):
         '''Get current audio track.
         @return: the audio track ID or -1 if no active input.
         '''
         return libvlc_audio_get_track(self)
 
-
+    
     def audio_set_track(self, i_track):
         '''Set current audio track.
         @param i_track: the track ID (i_id field from track description).
@@ -3776,14 +3524,14 @@
         '''
         return libvlc_audio_set_track(self, i_track)
 
-
+    
     def audio_get_channel(self):
         '''Get current audio channel.
         @return: the audio channel See libvlc_audio_output_channel_t.
         '''
         return libvlc_audio_get_channel(self)
 
-
+    
     def audio_set_channel(self, channel):
         '''Set current audio channel.
         @param channel: the audio channel, See libvlc_audio_output_channel_t.
@@ -3791,7 +3539,7 @@
         '''
         return libvlc_audio_set_channel(self, channel)
 
-
+    
     def audio_get_delay(self):
         '''Get current audio delay.
         @return: the audio delay (microseconds).
@@ -3799,7 +3547,7 @@
         '''
         return libvlc_audio_get_delay(self)
 
-
+    
     def audio_set_delay(self, i_delay):
         '''Set current audio delay. The audio delay will be reset to zero each time the media changes.
         @param i_delay: the audio delay (microseconds).
@@ -3808,7 +3556,7 @@
         '''
         return libvlc_audio_set_delay(self, i_delay)
 
-
+    
     def set_equalizer(self, p_equalizer):
         '''Apply new equalizer settings to a media player.
         The equalizer is first created by invoking L{audio_equalizer_new}() or
@@ -3872,27 +3620,6 @@
     '''Create and initialize a libvlc instance.
     This functions accept a list of "command line" arguments similar to the
     main(). These arguments affect the LibVLC instance default configuration.
-    @note
-    LibVLC may create threads. Therefore, any thread-unsafe process
-    initialization must be performed before calling L{libvlc_new}(). In particular
-    and where applicable:
-    - setlocale() and textdomain(),
-    - setenv(), unsetenv() and putenv(),
-    - with the X11 display system, XInitThreads()
-      (see also L{libvlc_media_player_set_xwindow}()) and
-    - on Microsoft Windows, SetErrorMode().
-    - sigprocmask() shall never be invoked; pthread_sigmask() can be used.
-    On POSIX systems, the SIGCHLD signal must B{not} be ignored, i.e. the
-    signal handler must set to SIG_DFL or a function pointer, not SIG_IGN.
-    Also while LibVLC is active, the wait() function shall not be called, and
-    any call to waitpid() shall use a strictly positive value for the first
-    parameter (i.e. the PID). Failure to follow those rules may lead to a
-    deadlock or a busy loop.
-    Also on POSIX systems, it is recommended that the SIGPIPE signal be blocked,
-    even if it is not, in principles, necessary.
-    On Microsoft Windows Vista/2008, the process error mode
-    SEM_FAILCRITICALERRORS flag B{must} with the SetErrorMode() function
-    before using LibVLC. On later versions, it is optional and unnecessary.
     @param argc: the number of arguments (should be 0).
     @param argv: list of arguments (should be None).
     @return: the libvlc instance or None in case of error.
@@ -4202,22 +3929,6 @@
                     ctypes.c_void_p, Instance, ctypes.c_int)
     return f(p_instance, fd)
 
-def libvlc_media_new_callbacks(instance, open_cb, read_cb, seek_cb, close_cb, opaque):
-    '''Create a media with custom callbacks to read the data from.
-    @param instance: LibVLC instance.
-    @param open_cb: callback to open the custom bitstream input media.
-    @param read_cb: callback to read data (must not be None).
-    @param seek_cb: callback to seek, or None if seeking is not supported.
-    @param close_cb: callback to close the media, or None if unnecessary.
-    @param opaque: data pointer for the open callback.
-    @return: the newly created media or None on error @note If open_cb is None, the opaque pointer will be passed to read_cb, seek_cb and close_cb, and the stream size will be treated as unknown. @note The callbacks may be called asynchronously (from another thread). A single stream instance need not be reentrant. However the open_cb needs to be reentrant if the media is used by multiple player instances. @warning The callbacks may be used until all or any player instances that were supplied the media item are stopped. See L{libvlc_media_release}.
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_media_new_callbacks', None) or \
-        _Cfunction('libvlc_media_new_callbacks', ((1,), (1,), (1,), (1,), (1,), (1,),), class_result(Media),
-                    ctypes.c_void_p, Instance, MediaOpenCb, MediaReadCb, MediaSeekCb, MediaCloseCb, ctypes.c_void_p)
-    return f(instance, open_cb, read_cb, seek_cb, close_cb, opaque)
-
 def libvlc_media_new_as_node(p_instance, psz_name):
     '''Create a media as an empty node with a given name.
     See L{libvlc_media_release}.
@@ -4413,7 +4124,7 @@
 
 def libvlc_media_parse(p_md):
     '''Parse a media.
-    This fetches (local) art, meta data and tracks information.
+    This fetches (local) meta data and tracks information.
     The method is synchronous.
     See L{libvlc_media_parse_async}
     See L{libvlc_media_get_meta}
@@ -4427,7 +4138,7 @@
 
 def libvlc_media_parse_async(p_md):
     '''Parse a media.
-    This fetches (local) art, meta data and tracks information.
+    This fetches (local) meta data and tracks information.
     The method is the asynchronous of L{libvlc_media_parse}().
     To track when this is over you can listen to libvlc_MediaParsedChanged
     event. However if the media was already parsed you will not receive this
@@ -4443,30 +4154,6 @@
                     None, Media)
     return f(p_md)
 
-def libvlc_media_parse_with_options(p_md, parse_flag):
-    '''Parse the media asynchronously with options.
-    This fetches (local or network) art, meta data and/or tracks information.
-    This method is the extended version of L{libvlc_media_parse_async}().
-    To track when this is over you can listen to libvlc_MediaParsedChanged
-    event. However if this functions returns an error, you will not receive this
-    event.
-    It uses a flag to specify parse options (see libvlc_media_parse_flag_t). All
-    these flags can be combined. By default, media is parsed if it's a local
-    file.
-    See libvlc_MediaParsedChanged
-    See L{libvlc_media_get_meta}
-    See L{libvlc_media_tracks_get}
-    See libvlc_media_parse_flag_t.
-    @param p_md: media descriptor object.
-    @param parse_flag: parse options:
-    @return: -1 in case of error, 0 otherwise.
-    @version: LibVLC 3.0.0 or later.
-    '''
-    f = _Cfunctions.get('libvlc_media_parse_with_options', None) or \
-        _Cfunction('libvlc_media_parse_with_options', ((1,), (1,),), None,
-                    ctypes.c_int, Media, MediaParseFlag)
-    return f(p_md, parse_flag)
-
 def libvlc_media_is_parsed(p_md):
     '''Get Parsed status for media descriptor object.
     See libvlc_MediaParsedChanged.
@@ -4516,18 +4203,6 @@
                     ctypes.c_uint, Media, ctypes.POINTER(ctypes.POINTER(MediaTrack)))
     return f(p_md, tracks)
 
-def libvlc_media_get_codec_description(i_type, i_codec):
-    '''Get codec description from media elementary stream.
-    @param i_type: i_type from L{MediaTrack}.
-    @param i_codec: i_codec or i_original_fourcc from L{MediaTrack}.
-    @return: codec description.
-    @version: LibVLC 3.0.0 and later. See L{MediaTrack}.
-    '''
-    f = _Cfunctions.get('libvlc_media_get_codec_description', None) or \
-        _Cfunction('libvlc_media_get_codec_description', ((1,), (1,),), None,
-                    ctypes.c_char_p, TrackType, ctypes.c_uint32)
-    return f(i_type, i_codec)
-
 def libvlc_media_tracks_release(p_tracks, i_count):
     '''Release media descriptor's elementary streams description array.
     @param p_tracks: tracks info array to release.
@@ -4539,63 +4214,17 @@
                     None, ctypes.POINTER(MediaTrack), ctypes.c_uint)
     return f(p_tracks, i_count)
 
-def libvlc_media_get_type(p_md):
-    '''Get the media type of the media descriptor object.
-    @param p_md: media descriptor object.
-    @return: media type.
-    @version: LibVLC 3.0.0 and later. See libvlc_media_type_t.
-    '''
-    f = _Cfunctions.get('libvlc_media_get_type', None) or \
-        _Cfunction('libvlc_media_get_type', ((1,),), None,
-                    MediaType, Media)
-    return f(p_md)
-
-def libvlc_media_discoverer_new(p_inst, psz_name):
-    '''Create a media discoverer object by name.
-    After this object is created, you should attach to events in order to be
-    notified of the discoverer state.
-    You should also attach to media_list events in order to be notified of new
-    items discovered.
-    You need to call L{libvlc_media_discoverer_start}() in order to start the
-    discovery.
-    See L{libvlc_media_discoverer_media_list}
-    See L{libvlc_media_discoverer_event_manager}
-    See L{libvlc_media_discoverer_start}.
+def libvlc_media_discoverer_new_from_name(p_inst, psz_name):
+    '''Discover media service by name.
     @param p_inst: libvlc instance.
     @param psz_name: service name.
     @return: media discover object or None in case of error.
-    @version: LibVLC 3.0.0 or later.
     '''
-    f = _Cfunctions.get('libvlc_media_discoverer_new', None) or \
-        _Cfunction('libvlc_media_discoverer_new', ((1,), (1,),), class_result(MediaDiscoverer),
+    f = _Cfunctions.get('libvlc_media_discoverer_new_from_name', None) or \
+        _Cfunction('libvlc_media_discoverer_new_from_name', ((1,), (1,),), class_result(MediaDiscoverer),
                     ctypes.c_void_p, Instance, ctypes.c_char_p)
     return f(p_inst, psz_name)
 
-def libvlc_media_discoverer_start(p_mdis):
-    '''Start media discovery.
-    To stop it, call L{libvlc_media_discoverer_stop}() or
-    L{libvlc_media_discoverer_release}() directly.
-    See L{libvlc_media_discoverer_stop}.
-    @param p_mdis: media discover object.
-    @return: -1 in case of error, 0 otherwise.
-    @version: LibVLC 3.0.0 or later.
-    '''
-    f = _Cfunctions.get('libvlc_media_discoverer_start', None) or \
-        _Cfunction('libvlc_media_discoverer_start', ((1,),), None,
-                    ctypes.c_int, MediaDiscoverer)
-    return f(p_mdis)
-
-def libvlc_media_discoverer_stop(p_mdis):
-    '''Stop media discovery.
-    See L{libvlc_media_discoverer_start}.
-    @param p_mdis: media discover object.
-    @version: LibVLC 3.0.0 or later.
-    '''
-    f = _Cfunctions.get('libvlc_media_discoverer_stop', None) or \
-        _Cfunction('libvlc_media_discoverer_stop', ((1,),), None,
-                    None, MediaDiscoverer)
-    return f(p_mdis)
-
 def libvlc_media_discoverer_release(p_mdis):
     '''Release media discover object. If the reference count reaches 0, then
     the object will be released.
@@ -4916,16 +4545,6 @@
                     None, MediaListPlayer, MediaPlayer)
     return f(p_mlp, p_mi)
 
-def libvlc_media_list_player_get_media_player(p_mlp):
-    '''Get media player of the media_list_player instance.
-    @param p_mlp: media list player instance.
-    @return: media player instance @note the caller is responsible for releasing the returned instance.
-    '''
-    f = _Cfunctions.get('libvlc_media_list_player_get_media_player', None) or \
-        _Cfunction('libvlc_media_list_player_get_media_player', ((1,),), class_result(MediaPlayer),
-                    ctypes.c_void_p, MediaListPlayer)
-    return f(p_mlp)
-
 def libvlc_media_list_player_set_media_list(p_mlp, p_mlist):
     '''Set the media list associated with the player.
     @param p_mlp: media list player instance.
@@ -5210,7 +4829,7 @@
     Use the vout called "macosx".
     The drawable is an NSObject that follow the VLCOpenGLVideoViewEmbedding
     protocol:
-    @code.m
+    @begincode
     \@protocol VLCOpenGLVideoViewEmbedding <NSObject>
     - (void)addVoutSubview:(NSView *)view;
     - (void)removeVoutSubview:(NSView *)view;
@@ -5219,13 +4838,13 @@
     Or it can be an NSView object.
     If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
     the following code should work:
-    @code.mm
-
+    @begincode
+    
         NSView *video = [[NSView alloc] init];
         QMacCocoaViewContainer *container = new QMacCocoaViewContainer(video, parent);
         L{libvlc_media_player_set_nsobject}(mp, video);
         [video release];
-
+    
     @endcode
     You can find a live example in VLCVideoView in VLCKit.framework.
     @param p_mi: the Media Player.
@@ -5247,7 +4866,9 @@
     return f(p_mi)
 
 def libvlc_media_player_set_agl(p_mi, drawable):
-    '''\deprecated Use L{libvlc_media_player_set_nsobject} instead.
+    '''Set the agl handler where the media player should render its video output.
+    @param p_mi: the Media Player.
+    @param drawable: the agl handler.
     '''
     f = _Cfunctions.get('libvlc_media_player_set_agl', None) or \
         _Cfunction('libvlc_media_player_set_agl', ((1,), (1,),), None,
@@ -5255,7 +4876,9 @@
     return f(p_mi, drawable)
 
 def libvlc_media_player_get_agl(p_mi):
-    '''\deprecated Use L{libvlc_media_player_get_nsobject} instead.
+    '''Get the agl handler previously set with L{libvlc_media_player_set_agl}().
+    @param p_mi: the Media Player.
+    @return: the agl handler or 0 if none where set.
     '''
     f = _Cfunctions.get('libvlc_media_player_get_agl', None) or \
         _Cfunction('libvlc_media_player_get_agl', ((1,),), None,
@@ -5264,24 +4887,15 @@
 
 def libvlc_media_player_set_xwindow(p_mi, drawable):
     '''Set an X Window System drawable where the media player should render its
-    video output. The call takes effect when the playback starts. If it is
-    already started, it might need to be stopped before changes apply.
-    If LibVLC was built without X11 output support, then this function has no
-    effects.
-    By default, LibVLC will capture input events on the video rendering area.
-    Use L{libvlc_video_set_mouse_input}() and L{libvlc_video_set_key_input}() to
-    disable that and deliver events to the parent window / to the application
-    instead. By design, the X11 protocol delivers input events to only one
-    recipient.
-    @warning
-    The application must call the XInitThreads() function from Xlib before
-    L{libvlc_new}(), and before any call to XOpenDisplay() directly or via any
-    other library. Failure to call XInitThreads() will seriously impede LibVLC
-    performance. Calling XOpenDisplay() before XInitThreads() will eventually
-    crash the process. That is a limitation of Xlib.
-    @param p_mi: media player.
-    @param drawable: X11 window ID @note The specified identifier must correspond to an existing Input/Output class X11 window. Pixmaps are B{not} currently supported. The default X11 server is assumed, i.e. that specified in the DISPLAY environment variable. @warning LibVLC can deal with invalid X11 handle errors, however some display drivers (EGL, GLX, VA and/or VDPAU) can unfortunately not. Thus the window handle must remain valid until playback is stopped, otherwise the process may abort or crash.
-    @bug No more than one window handle per media player instance can be specified. If the media has multiple simultaneously active video tracks, extra tracks will be rendered into external windows beyond the control of the application.
+    video output. If LibVLC was built without X11 output support, then this has
+    no effects.
+    The specified identifier must correspond to an existing Input/Output class
+    X11 window. Pixmaps are B{not} supported. The caller shall ensure that
+    the X11 server is the same as the one the VLC instance has been configured
+    with. This function must be called before video playback is started;
+    otherwise it will only take effect after playback stop and restart.
+    @param p_mi: the Media Player.
+    @param drawable: the ID of the X window.
     '''
     f = _Cfunctions.get('libvlc_media_player_set_xwindow', None) or \
         _Cfunction('libvlc_media_player_set_xwindow', ((1,), (1,),), None,
@@ -5325,18 +4939,6 @@
                     ctypes.c_void_p, MediaPlayer)
     return f(p_mi)
 
-def libvlc_media_player_set_android_context(p_mi, p_jvm, p_awindow_handler):
-    '''Set the android context.
-    @param p_mi: the media player.
-    @param p_jvm: the Java VM of the android process.
-    @param awindow_handler: org.videolan.libvlc.IAWindowNativeHandler jobject implemented by the org.videolan.libvlc.MediaPlayer class from the libvlc-android project.
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_media_player_set_android_context', None) or \
-        _Cfunction('libvlc_media_player_set_android_context', ((1,), (1,), (1,),), None,
-                    None, MediaPlayer, ctypes.c_void_p, ctypes.c_void_p)
-    return f(p_mi, p_jvm, p_awindow_handler)
-
 def libvlc_audio_set_callbacks(mp, play, pause, resume, flush, drain, opaque):
     '''Set callbacks and private data for decoded audio.
     Use L{libvlc_audio_set_format}() or L{libvlc_audio_set_format_callbacks}()
@@ -5842,7 +5444,7 @@
 def libvlc_video_get_spu_description(p_mi):
     '''Get the description of available video subtitles.
     @param p_mi: the media player.
-    @return: list containing description of available video subtitles. It must be freed with L{libvlc_track_description_list_release}().
+    @return: list containing description of available video subtitles.
     '''
     f = _Cfunctions.get('libvlc_video_get_spu_description', None) or \
         _Cfunction('libvlc_video_get_spu_description', ((1,),), None,
@@ -5898,52 +5500,26 @@
                     ctypes.c_int, MediaPlayer, ctypes.c_int64)
     return f(p_mi, i_delay)
 
-def libvlc_media_player_get_full_title_descriptions(p_mi, titles):
-    '''Get the full description of available titles.
-    @param p_mi: the media player.
-    @param address: to store an allocated array of title descriptions descriptions (must be freed with L{libvlc_title_descriptions_release}() by the caller) [OUT].
-    @return: the number of titles (-1 on error).
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_media_player_get_full_title_descriptions', None) or \
-        _Cfunction('libvlc_media_player_get_full_title_descriptions', ((1,), (1,),), None,
-                    ctypes.c_int, MediaPlayer, ctypes.POINTER(ctypes.POINTER(TitleDescription)))
-    return f(p_mi, titles)
-
-def libvlc_title_descriptions_release(p_titles, i_count):
-    '''Release a title description.
-    @param title: description array to release.
-    @param number: of title descriptions to release.
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_title_descriptions_release', None) or \
-        _Cfunction('libvlc_title_descriptions_release', ((1,), (1,),), None,
-                    None, ctypes.POINTER(TitleDescription), ctypes.c_uint)
-    return f(p_titles, i_count)
-
-def libvlc_media_player_get_full_chapter_descriptions(p_mi, i_chapters_of_title, pp_chapters):
-    '''Get the full description of available chapters.
-    @param p_mi: the media player.
-    @param index: of the title to query for chapters (uses current title if set to -1).
-    @param address: to store an allocated array of chapter descriptions descriptions (must be freed with L{libvlc_chapter_descriptions_release}() by the caller) [OUT].
-    @return: the number of chapters (-1 on error).
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_media_player_get_full_chapter_descriptions', None) or \
-        _Cfunction('libvlc_media_player_get_full_chapter_descriptions', ((1,), (1,), (1,),), None,
-                    ctypes.c_int, MediaPlayer, ctypes.c_int, ctypes.POINTER(ctypes.POINTER(ChapterDescription)))
-    return f(p_mi, i_chapters_of_title, pp_chapters)
-
-def libvlc_chapter_descriptions_release(p_chapters, i_count):
-    '''Release a chapter description.
-    @param chapter: description array to release.
-    @param number: of chapter descriptions to release.
-    @version: LibVLC 3.0.0 and later.
-    '''
-    f = _Cfunctions.get('libvlc_chapter_descriptions_release', None) or \
-        _Cfunction('libvlc_chapter_descriptions_release', ((1,), (1,),), None,
-                    None, ctypes.POINTER(ChapterDescription), ctypes.c_uint)
-    return f(p_chapters, i_count)
+def libvlc_video_get_title_description(p_mi):
+    '''Get the description of available titles.
+    @param p_mi: the media player.
+    @return: list containing description of available titles.
+    '''
+    f = _Cfunctions.get('libvlc_video_get_title_description', None) or \
+        _Cfunction('libvlc_video_get_title_description', ((1,),), None,
+                    ctypes.POINTER(TrackDescription), MediaPlayer)
+    return f(p_mi)
+
+def libvlc_video_get_chapter_description(p_mi, i_title):
+    '''Get the description of available chapters for specific title.
+    @param p_mi: the media player.
+    @param i_title: selected title.
+    @return: list containing description of available chapter for title i_title.
+    '''
+    f = _Cfunctions.get('libvlc_video_get_chapter_description', None) or \
+        _Cfunction('libvlc_video_get_chapter_description', ((1,), (1,),), None,
+                    ctypes.POINTER(TrackDescription), MediaPlayer, ctypes.c_int)
+    return f(p_mi, i_title)
 
 def libvlc_video_get_crop_geometry(p_mi):
     '''Get current crop filter geometry.
@@ -6007,7 +5583,7 @@
 def libvlc_video_get_track_description(p_mi):
     '''Get the description of available video tracks.
     @param p_mi: media player.
-    @return: list with description of available video tracks, or None on error. It must be freed with L{libvlc_track_description_list_release}().
+    @return: list with description of available video tracks, or None on error.
     '''
     f = _Cfunctions.get('libvlc_video_get_track_description', None) or \
         _Cfunction('libvlc_video_get_track_description', ((1,),), None,
@@ -6194,7 +5770,7 @@
 def libvlc_audio_output_list_get(p_instance):
     '''Gets the list of available audio output modules.
     @param p_instance: libvlc instance.
-    @return: list of available audio outputs. It must be freed with In case of error, None is returned.
+    @return: list of available audio outputs. It must be freed it with In case of error, None is returned.
     '''
     f = _Cfunctions.get('libvlc_audio_output_list_get', None) or \
         _Cfunction('libvlc_audio_output_list_get', ((1,),), None,
@@ -6233,7 +5809,7 @@
     some circumstances. By default, it is recommended to not specify any
     explicit audio device.
     @param mp: media player.
-    @return: A None-terminated linked list of potential audio output devices. It must be freed with L{libvlc_audio_output_device_list_release}().
+    @return: A None-terminated linked list of potential audio output devices. It must be freed it with L{libvlc_audio_output_device_list_release}().
     @version: LibVLC 2.2.0 or later.
     '''
     f = _Cfunctions.get('libvlc_audio_output_device_enum', None) or \
@@ -6253,7 +5829,7 @@
     explicit audio device.
     @param p_instance: libvlc instance.
     @param psz_aout: audio output name (as returned by L{libvlc_audio_output_list_get}()).
-    @return: A None-terminated linked list of potential audio output devices. It must be freed with L{libvlc_audio_output_device_list_release}().
+    @return: A None-terminated linked list of potential audio output devices. It must be freed it with L{libvlc_audio_output_device_list_release}().
     @version: LibVLC 2.1.0 or later.
     '''
     f = _Cfunctions.get('libvlc_audio_output_device_list_get', None) or \
@@ -6302,27 +5878,6 @@
                     None, MediaPlayer, ctypes.c_char_p, ctypes.c_char_p)
     return f(mp, module, device_id)
 
-def libvlc_audio_output_device_get(mp):
-    '''Get the current audio output device identifier.
-    This complements L{libvlc_audio_output_device_set}().
-    @warning: The initial value for the current audio output device identifier
-    may not be set or may be some unknown value. A LibVLC application should
-    compare this value against the known device identifiers (e.g. those that
-    were previously retrieved by a call to L{libvlc_audio_output_device_enum} or
-    L{libvlc_audio_output_device_list_get}) to find the current audio output device.
-    It is possible that the selected audio output device changes (an external
-    change) without a call to L{libvlc_audio_output_device_set}. That may make this
-    method unsuitable to use if a LibVLC application is attempting to track
-    dynamic audio device changes as they happen.
-    @param mp: media player.
-    @return: the current audio output device identifier None if no device is selected or in case of error (the result must be released with free() or L{libvlc_free}()).
-    @version: LibVLC 3.0.0 or later.
-    '''
-    f = _Cfunctions.get('libvlc_audio_output_device_get', None) or \
-        _Cfunction('libvlc_audio_output_device_get', ((1,),), None,
-                    ctypes.c_char_p, MediaPlayer)
-    return f(mp)
-
 def libvlc_audio_toggle_mute(p_mi):
     '''Toggle mute status.
     @param p_mi: media player @warning Toggling mute atomically is not always possible: On some platforms, other processes can mute the VLC audio playback stream asynchronously. Thus, there is a small race condition where toggling will not work. See also the limitations of L{libvlc_audio_set_mute}().
@@ -6386,7 +5941,7 @@
 def libvlc_audio_get_track_description(p_mi):
     '''Get the description of available audio tracks.
     @param p_mi: media player.
-    @return: list with description of available audio tracks, or None. It must be freed with L{libvlc_track_description_list_release}().
+    @return: list with description of available audio tracks, or None.
     '''
     f = _Cfunctions.get('libvlc_audio_get_track_description', None) or \
         _Cfunction('libvlc_audio_get_track_description', ((1,),), None,
@@ -6939,7 +6494,7 @@
 #  libvlc_printerr
 #  libvlc_set_exit_handler
 
-# 31 function(s) not wrapped as methods:
+# 28 function(s) not wrapped as methods:
 #  libvlc_audio_equalizer_get_amp_at_index
 #  libvlc_audio_equalizer_get_band_count
 #  libvlc_audio_equalizer_get_band_frequency
@@ -6953,7 +6508,6 @@
 #  libvlc_audio_equalizer_set_preamp
 #  libvlc_audio_output_device_list_release
 #  libvlc_audio_output_list_release
-#  libvlc_chapter_descriptions_release
 #  libvlc_clearerr
 #  libvlc_clock
 #  libvlc_errmsg
@@ -6964,11 +6518,9 @@
 #  libvlc_get_version
 #  libvlc_log_get_context
 #  libvlc_log_get_object
-#  libvlc_media_get_codec_description
 #  libvlc_media_tracks_release
 #  libvlc_module_description_list_release
 #  libvlc_new
-#  libvlc_title_descriptions_release
 #  libvlc_track_description_list_release
 #  libvlc_vprinterr
 


Follow ups