decoder: add ref_count to GstVaapiPicture.

This commit is contained in:
Gwenole Beauchesne 2011-11-21 18:39:49 +01:00
parent 990fe81fe2
commit 74d3680381
2 changed files with 16 additions and 0 deletions

View file

@ -671,6 +671,7 @@ create_picture(GstVaapiDecoder *decoder)
picture->type = GST_VAAPI_PICTURE_TYPE_NONE; picture->type = GST_VAAPI_PICTURE_TYPE_NONE;
picture->flags = 0; picture->flags = 0;
picture->ref_count = 1;
picture->surface_id = VA_INVALID_ID; picture->surface_id = VA_INVALID_ID;
picture->surface = NULL; picture->surface = NULL;
picture->param_id = VA_INVALID_ID; picture->param_id = VA_INVALID_ID;

View file

@ -149,6 +149,7 @@ struct _GstVaapiCodecInfo {
struct _GstVaapiPicture { struct _GstVaapiPicture {
GstVaapiPictureType type; GstVaapiPictureType type;
guint flags; guint flags;
guint ref_count;
VASurfaceID surface_id; VASurfaceID surface_id;
GstVaapiSurface *surface; GstVaapiSurface *surface;
VABufferID param_id; VABufferID param_id;
@ -254,6 +255,20 @@ void
gst_vaapi_decoder_free_picture(GstVaapiDecoder *decoder, GstVaapiPicture *picture) gst_vaapi_decoder_free_picture(GstVaapiDecoder *decoder, GstVaapiPicture *picture)
attribute_hidden; attribute_hidden;
static inline GstVaapiPicture *
gst_vaapi_decoder_ref_picture(GstVaapiDecoder *decoder, GstVaapiPicture *picture)
{
++picture->ref_count;
return picture;
}
static inline void
gst_vaapi_decoder_unref_picture(GstVaapiDecoder *decoder, GstVaapiPicture *picture)
{
if (--picture->ref_count == 0)
gst_vaapi_decoder_free_picture(decoder, picture);
}
GstVaapiIqMatrix * GstVaapiIqMatrix *
gst_vaapi_decoder_new_iq_matrix(GstVaapiDecoder *decoder) gst_vaapi_decoder_new_iq_matrix(GstVaapiDecoder *decoder)
attribute_hidden; attribute_hidden;