Wow Inner, nice work. I adjusted your code a bit so that
polib.
audio/video output. But i NEED to set the current directory
i get the same error as in Linux, quit unexpectedly.
Code: Select all
;/*****************************************************************************
; * libvlc.h:  libvlc external API
; *****************************************************************************
; * Copyright (C) 1998-2005 the VideoLAN team
; * $Id$
; *
; * Authors: Clément Stenac <zorglub@videolan.org>
; *          Jean-Paul Saman <jpsaman@videolan.org>
; *          Pierre d'Herbemont <pdherbemont@videolan.org>
; *
; * This program is free software; you can redistribute it and/or modify
; * it under the terms of the GNU General Public License as published by
; * the Free Software Foundation; either version 2 of the License, or
; * (at your option) any later version.
; *
; * This program is distributed in the hope that it will be useful,
; * but WITHOUT ANY WARRANTY; without even the implied warranty of
; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; * GNU General Public License for more details.
; *
; * You should have received a copy of the GNU General Public License
; * along with this program; if not, write to the Free Software
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
; *****************************************************************************/
IncludeFile "libvlc_events.pb"
IncludeFile "libvlc_media_list.pb"
IncludeFile "libvlc_structures.pb"
IncludeFile "libvlc_vlm.pb"
IncludeFile "mediacontrol.pb"
IncludeFile "mediacontrol_structures.pb"
;/*****************************************************************************
; * Exception handling
; *****************************************************************************/
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
   SetCurrentDirectory("C:\Program Files\VideoLAN\VLC")
   ;"C:\Program Files\Purebasic\Compilers\polib /out:libvlc.lib libvlc.dll"
   ImportC  "C:\Program Files\VideoLAN\VLC\libvlc.lib"
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
   ;SetCurrentDirectory("/usr/lib/")
   ImportC  "/usr/lib/libvlc.so"
CompilerEndIf
;/**
; * Initialize an exception structure. This can be called several times to
; * reuse an exception structure.
; *
; * \param p_exception the exception to initialize
; */
;  VLC_PUBLIC_API void libvlc_exception_init( libvlc_exception_t *p_exception );
  libvlc_exception_init( *exception.l ) ;As "libvlc_exception_init"
;/**
; * Has an exception been raised?
; *
; * \param p_exception the exception to query
; * \return 0 if the exception was raised, 1 otherwise
; */
;  VLC_PUBLIC_API int libvlc_exception_raised( const libvlc_exception_t *p_exception );
  libvlc_exception_raised( *exception.l ) As "libvlc_exception_raised"
;/**
; * Raise an exception using a user-provided message.
; *
; * \param p_exception the exception to raise
; * \param psz_format the exception message format string
; * \param ... the format string arguments
; */
;  VLC_PUBLIC_API void libvlc_exception_raise( libvlc_exception_t *p_exception,const char *psz_format, ... );
  libvlc_exception_raise( *exception.l,psz_format.s ) As "libvlc_exception_raise" ;== WARNING THIS MAY BREAK ==
;/**
; * Clear an exception object so it can be reused.
; * The exception object must have be initialized.
; *
; * \param p_exception the exception to clear
; */
;  VLC_PUBLIC_API void libvlc_exception_clear( libvlc_exception_t * );
  libvlc_exception_clear( *exception.l ) As "libvlc_exception_clear"
;/**
; * Get an exception's message.
; *
; * \param p_exception the exception to query
; * \return the exception message or NULL if not applicable (exception not
; *         raised, for example)
; */
;  VLC_PUBLIC_API const char *libvlc_exception_get_message( const libvlc_exception_t *p_exception );
  libvlc_exception_get_message( *exception.l ) As "libvlc_exception_get_message"
;/*****************************************************************************
; * Core handling
; *****************************************************************************/
;/**
; * Create and initialize a libvlc instance.
; *
; * \param argc the number of arguments
; * \param argv command-line-type arguments. argv[0] must be the path of the
; *        calling program.
; * \param p_e an initialized exception pointer
; * \return the libvlc instance
; */
;  VLC_PUBLIC_API libvlc_instance_t *libvlc_new( int , const char *const *, libvlc_exception_t *);
  libvlc_new(argc.l,*argv.c,*exception.l) ;As "libvlc_new"
;/**
; * Return a libvlc instance identifier for legacy APIs. Use of this
; * function is discouraged, you should convert your program to use the
; * new API.
; *
; * \param p_instance the instance
; * \return the instance identifier
; */
;  VLC_PUBLIC_API int libvlc_get_vlc_id( libvlc_instance_t *p_instance );
  libvlc_get_vlc_id( *instance.l ) As "libvlc_get_vlc_id"
;/**
; * Decrement the reference count of a libvlc instance, and destroy it
; * if it reaches zero.
; *
; * \param p_instance the instance to destroy
; */
;  VLC_PUBLIC_API void libvlc_release( libvlc_instance_t * );
  libvlc_release( *instance.l );
;/**
; * Increments the reference count of a libvlc instance.
; * The initial reference count is 1 after libvlc_new() returns.
; *
; * \param p_instance the instance to reference
; */
;  VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t * );
  libvlc_retain( *instance.l );
;/**
; * Try to start a user interface for the libvlc instance, and wait until the
; * user exits.
; *
; * \param p_instance the instance
; * \param name interface name, or NULL for default
; * \param p_exception an initialized exception pointer
; */
;  VLC_PUBLIC_API void libvlc_add_intf( libvlc_instance_t *p_instance, const char *name,libvlc_exception_t *p_exception );
  libvlc_add_intf( *instance.l, name.s,*exception.l ) As "libvlc_add_intf"
;/**
; * Waits until an interface causes the instance to exit.
; * You should start at least one interface first, using libvlc_add_intf().
; *
; * \param p_instance the instance
; */
;  VLC_PUBLIC_API void libvlc_wait( libvlc_instance_t *p_instance );
  libvlc_wait( *instance.l ) As "libvlc_wait"
;/**
; * Retrieve libvlc version.
; *
; * Example: "0.9.0-git Grishenko"
; *
; * \return a string containing the libvlc version
; */
;  VLC_PUBLIC_API const char * libvlc_get_version(void);
  libvlc_get_version() ;As "libvlc_get_version"
;/**
; * Retrieve libvlc compiler version.
; *
; * Example: "gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)"
; *
; * \return a string containing the libvlc compiler version
; */
;  VLC_PUBLIC_API const char * libvlc_get_compiler(void);
  libvlc_get_compiler() ;As "libvlc_get_compiler"
;/**
; * Retrieve libvlc changeset.
; *
; * Example: "aa9bce0bc4"
; *
; * \return a string containing the libvlc changeset
; */
;  VLC_PUBLIC_API const char * libvlc_get_changeset(void);
  libvlc_get_changeset() As "libvlc_get_changeset"
;/*****************************************************************************
; * media
; *****************************************************************************/
;/**
; * Create a media with the given MRL.
; *
; * \param p_instance the instance
; * \param psz_mrl the MRL to read
; * \param p_e an initialized exception pointer
; * \return the newly created media
; */
;  VLC_PUBLIC_API libvlc_media_t * libvlc_media_new(libvlc_instance_t *p_instance,const char * psz_mrl,libvlc_exception_t *p_e );
  libvlc_media_new(*instance.l,psz_mrl.s,*exception.l) ;As "libvlc_media_new" 
;/**
; * Create a media as an empty node with the passed name.
; *
; * \param p_instance the instance
; * \param psz_name the name of the node
; * \param p_e an initialized exception pointer
; * \return the new empty media
; */
;  VLC_PUBLIC_API libvlc_media_t * libvlc_media_new_as_node(libvlc_instance_t *p_instance,const char * psz_name,libvlc_exception_t *p_e );
  libvlc_media_new_as_node(*instance.l,name.s,*exception.l) As "libvlc_media_new_as_node"
;/**
; * Add an option to the media.
; *
; * This option will be used to determine how the media_player will
; * read the media. This allows to use VLC's advanced
; * reading/streaming options on a per-media basis.
; *
; * The options are detailed in vlc --long-help, for instance "--sout-all"
; *
; * \param p_instance the instance
; * \param ppsz_options the options (as a string)
; * \param p_e an initialized exception pointer
; */
;  VLC_PUBLIC_API void libvlc_media_add_option(libvlc_media_t * p_md,const char * ppsz_options,libvlc_exception_t * p_e );
  libvlc_media_add_option(*instance.l,options.s,*exception.l) As "libvlc_media_add_option"
;/**
; * Retain a reference to a media descriptor object (libvlc_media_t). Use
; * libvlc_media_release() to decrement the reference count of a 
; * media descriptor object.
; *
; * \param p_meta_desc a media descriptor object.
; */
;  VLC_PUBLIC_API void libvlc_media_retain(libvlc_media_t *p_meta_desc );
  libvlc_media_retain(*meta_desc.l) As "libvlc_media_retain"
;/**
; * Decrement the reference count of a media descriptor object. If the
; * reference count is 0, then libvlc_media_release() will release the
; * media descriptor object. It will send out an libvlc_MediaFreed event
; * to all listeners. If the media descriptor object has been released it
; * should not be used again.
; *
; * \param p_meta_desc a media descriptor object.
; */
;  VLC_PUBLIC_API void libvlc_media_release(libvlc_media_t *p_meta_desc );
  libvlc_media_release(*meta_desc.l) ;As "libvlc_media_release"
;/**
; * Get the media resource locator (mrl) from a media descriptor object
; *
; * \param p_md a media descriptor object
; * \param p_e an initialized exception object
; * \return string with mrl of media descriptor object
; */
;  VLC_PUBLIC_API char * libvlc_media_get_mrl( libvlc_media_t * p_md,libvlc_exception_t * p_e );
  libvlc_media_get_mrl( *media.l,*exception.l ) As "libvlc_media_get_mrl"
;/**
; * Duplicate a media descriptor object.
; *
; * \param p_meta_desc a media descriptor object.
; */
;  VLC_PUBLIC_API libvlc_media_t * libvlc_media_duplicate( libvlc_media_t * );
  libvlc_media_duplicate( *meta_desc.l ) As "libvlc_media_duplicate"
;/**
; * Read the meta of the media.
; *
; * \param p_meta_desc the media to read
; * \param e_meta_desc the meta to read
; * \param p_e an initialized exception pointer
; * \return the media's meta
; */
;  VLC_PUBLIC_API char * libvlc_media_get_meta(libvlc_media_t *p_meta_desc,libvlc_meta_t e_meta,libvlc_exception_t *p_e );
  libvlc_media_get_meta(*meta_desc.l,meta_desc.l,*exception.l ) As "libvlc_media_get_meta"
;/**
; * Get current state of media descriptor object. Possible media states
; * are defined in libvlc_structures.c ( libvlc_NothingSpecial=0,
; * libvlc_Opening, libvlc_Buffering, libvlc_Playing, libvlc_Paused,
; * libvlc_Stopped, libvlc_Forward, libvlc_Backward, libvlc_Ended,
; * libvlc_Error).
; *
; * @see libvlc_state_t
; * \param p_meta_desc a media descriptor object
; * \param p_e an initialized exception object
; * \return state of media descriptor object
; */
;  VLC_PUBLIC_API libvlc_state_t libvlc_media_get_state(libvlc_media_t *p_meta_desc,libvlc_exception_t *p_e );
  libvlc_media_get_state(*meta_desc.l,*exception.l ) As "libvlc_media_get_state"
;/**
; * Get subitems of media descriptor object. This will increment
; * the reference count of supplied media descriptor object. Use
; * libvlc_media_list_release() to decrement the reference counting.
; *
; * \param p_md media descriptor object
; * \param p_e initalized exception object
; * \return list of media descriptor subitems or NULL
; */
;  VLC_PUBLIC_API libvlc_media_list_t *libvlc_media_subitems( libvlc_media_t *p_md,libvlc_exception_t *p_e );
  libvlc_media_subitems( *media.l,*exception.l ) As "libvlc_media_subitems"
;/**
; * Get event manager from media descriptor object.
; * NOTE: this function doesn't increment reference counting.
; *
; * \param p_md a media descriptor object
; * \param p_e an initialized exception object
; * \return event manager object
; */
;  VLC_PUBLIC_API libvlc_event_manager_t *libvlc_media_event_manager( libvlc_media_t * p_md,libvlc_exception_t * p_e );
  libvlc_media_event_manager( *media.l,*exception.l ) As "libvlc_media_event_manager"
;/**
; * Get duration of media descriptor object item.
; *
; * \param p_md media descriptor object
; * \param p_e an initialized exception object
; * \return duration of media item
; */
;  VLC_PUBLIC_API libvlc_time_t libvlc_media_get_duration( libvlc_media_t * p_md,libvlc_exception_t * p_e );
  libvlc_media_get_duration( *media.l,*exception.l ) As "libvlc_media_get_duration"
;/**
; * Get preparsed status for media descriptor object.
; *
; * \param p_md media descriptor object
; * \param p_e an initialized exception object
; * \return true if media object has been preparsed otherwise it returns false
; */
;  VLC_PUBLIC_API int libvlc_media_is_preparsed( libvlc_media_t * p_md,libvlc_exception_t * p_e );
  libvlc_media_is_preparsed( *media.l,*exception.l ) As "libvlc_media_is_preparsed"
;/**
; * Sets media descriptor's user_data. user_data is specialized data 
; * accessed by the host application, VLC.framework uses it as a pointer to 
; * an native object that references a libvlc_media_t pointer
; *
; * \param p_md media descriptor object
; * \param p_new_user_data pointer to user data
; * \param p_e an initialized exception object
; */
;  VLC_PUBLIC_API void libvlc_media_set_user_data( libvlc_media_t * p_md,void * p_new_user_data,libvlc_exception_t * p_e);
  libvlc_media_set_user_data( *media.l, *new_user_data.l, *exception.l);
;/**
; * Get media descriptor's user_data. user_data is specialized data 
; * accessed by the host application, VLC.framework uses it as a pointer to 
; * an native object that references a libvlc_media_t pointer
; *
; * \param p_md media descriptor object
; * \param p_e an initialized exception object
; */
;  VLC_PUBLIC_API void *libvlc_media_get_user_data( libvlc_media_t * p_md,libvlc_exception_t * p_e);
  libvlc_media_get_user_data( *media.l,*exception.l);
;/*****************************************************************************
; * Media Player
; *****************************************************************************/
;/**
; * Create an empty Media Player object
; *
; * \param p_libvlc_instance the libvlc instance in which the Media Player
; *        should be created.
; * \param p_e an initialized exception pointer
; */
;  VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *, libvlc_exception_t * );
  libvlc_media_player_new( *libvlc_instance.l, *exception.l ) As "libvlc_media_player_new"
;/**
; * Create a Media Player object from a Media
; *
; * \param p_md the media. Afterwards the p_md can be safely
; *        destroyed.
; * \param p_e an initialized exception pointer
; */
;  VLC_PUBLIC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *, libvlc_exception_t * );
  libvlc_media_player_new_from_media(*media.l, *exception.l ) ;As "libvlc_media_player_new_from_media"
;/**
; * Release a media_player after use
; * Decrement the reference count of a media player object. If the
; * reference count is 0, then libvlc_media_player_release() will 
; * release the media player object. If the media player object 
; * has been released, then it should not be used again.
; *
; * \param p_mi the Media Player to free
; */
;  VLC_PUBLIC_API void libvlc_media_player_release( libvlc_media_player_t * );
  libvlc_media_player_release( *media.l ) ;As "libvlc_media_player_release"
;/**
; * Retain a reference to a media player object. Use
; * libvlc_media_player_release() to decrement reference count.
; *
; * \param p_mi media player object
; */
;  VLC_PUBLIC_API void libvlc_media_player_retain( libvlc_media_player_t * );
  libvlc_media_player_retain( *media.l ) As "libvlc_media_player_retain"
;/** 
; * Set the media that will be used by the media_player. If any,
; * previous md will be released.
; *
; * \param p_mi the Media Player
; * \param p_md the Media. Afterwards the p_md can be safely
; *        destroyed.
; * \param p_e an initialized exception pointer
; */
;  VLC_PUBLIC_API void libvlc_media_player_set_media( libvlc_media_player_t *, libvlc_media_t *, libvlc_exception_t * );
  libvlc_media_player_set_media(*mediai.l,*mediad.l,*exception.l) As "libvlc_media_player_set_media" 
; /**
;  * Get the media used by the media_player.
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return the media associated With p_mi, Or NULL If no
;  *         media is associated
;  */
;  VLC_PUBLIC_API libvlc_media_t * libvlc_media_player_get_media( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_get_media(*media.l,*exception.l) As "libvlc_media_player_get_media"
; /**
;  * Get the Event Manager from which the media player send event.
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return the event manager associated With p_mi
;  */
;  VLC_PUBLIC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_event_manager ( *media.l,*exception.l ) As "libvlc_media_player_event_manager"
; /**
;  * Play
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_play ( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_play ( *media.l,*exception.l ) ;As "libvlc_media_player_play"
; /**
;  * Pause
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_pause ( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_pause ( *media.l,*exception.l ) ;As "libvlc_media_player_pause"
; /**
;  * Stop
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_stop ( *media.l,*exception.l ) ;As "libvlc_media_player_stop"
; /**
;  * Set the drawable where the media player should render its video output
;  *
;  * \param p_mi the Media Player
;  * \param drawable the libvlc_drawable_t where the media player
;  *        should render its video
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_set_drawable ( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );
  libvlc_media_player_set_drawable (*media.l,*drawable.l,*exception.l ) ;As "libvlc_media_player_set_drawable"
; /**
;  * Get the drawable where the media player should render its video output
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return the libvlc_drawable_t where the media player
;  *         should render its video
;  */
;  VLC_PUBLIC_API libvlc_drawable_t libvlc_media_player_get_drawable ( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_get_drawable (*media.l, *exception.l) As "libvlc_media_player_get_drawable"
; /** \bug This might go away ... To be replaced by a broader system */
; 
; /**
;  * Get the current movie length (in ms).
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return the movie length (in ms).
;  */
;  VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_length( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_length(*media.l, *exception.l) ;As "libvlc_media_player_get_length"
; /**
;  * Get the current movie time (in ms).
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return the movie time (in ms).
;  */
;  VLC_PUBLIC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_time(*media.l, *exception.l) ;As "libvlc_media_player_get_time"
; /**
;  * Set the movie time (in ms).
;  *
;  * \param p_mi the Media Player
;  * \param the movie time (in ms).
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_set_time( libvlc_media_player_t *, libvlc_time_t, libvlc_exception_t *);
  libvlc_media_player_set_time( *media.l,time.l,*exception.l) ;As "libvlc_media_player_set_time"
; /**
;  * Get movie position.
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return movie position
;  */
;  VLC_PUBLIC_API float libvlc_media_player_get_position( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_position(*media.l,*exception.l) As "libvlc_media_player_get_position"
; /**
;  * Set movie position.
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return movie position
;  */
;  VLC_PUBLIC_API void libvlc_media_player_set_position( libvlc_media_player_t *, float, libvlc_exception_t *);
  libvlc_media_player_set_position(*media.l,float.f,*exception.l) As "libvlc_media_player_set_position"
; /**
;  * Set movie chapter
;  *
;  * \param p_mi the Media Player
;  * \param i_chapter chapter number To play
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_set_chapter( libvlc_media_player_t *, int, libvlc_exception_t *);
  libvlc_media_player_set_chapter(*media.l, chapter.l,*exception.l) As "libvlc_media_player_set_chapter"
; /**
;  * Get movie chapter
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return chapter number currently playing
;  */
;  VLC_PUBLIC_API int libvlc_media_player_get_chapter( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_media_player_get_chapter(*media.l, *exception.l) As "libvlc_media_player_get_chapter"
; /**
;  * Get movie chapter count
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return number of chapters in movie
;  */
;  VLC_PUBLIC_API int libvlc_media_player_get_chapter_count( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_chapter_count(*media.l, *exception.l) As "libvlc_media_player_get_chapter_count"
;  VLC_PUBLIC_API int libvlc_media_player_will_play        ( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_will_play (*media.l, *exception.l) As "libvlc_media_player_will_play"
; /**
;  * Get movie play rate
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return movie play rate
;  */
;  VLC_PUBLIC_API float libvlc_media_player_get_rate( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_rate(*media.l, *exception.l) As "libvlc_media_player_get_rate"
; /**
;  * Set movie play rate
;  *
;  * \param p_mi the Media Player
;  * \param movie play rate To set
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_media_player_set_rate( libvlc_media_player_t *, float, libvlc_exception_t *);
  libvlc_media_player_set_rate(*media.l,movie.f,*exception.l) As "libvlc_media_player_set_rate"
; /**
;  * Get current movie state
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return current movie state As libvlc_state_t
;  */
;  VLC_PUBLIC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_state(*media.l, *exception.l) As "libvlc_media_player_get_state"
; /**
;  * Get movie fps rate
;  *
;  * \param p_mi the Media Player
;  * \param p_e an initialized exception pointer
;  * \return frames per Second (fps) For this playing movie
;  */
;  VLC_PUBLIC_API float libvlc_media_player_get_fps( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_get_fps(*media.l, *exception.l) As "libvlc_media_player_get_fps"
; /** End bug */
; /**
;  * Does this media player have a video output?
;  *
;  * \param p_md the media player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API int  libvlc_media_player_has_vout( libvlc_media_player_t *, libvlc_exception_t *);
  libvlc_media_player_has_vout(*media.l, *exception.l) As "libvlc_media_player_has_vout"
; /**
;  * Is this media player seekable?
;  *
;  * \param p_input the input
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
  libvlc_media_player_is_seekable(*input.l, *exception.l) As "libvlc_media_player_is_seekable"
; /**
;  * Can this media player be paused?
;  *
;  * \param p_input the input
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API int libvlc_media_player_can_pause( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e );
  libvlc_media_player_can_pause( *input.l, *exception.l ) As "libvlc_media_player_can_pause"
 
; /**
;  * Toggle fullscreen status on video output.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_toggle_fullscreen( *mediaplayer.l, *exception.l ) As "libvlc_toggle_fullscreen"
; /**
;  * Enable Or disable fullscreen on a video output.
;  *
;  * \param p_mediaplayer the media player
;  * \param b_fullscreen boolean For fullscreen status
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_set_fullscreen( libvlc_media_player_t *, int, libvlc_exception_t * );
  libvlc_set_fullscreen(*mediaplayer.l,fullscreen.b,*exception.l ) As "libvlc_set_fullscreen"
; /**
;  * Get current fullscreen status.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the fullscreen status (boolean)
;  */
;  VLC_PUBLIC_API int libvlc_get_fullscreen( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_get_fullscreen(*mediaplayer.l, *exception.l) As "libvlc_get_fullscreen"
; /**
;  * Get current video height.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the video height
;  */
;  VLC_PUBLIC_API int libvlc_video_get_height( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_height( *mediaplayer.l, *exception.l) ;As "libvlc_video_get_height"
; /**
;  * Get current video width.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the video width
;  */
;  VLC_PUBLIC_API int libvlc_video_get_width( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_width(*mediaplayer.l, *exception.l) ;As "libvlc_video_get_width"
; /**
;  * Get current video aspect ratio.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the video aspect ratio
;  */
;  VLC_PUBLIC_API char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_aspect_ratio(*mediaplayer.l, *exception.l) As "libvlc_video_get_aspect_ratio"
; /**
;  * Set new video aspect ratio.
;  *
;  * \param p_mediaplayer the media player
;  * \param psz_aspect new video aspect-ratio
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_aspect_ratio( libvlc_media_player_t *, char *, libvlc_exception_t * );
  libvlc_video_set_aspect_ratio(*mediaplayer.l,aspect.s,*exception.l) As "libvlc_video_set_aspect_ratio"
; /**
;  * Get current video subtitle.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the video subtitle selected
;  */
;  VLC_PUBLIC_API int libvlc_video_get_spu( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_spu(*mediaplayer.l, *exception.l) As "libvlc_video_get_spu"
; /**
;  * Set new video subtitle.
;  *
;  * \param p_mediaplayer the media player
;  * \param i_spu new video subtitle To Select
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_spu( libvlc_media_player_t *, int , libvlc_exception_t * );
  libvlc_video_set_spu(*mediaplayer.l,spu.l,*exception.l) As "libvlc_video_set_spu"
; /**
;  * Set new video subtitle file.
;  *
;  * \param p_mediaplayer the media player
;  * \param psz_subtitle new video subtitle file
;  * \param p_e an initialized exception pointer
;  * \return the success status (boolean)
;  */
;  VLC_PUBLIC_API int libvlc_video_set_subtitle_file( libvlc_media_player_t *, char *, libvlc_exception_t * );
  libvlc_video_set_subtitle_file(*mediaplayer.l,psz_subtitle.s,*exception.l) As "libvlc_video_set_subtitle_file"
; /**
;  * Get current crop filter geometry.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the crop filter geometry
;  */
;  VLC_PUBLIC_API char *libvlc_video_get_crop_geometry( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_crop_geometry(*mediaplayer.l, *exception.l) As "libvlc_video_get_crop_geometry"
; /**
;  * Set new crop filter geometry.
;  *
;  * \param p_mediaplayer the media player
;  * \param psz_geometry new crop filter geometry
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_crop_geometry( libvlc_media_player_t *, char *, libvlc_exception_t * );
  libvlc_video_set_crop_geometry(*mediaplayer.l,geometry.s,*exception.l ) As "libvlc_video_set_crop_geometry"
; /**
;  * Toggle teletext transparent status on video output.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_toggle_teletext( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_toggle_teletext(*mediaplayer.l, *exception.l) As "libvlc_toggle_teletext"
; /**
;  * Get current teletext page requested.
;  *
;  * \param p_mediaplayer the media player
;  * \param p_e an initialized exception pointer
;  * \return the current teletext page requested.
;  */
;  VLC_PUBLIC_API int libvlc_video_get_teletext( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_video_get_teletext(*mediaplayer.l, *exception.l) As "libvlc_video_get_teletext"
; /**
;  * Set new teletext page To retrieve.
;  *
;  * \param p_mediaplayer the media player
;  * \param i_page teletex page number requested
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_teletext( libvlc_media_player_t *, int, libvlc_exception_t * );
  libvlc_video_set_teletext(*mediaplayer.l,page.l,*exception.l) As "libvlc_video_set_teletext"
; /**
;  * Take a snapshot of the current video window.
;  *
;  * If i_width And i_height is 0, original size is used.
;  * If i_width XOr i_height is 0, original aspect-ratio is preserved.
;  *
;  * \param p_mediaplayer the media player
;  * \param psz_filepath the path where To save the screenshot To
;  * \param i_width the snapshot's width
;  * \param i_height the snapshot's height
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_take_snapshot( libvlc_media_player_t *, char *,unsigned int, unsigned int, libvlc_exception_t * );
  libvlc_video_take_snapshot(*mediaplayer.l,filepath.s,width.l,height.l,*exception.l) As "libvlc_video_take_snapshot"
; /**
;  * Resize the current video output window.
;  *
;  * \param p_instance libvlc instance
;  * \param width new width For video output window
;  * \param height new height For video output window
;  * \param p_e an initialized exception pointer
;  * \return the success status (boolean)
;  */
;  VLC_PUBLIC_API void libvlc_video_resize( libvlc_media_player_t *, int, int, libvlc_exception_t *);
  libvlc_video_resize(*instance.l,width.l,height.l,*exception.l) As "libvlc_video_resize"
; /**
;  * Change the parent For the current the video output.
;  *
;  * \param p_instance libvlc instance
;  * \param drawable the new parent window (Drawable on X11, CGrafPort on MacOSX, HWND on Win32)
;  * \param p_e an initialized exception pointer
;  * \return the success status (boolean)
;  *
;  VLC_PUBLIC_API int libvlc_video_reparent( libvlc_media_player_t *, libvlc_drawable_t, libvlc_exception_t * );
  libvlc_video_reparent(*instance.l,drawable.l,*exception.l) As "libvlc_video_reparent"
; /**
;  * Tell windowless video output To redraw rectangular area (MacOS X only).
;  *
;  * \param p_instance libvlc instance
;  * \param area coordinates within video drawable
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_redraw_rectangle( libvlc_media_player_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
  libvlc_video_redraw_rectangle(*instance.l,*rectangle.l,*exception.l ) As "libvlc_video_redraw_rectangle"
; /**
;  * Set the Default video output size.
;  *
;  * This setting will be used As Default For all video outputs.
;  *
;  * \param p_instance libvlc instance
;  * \param width new width For video drawable
;  * \param height new height For video drawable
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_size( libvlc_instance_t *, int, int, libvlc_exception_t * );
  libvlc_video_set_size(*instance.l,width.l,height.l,*exception.l ) As "libvlc_video_set_size"
; /**
;  * Set the Default video output viewport For a windowless video output
;  * (MacOS X only).
;  *
;  * This setting will be used As Default For all video outputs.
;  *
;  * \param p_instance libvlc instance
;  * \param view coordinates within video drawable
;  * \param clip coordinates within video drawable
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_video_set_viewport( libvlc_instance_t *, const libvlc_rectangle_t *, const libvlc_rectangle_t *, libvlc_exception_t * );
  libvlc_video_set_viewport(*instance.l,*rectangle_view.l,*rectangle_clip.l,*exception.l ) As "libvlc_video_set_viewport"
; /**
;  * Toggle mute status.
;  *
;  * \param p_instance libvlc instance
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_audio_toggle_mute( libvlc_instance_t *, libvlc_exception_t * );
  libvlc_audio_toggle_mute(*instance.l, *exception.l ) As "libvlc_audio_toggle_mute"
; /**
;  * Get current mute status.
;  *
;  * \param p_instance libvlc instance
;  * \param p_e an initialized exception pointer
;  * \return the mute status (boolean)
;  */
;  VLC_PUBLIC_API int libvlc_audio_get_mute( libvlc_instance_t *, libvlc_exception_t * );
  libvlc_audio_get_mute(*instance.l,*exception.l ) As "libvlc_audio_get_mute"
; /**
;  * Set mute status.
;  *
;  * \param p_instance libvlc instance
;  * \param status If status is true then mute, otherwise unmute
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_audio_set_mute( libvlc_instance_t *, int , libvlc_exception_t * );
  libvlc_audio_set_mute(*instance.l,status.l,*exception.l ) As "libvlc_audio_set_mute"
; /**
;  * Get current audio level.
;  *
;  * \param p_instance libvlc instance
;  * \param p_e an initialized exception pointer
;  * \return the audio level (int)
;  */
;  VLC_PUBLIC_API int libvlc_audio_get_volume( libvlc_instance_t *, libvlc_exception_t * );
  libvlc_audio_get_volume( *instance.l, *exception.l ) As "libvlc_audio_get_volume"
; /**
;  * Set current audio level.
;  *
;  * \param p_instance libvlc instance
;  * \param i_volume the volume (int)
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_audio_set_volume( libvlc_instance_t *, int, libvlc_exception_t *);
  libvlc_audio_set_volume( *instance.l, volume.l, *exception.l) As "libvlc_audio_set_volume"
; /**
;  * Get number of available audio tracks.
;  *
;  * \param p_mi media player
;  * \param p_e an initialized exception
;  * \return the number of available audio tracks (int)
;  */
;  VLC_PUBLIC_API int libvlc_audio_get_track_count( libvlc_media_player_t *,  libvlc_exception_t * );
  libvlc_audio_get_track_count( *media.l, *exception.l ) As "libvlc_audio_get_track_count"
; /**
;  * Get current audio track.
;  *
;  * \param p_mi media player
;  * \param p_e an initialized exception pointer
;  * \return the audio track (int)
;  */
;  VLC_PUBLIC_API int libvlc_audio_get_track( libvlc_media_player_t *, libvlc_exception_t * );
  libvlc_audio_get_track( *media.l, *exception.l ) As "libvlc_audio_get_track"
; /**
;  * Set current audio track.
;  *
;  * \param p_mi media player
;  * \param i_track the track (int)
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_audio_set_track( libvlc_media_player_t *, int, libvlc_exception_t * );
  libvlc_audio_set_track( *media.l,track.l, *exception.l ) As "libvlc_audio_set_track"
; /**
;  * Get current audio channel.
;  *
;  * \param p_instance vlc instance
;  * \param p_e an initialized exception pointer
;  * \return the audio channel (int)
;  */
;  VLC_PUBLIC_API int libvlc_audio_get_channel( libvlc_instance_t *, libvlc_exception_t * );
  libvlc_audio_get_channel( *instance.l, *exception.l ) As "libvlc_audio_get_channel"
; /**
;  * Set current audio channel.
;  *
;  * \param p_instance vlc instance
;  * \param i_channel the audio channel (int)
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_audio_set_channel( libvlc_instance_t *, int, libvlc_exception_t * );
  libvlc_audio_set_channel( *instance.l, channel.l, *exception.l ) As "libvlc_audio_set_channel"
;/*****************************************************************************
; * Event handling
; *****************************************************************************/
; /**
;  * Register For an event notification.
;  *
;  * \param p_event_manager the event manager To which you want To attach To.
;  *        Generally it is obtained by vlc_my_object_event_manager() where
;  *        my_object is the object you want To listen To.
;  * \param i_event_type the desired event To which we want To listen
;  * \param f_callback the function To call when i_event_type occurs
;  * \param user_data user provided Data To carry With the event
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_event_attach( libvlc_event_manager_t *p_event_manager,libvlc_event_type_t i_event_type,libvlc_callback_t f_callback,void *user_data,libvlc_exception_t *p_e );
  libvlc_event_attach( *event_manager.l,event_type.l,callback.l,*user_data.l,*exception.l ) As "libvlc_event_attach"
; /**
;  * Unregister an event notification.
;  *
;  * \param p_event_manager the event manager
;  * \param i_event_type the desired event To which we want To unregister
;  * \param f_callback the function To call when i_event_type occurs
;  * \param p_user_data user provided Data To carry With the event
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_event_detach( libvlc_event_manager_t *p_event_manager,libvlc_event_type_t i_event_type,libvlc_callback_t f_callback,void *p_user_data,libvlc_exception_t *p_e );
  libvlc_event_detach( *event_manager.l,event_type.l,callback.l,*user_data.l,*exception.l) As "libvlc_event_detach"
; /**
;  * Get an event's type name.
;  *
;  * \param i_event_type the desired event
;  */
;  VLC_PUBLIC_API const char * libvlc_event_type_name( libvlc_event_type_t event_type );
  libvlc_event_type_name( event_type.l ) As "libvlc_event_type_name"
;/*****************************************************************************
; * Media Library
; *****************************************************************************/
;  VLC_PUBLIC_API libvlc_media_library_t *libvlc_media_library_new( libvlc_instance_t * p_inst,libvlc_exception_t * p_e );
  libvlc_media_library_new( *instance.l,*exception.l) As "libvlc_media_library_new"
; /**
;  * Release media library object. This functions decrements the
;  * reference count of the media library object. If it reaches 0,
;  * then the object will be released.
;  *
;  * \param p_mlib media library object
;  */
;  VLC_PUBLIC_API void libvlc_media_library_release( libvlc_media_library_t * p_mlib );
  libvlc_media_library_release( *mlib.l ) As "libvlc_media_library_release"
; /**
;  * Retain a reference To a media library object. This function will
;  * increment the reference counting For this object. Use 
;  * libvlc_media_library_release() To decrement the reference count.
;  *
;  * \param p_mlib media library object
;  */
;  VLC_PUBLIC_API void libvlc_media_library_retain( libvlc_media_library_t * p_mlib );
  libvlc_media_library_retain( *mlib.l ) As "libvlc_media_library_retain"
; /**
;  * Load media library.
;  *
;  * \param p_mlib media library object
;  * \param p_e an initialized exception object.
;  */
;  VLC_PUBLIC_API void libvlc_media_library_load( libvlc_media_library_t * p_mlib,libvlc_exception_t * p_e );
  libvlc_media_library_load( *mlib.l ,*exception.l ) As "libvlc_media_library_load"
; /**
;  * Save media library.
;  *
;  * \param p_mlib media library object
;  * \param p_e an initialized exception object.
;  */
;  VLC_PUBLIC_API void libvlc_media_library_save( libvlc_media_library_t * p_mlib,libvlc_exception_t * p_e );
  libvlc_media_library_save( *mlib.l,*exception.l ) As "libvlc_media_library_save"
; /**
;  * Get media library subitems.
;  *
;  * \param p_mlib media library object
;  * \param p_e an initialized exception object.
;  * \return media List subitems
;  */
;  VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_library_media_list( libvlc_media_library_t * p_mlib,libvlc_exception_t * p_e );
  libvlc_media_library_media_list( *mlib.l,*exception.l ) As "libvlc_media_library_media_list"
;/*****************************************************************************
; * Services/Media Discovery
; *****************************************************************************/
; /**
;  * Discover media service by name.
;  *
;  * \param p_inst libvlc instance
;  * \param psz_name service name
;  * \param p_e an initialized exception object
;  * \return media discover object
;  */
;  VLC_PUBLIC_API libvlc_media_discoverer_t *libvlc_media_discoverer_new_from_name( libvlc_instance_t * p_inst,const char * psz_name,libvlc_exception_t * p_e );
  libvlc_media_discoverer_new_from_name( *instance.l,name.s,*exception.l ) As "libvlc_media_discoverer_new_from_name"
; /**
;  * Release media discover object. If the reference count reaches 0, then
;  * the object will be released.
;  *
;  * \param p_mdis media service discover object
;  */
;  VLC_PUBLIC_API void   libvlc_media_discoverer_release( libvlc_media_discoverer_t * p_mdis );
  libvlc_media_discoverer_release( *mdis.l ) As "libvlc_media_discoverer_release"
; /**
;  * Get media service discover object its localized name.
;  *
;  * \param media discover object
;  * \return localized name
;  */
;  VLC_PUBLIC_API char * libvlc_media_discoverer_localized_name( libvlc_media_discoverer_t * p_mdis );
  libvlc_media_discoverer_localized_name( *mdis.l  ) As "libvlc_media_discoverer_localized_name"
; /**
;  * Get media service discover media List.
;  *
;  * \param p_mdis media service discover object
;  * \return List of media items
;  */
;  VLC_PUBLIC_API libvlc_media_list_t * libvlc_media_discoverer_media_list( libvlc_media_discoverer_t * p_mdis );
  libvlc_media_discoverer_media_list( *mdis.l ) As "libvlc_media_discoverer_media_list"
; /**
;  * Get event manager from media service discover object.
;  *
;  * \param p_mdis media service discover object
;  * \return event manager object.
;  */
;  VLC_PUBLIC_API libvlc_event_manager_t *libvlc_media_discoverer_event_manager( libvlc_media_discoverer_t * p_mdis );
  libvlc_media_discoverer_event_manager( *mdis.l ) As "libvlc_media_discoverer_event_manager"
; /**
;  * Query If media service discover object is running.
;  *
;  * \param p_mdis media service discover object
;  * \return true If running, false If Not
;  */
;  VLC_PUBLIC_API int libvlc_media_discoverer_is_running( libvlc_media_discoverer_t * p_mdis );
  libvlc_media_discoverer_is_running( *mdis.l ) As "libvlc_media_discoverer_is_running"
;/*****************************************************************************
; * Message log handling
; *****************************************************************************/
; /**
;  * Return the VLC messaging verbosity level.
;  *
;  * \param p_instance libvlc instance
;  * \param p_e an initialized exception pointer
;  * \return verbosity level For messages
;  */
;  VLC_PUBLIC_API unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance,libvlc_exception_t *p_e );
  libvlc_get_log_verbosity( *instance.l,*exception.l ) As "libvlc_get_log_verbosity"
; /**
;  * Set the VLC messaging verbosity level.
;  *
;  * \param p_instance libvlc log instance
;  * \param level log level
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_set_log_verbosity( libvlc_instance_t *p_instance, unsigned level,libvlc_exception_t *p_e );
  libvlc_set_log_verbosity( *instance.l, level.l,*exception.l ) As "libvlc_set_log_verbosity"
; /**
;  * Open a VLC message log instance.
;  *
;  * \param p_instance libvlc instance
;  * \param p_e an initialized exception pointer
;  * \return log message instance
;  */
;  VLC_PUBLIC_API libvlc_log_t *libvlc_log_open( libvlc_instance_t *, libvlc_exception_t *);
  libvlc_log_open( *instance.l, *exception.l ) As "libvlc_log_open"
; /**
;  * Close a VLC message log instance.
;  *
;  * \param p_log libvlc log instance
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_log_close( libvlc_log_t *, libvlc_exception_t *);
  libvlc_log_close( *log.l, *exception.l ) As "libvlc_log_close"
; /**
;  * Returns the number of messages in a log instance.
;  *
;  * \param p_log libvlc log instance
;  * \param p_e an initialized exception pointer
;  * \return number of log messages
;  */
;  VLC_PUBLIC_API unsigned libvlc_log_count( const libvlc_log_t *, libvlc_exception_t *);
  libvlc_log_count(*log.l,*exception.l) As "libvlc_log_count"
; /**
;  * Clear a log instance.
;  *
;  * All messages in the log are removed. The log should be cleared on a
;  * regular basis To avoid clogging.
;  *
;  * \param p_log libvlc log instance
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_log_clear( libvlc_log_t *, libvlc_exception_t *);
  libvlc_log_clear(*log.l, *exception.l ) As "libvlc_log_clear"
; /**
;  * Allocate And returns a new iterator To messages in log.
;  *
;  * \param p_log libvlc log instance
;  * \param p_e an initialized exception pointer
;  * \return log iterator object
;  */
;  VLC_PUBLIC_API libvlc_log_iterator_t *libvlc_log_get_iterator( const libvlc_log_t *, libvlc_exception_t *);
  libvlc_log_get_iterator(*log.l, *exception.l ) As "libvlc_log_get_iterator"
; /**
;  * Release a previoulsy allocated iterator.
;  *
;  * \param p_iter libvlc log iterator
;  * \param p_e an initialized exception pointer
;  */
;  VLC_PUBLIC_API void libvlc_log_iterator_free( libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  libvlc_log_iterator_free(*iter.l, *exception.l ) As "libvlc_log_iterator_free"
; /**
;  * Return whether log iterator has more messages.
;  *
;  * \param p_iter libvlc log iterator
;  * \param p_e an initialized exception pointer
;  * \return true If iterator has more message objects, Else false
;  */
;  VLC_PUBLIC_API int libvlc_log_iterator_has_next( const libvlc_log_iterator_t *p_iter, libvlc_exception_t *p_e );
  libvlc_log_iterator_has_next(*iter.l, *exception.l ) As "libvlc_log_iterator_has_next"
; /**
;  * Return the Next log message.
;  *
;  * The message contents must Not be freed
;  *
;  * \param p_iter libvlc log iterator
;  * \param p_buffer log buffer
;  * \param p_e an initialized exception pointer
;  * \return log message object
;  */
;  VLC_PUBLIC_API libvlc_log_message_t *libvlc_log_iterator_next( libvlc_log_iterator_t *p_iter,libvlc_log_message_t *p_buffer,libvlc_exception_t *p_e );
  libvlc_log_iterator_next(*iter.l, *buffer.l ,*exception.l ) As "libvlc_log_iterator_next"
EndImport
Structure prog
   *inst
   *base
   *mp
   *m
   *state
   *item
   drawable.l
   wevent.l
   procent.l
   stukje.q
   reload.b
   sizex.l
   sizey.l
   osizex.l
   osizey.l
   length.q
   curpos.q
   curposo.q
   ex.l
   file$
   i.l
EndStructure
Global Dim vlc_args.s(8) 
Global Dim utf8args(8)
Global p.prog
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
Procedure makeargs(Array Array.s(1), num, Array newarr(1))
      p\i = 0
      Repeat
         newarr(p\i) = AllocateMemory(StringByteLength(Array(p\i))+1)
         PokeS(newarr(p\i), Array(p\i), -1, #PB_UTF8)
         p\i+1
      Until p\i>=num
EndProcedure 
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Procedure makeargs(Array.s(1), num, newarr(1))
      p\i = 0
      Repeat
         newarr(p\i) = AllocateMemory(StringByteLength(Array(p\i))+1)
         PokeS(newarr(p\i), Array(p\i), -1, #PB_UTF8)
         p\i+1
      Until p\i>=num
EndProcedure 
CompilerEndIf
If  OpenWindow(1, 0, 0, 60, 20, "PureBasic VLC", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
    ScrollBarGadget(0, 0, 0, 0, 0, 0, 1000, 1)
    ButtonGadget(1, 0, 0, 0, 0, "F")
    ButtonGadget(2, 0, 0, 0, 0, ">")
    SetGadgetText(2, "||")
    ContainerGadget(3, 0, 0, 0, 0)
    vlc_args(0) = "-I"
    vlc_args(1) = "dummy"
    vlc_args(2) = "--ignore-config"
    CompilerIf #PB_Compiler_OS = #PB_OS_Linux
        vlc_args(3) = "--plugin-path=/usr/lib/vlc/codecs/"
    CompilerEndIf      
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
        vlc_args(3) = "--plugin-path=C:\\Program Files\\VideoLAN\\VLC\\plugins\"
    CompilerEndIf      
    vlc_args(4) = "--mms-caching"
    vlc_args(5) = "3200"
    vlc_args(6) = "--http-caching"
    vlc_args(7) = "3200"  
    makeargs(vlc_args(), 8, utf8args())
    Debug PeekS(libvlc_get_version())
    Debug PeekS(libvlc_get_compiler())
    exception.libvlc_exception
    libvlc_exception_init(@exception)
    Debug "exception\raised="+Str(exception\raised) 
    Debug "exception\code="+Str(exception\code) 
    Debug "exception\psz_message="+exception\message
    p\inst = libvlc_new(8, @utf8args(), @exeption) 
    p\file$ = "mms://85.119.217.29/TMFLive"  
    If p\inst
       p\m = libvlc_media_new(p\inst, p\file$, @exeption) ;CallFunction(0, "libvlc_media_new", p\inst, p\file$, @p\ex) 
       p\mp = libvlc_media_player_new_from_media(p\m, @exeption) ;CallFunction(0, "libvlc_media_player_new_from_media", p\m, @p\ex)
       libvlc_media_release(p\m) ;, @exeption) ;CallFunction(0, "libvlc_media_release", p\m, @p\ex) 
       p\drawable = GadgetID(3) 
       libvlc_media_player_set_drawable(p\mp, p\drawable, @exeption) ;CallFunction(0, "libvlc_media_player_set_drawable", p\mp, p\drawable, @p\ex)
       libvlc_media_player_play(p\mp, @exeption) ;CallFunction(0, "libvlc_media_player_play", p\mp, @p\ex) 
       p\reload=1
        While p\wevent<>#PB_Event_CloseWindow
            p\wevent = WindowEvent()
            If p\wevent = #PB_Event_Gadget
               Select EventGadget()
                  Case 0 ; slider
                     If p\mp
                        p\procent.l = GetGadgetState(0)      
                        libvlc_media_player_set_time(p\mp, p\stukje.q*p\procent, @exeption)
                     EndIf
                  Case 1 ; file
                  Case 2 ; play / pause
                     If GetGadgetText(2) = ">"
                        libvlc_media_player_play(p\mp, @exeption)
                        SetGadgetText(2, "||")                  
                     Else
                        libvlc_media_player_pause(p\mp, @exeption)
                        SetGadgetText(2, ">")
                     EndIf
               EndSelect
            EndIf
            If p\wevent=#PB_Event_SizeWindow
               If IsGadget(0)
                  ResizeGadget(0, 40, WindowHeight(1)-20, WindowWidth(1)-40, 20)
               EndIf
               If IsGadget(1)
                  ResizeGadget(1, 0, WindowHeight(1)-20, 20, 20)
               EndIf
               If IsGadget(2)
                  ResizeGadget(2, 20, WindowHeight(1)-20, 20, 20)
               EndIf
               If IsGadget(3)
                  ResizeGadget(3, 0, 0, WindowWidth(1), WindowHeight(1)-20)
               EndIf
            EndIf
            Delay(10)
            p\state = CallFunction(0, "libvlc_media_player_get_state", p\mp, @p\ex)
            Select p\state
               Case 0 ; libvlc_NothingSpecial 	
               Case 1 ; libvlc_Opening 	
               Case 2 ; libvlc_Buffering 	
               Case 3 ; libvlc_Playing 	
                  p\sizex = libvlc_video_get_width(p\mp, @exeption) ;CallFunction(0, "libvlc_video_get_width", p\mp, @p\ex)
                  p\sizey = libvlc_video_get_height(p\mp, @exeption) ;CallFunction(0, "libvlc_video_get_height", p\mp, @p\ex)
                  If p\sizex<>p\osizex And p\sizey<>p\osizey
                     p\osizex=p\sizex
                     p\osizey=p\sizey
                     ResizeWindow(1, #PB_Ignore, #PB_Ignore, p\sizex, p\sizey+20)
                     p\length.q = libvlc_media_player_get_length( p\mp, @exeption) ;CallFunction(0, "libvlc_media_player_get_length", p\mp, @p\ex)                 
                     p\stukje.q = p\length.q / 1000
                     If p\length=0
                        DisableGadget(0, 1)
                     Else
                        DisableGadget(0, 0)
                     EndIf
                     SetGadgetText(2, "||")                              
                  EndIf   
                  p\curpos.q = libvlc_media_player_get_time( p\mp, @exeption) ;CallFunction(0, "libvlc_media_player_get_time", p\mp, @p\ex)
                  If p\curpos.q<>p\curposo.q
                     p\curposo.q = p\curpos.q
                     p\stukje.q = p\length.q / 1000
                     If p\stukje>0 And p\curpos>0
                        SetGadgetState(0, p\curpos/p\stukje)
                     EndIf
                  EndIf
               Case 4 ; libvlc_Paused 	
               Case 5 ; libvlc_Stopped 	
               Case 6 ; libvlc_Forward 	
               Case 7 ; libvlc_Backward 	
               Case 8 ; libvlc_Ended 	
               Case 9 ; libvlc_Error
            EndSelect
        Wend
        If p\mp
           libvlc_media_player_stop(p\mp, @exeption) ;CallFunction(0, "libvlc_media_player_stop", p\mp, @p\ex)
           libvlc_media_player_release(p\mp) ;, @exeption) ;CallFunction(0, "libvlc_media_player_release", p\mp)
        EndIf
    EndIf 
    libvlc_release(p\inst)    
EndIf