libplayer
2.0.1
|
00001 /* 00002 * GeeXboX libplayer: a multimedia A/V abstraction layer API. 00003 * Copyright (C) 2006-2008 Benjamin Zores <ben@geexbox.org> 00004 * Copyright (C) 2007-2008 Mathieu Schroeter <mathieu.schroeter@gamesover.ch> 00005 * 00006 * This file is part of libplayer. 00007 * 00008 * libplayer is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public 00010 * License as published by the Free Software Foundation; either 00011 * version 2.1 of the License, or (at your option) any later version. 00012 * 00013 * libplayer is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 * Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public 00019 * License along with libplayer; if not, write to the Free Software 00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 */ 00022 00023 #ifndef PLAYER_H 00024 #define PLAYER_H 00025 00055 #ifdef __cplusplus 00056 extern "C" { 00057 #if 0 /* avoid EMACS indent */ 00058 } 00059 #endif /* 0 */ 00060 #endif /* __cplusplus */ 00061 00062 #ifndef pl_unused 00063 #if defined(__GNUC__) 00064 # define pl_unused __attribute__((unused)) 00065 #else 00066 # define pl_unused 00067 #endif 00068 #endif 00069 00070 #define PL_STRINGIFY(s) #s 00071 #define PL_TOSTRING(s) PL_STRINGIFY(s) 00072 00073 #define PL_VERSION_INT(a, b, c) (a << 16 | b << 8 | c) 00074 #define PL_VERSION_DOT(a, b, c) a ##.## b ##.## c 00075 #define PL_VERSION(a, b, c) PL_VERSION_DOT(a, b, c) 00076 00077 #define LIBPLAYER_VERSION_MAJOR 2 00078 #define LIBPLAYER_VERSION_MINOR 0 00079 #define LIBPLAYER_VERSION_MICRO 1 00080 00081 #define LIBPLAYER_VERSION_INT PL_VERSION_INT(LIBPLAYER_VERSION_MAJOR, \ 00082 LIBPLAYER_VERSION_MINOR, \ 00083 LIBPLAYER_VERSION_MICRO) 00084 #define LIBPLAYER_VERSION PL_VERSION(LIBPLAYER_VERSION_MAJOR, \ 00085 LIBPLAYER_VERSION_MINOR, \ 00086 LIBPLAYER_VERSION_MICRO) 00087 #define LIBPLAYER_VERSION_STR PL_TOSTRING(LIBPLAYER_VERSION) 00088 #define LIBPLAYER_BUILD LIBPLAYER_VERSION_INT 00089 00090 #include <inttypes.h> 00091 #include <sys/types.h> 00092 00096 unsigned int libplayer_version (void); 00097 00098 00099 /***************************************************************************/ 00100 /* */ 00101 /* Player (Un)Initialization */ 00102 /* Mandatory for all operations below */ 00103 /* */ 00104 /***************************************************************************/ 00105 00111 typedef struct player_s player_t; 00112 00114 typedef enum player_type { 00115 PLAYER_TYPE_XINE, 00116 PLAYER_TYPE_MPLAYER, 00117 PLAYER_TYPE_VLC, 00118 PLAYER_TYPE_GSTREAMER, 00119 PLAYER_TYPE_DUMMY 00120 } player_type_t; 00121 00123 typedef enum player_vo { 00124 PLAYER_VO_AUTO = 0, 00125 PLAYER_VO_NULL, 00126 PLAYER_VO_X11, 00127 PLAYER_VO_X11_SDL, 00128 PLAYER_VO_XV, 00129 PLAYER_VO_GL, 00130 PLAYER_VO_FB, 00131 PLAYER_VO_DIRECTFB, 00132 PLAYER_VO_VDPAU, 00133 PLAYER_VO_VAAPI, 00134 } player_vo_t; 00135 00137 typedef enum player_ao { 00138 PLAYER_AO_AUTO = 0, 00139 PLAYER_AO_NULL, 00140 PLAYER_AO_ALSA, 00141 PLAYER_AO_OSS, 00142 PLAYER_AO_PULSE, 00143 } player_ao_t; 00144 00146 typedef enum player_event { 00147 PLAYER_EVENT_UNKNOWN, 00148 PLAYER_EVENT_PLAYBACK_START, 00149 PLAYER_EVENT_PLAYBACK_STOP, 00150 PLAYER_EVENT_PLAYBACK_FINISHED, 00151 PLAYER_EVENT_PLAYLIST_FINISHED, 00152 PLAYER_EVENT_PLAYBACK_PAUSE, 00153 PLAYER_EVENT_PLAYBACK_UNPAUSE, 00154 } player_event_t; 00155 00157 typedef enum { 00158 PLAYER_MSG_NONE, /* no error messages */ 00159 PLAYER_MSG_VERBOSE, /* super-verbose mode: mostly for debugging */ 00160 PLAYER_MSG_INFO, /* working operations */ 00161 PLAYER_MSG_WARNING, /* harmless failures */ 00162 PLAYER_MSG_ERROR, /* may result in hazardous behavior */ 00163 PLAYER_MSG_CRITICAL, /* prevents lib from working */ 00164 } player_verbosity_level_t; 00165 00166 typedef enum { 00167 PLAYER_QUALITY_NORMAL, /* normal picture quality */ 00168 PLAYER_QUALITY_LOW, /* slightly degraded picture for fastest playback */ 00169 PLAYER_QUALITY_LOWEST, /* degraded picture, suitable for low-end CPU */ 00170 } player_quality_level_t; 00171 00173 typedef struct player_init_param_s { 00175 player_ao_t ao; 00177 player_vo_t vo; 00179 uint32_t winid; 00180 00182 int (*event_cb) (player_event_t e, void *data); 00184 void *data; 00185 00193 const char *display; 00194 00196 player_quality_level_t quality; 00197 00198 } player_init_param_t; 00199 00225 player_t *player_init (player_type_t type, player_verbosity_level_t verbosity, 00226 player_init_param_t *param); 00227 00239 void player_uninit (player_t *player); 00240 00251 void player_set_verbosity (player_t *player, player_verbosity_level_t level); 00252 00257 /***************************************************************************/ 00258 /* */ 00259 /* Media Resource Locater (MRL) Helpers */ 00260 /* MRLs can have multiple types and are used to define a stream */ 00261 /* */ 00262 /***************************************************************************/ 00263 00269 typedef struct mrl_s mrl_t; 00270 00272 typedef enum mrl_type { 00273 MRL_TYPE_UNKNOWN, 00274 MRL_TYPE_AUDIO, 00275 MRL_TYPE_VIDEO, 00276 MRL_TYPE_IMAGE, 00277 } mrl_type_t; 00278 00279 /* 00280 * Support by wrappers 00281 * 00282 * GStreamer MPlayer VLC xine 00283 * ------------ ------------ ------------ ------------ 00284 */ 00286 typedef enum mrl_resource { 00287 MRL_RESOURCE_UNKNOWN, 00288 00289 /* Local Streams */ 00290 MRL_RESOURCE_FIFO, /* NO NO NO NO */ 00291 MRL_RESOURCE_FILE, /* YES YES YES YES */ 00292 MRL_RESOURCE_STDIN, /* NO NO NO NO */ 00293 00294 /* Audio CD */ 00295 MRL_RESOURCE_CDDA, /* NO YES NO NO */ 00296 MRL_RESOURCE_CDDB, /* NO YES NO NO */ 00297 00298 /* Video discs */ 00299 MRL_RESOURCE_DVD, /* NO YES YES YES */ 00300 MRL_RESOURCE_DVDNAV, /* NO YES YES YES */ 00301 MRL_RESOURCE_VCD, /* NO YES NO NO */ 00302 00303 /* Radio/Television */ 00304 MRL_RESOURCE_DVB, /* NO YES NO NO */ 00305 MRL_RESOURCE_PVR, /* NO NO NO NO */ 00306 MRL_RESOURCE_RADIO, /* NO YES NO NO */ 00307 MRL_RESOURCE_TV, /* NO YES NO NO */ 00308 MRL_RESOURCE_VDR, /* NO NO NO YES */ 00309 00310 /* Network Streams */ 00311 MRL_RESOURCE_FTP, /* NO YES YES NO */ 00312 MRL_RESOURCE_HTTP, /* NO YES YES YES */ 00313 MRL_RESOURCE_MMS, /* NO YES YES YES */ 00314 MRL_RESOURCE_NETVDR, /* NO NO NO YES */ 00315 MRL_RESOURCE_RTP, /* NO YES YES YES */ 00316 MRL_RESOURCE_RTSP, /* NO YES YES NO */ 00317 MRL_RESOURCE_SMB, /* NO YES YES NO */ 00318 MRL_RESOURCE_TCP, /* NO NO NO YES */ 00319 MRL_RESOURCE_UDP, /* NO YES YES YES */ 00320 MRL_RESOURCE_UNSV, /* NO YES YES NO */ 00321 } mrl_resource_t; 00322 00324 typedef struct mrl_resource_local_args_s { 00325 char *location; /* YES YES YES YES */ 00326 int playlist; /* NO NO NO NO */ 00327 } mrl_resource_local_args_t; 00328 00330 typedef struct mrl_resource_cd_args_s { 00331 char *device; /* NO YES NO NO */ 00332 uint8_t speed; /* NO YES NO NO */ 00333 uint8_t track_start; /* NO YES NO NO */ 00334 uint8_t track_end; /* NO YES NO NO */ 00335 } mrl_resource_cd_args_t; 00336 00338 typedef struct mrl_resource_videodisc_args_s { 00339 char *device; /* NO YES YES YES */ 00340 uint8_t speed; /* NO NO NO NO */ 00341 uint8_t angle; /* NO YES YES NO */ 00342 uint8_t title_start; /* NO YES YES YES */ 00343 uint8_t title_end; /* NO YES NO NO */ 00344 uint8_t chapter_start; /* NO NO YES NO */ 00345 uint8_t chapter_end; /* NO NO NO NO */ 00346 uint8_t track_start; /* NO YES NO NO */ 00347 uint8_t track_end; /* NO NO NO NO */ 00348 char *audio_lang; /* NO NO NO NO */ 00349 char *sub_lang; /* NO NO NO NO */ 00350 uint8_t sub_cc; /* NO NO NO NO */ 00351 } mrl_resource_videodisc_args_t; 00352 00354 typedef struct mrl_resource_tv_args_s { 00355 char *device; /* NO NO NO YES */ 00356 char *driver; /* NO NO NO YES */ 00357 char *channel; /* NO YES NO NO */ 00358 uint8_t input; /* NO YES NO NO */ 00359 int width; /* NO NO NO NO */ 00360 int height; /* NO NO NO NO */ 00361 int fps; /* NO NO NO NO */ 00362 char *output_format; /* NO NO NO NO */ 00363 char *norm; /* NO YES NO NO */ 00364 } mrl_resource_tv_args_t; 00365 00367 typedef struct mrl_resource_network_args_s { 00368 char *url; /* NO YES NO YES */ 00369 char *username; /* NO YES NO NO */ 00370 char *password; /* NO YES NO NO */ 00371 char *user_agent; /* NO NO NO NO */ 00372 } mrl_resource_network_args_t; 00373 00375 typedef enum mrl_snapshot { 00376 MRL_SNAPSHOT_JPG, /* NO YES NO NO */ 00377 MRL_SNAPSHOT_PNG, /* NO YES NO NO */ 00378 MRL_SNAPSHOT_PPM, /* NO YES NO NO */ 00379 MRL_SNAPSHOT_TGA, /* NO NO NO NO */ 00380 } mrl_snapshot_t; 00381 00383 typedef enum mrl_metadata_type { 00384 MRL_METADATA_TITLE, 00385 MRL_METADATA_ARTIST, 00386 MRL_METADATA_GENRE, 00387 MRL_METADATA_ALBUM, 00388 MRL_METADATA_YEAR, 00389 MRL_METADATA_TRACK, 00390 MRL_METADATA_COMMENT, 00391 } mrl_metadata_type_t; 00392 00394 typedef enum mrl_metadata_cd_type { 00395 MRL_METADATA_CD_DISCID, 00396 MRL_METADATA_CD_TRACKS, 00397 } mrl_metadata_cd_type_t; 00398 00400 typedef enum mrl_metadata_dvd_type { 00401 MRL_METADATA_DVD_TITLE_CHAPTERS, 00402 MRL_METADATA_DVD_TITLE_ANGLES, 00403 MRL_METADATA_DVD_TITLE_LENGTH, 00404 } mrl_metadata_dvd_type_t; 00405 00407 typedef enum mrl_properties_type { 00408 MRL_PROPERTY_SEEKABLE, 00409 MRL_PROPERTY_LENGTH, 00410 MRL_PROPERTY_AUDIO_BITRATE, 00411 MRL_PROPERTY_AUDIO_BITS, 00412 MRL_PROPERTY_AUDIO_CHANNELS, 00413 MRL_PROPERTY_AUDIO_SAMPLERATE, 00414 MRL_PROPERTY_VIDEO_BITRATE, 00415 MRL_PROPERTY_VIDEO_WIDTH, 00416 MRL_PROPERTY_VIDEO_HEIGHT, 00417 MRL_PROPERTY_VIDEO_ASPECT, 00418 MRL_PROPERTY_VIDEO_CHANNELS, 00419 MRL_PROPERTY_VIDEO_STREAMS, 00420 MRL_PROPERTY_VIDEO_FRAMEDURATION, 00421 } mrl_properties_type_t; 00422 00423 #define PLAYER_VIDEO_ASPECT_RATIO_MULT 10000.0 /* *10000 */ 00424 #define PLAYER_VIDEO_FRAMEDURATION_RATIO_DIV 90000.0 /* 1/90000 sec */ 00425 00446 mrl_t *mrl_new (player_t *player, mrl_resource_t res, void *args); 00447 00456 void mrl_add_subtitle (player_t *player, mrl_t *mrl, char *subtitle); 00457 00469 void mrl_free (player_t *player, mrl_t *mrl); 00470 00479 mrl_type_t mrl_get_type (player_t *player, mrl_t *mrl); 00480 00489 mrl_resource_t mrl_get_resource (player_t *player, mrl_t *mrl); 00490 00506 char *mrl_get_metadata (player_t *player, mrl_t *mrl, mrl_metadata_type_t m); 00507 00524 char *mrl_get_metadata_cd_track (player_t *player, 00525 mrl_t *mrl, int trackid, uint32_t *length); 00526 00541 uint32_t mrl_get_metadata_cd (player_t *player, 00542 mrl_t *mrl, mrl_metadata_cd_type_t m); 00543 00559 uint32_t mrl_get_metadata_dvd_title (player_t *player, mrl_t *mrl, 00560 int titleid, mrl_metadata_dvd_type_t m); 00561 00577 char *mrl_get_metadata_dvd (player_t *player, mrl_t *mrl, uint8_t *titles); 00578 00601 int mrl_get_metadata_subtitle (player_t *player, mrl_t *mrl, int pos, 00602 uint32_t *id, char **name, char **lang); 00603 00617 uint32_t mrl_get_metadata_subtitle_nb (player_t *player, mrl_t *mrl); 00618 00641 int mrl_get_metadata_audio (player_t *player, mrl_t *mrl, int pos, 00642 uint32_t *id, char **name, char **lang); 00643 00657 uint32_t mrl_get_metadata_audio_nb (player_t *player, mrl_t *mrl); 00658 00671 uint32_t mrl_get_property (player_t *player, 00672 mrl_t *mrl, mrl_properties_type_t p); 00673 00686 char *mrl_get_audio_codec (player_t *player, mrl_t *mrl); 00687 00700 char *mrl_get_video_codec (player_t *player, mrl_t *mrl); 00701 00713 off_t mrl_get_size (player_t *player, mrl_t *mrl); 00714 00731 void mrl_video_snapshot (player_t *player, mrl_t *mrl, 00732 int pos, mrl_snapshot_t t, const char *dst); 00733 00738 /***************************************************************************/ 00739 /* */ 00740 /* Player to MRL connection */ 00741 /* */ 00742 /***************************************************************************/ 00743 00745 typedef enum player_mrl_add { 00746 PLAYER_MRL_ADD_NOW, 00747 PLAYER_MRL_ADD_QUEUE 00748 } player_mrl_add_t; 00749 00762 mrl_t *player_mrl_get_current (player_t *player); 00763 00774 void player_mrl_set (player_t *player, mrl_t *mrl); 00775 00784 void player_mrl_append (player_t *player, mrl_t *mrl, player_mrl_add_t when); 00785 00794 void player_mrl_remove (player_t *player); 00795 00804 void player_mrl_remove_all (player_t *player); 00805 00814 void player_mrl_previous (player_t *player); 00815 00824 void player_mrl_next (player_t *player); 00825 00835 void player_mrl_continue (player_t *player); 00836 00841 /***************************************************************************/ 00842 /* */ 00843 /* Player tuning & properties */ 00844 /* */ 00845 /***************************************************************************/ 00846 00848 typedef enum player_pb { 00849 PLAYER_PB_SINGLE = 0, 00850 PLAYER_PB_AUTO, 00851 } player_pb_t; 00852 00854 typedef enum player_loop { 00855 PLAYER_LOOP_DISABLE = 0, 00856 PLAYER_LOOP_ELEMENT, 00857 PLAYER_LOOP_PLAYLIST, 00858 } player_loop_t; 00859 00861 typedef enum player_framedrop { 00862 PLAYER_FRAMEDROP_DISABLE, 00863 PLAYER_FRAMEDROP_SOFT, 00864 PLAYER_FRAMEDROP_HARD, 00865 } player_framedrop_t; 00866 00868 typedef enum player_x_window_flags { 00869 PLAYER_X_WINDOW_AUTO = 0, 00870 PLAYER_X_WINDOW_X = (1 << 0), 00871 PLAYER_X_WINDOW_Y = (1 << 1), 00872 PLAYER_X_WINDOW_W = (1 << 2), 00873 PLAYER_X_WINDOW_H = (1 << 3), 00874 } player_x_window_flags_t; 00875 00891 int player_get_time_pos (player_t *player); 00892 00903 int player_get_percent_pos (player_t *player); 00904 00916 void player_set_playback (player_t *player, player_pb_t pb); 00917 00928 void player_set_loop (player_t *player, player_loop_t loop, int value); 00929 00939 void player_set_shuffle (player_t *player, int value); 00940 00951 void player_set_framedrop (player_t *player, player_framedrop_t fd); 00952 00968 void player_set_mouse_position (player_t *player, int x, int y); 00969 00987 void player_x_window_set_properties (player_t *player, 00988 int x, int y, int w, int h, int flags); 00989 01006 void player_osd_show_text (player_t *player, 01007 const char *text, int x, int y, int duration); 01008 01022 void player_osd_state (player_t *player, int value); 01023 01028 /***************************************************************************/ 01029 /* */ 01030 /* Playback related controls */ 01031 /* */ 01032 /***************************************************************************/ 01033 01035 typedef enum player_pb_state { 01036 PLAYER_PB_STATE_IDLE, 01037 PLAYER_PB_STATE_PAUSE, 01038 PLAYER_PB_STATE_PLAY, 01039 } player_pb_state_t; 01040 01042 typedef enum player_pb_seek { 01043 PLAYER_PB_SEEK_RELATIVE, 01044 PLAYER_PB_SEEK_ABSOLUTE, 01045 PLAYER_PB_SEEK_PERCENT, 01046 } player_pb_seek_t; 01047 01060 player_pb_state_t player_playback_get_state (player_t *player); 01061 01073 void player_playback_start (player_t *player); 01074 01084 void player_playback_stop (player_t *player); 01085 01095 void player_playback_pause (player_t *player); 01096 01108 void player_playback_seek (player_t *player, int value, player_pb_seek_t seek); 01109 01121 void player_playback_seek_chapter (player_t *player, int value, int absolute); 01122 01135 void player_playback_speed (player_t *player, float value); 01136 01141 /***************************************************************************/ 01142 /* */ 01143 /* Audio related controls */ 01144 /* */ 01145 /***************************************************************************/ 01146 01148 typedef enum player_mute { 01149 PLAYER_MUTE_UNKNOWN, 01150 PLAYER_MUTE_ON, 01151 PLAYER_MUTE_OFF 01152 } player_mute_t; 01153 01169 int player_audio_volume_get (player_t *player); 01170 01181 void player_audio_volume_set (player_t *player, int value); 01182 01193 player_mute_t player_audio_mute_get (player_t *player); 01194 01205 void player_audio_mute_set (player_t *player, player_mute_t value); 01206 01220 void player_audio_set_delay (player_t *player, int value, int absolute); 01221 01232 void player_audio_select (player_t *player, int audio_id); 01233 01245 void player_audio_prev (player_t *player); 01246 01258 void player_audio_next (player_t *player); 01259 01264 /***************************************************************************/ 01265 /* */ 01266 /* Video related controls */ 01267 /* */ 01268 /***************************************************************************/ 01269 01271 typedef enum player_video_aspect { 01272 PLAYER_VIDEO_ASPECT_BRIGHTNESS, 01273 PLAYER_VIDEO_ASPECT_CONTRAST, 01274 PLAYER_VIDEO_ASPECT_GAMMA, 01275 PLAYER_VIDEO_ASPECT_HUE, 01276 PLAYER_VIDEO_ASPECT_SATURATION, 01277 } player_video_aspect_t; 01278 01296 void player_video_set_aspect (player_t *player, player_video_aspect_t aspect, 01297 int8_t value, int absolute); 01298 01310 void player_video_set_panscan (player_t *player, int8_t value, int absolute); 01311 01322 void player_video_set_aspect_ratio (player_t *player, float value); 01323 01328 /***************************************************************************/ 01329 /* */ 01330 /* Subtitles related controls */ 01331 /* */ 01332 /***************************************************************************/ 01333 01335 typedef enum player_sub_alignment { 01336 PLAYER_SUB_ALIGNMENT_TOP, 01337 PLAYER_SUB_ALIGNMENT_CENTER, 01338 PLAYER_SUB_ALIGNMENT_BOTTOM, 01339 } player_sub_alignment_t; 01340 01359 void player_subtitle_set_delay (player_t *player, int value); 01360 01371 void player_subtitle_set_alignment (player_t *player, 01372 player_sub_alignment_t a); 01373 01384 void player_subtitle_set_position (player_t *player, int value); 01385 01396 void player_subtitle_set_visibility (player_t *player, int value); 01397 01409 void player_subtitle_scale (player_t *player, int value, int absolute); 01410 01421 void player_subtitle_select (player_t *player, int sub_id); 01422 01434 void player_subtitle_prev (player_t *player); 01435 01447 void player_subtitle_next (player_t *player); 01448 01453 /***************************************************************************/ 01454 /* */ 01455 /* DVD specific controls */ 01456 /* */ 01457 /***************************************************************************/ 01458 01460 typedef enum player_dvdnav { 01461 PLAYER_DVDNAV_UP, 01462 PLAYER_DVDNAV_DOWN, 01463 PLAYER_DVDNAV_RIGHT, 01464 PLAYER_DVDNAV_LEFT, 01465 PLAYER_DVDNAV_MENU, 01466 PLAYER_DVDNAV_SELECT, 01467 PLAYER_DVDNAV_PREVMENU, 01468 PLAYER_DVDNAV_MOUSECLICK, 01469 } player_dvdnav_t; 01470 01486 void player_dvd_nav (player_t *player, player_dvdnav_t value); 01487 01498 void player_dvd_angle_select (player_t *player, int angle); 01499 01511 void player_dvd_angle_prev (player_t *player); 01512 01524 void player_dvd_angle_next (player_t *player); 01525 01536 void player_dvd_title_select (player_t *player, int title); 01537 01549 void player_dvd_title_prev (player_t *player); 01550 01562 void player_dvd_title_next (player_t *player); 01563 01568 /***************************************************************************/ 01569 /* */ 01570 /* TV/DVB specific controls */ 01571 /* */ 01572 /***************************************************************************/ 01573 01589 void player_tv_channel_select (player_t *player, const char *channel); 01590 01602 void player_tv_channel_prev (player_t *player); 01603 01615 void player_tv_channel_next (player_t *player); 01616 01621 /***************************************************************************/ 01622 /* */ 01623 /* Radio specific controls */ 01624 /* */ 01625 /***************************************************************************/ 01626 01642 void player_radio_channel_select (player_t *player, const char *channel); 01643 01655 void player_radio_channel_prev (player_t *player); 01656 01668 void player_radio_channel_next (player_t *player); 01669 01674 /***************************************************************************/ 01675 /* */ 01676 /* VDR specific controls */ 01677 /* */ 01678 /***************************************************************************/ 01679 01681 typedef enum player_vdr { 01682 PLAYER_VDR_UP = 0, 01683 PLAYER_VDR_DOWN, 01684 PLAYER_VDR_LEFT, 01685 PLAYER_VDR_RIGHT, 01686 PLAYER_VDR_OK, 01687 PLAYER_VDR_BACK, 01688 PLAYER_VDR_CHANNELPLUS, 01689 PLAYER_VDR_CHANNELMINUS, 01690 PLAYER_VDR_RED, 01691 PLAYER_VDR_GREEN, 01692 PLAYER_VDR_YELLOW, 01693 PLAYER_VDR_BLUE, 01694 PLAYER_VDR_PLAY, 01695 PLAYER_VDR_PAUSE, 01696 PLAYER_VDR_STOP, 01697 PLAYER_VDR_RECORD, 01698 PLAYER_VDR_FASTFWD, 01699 PLAYER_VDR_FASTREW, 01700 PLAYER_VDR_POWER, 01701 PLAYER_VDR_SCHEDULE, 01702 PLAYER_VDR_CHANNELS, 01703 PLAYER_VDR_TIMERS, 01704 PLAYER_VDR_RECORDINGS, 01705 PLAYER_VDR_MENU, 01706 PLAYER_VDR_SETUP, 01707 PLAYER_VDR_COMMANDS, 01708 PLAYER_VDR_0, 01709 PLAYER_VDR_1, 01710 PLAYER_VDR_2, 01711 PLAYER_VDR_3, 01712 PLAYER_VDR_4, 01713 PLAYER_VDR_5, 01714 PLAYER_VDR_6, 01715 PLAYER_VDR_7, 01716 PLAYER_VDR_8, 01717 PLAYER_VDR_9, 01718 PLAYER_VDR_USER_1, 01719 PLAYER_VDR_USER_2, 01720 PLAYER_VDR_USER_3, 01721 PLAYER_VDR_USER_4, 01722 PLAYER_VDR_USER_5, 01723 PLAYER_VDR_USER_6, 01724 PLAYER_VDR_USER_7, 01725 PLAYER_VDR_USER_8, 01726 PLAYER_VDR_USER_9, 01727 PLAYER_VDR_VOLPLUS, 01728 PLAYER_VDR_VOLMINUS, 01729 PLAYER_VDR_MUTE, 01730 PLAYER_VDR_AUDIO, 01731 PLAYER_VDR_INFO, 01732 PLAYER_VDR_CHANNELPREVIOUS, 01733 PLAYER_VDR_NEXT, 01734 PLAYER_VDR_PREVIOUS, 01735 PLAYER_VDR_SUBTITLES, 01736 } player_vdr_t; 01737 01753 void player_vdr (player_t *player, player_vdr_t value); 01754 01759 /***************************************************************************/ 01760 /* */ 01761 /* Global libplayer functions */ 01762 /* */ 01763 /***************************************************************************/ 01764 01777 int libplayer_wrapper_enabled (player_type_t type); 01778 01787 int libplayer_wrapper_supported_res (player_type_t type, mrl_resource_t res); 01788 01793 #ifdef __cplusplus 01794 #if 0 /* avoid EMACS indent */ 01795 { 01796 #endif /* 0 */ 01797 } 01798 #endif /* __cplusplus */ 01799 01800 #endif /* PLAYER_H */