#ifndef _VOUT_INTERNAL_H
#define _VOUT_INTERNAL_H 1
+#include "vout_control.h"
+#include "snapshot.h"
+#include "statistic.h"
+
+/* Number of pictures required to computes the FPS rate */
+#define VOUT_FPS_SAMPLES 20
+
+/* */
struct vout_thread_sys_t
{
+ /* module */
+ const char *psz_module_type;
+ char *psz_module_name;
+
+ /* Thread & synchronization */
+ vlc_thread_t thread;
+ vlc_cond_t change_wait;
+ bool b_ready;
+ bool b_done;
+
/* */
- vlc_mutex_t vfilter_lock; /**< video filter2 change lock */
+ bool b_picture_displayed;
+ bool b_picture_empty;
+ mtime_t i_picture_displayed_date;
+ picture_t *p_picture_displayed;
+ int i_picture_qtype;
+ bool b_picture_interlaced;
+ vlc_cond_t picture_wait;
/* */
- uint32_t render_time; /**< last picture render time */
- unsigned int i_par_num; /**< monitor pixel aspect-ratio */
- unsigned int i_par_den; /**< monitor pixel aspect-ratio */
+ vlc_mutex_t vfilter_lock; /**< video filter2 change lock */
/* */
- bool b_direct; /**< rendered are like direct ? */
- filter_t *p_chroma;
+ uint32_t render_time; /**< last picture render time */
+ unsigned int i_par_num; /**< monitor pixel aspect-ratio */
+ unsigned int i_par_den; /**< monitor pixel aspect-ratio */
+
+ /* */
+ bool b_direct; /**< rendered are like direct ? */
+ filter_t *p_chroma;
/**
* These numbers are not supposed to be accurate, but are a
* good indication of the thread status */
- count_t c_fps_samples; /**< picture counts */
- mtime_t p_fps_sample[VOUT_FPS_SAMPLES]; /**< FPS samples dates */
+ count_t c_fps_samples; /**< picture counts */
+ mtime_t p_fps_sample[VOUT_FPS_SAMPLES]; /**< FPS samples dates */
-#if 0
/* Statistics */
- count_t c_loops;
- count_t c_pictures, c_late_pictures;
- mtime_t display_jitter; /**< average deviation from the PTS */
- count_t c_jitter_samples; /**< number of samples used
- for the calculation of the jitter */
-#endif
+ vout_statistic_t statistic;
/* Pause */
bool b_paused;
mtime_t i_pause_date;
- /** delay created by internal caching */
- int i_pts_delay;
-
/* Filter chain */
+ bool b_first_vout; /* True if it is the first vout of the filter chain */
char *psz_filter_chain;
bool b_filter_change;
filter_chain_t *p_vf2_chain;
char *psz_vf2;
- /* Misc */
- bool b_snapshot; /**< take one snapshot on the next loop */
+ /* Snapshot interface */
+ vout_snapshot_t snapshot;
/* Show media title on videoutput */
bool b_title_show;
mtime_t i_title_timeout;
int i_title_position;
+
+ char *psz_title;
+
+ /* */
+ vlc_mouse_t mouse;
};
/* DO NOT use vout_RenderPicture unless you are in src/video_ouput */
picture_t *vout_RenderPicture( vout_thread_t *, picture_t *,
- subpicture_t *, bool b_paused );
-
-/* DO NOT use vout_CountPictureAvailable unless your are in src/input/decoder.c (no exception) */
-int vout_CountPictureAvailable( vout_thread_t * );
+ subpicture_t *,
+ mtime_t render_date );
-/**
- * This function will (un)pause the display of pictures.
- * It is thread safe
+/* DO NOT use vout_UsePictureLocked unless you are in src/video_ouput
+ *
+ * This function supposes that you call it with picture_lock taken.
*/
-void vout_ChangePause( vout_thread_t *, bool b_paused, mtime_t i_date );
+void vout_UsePictureLocked( vout_thread_t *p_vout, picture_t *p_pic );
#endif