diff options
Diffstat (limited to 'include/xine.h.tmpl.in')
-rw-r--r-- | include/xine.h.tmpl.in | 2102 |
1 files changed, 0 insertions, 2102 deletions
diff --git a/include/xine.h.tmpl.in b/include/xine.h.tmpl.in deleted file mode 100644 index e162c7284..000000000 --- a/include/xine.h.tmpl.in +++ /dev/null @@ -1,2102 +0,0 @@ -/** - * \file xine.h - * \author Guenter Bartsch <guenter@users.sourceforge.net> - * \author Siegfried Langauf <siggi@users.sourceforge.net> - * \author Daniel Caujolle-Bert <f1rmb@users.sourceforge.net> - * \date 16/09/2001 - * - * API of XINE library. - \verbatim - Copyright (C) 2000-2001 the xine project - - This file is part of xine, a unix video player. - - xine is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - xine is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - - \endverbatim - */ -/* - * $Id: xine.h.tmpl.in,v 1.107 2002/08/15 03:12:24 miguelfreitas Exp $ - * - */ - -#ifndef HAVE_XINE_H -#define HAVE_XINE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <inttypes.h> -#include <unistd.h> -#include <sys/types.h> - -#include <xine/events.h> - -/** - * \def XINE_SKINDIR - * Skin file location - */ -#define XINE_SKINDIR "@XINE_SKINPATH@" - -/** - * \def XINE_LOGO_FILE - * Default logo file. - */ -#define XINE_LOGO_FILE "file://@XINE_SKINPATH@/xine_logo.mpv" - - /** - * \defgroup build_info Build informations - * @{ - */ - -/** - * \def XINE_BUILD_CC - * Compiler used to build xine-lib - */ -#define XINE_BUILD_CC "@XINE_BUILD_CC@" -/** \def XINE_BUILD_OS - * OS used to build xine-lib - */ -#define XINE_BUILD_OS "@XINE_BUILD_OS@" -/** \def XINE_BUILD_DATE - * Build time - */ -#define XINE_BUILD_DATE "@XINE_BUILD_DATE@" - - /** @} end of build_info */ - - /** - * \defgroup xine_api API functions - * @{ - */ - - /** - * \defgroup status_group Player status constants - * @{ - */ - -/** - * \def XINE_STOP - * Stop status. - * \sa xine_get_status() - */ -#define XINE_STOP 0 -/** - * \def XINE_PLAY - * Play status. - * \sa xine_get_status() - */ -#define XINE_PLAY 1 -/** - * \def XINE_QUIT - * Quit status. - * \sa xine_get_status() - */ -#define XINE_QUIT 2 - - /** @} end of status_group */ - - /** - * \defgroup version_group Version constants - * @{ - */ - -/** - * \def XINE_MAJOR_VERSION - * Major version constant. - */ -#define XINE_MAJOR_VERSION @XINE_MAJOR@ -/** - * \def XINE_MINOR_VERSION - * Minor version constant. - */ -#define XINE_MINOR_VERSION @XINE_MINOR@ -/** - * \def XINE_SUB_VERSION - * Sub version constant. - */ -#define XINE_SUB_VERSION @XINE_SUB@ - - /** @} end of version_group */ - - /** - * \defgroup xine_version Version functions - * @{ - */ - -/** - * \fn char *xine_get_str_version(void); - * \brief return string version, like "0.5.0" - * \param None. - * \return string version - * - */ -char *xine_get_str_version(void); - -/** - * \fn int xine_get_major_version(void); - * \brief return version information - * \param None. - * \return major version. - * - */ -int xine_get_major_version(void); - -/** - * \fn int xine_get_minor_version(void); - * \brief return version information - * \param None. - * \return minor version. - * - */ -int xine_get_minor_version(void); - -/** - * \fn int xine_get_sub_version(void); - * \brief return version information - * \param None. - * \return sub version. - * - */ -int xine_get_sub_version(void); - -/** - * \fn int xine_check_version(int major, int minor, int sub); - * \brief check minimal version. - * \param major major version wanted. - * \param minorr minor version wanted. - * \param sub sub version wanted. - * \return 1 if installed version is >= to desired, otherwise 0 - * - * Compare version numbers with xine installed version. - */ -int xine_check_version(int major, int minor, int sub); - - /** @} end of xine_version */ - - /** - * \defgroup video_group Video. - * @{ - */ - - /** - * - * \defgroup video_cap video driver capabilities - * @{ - */ -/** - * \def VO_CAP_COPIES_IMAGE - * driver copies image (i.e. converts it to rgb buffers - * in the private fields of image buffer) - */ -#define VO_CAP_COPIES_IMAGE 0x00000001 -/** - * \def VO_CAP_YV12 - * driver can handle YUV 4:2:0 pictures - */ -#define VO_CAP_YV12 0x00000002 -/** - * \def VO_CAP_YUY2 - * driver can handle YUY2 pictures - */ -#define VO_CAP_YUY2 0x00000004 -/** - * \def VO_CAP_HUE - * Driver can set HUE value. - */ -#define VO_CAP_HUE 0x00000010 -/** - * \def VO_CAP_SATURATION - * Driver can set SATURATION value. - */ -#define VO_CAP_SATURATION 0x00000020 -/** - * \def VO_CAP_BRIGHTNESS - * Driver can set BRIGHTNESS value. - */ -#define VO_CAP_BRIGHTNESS 0x00000040 -/** - * \def VO_CAP_CONTRAST - * Driver can set CONTRAST value. - */ -#define VO_CAP_CONTRAST 0x00000080 -/** - * \def VO_CAP_COLORKEY - * Driver can set COLORKEY value. - */ -#define VO_CAP_COLORKEY 0x00000100 -/** - * \def VO_CAP_AUTOPAINT_COLORKEY - * Driver can set AUTOPAINT_COLORKEY value. - */ -#define VO_CAP_AUTOPAINT_COLORKEY 0x00000400 - - /** @} end of video_cap */ - - /** - * - * \defgroup video_prop Constants for the get/set properties functions. - * @{ - */ -/** - * \def VO_PROP_INTERLACED - * Interleave property. - * \sa vo_driver_t - */ -#define VO_PROP_INTERLACED 0 -/** - * \def VO_PROP_ASPECT_RATIO - * Aspect ratio property. - * \sa vo_driver_t, video_ratio - */ -#define VO_PROP_ASPECT_RATIO 1 -/** - * \def VO_PROP_HUE - * Hue property. - * \sa vo_driver_t - */ -#define VO_PROP_HUE 2 -/** - * \def VO_PROP_SATURATION - * Saturation property. - * \sa vo_driver_t - */ -#define VO_PROP_SATURATION 3 -/** - * \def VO_PROP_CONTRAST - * Contrast property. - * \sa vo_driver_t - */ -#define VO_PROP_CONTRAST 4 -/** - * \def VO_PROP_BRIGHTNESS - * Brightness property. - * \sa vo_driver_t - */ -#define VO_PROP_BRIGHTNESS 5 -/** - * \def VO_PROP_COLORKEY - * Colorkey property. - * \sa vo_driver_t - */ -#define VO_PROP_COLORKEY 6 -/** - * \def VO_PROP_AUTOPAINT_COLORKEY - * Autopaint colorkey property. - * \sa vo_driver_t - */ -#define VO_PROP_AUTOPAINT_COLORKEY 7 -/** - * \def VO_PROP_ZOOM_X - * zoom factor (in percent). - * \sa vo_driver_t - */ -#define VO_PROP_ZOOM_X 8 -/** - * \def VO_PROP_PAN_SCAN - * switch pan&scan on/off - * \sa vo_driver_t - */ -#define VO_PROP_PAN_SCAN 9 -/** - * \def VO_PROP_TVMODE - * Change TVmode property. - * \sa vo_driver_t - */ -#define VO_PROP_TVMODE 10 -/** - * \def VO_PROP_MAX_NUM_FRAMES - * ask video driver how many frames it can allocate - * \sa vo_driver_t - */ -#define VO_PROP_MAX_NUM_FRAMES 11 -/** - * \def VO_PROP_VO_TYPE - * ask video driver what type it is. E.g. dxr3 - * \sa vo_driver_t - */ -#define VO_PROP_VO_TYPE 12 - -/* VO_PROP_VO_TYPES */ -#define VO_TYPE_UNKNOWN 0 -#define VO_TYPE_DXR3 1 - -/** - * \def VO_PROP_ZOOM_Y - * zoom factor (in percent). - * \sa vo_driver_t - */ -#define VO_PROP_ZOOM_Y 13 - -/** - * \def VO_NUM_PROPERTIES - * Number of available properties property. - * \sa vo_driver_t - */ -#define VO_NUM_PROPERTIES 14 - - /** @} end of video_prop */ - - /** - * \defgroup video_zoom Zoom related constants - * \sa VO_PROP_ASPECT_RATIO, vo_driver_t - * @{ - */ -/** - * \def VO_ZOOM_STEP - * Step for the zoom feature - * \sa VO_PROP_ZOOM_X - */ -#define VO_ZOOM_STEP 100 -/** - * \def VO_ZOOM_MAX - * Max value for zoom properties - * \sa VO_PROP_ZOOM_X - */ -#define VO_ZOOM_MAX 400 -/** - * \def VO_ZOOM_MIN - * Min value for zoom properties - * \sa VO_PROP_ZOOM_X - */ -#define VO_ZOOM_MIN -85 - - /** @} end of video_zoom */ - - /** - * \defgroup video_ratio Possible ratios for the VO_PROP_ASPECT_RATIO call - * \sa VO_PROP_ASPECT_RATIO, vo_driver_t - * @{ - */ - -/** - * \def ASPECT_AUTO - * Let video driver guessing aspect ratio. - * \sa VO_PROP_ASPECT_RATIO - */ -#define ASPECT_AUTO 0 -/** - * \def ASPECT_ANAMORPHIC - * Set aspect ration to 16:9. - * \sa VO_PROP_ASPECT_RATIO - */ -#define ASPECT_ANAMORPHIC 1 -/** - * \def ASPECT_FULL - * Set aspect ration to 4:3. - * \sa VO_PROP_ASPECT_RATIO - */ -#define ASPECT_FULL 2 -/** - * \def ASPECT_DVB - * Set aspect ration to 1:2. - * \sa VO_PROP_ASPECT_RATIO - */ -#define ASPECT_DVB 3 -/** - * \def ASPECT_SQUARE - * Set aspect ration to square pels. - * \sa VO_PROP_ASPECT_RATIO - */ -#define ASPECT_SQUARE 4 -/** - * \def NUM_ASPECT_RATIOS - * Number of aspect ratios supported for VO_PROP_ASPECT_RATIO property. - * \sa VO_PROP_ASPECT_RATIO - */ -#define NUM_ASPECT_RATIOS 5 - - /** @} end of video_ratio */ - -/** - * \def OVL_PALETTE_SIZE - * The number of colors in the overlay palette. - */ -#define OVL_PALETTE_SIZE 256 - -/** - * \struct vo_frame_t - * Opaque data type. - * \sa vo_driver_t - */ -typedef void vo_frame_t; -/** - * \struct vo_overlay_t - * Opaque data type. - * \sa vo_driver_t - */ -typedef void vo_overlay_t; - -typedef struct vo_info_s vo_info_t; - -struct vo_info_s { - - int interface_version; /* plugin interface version */ - char *id; /* id of this plugin */ - char *description; /* human-readable description of this plugin */ - int visual_type; /* visual type supported by this plugin */ - int priority; /* priority of this plugin for auto-probing */ - -}; - -/** - * \struct vo_driver_t - * \brief Data type of structure vo_driver_s. - * \sa structure vo_driver_s. - */ -typedef struct vo_driver_s vo_driver_t; - -/** - * \struct vo_driver_s - * Video driver fonctions. - */ -struct vo_driver_s { - /** - * Get capabilities of video driver. - * \sa video_cap - */ - uint32_t (*get_capabilities) (vo_driver_t *self); - /** - * Allocate an vo_frame_t struct, - * the driver must supply the copy, field and dispose functions - */ - vo_frame_t* (*alloc_frame) (vo_driver_t *self); - /** - * Check if the given image fullfills the format specified - * (re-)allocate memory if necessary - */ - void (*update_frame_format) (vo_driver_t *self, vo_frame_t *img, - uint32_t width, uint32_t height, - int ratio_code, int format); - /** - * Display a given frame - */ - void (*display_frame) (vo_driver_t *self, vo_frame_t *vo_img); - /** - * Overlay functions - */ - void (*overlay_begin) (vo_driver_t *self, vo_frame_t *vo_img, int changed); - void (*overlay_blend) (vo_driver_t *self, vo_frame_t *vo_img, vo_overlay_t *overlay); - void (*overlay_end) (vo_driver_t *self, vo_frame_t *vo_img); - /** - * These can be used by the gui directly: - */ - /** - * Get value if property. - * \sa video_prop - */ - int (*get_property) (vo_driver_t *self, int property); - /** - * Set value of property. - * \sa video_prop - */ - int (*set_property) (vo_driver_t *self, - int property, int value); - /** - * Get min/max values of property. - * \sa video_prop - */ - void (*get_property_min_max) (vo_driver_t *self, - int property, int *min, int *max); - /** - * General purpose communication channel between gui and driver - * - * this should be used to propagate events, display data, window sizes - * etc. to the driver - */ - int (*gui_data_exchange) (vo_driver_t *self, int data_type, - void *data); - /** - * Leaving video driver. - */ - void (*exit) (vo_driver_t *self); - /** - * Check if a redraw is needed (due to resize) - */ - int (*redraw_needed) (vo_driver_t *self); - -}; - /** @} end of video_group */ - - /** - * \defgroup xine_init Init functions - * @{ - */ - - /** - * \defgroup config_group Configuration structure type. - * @{ - */ - -/** - * \struct xine_t - * Opaque data type. - * \sa xine_load_audio_output_plugin - */ -typedef void xine_t; -/** - * \struct ao_driver_t - * Opaque data type. - */ -typedef void ao_driver_t; - -typedef struct cfg_entry_s cfg_entry_t; -typedef struct config_values_s config_values_t; -typedef void (*config_cb_t) (void *, cfg_entry_t *); - -struct cfg_entry_s { - cfg_entry_t *next; - config_values_t *config; - - char *key; - int type; - - /* type unknown */ - char *unknown_value; - - /* type string */ - char *str_value; - char *str_default; - char *str_sticky; - - /* common to range, enum, num, bool: */ - - int num_value; - int num_default; - - /* type range specific: */ - int range_min; - int range_max; - - /* type enum specific: */ - char **enum_values; - - /* help info for the user */ - char *description; - char *help; - - /* callback function and data for live changeable values */ - config_cb_t callback; - void *callback_data; -}; - -/* - * config entry data types - */ - -#define CONFIG_TYPE_UNKNOWN 0 -#define CONFIG_TYPE_RANGE 1 -#define CONFIG_TYPE_STRING 2 -#define CONFIG_TYPE_ENUM 3 -#define CONFIG_TYPE_NUM 4 -#define CONFIG_TYPE_BOOL 5 - -struct config_values_s { - - /* - * register config values - * - * these functions return the current value of the - * registered item, i.e. the default value if it was - * not found in the config file or the current value - * from the config file otherwise - */ - - char* (*register_string) (config_values_t *self, - char *key, - char *def_value, - char *description, - char *help, - config_cb_t changed_cb, - void *cb_data); - - int (*register_range) (config_values_t *self, - char *key, - int def_value, - int min, int max, - char *description, - char *help, - config_cb_t changed_cb, - void *cb_data); - - int (*register_enum) (config_values_t *self, - char *key, - int def_value, - char **values, - char *description, - char *help, - config_cb_t changed_cb, - void *cb_data); - - int (*register_num) (config_values_t *self, - char *key, - int def_value, - char *description, - char *help, - config_cb_t changed_cb, - void *cb_data); - - int (*register_bool) (config_values_t *self, - char *key, - int def_value, - char *description, - char *help, - config_cb_t changed_cb, - void *cb_data); - - /* convenience function to update range, enum, num and bool values */ - void (*update_num) (config_values_t *self, - char *key, int value); - - /* convenience function to update string values */ - void (*update_string) (config_values_t *self, - char *key, char *value); - - /* small utility function for enum handling */ - int (*parse_enum) (char *str, char **values); - - /* - * lookup config entries - * - * remember to call the changed_cb if it exists - * and you changed the value of this item - */ - - cfg_entry_t* (*lookup_entry) (config_values_t *self, - char *key); - - /* - * write config file to disk - */ - void (*save) (config_values_t *self); - - /* - * read config file from disk, overriding values in memory - */ - void (*read) (config_values_t *self, char *filename); - - /* - * free memory resources - */ - void (*dispose) (config_values_t *self); - - /* - * unregister callback function - */ - void (*unregister_callback) (config_values_t *self, - char *key); - - /* - * config values are stored here: - */ - cfg_entry_t *first, *last; -}; - - /** @} end of config_group */ - - -/** - * \fn config_values_t *xine_config_file_init (char *filename) - * \brief Configuration file initialisation. - * \param filename Pathname of configuration file. - * \return Current config - * \sa config_values_t - * \warning This function should be called at least one time before xine_init() call. - * - * Read config file and init a config object of config_values_t type (if it exists) - */ -config_values_t *xine_config_file_init (char *filename); - - /** - * \defgroup ui_callbacks UI communication callbacks. - * @{ - * - */ - - /** @} end of ui_callbacks */ - - /** - * \defgroup demux_strategy Possible demuxer guessing strategy. - * "demux_strategy" should be set to one of these value in configuration file ( #see @ref config_group) before xine_init() call. - * \sa config_values_t - * @{ - */ - -/** - * \def DEMUX_DEFAULT_STRATEGY - * Recognize by content then by extension. - * \sa config_values_t - */ -#define DEMUX_DEFAULT_STRATEGY 0 -/** - * \def DEMUX_REVERT_STRATEGY - * Recognize by extension then by content. - * \sa config_values_t - */ -#define DEMUX_REVERT_STRATEGY 1 -/** - * \def DEMUX_CONTENT_STRATEGY - * Recognize by content only. - * \sa config_values_t - */ -#define DEMUX_CONTENT_STRATEGY 2 -/** - * \def DEMUX_EXTENSION_STRATEGY - * Recognize by extension only. - * \sa config_values_t - */ -#define DEMUX_EXTENSION_STRATEGY 3 - - /** @} end of demux_strategy */ - -/** - * \fn xine_t *xine_init (vo_driver_t *vo, ao_driver_t *ao, config_values_t *config, void *user_data); - * \brief Initialisation of xine. - * \param vo video driver ( #see @ref xine_load_video_output_plugin() ) - * \param ao audio driver ( #see @ref xine_load_audio_output_plugin() ) - * \param config current configuration ( #see xine_config_file_init() ) - * \return Current xine engine configuration - * \sa vo_driver_t, ao_driver_t, config_values_t, gui_stream_end_cb_t, gui_get_next_mrl_cb_t, gui_branched_cb_t - * \warning This function should be called before any other xine_*() function. - * - * Init of xine. It should called once at startup. - * all callbacks may be NULL if ui is not interested in them for whatever reason - * ao may be NULL for no audio playback - * - */ -xine_t *xine_init (vo_driver_t *vo, - ao_driver_t *ao, - config_values_t *config); - -/** - * \fn void xine_exit (xine_t *self) - * \brief De-initialisation of xine - * \param self Current xine engine configuration. - * \return Nothing - * \sa xine_init() - * - * De-init xine engine. - */ -void xine_exit (xine_t *self); - - /** @} end of xine_init */ - - /** - * \defgroup xine_management Engine management - * @{ - */ -/** - * \fn void xine_play (xine_t *self, char *MRL, int start_pos, int start_time) - * \brief Start to play a stream - * \param self Current xine engine configuration ( #see xine_init() ) - * \param MRL Media Resource Location to open - * \param start_pos position in input source (0..65535) - * \param start_time position measured in seconds from stream start - * \return 1 => OK, 0=>err (use xine_get_error for details) - * - * Open a stream and play it. If both start position parameters - * are !=0 start_pos will be used - * for non-seekable streams both values will be ignored - * - */ -int xine_play (xine_t *self, char *MRL, int start_pos, int start_time); - -/** - * \fn void xine_set_speed (xine_t *self, int speed) - * \brief Set playback speed. - * \param self Current xine engine configuration ( #see xine_init() ) - * \param speed Desired playback speed ( #see SPEED_PAUSE, SPEED_SLOW_4, SPEED_SLOW_2, SPEED_NORMAL, SPEED_FAST_2, SPEED_FAST_4 ) - * \return Nothing - * - * Set the playback speed to desired speed, according of SPEED_x constant. - * - */ -void xine_set_speed (xine_t *self, int speed); - -/** - * \fn xine_get_speed (xine_t *self) - * \brief Get the playback speed. - * \param self Current xine engine configuration ( #see xine_init() ) - * \return speed value ( #see SPEED_PAUSE, SPEED_SLOW_4, SPEED_SLOW_2, SPEED_NORMAL, SPEED_FAST_2, SPEED_FAST_4 ) - * - * Get the current speed playback. Possible values are SPEED_PAUSE, SPEED_SLOW_4, SPEED_SLOW_2, SPEED_NORMAL, SPEED_FAST_2, SPEED_FAST_4. - */ -int xine_get_speed (xine_t *self); - -/** - * \def SPEED_PAUSE - * Playback pause. - * \sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_PAUSE 0 -/** - * \def SPEED_SLOW_4 - * Playback at 25% speed. - *\sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_SLOW_4 1 -/** - * \def SPEED_SLOW_2 - * Playback at 50% speed. - * \sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_SLOW_2 2 -/** - * \def SPEED_NORMAL - * Playback at 100% speed. - * \sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_NORMAL 4 -/** - * \def SPEED_FAST_2 - * Playback at 200% speed. - * \sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_FAST_2 8 -/** - * \def SPEED_FAST_4 - * Playback at 400% speed. - * \sa xine_set_speed(), xine_get_speed() - */ -#define SPEED_FAST_4 16 - -/** - * \fn void xine_set_av_offset (xine_t *self, int offset_pts) - * \brief Set audio/video sync. - * \param self Current xine engine configuration ( #see xine_init() ) - * \param offset_pts New pts. - * \return Nothing - * - * Set audio/video sync offset, according to offset_pts value ( #see xine_get_av_offset() ). - */ -void xine_set_av_offset (xine_t *self, int offset_pts); - -/** - * \fn int xine_get_av_offset (xine_t *self) - * \brief Get audio/video sync. - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Current audio/video offset. - * - * Return the current audio/video sync offset ( #see xine_set_av_offset() ). - */ -int xine_get_av_offset (xine_t *self); - -/** - * \fn void xine_stop (xine_t *self) - * \brief Stop playing - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Nothing - * - * Stop the playback. - */ -void xine_stop (xine_t *self); - -/** - * \fn int xine_eject(xine_t *self) - * \brief Eject media - * \param self Current xine engine configuration ( #see xine_init() ) - * \return 1 on success, 0 on failure. - * - * Tell current input plugin to eject media. - */ -int xine_eject(xine_t *self); - -/** - * \fn int xine_get_status (xine_t *self) - * \brief Get current xine status - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Current status ( #see @ref status_group ) - * - * Return the current state of xine engine. - */ -int xine_get_status (xine_t *self); - -/** - * \fn int xine_get_current_position (xine_t *self) - * \brief Get current position - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Current position ( 0..65535 ) - * - * Get current position in stream. - */ -int xine_get_current_position (xine_t *self); - -/** - * \fn int xine_get_current_time (xine_t *self) - * \brief get current pos in seconds - * \param self Current xine engine configuration ( #see xine_init() ) - * \return current position measured in seconds from the beginning of the stream - * - * get current position measured in seconds from the beginning of the stream - */ -int xine_get_current_time (xine_t *self); - -/** - * \fn int xine_get_stream_length (xine_t *self); - * \brief estimate length of input stream in seconds - * \param self Current xine engine configuration ( #see xine_init() ) - * \return length of input stream in seconds or 0 if stream is not seekable - * - * estimate length of input stream in seconds - */ -int xine_get_stream_length (xine_t *self); - -/** - * \fn void xine_select_audio_channel (xine_t *self, int channel) - * \brief Set logical audio channel (-1 => auto) - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Nothing - * - * Set desired audio channel. - */ -void xine_select_audio_channel (xine_t *self, int channel); - -/** - * \fn int xine_get_audio_selection (xine_t *self) - * \brief Get current logical audio channel - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Current audio channel - * - * Get current audio channel. - */ -int xine_get_audio_selection (xine_t *self); - -/** - * \fn void xine_get_audio_lang (xine_t *self, char *str) - * \brief try to find out current audio language - * \param self current xine engine configuration ( #see xine_init() ) - * \param str current audio language or number - * - * try to find out current audio language - */ -void xine_get_audio_lang (xine_t *self, char *str); - -/** - * \fn int xine_get_spu_channel (xine_t *self) - * \brief get current sub-title channel. - * \param self current xine engine configuration ( #see xine_init() ) - * \return current sub-title channel - * - * Get current sub-title channel. - */ -int xine_get_spu_channel (xine_t *self); - -/** - * \fn void xine_get_spu_lang (xine_t *self, char *str) - * \brief try to find out current spu language - * \param self current xine engine configuration ( #see xine_init() ) - * \param str current spu language or number - * - * try to find out current spu language - */ -void xine_get_spu_lang (xine_t *self, char *str); - -/** - * \fn int xine_is_stream_seekable (xine_t *self) - * \brief check if the stream is seekable (at the moment) - * \param self current xine engine configuration ( #see xine_init() ) - * \return seekble boolean or -1 is there is not plugin selected. - * - * check if the stream is seekable (at the moment). - * this state may change during playback - */ -int xine_is_stream_seekable (xine_t *self); - -/** - * \fn void xine_select_spu_channel (xine_t *self, int channel) - * \brief Set sub-title channel - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Nothing - * - * Set desired sub-title channel. - */ -void xine_select_spu_channel (xine_t *self, int channel); - - /** @} end of xine_management */ - - /** - * \defgroup input_group Input. - * @{ - */ - - /** - * - * \defgroup input_cap input plugin capabilities - * @{ - */ - -/** - * \def INPUT_CAP_* - * bits to define various input plugin capabilities - * \sa xine_get_input_plugin_capabilities() - */ -#define INPUT_CAP_NOCAP 0x00000000 -#define INPUT_CAP_SEEKABLE 0x00000001 -#define INPUT_CAP_BLOCK 0x00000002 -#define INPUT_CAP_AUTOPLAY 0x00000004 -#define INPUT_CAP_GET_DIR 0x00000008 -#define INPUT_CAP_BROWSABLE 0x00000010 -#define INPUT_CAP_CLUT 0x00000020 -#define INPUT_CAP_AUDIOLANG 0x00000040 -#define INPUT_CAP_SPULANG 0x00000080 -#define INPUT_CAP_VARIABLE_BITRATE 0x00000100 -#define INPUT_CAP_PREVIEW 0x00000200 /* Requires INPUT_CAP_SEEKABLE */ -#define INPUT_CAP_CHAPTERS 0x00000400 - -/** - * \fn uint32_t xine_get_input_plugin_capabilities(xine_t *self) - * \brief Request input plugin capabilities - * \param self Current xine engine configuration ( #see xine_init() ) - * \return bitwise OR of all available capabilities. - * - */ -uint32_t xine_get_input_plugin_capabilities(xine_t *self); - - /** @} end of input_cap */ - - /** @} end of input_group */ - - /** - * \defgroup audio_group Audio. - * @{ - */ - - /** - * - * \defgroup audio_cap audio driver capabilities - * @{ - */ -/** - * \def AO_CAP_NOCAP - * Driver has no capabilities. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_NOCAP 0x00000000 -/** - * \def AO_CAP_MODE_A52 - * Driver supports A/52 output. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_A52 0x00000001 -/** - * \def AO_CAP_MODE_AC5 - * Driver supports AC5 output. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_AC5 0x00000002 -/** - * \def AO_CAP_MODE_MONO - * Driver supports mono output. - * 1 sample == 2 bytes (C) - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_MONO 0x00000004 -/** - * \def AO_CAP_MODE_STEREO - * Driver supports stereo output. - * 1 sample == 4 bytes (L,R) - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_STEREO 0x00000008 -/** - * \def AO_CAP_MODE_4CHANNEL - * Driver supports 4 channels. - * 1 sample == 8 bytes (L,R,LR,RR) - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_4CHANNEL 0x00000010 -/** - * \def AO_CAP_MODE_5CHANNEL - * Driver supports 5 channels. - * 1 sample == 10 bytes (L,R,LR,RR,C) - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_5CHANNEL 0x00000020 -/** - * \def AO_CAP_MODE_5_1CHANNEL - * Driver supports 5.1 channels. - * 1 sample == 12 bytes (L,R,LR,RR,C,LFE) - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MODE_5_1CHANNEL 0x00000040 -/** - * \def AO_CAP_MIXER_VOL - * Driver supports mixer control. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MIXER_VOL 0x00000080 -/** - * \def AO_CAP_PCM_VOL - * Driver supports pcm control. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_PCM_VOL 0x00000100 -/** - * \def AO_CAP_MUTE_VOL - * Driver can mute volume. - * \sa xine_get_audio_capabilities() - */ -#define AO_CAP_MUTE_VOL 0x00000200 - -/** - * \fn int xine_get_audio_capabilities(xine_t *self) - * \brief Get audio driver capabilities. - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Audio capabilities. - * - * Get audio driver capabilities, returned value can be AND/ORed with AO_CAP_* constant - * to get relevant informations. - */ -int xine_get_audio_capabilities(xine_t *self); - - /** @} end of audio_cap */ - - /** - * - * \defgroup audio_prop Constants for the get/set properties functions. - * @{ - */ -/** - * \def AO_PROP_MIXER_VOL - * Mixer volume property. - * \sa xine_get_audio_property(), xine_set_audio_property() - */ -#define AO_PROP_MIXER_VOL 0 -/** - * \def AO_PROP_PCM_VOL - * Pcm volume property. - * \sa xine_get_audio_property(), xine_set_audio_property() - */ -#define AO_PROP_PCM_VOL 1 -/** - * \def AO_PROP_MUTE_VOL - * Pcm volume property. - * \sa xine_get_audio_property(), xine_set_audio_property() - */ -#define AO_PROP_MUTE_VOL 2 - -/** - * \fn int xine_get_audio_property(xine_t *self, int property) - * \brief Get audio driver property. - * \param self Current xine engine configuration ( #see xine_init() ) - * \param property ( see AO_PROP_* ) - * \return value of property. - * - * Get audio property ( AO_PROP_* ) value . - */ -int xine_get_audio_property(xine_t *self, int property); -/** - * \fn int xine_set_audio_property(xine_t *self, int property, int value) - * \brief Set audio driver property value. - * \param self Current xine engine configuration ( #see xine_init() ) - * \param property ( see AO_PROP_* ) - * \param value of property - * \return value on success, otherwise ~value. - * - * Set audio property value ( AO_PROP_* ). It will return value if - * operation is successfuly completed, and ~value on failure. - */ -int xine_set_audio_property(xine_t *self, int property, int value); - - /** @} end of audio_prop */ - - /** @} end of audio_group */ - - /** - * \defgroup browse_group Browsing support - * @{ - */ - -/** - * \fn char **xine_get_browsable_input_plugin_ids (xine_t *self) - * \brief Request list of browsable featured plugins - * \param self Current xine engine configuration ( #see xine_init() ) - * \return List of plugins - * - * Some input plugins are browseable, - * get the list of ids of these plugins. - */ -char **xine_get_browsable_input_plugin_ids (xine_t *self) ; - - /** - * \defgroup mrl_types Types of available mrls - * These types are bit field, can be used ORed/ANDed. - * \sa mrl_t - * @{ - */ - -/** - * \def mrl_unknown - * Unknow mrl type. - * \sa mrl_t - */ -#define mrl_unknown (0 << 0) -/** - * \def mrl_dvd - * DVD mrl type. - * \sa mrl_t - */ -#define mrl_dvd (1 << 0) -/** - * \def mrl_vcd - * VCD mrl type. - * \sa mrl_t - */ -#define mrl_vcd (1 << 1) -/** - * \def mrl_net - * Network mrl type. - * \sa mrl_t - */ -#define mrl_net (1 << 2) -/** - * \def mrl_rtp - * Multicast mrl type. - * \sa mrl_t - */ -#define mrl_rtp (1 << 3) -/** - * \def mrl_stdin - * Standart input mrl type. - * \sa mrl_t - */ -#define mrl_stdin (1 << 4) -/** - * \def mrl_cda - * CD Audio mrl type. - * \sa mrl_t - */ -#define mrl_cda (1 << 5) -/** - * \def mrl_file - * File mrl type. - * \sa mrl_t - */ -#define mrl_file (1 << 6) -/** - * \def mrl_file_fifo - * Fifo file mrl type. - * \sa mrl_t - */ -#define mrl_file_fifo (1 << 7) -/** - * \def mrl_file_chardev - * Char device file mrl type. - * \sa mrl_t - */ -#define mrl_file_chardev (1 << 8) -/** - * \def mrl_file_directory - * Directory file mrl type. - * \sa mrl_t - */ -#define mrl_file_directory (1 << 9) -/** - * \def mrl_file_blockdev - * Block device file mrl type. - * \sa mrl_t - */ -#define mrl_file_blockdev (1 << 10) -/** - * \def mrl_file_normal - * Normal file mrl type. - * \sa mrl_t - */ -#define mrl_file_normal (1 << 11) -/** - * \def mrl_file_symlink - * Soft link file mrl type. - * \sa mrl_t - */ -#define mrl_file_symlink (1 << 12) -/** - * \def mrl_file_sock - * Socket file mrl type. - * \sa mrl_t - */ -#define mrl_file_sock (1 << 13) -/** - * \def mrl_file_exec - * Executable file mrl type. - * \sa mrl_t - */ -#define mrl_file_exec (1 << 14) -/** - * \def mrl_file_backup - * Backup file mrl type. - * \sa mrl_t - */ -#define mrl_file_backup (1 << 15) -/** - * \def mrl_file_hidden - * Hidden file mrl type. - * \sa mrl_t - */ -#define mrl_file_hidden (1 << 16) - - /** @} end of mrl_types */ - -/** - * \def MRL_ZERO(m) - * Freeing/zeroing all of entries of given mrl. - * \sa mrl_t, xine_get_browse_mrls() - */ -#define MRL_ZERO(m) { \ - if((m)) { \ - if((m)->origin) \ - free((m)->origin); \ - if((m)->mrl) \ - free((m)->mrl); \ - if((m)->link) \ - free((m)->link); \ - (m)->origin = NULL; \ - (m)->mrl = NULL; \ - (m)->link = NULL; \ - (m)->type = 0; \ - (m)->size = (off_t) 0; \ - } \ -} - -/** - * \def MRL_DUPLICATE(s, d) - * Duplicate two mrls entries (s = source, d = destination). - * \sa mrl_t, xine_get_browse_mrls() - */ -#define MRL_DUPLICATE(s, d) { \ - assert((s) != NULL); \ - assert((d) != NULL); \ - \ - if((s)->origin) { \ - if((d)->origin) { \ - (d)->origin = (char *) realloc((d)->origin, strlen((s)->origin) + 1); \ - sprintf((d)->origin, "%s", (s)->origin); \ - } \ - else \ - (d)->origin = strdup((s)->origin); \ - } \ - else \ - (d)->origin = NULL; \ - \ - if((s)->mrl) { \ - if((d)->mrl) { \ - (d)->mrl = (char *) realloc((d)->mrl, strlen((s)->mrl) + 1); \ - sprintf((d)->mrl, "%s", (s)->mrl); \ - } \ - else \ - (d)->mrl = strdup((s)->mrl); \ - } \ - else \ - (d)->mrl = NULL; \ - \ - if((s)->link) { \ - if((d)->link) { \ - (d)->link = (char *) realloc((d)->link, strlen((s)->link) + 1); \ - sprintf((d)->link, "%s", (s)->link); \ - } \ - else \ - (d)->link = strdup((s)->link); \ - } \ - else \ - (d)->link = NULL; \ - \ - (d)->type = (s)->type; \ - (d)->size = (s)->size; \ -} - -/** - * \def MRLS_DUPLICATE(s, d) - * Duplicate two arrays of mrls (s = source, d = destination). - * \sa mrl_t, xine_get_browse_mrls() - */ -#define MRLS_DUPLICATE(s, d) { \ - int i = 0; \ - \ - assert((s) != NULL); \ - assert((d) != NULL); \ - \ - while((s) != NULL) { \ - d[i] = (mrl_t *) malloc(sizeof(mrl_t)); \ - MRL_DUPLICATE(s[i], d[i]); \ - i++; \ - } \ -} - -/** - * \struct mrl_t - * mrl type. - * \sa xine_get_browse_mrls(), MRL_ZERO, MRL_DUPLICATE, MRLS_DUPLICATE, mrl_types - */ -typedef struct { - /** Origin of grabbed mrls (eg: path for file plugin */ - char *origin; - /** <type>://<location> */ - char *mrl; - /** name of link, if exist, otherwise NULL */ - char *link; - /** match to mrl_type enum */ - uint32_t type; - /** size of this source, may be 0 */ - off_t size; -} mrl_t; - -/** - * \fn mrl_t **xine_get_browse_mrls (xine_t *self, char *plugin_id, char *start_mrl, int *num_mrls) - * \brief Request available MRLs from plugins - * \param self Current xine engine configuration ( #see xine_init() ) - * \param plugin_id Plugin name ( #see xine_get_browsable_input_plugin_ids() ) - * \param start_mrl MRL - * \param num_mrl how many mrls was found - * \return start_mrl on success, NULL on failure. - * - * Asks input plugin named <plugin_id> to return - * a list of available MRLs in domain/directory <start_mrl>. - * - * <start_mrl> may be NULL indicating the toplevel domain/dir - * returns <start_mrl> if <start_mrl> is a valid MRL, not a directory - * returns NULL if <start_mrl> is an invalid MRL, not even a directory. - */ -mrl_t **xine_get_browse_mrls (xine_t *self, char *plugin_id, char *start_mrl, int *num_mrls); - - /** @} end of browse_group */ - - /** - * \defgroup autoplay_group Autoplay support - * @{ - */ -/** - * \fn char **xine_get_autoplay_input_plugin_ids (xine_t *self) - * \brief Request playlist from plugin - * \param self Current xine engine configuration ( #see xine_init() ) - * \return Playlist. - * - * Some input plugins can generate autoplay lists - * returns a list of ids of these plugins. - */ -char **xine_get_autoplay_input_plugin_ids (xine_t *self); - -/** - * \fn char *xine_get_input_plugin_description(xine_t *self, char *plugin_id) - * \brief Request input plugin description - * \param self Current xine engine configuration ( #see xine_init() ) - * \param plugin_id Plugin identifier. - * \return Description string. - * - */ -char *xine_get_input_plugin_description(xine_t *self, char *plugin_id); - -/** - * \fn char **xine_get_autoplay_mrls (xine_t *self, char *plugin_id, int *num_mrls) - * \brief Request MRL list from plugin - * \param self Current xine engine configuration ( #see xine_init() ) - * \param plugin_id Plugin name ( #see xine_get_autoplay_input_plugin_ids() ) - * \param num_mrls Entries in return array. - * \return MRL list. - * - * Get autoplay MRL list for input plugin named <plugin_id>. - */ -char **xine_get_autoplay_mrls (xine_t *self, char *plugin_id, int *num_mrls); - - /** @} end of autoplay_group */ - - /** - * \defgroup loadplugins_group Loading plugins - * output plugin load support functions - * @{ - */ - -/** - * \def XINE_PLUGINDIR - * Plugin files location. - * \ingroup loadplugins_group - */ -#define XINE_PLUGINDIR "@XINE_PLUGINPATH@" - - /** - * \defgroup visual_types Valid visual types - * @{ - */ - -/** - * \def VISUAL_TYPE_X11 - * X11 visual type. - * \sa xine_list_video_output_plugins, xine_load_video_output_plugin -*/ -#define VISUAL_TYPE_X11 1 -/** - * \def VISUAL_TYPE_AA - * Asci Art visual type. - * \sa xine_list_video_output_plugins, xine_load_video_output_plugin - */ -#define VISUAL_TYPE_AA 2 -/** - * \def VISUAL_TYPE_FB - * Framebuffer visual type - * \sa xine_list_video_output_plugins, xine_load_video_output_plugin - */ -#define VISUAL_TYPE_FB 3 -/** - * \def VISUAL_TYPE_GTK - * GTK visual type - * \sa xine_list_video_output_plugins, xine_load_video_output_plugin - */ -#define VISUAL_TYPE_GTK 4 -/** - * \def VISUAL_TYPE_DFB - * DirectFB visual type - * \sa xine_list_video_output_plugins, xine_load_video_output_plugin - */ -#define VISUAL_TYPE_DFB 5 - - /** @} end of visual_types */ - -/** - * \fn void xine_list_demux_plugins (config_values_t *config, char **identifiers, char **mimetypes) - * \brief list available demux plugins - * \param config current configuration ( #see xine_config_file_init() ) - * \param identifiers pointer to a (char *) that will be allocated and filled with all demux identifiers - * \param mimetypes pointer to a (char *) that will be allocated and filled with all demux mimetypes - * \return none (strings are returned on *identifiers and *mimetypes). It is up to called to free these after use. - */ -void xine_list_demux_plugins (config_values_t *config, - char **identifiers, char **mimetypes); - -/** - * \fn char **xine_list_video_output_plugins (int visual_type) - * \brief list available video output plugins - * \param visual_type #see @ref visual_types - * \return a list of available video output plugins for the specified visual type - the list is sorted by plugin priority - * \sa visual_types - */ -char **xine_list_video_output_plugins (int visual_type); - -/** - * \fn vo_driver_t *xine_load_video_output_plugin(config_values_t *config, char *id, int visual_type, void *visual) - * \param config current configuration ( #see xine_config_file_init() ) - * \param id driver name. - * \param visual_type #see @ref visual_types - * \param visual visual type dependant data pointer. - * \brief load a specific video output plugin - * \sa vo_driver_t, visual_types - */ -vo_driver_t *xine_load_video_output_plugin(config_values_t *config, - char *id, int visual_type, void *visual); - -/** - * \fn char **xine_list_audio_output_plugins (void) - * \brief generate a list of all available audio output plugins - * \return a list of available audio output plugins the list returned is sorted by plugin priority - */ -char **xine_list_audio_output_plugins (void); - -/** - * \fn ao_driver_t *xine_load_audio_output_plugin(config_values_t *config, char *id) - * \param config current configuration ( #see xine_config_file_init() ) - * \param id driver name. - * \brief load a specific audio output plugin. - * \sa ao_driver_t - */ -ao_driver_t *xine_load_audio_output_plugin(config_values_t *config, char *id); - - /** @} end of loadplugins_group */ - - /** - * \defgroup event_group Sending events - * Event dispatcher mechanism - * @{ - */ - - -/** - * Event listener callback. - * \sa xine_register_event_listener, xine_remove_event_listener - */ -typedef void (*event_listener_t) (void *user_data, xine_event_t *event); - -/** - * \fn int xine_register_event_listener(xine_t *self, event_listener_t listener) - * \param self Current xine engine configuration ( #see xine_init() ) - * \param listener callback function. - * \param user_data - will be used as first parameter to callback - * \brief registers an event listener callback. - * \return 0 if the listener was registerd, non-zero if it could not. - * \sa event_listener_t - */ -int xine_register_event_listener(xine_t *self, event_listener_t listener, void *user_data); - -/** - * \fn int xine_remove_event_listener(xine_t *self, event_listener_t listener) - * \param self Current xine engine configuration ( #see xine_init() ) - * \param listener callback function. - * \brief Attempts to remove a registered event listener. - * \return 0 if the listener was removes, non-zero if it wasn't (e.g. not found). - * \sa event_listener_t - */ -int xine_remove_event_listener(xine_t *self, event_listener_t listener); - -/** - * \fn void xine_send_event(xine_t *self, event_t *event) - * \param self Current xine engine configuration ( #see xine_init() ) - * \param event event to send - * \brief sends an event to all listeners. - * \sa event_t - */ -void xine_send_event(xine_t *self, xine_event_t *event); - - /** @} end of event_group */ - - -#define XINE_CODEC_AUDIO 0 -#define XINE_CODEC_VIDEO 1 - -/** - * codec reporting callback. - * \param user_data - * \param codec_type type of codec being reported (XINE_CODEC_AUDIO/XINE_CODEC_VIDEO) - * \param fourcc codec identifier (fourcc) in machine endianness (only valid if description is empty) - * \param description description or human readable codec name ("" if unkown) - * \param handled if true, the plugin exist and will be used. otherwise it's an error condition (plugin not found or codec unknown) - * \sa xine_register_report_codec_cb - */ -typedef void (*xine_report_codec_t) (void *user_data, int codec_type, - uint32_t fourcc, char *description, int handled); - -/** - * \fn int xine_register_report_codec_cb(xine_t *self, xine_report_codec_t report_codec, void *user_data); - * \param self Current xine engine configuration ( #see xine_init() ) - * \param report_codec callback function. - * \param user_data - will be used as first parameter to callback - * \brief registers a callback function to receive codec information (may change during playback) - * \return 0 if the callback was registerd, non-zero if it could not. - * \sa xine_report_codec_t - */ -int xine_register_report_codec_cb(xine_t *self, xine_report_codec_t report_codec, - void *user_data); - - -/** - * \fn int xine_get_current_frame (xine_t *self, int *width, int *height, int *ratio_code, int *format, uint8_t **y, uint8_t **u, uint8_t **v) - * - * \param self Current xine engine configuration ( #see xine_init() ) - * \param width Width of image (be aware that u,v may be subsampled) - * \param height Height of image (be aware that u,v may be subsampled) - * \param ratio_code Aspect ratio of the frame - * \param format Subsampling format YUV 4:2:0 or 4:2:2 - * \param y Lumiance information - * \param u Subsample color information - * \param v Subsample color information - * \brief Snapshot function. - * \return 1 on success, 0 failure. - * - * - */ -int xine_get_current_frame (xine_t *self, int *width, int *height, - int *ratio_code, int *format, - uint8_t **y, uint8_t **u, - uint8_t **v); - - - -/** - * \def XINE_IMGFMT_YV12 - * image format. - * \sa xine_get_current_frame -*/ -#define XINE_IMGFMT_YV12 0x32315659 -/** - * \def XINE_IMGFMT_YUY2 - * image format. - * \sa xine_get_current_frame -*/ -#define XINE_IMGFMT_YUY2 (('2'<<24)|('Y'<<16)|('U'<<8)|'Y') - -/** - * \def XINE_ASPECT_RATIO_SQUARE - * aspect ratio. - * \sa xine_get_current_frame -*/ -#define XINE_ASPECT_RATIO_SQUARE 1 -/** - * \def XINE_ASPECT_RATIO_4_3 - * aspect ratio. - * \sa xine_get_current_frame -*/ -#define XINE_ASPECT_RATIO_4_3 2 -/** - * \def XINE_ASPECT_RATIO_ANAMORPHIC - * aspect ratio. - * \sa xine_get_current_frame -*/ -#define XINE_ASPECT_RATIO_ANAMORPHIC 3 -/** - * \def XINE_ASPECT_RATIO_211_1 - * aspect ratio. - * \sa xine_get_current_frame -*/ -#define XINE_ASPECT_RATIO_211_1 4 -/** - * \def XINE_ASPECT_RATIO_DONT_TOUCH - * aspect ratio. - * \sa xine_get_current_frame -*/ -#define XINE_ASPECT_RATIO_DONT_TOUCH 42 - - - /** - * \defgroup osd_group OSD section - * @{ - */ - - /** - * \defgroup osd_textgroup OSD text attributes - * @{ - */ - -/** - * \def TEXT_PALETTE_SIZE - * The size of an OSD text palette - */ -#define TEXT_PALETTE_SIZE 11 - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT1 (0 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT2 (1 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT3 (2 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT4 (3 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT5 (4 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT6 (5 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT7 (6 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT8 (7 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT9 (8 * TEXT_PALETTE_SIZE) - -/** Preassigned color index for text palettes and rendering text */ -#define OSD_TEXT10 (9 * TEXT_PALETTE_SIZE) - -/** - * \def TEXTPALETTE_WHITE_BLACK_TRANSPARENT - * White text, black border, transparent background - */ -#define TEXTPALETTE_WHITE_BLACK_TRANSPARENT 0 - -/** - * \def TEXTPALETTE_WHITE_NONE_TRANSPARENT - * White text, noborder, transparent background - */ -#define TEXTPALETTE_WHITE_NONE_TRANSPARENT 1 - -/** - * \def TEXTPALETTE_WHITE_NONE_TRANSLUCID - * White text, no border, translucid background - */ -#define TEXTPALETTE_WHITE_NONE_TRANSLUCID 2 - -/** - * \def TEXTPALETTE_YELLOW_BLACK_TRANSPARENT - * Yellow text, black border, transparent background - */ -#define TEXTPALETTE_YELLOW_BLACK_TRANSPARENT 3 - - /** @} end of osd_textgroup */ - - -typedef struct osd_object_s osd_object_t; -typedef struct osd_renderer_s osd_renderer_t; -typedef struct osd_font_s osd_font_t; - -struct osd_renderer_s { - - /* - * open a new osd object. this will allocated an empty (all zero) drawing - * area where graphic primitives may be used. - * It is ok to specify big width and height values. The render will keep - * track of the smallest changed area to not generate too big overlays. - * A default palette is initialized (i sugest keeping color 0 as transparent - * for the sake of simplicity) - */ - osd_object_t* (*new_object) (osd_renderer_t *self, int width, int height); - - /* - * free osd object - */ - void (*free_object) (osd_object_t *osd_to_close); - - - /* - * send the osd to be displayed at given pts (0=now) - * the object is not changed. there may be subsequent drawing on it. - */ - int (*show) (osd_object_t *osd, int64_t vpts ); - - /* - * send event to hide osd at given pts (0=now) - * the object is not changed. there may be subsequent drawing on it. - */ - int (*hide) (osd_object_t *osd, int64_t vpts ); - - /* - * Bresenham line implementation on osd object - */ - void (*line) (osd_object_t *osd, - int x1, int y1, int x2, int y2, int color ); - - /* - * filled retangle - */ - void (*filled_rect) (osd_object_t *osd, - int x1, int y1, int x2, int y2, int color ); - - /* - * set palette (color and transparency) - */ - void (*set_palette) (osd_object_t *osd, uint32_t *color, uint8_t *trans ); - - /* - * set on existing text palette - * (-1 to set used specified palette) - * - * color_base specifies the first color index to use for this text - * palette. The OSD palette is then modified starting at this - * color index, up to the size of the text palette. - * - * Use OSD_TEXT1, OSD_TEXT2, ... for some preasssigned color indices. - */ - void (*set_text_palette) (osd_object_t *osd, int palette_number, - int color_base ); - - /* - * get palette (color and transparency) - */ - void (*get_palette) (osd_object_t *osd, uint32_t *color, - uint8_t *trans); - - /* - * set position were overlay will be blended - */ - void (*set_position) (osd_object_t *osd, int x, int y); - - /* - * set the font of osd object - */ - - int (*set_font) (osd_object_t *osd, char *fontname, int size); - - - /* - * render text on x,y position (8 bits version) - * no \n yet - * - * The text is assigned the colors starting at the index specified by - * color_base up to the size of the text palette. - * - * Use OSD_TEXT1, OSD_TEXT2, ... for some preasssigned color indices - */ - int (*render_text) (osd_object_t *osd, int x1, int y1, - char *text, int color_base); - - /* - * get width and height of how text will be renderized - */ - int (*get_text_size) (osd_object_t *osd, char *text, - int *width, int *height); - - /* - * close osd rendering engine - * loaded fonts are unloaded - * osd objects are closed - */ - void (*close) (osd_renderer_t *self); - - /* - * clear an osd object (empty drawing area) - */ - void (*clear) (osd_object_t *osd ); - -}; - -osd_renderer_t *xine_get_osd_renderer (xine_t *self); - - /** @} end of osd_group */ - - - /** - * \defgroup log_group Logging section - * @{ - */ -/** - * \fn unsigned int xine_get_log_section_count(void) - * \brief return number of available buffers. - * \sa xine_get_log_names(), xine_log(), xine_get_log() - */ -int xine_get_log_section_count(xine_t *self); -/** - * \fn const char **xine_get_log_names(void) - * \brief return a NULL terminated array of log sections names. - * \sa xine_get_log_section_count(), xine_log(), xine_get_log() - */ -char **xine_get_log_names(xine_t *self); -/** - * \fn void xine_log (xine_t *self, int buf, const char *format, ...) - * \param self xine object. - * \param buf buffer section (#see @ref log_def) - * \brief write message to buffer 'buf'. - * - */ -void xine_log (xine_t *self, int buf, const char *format, ...); -/** - * \fn char **xine_get_log (xine_t *self, int buf) - * \param self xine object. - * \param buf buffer section (#see @ref log_def) - * \return an array of char, NULL terminated. - * \brief return a message array from buffer 'buf' (#see @ref log_def) - * - */ -char **xine_get_log (xine_t *self, int buf); - - /** @} end of log_group */ - - - /** - * \defgroup error_group Error reporting. - * @{ - */ - /** - * \defgroup error_def error defines. - * @{ - */ -/** - * \def XINE_ERROR_NONE - * No error reported. - * \sa xine_get_error() -*/ -#define XINE_ERROR_NONE 0 -/** - * \def XINE_ERROR_NO_INPUT_PLUGIN - * No input plugin found to handle a stream type. - * \sa xine_get_error() -*/ -#define XINE_ERROR_NO_INPUT_PLUGIN 1 -/** - * \def XINE_ERROR_NO_DEMUXER_PLUGIN - * No demuxer plugin found to handle a stream type. - * \sa xine_get_error() -*/ -#define XINE_ERROR_NO_DEMUXER_PLUGIN 2 -/** - * \def XINE_ERROR_DEMUXER_FAILED - * Demuxer plugin failed to start. - * \sa xine_get_error() -*/ -#define XINE_ERROR_DEMUXER_FAILED 3 - - /** @} end of error_def */ - -/** - * \fn int xine_get_error (xine_t *self) - * \param self xine object. - * \return return last error (#see @ref error_def) - * \brief return the last error. - * - */ -int xine_get_error (xine_t *self); - - /** @} end of error_group */ - - - /** - * \defgroup locale_group localisation. - * @{ - */ -/** - * \fn char *xine_set_locale(void) - * \return current locale. - * \brief prepare and setup localization for xine-lib usage. - * This function should be called BEFORE xine_init() ( #see xine_init() ) - * - */ -char *xine_set_locale(void); - - /** @} end of locale_group */ - - /** - * \defgroup xine_tvmode TV mode selection functions - * @{ - */ -/** - * \fn void xine_tvmode_init (xine_t *self); - * \brief connect to nvtvd server and save current TV and X settings - * \param self xine object. - */ -void xine_tvmode_init (void); -void xine_tvmode_init2 (xine_t *self); - -/** - * \fn void xine_tvmode_exit (xine_t *self); - * \brief restore old TV and X settings and close nvtvd connection - * \param self xine object. - */ -void xine_tvmode_exit (void); -void xine_tvmode_exit2 (xine_t *self); - -/** - * \fn int xine_tvmode_switch (xine_t *self, int type, int width, int height, double fps); - * \brief try to change TV state if enabled - * \param self xine object. - * \param type select 'regular' (0) or 'TV' (1) state - * \param width frame width the mode should match best or 0 if unknown - * \param height frame height the mode should match best or 0 if unknown - * \param fps frame rate the mode should match best or 0 if unknown - * \return finally selected state - * \sa xine_tvmode_init(), xine_tvmode_exit(), xine_tvmode_size() - */ -int xine_tvmode_switch (int type, int width, int height, double fps); -int xine_tvmode_switch2 (xine_t *self, int type, int width, int height, double fps); - -/** - * \fn void xine_tvmode_size (xine_t *self, int *width, int *height, double *pixelaspect, double *fps); - * \brief addapt (maximum) output size to visible area if necessary and return pixel aspect and real frame rate if available - * \param self xine object. - * \param width output width to be adapted or NULL - * \param height output height to be adapted or NULL - * \param pixelaspect pixel aspect to be adapted or NULL - * \param frame rate of current TV mode to be adapted or NULL - */ -void xine_tvmode_size (int *width, int *height, double *pixelaspect, double *fps); -void xine_tvmode_size2 (xine_t *self, int *width, int *height, double *pixelaspect, double *fps); - - /** @} end of xine_tvmode */ - - /** @} end of xine_api */ - -#ifdef __cplusplus -} -#endif - -#endif |