#ifndef _VOUT_INTERNAL_H
#define _VOUT_INTERNAL_H 1
+#include "vout_control.h"
+
+/* Number of pictures required to computes the FPS rate */
+#define VOUT_FPS_SAMPLES 20
+
+/* */
struct vout_thread_sys_t
{
+ /* Thread & synchronization */
+ vlc_thread_t thread;
+ vlc_cond_t change_wait;
+ bool b_ready;
+ bool b_done;
+
+ /* */
+ bool b_picture_displayed;
+ bool b_picture_empty;
+ mtime_t i_picture_displayed_date;
+ picture_t *p_picture_displayed;
+ int i_picture_qtype;
+ vlc_cond_t picture_wait;
+
/* */
- vlc_mutex_t vfilter_lock; /**< video filter2 change lock */
+ vlc_mutex_t vfilter_lock; /**< video filter2 change lock */
/* */
- 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 */
+ 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;
+ 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
+ int i_picture_lost;
+ int i_picture_displayed;
- /** delay created by internal caching */
- int i_pts_delay;
+ /* Pause */
+ bool b_paused;
+ mtime_t i_pause_date;
/* Filter chain */
char *psz_filter_chain;
bool b_title_show;
mtime_t i_title_timeout;
int i_title_position;
+
+ char *psz_title;
};
/* 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 * );
+/* 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_UsePictureLocked( vout_thread_t *p_vout, picture_t *p_pic );
+
+int vout_Snapshot( vout_thread_t *, picture_t *p_pic );
#endif