X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fvlc%2Flibvlc_events.h;h=8046b5f708632403f309219fa34c106b8e9a00a7;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=cba64a3b52240e3f5206c18406aca350ee345873;hpb=ee1330c497b5c78f5fcfd0145391f219e489e13a;p=vlc diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h index cba64a3b52..8046b5f708 100644 --- a/include/vlc/libvlc_events.h +++ b/include/vlc/libvlc_events.h @@ -1,7 +1,7 @@ /***************************************************************************** * libvlc_events.h: libvlc_events external API structure ***************************************************************************** - * Copyright (C) 1998-2007 the VideoLAN team + * Copyright (C) 1998-2010 the VideoLAN team * $Id $ * * Authors: Filippo Carone @@ -17,77 +17,99 @@ * 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. + * 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. *****************************************************************************/ -#ifndef _LIBVLC_EVENTS_H -#define _LIBVLC_EVENTS_H 1 +#ifndef LIBVLC_EVENTS_H +#define LIBVLC_EVENTS_H 1 + +/** + * \file + * This file defines libvlc_event external API + */ # ifdef __cplusplus extern "C" { # endif -/***************************************************************************** - * Events handling - *****************************************************************************/ - -/** \defgroup libvlc_events Events - * \ingroup libvlc - * LibVLC Available Events +/** + * \ingroup libvlc_event * @{ */ -typedef enum libvlc_event_type_t { - libvlc_MediaDescriptorMetaChanged, - libvlc_MediaDescriptorSubItemAdded, - libvlc_MediaDescriptorDurationChanged, - libvlc_MediaDescriptorPreparsedChanged, - libvlc_MediaDescriptorFreed, - libvlc_MediaDescriptorStateChanged, - - libvlc_MediaInstancePlayed, - libvlc_MediaInstancePaused, - libvlc_MediaInstanceEndReached, - libvlc_MediaInstanceStopped, - libvlc_MediaInstanceEncounteredError, - libvlc_MediaInstanceTimeChanged, - libvlc_MediaInstancePositionChanged, - libvlc_MediaInstanceSeekableChanged, - libvlc_MediaInstancePausableChanged, - - libvlc_MediaListItemAdded, +/** + * Event types + */ +enum libvlc_event_e { + /* Append new event types at the end of a category. + * Do not remove, insert or re-order any entry. + * Keep this in sync with src/control/event.c:libvlc_event_type_name(). */ + libvlc_MediaMetaChanged=0, + libvlc_MediaSubItemAdded, + libvlc_MediaDurationChanged, + libvlc_MediaParsedChanged, + libvlc_MediaFreed, + libvlc_MediaStateChanged, + + libvlc_MediaPlayerMediaChanged=0x100, + libvlc_MediaPlayerNothingSpecial, + libvlc_MediaPlayerOpening, + libvlc_MediaPlayerBuffering, + libvlc_MediaPlayerPlaying, + libvlc_MediaPlayerPaused, + libvlc_MediaPlayerStopped, + libvlc_MediaPlayerForward, + libvlc_MediaPlayerBackward, + libvlc_MediaPlayerEndReached, + libvlc_MediaPlayerEncounteredError, + libvlc_MediaPlayerTimeChanged, + libvlc_MediaPlayerPositionChanged, + libvlc_MediaPlayerSeekableChanged, + libvlc_MediaPlayerPausableChanged, + libvlc_MediaPlayerTitleChanged, + libvlc_MediaPlayerSnapshotTaken, + libvlc_MediaPlayerLengthChanged, + + libvlc_MediaListItemAdded=0x200, libvlc_MediaListWillAddItem, libvlc_MediaListItemDeleted, libvlc_MediaListWillDeleteItem, - libvlc_MediaListViewItemAdded, + libvlc_MediaListViewItemAdded=0x300, libvlc_MediaListViewWillAddItem, libvlc_MediaListViewItemDeleted, libvlc_MediaListViewWillDeleteItem, - libvlc_MediaListPlayerPlayed, + libvlc_MediaListPlayerPlayed=0x400, libvlc_MediaListPlayerNextItemSet, libvlc_MediaListPlayerStopped, - libvlc_MediaDiscovererStarted, - libvlc_MediaDiscovererEnded - -} libvlc_event_type_t; + libvlc_MediaDiscovererStarted=0x500, + libvlc_MediaDiscovererEnded, + + libvlc_VlmMediaAdded=0x600, + libvlc_VlmMediaRemoved, + libvlc_VlmMediaChanged, + libvlc_VlmMediaInstanceStarted, + libvlc_VlmMediaInstanceStopped, + libvlc_VlmMediaInstanceStatusInit, + libvlc_VlmMediaInstanceStatusOpening, + libvlc_VlmMediaInstanceStatusPlaying, + libvlc_VlmMediaInstanceStatusPause, + libvlc_VlmMediaInstanceStatusEnd, + libvlc_VlmMediaInstanceStatusError, +}; /** - * An Event - * \param type the even type - * \param p_obj the sender object - * \param u Event dependent content + * A LibVLC event */ - typedef struct libvlc_event_t { - libvlc_event_type_t type; - void * p_obj; - union event_type_specific + int type; /**< Event type (see @ref libvlc_event_e) */ + void *p_obj; /**< Object emitting the event */ + union { /* media descriptor */ struct @@ -100,12 +122,12 @@ typedef struct libvlc_event_t } media_subitem_added; struct { - vlc_int64_t new_duration; + int64_t new_duration; } media_duration_changed; struct { int new_status; - } media_preparsed_changed; + } media_parsed_changed; struct { libvlc_media_t * md; @@ -117,6 +139,10 @@ typedef struct libvlc_event_t /* media instance */ struct + { + float new_cache; + } media_player_buffering; + struct { float new_position; } media_player_position_changed; @@ -126,11 +152,15 @@ typedef struct libvlc_event_t } media_player_time_changed; struct { - libvlc_time_t new_seekable; + int new_title; + } media_player_title_changed; + struct + { + int new_seekable; } media_player_seekable_changed; struct { - libvlc_time_t new_pausable; + int new_pausable; } media_player_pausable_changed; /* media list */ @@ -155,54 +185,39 @@ typedef struct libvlc_event_t int index; } media_list_will_delete_item; - /* media list view */ + /* media list player */ struct { libvlc_media_t * item; - int index; - } media_list_view_item_added; - struct - { - libvlc_media_t * item; - int index; - } media_list_view_will_add_item; + } media_list_player_next_item_set; + + /* snapshot taken */ struct { - libvlc_media_t * item; - int index; - } media_list_view_item_deleted; + char* psz_filename ; + } media_player_snapshot_taken ; + + /* Length changed */ struct { - libvlc_media_t * item; - int index; - } media_list_view_will_delete_item; + libvlc_time_t new_length; + } media_player_length_changed; - /* media discoverer */ + /* VLM media */ struct { - void * unused; - } media_media_discoverer_started; + const char * psz_media_name; + const char * psz_instance_name; + } vlm_media_event; + + /* Extra MediaPlayer */ struct { - void * unused; - } media_media_discoverer_ended; - - } u; + libvlc_media_t * new_media; + } media_player_media_changed; + } u; /**< Type-dependent event description */ } libvlc_event_t; -/** - * Event manager that belongs to a libvlc object, and from whom events can - * be received. - */ - -typedef struct libvlc_event_manager_t libvlc_event_manager_t; - -/** - * Callback function notification - * \param p_event the event triggering the callback - */ - -typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * ); /**@} */