1 /* 2 * GStreamer 3 * Copyright (C) 2020 Matthew Waters <matthew@centricular.com> 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Library General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Library General Public License for more details. 14 * 15 * You should have received a copy of the GNU Library General Public 16 * License along with this library; if not, write to the 17 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 18 * Boston, MA 02110-1301, USA. 19 */ 20 21 #ifndef __GST_GL_CONTEXT_CONFIG_H__ 22 #define __GST_GL_CONTEXT_CONFIG_H__ 23 24 #include <gst/gst.h> 25 26 #include <gst/gl/gstgl_fwd.h> 27 28 G_BEGIN_DECLS 29 30 /** 31 * GST_GL_CONFIG_STRUCTURE_NAME: 32 * 33 * The canonical name of a #GstStructure that contains a configuration for a 34 * #GstGLContext. 35 * 36 * Since: 1.20 37 */ 38 #define GST_GL_CONFIG_STRUCTURE_NAME "gst-gl-context-config" 39 40 /** 41 * GST_GL_CONFIG_ATTRIB_NAME: 42 * 43 * Get a reference to the variable name of a particular configuration field. 44 * 45 * e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)` 46 * 47 * Since: 1.20 48 */ 49 #define GST_GL_CONFIG_ATTRIB_NAME(UPPER_NAME) \ 50 G_PASTE(G_PASTE(GST_GL_CONFIG_ATTRIB_,UPPER_NAME),_NAME) 51 /** 52 * GST_GL_CONFIG_ATTRIB_GTYPE: 53 * 54 * Get a reference to the #GType of a particular configuration field. 55 * 56 * e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_GTYPE (CONFIG_ID)` 57 * 58 * Since: 1.20 59 */ 60 #define GST_GL_CONFIG_ATTRIB_GTYPE(UPPER_NAME) \ 61 G_PASTE(G_PASTE(GST_GL_CONFIG_ATTRIB_,UPPER_NAME),_GTYPE) 62 63 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_CONFIG_ID_NAME; 64 #define GST_GL_CONFIG_ATTRIB_CONFIG_ID_GTYPE G_TYPE_UINT 65 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_PLATFORM_NAME; 66 #define GST_GL_CONFIG_ATTRIB_PLATFORM_GTYPE GST_TYPE_GL_PLATFORM 67 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_CAVEAT_NAME; 68 #define GST_GL_CONFIG_ATTRIB_CAVEAT_GTYPE GST_TYPE_GL_CONFIG_CAVEAT 69 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_SURFACE_TYPE_NAME; 70 #define GST_GL_CONFIG_ATTRIB_SURFACE_TYPE_GTYPE GST_TYPE_GL_CONFIG_SURFACE_TYPE 71 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_CONFORMANT_API_NAME; 72 #define GST_GL_CONFIG_ATTRIB_CONFORMANT_API_GTYPE GST_TYPE_GL_API 73 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_RENDERABLE_API_NAME; 74 #define GST_GL_CONFIG_ATTRIB_RENDERABLE_API_GTYPE GST_TYPE_GL_API 75 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_RED_SIZE_NAME; 76 #define GST_GL_CONFIG_ATTRIB_RED_SIZE_GTYPE G_TYPE_INT 77 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_GREEN_SIZE_NAME; 78 #define GST_GL_CONFIG_ATTRIB_GREEN_SIZE_GTYPE G_TYPE_INT 79 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_BLUE_SIZE_NAME; 80 #define GST_GL_CONFIG_ATTRIB_BLUE_SIZE_GTYPE G_TYPE_INT 81 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_ALPHA_SIZE_NAME; 82 #define GST_GL_CONFIG_ATTRIB_ALPHA_SIZE_GTYPE G_TYPE_INT 83 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_LUMINANCE_SIZE_NAME; 84 #define GST_GL_CONFIG_ATTRIB_LUMINANCE_SIZE_GTYPE G_TYPE_INT 85 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_DEPTH_SIZE_NAME; 86 #define GST_GL_CONFIG_ATTRIB_DEPTH_SIZE_GTYPE G_TYPE_INT 87 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_STENCIL_SIZE_NAME; 88 #define GST_GL_CONFIG_ATTRIB_STENCIL_SIZE_GTYPE G_TYPE_INT 89 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_WIDTH_NAME; 90 #define GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_WIDTH_GTYPE G_TYPE_INT 91 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_HEIGHT_NAME; 92 #define GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_HEIGHT_GTYPE G_TYPE_INT 93 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_PIXELS_NAME; 94 #define GST_GL_CONFIG_ATTRIB_MAX_PBUFFER_PIXELS_GTYPE G_TYPE_INT 95 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_SAMPLE_BUFFERS_NAME; 96 #define GST_GL_CONFIG_ATTRIB_SAMPLE_BUFFERS_GTYPE G_TYPE_INT 97 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_SAMPLES_NAME; 98 #define GST_GL_CONFIG_ATTRIB_SAMPLES_GTYPE G_TYPE_INT 99 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_NATIVE_RENDERABLE_NAME; 100 #define GST_GL_CONFIG_ATTRIB_NATIVE_RENDERABLE_GTYPE G_TYPE_BOOLEAN 101 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_NATIVE_VISUAL_ID_NAME; 102 #define GST_GL_CONFIG_ATTRIB_NATIVE_VISUAL_ID_GTYPE G_TYPE_UINT 103 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_LEVEL_NAME; 104 #define GST_GL_CONFIG_ATTRIB_LEVEL_GTYPE G_TYPE_INT 105 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_MIN_SWAP_INTERVAL_NAME; 106 #define GST_GL_CONFIG_ATTRIB_MIN_SWAP_INTERVAL_GTYPE G_TYPE_INT 107 GST_GL_API const char * GST_GL_CONFIG_ATTRIB_MAX_SWAP_INTERVAL_NAME; 108 #define GST_GL_CONFIG_ATTRIB_MAX_SWAP_INTERVAL_GTYPE G_TYPE_INT 109 110 /** 111 * GST_GL_CONFIG_STRUCTURE_SET_ARGS: 112 * 113 * Since: 1.20 114 */ 115 #define GST_GL_CONFIG_STRUCTURE_SET_ARGS(def_name,ctype,val) \ 116 GST_GL_CONFIG_ATTRIB_NAME(def_name), \ 117 GST_GL_CONFIG_ATTRIB_GTYPE(def_name), \ 118 (ctype) (val) 119 120 /** 121 * GstGLConfigCaveat: 122 * @GST_GL_CONFIG_CAVEAT_NONE: none 123 * @GST_GL_CONFIG_CAVEAT_SLOW: slow 124 * @GST_GL_CONFIG_CAVEAT_NON_CONFORMANT: non-conformant 125 * 126 * Since: 1.20 127 */ 128 typedef enum 129 { 130 GST_GL_CONFIG_CAVEAT_NONE, 131 GST_GL_CONFIG_CAVEAT_SLOW, 132 GST_GL_CONFIG_CAVEAT_NON_CONFORMANT, 133 } GstGLConfigCaveat; 134 135 GST_GL_API 136 const gchar * gst_gl_config_caveat_to_string (GstGLConfigCaveat caveat); 137 138 /** 139 * GstGLConfigSurfaceType: 140 * @GST_GL_CONFIG_SURFACE_TYPE_NONE: none 141 * @GST_GL_CONFIG_SURFACE_TYPE_WINDOW: window 142 * @GST_GL_CONFIG_SURFACE_TYPE_PBUFFER: pbuffer 143 * @GST_GL_CONFIG_SURFACE_TYPE_PIXMAP: pixmap 144 * 145 * Since: 1.20 146 */ 147 typedef enum 148 { 149 GST_GL_CONFIG_SURFACE_TYPE_NONE = 0, 150 GST_GL_CONFIG_SURFACE_TYPE_WINDOW = (1 << 0), 151 GST_GL_CONFIG_SURFACE_TYPE_PBUFFER = (1 << 1), 152 GST_GL_CONFIG_SURFACE_TYPE_PIXMAP = (1 << 2), 153 } GstGLConfigSurfaceType; 154 155 GST_GL_API 156 const gchar * gst_gl_config_surface_type_to_string (GstGLConfigSurfaceType surface_type); 157 158 G_END_DECLS 159 160 #endif /* __GST_GL_CONTEXT_CONFIG_H__ */ 161