]> git.sesse.net Git - vlc/blobdiff - include/video_output.h
* Fixed the BeOS compile typo.
[vlc] / include / video_output.h
index a34bd447e2ef3b5bf69b95056e5e6e6e3f3402be..4c7bcfa970f7e164045b5788db97ed0a307c61ac 100644 (file)
@@ -5,6 +5,7 @@
  * thread, and destroy a previously oppenned video output thread.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
+ * $Id: video_output.h,v 1.61 2001/05/30 17:03:11 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
+/*****************************************************************************
+ * vout_bank_t, p_vout_bank (global variable)
+ *****************************************************************************
+ * This global variable is accessed by any function using the video output.
+ *****************************************************************************/
+typedef struct vout_bank_s
+{
+    /* Array to all the video outputs */
+    struct vout_thread_s *pp_vout[ VOUT_MAX_THREADS ];
+
+    int                   i_count;
+    vlc_mutex_t           lock;                               /* Global lock */
+
+} vout_bank_t;
+
+extern vout_bank_t *p_vout_bank;
+
 /*****************************************************************************
  * vout_yuv_convert_t: YUV conversion function
  *****************************************************************************
@@ -56,9 +74,9 @@ typedef void (yuv_end_t)            ( p_vout_thread_t p_vout );
 typedef struct vout_yuv_s
 {
     /* conversion functions */
-    vout_yuv_convert_t *        p_Convert420;         /* YUV 4:2:0 converter */
-    vout_yuv_convert_t *        p_Convert422;         /* YUV 4:2:2 converter */
-    vout_yuv_convert_t *        p_Convert444;         /* YUV 4:4:4 converter */
+    vout_yuv_convert_t *pf_yuv420;                    /* YUV 4:2:0 converter */
+    vout_yuv_convert_t *pf_yuv422;                    /* YUV 4:2:2 converter */
+    vout_yuv_convert_t *pf_yuv444;                    /* YUV 4:4:4 converter */
 
     /* Pre-calculated conversion tables */
     void *              p_base;            /* base for all conversion tables */
@@ -105,6 +123,28 @@ typedef struct vout_buffer_s
     byte_t *    p_data;                                    /* memory address */
 } vout_buffer_t;
 
+/*****************************************************************************
+ * vout_fifo_t
+ *****************************************************************************/
+typedef struct vout_fifo_s
+{
+    /* See the fifo types below */
+    int                 i_type;
+    boolean_t           b_die;
+    int                 i_fifo;      /* Just to keep track of the fifo index */
+
+    int                 i_width;
+    int                 i_height;
+
+    vlc_mutex_t         data_lock;
+    vlc_cond_t          data_wait;
+
+} vout_fifo_t;
+
+#define VOUT_EMPTY_FIFO         0
+#define VOUT_YUV_FIFO           1
+#define VOUT_SPU_FIFO           2
+
 /*****************************************************************************
  * vout_thread_t: video output thread descriptor
  *****************************************************************************
@@ -155,20 +195,23 @@ typedef struct vout_thread_s
 
     /* Plugin used and shortcuts to access its capabilities */
     struct module_s *   p_module;
-    int              ( *pf_create )     ( struct vout_thread_s * );
-    int              ( *pf_init )       ( struct vout_thread_s * );
-    void             ( *pf_end )        ( struct vout_thread_s * );
-    void             ( *pf_destroy )    ( struct vout_thread_s * );
-    int              ( *pf_manage )     ( struct vout_thread_s * );
-    void             ( *pf_display )    ( struct vout_thread_s * );
-    void             ( *pf_setpalette ) ( struct vout_thread_s *, u16 *red,
-                                          u16 *green, u16 *blue, u16 *transp );
+    int  ( *pf_create )     ( struct vout_thread_s * );
+    int  ( *pf_init )       ( struct vout_thread_s * );
+    void ( *pf_end )        ( struct vout_thread_s * );
+    void ( *pf_destroy )    ( struct vout_thread_s * );
+    int  ( *pf_manage )     ( struct vout_thread_s * );
+    void ( *pf_display )    ( struct vout_thread_s * );
+    void ( *pf_setpalette ) ( struct vout_thread_s *, u16 *red,
+                              u16 *green, u16 *blue, u16 *transp );
+    void ( *pf_setbuffers ) ( struct vout_thread_s *, void *, void * );
 
     /* Pictures and rendering properties */
     boolean_t           b_grayscale;           /* color or grayscale display */
+    boolean_t           b_YCbr;            /* use YUV to YCbr instead of RGB */
     boolean_t           b_info;              /* print additional information */
     boolean_t           b_interface;                     /* render interface */
     boolean_t           b_scale;                    /* allow picture scaling */
+    boolean_t           b_fullscreen;           /* toogle fullscreen dusplay */
     mtime_t             render_time;             /* last picture render time */
 
 
@@ -232,8 +275,16 @@ typedef struct vout_thread_s
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
+void            vout_InitBank           ( void );
+void            vout_EndBank            ( void );
+
 vout_thread_t * vout_CreateThread   ( int *pi_status );
 void            vout_DestroyThread  ( vout_thread_t *p_vout, int *pi_status );
+
+vout_fifo_t *   vout_CreateFifo         ( void );
+void            vout_DestroyFifo        ( vout_fifo_t *p_fifo );
+void            vout_FreeFifo           ( vout_fifo_t *p_fifo );
+
 picture_t *     vout_CreatePicture  ( vout_thread_t *p_vout, int i_type,
                                       int i_width, int i_height );
 void            vout_DestroyPicture ( vout_thread_t *p_vout, picture_t *p_pic );
@@ -246,5 +297,3 @@ subpicture_t *  vout_CreateSubPicture   ( vout_thread_t *p_vout, int i_type, int
 void            vout_DestroySubPicture  ( vout_thread_t *p_vout, subpicture_t *p_subpic );
 void            vout_DisplaySubPicture  ( vout_thread_t *p_vout, subpicture_t *p_subpic );
 
-void            vout_SetBuffers         ( vout_thread_t *p_vout, void *p_buf1, void *p_buf2 );
-