blob: 8feb0899fcd362e42a325e43ec03dba2f5ad7447 [file] [log] [blame]
/*
* # Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _GST_GL_MEMORY_DMA_H_
#define _GST_GL_MEMORY_DMA_H_
#include <gst/gst.h>
#include <gst/gstallocator.h>
#include <gst/gl/gl.h>
#include <gst/gl/egl/gsteglimage.h>
#include <gst/gl/egl/gstegl.h>
#include <gst/gl/egl/gstgldisplay_egl.h>
G_BEGIN_DECLS
#define GST_TYPE_GL_MEMORY_DMA_ALLOCATOR (gst_gl_memory_dma_allocator_get_type())
#define GST_IS_GL_MEMORY_DMA_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_DMA_ALLOCATOR))
#define GST_IS_GL_MEMORY_DMA_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_MEMORY_DMA_ALLOCATOR))
#define GST_GL_MEMORY_DMA_ALLOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_MEMORY_DMA_ALLOCATOR, GstGLMemoryDmaAllocatorClass))
#define GST_GL_MEMORY_DMA_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_MEMORY_DMA_ALLOCATOR, GstGLMemoryDmaAllocator))
#define GST_GL_MEMORY_DMA_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_MEMORY_DMA_ALLOCATOR, GstGLAllocatorClass))
#define GST_GL_MEMORY_DMA_ALLOCATOR_CAST(obj) ((GstGLMemoryDmaAllocator *)(obj))
#define GST_GL_MEMORY_DMA_CAST(obj) ((GstGLMemoryDMA *)(obj))
#define GST_GL_MEMORY_DMA_ALLOCATOR_NAME "glmemorydma"
typedef struct _GstGLMemoryDMA GstGLMemoryDMA;
typedef struct _GstGLMemoryDmaAllocator GstGLMemoryDmaAllocator;
typedef struct _GstGLMemoryDmaAllocatorClass GstGLMemoryDmaAllocatorClass;
struct _GstGLMemoryDMA
{
GstGLMemory mem;
GstEGLImage *image;
GstMemory *dma;
GstAllocationParams *params;
};
struct _GstGLMemoryDmaAllocator
{
GstGLMemoryAllocator alloc;
GstPlugin *plugin;
GstAllocator *ion_allocator;
};
struct _GstGLMemoryDmaAllocatorClass
{
GstGLMemoryAllocatorClass parent_class;
};
GST_GL_API
GType gst_gl_memory_dma_allocator_get_type(void);
GST_GL_API
gboolean gst_is_gl_memory_dma (GstMemory * mem);
GST_GL_API
GstBuffer * gst_gl_memory_dma_sync_buffer (GstBuffer * glbuf);
GST_GL_API
void gst_gl_memory_dma_init_once (void);
G_END_DECLS
#endif /* _GST_GL_MEMORY_DMA_H_ */