diff options
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0022-ionmemory-support-get-phys-memory.patch')
-rw-r--r-- | recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0022-ionmemory-support-get-phys-memory.patch | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0022-ionmemory-support-get-phys-memory.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0022-ionmemory-support-get-phys-memory.patch deleted file mode 100644 index 5ab4183..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0022-ionmemory-support-get-phys-memory.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 2f82ec644f10e2aefa9f80ee3909ba06466752e6 Mon Sep 17 00:00:00 2001 -From: Song Bing <bing.song@nxp.com> -Date: Wed, 13 Sep 2017 13:39:53 +0800 -Subject: [PATCH 3/3] ionmemory: support get phys memory - -Upstream Status: Pending - -https://bugzilla.gnome.org/show_bug.cgi?id=768794 ---- - gst-libs/gst/allocators/gstionmemory.c | 54 ++++++++++++++++++++++++++++++++-- - 1 file changed, 52 insertions(+), 2 deletions(-) - -diff --git a/gst-libs/gst/allocators/gstionmemory.c b/gst-libs/gst/allocators/gstionmemory.c -index bfe13ad..fad53db 100755 ---- a/gst-libs/gst/allocators/gstionmemory.c -+++ b/gst-libs/gst/allocators/gstionmemory.c -@@ -29,6 +29,7 @@ - #include <linux/ion.h> - - #include <gst/allocators/gstdmabuf.h> -+#include "gstphysmemory.h" - #include "gstionmemory.h" - - GST_DEBUG_CATEGORY_STATIC (ion_allocator_debug); -@@ -36,8 +37,6 @@ GST_DEBUG_CATEGORY_STATIC (ion_allocator_debug); - - #define gst_ion_allocator_parent_class parent_class - --G_DEFINE_TYPE (GstIONAllocator, gst_ion_allocator, GST_TYPE_DMABUF_ALLOCATOR) -- - #define DEFAULT_HEAP_ID 0 - #define DEFAULT_FLAG 0 - -@@ -49,6 +48,57 @@ enum - PROP_LAST - }; - -+static guintptr -+gst_ion_allocator_get_phys_addr (GstPhysMemoryAllocator *allocator, GstMemory *mem) -+{ -+ GstIONAllocator *self = GST_ION_ALLOCATOR (allocator); -+ gint ret, fd; -+ -+ if (self->fd < 0 || !mem) { -+ GST_ERROR ("ion get phys param wrong"); -+ return 0; -+ } -+ -+ if (!gst_is_dmabuf_memory (mem)) { -+ GST_ERROR ("isn't dmabuf memory"); -+ return 0; -+ } -+ -+ fd = gst_dmabuf_memory_get_fd (mem); -+ if (fd < 0) { -+ GST_ERROR ("dmabuf memory get fd failed"); -+ return 0; -+ } -+ -+ GST_DEBUG ("ion DMA FD: %d", fd); -+ -+ struct ion_phys_dma_data data = { -+ .phys = 0, -+ .size = 0, -+ .dmafd = fd, -+ }; -+ -+ struct ion_custom_data custom = { -+ .cmd = ION_IOC_PHYS_DMA, -+ .arg = (unsigned long)&data, -+ }; -+ -+ ret = ioctl(self->fd, ION_IOC_CUSTOM, &custom); -+ if (ret < 0) -+ return 0; -+ -+ return data.phys; -+} -+ -+static void gst_ion_allocator_iface_init(gpointer g_iface) -+{ -+ GstPhysMemoryAllocatorInterface *iface = g_iface; -+ iface->get_phys_addr = gst_ion_allocator_get_phys_addr; -+} -+ -+G_DEFINE_TYPE_WITH_CODE (GstIONAllocator, gst_ion_allocator, GST_TYPE_DMABUF_ALLOCATOR, -+ G_IMPLEMENT_INTERFACE(GST_TYPE_PHYS_MEMORY_ALLOCATOR, gst_ion_allocator_iface_init)); -+ - static gint - gst_ion_ioctl (gint fd, gint req, void *arg) - { --- -2.7.4 - |