xine-lib 1.2.11
Data Structures | Macros | Functions | Variables
xine.c File Reference
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdarg.h>
#include <stdio.h>
#include <ctype.h>
#include <unistd.h>
#include <basedir.h>
#include <xine/xine_internal.h>
#include <xine/plugin_catalog.h>
#include <xine/audio_out.h>
#include <xine/video_out.h>
#include <xine/post.h>
#include <xine/demux.h>
#include <xine/buffer.h>
#include <xine/spu_decoder.h>
#include <xine/input_plugin.h>
#include <xine/metronom.h>
#include <xine/configfile.h>
#include <xine/osd.h>
#include <xine/spu.h>
#include <xine/xineutils.h>
#include <xine/compat.h>
#include "xine_private.h"

Data Structures

struct  xine_ticket_private_t
 

Macros

#define LOG_MODULE   "xine"
 
#define LOG_VERBOSE
 
#define XINE_ENABLE_EXPERIMENTAL_FEATURES
 
#define METRONOM_CLOCK_INTERNAL
 
#define POST_INTERNAL
 
#define XINE_TICKET_FLAG_PAUSE   (int)0x40000000
 
#define XINE_TICKET_MAX_CB   15
 
#define nn   128
 
#define RATIO_LIKE(a, b)   ((b) - 1 <= (a) && (a) <= 1 + (b))
 
#define KF_BITS   10
 
#define KF_SIZE   (1 << KF_BITS)
 
#define KF_MASK   (KF_SIZE - 1)
 

Functions

static void mutex_cleanup (void *mutex)
 
void _x_handle_stream_end (xine_stream_t *s, int non_user)
 
void _x_extra_info_reset (extra_info_t *extra_info)
 
void _x_extra_info_merge (extra_info_t *dst, extra_info_t *src)
 
static void xine_current_extra_info_reset (xine_stream_private_t *stream)
 
void xine_current_extra_info_set (xine_stream_private_t *stream, const extra_info_t *info)
 
static int xine_current_extra_info_get (xine_stream_private_t *stream, extra_info_t *info)
 
static void ticket_revoke_cb_register (xine_ticket_t *tgen, xine_ticket_revoke_cb_t *cb, void *user_data)
 
static void ticket_revoke_cb_unregister (xine_ticket_t *tgen, xine_ticket_revoke_cb_t *cb, void *user_data)
 
static int ticket_acquire_internal (xine_ticket_private_t *this, int irrevocable, int nonblocking)
 
static int ticket_acquire_nonblocking (xine_ticket_t *tgen, int irrevocable)
 
static void ticket_acquire (xine_ticket_t *tgen, int irrevocable)
 
static void ticket_release_internal (xine_ticket_private_t *this, int irrevocable)
 
static void ticket_release_nonblocking (xine_ticket_t *tgen, int irrevocable)
 
static void ticket_release (xine_ticket_t *tgen, int irrevocable)
 
static void ticket_renew (xine_ticket_t *tgen, int irrevocable)
 
static void ticket_issue (xine_ticket_t *tgen, int flags)
 
static void ticket_revoke (xine_ticket_t *tgen, int flags)
 
static int lock_timeout (pthread_mutex_t *mutex, int ms_timeout)
 
static int ticket_lock_port_rewiring (xine_ticket_t *tgen, int ms_timeout)
 
static void ticket_unlock_port_rewiring (xine_ticket_t *tgen)
 
static void ticket_dispose (xine_ticket_t *tgen)
 
static xine_ticket_tticket_init (void)
 
static void set_speed_internal (xine_stream_private_t *stream, int speed)
 
static void stop_internal (xine_stream_private_t *stream)
 
static void lock_run (xine_stream_private_t *stream, int wait)
 
static void unlock_run (xine_stream_private_t *stream)
 
void xine_stop (xine_stream_t *s)
 
static void close_internal (xine_stream_private_t *stream)
 
void xine_close (xine_stream_t *s)
 
static int stream_rewire_audio (xine_post_out_t *output, void *data)
 
static int stream_rewire_video (xine_post_out_t *output, void *data)
 
static void video_decoder_update_disable_flush_at_discontinuity (void *s, xine_cfg_entry_t *entry)
 
static void _xine_dummy_dest (void *object)
 
static void xine_dispose_internal (xine_stream_private_t *stream)
 
xine_stream_txine_stream_new (xine_t *this, xine_audio_port_t *ao, xine_video_port_t *vo)
 
static void xine_side_dispose_internal (xine_stream_private_t *stream)
 
xine_stream_txine_get_side_stream (xine_stream_t *master, int index)
 
void _x_mrl_unescape (char *mrl)
 
char * _x_mrl_remove_auth (const char *mrl_in)
 
static int _x_path_looks_like_mrl (const char *path)
 
static int open_internal (xine_stream_private_t *stream, const char *mrl)
 
int xine_open (xine_stream_t *s, const char *mrl)
 
static void wait_first_frame (xine_stream_private_t *stream)
 
static int play_internal (xine_stream_private_t *stream, int start_pos, int start_time)
 
int xine_play (xine_stream_t *s, int start_pos, int start_time)
 
int xine_eject (xine_stream_t *s)
 
void xine_dispose (xine_stream_t *s)
 
void xine_exit (xine_t *this_gen)
 
xine_txine_new (void)
 
void xine_engine_set_param (xine_t *this, int param, int value)
 
int xine_engine_get_param (xine_t *this, int param)
 
static void config_demux_strategy_cb (void *this_gen, xine_cfg_entry_t *entry)
 
static void config_save_cb (void *this_gen, xine_cfg_entry_t *entry)
 
void xine_set_flags (xine_t *this_gen, int flags)
 
int _x_query_network_timeout (xine_t *xine_gen)
 
static void network_timeout_cb (void *this_gen, xine_cfg_entry_t *entry)
 
static void join_av_cb (void *this_gen, xine_cfg_entry_t *entry)
 
void xine_init (xine_t *this_gen)
 
void _x_select_spu_channel (xine_stream_t *s, int channel)
 
void _x_get_current_info (xine_stream_t *s, extra_info_t *extra_info, int size)
 
int xine_get_status (xine_stream_t *s)
 
void _x_set_fine_speed (xine_stream_t *s, int speed)
 
int _x_get_fine_speed (xine_stream_t *stream)
 
void _x_set_speed (xine_stream_t *stream, int speed)
 
int _x_get_speed (xine_stream_t *stream)
 
int xine_get_pos_length (xine_stream_t *s, int *pos_stream, int *pos_time, int *length_time)
 
static int _x_get_current_frame_data (xine_stream_t *stream, xine_current_frame_data_t *data, int flags, int img_size_unknown)
 
int xine_get_current_frame_data (xine_stream_t *stream, xine_current_frame_data_t *data, int flags)
 
int xine_get_current_frame_alloc (xine_stream_t *stream, int *width, int *height, int *ratio_code, int *format, uint8_t **img, int *img_size)
 
int xine_get_current_frame_s (xine_stream_t *stream, int *width, int *height, int *ratio_code, int *format, uint8_t *img, int *img_size)
 
int xine_get_current_frame (xine_stream_t *stream, int *width, int *height, int *ratio_code, int *format, uint8_t *img)
 
xine_grab_video_frame_txine_new_grab_video_frame (xine_stream_t *stream)
 
static int _get_spu_lang (xine_stream_private_t *stream, int channel, char *lang)
 
int xine_get_spu_lang (xine_stream_t *s, int channel, char *lang)
 
static int _get_audio_lang (xine_stream_private_t *stream, int channel, char *lang)
 
int xine_get_audio_lang (xine_stream_t *s, int channel, char *lang)
 
int _x_get_spu_channel (xine_stream_t *stream)
 
int _x_get_video_streamtype (xine_stream_t *s)
 
int xine_get_log_section_count (xine_t *this)
 
const char *const * xine_get_log_names (xine_t *this)
 
static void check_log_alloc (xine_private_t *this, int buf)
 
void xine_log (xine_t *this_gen, int buf, const char *format,...)
 
void xine_vlog (xine_t *this_gen, int buf, const char *format, va_list args)
 
char *const * xine_get_log (xine_t *this, int buf)
 
void xine_register_log_cb (xine_t *this_gen, xine_log_cb_t cb, void *user_data)
 
int xine_get_error (xine_stream_t *s)
 
int xine_stream_master_slave (xine_stream_t *m, xine_stream_t *slave, int affection)
 
int _x_query_buffer_usage (xine_stream_t *stream, int *num_video_buffers, int *num_audio_buffers, int *num_video_frames, int *num_audio_frames)
 
static void _x_query_buffers_fix_data (xine_query_buffers_data_t *data)
 
int _x_query_buffers (xine_stream_t *stream, xine_query_buffers_t *query)
 
int _x_lock_port_rewiring (xine_t *xine_gen, int ms_timeout)
 
void _x_unlock_port_rewiring (xine_t *xine_gen)
 
int _x_lock_frontend (xine_stream_t *s, int ms_to_time_out)
 
void _x_unlock_frontend (xine_stream_t *s)
 
int _x_query_unprocessed_osd_events (xine_stream_t *stream)
 
int _x_continue_stream_processing (xine_stream_t *s)
 
void _x_trigger_relaxed_frame_drop_mode (xine_stream_t *s)
 
void _x_reset_relaxed_frame_drop_mode (xine_stream_t *s)
 
int xine_keyframes_find (xine_stream_t *s, xine_keyframes_entry_t *pos, int offs)
 Query stream keyframe seek index. More...
 
int _x_keyframes_add (xine_stream_t *s, xine_keyframes_entry_t *pos)
 Register a stream keyframe to seek index. More...
 
xine_keyframes_entry_txine_keyframes_get (xine_stream_t *s, int *size)
 Get a private stream keyframe seek index copy, free () it when done. More...
 
int _x_keyframes_set (xine_stream_t *s, xine_keyframes_entry_t *list, int size)
 Register a list of stream keyframes. More...
 

Variables

static const uint8_t tab_parse [256]
 

Macro Definition Documentation

◆ KF_BITS

#define KF_BITS   10

◆ KF_MASK

#define KF_MASK   (KF_SIZE - 1)

◆ KF_SIZE

#define KF_SIZE   (1 << KF_BITS)

◆ LOG_MODULE

#define LOG_MODULE   "xine"

◆ LOG_VERBOSE

#define LOG_VERBOSE

◆ METRONOM_CLOCK_INTERNAL

#define METRONOM_CLOCK_INTERNAL

◆ nn

#define nn   128

◆ POST_INTERNAL

#define POST_INTERNAL

◆ RATIO_LIKE

#define RATIO_LIKE (   a,
 
)    ((b) - 1 <= (a) && (a) <= 1 + (b))

◆ XINE_ENABLE_EXPERIMENTAL_FEATURES

#define XINE_ENABLE_EXPERIMENTAL_FEATURES

◆ XINE_TICKET_FLAG_PAUSE

#define XINE_TICKET_FLAG_PAUSE   (int)0x40000000

◆ XINE_TICKET_MAX_CB

#define XINE_TICKET_MAX_CB   15

Function Documentation

◆ _get_audio_lang()

static int _get_audio_lang ( xine_stream_private_t stream,
int  channel,
char *  lang 
)
static

◆ _get_spu_lang()

static int _get_spu_lang ( xine_stream_private_t stream,
int  channel,
char *  lang 
)
static

◆ _x_continue_stream_processing()

int _x_continue_stream_processing ( xine_stream_t s)

◆ _x_extra_info_merge()

void _x_extra_info_merge ( extra_info_t dst,
extra_info_t src 
)

◆ _x_extra_info_reset()

void _x_extra_info_reset ( extra_info_t extra_info)

◆ _x_get_current_frame_data()

static int _x_get_current_frame_data ( xine_stream_t stream,
xine_current_frame_data_t data,
int  flags,
int  img_size_unknown 
)
static

◆ _x_get_current_info()

void _x_get_current_info ( xine_stream_t s,
extra_info_t extra_info,
int  size 
)

◆ _x_get_fine_speed()

int _x_get_fine_speed ( xine_stream_t stream)

◆ _x_get_speed()

int _x_get_speed ( xine_stream_t stream)

◆ _x_get_spu_channel()

int _x_get_spu_channel ( xine_stream_t stream)

◆ _x_get_video_streamtype()

int _x_get_video_streamtype ( xine_stream_t s)

◆ _x_handle_stream_end()

void _x_handle_stream_end ( xine_stream_t s,
int  non_user 
)

◆ _x_keyframes_add()

int _x_keyframes_add ( xine_stream_t stream,
xine_keyframes_entry_t pos 
)

Register a stream keyframe to seek index.

Note
This will try not to duplicate already registered frames.
Parameters
streamThe stream that index is for.
posThe frame time AND normpos.
Returns
The index g into the index where that frame has been added, or -1.

References abs, xine_stream_private_st::array, xine_stream_private_st::index, KF_SIZE, xine_stream_private_st::lastadd, xine_stream_private_st::lock, xine_keyframes_entry_t::msecs, xine_stream_private_st::s, xine_stream_private_st::side_streams, xine_stream_private_st::size, xine_stream_private_st::used, xine_stream_s::xine, XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by read_flv_packet(), and vo_frame_draw().

◆ _x_keyframes_set()

int _x_keyframes_set ( xine_stream_t stream,
xine_keyframes_entry_t list,
int  size 
)

Register a list of stream keyframes.

Parameters
streamThe stream that index is for.
listThe array of entries to add.
sizeThe count of entries.
Returns
0 (OK), 1 (Fail).

References xine_stream_private_st::array, xine_stream_private_st::index, KF_MASK, xine_stream_private_st::lastadd, xine_stream_private_st::lock, NULL, xine_stream_private_st::s, xine_stream_private_st::side_streams, xine_stream_private_st::size, xine_stream_private_st::used, xine_stream_s::xine, XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by close_internal(), and parse_moov_atom().

◆ _x_lock_frontend()

int _x_lock_frontend ( xine_stream_t s,
int  ms_to_time_out 
)

◆ _x_lock_port_rewiring()

int _x_lock_port_rewiring ( xine_t xine_gen,
int  ms_timeout 
)

◆ _x_mrl_remove_auth()

char * _x_mrl_remove_auth ( const char *  mrl_in)

◆ _x_mrl_unescape()

void _x_mrl_unescape ( char *  mrl)

◆ _x_path_looks_like_mrl()

static int _x_path_looks_like_mrl ( const char *  path)
inlinestatic

References tab_parse.

Referenced by open_internal().

◆ _x_query_buffer_usage()

int _x_query_buffer_usage ( xine_stream_t stream,
int *  num_video_buffers,
int *  num_audio_buffers,
int *  num_video_frames,
int *  num_audio_frames 
)

◆ _x_query_buffers()

int _x_query_buffers ( xine_stream_t stream,
xine_query_buffers_t query 
)

References xine_stream_s::xine.

◆ _x_query_buffers_fix_data()

static void _x_query_buffers_fix_data ( xine_query_buffers_data_t data)
static

◆ _x_query_network_timeout()

int _x_query_network_timeout ( xine_t xine_gen)

◆ _x_query_unprocessed_osd_events()

int _x_query_unprocessed_osd_events ( xine_stream_t stream)

References xine_stream_s::xine.

Referenced by vdr_execute_rpc_command().

◆ _x_reset_relaxed_frame_drop_mode()

void _x_reset_relaxed_frame_drop_mode ( xine_stream_t s)

◆ _x_select_spu_channel()

void _x_select_spu_channel ( xine_stream_t s,
int  channel 
)

◆ _x_set_fine_speed()

void _x_set_fine_speed ( xine_stream_t s,
int  speed 
)

◆ _x_set_speed()

void _x_set_speed ( xine_stream_t stream,
int  speed 
)

◆ _x_trigger_relaxed_frame_drop_mode()

void _x_trigger_relaxed_frame_drop_mode ( xine_stream_t s)

◆ _x_unlock_frontend()

void _x_unlock_frontend ( xine_stream_t s)

◆ _x_unlock_port_rewiring()

void _x_unlock_port_rewiring ( xine_t xine_gen)

◆ _xine_dummy_dest()

static void _xine_dummy_dest ( void *  object)
static

Referenced by xine_stream_new().

◆ check_log_alloc()

static void check_log_alloc ( xine_private_t this,
int  buf 
)
inlinestatic

References _x_new_scratch_buffer().

Referenced by xine_log(), and xine_vlog().

◆ close_internal()

static void close_internal ( xine_stream_private_t stream)
static

◆ config_demux_strategy_cb()

static void config_demux_strategy_cb ( void *  this_gen,
xine_cfg_entry_t entry 
)
static

References xine_cfg_entry_s::num_value.

Referenced by xine_init().

◆ config_save_cb()

static void config_save_cb ( void *  this_gen,
xine_cfg_entry_t entry 
)
static

◆ join_av_cb()

static void join_av_cb ( void *  this_gen,
xine_cfg_entry_t entry 
)
static

References xine_cfg_entry_s::num_value.

Referenced by xine_init().

◆ lock_run()

static void lock_run ( xine_stream_private_t stream,
int  wait 
)
static

◆ lock_timeout()

static int lock_timeout ( pthread_mutex_t *  mutex,
int  ms_timeout 
)
static

References xine_gettime().

Referenced by _x_lock_frontend().

◆ mutex_cleanup()

static void mutex_cleanup ( void *  mutex)
static

◆ network_timeout_cb()

static void network_timeout_cb ( void *  this_gen,
xine_cfg_entry_t entry 
)
static

References xine_cfg_entry_s::num_value.

Referenced by xine_init().

◆ open_internal()

static int open_internal ( xine_stream_private_t stream,
const char *  mrl 
)
static

References _, _x_cache_plugin_get_instance(), _x_config_change_opt(), _x_demux_control_headers_done(), _x_demux_control_nop(), _x_extra_info_reset(), _x_find_demux_plugin(), _x_find_demux_plugin_by_name(), _x_find_demux_plugin_last_probe(), _x_find_input_plugin(), _x_flush_events_queues(), _x_free_demux_plugin(), _x_free_input_plugin(), _x_get_fine_speed(), _x_meta_info_set_utf8(), _x_mrl_unescape(), _x_path_looks_like_mrl(), _x_rip_plugin_get_instance(), _x_stream_info_set(), xine_stream_private_st::audio_decoder_extra_info, xine_stream_s::audio_fifo, BUF_FLAG_END_STREAM, close_internal(), xine_s::config, xine_stream_private_st::current_extra_info, xine_stream_private_st::demux, demux_plugin_s::demux_class, DEMUX_FINISHED, DEMUX_OK, demux_class_s::description, input_class_s::description, dgettext, xine_stream_private_st::eject_class, input_class_s::eject_media, xine_stream_private_st::err, fifo_buffer_s::fifo_size, input_plugin_s::get_capabilities, input_plugin_s::get_optional_data, demux_plugin_s::get_status, demux_class_s::identifier, input_class_s::identifier, INPUT_CAP_NO_CACHE, input_plugin_s::input_class, INPUT_OPTIONAL_DATA_DEMUXER, xine_stream_s::input_plugin, key, lprintf, xine_stream_s::master, name, NULL, input_plugin_s::open, xine_stream_private_st::plugin, xine_stream_private_st::s, demux_plugin_s::send_headers, set_speed_internal(), xine_stream_private_st::side_streams, xine_stream_s::slave, xine_stream_private_st::slave_affection, xine_stream_private_st::slave_is_subtitle, xine_stream_private_st::status, tab_parse, demux_class_s::text_domain, input_class_s::text_domain, xine_stream_private_st::video_decoder_extra_info, xine_stream_s::video_fifo, xine_stream_s::video_out, xine_stream_s::xine, xine_dispose(), XINE_ERROR_INPUT_FAILED, XINE_ERROR_MALFORMED_MRL, XINE_ERROR_NO_DEMUX_PLUGIN, XINE_ERROR_NO_INPUT_PLUGIN, XINE_FINE_SPEED_NORMAL, XINE_LIVE_PAUSE_ON, xine_log(), XINE_LOG_MSG, XINE_MASTER_SLAVE_PLAY, XINE_MASTER_SLAVE_STOP, XINE_META_INFO_INPUT_PLUGIN, XINE_META_INFO_SYSTEMLAYER, xine_open(), XINE_PARAM_AUDIO_COMPR_LEVEL, XINE_PARAM_AUDIO_VOLUME, xine_set_param(), XINE_SPEED_PAUSE, XINE_STATUS_IDLE, XINE_STATUS_STOP, XINE_STREAM_INFO_AUDIO_HANDLED, XINE_STREAM_INFO_IGNORE_AUDIO, XINE_STREAM_INFO_IGNORE_SPU, XINE_STREAM_INFO_IGNORE_VIDEO, XINE_STREAM_INFO_VIDEO_HANDLED, xine_stream_new(), XINE_TEXTDOMAIN, XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, and xprintf.

Referenced by xine_open().

◆ play_internal()

static int play_internal ( xine_stream_private_t stream,
int  start_pos,
int  start_time 
)
static

◆ set_speed_internal()

static void set_speed_internal ( xine_stream_private_t stream,
int  speed 
)
static

◆ stop_internal()

static void stop_internal ( xine_stream_private_t stream)
static

◆ stream_rewire_audio()

static int stream_rewire_audio ( xine_post_out_t output,
void *  data 
)
static

◆ stream_rewire_video()

static int stream_rewire_video ( xine_post_out_t output,
void *  data 
)
static

◆ ticket_acquire()

static void ticket_acquire ( xine_ticket_t tgen,
int  irrevocable 
)
static

References ticket_acquire_internal().

Referenced by ticket_init().

◆ ticket_acquire_internal()

static int ticket_acquire_internal ( xine_ticket_private_t this,
int  irrevocable,
int  nonblocking 
)
static

◆ ticket_acquire_nonblocking()

static int ticket_acquire_nonblocking ( xine_ticket_t tgen,
int  irrevocable 
)
static

References ticket_acquire_internal().

Referenced by ticket_init().

◆ ticket_dispose()

static void ticket_dispose ( xine_ticket_t tgen)
static

References xine_rwlock_destroy.

Referenced by ticket_init().

◆ ticket_init()

static xine_ticket_t * ticket_init ( void  )
static

◆ ticket_issue()

static void ticket_issue ( xine_ticket_t tgen,
int  flags 
)
static

References xine_rwlock_unlock, and XINE_TICKET_FLAG_PAUSE.

Referenced by ticket_init().

◆ ticket_lock_port_rewiring()

static int ticket_lock_port_rewiring ( xine_ticket_t tgen,
int  ms_timeout 
)
static

◆ ticket_release()

static void ticket_release ( xine_ticket_t tgen,
int  irrevocable 
)
static

References ticket_release_internal().

Referenced by ticket_init().

◆ ticket_release_internal()

static void ticket_release_internal ( xine_ticket_private_t this,
int  irrevocable 
)
static

References _x_assert, and lprintf.

Referenced by ticket_release(), and ticket_release_nonblocking().

◆ ticket_release_nonblocking()

static void ticket_release_nonblocking ( xine_ticket_t tgen,
int  irrevocable 
)
static

References ticket_release_internal().

Referenced by ticket_init().

◆ ticket_renew()

static void ticket_renew ( xine_ticket_t tgen,
int  irrevocable 
)
static

References _x_assert.

Referenced by ticket_init().

◆ ticket_revoke()

static void ticket_revoke ( xine_ticket_t tgen,
int  flags 
)
static

◆ ticket_revoke_cb_register()

static void ticket_revoke_cb_register ( xine_ticket_t tgen,
xine_ticket_revoke_cb_t cb,
void *  user_data 
)
static

References user_data(), and XINE_TICKET_MAX_CB.

Referenced by ticket_init().

◆ ticket_revoke_cb_unregister()

static void ticket_revoke_cb_unregister ( xine_ticket_t tgen,
xine_ticket_revoke_cb_t cb,
void *  user_data 
)
static

References NULL, and user_data().

Referenced by ticket_init().

◆ ticket_unlock_port_rewiring()

static void ticket_unlock_port_rewiring ( xine_ticket_t tgen)
static

References xine_rwlock_unlock.

Referenced by ticket_init().

◆ unlock_run()

static void unlock_run ( xine_stream_private_t stream)
static

◆ video_decoder_update_disable_flush_at_discontinuity()

static void video_decoder_update_disable_flush_at_discontinuity ( void *  s,
xine_cfg_entry_t entry 
)
static

◆ wait_first_frame()

static void wait_first_frame ( xine_stream_private_t stream)
static

◆ xine_close()

void xine_close ( xine_stream_t s)

◆ xine_current_extra_info_get()

static int xine_current_extra_info_get ( xine_stream_private_t stream,
extra_info_t info 
)
static

◆ xine_current_extra_info_reset()

static void xine_current_extra_info_reset ( xine_stream_private_t stream)
static

◆ xine_current_extra_info_set()

void xine_current_extra_info_set ( xine_stream_private_t stream,
const extra_info_t info 
)

◆ xine_dispose()

void xine_dispose ( xine_stream_t s)

◆ xine_dispose_internal()

static void xine_dispose_internal ( xine_stream_private_t stream)
static

◆ xine_eject()

int xine_eject ( xine_stream_t s)

◆ xine_engine_get_param()

int xine_engine_get_param ( xine_t this,
int  param 
)

◆ xine_engine_set_param()

void xine_engine_set_param ( xine_t this,
int  param,
int  value 
)

◆ xine_exit()

void xine_exit ( xine_t this_gen)

◆ xine_get_audio_lang()

int xine_get_audio_lang ( xine_stream_t s,
int  channel,
char *  lang 
)

◆ xine_get_current_frame()

int xine_get_current_frame ( xine_stream_t stream,
int *  width,
int *  height,
int *  ratio_code,
int *  format,
uint8_t *  img 
)

◆ xine_get_current_frame_alloc()

int xine_get_current_frame_alloc ( xine_stream_t stream,
int *  width,
int *  height,
int *  ratio_code,
int *  format,
uint8_t **  img,
int *  img_size 
)

◆ xine_get_current_frame_data()

int xine_get_current_frame_data ( xine_stream_t stream,
xine_current_frame_data_t data,
int  flags 
)

◆ xine_get_current_frame_s()

int xine_get_current_frame_s ( xine_stream_t stream,
int *  width,
int *  height,
int *  ratio_code,
int *  format,
uint8_t *  img,
int *  img_size 
)

◆ xine_get_error()

int xine_get_error ( xine_stream_t s)

◆ xine_get_log()

char *const * xine_get_log ( xine_t this,
int  buf 
)

References NULL, and XINE_LOG_NUM.

◆ xine_get_log_names()

const char *const * xine_get_log_names ( xine_t this)

◆ xine_get_log_section_count()

int xine_get_log_section_count ( xine_t this)

References XINE_LOG_NUM.

◆ xine_get_pos_length()

int xine_get_pos_length ( xine_stream_t s,
int *  pos_stream,
int *  pos_time,
int *  length_time 
)

◆ xine_get_side_stream()

xine_stream_t * xine_get_side_stream ( xine_stream_t master,
int  index 
)

◆ xine_get_spu_lang()

int xine_get_spu_lang ( xine_stream_t s,
int  channel,
char *  lang 
)

◆ xine_get_status()

int xine_get_status ( xine_stream_t s)

◆ xine_init()

void xine_init ( xine_t this_gen)

◆ xine_keyframes_find()

int xine_keyframes_find ( xine_stream_t stream,
xine_keyframes_entry_t pos,
int  offs 
)

Query stream keyframe seek index.

Note
We dont do an expensive file scan. We will only find keyframes listed in container or already seen while playing.
Parameters
streamThe stream that index is for.
posOn call, the start time or normpos. On return, the found time and normpos.
offs0 gets nearest keyframe, other values step from exact given pos.
Returns
0: Found. 1: Search truncated to first or last known keyframe. 2: Failure.

References xine_stream_private_st::array, xine_stream_private_st::index, xine_stream_private_st::lock, xine_keyframes_entry_t::msecs, xine_keyframes_entry_t::normpos, xine_stream_private_st::s, xine_stream_private_st::side_streams, xine_stream_private_st::used, and XINE_ANON_STREAM.

◆ xine_keyframes_get()

xine_keyframes_entry_t * xine_keyframes_get ( xine_stream_t stream,
int *  size 
)

Get a private stream keyframe seek index copy, free () it when done.

Parameters
streamThe stream that index is for.
sizeOn return, the count of entries there are.
Returns
The entry array or NULL.

References xine_stream_private_st::array, xine_stream_private_st::index, xine_stream_private_st::lock, NULL, xine_stream_private_st::s, xine_stream_private_st::side_streams, xine_stream_private_st::used, and XINE_ANON_STREAM.

◆ xine_log()

void xine_log ( xine_t this_gen,
int  buf,
const char *  format,
  ... 
)

◆ xine_new()

xine_t * xine_new ( void  )

◆ xine_new_grab_video_frame()

xine_grab_video_frame_t * xine_new_grab_video_frame ( xine_stream_t stream)

◆ xine_open()

int xine_open ( xine_stream_t s,
const char *  mrl 
)

◆ xine_play()

int xine_play ( xine_stream_t s,
int  start_pos,
int  start_time 
)

◆ xine_register_log_cb()

void xine_register_log_cb ( xine_t this_gen,
xine_log_cb_t  cb,
void *  user_data 
)

References user_data().

◆ xine_set_flags()

void xine_set_flags ( xine_t this_gen,
int  flags 
)

◆ xine_side_dispose_internal()

static void xine_side_dispose_internal ( xine_stream_private_t stream)
static

◆ xine_stop()

void xine_stop ( xine_stream_t s)

◆ xine_stream_master_slave()

int xine_stream_master_slave ( xine_stream_t m,
xine_stream_t slave,
int  affection 
)

◆ xine_stream_new()

xine_stream_t * xine_stream_new ( xine_t this,
xine_audio_port_t ao,
xine_video_port_t vo 
)

References _, _x_audio_decoder_init(), _x_metronom_init(), _x_osd_renderer_init(), _x_spu_misc_init(), _x_video_decoder_init(), _x_video_decoder_shutdown(), _xine_dummy_dest(), xine_stream_private_st::action_lock, xine_stream_private_st::action_pending, xine_stream_private_st::array, xine_stream_s::audio_channel_auto, xine_stream_private_st::audio_channel_user, xine_stream_private_st::audio_decoder_extra_info, xine_stream_private_st::audio_decoder_plugin, xine_stream_private_st::audio_decoder_streamtype, xine_stream_s::audio_out, xine_stream_private_st::audio_source, xine_stream_private_st::broadcaster, xine_stream_private_st::changed, xine_stream_private_st::counter, xine_stream_private_st::current_extra_info_index, xine_post_out_s::data, xine_stream_private_st::delay_finish_event, xine_stream_private_st::demux, xine_stream_private_st::demuxers_running, xine_stream_private_st::disable_decoder_flush_at_discontinuity, xine_video_port_s::driver, xine_stream_private_st::early_finish_event, xine_stream_private_st::ei, xine_stream_private_st::err, xine_stream_private_st::event, metronom_s::exit, xine_stream_private_st::finished_naturally, xine_stream_private_st::finisheds_audio, xine_stream_private_st::finisheds_video, xine_stream_private_st::first_frame, xine_stream_private_st::frontend_lock, xine_stream_private_st::gapless_switch, xine_stream_private_st::headers_audio, xine_stream_private_st::headers_video, xine_stream_private_st::id_flag, xine_stream_private_st::index, xine_stream_private_st::info_lock, xine_stream_private_st::input_caps, xine_stream_private_st::keep_ao_driver_open, xine_stream_private_st::lock, xine_stream_s::master, xine_stream_private_st::max_seek_bufs, xine_stream_private_st::meta_info, xine_stream_private_st::meta_info_public, xine_stream_private_st::meta_lock, xine_stream_s::metronom, xine_post_out_s::name, xine_stream_private_st::nbc, xine_stream_private_st::nbc_refs, NULL, xine_stream_s::osd_renderer, xine_stream_private_st::pair, xine_stream_private_st::query_input_plugins, xine_stream_private_st::queues, xine_stream_private_st::reached, xine_stream_private_st::refs, xine_stream_private_st::resume, xine_post_out_s::rewire, xine_stream_private_st::s, xine_stream_private_st::side_streams, xine_stream_s::slave, xine_stream_private_st::slave_is_subtitle, xine_stream_s::spu_channel, xine_stream_s::spu_channel_auto, xine_stream_s::spu_channel_letterbox, xine_stream_private_st::spu_channel_pan_scan, xine_stream_s::spu_channel_user, xine_stream_s::spu_decoder_plugin, xine_stream_s::spu_decoder_streamtype, xine_stream_private_st::start_buffers_sent, xine_stream_private_st::status, xine_stream_private_st::stream_info, stream_rewire_audio(), stream_rewire_video(), xine_stream_private_st::thread_created, xine_stream_private_st::thread_running, xine_post_out_s::type, xine_stream_private_st::video_channel, xine_stream_private_st::video_decoder_extra_info, xine_stream_private_st::video_decoder_plugin, xine_stream_private_st::video_decoder_streamtype, video_decoder_update_disable_flush_at_discontinuity(), xine_stream_s::video_driver, xine_stream_s::video_out, xine_stream_private_st::video_source, xine_stream_s::xine, xine_dispose_internal(), xine_list_delete(), xine_list_new(), xine_list_push_back(), XINE_NUM_SIDE_STREAMS, XINE_POST_DATA_AUDIO, XINE_POST_DATA_VIDEO, xine_refs_get(), xine_refs_init(), xine_refs_sub(), xine_rwlock_destroy, xine_rwlock_init_default, XINE_STATUS_IDLE, XINE_STREAM_INFO_MAX, XINE_VERBOSITY_DEBUG, and xprintf.

Referenced by external_stream_play(), and open_internal().

◆ xine_vlog()

void xine_vlog ( xine_t this_gen,
int  buf,
const char *  format,
va_list  args 
)

References check_log_alloc().

Referenced by XINE_FORMAT_PRINTF().

Variable Documentation

◆ tab_parse

const uint8_t tab_parse[256]
static
Initial value:
= {
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 0,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8,16, 0, 0, 0, 0,
0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0,
0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}

Referenced by _x_path_looks_like_mrl(), and open_internal().