mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-12 11:26:39 +00:00
e54671d4b3
The bufferproxy may reference the surface and the surface may also reference the bufferproxy, producing a circular reference, which might lead to serious resource leak problems. Now make the relationship clearer, the bufferproxy's references is transfered to surface, while bufferproxy just keeps the surface's address without increasing its reference count. The surface can be created through a bufferproxy like in gst_vaapi_surface_new_with_dma_buf_handle(), and the surface might get its bufferproxy via gst_vaapi_surface_get_dma_buf_handle(). In both cases the surface holds a bufferproxy's reference.
48 lines
1.7 KiB
C
48 lines
1.7 KiB
C
/*
|
|
* gstvaapisurface_drm.h - VA surface abstraction (DRM interop)
|
|
*
|
|
* Copyright (C) 2014 Intel Corporation
|
|
* Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation; either version 2.1
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free
|
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef GST_VAAPI_SURFACE_DRM_H
|
|
#define GST_VAAPI_SURFACE_DRM_H
|
|
|
|
#include <gst/vaapi/gstvaapisurface.h>
|
|
#include <gst/vaapi/gstvaapibufferproxy.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
GstVaapiBufferProxy *
|
|
gst_vaapi_surface_peek_dma_buf_handle (GstVaapiSurface * surface);
|
|
|
|
GstVaapiBufferProxy *
|
|
gst_vaapi_surface_peek_gem_buf_handle (GstVaapiSurface * surface);
|
|
|
|
GstVaapiSurface *
|
|
gst_vaapi_surface_new_with_dma_buf_handle (GstVaapiDisplay * display, gint fd,
|
|
GstVideoInfo * vi);
|
|
|
|
GstVaapiSurface *
|
|
gst_vaapi_surface_new_with_gem_buf_handle (GstVaapiDisplay * display,
|
|
guint32 name, guint size, GstVideoFormat format, guint width, guint height,
|
|
gsize offset[GST_VIDEO_MAX_PLANES], gint stride[GST_VIDEO_MAX_PLANES]);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* GST_VAAPI_SURFACE_DRM_H */
|