1 /* GStreamer Intel MSDK plugin 2 * Copyright (c) 2018, Intel Corporation 3 * Copyright (c) 2018, Igalia S.L. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * 3. Neither the name of the copyright holder nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGDECE 29 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef GST_MSDK_BUFFER_POOL_H 34 #define GST_MSDK_BUFFER_POOL_H 35 36 #include "msdk.h" 37 #include "gstmsdkcontext.h" 38 39 G_BEGIN_DECLS 40 41 #define GST_TYPE_MSDK_BUFFER_POOL \ 42 (gst_msdk_buffer_pool_get_type ()) 43 #define GST_MSDK_BUFFER_POOL(obj) \ 44 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MSDK_BUFFER_POOL, \ 45 GstMsdkBufferPool)) 46 #define GST_MSDK_BUFFER_POOL_CLASS(klass) \ 47 (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MSDK_BUFFER_POOL, \ 48 GstMsdkBufferPoolClass)) 49 #define GST_IS_MSDK_BUFFER_POOL(obj) \ 50 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MSDK_BUFFER_POOL)) 51 #define GST_IS_MSDK_BUFFER_POOL_CLASS(klass) \ 52 (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MSDK_BUFFER_POOL)) 53 #define GST_MSDK_BUFFER_POOL_CAST(obj) ((GstMsdkBufferPool*)(obj)) 54 55 typedef struct _GstMsdkBufferPool GstMsdkBufferPool; 56 typedef struct _GstMsdkBufferPoolClass GstMsdkBufferPoolClass; 57 typedef struct _GstMsdkBufferPoolPrivate GstMsdkBufferPoolPrivate; 58 59 /* 60 * GST_BUFFER_POOL_OPTION_MSDK_USE_VIDEO_MEMORY: 61 * 62 * An option that presents if the bufferpool will use 63 * MsdkSystemAllocator or MsdkVideoAllocator. 64 */ 65 #define GST_BUFFER_POOL_OPTION_MSDK_USE_VIDEO_MEMORY "GstBufferPoolOptionMsdkUseVideoMemory" 66 #define GST_BUFFER_POOL_OPTION_MSDK_USE_DMABUF "GstBufferPoolOptionMsdkUseDMABuf" 67 68 /** 69 * GstMsdkBufferPool: 70 * 71 * A MSDK buffer pool object. 72 */ 73 struct _GstMsdkBufferPool 74 { 75 GstVideoBufferPool parent_instance; 76 GstMsdkBufferPoolPrivate *priv; 77 }; 78 79 /** 80 * GstMsdkBufferPoolClass: 81 * 82 * A MSDK buffer pool class. 83 */ 84 struct _GstMsdkBufferPoolClass 85 { 86 GstVideoBufferPoolClass parent_class; 87 }; 88 89 GType gst_msdk_buffer_pool_get_type (void); 90 91 GstBufferPool * gst_msdk_buffer_pool_new (GstMsdkContext * context, 92 mfxFrameAllocResponse * alloc_resp); 93 94 G_END_DECLS 95 96 #endif /* GST_MSDK_BUFFER_POOL_H */ 97