]> git.sesse.net Git - vlc/blobdiff - include/video_output.h
* ALL: Major rework of the subpictures architecture.
[vlc] / include / video_output.h
index cb7ad255cbcac4fe05c9e5be4af967fc4e05baa0..bd9c0094d2462a8f9eb074eb58fb935cc6056195 100644 (file)
@@ -123,14 +123,26 @@ struct vout_thread_t
     vout_chroma_t       chroma;                      /**< translation tables */
     /**@}*/
 
-    /* Picture and subpicture heaps */
+    /* Picture heap */
     picture_t           p_picture[2*VOUT_MAX_PICTURES+1];      /**< pictures */
+
+    /* Subpicture properties */
     subpicture_t        p_subpicture[VOUT_MAX_PICTURES];    /**< subpictures */
     subpicture_t        *p_default_channel;   /**< subpicture in the default
                                                    channel */
     int                 i_channel_count;       /**< index of last subpicture
                                                     channel registered */
 
+    filter_t *p_blend;                            /**< alpha blending module */
+    filter_t *p_text;                              /**< text renderer module */
+
+    vlc_bool_t b_force_crop;               /**< force cropping of subpicture */
+    int i_crop_x, i_crop_y, i_crop_width, i_crop_height;       /**< cropping */
+
+    vlc_bool_t b_force_alpha;         /**< force alpha palette of subpicture */
+    uint8_t pi_alpha[4];                           /**< forced alpha palette */
+
+
     /* Statistics */
     count_t          c_loops;
     count_t          c_pictures, c_late_pictures;
@@ -144,15 +156,6 @@ struct vout_thread_t
     /* Filter chain */
     char *psz_filter_chain;
     vlc_bool_t b_filter_change;
-
-    /* text renderer data */
-    text_renderer_sys_t * p_text_renderer_data;        /**< private data for
-                                                           the text renderer */
-    module_t *            p_text_renderer_module;  /**< text renderer module */
-    /** callback used when a new string needs to be shown on the vout */
-    subpicture_t * ( *pf_add_string ) ( vout_thread_t *, int, char *,
-                                        text_style_t *, int, int, int, mtime_t,
-                                        mtime_t );
 };
 
 #define I_OUTPUTPICTURES p_vout->output.i_pictures
@@ -268,10 +271,16 @@ VLC_EXPORT( void,            vout_DestroySubPicture,  ( vout_thread_t *, subpict
 VLC_EXPORT( void,            vout_DisplaySubPicture,  ( vout_thread_t *, subpicture_t * ) );
 VLC_EXPORT( int,             vout_RegisterOSDChannel, ( vout_thread_t * ) );
 VLC_EXPORT( void,            vout_ClearOSDChannel,    ( vout_thread_t *, int ) );
-
-subpicture_t *  vout_SortSubPictures    ( vout_thread_t *, mtime_t );
-void            vout_RenderSubPictures  ( vout_thread_t *, picture_t *,
-                                                           subpicture_t * );
+#define spu_CreateRegion(a,b) __spu_CreateRegion(VLC_OBJECT(a),b)
+VLC_EXPORT( subpicture_region_t *,__spu_CreateRegion, ( vlc_object_t *, video_format_t * ) );
+#define spu_DestroyRegion(a,b) __spu_DestroyRegion(VLC_OBJECT(a),b)
+VLC_EXPORT( void, __spu_DestroyRegion, ( vlc_object_t *, subpicture_region_t * ) );
+
+void           vout_InitSPU( vout_thread_t * );
+void           vout_DestroySPU( vout_thread_t * );
+subpicture_t * vout_SortSubPictures  ( vout_thread_t *, mtime_t );
+void           vout_RenderSubPictures( vout_thread_t *, picture_t *,
+                                       subpicture_t * );
 /** @}*/
 /**
  * @}