xine-lib  1.2.9
xine_internal.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2000-2017 the xine project
3  *
4  * This file is part of xine, a free video player.
5  *
6  * xine is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * xine is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19  */
20 
21 #ifndef HAVE_XINE_INTERNAL_H
22 #define HAVE_XINE_INTERNAL_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /*
29  * include public part of xine header
30  */
31 
32 #include <xine.h>
33 #include <xine/refcounter.h>
34 #include <xine/input_plugin.h>
35 #include <xine/demux.h>
36 #include <xine/video_out.h>
37 #include <xine/audio_out.h>
38 #include <xine/metronom.h>
39 #include <xine/osd.h>
40 #include <xine/xineintl.h>
41 #include <xine/plugin_catalog.h>
42 #include <xine/video_decoder.h>
43 #include <xine/audio_decoder.h>
44 #include <xine/spu_decoder.h>
45 #include <xine/scratch.h>
46 #include <xine/broadcaster.h>
47 #include <xine/io_helper.h>
48 #include <xine/info_helper.h>
49 #include <xine/alphablend.h>
50 
51 #define XINE_MAX_EVENT_LISTENERS 50
52 #define XINE_MAX_EVENT_TYPES 100
53 #define XINE_MAX_TICKET_HOLDER_THREADS 64
54 
55 /* used by plugin loader */
56 #define XINE_VERSION_CODE XINE_MAJOR_VERSION*10000+XINE_MINOR_VERSION*100+XINE_SUB_VERSION
57 
58 
59 /*
60  * log constants
61  */
62 
63 #define XINE_LOG_MSG 0 /* warnings, errors, ... */
64 #define XINE_LOG_PLUGIN 1
65 #define XINE_LOG_TRACE 2
66 #define XINE_LOG_NUM 3 /* # of log buffers defined */
67 
68 #define XINE_STREAM_INFO_MAX 99
69 
71 
72 /*
73  * the "big" xine struct, holding everything together
74  */
75 
76 #ifndef XDG_BASEDIR_H
77 /* present here for internal convenience only */
78 typedef struct { void *reserved; } xdgHandle;
79 #endif
80 
81 struct xine_s {
82 
84 
86 
87  int verbosity;
88 
90  char *save_path;
91 
92  /* log output that may be presented to the user */
94 
96  pthread_mutex_t streams_lock;
97 
99 
102 
103 #ifdef XINE_ENGINE_INTERNAL
104  xine_ticket_t *port_ticket;
105  pthread_mutex_t log_lock;
106 
107  xine_log_cb_t log_cb;
108  void *log_cb_user_data;
109 
110  int flags;
111 
112  /* set when pauseing with port ticket granted, for XINE_PARAM_VO_SINGLE_STEP. */
113  int live_pause;
114  pthread_mutex_t pause_mutex;
115  /* special values for set_speed_internal () */
116 # define XINE_LIVE_PAUSE_ON 0x7ffffffd
117 # define XINE_LIVE_PAUSE_OFF 0x7ffffffc
118 #endif
119 };
120 
121 /*
122  * xine thread tickets
123  */
124 
126 
127  /* the ticket owner must assure to check for ticket revocation in
128  * intervals of finite length; this means that you must release
129  * the ticket before any operation that might block
130  *
131  * you must never write to this member directly
132  */
134 
135  /* apply for a ticket; between acquire and relese of an irrevocable
136  * ticket (be sure to pair them properly!), it is guaranteed that you
137  * will never be blocked by ticket revocation */
138  void (*acquire)(xine_ticket_t *self, int irrevocable);
139 
140  /* give a ticket back */
141  void (*release)(xine_ticket_t *self, int irrevocable);
142 
143  /* renew a ticket, when it has been revoked, see ticket_revoked above;
144  * irrevocable must be set to one, if your thread might have acquired
145  * irrevocable tickets you don't know of; set it to zero only when
146  * you know that this is impossible */
147  void (*renew)(xine_ticket_t *self, int irrevocable);
148 
149 #ifdef XINE_ENGINE_INTERNAL
150  /* allow handing out new tickets */
151  void (*issue)(xine_ticket_t *self, int atomic);
152 
153  /* revoke all tickets and deny new ones;
154  * a pair of atomic revoke and issue cannot be interrupted by another
155  * revocation or by other threads acquiring tickets */
156  void (*revoke)(xine_ticket_t *self, int atomic);
157 
158  /* behaves like acquire() but doesn't block the calling thread; when
159  * the thread would have been blocked, 0 is returned otherwise 1
160  * this function acquires a ticket even if ticket revocation is active */
161  int (*acquire_nonblocking)(xine_ticket_t *self, int irrevocable);
162 
163  /* behaves like release() but doesn't block the calling thread; should
164  * be used in combination with acquire_nonblocking() */
165  void (*release_nonblocking)(xine_ticket_t *self, int irrevocable);
166 
167  int (*lock_port_rewiring)(xine_ticket_t *self, int ms_timeout);
168  void (*unlock_port_rewiring)(xine_ticket_t *self);
169 
170  void (*dispose)(xine_ticket_t *self);
171 
172  pthread_mutex_t lock;
173  pthread_mutex_t revoke_lock;
174  pthread_cond_t issued;
175  pthread_cond_t revoked;
176  int tickets_granted;
177  int irrevocable_tickets;
178  int pending_revocations;
179  int atomic_revoke;
180  pthread_t atomic_revoker_thread;
181  pthread_mutex_t port_rewiring_lock;
182  struct {
183  int count;
184  pthread_t holder;
185  } *holder_threads;
186  unsigned holder_thread_count;
187 #endif
188 };
189 
190 /*
191  * xine event queue
192  */
193 
196  pthread_mutex_t lock;
197  pthread_cond_t new_event;
198  pthread_cond_t events_processed;
200  pthread_t *listener_thread;
201  void *user_data;
204 };
205 
206 /*
207  * xine_stream - per-stream parts of the xine engine
208  */
209 
211 
212  /* reference to xine context */
214 
215  /* metronom instance used by current stream */
217 
218  /* demuxers use input_plugin to read data */
220 
221  /* used by video decoders */
223 
224  /* demuxers send data to video decoders using this fifo */
226 
227  /* used by audio decoders */
229 
230  /* demuxers send data to audio decoders using this fifo */
232 
233  /* provide access to osd api */
235 
236  /* master/slave streams */
237  xine_stream_t *master; /* usually a pointer to itself */
239 
240  /* input_dvd uses this one. is it possible to add helper functions instead? */
242 
243  /* dxr3 use this one, should be possible to fix to use the port instead */
245 
246  /* these definitely should be made private! */
253 
254  /* current content detection method, see METHOD_BY_xxx */
256 
257 #ifdef XINE_ENGINE_INTERNAL
258  /* these are private variables, plugins must not access them */
259 
260  int status;
261 
262  /* lock controlling speed change access */
263  pthread_mutex_t speed_change_lock;
264  uint32_t ignore_speed_change:1; /*< speed changes during stop can be disastrous */
265  uint32_t video_thread_created:1;
266  uint32_t audio_thread_created:1;
267  /* 3: wait for first frame to decode (stream start).
268  * 2: wait for first frame to display (stream seek).
269  * 1: after 2, first frame is decoded but not yet displayed.
270  * 0: waiting done.
271  */
272  uint32_t first_frame_flag:2;
273  uint32_t demux_action_pending:1;
274  uint32_t demux_thread_created:1;
275  uint32_t demux_thread_running:1;
276  uint32_t slave_is_subtitle:1; /*< ... and will be automaticaly disposed */
277  uint32_t emergency_brake:1; /*< something went really wrong and this stream must be
278  * stopped. usually due some fatal error on output
279  * layers as they cannot call xine_stop. */
280  uint32_t early_finish_event:1; /*< do not wait fifos get empty before sending event */
281  uint32_t gapless_switch:1; /*< next stream switch will be gapless */
282  uint32_t keep_ao_driver_open:1;
283  uint32_t finished_naturally:1;
284 
285  input_class_t *eject_class;
286  demux_plugin_t *demux_plugin;
287 
288 /* vo_driver_t *video_driver;*/
289  pthread_t video_thread;
290  video_decoder_t *video_decoder_plugin;
291  extra_info_t *video_decoder_extra_info;
292  int video_decoder_streamtype;
293  int video_channel;
294 
295  uint32_t audio_track_map[50];
296  int audio_track_map_entries;
297 
298  int audio_decoder_streamtype;
299  pthread_t audio_thread;
300  audio_decoder_t *audio_decoder_plugin;
301  extra_info_t *audio_decoder_extra_info;
302 
303  uint32_t audio_type;
304  /* *_user: -2 => off
305  -1 => auto (use *_auto value)
306  >=0 => respect the user's choice
307  */
308  int audio_channel_user;
309 /* int audio_channel_auto; */
310 
311 /* spu_decoder_t *spu_decoder_plugin; */
312 /* int spu_decoder_streamtype; */
313  uint32_t spu_track_map[50];
314  int spu_track_map_entries;
315 /* int spu_channel_user; */
316 /* int spu_channel_auto; */
317 /* int spu_channel_letterbox; */
318  int spu_channel_pan_scan;
319 /* int spu_channel; */
320 
321  /* lock for public xine player functions */
322  pthread_mutex_t frontend_lock;
323 
324  /* stream meta information */
325  /* NEVER access directly, use helpers (see info_helper.c) */
326  pthread_mutex_t info_mutex;
327  int stream_info_public[XINE_STREAM_INFO_MAX];
328  int stream_info[XINE_STREAM_INFO_MAX];
329  pthread_mutex_t meta_mutex;
330  char *meta_info_public[XINE_STREAM_INFO_MAX];
331  char *meta_info[XINE_STREAM_INFO_MAX];
332 
333  /* seeking slowdown */
334  pthread_mutex_t first_frame_lock;
335  pthread_cond_t first_frame_reached;
336 
337  /* wait for headers sent / stream decoding finished */
338  pthread_mutex_t counter_lock;
339  pthread_cond_t counter_changed;
340  int header_count_audio;
341  int header_count_video;
342  int finished_count_audio;
343  int finished_count_video;
344 
345  /* event mechanism */
346  xine_list_t *event_queues;
347  pthread_mutex_t event_queues_lock;
348 
349  /* demux thread stuff */
350  pthread_t demux_thread;
351  pthread_mutex_t demux_lock;
352  pthread_mutex_t demux_action_lock;
353  pthread_cond_t demux_resume;
354  pthread_mutex_t demux_mutex; /* used in _x_demux_... functions to synchronize order of pairwise A/V buffer operations */
355 
356  extra_info_t *current_extra_info;
357  pthread_mutex_t current_extra_info_lock;
358  int video_seek_count;
359 
360  int delay_finish_event; /* delay event in 1/10 sec units. 0=>no delay, -1=>forever */
361 
362  int slave_affection; /* what operations need to be propagated down to the slave? */
363 
364  int err;
365 
366  xine_post_out_t video_source;
367  xine_post_out_t audio_source;
368 
369  broadcaster_t *broadcaster;
370 
371  refcounter_t *refcounter;
372 
373  xine_keyframes_entry_t *index_array;
374  int index_size, index_used, index_lastadd;
375  pthread_mutex_t index_mutex;
376 #endif
377 };
378 
379 /* when explicitly noted, some functions accept an anonymous stream,
380  * which is a valid stream that does not want to be addressed. */
381 #define XINE_ANON_STREAM ((xine_stream_t *)-1)
382 
383 typedef struct
384 {
385  int total;
386  int ready;
387  int avail;
388 }
390 
391 typedef struct
392 {
397 }
399 
400 /*
401  * private function prototypes:
402  */
403 
405 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) XINE_PROTECTED;
406 int _x_lock_port_rewiring(xine_t *xine, int ms_to_time_out) XINE_PROTECTED;
408 int _x_lock_frontend(xine_stream_t *stream, int ms_to_time_out) XINE_PROTECTED;
411 int _x_demux_seek(xine_stream_t *stream, off_t start_pos, int start_time, int playing) XINE_PROTECTED;
415 
416 void _x_handle_stream_end (xine_stream_t *stream, int non_user) XINE_PROTECTED;
417 
418 /* report message to UI. usually these are async errors */
419 
420 int _x_message(xine_stream_t *stream, int type, ...) XINE_SENTINEL XINE_PROTECTED;
421 
422 /* flush the message queues */
423 
425 
426 /* extra_info operations */
428 
430 
431 void _x_get_current_info (xine_stream_t *stream, extra_info_t *extra_info, int size) XINE_PROTECTED;
432 
433 
441 
449 
450 
451 /* demuxer helper functions from demux.c */
452 
453 /*
454  * Flush audio and video buffers. It is called from demuxers on
455  * seek/stop, and may be useful when user input changes a stream and
456  * xine-lib has cached buffers that have yet to be played.
457  *
458  * warning: after clearing decoders fifos an absolute discontinuity
459  * indication must be sent. relative discontinuities are likely
460  * to cause "jumps" on metronom.
461  */
463 
464 void _x_demux_control_nop (xine_stream_t *stream, uint32_t flags) XINE_PROTECTED;
465 void _x_demux_control_newpts (xine_stream_t *stream, int64_t pts, uint32_t flags) XINE_PROTECTED;
468 void _x_demux_control_end (xine_stream_t *stream, uint32_t flags) XINE_PROTECTED;
471 int _x_demux_read_header (input_plugin_t *input, void *buffer, off_t size) XINE_PROTECTED;
472 int _x_demux_check_extension (const char *mrl, const char *extensions);
473 
474 off_t _x_read_abort (xine_stream_t *stream, int fd, char *buf, off_t todo) XINE_PROTECTED;
475 
477 
480 
481 void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size,
482  int64_t pts, uint32_t type, uint32_t decoder_flags,
483  int input_normpos, int input_time, int total_time,
484  uint32_t frame_number) XINE_PROTECTED;
485 
487  int size, int64_t pts, uint32_t type,
488  uint32_t decoder_flags, off_t input_normpos,
489  int input_time, int total_time,
490  uint32_t frame_number) XINE_PROTECTED;
491 
492 void _x_demux_send_mrl_reference (xine_stream_t *stream, int alternative,
493  const char *mrl, const char *title,
494  int start_time, int duration) XINE_PROTECTED;
495 
496 /*
497  * MRL escaped-character decoding (overwrites the source string)
498  */
499 void _x_mrl_unescape(char *mrl) XINE_PROTECTED;
500 
501 /*
502  * Return a copy of mrl without authentication credentials
503  */
504 char *_x_mrl_remove_auth(const char *mrl) XINE_PROTECTED;
505 
506 /*
507  * plugin_loader functions
508  *
509  */
510 
511 /* on-demand loading of audio/video/spu decoder plugins */
512 
513 video_decoder_t *_x_get_video_decoder (xine_stream_t *stream, uint8_t stream_type) XINE_PROTECTED;
515 audio_decoder_t *_x_get_audio_decoder (xine_stream_t *stream, uint8_t stream_type) XINE_PROTECTED;
517 spu_decoder_t *_x_get_spu_decoder (xine_stream_t *stream, uint8_t stream_type) XINE_PROTECTED;
519 /* check for decoder availability - but don't try to initialize it */
520 int _x_decoder_available (xine_t *xine, uint32_t buftype) XINE_PROTECTED;
521 
522 /*
523  * load_video_output_plugin
524  *
525  * load a specific video output plugin
526  */
527 
529  const char *id, int visual_type, void *visual) XINE_PROTECTED;
530 
531 /*
532  * audio output plugin dynamic loading stuff
533  */
534 
535 /*
536  * load_audio_output_plugin
537  *
538  * load a specific audio output plugin
539  */
540 
542 
543 
544 void _x_set_speed (xine_stream_t *stream, int speed) XINE_PROTECTED;
545 
547 
548 void _x_set_fine_speed (xine_stream_t *stream, int speed) XINE_PROTECTED;
549 
551 
552 void _x_select_spu_channel (xine_stream_t *stream, int channel) XINE_PROTECTED;
553 
555 
557 
558 /*
559  * internal events
560  */
561 
562 /* sent by dvb frontend to inform ts demuxer of new pids */
563 #define XINE_EVENT_PIDS_CHANGE 0x80000000
564 /* sent by BluRay input plugin to inform ts demuxer about end of clip */
565 #define XINE_EVENT_END_OF_CLIP 0x80000001
566 
567 /*
568  * pids change event - inform ts demuxer of new pids
569  */
570 typedef struct {
571  int vpid; /* video program id */
572  int apid; /* audio program id */
574 
575 #ifdef __cplusplus
576 }
577 #endif
578 
579 #endif
xine_query_buffers_data_t vi
Definition: xine_internal.h:393
input_plugin_t * input_plugin
Definition: xine_internal.h:219
int _x_demux_seek(xine_stream_t *stream, off_t start_pos, int start_time, int playing)
Definition: xine.c:2663
int _x_query_unprocessed_osd_events(xine_stream_t *stream)
Definition: xine.c:2644
xine_video_port_t * video_out
Definition: xine_internal.h:222
void _x_demux_flush_engine(xine_stream_t *stream)
Definition: demux.c:61
int _x_demux_read_send_data(fifo_buffer_t *fifo, input_plugin_t *input, int size, int64_t pts, uint32_t type, uint32_t decoder_flags, off_t input_normpos, int input_time, int total_time, uint32_t frame_number)
Definition: demux.c:695
xine_query_buffers_data_t ai
Definition: xine_internal.h:394
Definition: osd.h:82
void _x_extra_info_merge(extra_info_t *dst, extra_info_t *src)
Definition: xine.c:119
#define XINE_STREAM_INFO_MAX
Definition: xine_internal.h:68
void _x_demux_send_data(fifo_buffer_t *fifo, uint8_t *data, int size, int64_t pts, uint32_t type, uint32_t decoder_flags, int input_normpos, int input_time, int total_time, uint32_t frame_number)
Definition: demux.c:649
Definition: xine_internal.h:194
vo_driver_t * _x_load_video_output_plugin(xine_t *this_gen, const char *id, int visual_type, void *visual)
Definition: load_plugins.c:1864
int _x_lock_port_rewiring(xine_t *xine, int ms_to_time_out)
Definition: xine.c:2625
xine_audio_port_t * audio_out
Definition: xine_internal.h:228
int _x_action_pending(xine_stream_t *stream)
Definition: demux.c:619
Definition: xine_internal.h:391
int spu_channel_auto
Definition: xine_internal.h:250
void _x_mrl_unescape(char *mrl)
Definition: xine.c:868
char * save_path
Definition: xine_internal.h:90
void * reserved
Definition: xine_internal.h:78
Definition: xine_internal.h:125
int audio_channel_auto
Definition: xine_internal.h:247
int _x_decoder_available(xine_t *xine, uint32_t buftype)
Definition: load_plugins.c:2403
int ready
Definition: xine_internal.h:386
pthread_cond_t events_processed
Definition: xine_internal.h:198
int callback_running
Definition: xine_internal.h:203
void _x_handle_stream_end(xine_stream_t *stream, int non_user)
Definition: xine.c:92
void _x_unlock_frontend(xine_stream_t *stream)
Definition: xine.c:2639
int verbosity
Definition: xine_internal.h:87
int _x_message(xine_stream_t *stream, int type,...) XINE_SENTINEL
Definition: xine_interface.c:976
int avail
Definition: xine_internal.h:387
Definition: xine_internal.h:78
void _x_free_spu_decoder(xine_stream_t *stream, spu_decoder_t *decoder)
Definition: load_plugins.c:2564
int _x_keyframes_set(xine_stream_t *stream, xine_keyframes_entry_t *list, int size)
Register a list of stream keyframes.
Definition: xine.c:2838
int spu_channel_user
Definition: xine_internal.h:249
int spu_channel_letterbox
Definition: xine_internal.h:251
fifo_buffer_t * audio_fifo
Definition: xine_internal.h:231
void _x_set_speed(xine_stream_t *stream, int speed)
Definition: xine.c:2097
void _x_trigger_relaxed_frame_drop_mode(xine_stream_t *stream)
Definition: xine.c:2676
Definition: configfile.h:83
Definition: xine.h:235
Definition: xine.h:725
void(* renew)(xine_ticket_t *self, int irrevocable)
Definition: xine_internal.h:147
void _x_flush_events_queues(xine_stream_t *stream)
Definition: xine.c:916
void _x_demux_control_start(xine_stream_t *stream)
Definition: demux.c:262
void(* xine_event_listener_cb_t)(void *user_data, const xine_event_t *event)
Definition: xine.h:2190
void * user_data
Definition: xine_internal.h:201
xine_stream_t * stream
Definition: xine_internal.h:199
int demux_strategy
Definition: xine_internal.h:89
void(* xine_log_cb_t)(void *user_data, int section)
Definition: xine.h:921
spu_decoder_t * _x_get_spu_decoder(xine_stream_t *stream, uint8_t stream_type)
Definition: load_plugins.c:2507
int _x_get_speed(xine_stream_t *stream)
Definition: xine.c:2105
Definition: demux.h:97
Definition: plugin_catalog.h:53
xine_stream_t * slave
Definition: xine_internal.h:238
int spu_decoder_streamtype
Definition: xine_internal.h:248
void _x_demux_control_headers_done(xine_stream_t *stream)
Definition: demux.c:195
int _x_demux_stop_thread(xine_stream_t *stream)
Definition: demux.c:456
xine_stream_t * master
Definition: xine_internal.h:237
void _x_demux_control_nop(xine_stream_t *stream, uint32_t flags)
Definition: demux.c:301
ao_driver_t * _x_load_audio_output_plugin(xine_t *self, const char *id)
Definition: load_plugins.c:2039
Definition: scratch.h:35
void(* release)(xine_ticket_t *self, int irrevocable)
Definition: xine_internal.h:141
xine_query_buffers_data_t ao
Definition: xine_internal.h:396
pthread_mutex_t streams_lock
Definition: xine_internal.h:96
int _x_demux_check_extension(const char *mrl, const char *extensions)
Definition: demux.c:517
Definition: spu_decoder.h:75
void _x_free_video_decoder(xine_stream_t *stream, video_decoder_t *decoder)
Definition: load_plugins.c:2313
xine_list_t * events
Definition: xine_internal.h:195
xine_event_listener_cb_t callback
Definition: xine_internal.h:202
Definition: broadcaster.c:82
char * _x_mrl_remove_auth(const char *mrl)
Definition: xine.c:885
Definition: video_out.h:50
plugin_catalog_t * plugin_catalog
Definition: xine_internal.h:85
Definition: xine_internal.h:210
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)
Definition: xine.c:2534
int _x_get_audio_channel(xine_stream_t *stream)
Definition: audio_decoder.c:552
Definition: metronom.h:71
metronom_t * metronom
Definition: xine_internal.h:216
Definition: refcounter.h:27
Definition: video_out.h:177
#define XINE_SENTINEL
Definition: attributes.h:79
Definition: audio_out.h:45
void _x_free_audio_decoder(xine_stream_t *stream, audio_decoder_t *decoder)
Definition: load_plugins.c:2390
pthread_cond_t new_event
Definition: xine_internal.h:197
Definition: list.c:51
void _x_reset_relaxed_frame_drop_mode(xine_stream_t *stream)
Definition: xine.c:2683
int _x_lock_frontend(xine_stream_t *stream, int ms_to_time_out)
Definition: xine.c:2635
int apid
Definition: xine_internal.h:572
static int input(void)
Definition: goomsl_lex.c:1495
Definition: input_plugin.h:92
int _x_demux_read_header(input_plugin_t *input, void *buffer, off_t size)
Definition: demux.c:494
osd_renderer_t * osd_renderer
Definition: xine_internal.h:234
xine_query_buffers_data_t vo
Definition: xine_internal.h:395
pthread_t * listener_thread
Definition: xine_internal.h:200
#define XINE_PROTECTED
Definition: attributes.h:73
void(* acquire)(xine_ticket_t *self, int irrevocable)
Definition: xine_internal.h:138
config_values_t * config
Definition: xine_internal.h:83
int ticket_revoked
Definition: xine_internal.h:133
Definition: xine_internal.h:570
int content_detection_method
Definition: xine_internal.h:255
int _x_demux_start_thread(xine_stream_t *stream)
Definition: demux.c:425
void _x_unlock_port_rewiring(xine_t *xine)
Definition: xine.c:2630
Definition: metronom.h:237
Definition: xine_internal.h:81
int _x_query_buffers(xine_stream_t *stream, xine_query_buffers_t *query)
Definition: xine.c:2578
int total
Definition: xine_internal.h:385
void _x_extra_info_reset(extra_info_t *extra_info)
Definition: xine.c:115
int _x_keyframes_add(xine_stream_t *stream, xine_keyframes_entry_t *pos)
Register a stream keyframe to seek index.
Definition: xine.c:2756
Definition: input_plugin.h:40
xine_list_t * streams
Definition: xine_internal.h:95
metronom_clock_t * clock
Definition: xine_internal.h:98
#define XINE_LOG_NUM
Definition: xine_internal.h:66
void _x_set_fine_speed(xine_stream_t *stream, int speed)
Definition: xine.c:2076
fifo_buffer_t * video_fifo
Definition: xine_internal.h:225
off_t _x_read_abort(xine_stream_t *stream, int fd, char *buf, off_t todo)
Definition: demux.c:559
Definition: buffer.h:578
xdgHandle basedir_handle
Definition: xine_internal.h:101
void _x_demux_control_newpts(xine_stream_t *stream, int64_t pts, uint32_t flags)
Definition: demux.c:150
xine_t * xine
Definition: xine_internal.h:213
int _x_continue_stream_processing(xine_stream_t *stream)
Definition: xine.c:2670
spu_decoder_t * spu_decoder_plugin
Definition: xine_internal.h:241
Definition: xine_internal.h:383
void _x_action_raise(xine_stream_t *stream)
Definition: demux.c:624
void _x_demux_control_end(xine_stream_t *stream, uint32_t flags)
Definition: demux.c:282
scratch_buffer_t * log_buffers[3]
Definition: xine_internal.h:93
int _x_get_fine_speed(xine_stream_t *stream)
Definition: xine.c:2093
Definition: audio_decoder.h:75
Definition: video_decoder.h:75
pthread_mutex_t lock
Definition: xine_internal.h:196
int _x_get_spu_channel(xine_stream_t *stream)
Definition: xine.c:2436
int vpid
Definition: xine_internal.h:571
Structure to pass information from input or demuxer plugins to output frames (past decoder)...
Definition: buffer.h:314
video_decoder_t * _x_get_video_decoder(xine_stream_t *stream, uint8_t stream_type)
Definition: load_plugins.c:2249
audio_decoder_t * _x_get_audio_decoder(xine_stream_t *stream, uint8_t stream_type)
Definition: load_plugins.c:2327
vo_driver_t * video_driver
Definition: xine_internal.h:244
Definition: audio_out.h:178
void _x_action_lower(xine_stream_t *stream)
Definition: demux.c:632
void _x_demux_send_mrl_reference(xine_stream_t *stream, int alternative, const char *mrl, const char *title, int start_time, int duration)
Definition: demux.c:743
int spu_channel
Definition: xine_internal.h:252
void _x_get_current_info(xine_stream_t *stream, extra_info_t *extra_info, int size)
Definition: xine.c:2060
void _x_select_spu_channel(xine_stream_t *stream, int channel)
Definition: xine.c:1997