]> git.sesse.net Git - vlc/blob - include/video_output.h
4f974bb3f27e7779e1a7cfc3d8300b96646e10cc
[vlc] / include / video_output.h
1 /*******************************************************************************
2  * video_output.h : video output thread
3  * (c)1999 VideoLAN
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  *******************************************************************************/
9
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 
15  * structure.
16  *******************************************************************************/
17 typedef struct vout_thread_s
18 {
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 */
26
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 */
37
38 #ifdef STATS    
39     /* Statistics */
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 */
43
44     /* FPS */
45     mtime_t             fps_sample[ VOUT_FPS_SAMPLES ];       /* samples dates */
46     int                 i_fps_index;                       /* index in samples */
47 #endif
48
49 #ifdef DEBUG_VIDEO
50     /* Video debugging informations */
51     mtime_t             picture_render_time;    /* last picture rendering time */
52 #endif
53
54     /* Output method */
55     p_vout_sys_t        p_sys;                         /* system output method */
56
57     /* Video heap */
58     int                 i_pictures;                       /* current heap size */
59     picture_t           p_picture[VOUT_MAX_PICTURES];              /* pictures */
60
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 */
64     u16 *               pi_trans16_red;
65     u16 *               pi_trans16_green;
66     u16 *               pi_trans16_blue;
67     u32 *               pi_trans32_red;
68     u32 *               pi_trans32_green;
69     u32 *               pi_trans32_blue;          
70 } vout_thread_t;
71
72 /*******************************************************************************
73  * Prototypes
74  *******************************************************************************/
75 vout_thread_t * vout_CreateThread               ( 
76 #ifdef VIDEO_X11
77                                                   char *psz_display, Window root_window, 
78 #endif
79                                                   int i_width, int i_height, int *pi_status
80                                                 );
81
82 void            vout_DestroyThread              ( vout_thread_t *p_vout, int *pi_status );
83
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 );
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106