1 /*******************************************************************************
2 * video_output.h : video output thread
4 *******************************************************************************
5 * This module describes the programming interface for video output threads.
6 * It includes functions allowing to open a new thread, send pictures to a
7 * thread, and destroy a previously oppenned video output thread.
8 *******************************************************************************/
10 /*******************************************************************************
11 * vout_thread_t: video output thread descriptor
12 *******************************************************************************
13 * Any independant video output device, such as an X11 window or a GGI device,
14 * is represented by a video output thread, and described using following
16 *******************************************************************************/
17 typedef struct vout_thread_s
19 /* Thread properties and locks */
20 boolean_t b_die; /* `die' flag */
21 boolean_t b_error; /* `error' flag */
22 boolean_t b_active; /* `active' flag */
23 pthread_t thread_id; /* id for pthread functions */
24 pthread_mutex_t lock; /* thread lock */
25 int * pi_status; /* temporary status flag */
27 /* Common display properties */
28 boolean_t b_info; /* print additionnal informations */
29 boolean_t b_grayscale; /* color or grayscale display */
30 int i_width; /* current output method width */
31 int i_height; /* current output method height */
32 int i_bytes_per_line;/* bytes per line (including virtual) */
33 int i_screen_depth; /* bits per pixel */
34 int i_bytes_per_pixel; /* real screen depth */
35 float f_x_ratio; /* horizontal display ratio */
36 float f_y_ratio; /* vertical display ratio */
40 count_t c_loops; /* number of loops */
41 count_t c_idle_loops; /* number of idle loops */
42 count_t c_pictures; /* number of pictures added to heap */
45 mtime_t fps_sample[ VOUT_FPS_SAMPLES ]; /* samples dates */
46 int i_fps_index; /* index in samples */
50 /* Video debugging informations */
51 mtime_t picture_render_time; /* last picture rendering time */
55 p_vout_sys_t p_sys; /* system output method */
58 int i_pictures; /* current heap size */
59 picture_t p_picture[VOUT_MAX_PICTURES]; /* pictures */
61 /* YUV translation tables, for 15,16 and 24/32 bpp displays. 16 bits and 32
62 * bits pointers points on the same data.
63 * CAUTION: these tables are translated: their origin is -384 */
65 u16 * pi_trans16_green;
66 u16 * pi_trans16_blue;
68 u32 * pi_trans32_green;
69 u32 * pi_trans32_blue;
72 /*******************************************************************************
74 *******************************************************************************/
75 vout_thread_t * vout_CreateThread (
77 char *psz_display, Window root_window,
79 int i_width, int i_height, int *pi_status
82 void vout_DestroyThread ( vout_thread_t *p_vout, int *pi_status );
84 picture_t * vout_CreatePicture ( vout_thread_t *p_vout, int i_type,
85 int i_width, int i_height, int i_bytes_per_line );
86 void vout_DestroyPicture ( vout_thread_t *p_vout, picture_t *p_pic );
87 void vout_DisplayPicture ( vout_thread_t *p_vout, picture_t *p_pic );
88 void vout_LinkPicture ( vout_thread_t *p_vout, picture_t *p_pic );
89 void vout_UnlinkPicture ( vout_thread_t *p_vout, picture_t *p_pic );