]> git.sesse.net Git - vlc/blobdiff - include/video_output.h
Encore un commit venu tout droit des abysses de l'enfer, d�sol� pour
[vlc] / include / video_output.h
index 874d3672f3247d4a1ce4909d56645da1649ff5b6..e61ae7c6eff8173429803dd495c77cce586f669b 100644 (file)
@@ -1,10 +1,27 @@
 /*****************************************************************************
  * video_output.h : video output thread
- * (c)1999 VideoLAN
- *****************************************************************************
  * This module describes the programming interface for video output threads.
  * It includes functions allowing to open a new thread, send pictures to a
  * thread, and destroy a previously oppenned video output thread.
+ *****************************************************************************
+ * Copyright (C) 1999, 2000 VideoLAN
+ *
+ * Authors:
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  *****************************************************************************/
 
 /*****************************************************************************
@@ -61,7 +78,7 @@ typedef struct vout_yuv_s
  * vout_buffer_t: rendering buffer
  *****************************************************************************
  * This structure store informations about a buffer. Buffers are not completely
- * cleared between displays, and modified areas needs to be stored.
+ * cleared between displays, and modified areas need to be stored.
  *****************************************************************************/
 typedef struct vout_buffer_s
 {
@@ -82,11 +99,18 @@ typedef struct vout_buffer_s
  * vout_thread_t: video output thread descriptor
  *****************************************************************************
  * Any independant video output device, such as an X11 window or a GGI device,
- * is represented by a video output thread, and described using following
+ * is represented by a video output thread, and described using the following
  * structure.
  *****************************************************************************/
-typedef void (vout_set_palette_t)( p_vout_thread_t p_vout,
-                                   u16 *red, u16 *green, u16 *blue, u16 *transp );
+typedef int  (vout_sys_create_t)    ( p_vout_thread_t p_vout,
+                                      char *psz_display, int i_root_window );
+typedef int  (vout_sys_init_t)      ( p_vout_thread_t p_vout );
+typedef void (vout_sys_end_t)       ( p_vout_thread_t p_vout );
+typedef void (vout_sys_destroy_t)   ( p_vout_thread_t p_vout );
+typedef int  (vout_sys_manage_t)    ( p_vout_thread_t p_vout );
+typedef void (vout_sys_display_t)   ( p_vout_thread_t p_vout );
+typedef void (vout_set_palette_t)   ( p_vout_thread_t p_vout, u16 *red,
+                                      u16 *green, u16 *blue, u16 *transp );
 
 typedef struct vout_thread_s
 {
@@ -127,12 +151,21 @@ typedef struct vout_thread_s
     u32                 i_gray_pixel;                                /* gray */
     u32                 i_blue_pixel;                                /* blue */
 
+    /* Plugins */
+    void *                  p_vout_plugin;            /* video output plugin */
+    vout_sys_create_t *     p_sys_create;          /* allocate output method */
+    vout_sys_init_t *       p_sys_init;          /* initialize output method */
+    vout_sys_end_t *        p_sys_end;            /* terminate output method */
+    vout_sys_destroy_t *    p_sys_destroy;          /* destroy output method */
+    vout_sys_manage_t *     p_sys_manage;                   /* handle events */
+    vout_sys_display_t *    p_sys_display;         /* display rendered image */
+    vout_set_palette_t *    p_set_palette;              /* sets 8bpp palette */
+
     /* Pictures and rendering properties */
     boolean_t           b_grayscale;           /* color or grayscale display */
     boolean_t           b_info;            /* print additionnal informations */
     boolean_t           b_interface;                     /* render interface */
     boolean_t           b_scale;                    /* allow picture scaling */
-    vout_set_palette_t *p_set_palette;                  /* sets 8bpp palette */
 
     /* Idle screens management */
     mtime_t             last_display_date;     /* last non idle display date */
@@ -143,7 +176,7 @@ typedef struct vout_thread_s
      * good indication of the thread status */
     mtime_t             render_time;             /* last picture render time */
     count_t             c_fps_samples;                     /* picture counts */
-    mtime_t             p_fps_sample[ VOUT_FPS_SAMPLES ];/* FPS samples dates */
+    mtime_t             p_fps_sample[VOUT_FPS_SAMPLES]; /* FPS samples dates */
 #endif
 
     /* Rendering buffers */
@@ -153,11 +186,16 @@ typedef struct vout_thread_s
     /* Videos heap and translation tables */
     picture_t           p_picture[VOUT_MAX_PICTURES];            /* pictures */
     subpicture_t        p_subpicture[VOUT_MAX_PICTURES];      /* subpictures */
+    int                 i_pictures;                     /* current heap size */
     vout_yuv_t          yuv;                           /* translation tables */
 
     /* Bitmap fonts */
     p_vout_font_t       p_default_font;                      /* default font */
     p_vout_font_t       p_large_font;                          /* large font */
+
+    /* Synchronisation informations - synchro level is updated by the vout
+     * thread and read by decoder threads */
+    int                 i_synchro_level;                   /* trashing level */
 } vout_thread_t;
 
 /* Flags for changes - these flags are set in the i_changes field when another
@@ -187,7 +225,7 @@ typedef struct vout_thread_s
  * Prototypes
  *****************************************************************************/
 vout_thread_t * vout_CreateThread       ( char *psz_display, int i_root_window,
-                                          int i_width, int i_height, int *pi_status );
+                                          int i_width, int i_height, int *pi_status, int i_method );
 void            vout_DestroyThread      ( vout_thread_t *p_vout, int *pi_status );
 picture_t *     vout_CreatePicture      ( vout_thread_t *p_vout, int i_type,
                                           int i_width, int i_height );