libvlc_structures.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * libvlc.h:  libvlc_* new external API structures
00003  *****************************************************************************
00004  * Copyright (C) 1998-2007 the VideoLAN team
00005  * $Id $
00006  *
00007  * Authors: Filippo Carone <littlejohn@videolan.org>
00008  *
00009  * This program is free software; you can redistribute it and/or modify
00010  * it under the terms of the GNU General Public License as published by
00011  * the Free Software Foundation; either version 2 of the License, or
00012  * (at your option) any later version.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
00022  *****************************************************************************/
00023 
00024 #ifndef LIBVLC_STRUCTURES_H
00025 #define LIBVLC_STRUCTURES_H 1
00026 
00027 #include <stdint.h>
00028 
00029 # ifdef __cplusplus
00030 extern "C" {
00031 # endif
00032 
00033 /** This structure is opaque. It represents a libvlc instance */
00034 typedef struct libvlc_instance_t libvlc_instance_t;
00035 
00036 /*****************************************************************************
00037  * Exceptions
00038  *****************************************************************************/
00039 
00040 /** \defgroup libvlc_exception libvlc_exception
00041  * \ingroup libvlc_core
00042  * LibVLC Exceptions handling
00043  * @{
00044  */
00045 
00046 typedef struct libvlc_exception_t
00047 {
00048     int b_raised;
00049     int i_code;
00050     char *psz_message;
00051 } libvlc_exception_t;
00052 
00053 /**@} */
00054 
00055 /*****************************************************************************
00056  * Time
00057  *****************************************************************************/
00058 /** \defgroup libvlc_time libvlc_time
00059  * \ingroup libvlc_core
00060  * LibVLC Time support in libvlc
00061  * @{
00062  */
00063 
00064 typedef int64_t libvlc_time_t;
00065 
00066 /**@} */
00067 
00068 /*****************************************************************************
00069  * Media Descriptor
00070  *****************************************************************************/
00071 /** \defgroup libvlc_media libvlc_media
00072  * \ingroup libvlc
00073  * LibVLC Media Descriptor handling
00074  * @{
00075  */
00076 
00077 /* Meta Handling */
00078 /** defgroup libvlc_meta libvlc_meta
00079  * \ingroup libvlc_media
00080  * LibVLC Media Meta
00081  * @{
00082  */
00083 
00084 typedef enum libvlc_meta_t {
00085     libvlc_meta_Title,
00086     libvlc_meta_Artist,
00087     libvlc_meta_Genre,
00088     libvlc_meta_Copyright,
00089     libvlc_meta_Album,
00090     libvlc_meta_TrackNumber,
00091     libvlc_meta_Description,
00092     libvlc_meta_Rating,
00093     libvlc_meta_Date,
00094     libvlc_meta_Setting,
00095     libvlc_meta_URL,
00096     libvlc_meta_Language,
00097     libvlc_meta_NowPlaying,
00098     libvlc_meta_Publisher,
00099     libvlc_meta_EncodedBy,
00100     libvlc_meta_ArtworkURL,
00101     libvlc_meta_TrackID
00102 } libvlc_meta_t;
00103 
00104 /**@} */
00105 
00106 typedef struct libvlc_media_t libvlc_media_t;
00107 
00108 /**@} */
00109 
00110 
00111 /*****************************************************************************
00112  * Media Instance
00113  *****************************************************************************/
00114 /** \defgroup libvlc_media_player libvlc_media_player
00115  * \ingroup libvlc
00116  * LibVLC Media Instance handling
00117  * @{
00118  */
00119 
00120 typedef struct libvlc_media_player_t libvlc_media_player_t;
00121 
00122 /**
00123  * Note the order of libvlc_state_t enum must match exactly the order of
00124  * @see mediacontrol_PlayerStatus and @see input_state_e enums.
00125  *
00126  * Expected states by web plugins are:
00127  * IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4,
00128  * STOPPING=5, FORWARD=6, BACKWARD=7, ENDED=8, ERROR=9
00129  */
00130 typedef enum libvlc_state_t
00131 {
00132     libvlc_NothingSpecial=0,
00133     libvlc_Opening,
00134     libvlc_Buffering,
00135     libvlc_Playing,
00136     libvlc_Paused,
00137     libvlc_Stopped,
00138     libvlc_Forward,
00139     libvlc_Backward,
00140     libvlc_Ended,
00141     libvlc_Error
00142 } libvlc_state_t;
00143 
00144 /**@} */
00145 
00146 /*****************************************************************************
00147  * Media List
00148  *****************************************************************************/
00149 /** \defgroup libvlc_media_list libvlc_media_list
00150  * \ingroup libvlc
00151  * LibVLC Media List handling
00152  * @{
00153  */
00154 
00155 typedef struct libvlc_media_list_t libvlc_media_list_t;
00156 typedef struct libvlc_media_list_view_t libvlc_media_list_view_t;
00157 
00158 
00159 /*****************************************************************************
00160  * Media List Player
00161  *****************************************************************************/
00162 /** \defgroup libvlc_media_list_player libvlc_media_list_player
00163  * \ingroup libvlc_media_list
00164  * LibVLC Media List Player handling
00165  * @{
00166  */
00167 
00168 typedef struct libvlc_media_list_player_t libvlc_media_list_player_t;
00169 
00170 /**@} libvlc_media_list_player */
00171 
00172 /**@} libvlc_media_list */
00173 
00174 /*****************************************************************************
00175  * Media Library
00176  *****************************************************************************/
00177 /** \defgroup libvlc_media_library libvlc_media_library
00178  * \ingroup libvlc
00179  * LibVLC Media Library
00180  * @{
00181  */
00182 
00183 typedef struct libvlc_media_library_t libvlc_media_library_t;
00184 
00185 /**@} */
00186 
00187 /*****************************************************************************
00188  * Playlist
00189  *****************************************************************************/
00190 /** \defgroup libvlc_playlist libvlc_playlist (Deprecated)
00191  * \ingroup libvlc
00192  * LibVLC Playlist handling (Deprecated)
00193  * @deprecated Use media_list
00194  * @{
00195  */
00196 
00197 typedef struct libvlc_playlist_item_t
00198 {
00199     int i_id;
00200     char * psz_uri;
00201     char * psz_name;
00202 
00203 } libvlc_playlist_item_t;
00204 
00205 /**@} */
00206 
00207 
00208 /*****************************************************************************
00209  * Video
00210  *****************************************************************************/
00211 /** \defgroup libvlc_video libvlc_video
00212  * \ingroup libvlc_media_player
00213  * LibVLC Video handling
00214  * @{
00215  */
00216  
00217 /**
00218 * Downcast to this general type as placeholder for a platform specific one, such as:
00219 *  Drawable on X11,
00220 *  CGrafPort on MacOSX,
00221 *  HWND on win32
00222 */
00223 typedef int libvlc_drawable_t;
00224 
00225 /**
00226 * Rectangle type for video geometry
00227 */
00228 typedef struct libvlc_rectangle_t
00229 {
00230     int top, left;
00231     int bottom, right;
00232 }
00233 libvlc_rectangle_t;
00234 
00235 /**@} */
00236 
00237 
00238 /*****************************************************************************
00239  * Services/Media Discovery
00240  *****************************************************************************/
00241 /** \defgroup libvlc_media_discoverer libvlc_media_discoverer
00242  * \ingroup libvlc
00243  * LibVLC Media Discoverer
00244  * @{
00245  */
00246 
00247 typedef struct libvlc_media_discoverer_t libvlc_media_discoverer_t;
00248 
00249 /**@} */
00250 
00251 /*****************************************************************************
00252  * Message log handling
00253  *****************************************************************************/
00254 
00255 /** \defgroup libvlc_log libvlc_log
00256  * \ingroup libvlc_core
00257  * LibVLC Message Logging
00258  * @{
00259  */
00260 
00261 /** This structure is opaque. It represents a libvlc log instance */
00262 typedef struct libvlc_log_t libvlc_log_t;
00263 
00264 /** This structure is opaque. It represents a libvlc log iterator */
00265 typedef struct libvlc_log_iterator_t libvlc_log_iterator_t;
00266 
00267 typedef struct libvlc_log_message_t
00268 {
00269     unsigned    sizeof_msg;   /* sizeof() of message structure, must be filled in by user */
00270     int         i_severity;   /* 0=INFO, 1=ERR, 2=WARN, 3=DBG */
00271     const char *psz_type;     /* module type */
00272     const char *psz_name;     /* module name */
00273     const char *psz_header;   /* optional header */
00274     const char *psz_message;  /* message */
00275 } libvlc_log_message_t;
00276 
00277 /**@} */
00278 
00279 # ifdef __cplusplus
00280 }
00281 # endif
00282 
00283 #endif

Generated on Wed Aug 13 08:02:37 2008 for VLC by  doxygen 1.5.1