]> git.sesse.net Git - vlc/blobdiff - include/vlc_vout.h
Forgiven in the previous commit (useless test)
[vlc] / include / vlc_vout.h
index 2527466cb2962b70eff91f874e8652964af05672..30baf2517827185f3b73f55ae10d33f482ed1e96 100644 (file)
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
+
+#if !defined( __LIBVLC__ )
+  #error You are not libvlc or one of its plugins. You cannot include this file
+#endif
+
 #ifndef _VLC_VOUT_H_
 #define _VLC_VOUT_H_ 1
 
@@ -81,7 +86,7 @@ struct picture_t
      * These properties can be modified using the video output thread API,
      * but should never be written directly */
     /**@{*/
-    int             i_refcount;                  /**< link reference counter */
+    unsigned        i_refcount;                  /**< link reference counter */
     mtime_t         date;                                  /**< display date */
     vlc_bool_t      b_force;
     /**@}*/
@@ -208,6 +213,7 @@ struct subpicture_region_t
     int             i_align;                  /**< alignment within a region */
 
     char            *psz_text;       /**< text string comprising this region */
+    char            *psz_html;       /**< HTML version of subtitle (NULL = use psz_text) */
     text_style_t    *p_style;  /* a description of the text style formatting */
 
     subpicture_region_t *p_next;                /**< next region in the list */
@@ -278,6 +284,10 @@ struct subpicture_t
                                                 video_format_t *, picture_t * );
     void ( *pf_destroy_region ) ( vlc_object_t *, subpicture_region_t * );
 
+    void ( *pf_pre_render ) ( video_format_t *, spu_t *, subpicture_t *, mtime_t );
+    subpicture_region_t * ( *pf_update_regions ) ( video_format_t *, spu_t *,
+                                                   subpicture_t *, mtime_t );
+
     /** Private data - the subtitle plugin might want to put stuff here to
      * keep track of the subpicture */
     subpicture_sys_t *p_sys;                              /* subpicture data */
@@ -300,6 +310,11 @@ struct subpicture_t
 #define SUBPICTURE_ALIGN_RIGHT 0x2
 #define SUBPICTURE_ALIGN_TOP 0x4
 #define SUBPICTURE_ALIGN_BOTTOM 0x8
+#define SUBPICTURE_ALIGN_MASK ( SUBPICTURE_ALIGN_LEFT|SUBPICTURE_ALIGN_RIGHT| \
+                                SUBPICTURE_ALIGN_TOP |SUBPICTURE_ALIGN_BOTTOM )
+
+/* Subpicture rendered flag - should only be used by vout_subpictures */
+#define SUBPICTURE_RENDERED  0x10
 
 /*****************************************************************************
  * Prototypes
@@ -393,6 +408,7 @@ struct vout_thread_t
     vlc_mutex_t         picture_lock;                 /**< picture heap lock */
     vlc_mutex_t         subpicture_lock;           /**< subpicture heap lock */
     vlc_mutex_t         change_lock;                 /**< thread change lock */
+    vlc_mutex_t         vfilter_lock;         /**< video filter2 change lock */
     vout_sys_t *        p_sys;                     /**< system output method */
     /**@}*/
 
@@ -486,6 +502,14 @@ struct vout_thread_t
 
     /* Misc */
     vlc_bool_t       b_snapshot;     /**< take one snapshot on the next loop */
+
+    /* Video output configuration */
+    config_chain_t *p_cfg;
+
+    /* Show media title on videoutput */
+    vlc_bool_t      b_title_show;
+    mtime_t         i_title_timeout;
+    int             i_title_position;
 };
 
 #define I_OUTPUTPICTURES p_vout->output.i_pictures
@@ -597,7 +621,8 @@ enum output_query_e
     VOUT_SNAPSHOT,
     VOUT_CLOSE,
     VOUT_SET_FOCUS,         /* arg1= vlc_bool_t       res=    */
-    VOUT_SET_VIEWPORT       /* arg1= view rect, arg2=clip rect, res= */
+    VOUT_SET_VIEWPORT,      /* arg1= view rect, arg2=clip rect, res= */
+    VOUT_REDRAW_RECT,       /* arg1= area rect, res= */
 };
 
 typedef struct snapshot_t {