← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~tomasgroth/openlp/vlc-win32-load into lp:openlp

 

Tomas Groth has proposed merging lp:~tomasgroth/openlp/vlc-win32-load into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~tomasgroth/openlp/vlc-win32-load/+merge/225221

Updated VLC bindings to latest build.
-- 
https://code.launchpad.net/~tomasgroth/openlp/vlc-win32-load/+merge/225221
Your team OpenLP Core is requested to review the proposed merge of lp:~tomasgroth/openlp/vlc-win32-load into lp:openlp.
=== modified file 'openlp/core/ui/media/vendor/vlc.py'
--- openlp/core/ui/media/vendor/vlc.py	2014-03-22 19:19:08 +0000
+++ openlp/core/ui/media/vendor/vlc.py	2014-07-01 18:36:51 +0000
@@ -48,7 +48,7 @@
 from inspect import getargspec
 
 __version__ = "N/A"
-build_date  = "Tue Jul  2 10:35:53 2013"
+build_date  = "Wed Jun 25 13:46:01 2014"
 
 if sys.version_info[0] > 2:
     str = str
@@ -110,7 +110,11 @@
         p = find_library('libvlc.dll')
         if p is None:
             try:  # some registry settings
-                import _winreg as w  # leaner than win32api, win32con
+                # leaner than win32api, win32con
+                if PYTHON3:
+                    import winreg as w
+                else:
+                    import _winreg as w
                 for r in w.HKEY_LOCAL_MACHINE, w.HKEY_CURRENT_USER:
                     try:
                         r = w.OpenKey(r, 'Software\\VideoLAN\\VLC')
@@ -365,6 +369,7 @@
         3: 'MediaParsedChanged',
         4: 'MediaFreed',
         5: 'MediaStateChanged',
+        6: 'MediaSubItemTreeAdded',
         0x100: 'MediaPlayerMediaChanged',
         257: 'MediaPlayerNothingSpecial',
         258: 'MediaPlayerOpening',
@@ -384,6 +389,7 @@
         272: 'MediaPlayerSnapshotTaken',
         273: 'MediaPlayerLengthChanged',
         274: 'MediaPlayerVout',
+        275: 'MediaPlayerScrambledChanged',
         0x200: 'MediaListItemAdded',
         513: 'MediaListWillAddItem',
         514: 'MediaListItemDeleted',
@@ -439,6 +445,7 @@
 EventType.MediaPlayerPaused             = EventType(261)
 EventType.MediaPlayerPlaying            = EventType(260)
 EventType.MediaPlayerPositionChanged    = EventType(268)
+EventType.MediaPlayerScrambledChanged   = EventType(275)
 EventType.MediaPlayerSeekableChanged    = EventType(269)
 EventType.MediaPlayerSnapshotTaken      = EventType(272)
 EventType.MediaPlayerStopped            = EventType(262)
@@ -447,6 +454,7 @@
 EventType.MediaPlayerVout               = EventType(274)
 EventType.MediaStateChanged             = EventType(5)
 EventType.MediaSubItemAdded             = EventType(1)
+EventType.MediaSubItemTreeAdded         = EventType(6)
 EventType.VlmMediaAdded                 = EventType(0x600)
 EventType.VlmMediaChanged               = EventType(1538)
 EventType.VlmMediaInstanceStarted       = EventType(1539)
@@ -480,23 +488,35 @@
         14: 'EncodedBy',
         15: 'ArtworkURL',
         16: 'TrackID',
+        17: 'TrackTotal',
+        18: 'Director',
+        19: 'Season',
+        20: 'Episode',
+        21: 'ShowName',
+        22: 'Actors',
     }
+Meta.Actors      = Meta(22)
 Meta.Album       = Meta(4)
 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.EncodedBy   = Meta(14)
+Meta.Episode     = Meta(20)
 Meta.Genre       = Meta(2)
 Meta.Language    = Meta(11)
 Meta.NowPlaying  = Meta(12)
 Meta.Publisher   = Meta(13)
 Meta.Rating      = Meta(7)
+Meta.Season      = Meta(19)
 Meta.Setting     = Meta(9)
+Meta.ShowName    = Meta(21)
 Meta.Title       = Meta(0)
 Meta.TrackID     = Meta(16)
 Meta.TrackNumber = Meta(5)
+Meta.TrackTotal  = Meta(17)
 Meta.URL         = Meta(10)
 
 class State(_Enum):
@@ -594,6 +614,32 @@
 NavigateMode.right    = NavigateMode(4)
 NavigateMode.up       = NavigateMode(1)
 
+class Position(_Enum):
+    '''Enumeration of values used to set position (e.g. of video title).
+    '''
+    _enum_names_ = {
+        -1: 'disable',
+        0: 'center',
+        1: 'left',
+        2: 'right',
+        3: 'top',
+        4: 'left',
+        5: 'right',
+        6: 'bottom',
+        7: 'left',
+        8: 'right',
+    }
+Position.bottom  = Position(6)
+Position.center  = Position(0)
+Position.disable = Position(-1)
+Position.left    = Position(1)
+Position.left    = Position(4)
+Position.left    = Position(7)
+Position.right   = Position(2)
+Position.right   = Position(5)
+Position.right   = Position(8)
+Position.top     = Position(3)
+
 class VideoLogoOption(_Enum):
     '''Option values for libvlc_video_{get,set}_logo_{int,string}.
     '''
@@ -685,7 +731,7 @@
     """Callback prototype for LibVLC log message handler.
 \param data data pointer as given to L{libvlc_log_set}()
 \param level message level (@ref enum libvlc_log_level)
-\param ctx message context (meta-informations about the message)
+\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.
@@ -823,18 +869,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 enum libvlc_log_level)
-\param ctx message context (meta-informations about the message)
+\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.
-    '''
+    ''' 
     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
@@ -846,7 +892,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.
@@ -859,7 +905,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
@@ -867,7 +913,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
@@ -891,47 +937,47 @@
 Furthermore, we recommend that pitches and lines be multiple of 32
 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.
@@ -941,12 +987,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 #
 
@@ -1210,7 +1256,7 @@
 
     @note: Only a single notification can be registered
     for each event type in an EventManager instance.
-
+    
     '''
 
     _callback_handler = None
@@ -1287,7 +1333,7 @@
       - a string
       - a list of strings as first parameters
       - the parameters given as the constructor parameters (must be strings)
-
+    
     '''
 
     def __new__(cls, *args):
@@ -1432,6 +1478,16 @@
         '''
         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}().
+        @param id: Java-style application identifier, e.g. "com.acme.foobar".
+        @param version: application version numbers, e.g. "1.2.3".
+        @param icon: application icon name, e.g. "foobar".
+        @version: LibVLC 2.1.0 or later.
+        '''
+        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.
@@ -1521,13 +1577,13 @@
         return libvlc_media_library_new(self)
 
     def audio_output_list_get(self):
-        '''Gets the list of available audio outputs.
+        '''Gets the list of available audio output modules.
         @return: list of available audio outputs. It must be freed it with In case of error, NULL 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.
+        '''Gets a list of audio output devices for a given audio output module,
         See L{audio_output_device_set}().
         @note: Not all audio outputs support this. In particular, an empty (NULL)
         list of devices does B{not} imply that the specified audio output does
@@ -1753,11 +1809,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):
@@ -1790,6 +1846,19 @@
         for o in options:
             self.add_option(o)
 
+    def tracks_get(self):
+        """Get media descriptor's elementary streams description
+        Note, you need to call L{parse}() or play the media at least once
+        before calling this function.
+        Not doing this will result in an empty array.
+        The result must be freed with L{tracks_release}.
+        @version: LibVLC 2.1.0 and later.
+        """
+        mediaTrack_pp = ctypes.POINTER(MediaTrack)()
+        n = libvlc_media_tracks_get(self, byref(mediaTrack_pp))
+        info = cast(ctypes.mediaTrack_pp, ctypes.POINTER(ctypes.POINTER(MediaTrack) * n))
+        return info
+
 
     def add_option(self, psz_options):
         '''Add an option to the media.
@@ -1962,17 +2031,6 @@
         '''
         return libvlc_media_get_user_data(self)
 
-    def tracks_get(self, tracks):
-        '''Get media descriptor's elementary streams description
-        Note, you need to call L{parse}() or play the media at least once
-        before calling this function.
-        Not doing this will result in an empty array.
-        @param tracks: address to store an allocated array of Elementary Streams descriptions (must be freed with L{tracks_release}.
-        @return: the number of Elementary Streams (zero on error).
-        @version: LibVLC 2.1.0 and later.
-        '''
-        return libvlc_media_tracks_get(self, tracks)
-
     def player_new_from_media(self):
         '''Create a Media Player object from a Media.
         @return: a new media player object, or NULL on error.
@@ -2053,11 +2111,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):
@@ -2073,10 +2131,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.
@@ -2193,7 +2251,7 @@
     It may take as parameter either:
       - a vlc.Instance
       - nothing
-
+    
     '''
 
     def __new__(cls, arg=None):
@@ -2319,13 +2377,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:]
@@ -2397,13 +2455,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.
 
@@ -2556,12 +2614,12 @@
         If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
         the following code should work:
         @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.
@@ -2796,6 +2854,13 @@
         '''
         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.
+        @version: LibVLC 2.2.0 or later.
+        '''
+        return libvlc_media_player_program_scrambled(self)
+
     def next_frame(self):
         '''Display the next frame (if supported).
         '''
@@ -2808,6 +2873,14 @@
         '''
         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.
+        @param timeout: title display timeout in milliseconds (ignored if libvlc_position_disable).
+        @version: libVLC 2.1.0 or later.
+        '''
+        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
@@ -3083,7 +3156,7 @@
         return libvlc_video_set_adjust_float(self, option, value)
 
     def audio_output_set(self, psz_name):
-        '''Sets the audio output.
+        '''Selects an audio output module.
         @note: Any change will take be effect only after playback is stopped and
         restarted. Audio output cannot be changed while playing.
         @param psz_name: name of audio output, use psz_name of See L{AudioOutput}.
@@ -3091,21 +3164,46 @@
         '''
         return libvlc_audio_output_set(self, str_to_bytes(psz_name))
 
-    def audio_output_device_set(self, psz_audio_output, psz_device_id):
-        '''Configures an explicit audio output device for a given audio output plugin.
-        A list of possible devices can be obtained with
+    def audio_output_device_enum(self):
+        '''Gets a list of potential audio output devices,
+        See L{audio_output_device_set}().
+        @note: Not all audio outputs support enumerating devices.
+        The audio output may be functional even if the list is empty (NULL).
+        @note: The list may not be exhaustive.
+        @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 NULL-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 NULL, audio output will be moved to the device
+        specified by the device identifier string immediately. This is the
+        recommended usage.
+        A list of adequate potential device strings can be obtained with
+        L{audio_output_device_enum}().
+        However passing NULL is supported in LibVLC version 2.2.0 and later only;
+        in earlier versions, this function would have no effects when the module
+        parameter was NULL.
+        If the module parameter is not NULL, the device parameter of the
+        corresponding audio output, if it exists, will be set to the specified
+        string. Note that some audio output modules do not have such a parameter
+        (notably MMDevice and PulseAudio).
+        A list of adequate potential device strings can be obtained with
         L{audio_output_device_list_get}().
         @note: This function does not select the specified audio output plugin.
         L{audio_output_set}() is used for that purpose.
         @warning: The syntax for the device parameter depends on the audio output.
-        This is not portable. Only use this function if you know what you are doing.
-        Some audio outputs do not support this function (e.g. PulseAudio, WASAPI).
-        Some audio outputs require further parameters (e.g. ALSA: channels map).
-        @param psz_audio_output: - name of audio output, See L{AudioOutput}.
-        @param psz_device_id: device.
-        @return: Nothing. Errors are ignored.
+        Some audio output modules require further parameters (e.g. a channels map
+        in the case of ALSA).
+        @param module: If NULL, current audio output module. if non-NULL, name of audio output module.
+        @param device_id: device identifier string.
+        @return: Nothing. Errors are ignored (this is a design bug).
         '''
-        return libvlc_audio_output_device_set(self, str_to_bytes(psz_audio_output), str_to_bytes(psz_device_id))
+        return libvlc_audio_output_device_set(self, str_to_bytes(module), str_to_bytes(device_id))
 
     def audio_toggle_mute(self):
         '''Toggle mute status.
@@ -3184,6 +3282,28 @@
         '''
         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
+        L{audio_equalizer_new_from_preset}().
+        It is possible to apply new equalizer settings to a media player whether the media
+        player is currently playing media or not.
+        Invoking this method will immediately apply the new equalizer settings to the audio
+        output of the currently playing media if there is any.
+        If there is no currently playing media, the new equalizer settings will be applied
+        later if and when new media is played.
+        Equalizer settings will automatically be applied to subsequently played media.
+        To disable the equalizer for a media player invoke this method passing NULL for the
+        p_equalizer parameter.
+        The media player does not keep a reference to the supplied equalizer so it is safe
+        for an application to release the equalizer reference any time after this method
+        returns.
+        @param p_equalizer: opaque equalizer handle, or NULL to disable the equalizer for this media player.
+        @return: zero on success, -1 on error.
+        @version: LibVLC 2.2.0 or later.
+        '''
+        return libvlc_media_player_set_equalizer(self, p_equalizer)
+
 
  # LibVLC __version__ functions #
 
@@ -3279,6 +3399,20 @@
                     None, Instance, ctypes.c_char_p, ctypes.c_char_p)
     return f(p_instance, name, http)
 
+def libvlc_set_app_id(p_instance, id, version, icon):
+    '''Sets some meta-information about the application.
+    See also L{libvlc_set_user_agent}().
+    @param p_instance: LibVLC instance.
+    @param id: Java-style application identifier, e.g. "com.acme.foobar".
+    @param version: application version numbers, e.g. "1.2.3".
+    @param icon: application icon name, e.g. "foobar".
+    @version: LibVLC 2.1.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_set_app_id', None) or \
+        _Cfunction('libvlc_set_app_id', ((1,), (1,), (1,), (1,),), None,
+                    None, Instance, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p)
+    return f(p_instance, id, version, icon)
+
 def libvlc_get_version():
     '''Retrieve libvlc version.
     Example: "1.1.0-git The Luggage".
@@ -3355,7 +3489,7 @@
     return f(event_type)
 
 def libvlc_log_get_context(ctx):
-    '''Gets debugging informations about a log message: the name of the VLC module
+    '''Gets debugging information about a log message: the name of the VLC module
     emitting the message and the message location within the source code.
     The returned module name and file name will be NULL if unknown.
     The returned line number will similarly be zero if unknown.
@@ -3369,9 +3503,9 @@
     return f(ctx)
 
 def libvlc_log_get_object(ctx, id):
-    '''Gets VLC object informations about a log message: the type name of the VLC
+    '''Gets VLC object information about a log message: the type name of the VLC
     object emitting the message, the object header if any and a temporaly-unique
-    object identifier. These informations are mainly meant for B{manual}
+    object identifier. This information is mainly meant for B{manual}
     troubleshooting.
     The returned type name may be "generic" if unknown, but it cannot be NULL.
     The returned header will be NULL if unset; in current versions, the header
@@ -4430,12 +4564,12 @@
     If you want to use it along with Qt4 see the QMacCocoaViewContainer. Then
     the following code should work:
     @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.
@@ -4814,6 +4948,17 @@
                     ctypes.c_int, MediaPlayer)
     return f(p_mi)
 
+def libvlc_media_player_program_scrambled(p_mi):
+    '''Check if the current program is scrambled.
+    @param p_mi: the media player.
+    @return: true if the current program is scrambled \libvlc_return_bool.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_media_player_program_scrambled', None) or \
+        _Cfunction('libvlc_media_player_program_scrambled', ((1,),), None,
+                    ctypes.c_int, MediaPlayer)
+    return f(p_mi)
+
 def libvlc_media_player_next_frame(p_mi):
     '''Display the next frame (if supported).
     @param p_mi: the media player.
@@ -4834,6 +4979,18 @@
                     None, MediaPlayer, ctypes.c_uint)
     return f(p_mi, navigate)
 
+def libvlc_media_player_set_video_title_display(p_mi, position, timeout):
+    '''Set if, and how, the video title will be shown when media is played.
+    @param p_mi: the media player.
+    @param position: position at which to display the title, or libvlc_position_disable to prevent the title from being displayed.
+    @param timeout: title display timeout in milliseconds (ignored if libvlc_position_disable).
+    @version: libVLC 2.1.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_media_player_set_video_title_display', None) or \
+        _Cfunction('libvlc_media_player_set_video_title_display', ((1,), (1,), (1,),), None,
+                    None, MediaPlayer, Position, ctypes.c_int)
+    return f(p_mi, position, timeout)
+
 def libvlc_track_description_list_release(p_track_description):
     '''Release (free) L{TrackDescription}.
     @param p_track_description: the structure to release.
@@ -5335,7 +5492,7 @@
     return f(p_mi, option, value)
 
 def libvlc_audio_output_list_get(p_instance):
-    '''Gets the list of available audio outputs.
+    '''Gets the list of available audio output modules.
     @param p_instance: libvlc instance.
     @return: list of available audio outputs. It must be freed it with In case of error, NULL is returned.
     '''
@@ -5345,7 +5502,7 @@
     return f(p_instance)
 
 def libvlc_audio_output_list_release(p_list):
-    '''Frees the list of available audio outputs.
+    '''Frees the list of available audio output modules.
     @param p_list: list with audio outputs for release.
     '''
     f = _Cfunctions.get('libvlc_audio_output_list_release', None) or \
@@ -5354,7 +5511,7 @@
     return f(p_list)
 
 def libvlc_audio_output_set(p_mi, psz_name):
-    '''Sets the audio output.
+    '''Selects an audio output module.
     @note: Any change will take be effect only after playback is stopped and
     restarted. Audio output cannot be changed while playing.
     @param p_mi: media player.
@@ -5366,8 +5523,26 @@
                     ctypes.c_int, MediaPlayer, ctypes.c_char_p)
     return f(p_mi, psz_name)
 
+def libvlc_audio_output_device_enum(mp):
+    '''Gets a list of potential audio output devices,
+    See L{libvlc_audio_output_device_set}().
+    @note: Not all audio outputs support enumerating devices.
+    The audio output may be functional even if the list is empty (NULL).
+    @note: The list may not be exhaustive.
+    @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.
+    @param mp: media player.
+    @return: A NULL-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 \
+        _Cfunction('libvlc_audio_output_device_enum', ((1,),), None,
+                    ctypes.POINTER(AudioOutputDevice), MediaPlayer)
+    return f(mp)
+
 def libvlc_audio_output_device_list_get(p_instance, aout):
-    '''Gets a list of audio output devices for a given audio output.
+    '''Gets a list of audio output devices for a given audio output module,
     See L{libvlc_audio_output_device_set}().
     @note: Not all audio outputs support this. In particular, an empty (NULL)
     list of devices does B{not} imply that the specified audio output does
@@ -5396,25 +5571,36 @@
                     None, ctypes.POINTER(AudioOutputDevice))
     return f(p_list)
 
-def libvlc_audio_output_device_set(p_mi, psz_audio_output, psz_device_id):
-    '''Configures an explicit audio output device for a given audio output plugin.
-    A list of possible devices can be obtained with
+def libvlc_audio_output_device_set(mp, module, device_id):
+    '''Configures an explicit audio output device.
+    If the module paramater is NULL, audio output will be moved to the device
+    specified by the device identifier string immediately. This is the
+    recommended usage.
+    A list of adequate potential device strings can be obtained with
+    L{libvlc_audio_output_device_enum}().
+    However passing NULL is supported in LibVLC version 2.2.0 and later only;
+    in earlier versions, this function would have no effects when the module
+    parameter was NULL.
+    If the module parameter is not NULL, the device parameter of the
+    corresponding audio output, if it exists, will be set to the specified
+    string. Note that some audio output modules do not have such a parameter
+    (notably MMDevice and PulseAudio).
+    A list of adequate potential device strings can be obtained with
     L{libvlc_audio_output_device_list_get}().
     @note: This function does not select the specified audio output plugin.
     L{libvlc_audio_output_set}() is used for that purpose.
     @warning: The syntax for the device parameter depends on the audio output.
-    This is not portable. Only use this function if you know what you are doing.
-    Some audio outputs do not support this function (e.g. PulseAudio, WASAPI).
-    Some audio outputs require further parameters (e.g. ALSA: channels map).
-    @param p_mi: media player.
-    @param psz_audio_output: - name of audio output, See L{AudioOutput}.
-    @param psz_device_id: device.
-    @return: Nothing. Errors are ignored.
+    Some audio output modules require further parameters (e.g. a channels map
+    in the case of ALSA).
+    @param mp: media player.
+    @param module: If NULL, current audio output module. if non-NULL, name of audio output module.
+    @param device_id: device identifier string.
+    @return: Nothing. Errors are ignored (this is a design bug).
     '''
     f = _Cfunctions.get('libvlc_audio_output_device_set', None) or \
         _Cfunction('libvlc_audio_output_device_set', ((1,), (1,), (1,),), None,
                     None, MediaPlayer, ctypes.c_char_p, ctypes.c_char_p)
-    return f(p_mi, psz_audio_output, psz_device_id)
+    return f(mp, module, device_id)
 
 def libvlc_audio_toggle_mute(p_mi):
     '''Toggle mute status.
@@ -5551,6 +5737,175 @@
                     ctypes.c_int, MediaPlayer, ctypes.c_int64)
     return f(p_mi, i_delay)
 
+def libvlc_audio_equalizer_get_preset_count():
+    '''Get the number of equalizer presets.
+    @return: number of presets.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_preset_count', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_preset_count', (), None,
+                    ctypes.c_uint)
+    return f()
+
+def libvlc_audio_equalizer_get_preset_name(u_index):
+    '''Get the name of a particular equalizer preset.
+    This name can be used, for example, to prepare a preset label or menu in a user
+    interface.
+    @param u_index: index of the preset, counting from zero.
+    @return: preset name, or NULL if there is no such preset.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_preset_name', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_preset_name', ((1,),), None,
+                    ctypes.c_char_p, ctypes.c_uint)
+    return f(u_index)
+
+def libvlc_audio_equalizer_get_band_count():
+    '''Get the number of distinct frequency bands for an equalizer.
+    @return: number of frequency bands.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_band_count', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_band_count', (), None,
+                    ctypes.c_uint)
+    return f()
+
+def libvlc_audio_equalizer_get_band_frequency(u_index):
+    '''Get a particular equalizer band frequency.
+    This value can be used, for example, to create a label for an equalizer band control
+    in a user interface.
+    @param u_index: index of the band, counting from zero.
+    @return: equalizer band frequency (Hz), or -1 if there is no such band.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_band_frequency', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_band_frequency', ((1,),), None,
+                    ctypes.c_float, ctypes.c_uint)
+    return f(u_index)
+
+def libvlc_audio_equalizer_new():
+    '''Create a new default equalizer, with all frequency values zeroed.
+    The new equalizer can subsequently be applied to a media player by invoking
+    L{libvlc_media_player_set_equalizer}().
+    The returned handle should be freed via L{libvlc_audio_equalizer_release}() when
+    it is no longer needed.
+    @return: opaque equalizer handle, or NULL on error.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_new', None) or \
+        _Cfunction('libvlc_audio_equalizer_new', (), None,
+                    ctypes.c_void_p)
+    return f()
+
+def libvlc_audio_equalizer_new_from_preset(u_index):
+    '''Create a new equalizer, with initial frequency values copied from an existing
+    preset.
+    The new equalizer can subsequently be applied to a media player by invoking
+    L{libvlc_media_player_set_equalizer}().
+    The returned handle should be freed via L{libvlc_audio_equalizer_release}() when
+    it is no longer needed.
+    @param u_index: index of the preset, counting from zero.
+    @return: opaque equalizer handle, or NULL on error.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_new_from_preset', None) or \
+        _Cfunction('libvlc_audio_equalizer_new_from_preset', ((1,),), None,
+                    ctypes.c_void_p, ctypes.c_uint)
+    return f(u_index)
+
+def libvlc_audio_equalizer_release(p_equalizer):
+    '''Release a previously created equalizer instance.
+    The equalizer was previously created by using L{libvlc_audio_equalizer_new}() or
+    L{libvlc_audio_equalizer_new_from_preset}().
+    It is safe to invoke this method with a NULL p_equalizer parameter for no effect.
+    @param p_equalizer: opaque equalizer handle, or NULL.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_release', None) or \
+        _Cfunction('libvlc_audio_equalizer_release', ((1,),), None,
+                    None, ctypes.c_void_p)
+    return f(p_equalizer)
+
+def libvlc_audio_equalizer_set_preamp(p_equalizer, f_preamp):
+    '''Set a new pre-amplification value for an equalizer.
+    The new equalizer settings are subsequently applied to a media player by invoking
+    L{libvlc_media_player_set_equalizer}().
+    The supplied amplification value will be clamped to the -20.0 to +20.0 range.
+    @param p_equalizer: valid equalizer handle, must not be NULL.
+    @param f_preamp: preamp value (-20.0 to 20.0 Hz).
+    @return: zero on success, -1 on error.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_set_preamp', None) or \
+        _Cfunction('libvlc_audio_equalizer_set_preamp', ((1,), (1,),), None,
+                    ctypes.c_int, ctypes.c_void_p, ctypes.c_float)
+    return f(p_equalizer, f_preamp)
+
+def libvlc_audio_equalizer_get_preamp(p_equalizer):
+    '''Get the current pre-amplification value from an equalizer.
+    @param p_equalizer: valid equalizer handle, must not be NULL.
+    @return: preamp value (Hz).
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_preamp', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_preamp', ((1,),), None,
+                    ctypes.c_float, ctypes.c_void_p)
+    return f(p_equalizer)
+
+def libvlc_audio_equalizer_set_amp_at_index(p_equalizer, f_amp, u_band):
+    '''Set a new amplification value for a particular equalizer frequency band.
+    The new equalizer settings are subsequently applied to a media player by invoking
+    L{libvlc_media_player_set_equalizer}().
+    The supplied amplification value will be clamped to the -20.0 to +20.0 range.
+    @param p_equalizer: valid equalizer handle, must not be NULL.
+    @param f_amp: amplification value (-20.0 to 20.0 Hz).
+    @param u_band: index, counting from zero, of the frequency band to set.
+    @return: zero on success, -1 on error.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_set_amp_at_index', None) or \
+        _Cfunction('libvlc_audio_equalizer_set_amp_at_index', ((1,), (1,), (1,),), None,
+                    ctypes.c_int, ctypes.c_void_p, ctypes.c_float, ctypes.c_uint)
+    return f(p_equalizer, f_amp, u_band)
+
+def libvlc_audio_equalizer_get_amp_at_index(p_equalizer, u_band):
+    '''Get the amplification value for a particular equalizer frequency band.
+    @param p_equalizer: valid equalizer handle, must not be NULL.
+    @param u_band: index, counting from zero, of the frequency band to get.
+    @return: amplification value (Hz); NaN if there is no such frequency band.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_audio_equalizer_get_amp_at_index', None) or \
+        _Cfunction('libvlc_audio_equalizer_get_amp_at_index', ((1,), (1,),), None,
+                    ctypes.c_float, ctypes.c_void_p, ctypes.c_uint)
+    return f(p_equalizer, u_band)
+
+def libvlc_media_player_set_equalizer(p_mi, p_equalizer):
+    '''Apply new equalizer settings to a media player.
+    The equalizer is first created by invoking L{libvlc_audio_equalizer_new}() or
+    L{libvlc_audio_equalizer_new_from_preset}().
+    It is possible to apply new equalizer settings to a media player whether the media
+    player is currently playing media or not.
+    Invoking this method will immediately apply the new equalizer settings to the audio
+    output of the currently playing media if there is any.
+    If there is no currently playing media, the new equalizer settings will be applied
+    later if and when new media is played.
+    Equalizer settings will automatically be applied to subsequently played media.
+    To disable the equalizer for a media player invoke this method passing NULL for the
+    p_equalizer parameter.
+    The media player does not keep a reference to the supplied equalizer so it is safe
+    for an application to release the equalizer reference any time after this method
+    returns.
+    @param p_mi: opaque media player handle.
+    @param p_equalizer: opaque equalizer handle, or NULL to disable the equalizer for this media player.
+    @return: zero on success, -1 on error.
+    @version: LibVLC 2.2.0 or later.
+    '''
+    f = _Cfunctions.get('libvlc_media_player_set_equalizer', None) or \
+        _Cfunction('libvlc_media_player_set_equalizer', ((1,), (1,),), None,
+                    ctypes.c_int, MediaPlayer, ctypes.c_void_p)
+    return f(p_mi, p_equalizer)
+
 def libvlc_vlm_release(p_instance):
     '''Release the vlm instance related to the given L{Instance}.
     @param p_instance: the instance.
@@ -5863,7 +6218,18 @@
 #  libvlc_printerr
 #  libvlc_set_exit_handler
 
-# 17 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
+#  libvlc_audio_equalizer_get_preamp
+#  libvlc_audio_equalizer_get_preset_count
+#  libvlc_audio_equalizer_get_preset_name
+#  libvlc_audio_equalizer_new
+#  libvlc_audio_equalizer_new_from_preset
+#  libvlc_audio_equalizer_release
+#  libvlc_audio_equalizer_set_amp_at_index
+#  libvlc_audio_equalizer_set_preamp
 #  libvlc_audio_output_device_list_release
 #  libvlc_audio_output_list_release
 #  libvlc_clearerr


Follow ups