X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_picture.h;h=ae7c84a6d9bbad2fc17c72e61f8c1eeb3edc89dc;hb=6b2334c42bd6189f57bb2413b5143d7625daded5;hp=ef79f5045680cef96446c8717bc4759809d95e2e;hpb=a1cd0034ec523e53a534c6b25766327659ae3361;p=vlc diff --git a/include/vlc_picture.h b/include/vlc_picture.h index ef79f50456..ae7c84a6d9 100644 --- a/include/vlc_picture.h +++ b/include/vlc_picture.h @@ -51,6 +51,11 @@ typedef struct plane_t } plane_t; +/** + * Maximum number of plane for a picture + */ +#define PICTURE_PLANE_MAX (VOUT_MAX_PLANES) + /** * A private definition to help overloading picture release */ @@ -76,7 +81,7 @@ struct picture_t * wishes, it can even swap p_pixels buffers. */ uint8_t *p_data; void *p_data_orig; /**< pointer before memalign */ - plane_t p[ VOUT_MAX_PLANES ]; /**< description of the planes */ + plane_t p[PICTURE_PLANE_MAX]; /**< description of the planes */ int i_planes; /**< number of allocated planes */ /** \name Type and flags @@ -132,6 +137,40 @@ struct picture_t */ VLC_EXPORT( picture_t *, picture_New, ( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect ) ); +/** + * This function will create a new picture using the given format. + * + * When possible, it is prefered to use this function over picture_New + * as more information about the format is kept. + */ +VLC_EXPORT( picture_t *, picture_NewFromFormat, ( const video_format_t *p_fmt ) ); + +/** + * Resource for a picture. + */ +typedef struct +{ + picture_sys_t *p_sys; + + /* Plane resources + * XXX all fields MUST be set to the right value. + */ + struct + { + uint8_t *p_pixels; /**< Start of the plane's data */ + int i_lines; /**< Number of lines, including margins */ + int i_pitch; /**< Number of bytes in a line, including margins */ + } p[PICTURE_PLANE_MAX]; + +} picture_resource_t; + +/** + * This function will create a new picture using the provided resource. + * + * If the resource is NULL then a plain picture_NewFromFormat is returned. + */ +VLC_EXPORT( picture_t *, picture_NewFromResource, ( const video_format_t *, const picture_resource_t * ) ); + /** * This function will force the destruction a picture. * The value of the picture reference count should be 0 before entering this @@ -144,11 +183,14 @@ VLC_EXPORT( void, picture_Delete, ( picture_t * ) ); /** * This function will increase the picture reference count. * It will not have any effect on picture obtained from vout + * + * It returns the given picture for convenience. */ -static inline void picture_Hold( picture_t *p_picture ) +static inline picture_t *picture_Hold( picture_t *p_picture ) { if( p_picture->pf_release ) p_picture->i_refcount++; + return p_picture; } /** * This function will release a picture.