/**
* This function will create a new picture.
* The picture created will implement a default release management compatible
- * with picture_Yield and picture_Release. This default management will release
+ * with picture_Hold and picture_Release. This default management will release
* picture_sys_t *p_sys field if non NULL.
*/
VLC_EXPORT( picture_t *, picture_New, ( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) );
* This function will increase the picture reference count.
* It will not have any effect on picture obtained from vout
*/
-static inline void picture_Yield( picture_t *p_picture )
+static inline void picture_Hold( picture_t *p_picture )
{
if( p_picture->pf_release )
p_picture->i_refcount++;
/**
* This function will copy both picture dynamic properties and pixels.
- * You have to notice that sometime a simple picture_Yield may do what
+ * You have to notice that sometime a simple picture_Hold may do what
* you want without the copy overhead.
* Provided for convenience.
+ *
+ * \param p_dst pointer to the destination picture.
+ * \param p_src pointer to the source picture.
*/
static inline void picture_Copy( picture_t *p_dst, const picture_t *p_src )
{
* @{
*/
+/**
+ * Video subtitle region spu core private
+ */
+typedef struct subpicture_region_private_t subpicture_region_private_t;
+
/**
* Video subtitle region
*
struct subpicture_region_t
{
video_format_t fmt; /**< format of the picture */
- picture_t picture; /**< picture comprising this region */
+ picture_t *p_picture; /**< picture comprising this region */
int i_x; /**< position of region */
int i_y; /**< position of region */
text_style_t *p_style; /**< a description of the text style formatting */
subpicture_region_t *p_next; /**< next region in the list */
- subpicture_region_t *p_cache; /**< modified version of this region */
+ subpicture_region_private_t *p_private; /**< Private data for spu_t *only* */
};
+/**
+ * This function will create a new subpicture.
+ * You can must use subpicture_region_Delete to destroy it.
+ */
+VLC_EXPORT( subpicture_region_t *, subpicture_region_New, ( const video_format_t *p_fmt ) );
+
+/**
+ * This function will destroy a subpicture allocated by
+ * subpicture_region_New.
+ *
+ * You may give it NULL.
+ */
+VLC_EXPORT( void, subpicture_region_Delete, ( subpicture_region_t *p_region ) );
+
+/**
+ * This function will destroy a list of subpicture allocated by
+ * subpicture_region_New.
+ *
+ * Provided for convenience.
+ */
+VLC_EXPORT( void, subpicture_region_ChainDelete, ( subpicture_region_t *p_head ) );
+
/**
* Video subtitle
*
/** \name Type and flags
Should NOT be modified except by the vout thread */
/**@{*/
+ int64_t i_order; /** an increasing unique number */
int i_type; /**< type */
int i_status; /**< flags */
subpicture_t * p_next; /**< next subtitle to be displayed */
* 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 i_alpha; /**< transparency */
int i_original_picture_width; /**< original width of the movie */
int i_original_picture_height;/**< original height of the movie */
- bool b_absolute; /**< position is absolute */
- int i_flags; /**< position flags */
bool b_subtitle; /**< the picture is a movie subtitle */
+ bool b_absolute; /**< position is absolute */
+ int i_alpha; /**< transparency */
/**@}*/
/** Pointer to function that renders this subtitle in a picture */
void ( *pf_destroy ) ( subpicture_t * );
/** Pointer to functions for region management */
- subpicture_region_t * ( *pf_create_region ) ( vlc_object_t *,
- video_format_t * );
- subpicture_region_t * ( *pf_make_region ) ( vlc_object_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 * );
- void ( *pf_update_regions ) ( video_format_t *, spu_t *,
- subpicture_t *, mtime_t );
+ void (*pf_pre_render) ( spu_t *, subpicture_t *, const video_format_t * );
+ void (*pf_update_regions)( spu_t *,
+ subpicture_t *, const video_format_t *, mtime_t );
/** Private data - the subtitle plugin might want to put stuff here to
* keep track of the subpicture */
* Prototypes
*****************************************************************************/
-/**
- * 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 ) );
-
/**
* Initialise different fields of a picture_t (but does not allocate memory).
* \param p_this a vlc object