00001
00031
00032
00033
00034
00035
00036 #ifndef HAVE_XINE_H
00037 #define HAVE_XINE_H
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043 #include <inttypes.h>
00044 #include <unistd.h>
00045 #include <sys/types.h>
00046
00047 #ifndef XINE_COMPILE
00048 #include <xine/video_out.h>
00049 #endif
00050
00051 #ifndef DOC_HIDDEN
00052 #include <xine/events.h>
00053 #endif
00054
00059 #define XINE_SKINDIR "/usr/local/share/xine/skins"
00060
00070 #define XINE_BUILD_CC "gcc version 2.95.3 20010315 (release)"
00071
00074 #define XINE_BUILD_OS "Linux 2.4.8 i686"
00075
00078 #define XINE_BUILD_DATE "Mon 17 Sep 2001 00:59:15"
00079
00097 #define XINE_STOP 0
00098
00103 #define XINE_PLAY 1
00104
00109 #define XINE_QUIT 2
00110
00122 #define XINE_MAJOR_VERSION 0
00123
00127 #define XINE_MINOR_VERSION 9
00128
00132 #define XINE_SUB_VERSION 1
00133
00148 char *xine_get_str_version(void);
00149
00157 int xine_get_major_version(void);
00158
00166 int xine_get_minor_version(void);
00167
00175 int xine_get_sub_version(void);
00176
00187 int xine_check_version(int major, int minor, int sub);
00188
00205 #define VO_CAP_HUE 0x00000010
00206
00210 #define VO_CAP_SATURATION 0x00000020
00211
00215 #define VO_CAP_BRIGHTNESS 0x00000040
00216
00220 #define VO_CAP_CONTRAST 0x00000080
00221
00225 #define VO_CAP_COLORKEY 0x00000100
00226
00239 #define VO_PROP_INTERLACED 0
00240
00245 #define VO_PROP_ASPECT_RATIO 1
00246
00251 #define VO_PROP_HUE 2
00252
00257 #define VO_PROP_SATURATION 3
00258
00263 #define VO_PROP_CONTRAST 4
00264
00269 #define VO_PROP_BRIGHTNESS 5
00270
00275 #define VO_PROP_COLORKEY 6
00276
00281 #define VO_PROP_SOFT_DEINTERLACE 7
00282
00287 #define VO_NUM_PROPERTIES 8
00288
00302 #define ASPECT_AUTO 0
00303
00308 #define ASPECT_ANAMORPHIC 1
00309
00314 #define ASPECT_FULL 2
00315
00320 #define ASPECT_DVB 3
00321
00324 #ifdef DOC_HIDDEN
00325
00330 typedef void vo_frame_t;
00336 typedef void vo_overlay_t;
00337
00343 typedef struct vo_driver_s vo_driver_t;
00344
00349 struct vo_driver_s {
00354 uint32_t (*get_capabilities) (vo_driver_t *self);
00359 vo_frame_t* (*alloc_frame) (vo_driver_t *self);
00364 void (*update_frame_format) (vo_driver_t *self, vo_frame_t *img,
00365 uint32_t width, uint32_t height,
00366 int ratio_code, int format);
00370 void (*display_frame) (vo_driver_t *self, vo_frame_t *vo_img);
00374 void (*overlay_blend) (vo_driver_t *self, vo_frame_t *vo_img, vo_overlay_t *overlay);
00382 int (*get_property) (vo_driver_t *self, int property);
00387 int (*set_property) (vo_driver_t *self,
00388 int property, int value);
00393 void (*get_property_min_max) (vo_driver_t *self,
00394 int property, int *min, int *max);
00401 int (*gui_data_exchange) (vo_driver_t *self, int data_type,
00402 void *data);
00406 void (*exit) (vo_driver_t *self);
00407
00408 };
00409 #endif
00410
00427 typedef void xine_t;
00432 typedef void ao_driver_t;
00438 #ifdef DOC_HIDDEN
00439 typedef void cfg_data_t;
00445 typedef struct config_values_s config_values_t;
00451 struct config_values_s {
00455 char* (*lookup_str) (config_values_t *self,
00456 char *key, char *str_default);
00460 int (*lookup_int) (config_values_t *self,
00461 char *key, int n_default);
00465 void (*set_str) (config_values_t *self,
00466 char *key, char *value) ;
00470 void (*set_int) (config_values_t *self,
00471 char *key, int value) ;
00475 void (*save) (config_values_t *self);
00481 void (*read) (config_values_t *self, char *filename);
00485 cfg_data_t *data;
00486 };
00487 #endif
00488
00501 config_values_t *config_file_init (char *filename);
00502
00513 typedef void (*gui_stream_end_cb_t) (int nStatus);
00518 typedef char* (*gui_get_next_mrl_cb_t) (void);
00523 typedef void (*gui_branched_cb_t) (void);
00524
00539 #define DEMUX_DEFAULT_STRATEGY 0
00540
00545 #define DEMUX_REVERT_STRATEGY 1
00546
00551 #define DEMUX_CONTENT_STRATEGY 2
00552
00557 #define DEMUX_EXTENSION_STRATEGY 3
00558
00579 xine_t *xine_init (vo_driver_t *vo,
00580 ao_driver_t *ao,
00581 config_values_t *config,
00582 gui_stream_end_cb_t stream_end_cb,
00583 gui_get_next_mrl_cb_t get_next_mrl_cb,
00584 gui_branched_cb_t branched_cb);
00585
00595 void xine_exit (xine_t *self);
00596
00617 void xine_play (xine_t *self, char *MRL, int start_pos, int start_time);
00618
00629 void xine_set_speed (xine_t *self, int speed);
00630
00639 int xine_get_speed (xine_t *self);
00640
00646 #define SPEED_PAUSE 0
00647
00652 #define SPEED_SLOW_4 1
00653
00658 #define SPEED_SLOW_2 2
00659
00664 #define SPEED_NORMAL 4
00665
00670 #define SPEED_FAST_2 8
00671
00676 #define SPEED_FAST_4 16
00677
00687 void xine_set_av_offset (xine_t *self, int offset_pts);
00688
00697 int xine_get_av_offset (xine_t *self);
00698
00707 void xine_stop (xine_t *self);
00708
00717 int xine_eject(xine_t *self);
00718
00727 int xine_get_status (xine_t *self);
00728
00737 int xine_get_current_position (xine_t *self);
00738
00747 int xine_get_current_time (xine_t *self);
00748
00757 int xine_get_stream_length (xine_t *self);
00758
00767 int xine_get_audio_channel (xine_t *self);
00768
00777 void xine_select_audio_channel (xine_t *self, int channel);
00778
00787 int xine_get_spu_channel (xine_t *self);
00788
00797 void xine_select_spu_channel (xine_t *self, int channel);
00798
00815 char **xine_get_browsable_input_plugin_ids (xine_t *self) ;
00816
00829 #define mrl_unknown (0 << 0)
00830
00835 #define mrl_dvd (1 << 0)
00836
00841 #define mrl_vcd (1 << 1)
00842
00847 #define mrl_net (1 << 2)
00848
00853 #define mrl_rtp (1 << 3)
00854
00859 #define mrl_stdin (1 << 4)
00860
00865 #define mrl_file (1 << 5)
00866
00871 #define mrl_file_fifo (1 << 6)
00872
00877 #define mrl_file_chardev (1 << 7)
00878
00883 #define mrl_file_directory (1 << 8)
00884
00889 #define mrl_file_blockdev (1 << 9)
00890
00895 #define mrl_file_normal (1 << 10)
00896
00901 #define mrl_file_symlink (1 << 11)
00902
00907 #define mrl_file_sock (1 << 12)
00908
00913 #define mrl_file_exec (1 << 13)
00914
00919 #define mrl_file_backup (1 << 14)
00920
00925 #define mrl_file_hidden (1 << 15)
00926
00934 #define MRL_ZERO(m) { \
00935 if((m)) { \
00936 if((m)->origin) \
00937 free((m)->origin); \
00938 if((m)->mrl) \
00939 free((m)->mrl); \
00940 if((m)->link) \
00941 free((m)->link); \
00942 (m)->origin = NULL; \
00943 (m)->mrl = NULL; \
00944 (m)->link = NULL; \
00945 (m)->type = 0; \
00946 (m)->size = (off_t) 0; \
00947 } \
00948 }
00949
00955 #define MRL_DUPLICATE(s, d) { \
00956 assert((s) != NULL); \
00957 assert((d) != NULL); \
00958 \
00959 if((s)->origin) { \
00960 if((d)->origin) { \
00961 (d)->origin = (char *) realloc((d)->origin, strlen((s)->origin) + 1); \
00962 sprintf((d)->origin, "%s", (s)->origin); \
00963 } \
00964 else \
00965 (d)->origin = strdup((s)->origin); \
00966 } \
00967 else \
00968 (d)->origin = NULL; \
00969 \
00970 if((s)->mrl) { \
00971 if((d)->mrl) { \
00972 (d)->mrl = (char *) realloc((d)->mrl, strlen((s)->mrl) + 1); \
00973 sprintf((d)->mrl, "%s", (s)->mrl); \
00974 } \
00975 else \
00976 (d)->mrl = strdup((s)->mrl); \
00977 } \
00978 else \
00979 (d)->mrl = NULL; \
00980 \
00981 if((s)->link) { \
00982 if((d)->link) { \
00983 (d)->link = (char *) realloc((d)->link, strlen((s)->link) + 1); \
00984 sprintf((d)->link, "%s", (s)->link); \
00985 } \
00986 else \
00987 (d)->link = strdup((s)->link); \
00988 } \
00989 else \
00990 (d)->link = NULL; \
00991 \
00992 (d)->type = (s)->type; \
00993 (d)->size = (s)->size; \
00994 }
00995
01001 #define MRLS_DUPLICATE(s, d) { \
01002 int i = 0; \
01003 \
01004 assert((s) != NULL); \
01005 assert((d) != NULL); \
01006 \
01007 while((s) != NULL) { \
01008 d[i] = (mrl_t *) malloc(sizeof(mrl_t)); \
01009 MRL_DUPLICATE(s[i], d[i]); \
01010 i++; \
01011 } \
01012 }
01013
01019 typedef struct {
01021 char *origin;
01023 char *mrl;
01025 char *link;
01027 uint32_t type;
01029 off_t size;
01030 } mrl_t;
01031
01048 mrl_t **xine_get_browse_mrls (xine_t *self, char *plugin_id, char *start_mrl, int *num_mrls);
01049
01065 char **xine_get_autoplay_input_plugin_ids (xine_t *self) ;
01066
01077 char **xine_get_autoplay_mrls (xine_t *self, char *plugin_id, int *num_mrls);
01078
01092 #define XINE_PLUGINDIR "/usr/local/lib/xine/plugins"
01093
01104 #define VISUAL_TYPE_X11 1
01105
01110 #define VISUAL_TYPE_AA 2
01111
01116 #define VISUAL_TYPE_FB 3
01117
01122 #define VISUAL_TYPE_GTK 4
01123
01133 char **xine_list_video_output_plugins (int visual_type);
01134
01144 vo_driver_t *xine_load_video_output_plugin(config_values_t *config,
01145 char *id, int visual_type, void *visual);
01146
01152 char **xine_list_audio_output_plugins (void);
01153
01161 ao_driver_t *xine_load_audio_output_plugin(config_values_t *config, char *id);
01162
01171 #ifdef DOC_HIDDEN
01172
01176 typedef void event_t;
01177 #endif
01178
01183 typedef void (*event_listener_t) (xine_t *xine, event_t *event, void *data);
01184
01193 int xine_register_event_listener(xine_t *self, event_listener_t listener);
01194
01203 int xine_remove_event_listener(xine_t *self, event_listener_t listener);
01204
01213 void xine_send_event(xine_t *self, event_t *event, void *data);
01214
01219 #ifdef __cplusplus
01220 }
01221 #endif
01222
01223 #endif