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
1.5.1