]> git.sesse.net Git - vlc/blobdiff - include/vlc_video.h
All: change of text-renderer api. Now pf_render_text takes a subpicture and
[vlc] / include / vlc_video.h
index ac88d5723c1424b8767fc708ba3a4f3026aabd4d..0dd885e038840d21f3cfcc4669db4fcc6219451c 100644 (file)
@@ -3,7 +3,7 @@
  * This header is required by all modules which have to handle pictures. It
  * includes all common video types and constants.
  *****************************************************************************
- * Copyright (C) 1999, 2000 VideoLAN
+ * Copyright (C) 1999 - 2005 VideoLAN
  * $Id$
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
@@ -35,13 +35,14 @@ typedef struct plane_t
     uint8_t *p_pixels;                        /**< Start of the plane's data */
 
     /* Variables used for fast memcpy operations */
-    int i_lines;                                        /**< Number of lines */
+    int i_lines;           /**< Number of lines, including margins */
     int i_pitch;           /**< Number of bytes in a line, including margins */
 
     /** Size of a macropixel, defaults to 1 */
     int i_pixel_pitch;
 
     /* Variables used for pictures with margins */
+    int i_visible_lines;            /**< How many visible lines are there ? */
     int i_visible_pitch;            /**< How many visible pixels are there ? */
 
 } plane_t;
@@ -203,12 +204,15 @@ struct subpicture_region_t
     video_format_t  fmt;                          /**< format of the picture */
     picture_t       picture;             /**< picture comprising this region */
 
+    char            *psz_text;       /**< text string comprising this region */
+
     int             i_x;                             /**< position of region */
     int             i_y;                             /**< position of region */
-
+    int i_font_color, i_font_opacity;     /**< controls for text subpictures */
+    int i_font_size;
     subpicture_region_t *p_next;                /**< next region in the list */
+    subpicture_region_t *p_cache;       /**< modified version of this region */
     /**@}*/
-
 };
 
 /**
@@ -238,9 +242,9 @@ struct subpicture_t
     /**@{*/
     mtime_t         i_start;                  /**< beginning of display date */
     mtime_t         i_stop;                         /**< end of display date */
-    vlc_bool_t      b_ephemer;     /**< If this flag is set to true
-                                      the subtitle will be displayed
-                                      untill the next one appear */
+    vlc_bool_t      b_ephemer;    /**< If this flag is set to true the subtitle
+                                will be displayed untill the next one appear */
+    vlc_bool_t      b_fade;                               /**< enable fading */
     /**@}*/
 
     subpicture_region_t *p_region;  /**< region list composing this subtitle */
@@ -250,12 +254,15 @@ struct subpicture_t
      * changed by the video output thread, or simply ignored depending of the
      * subtitle type. */
     /**@{*/
-    int             i_x;                 /**< offset from alignment position */
-    int             i_y;                 /**< offset from alignment position */
-    int             i_width;                              /**< picture width */
-    int             i_height;                            /**< picture height */
-    int             b_absolute;                    /**< position is absolute */
-    int             i_flags;                             /**< position flags */
+    int          i_x;                    /**< offset from alignment position */
+    int          i_y;                    /**< offset from alignment position */
+    int          i_width;                                 /**< picture width */
+    int          i_height;                               /**< picture height */
+    int          i_alpha;                                  /**< transparency */
+    int          i_original_picture_width;  /**< original width of the movie */
+    int          i_original_picture_height;/**< original height of the movie */
+    int          b_absolute;                       /**< position is absolute */
+    int          i_flags;                                /**< position flags */
      /**@}*/
 
     /** Pointer to function that renders this subtitle in a picture */
@@ -285,18 +292,55 @@ struct subpicture_t
 #define RESERVED_SUBPICTURE    1                   /* allocated and reserved */
 #define READY_SUBPICTURE       2                        /* ready for display */
 
+/* Subpicture position flags */
+#define SUBPICTURE_ALIGN_LEFT 0x1
+#define SUBPICTURE_ALIGN_RIGHT 0x2
+#define SUBPICTURE_ALIGN_TOP 0x4
+#define SUBPICTURE_ALIGN_BOTTOM 0x8
+
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
 /**
- * vout_AspectRatio
+ * vout_CopyPicture
+ *
+ * Copy the source picture onto the destination picture.
+ * \param p_this a vlc object
+ * \param p_dst pointer to the destination picture.
+ * \param p_src pointer to the source picture.
+ */
+#define vout_CopyPicture(a,b,c) __vout_CopyPicture(VLC_OBJECT(a),b,c)
+VLC_EXPORT( void, __vout_CopyPicture, ( vlc_object_t *p_this, picture_t *p_dst, picture_t *p_src ) );
+
+/**
+ * vout_InitPicture
+ *
+ * Initialise different fields of a picture_t (but does not allocate memory).
+ * \param p_this a vlc object
+ * \param p_pic pointer to the picture structure.
+ * \param i_chroma the wanted chroma for the picture.
+ * \param i_width the wanted width for the picture.
+ * \param i_height the wanted height for the picture.
+ * \param i_aspect the wanted aspect ratio for the picture.
+ */
+#define vout_InitPicture(a,b,c,d,e,f) \
+        __vout_InitPicture(VLC_OBJECT(a),b,c,d,e,f)
+VLC_EXPORT( int, __vout_InitPicture, ( vlc_object_t *p_this, picture_t *p_pic, uint32_t i_chroma, int i_width, int i_height, int i_aspect ) );
+
+/**
+ * vout_AllocatePicture
  *
- * Set the i_aspect_x and i_aspect_y from the encoded aspect ratio i_aspect.
- * \param i_aspect the encoded aspect ratio
- * \param i_aspect_x the decoded x-axis portion of i_aspect. This is set.
- * \param i_aspect_y the decoded y-axis portion of i_aspect  This is set.
+ * Initialise different fields of a picture_t and allocates the picture buffer.
+ * \param p_this a vlc object
+ * \param p_pic pointer to the picture structure.
+ * \param i_chroma the wanted chroma for the picture.
+ * \param i_width the wanted width for the picture.
+ * \param i_height the wanted height for the picture.
+ * \param i_aspect the wanted aspect ratio for the picture.
  */
-VLC_EXPORT( void,  vout_AspectRatio, ( unsigned int i_aspect, unsigned int *i_aspect_x, unsigned int *i_aspect_y ) );
+#define vout_AllocatePicture(a,b,c,d,e,f) \
+        __vout_AllocatePicture(VLC_OBJECT(a),b,c,d,e,f)
+VLC_EXPORT( int, __vout_AllocatePicture,( vlc_object_t *p_this, picture_t *p_pic, uint32_t i_chroma, int i_width, int i_height, int i_aspect ) );
 
 /**@}*/