diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index 828429a0f3..64c5d91126 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -7,6 +7,7 @@ GST_CAPS_FEATURE_MEMORY_DMABUF gst_dmabuf_allocator_new gst_dmabuf_allocator_alloc +gst_dmabuf_allocator_alloc_with_flags gst_dmabuf_memory_get_fd gst_is_dmabuf_memory diff --git a/gst-libs/gst/allocators/gstdmabuf.c b/gst-libs/gst/allocators/gstdmabuf.c index c7897ef847..fbe5ec3994 100644 --- a/gst-libs/gst/allocators/gstdmabuf.c +++ b/gst-libs/gst/allocators/gstdmabuf.c @@ -157,6 +157,32 @@ gst_dmabuf_allocator_alloc (GstAllocator * allocator, gint fd, gsize size) return gst_fd_allocator_alloc (allocator, fd, size, GST_FD_MEMORY_FLAG_NONE); } +/** + * gst_dmabuf_allocator_alloc_with_flags: + * @allocator: allocator to be used for this memory + * @fd: dmabuf file descriptor + * @size: memory size + * @flags: extra #GstFdMemoryFlags + * + * Return a %GstMemory that wraps a dmabuf file descriptor. + * + * Returns: (transfer full): a GstMemory based on @allocator. + * + * When the buffer will be released the allocator will close the @fd unless + * the %GST_FD_MEMORY_FLAG_DONT_CLOSE flag is specified. + * The memory is only mmapped on gst_buffer_mmap() request. + * + * Since: 1.16 + */ +GstMemory * +gst_dmabuf_allocator_alloc_with_flags (GstAllocator * allocator, gint fd, + gsize size, GstFdMemoryFlags flags) +{ + g_return_val_if_fail (GST_IS_DMABUF_ALLOCATOR (allocator), NULL); + + return gst_fd_allocator_alloc (allocator, fd, size, flags); +} + /** * gst_dmabuf_memory_get_fd: * @mem: the memory to get the file descriptor diff --git a/gst-libs/gst/allocators/gstdmabuf.h b/gst-libs/gst/allocators/gstdmabuf.h index dd5e94fe58..3707f88c3e 100644 --- a/gst-libs/gst/allocators/gstdmabuf.h +++ b/gst-libs/gst/allocators/gstdmabuf.h @@ -104,6 +104,9 @@ GstAllocator * gst_dmabuf_allocator_new (void); GST_ALLOCATORS_API GstMemory * gst_dmabuf_allocator_alloc (GstAllocator * allocator, gint fd, gsize size); +GST_ALLOCATORS_API +GstMemory * gst_dmabuf_allocator_alloc_with_flags (GstAllocator * allocator, gint fd, gsize size, GstFdMemoryFlags flags); + GST_ALLOCATORS_API gint gst_dmabuf_memory_get_fd (GstMemory * mem);