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 DOC_HIDDEN
00048 #include <xine/events.h>
00049 #endif
00050
00055 #define XINE_SKINDIR "/usr/local/share/xine/skins"
00056
00066 #define XINE_BUILD_CC "gcc version 2.95.3 20010315 (release)"
00067
00070 #define XINE_BUILD_OS "Linux 2.4.5 i686"
00071
00074 #define XINE_BUILD_DATE "Thu 26 Jul 2001 09:17:10"
00075
00093 #define XINE_STOP 0
00094
00099 #define XINE_PLAY 1
00100
00105 #define XINE_PAUSE 2
00106
00111 #define XINE_QUIT 3
00112
00124 #define XINE_MAJOR_VERSION 0
00125
00129 #define XINE_MINOR_VERSION 5
00130
00134 #define XINE_SUB_VERSION 0
00135
00150 char *xine_get_str_version(void);
00151
00159 int xine_get_major_version(void);
00160
00168 int xine_get_minor_version(void);
00169
00177 int xine_get_sub_version(void);
00178
00189 int xine_check_version(int major, int minor, int sub);
00190
00207 #define VO_CAP_HUE 0x00000010
00208
00212 #define VO_CAP_SATURATION 0x00000020
00213
00217 #define VO_CAP_BRIGHTNESS 0x00000040
00218
00222 #define VO_CAP_CONTRAST 0x00000080
00223
00227 #define VO_CAP_COLORKEY 0x00000100
00228
00241 #define VO_PROP_INTERLACED 0
00242
00247 #define VO_PROP_ASPECT_RATIO 1
00248
00253 #define VO_PROP_HUE 2
00254
00259 #define VO_PROP_SATURATION 3
00260
00265 #define VO_PROP_CONTRAST 4
00266
00271 #define VO_PROP_BRIGHTNESS 5
00272
00277 #define VO_PROP_COLORKEY 6
00278
00283 #define VO_NUM_PROPERTIES 7
00284
00298 #define ASPECT_AUTO 0
00299
00304 #define ASPECT_ANAMORPHIC 1
00305
00310 #define ASPECT_FULL 2
00311
00316 #define ASPECT_DVB 3
00317
00325 typedef void vo_frame_t;
00331 typedef void vo_overlay_t;
00332
00338 typedef struct vo_driver_s vo_driver_t;
00339
00344 struct vo_driver_s {
00349 uint32_t (*get_capabilities) (vo_driver_t *self);
00354 vo_frame_t* (*alloc_frame) (vo_driver_t *self);
00359 void (*update_frame_format) (vo_driver_t *self, vo_frame_t *img,
00360 uint32_t width, uint32_t height,
00361 int ratio_code, int format);
00365 void (*display_frame) (vo_driver_t *self, vo_frame_t *vo_img);
00369 void (*overlay_blend) (vo_driver_t *self, vo_frame_t *vo_img, vo_overlay_t *overlay);
00377 int (*get_property) (vo_driver_t *self, int property);
00382 int (*set_property) (vo_driver_t *self,
00383 int property, int value);
00388 void (*get_property_min_max) (vo_driver_t *self,
00389 int property, int *min, int *max);
00396 int (*gui_data_exchange) (vo_driver_t *self, int data_type,
00397 void *data);
00401 void (*exit) (vo_driver_t *self);
00402
00403 };
00404
00422 typedef void xine_t;
00427 typedef void ao_functions_t;
00432 typedef void cfg_data_t;
00438 typedef struct config_values_s config_values_t;
00444 struct config_values_s {
00448 char* (*lookup_str) (config_values_t *self,
00449 char *key, char *str_default);
00453 int (*lookup_int) (config_values_t *self,
00454 char *key, int n_default);
00458 void (*set_str) (config_values_t *self,
00459 char *key, char *value) ;
00463 void (*set_int) (config_values_t *self,
00464 char *key, int value) ;
00468 void (*save) (config_values_t *self);
00474 void (*read) (config_values_t *self, char *filename);
00478 cfg_data_t *data;
00479 };
00480
00494 config_values_t *config_file_init (char *filename);
00495
00506 typedef void (*gui_stream_end_cb_t) (int nStatus);
00511 typedef char* (*gui_get_next_mrl_cb_t) (void);
00516 typedef void (*gui_branched_cb_t) (void);
00517
00532 #define DEMUX_DEFAULT_STRATEGY 0
00533
00538 #define DEMUX_REVERT_STRATEGY 1
00539
00544 #define DEMUX_CONTENT_STRATEGY 2
00545
00550 #define DEMUX_EXTENSION_STRATEGY 3
00551
00572 xine_t *xine_init (vo_driver_t *vo,
00573 ao_functions_t *ao,
00574 config_values_t *config,
00575 gui_stream_end_cb_t stream_end_cb,
00576 gui_get_next_mrl_cb_t get_next_mrl_cb,
00577 gui_branched_cb_t branched_cb);
00578
00588 void xine_exit (xine_t *self);
00589
00607 void xine_play (xine_t *self, char *MRL, int pos);
00608
00617 void xine_pause (xine_t *self);
00618
00627 void xine_stop (xine_t *self);
00628
00637 int xine_eject(xine_t *self);
00638
00647 int xine_get_status (xine_t *self);
00648
00657 int xine_get_current_position (xine_t *self);
00658
00667 int xine_get_audio_channel (xine_t *self);
00668
00677 void xine_select_audio_channel (xine_t *self, int channel);
00678
00687 int xine_get_spu_channel (xine_t *self);
00688
00697 void xine_select_spu_channel (xine_t *self, int channel);
00698
00715 char **xine_get_browsable_input_plugin_ids (xine_t *self) ;
00716
00729 #define mrl_unknown (0 << 0)
00730
00735 #define mrl_dvd (1 << 0)
00736
00741 #define mrl_vcd (1 << 1)
00742
00747 #define mrl_net (1 << 2)
00748
00753 #define mrl_rtp (1 << 3)
00754
00759 #define mrl_stdin (1 << 4)
00760
00765 #define mrl_file (1 << 5)
00766
00771 #define mrl_file_fifo (1 << 6)
00772
00777 #define mrl_file_chardev (1 << 7)
00778
00783 #define mrl_file_directory (1 << 8)
00784
00789 #define mrl_file_blockdev (1 << 9)
00790
00795 #define mrl_file_normal (1 << 10)
00796
00801 #define mrl_file_symlink (1 << 11)
00802
00807 #define mrl_file_sock (1 << 12)
00808
00813 #define mrl_file_exec (1 << 13)
00814
00819 #define mrl_file_backup (1 << 14)
00820
00825 #define mrl_file_hidden (1 << 15)
00826
00834 #define MRL_ZERO(m) { \
00835 if((m)) { \
00836 if((m)->origin) \
00837 free((m)->origin); \
00838 if((m)->mrl) \
00839 free((m)->mrl); \
00840 if((m)->link) \
00841 free((m)->link); \
00842 (m)->origin = NULL; \
00843 (m)->mrl = NULL; \
00844 (m)->link = NULL; \
00845 (m)->type = 0; \
00846 (m)->size = (off_t) 0; \
00847 } \
00848 }
00849
00855 #define MRL_DUPLICATE(s, d) { \
00856 assert((s) != NULL); \
00857 assert((d) != NULL); \
00858 \
00859 if((s)->origin) { \
00860 if((d)->origin) { \
00861 (d)->origin = (char *) realloc((d)->origin, strlen((s)->origin) + 1); \
00862 sprintf((d)->origin, "%s", (s)->origin); \
00863 } \
00864 else \
00865 (d)->origin = strdup((s)->origin); \
00866 } \
00867 else \
00868 (d)->origin = NULL; \
00869 \
00870 if((s)->mrl) { \
00871 if((d)->mrl) { \
00872 (d)->mrl = (char *) realloc((d)->mrl, strlen((s)->mrl) + 1); \
00873 sprintf((d)->mrl, "%s", (s)->mrl); \
00874 } \
00875 else \
00876 (d)->mrl = strdup((s)->mrl); \
00877 } \
00878 else \
00879 (d)->mrl = NULL; \
00880 \
00881 if((s)->link) { \
00882 if((d)->link) { \
00883 (d)->link = (char *) realloc((d)->link, strlen((s)->link) + 1); \
00884 sprintf((d)->link, "%s", (s)->link); \
00885 } \
00886 else \
00887 (d)->link = strdup((s)->link); \
00888 } \
00889 else \
00890 (d)->link = NULL; \
00891 \
00892 (d)->type = (s)->type; \
00893 (d)->size = (s)->size; \
00894 }
00895
00901 #define MRLS_DUPLICATE(s, d) { \
00902 int i = 0; \
00903 \
00904 assert((s) != NULL); \
00905 assert((d) != NULL); \
00906 \
00907 while((s) != NULL) { \
00908 d[i] = (mrl_t *) malloc(sizeof(mrl_t)); \
00909 MRL_DUPLICATE(s[i], d[i]); \
00910 i++; \
00911 } \
00912 }
00913
00919 typedef struct {
00921 char *origin;
00923 char *mrl;
00925 char *link;
00927 uint32_t type;
00929 off_t size;
00930 } mrl_t;
00931
00949 mrl_t **xine_get_browse_mrls (xine_t *self, char *plugin_id, char *start_mrl, int *num_mrls);
00950
00966 char **xine_get_autoplay_input_plugin_ids (xine_t *self) ;
00967
00978 char **xine_get_autoplay_mrls (xine_t *self, char *plugin_id, int *num_mrls);
00979
00993 #define XINE_PLUGINDIR "/usr/local/lib/xine/plugins"
00994
01005 #define VISUAL_TYPE_X11 1
01006
01011 #define VISUAL_TYPE_AA 2
01012
01017 #define VISUAL_TYPE_FB 3
01018
01023 #define VISUAL_TYPE_GTK 4
01024
01034 char **xine_list_video_output_plugins (int visual_type);
01035
01045 vo_driver_t *xine_load_video_output_plugin(config_values_t *config,
01046 char *id, int visual_type, void *visual);
01047
01053 char **xine_list_audio_output_plugins (void);
01054
01062 ao_functions_t *xine_load_audio_output_plugin(config_values_t *config, char *id);
01063
01073 #ifdef DOC_HIDDEN
01074
01078 typedef void event_t;
01079 #endif
01080
01085 typedef void (*event_listener_t) (xine_t *xine, event_t *event, void *data);
01086
01095 int xine_register_event_listener(xine_t *self, event_listener_t listener);
01096
01105 int xine_remove_event_listener(xine_t *self, event_listener_t listener);
01106
01115 void xine_send_event(xine_t *self, event_t *event, void *data);
01116
01121 #ifdef __cplusplus
01122 }
01123 #endif
01124
01125 #endif