From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Tue, 18 Nov 2014 21:22:46 +0100 Subject: [Buildroot] [PATCH 1/1] nvidia-tegra23: new package In-Reply-To: <1415202733-13295-1-git-send-email-nicolas.serafini@sensefly.com> References: <1415202733-13295-1-git-send-email-nicolas.serafini@sensefly.com> Message-ID: <20141118202246.GG4333@free.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Nicolas, All, On 2014-11-05 16:52 +0100, Nicolas Serafini spake thusly: > This patch adds a new package for all libraries, drivers and codecs > provided by Nvidia Linux 4 Tegra release 16.4.0. I'm already working on a package for the Nvidia blobs for i386 and x86_64, so I think your submision could fit in that effort. I'll take a look at this patch and carry it in my branch to see if it was posible to commonalise stuff between the Tegra and PC worlds. Regards, Yann E. MORIN. > Signed-off-by: Nicolas Serafini > --- > package/Config.in | 1 + > package/jpeg/Config.in | 10 + > package/nvidia-tegra23/Config.in | 2 + > .../nvidia-tegra23-binaries/Config.in | 119 + > .../nvidia-tegra23-binaries-000-headers.patch | 14047 +++++++++++++++++++ > .../nvidia-tegra23-binaries-001-pkgconfig.patch | 42 + > .../nvidia-tegra23-binaries.hash | 3 + > .../nvidia-tegra23-binaries.mk | 187 + > .../nvidia-tegra23/nvidia-tegra23-codecs/Config.in | 9 + > .../nvidia-tegra23-codecs.hash | 3 + > .../nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk | 42 + > package/nvidia-tegra23/nvidia-tegra23.mk | 10 + > 12 files changed, 14475 insertions(+) > create mode 100644 package/nvidia-tegra23/Config.in > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-000-headers.patch > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-001-pkgconfig.patch > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash > create mode 100644 package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk > create mode 100644 package/nvidia-tegra23/nvidia-tegra23.mk > > diff --git a/package/Config.in b/package/Config.in > index 28cf703..47d2dcd 100644 > --- a/package/Config.in > +++ b/package/Config.in > @@ -344,6 +344,7 @@ endif > source "package/minicom/Config.in" > source "package/nanocom/Config.in" > source "package/neard/Config.in" > + source "package/nvidia-tegra23/Config.in" > source "package/ofono/Config.in" > source "package/ola/Config.in" > source "package/on2-8170-modules/Config.in" > diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in > index f337aeb..a1a99aa 100644 > --- a/package/jpeg/Config.in > +++ b/package/jpeg/Config.in > @@ -30,6 +30,15 @@ config BR2_PACKAGE_JPEG_TURBO > > http://www.libjpeg-turbo.org > > +config BR2_PACKAGE_JPEG_TEGRA23 > + bool "jpeg accelerated for tegra2 or tegra3" > + depends on BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES > + select BR2_PACKAGE_HAS_JPEG > + help > + Accelerated libjpeg for tegra > + > + https://developer.nvidia.com/linux-tegra > + > endchoice > > config BR2_PACKAGE_HAS_JPEG > @@ -39,5 +48,6 @@ config BR2_PACKAGE_PROVIDES_JPEG > string > default "libjpeg" if BR2_PACKAGE_LIBJPEG > default "jpeg-turbo" if BR2_PACKAGE_JPEG_TURBO > + default "nvidia-tegra23-binaries" if BR2_PACKAGE_JPEG_TEGRA23 > > endif > diff --git a/package/nvidia-tegra23/Config.in b/package/nvidia-tegra23/Config.in > new file mode 100644 > index 0000000..0bc28c2 > --- /dev/null > +++ b/package/nvidia-tegra23/Config.in > @@ -0,0 +1,2 @@ > +source "package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in" > +source "package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in" > diff --git a/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in b/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in > new file mode 100644 > index 0000000..a5a0681 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in > @@ -0,0 +1,119 @@ > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES > + bool "nvidia-tegra23" > + depends on BR2_arm && BR2_cortex_a9 > + depends on BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC > + depends on BR2_PACKAGE_XORG7 > + select BR2_PACKAGE_XLIB_LIBXT > + select BR2_PACKAGE_XLIB_LIBXEXT > + select BR2_PACKAGE_XLIB_LIBXV > + select BR2_PACKAGE_HAS_LIBEGL > + select BR2_PACKAGE_HAS_LIBGLES > + select BR2_PACKAGE_HAS_LIBOPENMAX > + help > + Those packages provide libraries, drivers and firmware that comes from > + NVIDIA Linux For Tegra. > + > + https://developer.nvidia.com/linux-tegra > + > +if BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES > + > +config BR2_PACKAGE_PROVIDES_LIBEGL > + default "nvidia-tegra23-binaries" > + > +config BR2_PACKAGE_PROVIDES_LIBGLES > + default "nvidia-tegra23-binaries" > + > +config BR2_PACKAGE_PROVIDES_LIBOPENMAX > + default "nvidia-tegra23-binaries" > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS > + bool "GStreamer 0.10.x plugins" > + select BR2_PACKAGE_GSTREAMER > + help > + GStreamer 0.10.x plugins > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS > + bool "NVIDIA multimedia sample apps" > + depends on BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS > + help > + nvgstplayer and nvgstcapture multimedia test applications. > + > +choice > + prompt "Tegra platform" > + help > + Select the SOC platform. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA2 > + bool "Tegra 2" > + depends on !BR2_ARM_CPU_HAS_NEON > + help > + NVIDIA Tegra 2 is a dual cores Cortex-A9 without NEON. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA3 > + bool "Tegra 3" > + help > + NVIDIA Tegra 3 is a quad cores Cortex-A9 with NEON. > + > +endchoice > + > +choice > + prompt "X11 ABI version" > + default BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V11 > + help > + Select Tegra X11 ABI version. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V5 > + bool "X11 ABI 5" > + help > + Tegra X11 ABI 5. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V6 > + bool "X11 ABI 6" > + help > + Tegra X11 ABI 6. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V7 > + bool "X11 ABI 7" > + help > + Tegra X11 ABI 7. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V8 > + bool "X11 ABI 8" > + help > + Tegra X11 ABI 8. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V10 > + bool "X11 ABI 10" > + help > + Tegra X11 ABI 10. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V11 > + bool "X11 ABI 11" > + help > + Tegra X11 ABI 11. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V12 > + bool "X11 ABI 12" > + help > + Tegra X11 ABI 12. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V13 > + bool "X11 ABI 13" > + help > + Tegra X11 ABI 13. > + > +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V14 > + bool "X11 ABI 14" > + help > + Tegra X11 ABI 14. > + > +endchoice > + > +comment "tegra2 platform need NEON SIMD disabled" > + depends on BR2_ARM_CPU_HAS_NEON > + > +endif > + > +comment "nvidia-tegra23-binaries needs a (e)glibc toolchain w/ EABIhf" > + depends on BR2_arm && BR2_cortex_a9 > + depends on !(BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC) > diff --git a/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-000-headers.patch b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-000-headers.patch > new file mode 100644 > index 0000000..e7fb106 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-000-headers.patch > @@ -0,0 +1,14047 @@ > +diff -rupN a/usr/include/EGL/eglext.h b/usr/include/EGL/eglext.h > +--- a/usr/include/EGL/eglext.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/EGL/eglext.h 2013-10-09 09:57:33.000000000 +0200 > +@@ -0,0 +1,618 @@ > ++#ifndef __eglext_h_ > ++#define __eglext_h_ 1 > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* > ++** Copyright (c) 2013 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++/* > ++** This header is generated from the Khronos OpenGL / OpenGL ES XML > ++** API Registry. The current version of the Registry, generator scripts > ++** used to make the header, and the header can be found at > ++** http://www.opengl.org/registry/ > ++** > ++** Khronos $Revision: 23328 $ on $Date: 2013-10-02 02:28:28 -0700 (Wed, 02 Oct 2013) $ > ++*/ > ++ > ++#include > ++ > ++#define EGL_EGLEXT_VERSION 20130917 > ++ > ++/* Generated C header for: > ++ * API: egl > ++ * Versions considered: .* > ++ * Versions emitted: _nomatch_^ > ++ * Default extensions included: egl > ++ * Additional extensions included: _nomatch_^ > ++ * Extensions removed: _nomatch_^ > ++ */ > ++ > ++#ifndef EGL_KHR_cl_event > ++#define EGL_KHR_cl_event 1 > ++#define EGL_CL_EVENT_HANDLE_KHR 0x309C > ++#define EGL_SYNC_CL_EVENT_KHR 0x30FE > ++#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF > ++#endif /* EGL_KHR_cl_event */ > ++ > ++#ifndef EGL_KHR_client_get_all_proc_addresses > ++#define EGL_KHR_client_get_all_proc_addresses 1 > ++#endif /* EGL_KHR_client_get_all_proc_addresses */ > ++ > ++#ifndef EGL_KHR_config_attribs > ++#define EGL_KHR_config_attribs 1 > ++#define EGL_CONFORMANT_KHR 0x3042 > ++#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 > ++#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 > ++#endif /* EGL_KHR_config_attribs */ > ++ > ++#ifndef EGL_KHR_create_context > ++#define EGL_KHR_create_context 1 > ++#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 > ++#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB > ++#define EGL_CONTEXT_FLAGS_KHR 0x30FC > ++#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD > ++#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD > ++#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE > ++#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF > ++#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 > ++#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 > ++#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 > ++#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 > ++#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 > ++#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 > ++#endif /* EGL_KHR_create_context */ > ++ > ++#ifndef EGL_KHR_fence_sync > ++#define EGL_KHR_fence_sync 1 > ++#ifdef KHRONOS_SUPPORT_INT64 > ++#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 > ++#define EGL_SYNC_CONDITION_KHR 0x30F8 > ++#define EGL_SYNC_FENCE_KHR 0x30F9 > ++#endif /* KHRONOS_SUPPORT_INT64 */ > ++#endif /* EGL_KHR_fence_sync */ > ++ > ++#ifndef EGL_KHR_get_all_proc_addresses > ++#define EGL_KHR_get_all_proc_addresses 1 > ++#endif /* EGL_KHR_get_all_proc_addresses */ > ++ > ++#ifndef EGL_KHR_gl_renderbuffer_image > ++#define EGL_KHR_gl_renderbuffer_image 1 > ++#define EGL_GL_RENDERBUFFER_KHR 0x30B9 > ++#endif /* EGL_KHR_gl_renderbuffer_image */ > ++ > ++#ifndef EGL_KHR_gl_texture_2D_image > ++#define EGL_KHR_gl_texture_2D_image 1 > ++#define EGL_GL_TEXTURE_2D_KHR 0x30B1 > ++#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC > ++#endif /* EGL_KHR_gl_texture_2D_image */ > ++ > ++#ifndef EGL_KHR_gl_texture_3D_image > ++#define EGL_KHR_gl_texture_3D_image 1 > ++#define EGL_GL_TEXTURE_3D_KHR 0x30B2 > ++#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD > ++#endif /* EGL_KHR_gl_texture_3D_image */ > ++ > ++#ifndef EGL_KHR_gl_texture_cubemap_image > ++#define EGL_KHR_gl_texture_cubemap_image 1 > ++#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 > ++#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 > ++#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 > ++#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 > ++#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 > ++#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 > ++#endif /* EGL_KHR_gl_texture_cubemap_image */ > ++ > ++#ifndef EGL_KHR_image > ++#define EGL_KHR_image 1 > ++typedef void *EGLImageKHR; > ++#define EGL_NATIVE_PIXMAP_KHR 0x30B0 > ++#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) > ++typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); > ++#endif > ++#endif /* EGL_KHR_image */ > ++ > ++#ifndef EGL_KHR_image_base > ++#define EGL_KHR_image_base 1 > ++#define EGL_IMAGE_PRESERVED_KHR 0x30D2 > ++#endif /* EGL_KHR_image_base */ > ++ > ++#ifndef EGL_KHR_image_pixmap > ++#define EGL_KHR_image_pixmap 1 > ++#endif /* EGL_KHR_image_pixmap */ > ++ > ++#ifndef EGL_KHR_lock_surface > ++#define EGL_KHR_lock_surface 1 > ++#define EGL_READ_SURFACE_BIT_KHR 0x0001 > ++#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 > ++#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 > ++#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 > ++#define EGL_MATCH_FORMAT_KHR 0x3043 > ++#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 > ++#define EGL_FORMAT_RGB_565_KHR 0x30C1 > ++#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 > ++#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 > ++#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 > ++#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 > ++#define EGL_BITMAP_POINTER_KHR 0x30C6 > ++#define EGL_BITMAP_PITCH_KHR 0x30C7 > ++#define EGL_BITMAP_ORIGIN_KHR 0x30C8 > ++#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 > ++#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA > ++#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB > ++#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC > ++#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD > ++#define EGL_LOWER_LEFT_KHR 0x30CE > ++#define EGL_UPPER_LEFT_KHR 0x30CF > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface); > ++#endif > ++#endif /* EGL_KHR_lock_surface */ > ++ > ++#ifndef EGL_KHR_lock_surface2 > ++#define EGL_KHR_lock_surface2 1 > ++#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 > ++#endif /* EGL_KHR_lock_surface2 */ > ++ > ++#ifndef EGL_KHR_reusable_sync > ++#define EGL_KHR_reusable_sync 1 > ++typedef void *EGLSyncKHR; > ++typedef khronos_utime_nanoseconds_t EGLTimeKHR; > ++#ifdef KHRONOS_SUPPORT_INT64 > ++#define EGL_SYNC_STATUS_KHR 0x30F1 > ++#define EGL_SIGNALED_KHR 0x30F2 > ++#define EGL_UNSIGNALED_KHR 0x30F3 > ++#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 > ++#define EGL_CONDITION_SATISFIED_KHR 0x30F6 > ++#define EGL_SYNC_TYPE_KHR 0x30F7 > ++#define EGL_SYNC_REUSABLE_KHR 0x30FA > ++#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 > ++#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull > ++#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) > ++typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); > ++typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync); > ++EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); > ++EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); > ++EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); > ++#endif > ++#endif /* KHRONOS_SUPPORT_INT64 */ > ++#endif /* EGL_KHR_reusable_sync */ > ++ > ++#ifndef EGL_KHR_stream > ++#define EGL_KHR_stream 1 > ++typedef void *EGLStreamKHR; > ++typedef khronos_uint64_t EGLuint64KHR; > ++#ifdef KHRONOS_SUPPORT_INT64 > ++#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) > ++#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 > ++#define EGL_PRODUCER_FRAME_KHR 0x3212 > ++#define EGL_CONSUMER_FRAME_KHR 0x3213 > ++#define EGL_STREAM_STATE_KHR 0x3214 > ++#define EGL_STREAM_STATE_CREATED_KHR 0x3215 > ++#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 > ++#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 > ++#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 > ++#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 > ++#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A > ++#define EGL_BAD_STREAM_KHR 0x321B > ++#define EGL_BAD_STATE_KHR 0x321C > ++typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream); > ++EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); > ++#endif > ++#endif /* KHRONOS_SUPPORT_INT64 */ > ++#endif /* EGL_KHR_stream */ > ++ > ++#ifndef EGL_KHR_stream_consumer_gltexture > ++#define EGL_KHR_stream_consumer_gltexture 1 > ++#ifdef EGL_KHR_stream > ++#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream); > ++EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream); > ++EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream); > ++#endif > ++#endif /* EGL_KHR_stream */ > ++#endif /* EGL_KHR_stream_consumer_gltexture */ > ++ > ++#ifndef EGL_KHR_stream_cross_process_fd > ++#define EGL_KHR_stream_cross_process_fd 1 > ++typedef int EGLNativeFileDescriptorKHR; > ++#ifdef EGL_KHR_stream > ++#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1)) > ++typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); > ++typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream); > ++EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); > ++#endif > ++#endif /* EGL_KHR_stream */ > ++#endif /* EGL_KHR_stream_cross_process_fd */ > ++ > ++#ifndef EGL_KHR_stream_fifo > ++#define EGL_KHR_stream_fifo 1 > ++#ifdef EGL_KHR_stream > ++#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC > ++#define EGL_STREAM_TIME_NOW_KHR 0x31FD > ++#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE > ++#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); > ++#endif > ++#endif /* EGL_KHR_stream */ > ++#endif /* EGL_KHR_stream_fifo */ > ++ > ++#ifndef EGL_KHR_stream_producer_aldatalocator > ++#define EGL_KHR_stream_producer_aldatalocator 1 > ++#ifdef EGL_KHR_stream > ++#endif /* EGL_KHR_stream */ > ++#endif /* EGL_KHR_stream_producer_aldatalocator */ > ++ > ++#ifndef EGL_KHR_stream_producer_eglsurface > ++#define EGL_KHR_stream_producer_eglsurface 1 > ++#ifdef EGL_KHR_stream > ++#define EGL_STREAM_BIT_KHR 0x0800 > ++typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); > ++#endif > ++#endif /* EGL_KHR_stream */ > ++#endif /* EGL_KHR_stream_producer_eglsurface */ > ++ > ++#ifndef EGL_KHR_surfaceless_context > ++#define EGL_KHR_surfaceless_context 1 > ++#endif /* EGL_KHR_surfaceless_context */ > ++ > ++#ifndef EGL_KHR_vg_parent_image > ++#define EGL_KHR_vg_parent_image 1 > ++#define EGL_VG_PARENT_IMAGE_KHR 0x30BA > ++#endif /* EGL_KHR_vg_parent_image */ > ++ > ++#ifndef EGL_KHR_wait_sync > ++#define EGL_KHR_wait_sync 1 > ++typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); > ++#endif > ++#endif /* EGL_KHR_wait_sync */ > ++ > ++#ifndef EGL_ANDROID_blob_cache > ++#define EGL_ANDROID_blob_cache 1 > ++typedef khronos_ssize_t EGLsizeiANDROID; > ++typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); > ++typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); > ++typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); > ++#endif > ++#endif /* EGL_ANDROID_blob_cache */ > ++ > ++#ifndef EGL_ANDROID_framebuffer_target > ++#define EGL_ANDROID_framebuffer_target 1 > ++#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 > ++#endif /* EGL_ANDROID_framebuffer_target */ > ++ > ++#ifndef EGL_ANDROID_image_native_buffer > ++#define EGL_ANDROID_image_native_buffer 1 > ++#define EGL_NATIVE_BUFFER_ANDROID 0x3140 > ++#endif /* EGL_ANDROID_image_native_buffer */ > ++ > ++#ifndef EGL_ANDROID_native_fence_sync > ++#define EGL_ANDROID_native_fence_sync 1 > ++#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 > ++#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 > ++#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146 > ++#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 > ++typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync); > ++#endif > ++#endif /* EGL_ANDROID_native_fence_sync */ > ++ > ++#ifndef EGL_ANDROID_recordable > ++#define EGL_ANDROID_recordable 1 > ++#define EGL_RECORDABLE_ANDROID 0x3142 > ++#endif /* EGL_ANDROID_recordable */ > ++ > ++#ifndef EGL_ANGLE_d3d_share_handle_client_buffer > ++#define EGL_ANGLE_d3d_share_handle_client_buffer 1 > ++#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 > ++#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */ > ++ > ++#ifndef EGL_ANGLE_query_surface_pointer > ++#define EGL_ANGLE_query_surface_pointer 1 > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); > ++#endif > ++#endif /* EGL_ANGLE_query_surface_pointer */ > ++ > ++#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle > ++#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 > ++#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */ > ++ > ++#ifndef EGL_ARM_pixmap_multisample_discard > ++#define EGL_ARM_pixmap_multisample_discard 1 > ++#define EGL_DISCARD_SAMPLES_ARM 0x3286 > ++#endif /* EGL_ARM_pixmap_multisample_discard */ > ++ > ++#ifndef EGL_EXT_buffer_age > ++#define EGL_EXT_buffer_age 1 > ++#define EGL_BUFFER_AGE_EXT 0x313D > ++#endif /* EGL_EXT_buffer_age */ > ++ > ++#ifndef EGL_EXT_client_extensions > ++#define EGL_EXT_client_extensions 1 > ++#endif /* EGL_EXT_client_extensions */ > ++ > ++#ifndef EGL_EXT_create_context_robustness > ++#define EGL_EXT_create_context_robustness 1 > ++#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF > ++#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 > ++#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE > ++#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF > ++#endif /* EGL_EXT_create_context_robustness */ > ++ > ++#ifndef EGL_EXT_image_dma_buf_import > ++#define EGL_EXT_image_dma_buf_import 1 > ++#define EGL_LINUX_DMA_BUF_EXT 0x3270 > ++#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 > ++#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 > ++#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 > ++#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 > ++#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 > ++#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 > ++#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 > ++#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 > ++#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 > ++#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A > ++#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B > ++#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C > ++#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D > ++#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E > ++#define EGL_ITU_REC601_EXT 0x327F > ++#define EGL_ITU_REC709_EXT 0x3280 > ++#define EGL_ITU_REC2020_EXT 0x3281 > ++#define EGL_YUV_FULL_RANGE_EXT 0x3282 > ++#define EGL_YUV_NARROW_RANGE_EXT 0x3283 > ++#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 > ++#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 > ++#endif /* EGL_EXT_image_dma_buf_import */ > ++ > ++#ifndef EGL_EXT_multiview_window > ++#define EGL_EXT_multiview_window 1 > ++#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 > ++#endif /* EGL_EXT_multiview_window */ > ++ > ++#ifndef EGL_EXT_platform_base > ++#define EGL_EXT_platform_base 1 > ++typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); > ++typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); > ++typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list); > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); > ++#endif > ++#endif /* EGL_EXT_platform_base */ > ++ > ++#ifndef EGL_EXT_platform_x11 > ++#define EGL_EXT_platform_x11 1 > ++#define EGL_PLATFORM_X11_EXT 0x31D5 > ++#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 > ++#endif /* EGL_EXT_platform_x11 */ > ++ > ++#ifndef EGL_EXT_swap_buffers_with_damage > ++#define EGL_EXT_swap_buffers_with_damage 1 > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); > ++#endif > ++#endif /* EGL_EXT_swap_buffers_with_damage */ > ++ > ++#ifndef EGL_HI_clientpixmap > ++#define EGL_HI_clientpixmap 1 > ++struct EGLClientPixmapHI { > ++ void *pData; > ++ EGLint iWidth; > ++ EGLint iHeight; > ++ EGLint iStride; > ++}; > ++#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 > ++typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); > ++#endif > ++#endif /* EGL_HI_clientpixmap */ > ++ > ++#ifndef EGL_HI_colorformats > ++#define EGL_HI_colorformats 1 > ++#define EGL_COLOR_FORMAT_HI 0x8F70 > ++#define EGL_COLOR_RGB_HI 0x8F71 > ++#define EGL_COLOR_RGBA_HI 0x8F72 > ++#define EGL_COLOR_ARGB_HI 0x8F73 > ++#endif /* EGL_HI_colorformats */ > ++ > ++#ifndef EGL_IMG_context_priority > ++#define EGL_IMG_context_priority 1 > ++#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 > ++#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 > ++#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 > ++#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 > ++#endif /* EGL_IMG_context_priority */ > ++ > ++#ifndef EGL_MESA_drm_image > ++#define EGL_MESA_drm_image 1 > ++#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 > ++#define EGL_DRM_BUFFER_USE_MESA 0x31D1 > ++#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 > ++#define EGL_DRM_BUFFER_MESA 0x31D3 > ++#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 > ++#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 > ++#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 > ++typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); > ++#endif > ++#endif /* EGL_MESA_drm_image */ > ++ > ++#ifndef EGL_NV_3dvision_surface > ++#define EGL_NV_3dvision_surface 1 > ++#define EGL_AUTO_STEREO_NV 0x3136 > ++#endif /* EGL_NV_3dvision_surface */ > ++ > ++#ifndef EGL_NV_coverage_sample > ++#define EGL_NV_coverage_sample 1 > ++#define EGL_COVERAGE_BUFFERS_NV 0x30E0 > ++#define EGL_COVERAGE_SAMPLES_NV 0x30E1 > ++#endif /* EGL_NV_coverage_sample */ > ++ > ++#ifndef EGL_NV_coverage_sample_resolve > ++#define EGL_NV_coverage_sample_resolve 1 > ++#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 > ++#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 > ++#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 > ++#endif /* EGL_NV_coverage_sample_resolve */ > ++ > ++#ifndef EGL_NV_depth_nonlinear > ++#define EGL_NV_depth_nonlinear 1 > ++#define EGL_DEPTH_ENCODING_NV 0x30E2 > ++#define EGL_DEPTH_ENCODING_NONE_NV 0 > ++#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 > ++#endif /* EGL_NV_depth_nonlinear */ > ++ > ++#ifndef EGL_NV_native_query > ++#define EGL_NV_native_query 1 > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); > ++#endif > ++#endif /* EGL_NV_native_query */ > ++ > ++#ifndef EGL_NV_post_convert_rounding > ++#define EGL_NV_post_convert_rounding 1 > ++#endif /* EGL_NV_post_convert_rounding */ > ++ > ++#ifndef EGL_NV_post_sub_buffer > ++#define EGL_NV_post_sub_buffer 1 > ++#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); > ++#endif > ++#endif /* EGL_NV_post_sub_buffer */ > ++ > ++#ifndef EGL_NV_stream_sync > ++#define EGL_NV_stream_sync 1 > ++#define EGL_SYNC_NEW_FRAME_NV 0x321F > ++typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); > ++#endif > ++#endif /* EGL_NV_stream_sync */ > ++ > ++#ifndef EGL_NV_sync > ++#define EGL_NV_sync 1 > ++typedef void *EGLSyncNV; > ++typedef khronos_utime_nanoseconds_t EGLTimeNV; > ++#ifdef KHRONOS_SUPPORT_INT64 > ++#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 > ++#define EGL_SYNC_STATUS_NV 0x30E7 > ++#define EGL_SIGNALED_NV 0x30E8 > ++#define EGL_UNSIGNALED_NV 0x30E9 > ++#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 > ++#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull > ++#define EGL_ALREADY_SIGNALED_NV 0x30EA > ++#define EGL_TIMEOUT_EXPIRED_NV 0x30EB > ++#define EGL_CONDITION_SATISFIED_NV 0x30EC > ++#define EGL_SYNC_TYPE_NV 0x30ED > ++#define EGL_SYNC_CONDITION_NV 0x30EE > ++#define EGL_SYNC_FENCE_NV 0x30EF > ++#define EGL_NO_SYNC_NV ((EGLSyncNV)0) > ++typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); > ++typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); > ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync); > ++EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync); > ++EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); > ++EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); > ++EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); > ++#endif > ++#endif /* KHRONOS_SUPPORT_INT64 */ > ++#endif /* EGL_NV_sync */ > ++ > ++#ifndef EGL_NV_system_time > ++#define EGL_NV_system_time 1 > ++typedef khronos_utime_nanoseconds_t EGLuint64NV; > ++#ifdef KHRONOS_SUPPORT_INT64 > ++typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); > ++typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); > ++#ifdef EGL_EGLEXT_PROTOTYPES > ++EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void); > ++EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); > ++#endif > ++#endif /* KHRONOS_SUPPORT_INT64 */ > ++#endif /* EGL_NV_system_time */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif > +diff -rupN a/usr/include/EGL/egl.h b/usr/include/EGL/egl.h > +--- a/usr/include/EGL/egl.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/EGL/egl.h 2013-10-09 09:57:33.000000000 +0200 > +@@ -0,0 +1,329 @@ > ++/* -*- mode: c; tab-width: 8; -*- */ > ++/* vi: set sw=4 ts=8: */ > ++/* Reference version of egl.h for EGL 1.4. > ++ * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ > ++ */ > ++ > ++/* > ++** Copyright (c) 2007-2009 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++ > ++#ifndef __egl_h_ > ++#define __egl_h_ > ++ > ++/* All platform-dependent types and macro boilerplate (such as EGLAPI > ++ * and EGLAPIENTRY) should go in eglplatform.h. > ++ */ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* EGL Types */ > ++/* EGLint is defined in eglplatform.h */ > ++typedef unsigned int EGLBoolean; > ++typedef unsigned int EGLenum; > ++typedef void *EGLConfig; > ++typedef void *EGLContext; > ++typedef void *EGLDisplay; > ++typedef void *EGLSurface; > ++typedef void *EGLClientBuffer; > ++ > ++/* EGL Versioning */ > ++#define EGL_VERSION_1_0 1 > ++#define EGL_VERSION_1_1 1 > ++#define EGL_VERSION_1_2 1 > ++#define EGL_VERSION_1_3 1 > ++#define EGL_VERSION_1_4 1 > ++ > ++/* EGL Enumerants. Bitmasks and other exceptional cases aside, most > ++ * enums are assigned unique values starting at 0x3000. > ++ */ > ++ > ++/* EGL aliases */ > ++#define EGL_FALSE 0 > ++#define EGL_TRUE 1 > ++ > ++/* Out-of-band handle values */ > ++#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) > ++#define EGL_NO_CONTEXT ((EGLContext)0) > ++#define EGL_NO_DISPLAY ((EGLDisplay)0) > ++#define EGL_NO_SURFACE ((EGLSurface)0) > ++ > ++/* Out-of-band attribute value */ > ++#define EGL_DONT_CARE ((EGLint)-1) > ++ > ++/* Errors / GetError return values */ > ++#define EGL_SUCCESS 0x3000 > ++#define EGL_NOT_INITIALIZED 0x3001 > ++#define EGL_BAD_ACCESS 0x3002 > ++#define EGL_BAD_ALLOC 0x3003 > ++#define EGL_BAD_ATTRIBUTE 0x3004 > ++#define EGL_BAD_CONFIG 0x3005 > ++#define EGL_BAD_CONTEXT 0x3006 > ++#define EGL_BAD_CURRENT_SURFACE 0x3007 > ++#define EGL_BAD_DISPLAY 0x3008 > ++#define EGL_BAD_MATCH 0x3009 > ++#define EGL_BAD_NATIVE_PIXMAP 0x300A > ++#define EGL_BAD_NATIVE_WINDOW 0x300B > ++#define EGL_BAD_PARAMETER 0x300C > ++#define EGL_BAD_SURFACE 0x300D > ++#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ > ++ > ++/* Reserved 0x300F-0x301F for additional errors */ > ++ > ++/* Config attributes */ > ++#define EGL_BUFFER_SIZE 0x3020 > ++#define EGL_ALPHA_SIZE 0x3021 > ++#define EGL_BLUE_SIZE 0x3022 > ++#define EGL_GREEN_SIZE 0x3023 > ++#define EGL_RED_SIZE 0x3024 > ++#define EGL_DEPTH_SIZE 0x3025 > ++#define EGL_STENCIL_SIZE 0x3026 > ++#define EGL_CONFIG_CAVEAT 0x3027 > ++#define EGL_CONFIG_ID 0x3028 > ++#define EGL_LEVEL 0x3029 > ++#define EGL_MAX_PBUFFER_HEIGHT 0x302A > ++#define EGL_MAX_PBUFFER_PIXELS 0x302B > ++#define EGL_MAX_PBUFFER_WIDTH 0x302C > ++#define EGL_NATIVE_RENDERABLE 0x302D > ++#define EGL_NATIVE_VISUAL_ID 0x302E > ++#define EGL_NATIVE_VISUAL_TYPE 0x302F > ++#define EGL_SAMPLES 0x3031 > ++#define EGL_SAMPLE_BUFFERS 0x3032 > ++#define EGL_SURFACE_TYPE 0x3033 > ++#define EGL_TRANSPARENT_TYPE 0x3034 > ++#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 > ++#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 > ++#define EGL_TRANSPARENT_RED_VALUE 0x3037 > ++#define EGL_NONE 0x3038 /* Attrib list terminator */ > ++#define EGL_BIND_TO_TEXTURE_RGB 0x3039 > ++#define EGL_BIND_TO_TEXTURE_RGBA 0x303A > ++#define EGL_MIN_SWAP_INTERVAL 0x303B > ++#define EGL_MAX_SWAP_INTERVAL 0x303C > ++#define EGL_LUMINANCE_SIZE 0x303D > ++#define EGL_ALPHA_MASK_SIZE 0x303E > ++#define EGL_COLOR_BUFFER_TYPE 0x303F > ++#define EGL_RENDERABLE_TYPE 0x3040 > ++#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ > ++#define EGL_CONFORMANT 0x3042 > ++ > ++/* Reserved 0x3041-0x304F for additional config attributes */ > ++ > ++/* Config attribute values */ > ++#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ > ++#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ > ++#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ > ++#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ > ++#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ > ++ > ++/* More config attribute values, for EGL_TEXTURE_FORMAT */ > ++#define EGL_NO_TEXTURE 0x305C > ++#define EGL_TEXTURE_RGB 0x305D > ++#define EGL_TEXTURE_RGBA 0x305E > ++#define EGL_TEXTURE_2D 0x305F > ++ > ++/* Config attribute mask bits */ > ++#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ > ++#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ > ++ > ++#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ > ++#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ > ++#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ > ++#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ > ++ > ++/* QueryString targets */ > ++#define EGL_VENDOR 0x3053 > ++#define EGL_VERSION 0x3054 > ++#define EGL_EXTENSIONS 0x3055 > ++#define EGL_CLIENT_APIS 0x308D > ++ > ++/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ > ++#define EGL_HEIGHT 0x3056 > ++#define EGL_WIDTH 0x3057 > ++#define EGL_LARGEST_PBUFFER 0x3058 > ++#define EGL_TEXTURE_FORMAT 0x3080 > ++#define EGL_TEXTURE_TARGET 0x3081 > ++#define EGL_MIPMAP_TEXTURE 0x3082 > ++#define EGL_MIPMAP_LEVEL 0x3083 > ++#define EGL_RENDER_BUFFER 0x3086 > ++#define EGL_VG_COLORSPACE 0x3087 > ++#define EGL_VG_ALPHA_FORMAT 0x3088 > ++#define EGL_HORIZONTAL_RESOLUTION 0x3090 > ++#define EGL_VERTICAL_RESOLUTION 0x3091 > ++#define EGL_PIXEL_ASPECT_RATIO 0x3092 > ++#define EGL_SWAP_BEHAVIOR 0x3093 > ++#define EGL_MULTISAMPLE_RESOLVE 0x3099 > ++ > ++/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ > ++#define EGL_BACK_BUFFER 0x3084 > ++#define EGL_SINGLE_BUFFER 0x3085 > ++ > ++/* OpenVG color spaces */ > ++#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ > ++#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ > ++ > ++/* OpenVG alpha formats */ > ++#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ > ++#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ > ++ > ++/* Constant scale factor by which fractional display resolutions & > ++ * aspect ratio are scaled when queried as integer values. > ++ */ > ++#define EGL_DISPLAY_SCALING 10000 > ++ > ++/* Unknown display resolution/aspect ratio */ > ++#define EGL_UNKNOWN ((EGLint)-1) > ++ > ++/* Back buffer swap behaviors */ > ++#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ > ++#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ > ++ > ++/* CreatePbufferFromClientBuffer buffer types */ > ++#define EGL_OPENVG_IMAGE 0x3096 > ++ > ++/* QueryContext targets */ > ++#define EGL_CONTEXT_CLIENT_TYPE 0x3097 > ++ > ++/* CreateContext attributes */ > ++#define EGL_CONTEXT_CLIENT_VERSION 0x3098 > ++ > ++/* Multisample resolution behaviors */ > ++#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ > ++#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ > ++ > ++/* BindAPI/QueryAPI targets */ > ++#define EGL_OPENGL_ES_API 0x30A0 > ++#define EGL_OPENVG_API 0x30A1 > ++#define EGL_OPENGL_API 0x30A2 > ++ > ++/* GetCurrentSurface targets */ > ++#define EGL_DRAW 0x3059 > ++#define EGL_READ 0x305A > ++ > ++/* WaitNative engines */ > ++#define EGL_CORE_NATIVE_ENGINE 0x305B > ++ > ++/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ > ++#define EGL_COLORSPACE EGL_VG_COLORSPACE > ++#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT > ++#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB > ++#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR > ++#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE > ++#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE > ++ > ++/* EGL extensions must request enum blocks from the Khronos > ++ * API Registrar, who maintains the enumerant registry. Submit > ++ * a bug in Khronos Bugzilla against task "Registry". > ++ */ > ++ > ++ > ++ > ++/* EGL Functions */ > ++ > ++EGLAPI EGLint EGLAPIENTRY eglGetError(void); > ++ > ++EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); > ++EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); > ++EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); > ++ > ++EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, > ++ EGLint config_size, EGLint *num_config); > ++EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, > ++ EGLConfig *configs, EGLint config_size, > ++ EGLint *num_config); > ++EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, > ++ EGLint attribute, EGLint *value); > ++ > ++EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, > ++ EGLNativeWindowType win, > ++ const EGLint *attrib_list); > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, > ++ const EGLint *attrib_list); > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, > ++ EGLNativePixmapType pixmap, > ++ const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, > ++ EGLint attribute, EGLint *value); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); > ++EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); > ++ > ++EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( > ++ EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, > ++ EGLConfig config, const EGLint *attrib_list); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, > ++ EGLint attribute, EGLint value); > ++EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); > ++EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); > ++ > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); > ++ > ++ > ++EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, > ++ EGLContext share_context, > ++ const EGLint *attrib_list); > ++EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); > ++EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, > ++ EGLSurface read, EGLContext ctx); > ++ > ++EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); > ++EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); > ++EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); > ++EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, > ++ EGLint attribute, EGLint *value); > ++ > ++EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); > ++EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); > ++EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); > ++EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, > ++ EGLNativePixmapType target); > ++ > ++/* This is a generic function pointer type, whose name indicates it must > ++ * be cast to the proper type *and calling convention* before use. > ++ */ > ++typedef void (*__eglMustCastToProperFunctionPointerType)(void); > ++ > ++/* Now, define eglGetProcAddress using the generic function ptr. type */ > ++EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY > ++ eglGetProcAddress(const char *procname); > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __egl_h_ */ > +diff -rupN a/usr/include/EGL/eglplatform.h b/usr/include/EGL/eglplatform.h > +--- a/usr/include/EGL/eglplatform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/EGL/eglplatform.h 2014-11-03 15:56:55.376739000 +0100 > +@@ -0,0 +1,146 @@ > ++#ifndef __eglplatform_h_ > ++#define __eglplatform_h_ > ++ > ++/* > ++** Copyright (c) 2007-2009 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++ > ++/* Platform-specific types and definitions for egl.h > ++ * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ > ++ * > ++ * Adopters may modify khrplatform.h and this file to suit their platform. > ++ * You are encouraged to submit all modifications to the Khronos group so that > ++ * they can be included in future versions of this file. Please submit changes > ++ * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) > ++ * by filing a bug against product "EGL" component "Registry". > ++ */ > ++ > ++#include > ++ > ++/* Macros used in EGL function prototype declarations. > ++ * > ++ * EGL functions should be prototyped as: > ++ * > ++ * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); > ++ * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); > ++ * > ++ * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h > ++ */ > ++ > ++#ifndef EGLAPI > ++#define EGLAPI KHRONOS_APICALL > ++#endif > ++ > ++#ifndef EGLAPIENTRY > ++#define EGLAPIENTRY KHRONOS_APIENTRY > ++#endif > ++#define EGLAPIENTRYP EGLAPIENTRY* > ++ > ++/* The types NativeDisplayType, NativeWindowType, and NativePixmapType > ++ * are aliases of window-system-dependent types, such as X Display * or > ++ * Windows Device Context. They must be defined in platform-specific > ++ * code below. The EGL-prefixed versions of Native*Type are the same > ++ * types, renamed in EGL 1.3 so all types in the API start with "EGL". > ++ * > ++ * Khronos STRONGLY RECOMMENDS that you use the default definitions > ++ * provided below, since these changes affect both binary and source > ++ * portability of applications using EGL running on different EGL > ++ * implementations. > ++ */ > ++ > ++#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ > ++#ifndef WIN32_LEAN_AND_MEAN > ++#define WIN32_LEAN_AND_MEAN 1 > ++#endif > ++#include > ++ > ++typedef HDC EGLNativeDisplayType; > ++typedef HBITMAP EGLNativePixmapType; > ++typedef HWND EGLNativeWindowType; > ++ > ++#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ > ++ > ++typedef int EGLNativeDisplayType; > ++typedef void *EGLNativeWindowType; > ++typedef void *EGLNativePixmapType; > ++ > ++#elif defined(WL_EGL_PLATFORM) > ++ > ++typedef struct wl_display *EGLNativeDisplayType; > ++typedef struct wl_egl_pixmap *EGLNativePixmapType; > ++typedef struct wl_egl_window *EGLNativeWindowType; > ++ > ++#elif defined(__GBM__) > ++ > ++typedef struct gbm_device *EGLNativeDisplayType; > ++typedef struct gbm_bo *EGLNativePixmapType; > ++typedef void *EGLNativeWindowType; > ++ > ++#elif defined(ANDROID) /* Android */ > ++ > ++struct ANativeWindow; > ++struct egl_native_pixmap_t; > ++ > ++typedef struct ANativeWindow *EGLNativeWindowType; > ++typedef struct egl_native_pixmap_t *EGLNativePixmapType; > ++typedef void *EGLNativeDisplayType; > ++ > ++#elif defined(__unix__) > ++ > ++#if 1 > ++ > ++typedef void *EGLNativeDisplayType; > ++typedef khronos_uint32_t EGLNativePixmapType; > ++typedef khronos_uint32_t EGLNativeWindowType; > ++ > ++#else > ++ > ++/* X11 (tentative) */ > ++#include > ++#include > ++ > ++typedef Display *EGLNativeDisplayType; > ++typedef Pixmap EGLNativePixmapType; > ++typedef Window EGLNativeWindowType; > ++ > ++#endif /* MESA_EGL_NO_X11_HEADERS */ > ++ > ++#else > ++#error "Platform not recognized" > ++#endif > ++ > ++/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ > ++typedef EGLNativeDisplayType NativeDisplayType; > ++typedef EGLNativePixmapType NativePixmapType; > ++typedef EGLNativeWindowType NativeWindowType; > ++ > ++ > ++/* Define EGLint. This must be a signed integral type large enough to contain > ++ * all legal attribute names and values passed into and out of EGL, whether > ++ * their type is boolean, bitmask, enumerant (symbolic constant), integer, > ++ * handle, or other. While in general a 32-bit integer will suffice, if > ++ * handles are 64 bit types, then EGLint should be defined as a signed 64-bit > ++ * integer type. > ++ */ > ++typedef khronos_int32_t EGLint; > ++ > ++#endif /* __eglplatform_h */ > +diff -rupN a/usr/include/GLES/egl.h b/usr/include/GLES/egl.h > +--- a/usr/include/GLES/egl.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES/egl.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,15 @@ > ++/* > ++ * Skeleton egl.h to provide compatibility for early GLES 1.0 > ++ * applications. Several early implementations included gl.h > ++ * in egl.h leading applications to include only egl.h > ++ * > ++ * $Revision: 6252 $ on $Date:: 2008-08-06 16:35:08 -0700 #$ > ++ */ > ++ > ++#ifndef __legacy_egl_h_ > ++#define __legacy_egl_h_ > ++ > ++#include > ++#include > ++ > ++#endif /* __legacy_egl_h_ */ > +diff -rupN a/usr/include/GLES/glext.h b/usr/include/GLES/glext.h > +--- a/usr/include/GLES/glext.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES/glext.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,1278 @@ > ++#ifndef __glext_h_ > ++#define __glext_h_ > ++ > ++/* $Revision: 20798 $ on $Date:: 2013-03-07 01:19:34 -0800 #$ */ > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* > ++ * This document is licensed under the SGI Free Software B License Version > ++ * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . > ++ */ > ++ > ++#ifndef GL_APIENTRYP > ++# define GL_APIENTRYP GL_APIENTRY* > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * OES extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_OES_blend_equation_separate */ > ++#ifndef GL_OES_blend_equation_separate > ++/* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */ > ++#define GL_BLEND_EQUATION_RGB_OES 0x8009 > ++#define GL_BLEND_EQUATION_ALPHA_OES 0x883D > ++#endif > ++ > ++/* GL_OES_blend_func_separate */ > ++#ifndef GL_OES_blend_func_separate > ++#define GL_BLEND_DST_RGB_OES 0x80C8 > ++#define GL_BLEND_SRC_RGB_OES 0x80C9 > ++#define GL_BLEND_DST_ALPHA_OES 0x80CA > ++#define GL_BLEND_SRC_ALPHA_OES 0x80CB > ++#endif > ++ > ++/* GL_OES_blend_subtract */ > ++#ifndef GL_OES_blend_subtract > ++#define GL_BLEND_EQUATION_OES 0x8009 > ++#define GL_FUNC_ADD_OES 0x8006 > ++#define GL_FUNC_SUBTRACT_OES 0x800A > ++#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B > ++#endif > ++ > ++/* GL_OES_compressed_ETC1_RGB8_texture */ > ++#ifndef GL_OES_compressed_ETC1_RGB8_texture > ++#define GL_ETC1_RGB8_OES 0x8D64 > ++#endif > ++ > ++/* GL_OES_depth24 */ > ++#ifndef GL_OES_depth24 > ++#define GL_DEPTH_COMPONENT24_OES 0x81A6 > ++#endif > ++ > ++/* GL_OES_depth32 */ > ++#ifndef GL_OES_depth32 > ++#define GL_DEPTH_COMPONENT32_OES 0x81A7 > ++#endif > ++ > ++/* GL_OES_draw_texture */ > ++#ifndef GL_OES_draw_texture > ++#define GL_TEXTURE_CROP_RECT_OES 0x8B9D > ++#endif > ++ > ++/* GL_OES_EGL_image */ > ++#ifndef GL_OES_EGL_image > ++typedef void* GLeglImageOES; > ++#endif > ++ > ++/* GL_OES_EGL_image_external */ > ++#ifndef GL_OES_EGL_image_external > ++/* GLeglImageOES defined in GL_OES_EGL_image already. */ > ++#define GL_TEXTURE_EXTERNAL_OES 0x8D65 > ++#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 > ++#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 > ++#endif > ++ > ++/* GL_OES_element_index_uint */ > ++#ifndef GL_OES_element_index_uint > ++#define GL_UNSIGNED_INT 0x1405 > ++#endif > ++ > ++/* GL_OES_fixed_point */ > ++#ifndef GL_OES_fixed_point > ++#define GL_FIXED_OES 0x140C > ++#endif > ++ > ++/* GL_OES_framebuffer_object */ > ++#ifndef GL_OES_framebuffer_object > ++#define GL_NONE_OES 0 > ++#define GL_FRAMEBUFFER_OES 0x8D40 > ++#define GL_RENDERBUFFER_OES 0x8D41 > ++#define GL_RGBA4_OES 0x8056 > ++#define GL_RGB5_A1_OES 0x8057 > ++#define GL_RGB565_OES 0x8D62 > ++#define GL_DEPTH_COMPONENT16_OES 0x81A5 > ++#define GL_RENDERBUFFER_WIDTH_OES 0x8D42 > ++#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43 > ++#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44 > ++#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50 > ++#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51 > ++#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52 > ++#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53 > ++#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54 > ++#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55 > ++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0 > ++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1 > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2 > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3 > ++#define GL_COLOR_ATTACHMENT0_OES 0x8CE0 > ++#define GL_DEPTH_ATTACHMENT_OES 0x8D00 > ++#define GL_STENCIL_ATTACHMENT_OES 0x8D20 > ++#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5 > ++#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6 > ++#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7 > ++#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9 > ++#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA > ++#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD > ++#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6 > ++#define GL_RENDERBUFFER_BINDING_OES 0x8CA7 > ++#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8 > ++#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506 > ++#endif > ++ > ++/* GL_OES_mapbuffer */ > ++#ifndef GL_OES_mapbuffer > ++#define GL_WRITE_ONLY_OES 0x88B9 > ++#define GL_BUFFER_ACCESS_OES 0x88BB > ++#define GL_BUFFER_MAPPED_OES 0x88BC > ++#define GL_BUFFER_MAP_POINTER_OES 0x88BD > ++#endif > ++ > ++/* GL_OES_matrix_get */ > ++#ifndef GL_OES_matrix_get > ++#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D > ++#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E > ++#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F > ++#endif > ++ > ++/* GL_OES_matrix_palette */ > ++#ifndef GL_OES_matrix_palette > ++#define GL_MAX_VERTEX_UNITS_OES 0x86A4 > ++#define GL_MAX_PALETTE_MATRICES_OES 0x8842 > ++#define GL_MATRIX_PALETTE_OES 0x8840 > ++#define GL_MATRIX_INDEX_ARRAY_OES 0x8844 > ++#define GL_WEIGHT_ARRAY_OES 0x86AD > ++#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843 > ++#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846 > ++#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847 > ++#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848 > ++#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849 > ++#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E > ++#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB > ++#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9 > ++#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA > ++#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC > ++#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E > ++#endif > ++ > ++/* GL_OES_packed_depth_stencil */ > ++#ifndef GL_OES_packed_depth_stencil > ++#define GL_DEPTH_STENCIL_OES 0x84F9 > ++#define GL_UNSIGNED_INT_24_8_OES 0x84FA > ++#define GL_DEPTH24_STENCIL8_OES 0x88F0 > ++#endif > ++ > ++/* GL_OES_required_internalformat */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_OES_rgb8_rgba8 */ > ++#ifndef GL_OES_rgb8_rgba8 > ++#define GL_RGB8_OES 0x8051 > ++#define GL_RGBA8_OES 0x8058 > ++#endif > ++ > ++/* GL_OES_stencil1 */ > ++#ifndef GL_OES_stencil1 > ++#define GL_STENCIL_INDEX1_OES 0x8D46 > ++#endif > ++ > ++/* GL_OES_stencil4 */ > ++#ifndef GL_OES_stencil4 > ++#define GL_STENCIL_INDEX4_OES 0x8D47 > ++#endif > ++ > ++/* GL_OES_stencil8 */ > ++#ifndef GL_OES_stencil8 > ++#define GL_STENCIL_INDEX8_OES 0x8D48 > ++#endif > ++ > ++/* GL_OES_stencil_wrap */ > ++#ifndef GL_OES_stencil_wrap > ++#define GL_INCR_WRAP_OES 0x8507 > ++#define GL_DECR_WRAP_OES 0x8508 > ++#endif > ++ > ++/* GL_OES_texture_cube_map */ > ++#ifndef GL_OES_texture_cube_map > ++#define GL_NORMAL_MAP_OES 0x8511 > ++#define GL_REFLECTION_MAP_OES 0x8512 > ++#define GL_TEXTURE_CUBE_MAP_OES 0x8513 > ++#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A > ++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C > ++#define GL_TEXTURE_GEN_MODE_OES 0x2500 > ++#define GL_TEXTURE_GEN_STR_OES 0x8D60 > ++#endif > ++ > ++/* GL_OES_texture_mirrored_repeat */ > ++#ifndef GL_OES_texture_mirrored_repeat > ++#define GL_MIRRORED_REPEAT_OES 0x8370 > ++#endif > ++ > ++/* GL_OES_vertex_array_object */ > ++#ifndef GL_OES_vertex_array_object > ++#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * AMD extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_AMD_compressed_3DC_texture */ > ++#ifndef GL_AMD_compressed_3DC_texture > ++#define GL_3DC_X_AMD 0x87F9 > ++#define GL_3DC_XY_AMD 0x87FA > ++#endif > ++ > ++/* GL_AMD_compressed_ATC_texture */ > ++#ifndef GL_AMD_compressed_ATC_texture > ++#define GL_ATC_RGB_AMD 0x8C92 > ++#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 > ++#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * APPLE extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_APPLE_copy_texture_levels */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_APPLE_framebuffer_multisample */ > ++#ifndef GL_APPLE_framebuffer_multisample > ++#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 > ++#define GL_MAX_SAMPLES_APPLE 0x8D57 > ++#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 > ++#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 > ++#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 > ++#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA > ++#endif > ++ > ++/* GL_APPLE_sync */ > ++#ifndef GL_APPLE_sync > ++ > ++/* These types are defined with reference to > ++ * in the Apple extension spec, but here we use the Khronos > ++ * portable types in khrplatform.h, and assume those types > ++ * are always defined. > ++ * If any other extensions using these types are defined, > ++ * the typedefs must move out of this block and be shared. > ++ */ > ++typedef khronos_int64_t GLint64; > ++typedef khronos_uint64_t GLuint64; > ++typedef struct __GLsync *GLsync; > ++ > ++#define GL_SYNC_OBJECT_APPLE 0x8A53 > ++#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 > ++#define GL_OBJECT_TYPE_APPLE 0x9112 > ++#define GL_SYNC_CONDITION_APPLE 0x9113 > ++#define GL_SYNC_STATUS_APPLE 0x9114 > ++#define GL_SYNC_FLAGS_APPLE 0x9115 > ++#define GL_SYNC_FENCE_APPLE 0x9116 > ++#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 > ++#define GL_UNSIGNALED_APPLE 0x9118 > ++#define GL_SIGNALED_APPLE 0x9119 > ++#define GL_ALREADY_SIGNALED_APPLE 0x911A > ++#define GL_TIMEOUT_EXPIRED_APPLE 0x911B > ++#define GL_CONDITION_SATISFIED_APPLE 0x911C > ++#define GL_WAIT_FAILED_APPLE 0x911D > ++#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 > ++#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull > ++#endif > ++ > ++/* GL_APPLE_texture_2D_limited_npot */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_APPLE_texture_format_BGRA8888 */ > ++#ifndef GL_APPLE_texture_format_BGRA8888 > ++#define GL_BGRA_EXT 0x80E1 > ++#endif > ++ > ++/* GL_APPLE_texture_max_level */ > ++#ifndef GL_APPLE_texture_max_level > ++#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * ARM extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_ARM_rgba8 */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/*------------------------------------------------------------------------* > ++ * EXT extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_EXT_blend_minmax */ > ++#ifndef GL_EXT_blend_minmax > ++#define GL_MIN_EXT 0x8007 > ++#define GL_MAX_EXT 0x8008 > ++#endif > ++ > ++/* GL_EXT_discard_framebuffer */ > ++#ifndef GL_EXT_discard_framebuffer > ++#define GL_COLOR_EXT 0x1800 > ++#define GL_DEPTH_EXT 0x1801 > ++#define GL_STENCIL_EXT 0x1802 > ++#endif > ++ > ++/* GL_EXT_map_buffer_range */ > ++#ifndef GL_EXT_map_buffer_range > ++#define GL_MAP_READ_BIT_EXT 0x0001 > ++#define GL_MAP_WRITE_BIT_EXT 0x0002 > ++#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 > ++#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 > ++#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 > ++#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 > ++#endif > ++ > ++/* GL_EXT_multisampled_render_to_texture */ > ++#ifndef GL_EXT_multisampled_render_to_texture > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C > ++/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ > ++#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 > ++#define GL_MAX_SAMPLES_EXT 0x8D57 > ++#endif > ++ > ++/* GL_EXT_multi_draw_arrays */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_EXT_read_format_bgra */ > ++#ifndef GL_EXT_read_format_bgra > ++#define GL_BGRA_EXT 0x80E1 > ++#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 > ++#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 > ++#endif > ++ > ++/* GL_EXT_robustness */ > ++#ifndef GL_EXT_robustness > ++/* reuse GL_NO_ERROR */ > ++#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 > ++#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 > ++#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 > ++#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 > ++#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 > ++#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 > ++#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 > ++#endif > ++ > ++/* GL_EXT_sRGB */ > ++#ifndef GL_EXT_sRGB > ++#define GL_SRGB_EXT 0x8C40 > ++#define GL_SRGB_ALPHA_EXT 0x8C42 > ++#define GL_SRGB8_ALPHA8_EXT 0x8C43 > ++#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 > ++#endif > ++ > ++/* GL_EXT_texture_compression_dxt1 */ > ++#ifndef GL_EXT_texture_compression_dxt1 > ++#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 > ++#endif > ++ > ++/* GL_EXT_texture_filter_anisotropic */ > ++#ifndef GL_EXT_texture_filter_anisotropic > ++#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE > ++#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF > ++#endif > ++ > ++/* GL_EXT_texture_format_BGRA8888 */ > ++#ifndef GL_EXT_texture_format_BGRA8888 > ++#define GL_BGRA_EXT 0x80E1 > ++#endif > ++ > ++/* GL_EXT_texture_lod_bias */ > ++#ifndef GL_EXT_texture_lod_bias > ++#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD > ++#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 > ++#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 > ++#endif > ++ > ++/* GL_EXT_texture_storage */ > ++#ifndef GL_EXT_texture_storage > ++#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F > ++#define GL_ALPHA8_EXT 0x803C > ++#define GL_LUMINANCE8_EXT 0x8040 > ++#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 > ++#define GL_RGBA32F_EXT 0x8814 > ++#define GL_RGB32F_EXT 0x8815 > ++#define GL_ALPHA32F_EXT 0x8816 > ++#define GL_LUMINANCE32F_EXT 0x8818 > ++#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 > ++/* reuse GL_RGBA16F_EXT */ > ++#define GL_RGB16F_EXT 0x881B > ++#define GL_ALPHA16F_EXT 0x881C > ++#define GL_LUMINANCE16F_EXT 0x881E > ++#define GL_LUMINANCE_ALPHA16F_EXT 0x881F > ++#define GL_RGB10_A2_EXT 0x8059 > ++#define GL_RGB10_EXT 0x8052 > ++#define GL_BGRA8_EXT 0x93A1 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * IMG extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_IMG_read_format */ > ++#ifndef GL_IMG_read_format > ++#define GL_BGRA_IMG 0x80E1 > ++#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 > ++#endif > ++ > ++/* GL_IMG_texture_compression_pvrtc */ > ++#ifndef GL_IMG_texture_compression_pvrtc > ++#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 > ++#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 > ++#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 > ++#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 > ++#endif > ++ > ++/* GL_IMG_texture_env_enhanced_fixed_function */ > ++#ifndef GL_IMG_texture_env_enhanced_fixed_function > ++#define GL_MODULATE_COLOR_IMG 0x8C04 > ++#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05 > ++#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06 > ++#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07 > ++#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08 > ++#define GL_ADD_BLEND_IMG 0x8C09 > ++#define GL_DOT3_RGBA_IMG 0x86AF > ++#endif > ++ > ++/* GL_IMG_user_clip_plane */ > ++#ifndef GL_IMG_user_clip_plane > ++#define GL_CLIP_PLANE0_IMG 0x3000 > ++#define GL_CLIP_PLANE1_IMG 0x3001 > ++#define GL_CLIP_PLANE2_IMG 0x3002 > ++#define GL_CLIP_PLANE3_IMG 0x3003 > ++#define GL_CLIP_PLANE4_IMG 0x3004 > ++#define GL_CLIP_PLANE5_IMG 0x3005 > ++#define GL_MAX_CLIP_PLANES_IMG 0x0D32 > ++#endif > ++ > ++/* GL_IMG_multisampled_render_to_texture */ > ++#ifndef GL_IMG_multisampled_render_to_texture > ++#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 > ++#define GL_MAX_SAMPLES_IMG 0x9135 > ++#define GL_TEXTURE_SAMPLES_IMG 0x9136 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * NV extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_NV_fence */ > ++#ifndef GL_NV_fence > ++#define GL_ALL_COMPLETED_NV 0x84F2 > ++#define GL_FENCE_STATUS_NV 0x84F3 > ++#define GL_FENCE_CONDITION_NV 0x84F4 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * QCOM extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_QCOM_driver_control */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_QCOM_extended_get */ > ++#ifndef GL_QCOM_extended_get > ++#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 > ++#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 > ++#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 > ++#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 > ++#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 > ++#define GL_TEXTURE_TYPE_QCOM 0x8BD7 > ++#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 > ++#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 > ++#define GL_TEXTURE_TARGET_QCOM 0x8BDA > ++#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB > ++#define GL_STATE_RESTORE 0x8BDC > ++#endif > ++ > ++/* GL_QCOM_extended_get2 */ > ++/* No new tokens introduced by this extension. */ > ++ > ++/* GL_QCOM_perfmon_global_mode */ > ++#ifndef GL_QCOM_perfmon_global_mode > ++#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 > ++#endif > ++ > ++/* GL_QCOM_writeonly_rendering */ > ++#ifndef GL_QCOM_writeonly_rendering > ++#define GL_WRITEONLY_RENDERING_QCOM 0x8823 > ++#endif > ++ > ++/* GL_QCOM_tiled_rendering */ > ++#ifndef GL_QCOM_tiled_rendering > ++#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 > ++#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 > ++#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 > ++#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 > ++#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 > ++#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 > ++#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 > ++#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 > ++#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 > ++#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 > ++#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 > ++#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 > ++#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 > ++#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 > ++#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 > ++#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 > ++#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 > ++#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 > ++#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 > ++#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 > ++#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 > ++#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 > ++#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 > ++#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 > ++#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * End of extension tokens, start of corresponding extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/*------------------------------------------------------------------------* > ++ * OES extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_OES_blend_equation_separate */ > ++#ifndef GL_OES_blend_equation_separate > ++#define GL_OES_blend_equation_separate 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha); > ++#endif > ++ > ++/* GL_OES_blend_func_separate */ > ++#ifndef GL_OES_blend_func_separate > ++#define GL_OES_blend_func_separate 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glBlendFuncSeparateOES (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); > ++#endif > ++ > ++/* GL_OES_blend_subtract */ > ++#ifndef GL_OES_blend_subtract > ++#define GL_OES_blend_subtract 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glBlendEquationOES (GLenum mode); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONOESPROC) (GLenum mode); > ++#endif > ++ > ++/* GL_OES_byte_coordinates */ > ++#ifndef GL_OES_byte_coordinates > ++#define GL_OES_byte_coordinates 1 > ++#endif > ++ > ++/* GL_OES_compressed_ETC1_RGB8_texture */ > ++#ifndef GL_OES_compressed_ETC1_RGB8_texture > ++#define GL_OES_compressed_ETC1_RGB8_texture 1 > ++#endif > ++ > ++/* GL_OES_depth24 */ > ++#ifndef GL_OES_depth24 > ++#define GL_OES_depth24 1 > ++#endif > ++ > ++/* GL_OES_depth32 */ > ++#ifndef GL_OES_depth32 > ++#define GL_OES_depth32 1 > ++#endif > ++ > ++/* GL_OES_draw_texture */ > ++#ifndef GL_OES_draw_texture > ++#define GL_OES_draw_texture 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); > ++GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height); > ++GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); > ++GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort *coords); > ++GL_API void GL_APIENTRY glDrawTexivOES (const GLint *coords); > ++GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed *coords); > ++GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); > ++GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat *coords); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXSOESPROC) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXIOESPROC) (GLint x, GLint y, GLint z, GLint width, GLint height); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXXOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXSVOESPROC) (const GLshort *coords); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXIVOESPROC) (const GLint *coords); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXXVOESPROC) (const GLfixed *coords); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXFOESPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); > ++typedef void (GL_APIENTRYP PFNGLDRAWTEXFVOESPROC) (const GLfloat *coords); > ++#endif > ++ > ++/* GL_OES_EGL_image */ > ++#ifndef GL_OES_EGL_image > ++#define GL_OES_EGL_image 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); > ++GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); > ++typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); > ++#endif > ++ > ++/* GL_OES_EGL_image_external */ > ++#ifndef GL_OES_EGL_image_external > ++#define GL_OES_EGL_image_external 1 > ++/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ > ++#endif > ++ > ++/* GL_OES_element_index_uint */ > ++#ifndef GL_OES_element_index_uint > ++#define GL_OES_element_index_uint 1 > ++#endif > ++ > ++/* GL_OES_extended_matrix_palette */ > ++#ifndef GL_OES_extended_matrix_palette > ++#define GL_OES_extended_matrix_palette 1 > ++#endif > ++ > ++/* GL_OES_fbo_render_mipmap */ > ++#ifndef GL_OES_fbo_render_mipmap > ++#define GL_OES_fbo_render_mipmap 1 > ++#endif > ++ > ++/* GL_OES_fixed_point */ > ++#ifndef GL_OES_fixed_point > ++#define GL_OES_fixed_point 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glAlphaFuncxOES (GLenum func, GLclampx ref); > ++GL_API void GL_APIENTRY glClearColorxOES (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); > ++GL_API void GL_APIENTRY glClearDepthxOES (GLclampx depth); > ++GL_API void GL_APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); > ++GL_API void GL_APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); > ++GL_API void GL_APIENTRY glDepthRangexOES (GLclampx zNear, GLclampx zFar); > ++GL_API void GL_APIENTRY glFogxOES (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glFogxvOES (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glFrustumxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++GL_API void GL_APIENTRY glGetClipPlanexOES (GLenum pname, GLfixed eqn[4]); > ++GL_API void GL_APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetLightxvOES (GLenum light, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetMaterialxvOES (GLenum face, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetTexEnvxvOES (GLenum env, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glLightModelxOES (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glLineWidthxOES (GLfixed width); > ++GL_API void GL_APIENTRY glLoadMatrixxOES (const GLfixed *m); > ++GL_API void GL_APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glMultMatrixxOES (const GLfixed *m); > ++GL_API void GL_APIENTRY glMultiTexCoord4xOES (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); > ++GL_API void GL_APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); > ++GL_API void GL_APIENTRY glOrthoxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++GL_API void GL_APIENTRY glPointParameterxOES (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glPointSizexOES (GLfixed size); > ++GL_API void GL_APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); > ++GL_API void GL_APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); > ++GL_API void GL_APIENTRY glSampleCoveragexOES (GLclampx value, GLboolean invert); > ++GL_API void GL_APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); > ++GL_API void GL_APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLclampx ref); > ++typedef void (GL_APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); > ++typedef void (GL_APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLclampx depth); > ++typedef void (GL_APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); > ++typedef void (GL_APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); > ++typedef void (GL_APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLclampx zNear, GLclampx zFar); > ++typedef void (GL_APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum pname, GLfixed eqn[4]); > ++typedef void (GL_APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLGETLIGHTXVOESPROC) (GLenum light, GLenum pname, GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLGETMATERIALXVOESPROC) (GLenum face, GLenum pname, GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum env, GLenum pname, GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); > ++typedef void (GL_APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); > ++typedef void (GL_APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); > ++typedef void (GL_APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); > ++typedef void (GL_APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); > ++typedef void (GL_APIENTRYP PFNGLORTHOXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXOESPROC) (GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); > ++typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); > ++typedef void (GL_APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); > ++typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC) (GLclampx value, GLboolean invert); > ++typedef void (GL_APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); > ++typedef void (GL_APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); > ++#endif > ++ > ++/* GL_OES_framebuffer_object */ > ++#ifndef GL_OES_framebuffer_object > ++#define GL_OES_framebuffer_object 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API GLboolean GL_APIENTRY glIsRenderbufferOES (GLuint renderbuffer); > ++GL_API void GL_APIENTRY glBindRenderbufferOES (GLenum target, GLuint renderbuffer); > ++GL_API void GL_APIENTRY glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers); > ++GL_API void GL_APIENTRY glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers); > ++GL_API void GL_APIENTRY glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_API void GL_APIENTRY glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params); > ++GL_API GLboolean GL_APIENTRY glIsFramebufferOES (GLuint framebuffer); > ++GL_API void GL_APIENTRY glBindFramebufferOES (GLenum target, GLuint framebuffer); > ++GL_API void GL_APIENTRY glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers); > ++GL_API void GL_APIENTRY glGenFramebuffersOES (GLsizei n, GLuint* framebuffers); > ++GL_API GLenum GL_APIENTRY glCheckFramebufferStatusOES (GLenum target); > ++GL_API void GL_APIENTRY glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); > ++GL_API void GL_APIENTRY glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); > ++GL_API void GL_APIENTRY glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params); > ++GL_API void GL_APIENTRY glGenerateMipmapOES (GLenum target); > ++#endif > ++typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer); > ++typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer); > ++typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers); > ++typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers); > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params); > ++typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer); > ++typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer); > ++typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers); > ++typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers); > ++typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); > ++typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); > ++typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC) (GLenum target); > ++#endif > ++ > ++/* GL_OES_mapbuffer */ > ++#ifndef GL_OES_mapbuffer > ++#define GL_OES_mapbuffer 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); > ++GL_API GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); > ++GL_API void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid ** params); > ++#endif > ++typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); > ++typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); > ++typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid ** params); > ++#endif > ++ > ++/* GL_OES_matrix_get */ > ++#ifndef GL_OES_matrix_get > ++#define GL_OES_matrix_get 1 > ++#endif > ++ > ++/* GL_OES_matrix_palette */ > ++#ifndef GL_OES_matrix_palette > ++#define GL_OES_matrix_palette 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glCurrentPaletteMatrixOES (GLuint matrixpaletteindex); > ++GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES (void); > ++GL_API void GL_APIENTRY glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++GL_API void GL_APIENTRY glWeightPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint matrixpaletteindex); > ++typedef void (GL_APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void); > ++typedef void (GL_APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++typedef void (GL_APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++#endif > ++ > ++/* GL_OES_packed_depth_stencil */ > ++#ifndef GL_OES_packed_depth_stencil > ++#define GL_OES_packed_depth_stencil 1 > ++#endif > ++ > ++/* GL_OES_required_internalformat */ > ++#ifndef GL_OES_required_internalformat > ++#define GL_OES_required_internalformat 1 > ++#endif > ++ > ++/* GL_OES_query_matrix */ > ++#ifndef GL_OES_query_matrix > ++#define GL_OES_query_matrix 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API GLbitfield GL_APIENTRY glQueryMatrixxOES (GLfixed mantissa[16], GLint exponent[16]); > ++#endif > ++typedef GLbitfield (GL_APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed mantissa[16], GLint exponent[16]); > ++#endif > ++ > ++/* GL_OES_rgb8_rgba8 */ > ++#ifndef GL_OES_rgb8_rgba8 > ++#define GL_OES_rgb8_rgba8 1 > ++#endif > ++ > ++/* GL_OES_single_precision */ > ++#ifndef GL_OES_single_precision > ++#define GL_OES_single_precision 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glDepthRangefOES (GLclampf zNear, GLclampf zFar); > ++GL_API void GL_APIENTRY glFrustumfOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++GL_API void GL_APIENTRY glOrthofOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++GL_API void GL_APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); > ++GL_API void GL_APIENTRY glGetClipPlanefOES (GLenum pname, GLfloat eqn[4]); > ++GL_API void GL_APIENTRY glClearDepthfOES (GLclampf depth); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf zNear, GLclampf zFar); > ++typedef void (GL_APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++typedef void (GL_APIENTRYP PFNGLORTHOFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++typedef void (GL_APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); > ++typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum pname, GLfloat eqn[4]); > ++typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); > ++#endif > ++ > ++/* GL_OES_stencil1 */ > ++#ifndef GL_OES_stencil1 > ++#define GL_OES_stencil1 1 > ++#endif > ++ > ++/* GL_OES_stencil4 */ > ++#ifndef GL_OES_stencil4 > ++#define GL_OES_stencil4 1 > ++#endif > ++ > ++/* GL_OES_stencil8 */ > ++#ifndef GL_OES_stencil8 > ++#define GL_OES_stencil8 1 > ++#endif > ++ > ++/* GL_OES_stencil_wrap */ > ++#ifndef GL_OES_stencil_wrap > ++#define GL_OES_stencil_wrap 1 > ++#endif > ++ > ++/* GL_OES_texture_cube_map */ > ++#ifndef GL_OES_texture_cube_map > ++#define GL_OES_texture_cube_map 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param); > ++GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params); > ++GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param); > ++typedef void (GL_APIENTRYP PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params); > ++typedef void (GL_APIENTRYP PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param); > ++typedef void (GL_APIENTRYP PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params); > ++typedef void (GL_APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); > ++typedef void (GL_APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); > ++typedef void (GL_APIENTRYP PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params); > ++typedef void (GL_APIENTRYP PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); > ++#endif > ++ > ++/* GL_OES_texture_env_crossbar */ > ++#ifndef GL_OES_texture_env_crossbar > ++#define GL_OES_texture_env_crossbar 1 > ++#endif > ++ > ++/* GL_OES_texture_mirrored_repeat */ > ++#ifndef GL_OES_texture_mirrored_repeat > ++#define GL_OES_texture_mirrored_repeat 1 > ++#endif > ++ > ++/* GL_OES_vertex_array_object */ > ++#ifndef GL_OES_vertex_array_object > ++#define GL_OES_vertex_array_object 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glBindVertexArrayOES (GLuint array); > ++GL_API void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); > ++GL_API void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); > ++GL_API GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); > ++typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); > ++typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); > ++typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * AMD extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_AMD_compressed_3DC_texture */ > ++#ifndef GL_AMD_compressed_3DC_texture > ++#define GL_AMD_compressed_3DC_texture 1 > ++#endif > ++ > ++/* GL_AMD_compressed_ATC_texture */ > ++#ifndef GL_AMD_compressed_ATC_texture > ++#define GL_AMD_compressed_ATC_texture 1 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * APPLE extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_APPLE_copy_texture_levels */ > ++#ifndef GL_APPLE_copy_texture_levels > ++#define GL_APPLE_copy_texture_levels 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); > ++#endif > ++ > ++/* GL_APPLE_framebuffer_multisample */ > ++#ifndef GL_APPLE_framebuffer_multisample > ++#define GL_APPLE_framebuffer_multisample 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); > ++GL_API void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); > ++#endif /* GL_GLEXT_PROTOTYPES */ > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); > ++#endif > ++ > ++/* GL_APPLE_sync */ > ++#ifndef GL_APPLE_sync > ++#define GL_APPLE_sync 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); > ++GL_API GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); > ++GL_API void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); > ++GL_API GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++GL_API void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++GL_API void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); > ++GL_API void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); > ++#endif > ++typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); > ++typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); > ++typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); > ++typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); > ++typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); > ++#endif > ++ > ++/* GL_APPLE_texture_2D_limited_npot */ > ++#ifndef GL_APPLE_texture_2D_limited_npot > ++#define GL_APPLE_texture_2D_limited_npot 1 > ++#endif > ++ > ++/* GL_APPLE_texture_format_BGRA8888 */ > ++#ifndef GL_APPLE_texture_format_BGRA8888 > ++#define GL_APPLE_texture_format_BGRA8888 1 > ++#endif > ++ > ++/* GL_APPLE_texture_max_level */ > ++#ifndef GL_APPLE_texture_max_level > ++#define GL_APPLE_texture_max_level 1 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * ARM extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_ARM_rgba8 */ > ++#ifndef GL_ARM_rgba8 > ++#define GL_ARM_rgba8 1 > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * EXT extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_EXT_blend_minmax */ > ++#ifndef GL_EXT_blend_minmax > ++#define GL_EXT_blend_minmax 1 > ++#endif > ++ > ++/* GL_EXT_discard_framebuffer */ > ++#ifndef GL_EXT_discard_framebuffer > ++#define GL_EXT_discard_framebuffer 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); > ++#endif > ++ > ++/* GL_EXT_map_buffer_range */ > ++#ifndef GL_EXT_map_buffer_range > ++#define GL_EXT_map_buffer_range 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY *glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); > ++GL_API void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); > ++#endif > ++typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); > ++typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); > ++#endif > ++ > ++/* GL_EXT_multisampled_render_to_texture */ > ++#ifndef GL_EXT_multisampled_render_to_texture > ++#define GL_EXT_multisampled_render_to_texture 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); > ++GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#endif > ++ > ++/* GL_EXT_multi_draw_arrays */ > ++#ifndef GL_EXT_multi_draw_arrays > ++#define GL_EXT_multi_draw_arrays 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glMultiDrawArraysEXT (GLenum, const GLint *, const GLsizei *, GLsizei); > ++GL_API void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); > ++#endif /* GL_GLEXT_PROTOTYPES */ > ++typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); > ++#endif > ++ > ++/* GL_EXT_read_format_bgra */ > ++#ifndef GL_EXT_read_format_bgra > ++#define GL_EXT_read_format_bgra 1 > ++#endif > ++ > ++/* GL_EXT_robustness */ > ++#ifndef GL_EXT_robustness > ++#define GL_EXT_robustness 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); > ++GL_API void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); > ++GL_API void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, float *params); > ++GL_API void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); > ++#endif > ++typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); > ++typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); > ++typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, float *params); > ++typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); > ++#endif > ++ > ++/* GL_EXT_sRGB */ > ++#ifndef GL_EXT_sRGB > ++#define GL_EXT_sRGB 1 > ++#endif > ++ > ++/* GL_EXT_texture_compression_dxt1 */ > ++#ifndef GL_EXT_texture_compression_dxt1 > ++#define GL_EXT_texture_compression_dxt1 1 > ++#endif > ++ > ++/* GL_EXT_texture_filter_anisotropic */ > ++#ifndef GL_EXT_texture_filter_anisotropic > ++#define GL_EXT_texture_filter_anisotropic 1 > ++#endif > ++ > ++/* GL_EXT_texture_format_BGRA8888 */ > ++#ifndef GL_EXT_texture_format_BGRA8888 > ++#define GL_EXT_texture_format_BGRA8888 1 > ++#endif > ++ > ++/* GL_EXT_texture_lod_bias */ > ++#ifndef GL_EXT_texture_lod_bias > ++#define GL_EXT_texture_lod_bias 1 > ++#endif > ++ > ++/* GL_EXT_texture_storage */ > ++#ifndef GL_EXT_texture_storage > ++#define GL_EXT_texture_storage 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++GL_API void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_API void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++GL_API void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++GL_API void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_API void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * IMG extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_IMG_read_format */ > ++#ifndef GL_IMG_read_format > ++#define GL_IMG_read_format 1 > ++#endif > ++ > ++/* GL_IMG_texture_compression_pvrtc */ > ++#ifndef GL_IMG_texture_compression_pvrtc > ++#define GL_IMG_texture_compression_pvrtc 1 > ++#endif > ++ > ++/* GL_IMG_texture_env_enhanced_fixed_function */ > ++#ifndef GL_IMG_texture_env_enhanced_fixed_function > ++#define GL_IMG_texture_env_enhanced_fixed_function 1 > ++#endif > ++ > ++/* GL_IMG_user_clip_plane */ > ++#ifndef GL_IMG_user_clip_plane > ++#define GL_IMG_user_clip_plane 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glClipPlanefIMG (GLenum, const GLfloat *); > ++GL_API void GL_APIENTRY glClipPlanexIMG (GLenum, const GLfixed *); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLCLIPPLANEFIMGPROC) (GLenum p, const GLfloat *eqn); > ++typedef void (GL_APIENTRYP PFNGLCLIPPLANEXIMGPROC) (GLenum p, const GLfixed *eqn); > ++#endif > ++ > ++/* GL_IMG_multisampled_render_to_texture */ > ++#ifndef GL_IMG_multisampled_render_to_texture > ++#define GL_IMG_multisampled_render_to_texture 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); > ++GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * NV extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* NV_fence */ > ++#ifndef GL_NV_fence > ++#define GL_NV_fence 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); > ++GL_API void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); > ++GL_API GLboolean GL_APIENTRY glIsFenceNV (GLuint); > ++GL_API GLboolean GL_APIENTRY glTestFenceNV (GLuint); > ++GL_API void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); > ++GL_API void GL_APIENTRY glFinishFenceNV (GLuint); > ++GL_API void GL_APIENTRY glSetFenceNV (GLuint, GLenum); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); > ++typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); > ++typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); > ++typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); > ++typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); > ++typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); > ++#endif > ++ > ++/*------------------------------------------------------------------------* > ++ * QCOM extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_QCOM_driver_control */ > ++#ifndef GL_QCOM_driver_control > ++#define GL_QCOM_driver_control 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); > ++GL_API void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); > ++GL_API void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); > ++GL_API void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); > ++typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); > ++typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); > ++typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); > ++#endif > ++ > ++/* GL_QCOM_extended_get */ > ++#ifndef GL_QCOM_extended_get > ++#define GL_QCOM_extended_get 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); > ++GL_API void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); > ++GL_API void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); > ++GL_API void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); > ++GL_API void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); > ++GL_API void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); > ++GL_API void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); > ++typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); > ++typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); > ++#endif > ++ > ++/* GL_QCOM_extended_get2 */ > ++#ifndef GL_QCOM_extended_get2 > ++#define GL_QCOM_extended_get2 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); > ++GL_API void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); > ++GL_API GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); > ++GL_API void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); > ++typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); > ++typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); > ++typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); > ++#endif > ++ > ++/* GL_QCOM_perfmon_global_mode */ > ++#ifndef GL_QCOM_perfmon_global_mode > ++#define GL_QCOM_perfmon_global_mode 1 > ++#endif > ++ > ++/* GL_QCOM_writeonly_rendering */ > ++#ifndef GL_QCOM_writeonly_rendering > ++#define GL_QCOM_writeonly_rendering 1 > ++#endif > ++ > ++/* GL_QCOM_tiled_rendering */ > ++#ifndef GL_QCOM_tiled_rendering > ++#define GL_QCOM_tiled_rendering 1 > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_API void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); > ++GL_API void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); > ++#endif > ++typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); > ++typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); > ++#endif > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __glext_h_ */ > ++ > +diff -rupN a/usr/include/GLES/gl.h b/usr/include/GLES/gl.h > +--- a/usr/include/GLES/gl.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES/gl.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,770 @@ > ++#ifndef __gl_h_ > ++#define __gl_h_ > ++ > ++/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ > ++ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* > ++ * This document is licensed under the SGI Free Software B License Version > ++ * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . > ++ */ > ++ > ++typedef void GLvoid; > ++typedef char GLchar; > ++typedef unsigned int GLenum; > ++typedef unsigned char GLboolean; > ++typedef unsigned int GLbitfield; > ++typedef khronos_int8_t GLbyte; > ++typedef short GLshort; > ++typedef int GLint; > ++typedef int GLsizei; > ++typedef khronos_uint8_t GLubyte; > ++typedef unsigned short GLushort; > ++typedef unsigned int GLuint; > ++typedef khronos_float_t GLfloat; > ++typedef khronos_float_t GLclampf; > ++typedef khronos_int32_t GLfixed; > ++typedef khronos_int32_t GLclampx; > ++ > ++typedef khronos_intptr_t GLintptr; > ++typedef khronos_ssize_t GLsizeiptr; > ++ > ++ > ++/*************************************************************/ > ++ > ++/* OpenGL ES core versions */ > ++#define GL_VERSION_ES_CM_1_0 1 > ++#define GL_VERSION_ES_CL_1_0 1 > ++#define GL_VERSION_ES_CM_1_1 1 > ++#define GL_VERSION_ES_CL_1_1 1 > ++ > ++/* ClearBufferMask */ > ++#define GL_DEPTH_BUFFER_BIT 0x00000100 > ++#define GL_STENCIL_BUFFER_BIT 0x00000400 > ++#define GL_COLOR_BUFFER_BIT 0x00004000 > ++ > ++/* Boolean */ > ++#define GL_FALSE 0 > ++#define GL_TRUE 1 > ++ > ++/* BeginMode */ > ++#define GL_POINTS 0x0000 > ++#define GL_LINES 0x0001 > ++#define GL_LINE_LOOP 0x0002 > ++#define GL_LINE_STRIP 0x0003 > ++#define GL_TRIANGLES 0x0004 > ++#define GL_TRIANGLE_STRIP 0x0005 > ++#define GL_TRIANGLE_FAN 0x0006 > ++ > ++/* AlphaFunction */ > ++#define GL_NEVER 0x0200 > ++#define GL_LESS 0x0201 > ++#define GL_EQUAL 0x0202 > ++#define GL_LEQUAL 0x0203 > ++#define GL_GREATER 0x0204 > ++#define GL_NOTEQUAL 0x0205 > ++#define GL_GEQUAL 0x0206 > ++#define GL_ALWAYS 0x0207 > ++ > ++/* BlendingFactorDest */ > ++#define GL_ZERO 0 > ++#define GL_ONE 1 > ++#define GL_SRC_COLOR 0x0300 > ++#define GL_ONE_MINUS_SRC_COLOR 0x0301 > ++#define GL_SRC_ALPHA 0x0302 > ++#define GL_ONE_MINUS_SRC_ALPHA 0x0303 > ++#define GL_DST_ALPHA 0x0304 > ++#define GL_ONE_MINUS_DST_ALPHA 0x0305 > ++ > ++/* BlendingFactorSrc */ > ++/* GL_ZERO */ > ++/* GL_ONE */ > ++#define GL_DST_COLOR 0x0306 > ++#define GL_ONE_MINUS_DST_COLOR 0x0307 > ++#define GL_SRC_ALPHA_SATURATE 0x0308 > ++/* GL_SRC_ALPHA */ > ++/* GL_ONE_MINUS_SRC_ALPHA */ > ++/* GL_DST_ALPHA */ > ++/* GL_ONE_MINUS_DST_ALPHA */ > ++ > ++/* ClipPlaneName */ > ++#define GL_CLIP_PLANE0 0x3000 > ++#define GL_CLIP_PLANE1 0x3001 > ++#define GL_CLIP_PLANE2 0x3002 > ++#define GL_CLIP_PLANE3 0x3003 > ++#define GL_CLIP_PLANE4 0x3004 > ++#define GL_CLIP_PLANE5 0x3005 > ++ > ++/* ColorMaterialFace */ > ++/* GL_FRONT_AND_BACK */ > ++ > ++/* ColorMaterialParameter */ > ++/* GL_AMBIENT_AND_DIFFUSE */ > ++ > ++/* ColorPointerType */ > ++/* GL_UNSIGNED_BYTE */ > ++/* GL_FLOAT */ > ++/* GL_FIXED */ > ++ > ++/* CullFaceMode */ > ++#define GL_FRONT 0x0404 > ++#define GL_BACK 0x0405 > ++#define GL_FRONT_AND_BACK 0x0408 > ++ > ++/* DepthFunction */ > ++/* GL_NEVER */ > ++/* GL_LESS */ > ++/* GL_EQUAL */ > ++/* GL_LEQUAL */ > ++/* GL_GREATER */ > ++/* GL_NOTEQUAL */ > ++/* GL_GEQUAL */ > ++/* GL_ALWAYS */ > ++ > ++/* EnableCap */ > ++#define GL_FOG 0x0B60 > ++#define GL_LIGHTING 0x0B50 > ++#define GL_TEXTURE_2D 0x0DE1 > ++#define GL_CULL_FACE 0x0B44 > ++#define GL_ALPHA_TEST 0x0BC0 > ++#define GL_BLEND 0x0BE2 > ++#define GL_COLOR_LOGIC_OP 0x0BF2 > ++#define GL_DITHER 0x0BD0 > ++#define GL_STENCIL_TEST 0x0B90 > ++#define GL_DEPTH_TEST 0x0B71 > ++/* GL_LIGHT0 */ > ++/* GL_LIGHT1 */ > ++/* GL_LIGHT2 */ > ++/* GL_LIGHT3 */ > ++/* GL_LIGHT4 */ > ++/* GL_LIGHT5 */ > ++/* GL_LIGHT6 */ > ++/* GL_LIGHT7 */ > ++#define GL_POINT_SMOOTH 0x0B10 > ++#define GL_LINE_SMOOTH 0x0B20 > ++#define GL_SCISSOR_TEST 0x0C11 > ++#define GL_COLOR_MATERIAL 0x0B57 > ++#define GL_NORMALIZE 0x0BA1 > ++#define GL_RESCALE_NORMAL 0x803A > ++#define GL_POLYGON_OFFSET_FILL 0x8037 > ++#define GL_VERTEX_ARRAY 0x8074 > ++#define GL_NORMAL_ARRAY 0x8075 > ++#define GL_COLOR_ARRAY 0x8076 > ++#define GL_TEXTURE_COORD_ARRAY 0x8078 > ++#define GL_MULTISAMPLE 0x809D > ++#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E > ++#define GL_SAMPLE_ALPHA_TO_ONE 0x809F > ++#define GL_SAMPLE_COVERAGE 0x80A0 > ++ > ++/* ErrorCode */ > ++#define GL_NO_ERROR 0 > ++#define GL_INVALID_ENUM 0x0500 > ++#define GL_INVALID_VALUE 0x0501 > ++#define GL_INVALID_OPERATION 0x0502 > ++#define GL_STACK_OVERFLOW 0x0503 > ++#define GL_STACK_UNDERFLOW 0x0504 > ++#define GL_OUT_OF_MEMORY 0x0505 > ++ > ++/* FogMode */ > ++/* GL_LINEAR */ > ++#define GL_EXP 0x0800 > ++#define GL_EXP2 0x0801 > ++ > ++/* FogParameter */ > ++#define GL_FOG_DENSITY 0x0B62 > ++#define GL_FOG_START 0x0B63 > ++#define GL_FOG_END 0x0B64 > ++#define GL_FOG_MODE 0x0B65 > ++#define GL_FOG_COLOR 0x0B66 > ++ > ++/* FrontFaceDirection */ > ++#define GL_CW 0x0900 > ++#define GL_CCW 0x0901 > ++ > ++/* GetPName */ > ++#define GL_CURRENT_COLOR 0x0B00 > ++#define GL_CURRENT_NORMAL 0x0B02 > ++#define GL_CURRENT_TEXTURE_COORDS 0x0B03 > ++#define GL_POINT_SIZE 0x0B11 > ++#define GL_POINT_SIZE_MIN 0x8126 > ++#define GL_POINT_SIZE_MAX 0x8127 > ++#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 > ++#define GL_POINT_DISTANCE_ATTENUATION 0x8129 > ++#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 > ++#define GL_LINE_WIDTH 0x0B21 > ++#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 > ++#define GL_ALIASED_POINT_SIZE_RANGE 0x846D > ++#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E > ++#define GL_CULL_FACE_MODE 0x0B45 > ++#define GL_FRONT_FACE 0x0B46 > ++#define GL_SHADE_MODEL 0x0B54 > ++#define GL_DEPTH_RANGE 0x0B70 > ++#define GL_DEPTH_WRITEMASK 0x0B72 > ++#define GL_DEPTH_CLEAR_VALUE 0x0B73 > ++#define GL_DEPTH_FUNC 0x0B74 > ++#define GL_STENCIL_CLEAR_VALUE 0x0B91 > ++#define GL_STENCIL_FUNC 0x0B92 > ++#define GL_STENCIL_VALUE_MASK 0x0B93 > ++#define GL_STENCIL_FAIL 0x0B94 > ++#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 > ++#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 > ++#define GL_STENCIL_REF 0x0B97 > ++#define GL_STENCIL_WRITEMASK 0x0B98 > ++#define GL_MATRIX_MODE 0x0BA0 > ++#define GL_VIEWPORT 0x0BA2 > ++#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 > ++#define GL_PROJECTION_STACK_DEPTH 0x0BA4 > ++#define GL_TEXTURE_STACK_DEPTH 0x0BA5 > ++#define GL_MODELVIEW_MATRIX 0x0BA6 > ++#define GL_PROJECTION_MATRIX 0x0BA7 > ++#define GL_TEXTURE_MATRIX 0x0BA8 > ++#define GL_ALPHA_TEST_FUNC 0x0BC1 > ++#define GL_ALPHA_TEST_REF 0x0BC2 > ++#define GL_BLEND_DST 0x0BE0 > ++#define GL_BLEND_SRC 0x0BE1 > ++#define GL_LOGIC_OP_MODE 0x0BF0 > ++#define GL_SCISSOR_BOX 0x0C10 > ++#define GL_SCISSOR_TEST 0x0C11 > ++#define GL_COLOR_CLEAR_VALUE 0x0C22 > ++#define GL_COLOR_WRITEMASK 0x0C23 > ++#define GL_UNPACK_ALIGNMENT 0x0CF5 > ++#define GL_PACK_ALIGNMENT 0x0D05 > ++#define GL_MAX_LIGHTS 0x0D31 > ++#define GL_MAX_CLIP_PLANES 0x0D32 > ++#define GL_MAX_TEXTURE_SIZE 0x0D33 > ++#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 > ++#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 > ++#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 > ++#define GL_MAX_VIEWPORT_DIMS 0x0D3A > ++#define GL_MAX_TEXTURE_UNITS 0x84E2 > ++#define GL_SUBPIXEL_BITS 0x0D50 > ++#define GL_RED_BITS 0x0D52 > ++#define GL_GREEN_BITS 0x0D53 > ++#define GL_BLUE_BITS 0x0D54 > ++#define GL_ALPHA_BITS 0x0D55 > ++#define GL_DEPTH_BITS 0x0D56 > ++#define GL_STENCIL_BITS 0x0D57 > ++#define GL_POLYGON_OFFSET_UNITS 0x2A00 > ++#define GL_POLYGON_OFFSET_FILL 0x8037 > ++#define GL_POLYGON_OFFSET_FACTOR 0x8038 > ++#define GL_TEXTURE_BINDING_2D 0x8069 > ++#define GL_VERTEX_ARRAY_SIZE 0x807A > ++#define GL_VERTEX_ARRAY_TYPE 0x807B > ++#define GL_VERTEX_ARRAY_STRIDE 0x807C > ++#define GL_NORMAL_ARRAY_TYPE 0x807E > ++#define GL_NORMAL_ARRAY_STRIDE 0x807F > ++#define GL_COLOR_ARRAY_SIZE 0x8081 > ++#define GL_COLOR_ARRAY_TYPE 0x8082 > ++#define GL_COLOR_ARRAY_STRIDE 0x8083 > ++#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 > ++#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 > ++#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A > ++#define GL_VERTEX_ARRAY_POINTER 0x808E > ++#define GL_NORMAL_ARRAY_POINTER 0x808F > ++#define GL_COLOR_ARRAY_POINTER 0x8090 > ++#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 > ++#define GL_SAMPLE_BUFFERS 0x80A8 > ++#define GL_SAMPLES 0x80A9 > ++#define GL_SAMPLE_COVERAGE_VALUE 0x80AA > ++#define GL_SAMPLE_COVERAGE_INVERT 0x80AB > ++ > ++/* GetTextureParameter */ > ++/* GL_TEXTURE_MAG_FILTER */ > ++/* GL_TEXTURE_MIN_FILTER */ > ++/* GL_TEXTURE_WRAP_S */ > ++/* GL_TEXTURE_WRAP_T */ > ++ > ++#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 > ++#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 > ++ > ++/* HintMode */ > ++#define GL_DONT_CARE 0x1100 > ++#define GL_FASTEST 0x1101 > ++#define GL_NICEST 0x1102 > ++ > ++/* HintTarget */ > ++#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 > ++#define GL_POINT_SMOOTH_HINT 0x0C51 > ++#define GL_LINE_SMOOTH_HINT 0x0C52 > ++#define GL_FOG_HINT 0x0C54 > ++#define GL_GENERATE_MIPMAP_HINT 0x8192 > ++ > ++/* LightModelParameter */ > ++#define GL_LIGHT_MODEL_AMBIENT 0x0B53 > ++#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 > ++ > ++/* LightParameter */ > ++#define GL_AMBIENT 0x1200 > ++#define GL_DIFFUSE 0x1201 > ++#define GL_SPECULAR 0x1202 > ++#define GL_POSITION 0x1203 > ++#define GL_SPOT_DIRECTION 0x1204 > ++#define GL_SPOT_EXPONENT 0x1205 > ++#define GL_SPOT_CUTOFF 0x1206 > ++#define GL_CONSTANT_ATTENUATION 0x1207 > ++#define GL_LINEAR_ATTENUATION 0x1208 > ++#define GL_QUADRATIC_ATTENUATION 0x1209 > ++ > ++/* DataType */ > ++#define GL_BYTE 0x1400 > ++#define GL_UNSIGNED_BYTE 0x1401 > ++#define GL_SHORT 0x1402 > ++#define GL_UNSIGNED_SHORT 0x1403 > ++#define GL_FLOAT 0x1406 > ++#define GL_FIXED 0x140C > ++ > ++/* LogicOp */ > ++#define GL_CLEAR 0x1500 > ++#define GL_AND 0x1501 > ++#define GL_AND_REVERSE 0x1502 > ++#define GL_COPY 0x1503 > ++#define GL_AND_INVERTED 0x1504 > ++#define GL_NOOP 0x1505 > ++#define GL_XOR 0x1506 > ++#define GL_OR 0x1507 > ++#define GL_NOR 0x1508 > ++#define GL_EQUIV 0x1509 > ++#define GL_INVERT 0x150A > ++#define GL_OR_REVERSE 0x150B > ++#define GL_COPY_INVERTED 0x150C > ++#define GL_OR_INVERTED 0x150D > ++#define GL_NAND 0x150E > ++#define GL_SET 0x150F > ++ > ++/* MaterialFace */ > ++/* GL_FRONT_AND_BACK */ > ++ > ++/* MaterialParameter */ > ++#define GL_EMISSION 0x1600 > ++#define GL_SHININESS 0x1601 > ++#define GL_AMBIENT_AND_DIFFUSE 0x1602 > ++/* GL_AMBIENT */ > ++/* GL_DIFFUSE */ > ++/* GL_SPECULAR */ > ++ > ++/* MatrixMode */ > ++#define GL_MODELVIEW 0x1700 > ++#define GL_PROJECTION 0x1701 > ++#define GL_TEXTURE 0x1702 > ++ > ++/* NormalPointerType */ > ++/* GL_BYTE */ > ++/* GL_SHORT */ > ++/* GL_FLOAT */ > ++/* GL_FIXED */ > ++ > ++/* PixelFormat */ > ++#define GL_ALPHA 0x1906 > ++#define GL_RGB 0x1907 > ++#define GL_RGBA 0x1908 > ++#define GL_LUMINANCE 0x1909 > ++#define GL_LUMINANCE_ALPHA 0x190A > ++ > ++/* PixelStoreParameter */ > ++#define GL_UNPACK_ALIGNMENT 0x0CF5 > ++#define GL_PACK_ALIGNMENT 0x0D05 > ++ > ++/* PixelType */ > ++/* GL_UNSIGNED_BYTE */ > ++#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 > ++#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 > ++#define GL_UNSIGNED_SHORT_5_6_5 0x8363 > ++ > ++/* ShadingModel */ > ++#define GL_FLAT 0x1D00 > ++#define GL_SMOOTH 0x1D01 > ++ > ++/* StencilFunction */ > ++/* GL_NEVER */ > ++/* GL_LESS */ > ++/* GL_EQUAL */ > ++/* GL_LEQUAL */ > ++/* GL_GREATER */ > ++/* GL_NOTEQUAL */ > ++/* GL_GEQUAL */ > ++/* GL_ALWAYS */ > ++ > ++/* StencilOp */ > ++/* GL_ZERO */ > ++#define GL_KEEP 0x1E00 > ++#define GL_REPLACE 0x1E01 > ++#define GL_INCR 0x1E02 > ++#define GL_DECR 0x1E03 > ++/* GL_INVERT */ > ++ > ++/* StringName */ > ++#define GL_VENDOR 0x1F00 > ++#define GL_RENDERER 0x1F01 > ++#define GL_VERSION 0x1F02 > ++#define GL_EXTENSIONS 0x1F03 > ++ > ++/* TexCoordPointerType */ > ++/* GL_SHORT */ > ++/* GL_FLOAT */ > ++/* GL_FIXED */ > ++/* GL_BYTE */ > ++ > ++/* TextureEnvMode */ > ++#define GL_MODULATE 0x2100 > ++#define GL_DECAL 0x2101 > ++/* GL_BLEND */ > ++#define GL_ADD 0x0104 > ++/* GL_REPLACE */ > ++ > ++/* TextureEnvParameter */ > ++#define GL_TEXTURE_ENV_MODE 0x2200 > ++#define GL_TEXTURE_ENV_COLOR 0x2201 > ++ > ++/* TextureEnvTarget */ > ++#define GL_TEXTURE_ENV 0x2300 > ++ > ++/* TextureMagFilter */ > ++#define GL_NEAREST 0x2600 > ++#define GL_LINEAR 0x2601 > ++ > ++/* TextureMinFilter */ > ++/* GL_NEAREST */ > ++/* GL_LINEAR */ > ++#define GL_NEAREST_MIPMAP_NEAREST 0x2700 > ++#define GL_LINEAR_MIPMAP_NEAREST 0x2701 > ++#define GL_NEAREST_MIPMAP_LINEAR 0x2702 > ++#define GL_LINEAR_MIPMAP_LINEAR 0x2703 > ++ > ++/* TextureParameterName */ > ++#define GL_TEXTURE_MAG_FILTER 0x2800 > ++#define GL_TEXTURE_MIN_FILTER 0x2801 > ++#define GL_TEXTURE_WRAP_S 0x2802 > ++#define GL_TEXTURE_WRAP_T 0x2803 > ++#define GL_GENERATE_MIPMAP 0x8191 > ++ > ++/* TextureTarget */ > ++/* GL_TEXTURE_2D */ > ++ > ++/* TextureUnit */ > ++#define GL_TEXTURE0 0x84C0 > ++#define GL_TEXTURE1 0x84C1 > ++#define GL_TEXTURE2 0x84C2 > ++#define GL_TEXTURE3 0x84C3 > ++#define GL_TEXTURE4 0x84C4 > ++#define GL_TEXTURE5 0x84C5 > ++#define GL_TEXTURE6 0x84C6 > ++#define GL_TEXTURE7 0x84C7 > ++#define GL_TEXTURE8 0x84C8 > ++#define GL_TEXTURE9 0x84C9 > ++#define GL_TEXTURE10 0x84CA > ++#define GL_TEXTURE11 0x84CB > ++#define GL_TEXTURE12 0x84CC > ++#define GL_TEXTURE13 0x84CD > ++#define GL_TEXTURE14 0x84CE > ++#define GL_TEXTURE15 0x84CF > ++#define GL_TEXTURE16 0x84D0 > ++#define GL_TEXTURE17 0x84D1 > ++#define GL_TEXTURE18 0x84D2 > ++#define GL_TEXTURE19 0x84D3 > ++#define GL_TEXTURE20 0x84D4 > ++#define GL_TEXTURE21 0x84D5 > ++#define GL_TEXTURE22 0x84D6 > ++#define GL_TEXTURE23 0x84D7 > ++#define GL_TEXTURE24 0x84D8 > ++#define GL_TEXTURE25 0x84D9 > ++#define GL_TEXTURE26 0x84DA > ++#define GL_TEXTURE27 0x84DB > ++#define GL_TEXTURE28 0x84DC > ++#define GL_TEXTURE29 0x84DD > ++#define GL_TEXTURE30 0x84DE > ++#define GL_TEXTURE31 0x84DF > ++#define GL_ACTIVE_TEXTURE 0x84E0 > ++#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 > ++ > ++/* TextureWrapMode */ > ++#define GL_REPEAT 0x2901 > ++#define GL_CLAMP_TO_EDGE 0x812F > ++ > ++/* VertexPointerType */ > ++/* GL_SHORT */ > ++/* GL_FLOAT */ > ++/* GL_FIXED */ > ++/* GL_BYTE */ > ++ > ++/* LightName */ > ++#define GL_LIGHT0 0x4000 > ++#define GL_LIGHT1 0x4001 > ++#define GL_LIGHT2 0x4002 > ++#define GL_LIGHT3 0x4003 > ++#define GL_LIGHT4 0x4004 > ++#define GL_LIGHT5 0x4005 > ++#define GL_LIGHT6 0x4006 > ++#define GL_LIGHT7 0x4007 > ++ > ++/* Buffer Objects */ > ++#define GL_ARRAY_BUFFER 0x8892 > ++#define GL_ELEMENT_ARRAY_BUFFER 0x8893 > ++ > ++#define GL_ARRAY_BUFFER_BINDING 0x8894 > ++#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 > ++#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 > ++#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 > ++#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 > ++#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A > ++ > ++#define GL_STATIC_DRAW 0x88E4 > ++#define GL_DYNAMIC_DRAW 0x88E8 > ++ > ++#define GL_BUFFER_SIZE 0x8764 > ++#define GL_BUFFER_USAGE 0x8765 > ++ > ++/* Texture combine + dot3 */ > ++#define GL_SUBTRACT 0x84E7 > ++#define GL_COMBINE 0x8570 > ++#define GL_COMBINE_RGB 0x8571 > ++#define GL_COMBINE_ALPHA 0x8572 > ++#define GL_RGB_SCALE 0x8573 > ++#define GL_ADD_SIGNED 0x8574 > ++#define GL_INTERPOLATE 0x8575 > ++#define GL_CONSTANT 0x8576 > ++#define GL_PRIMARY_COLOR 0x8577 > ++#define GL_PREVIOUS 0x8578 > ++#define GL_OPERAND0_RGB 0x8590 > ++#define GL_OPERAND1_RGB 0x8591 > ++#define GL_OPERAND2_RGB 0x8592 > ++#define GL_OPERAND0_ALPHA 0x8598 > ++#define GL_OPERAND1_ALPHA 0x8599 > ++#define GL_OPERAND2_ALPHA 0x859A > ++ > ++#define GL_ALPHA_SCALE 0x0D1C > ++ > ++#define GL_SRC0_RGB 0x8580 > ++#define GL_SRC1_RGB 0x8581 > ++#define GL_SRC2_RGB 0x8582 > ++#define GL_SRC0_ALPHA 0x8588 > ++#define GL_SRC1_ALPHA 0x8589 > ++#define GL_SRC2_ALPHA 0x858A > ++ > ++#define GL_DOT3_RGB 0x86AE > ++#define GL_DOT3_RGBA 0x86AF > ++ > ++/*------------------------------------------------------------------------* > ++ * required OES extension tokens > ++ *------------------------------------------------------------------------*/ > ++ > ++/* OES_read_format */ > ++#ifndef GL_OES_read_format > ++#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A > ++#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B > ++#endif > ++ > ++/* GL_OES_compressed_paletted_texture */ > ++#ifndef GL_OES_compressed_paletted_texture > ++#define GL_PALETTE4_RGB8_OES 0x8B90 > ++#define GL_PALETTE4_RGBA8_OES 0x8B91 > ++#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 > ++#define GL_PALETTE4_RGBA4_OES 0x8B93 > ++#define GL_PALETTE4_RGB5_A1_OES 0x8B94 > ++#define GL_PALETTE8_RGB8_OES 0x8B95 > ++#define GL_PALETTE8_RGBA8_OES 0x8B96 > ++#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 > ++#define GL_PALETTE8_RGBA4_OES 0x8B98 > ++#define GL_PALETTE8_RGB5_A1_OES 0x8B99 > ++#endif > ++ > ++/* OES_point_size_array */ > ++#ifndef GL_OES_point_size_array > ++#define GL_POINT_SIZE_ARRAY_OES 0x8B9C > ++#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A > ++#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B > ++#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C > ++#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F > ++#endif > ++ > ++/* GL_OES_point_sprite */ > ++#ifndef GL_OES_point_sprite > ++#define GL_POINT_SPRITE_OES 0x8861 > ++#define GL_COORD_REPLACE_OES 0x8862 > ++#endif > ++ > ++/*************************************************************/ > ++ > ++/* Available only in Common profile */ > ++GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref); > ++GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); > ++GL_API void GL_APIENTRY glClearDepthf (GLclampf depth); > ++GL_API void GL_APIENTRY glClipPlanef (GLenum plane, const GLfloat *equation); > ++GL_API void GL_APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); > ++GL_API void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); > ++GL_API void GL_APIENTRY glFogf (GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glFogfv (GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++GL_API void GL_APIENTRY glGetClipPlanef (GLenum pname, GLfloat eqn[4]); > ++GL_API void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glGetTexEnvfv (GLenum env, GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); > ++GL_API void GL_APIENTRY glLightModelf (GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glLightModelfv (GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glLineWidth (GLfloat width); > ++GL_API void GL_APIENTRY glLoadMatrixf (const GLfloat *m); > ++GL_API void GL_APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glMultMatrixf (const GLfloat *m); > ++GL_API void GL_APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); > ++GL_API void GL_APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); > ++GL_API void GL_APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); > ++GL_API void GL_APIENTRY glPointParameterf (GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glPointSize (GLfloat size); > ++GL_API void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); > ++GL_API void GL_APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); > ++GL_API void GL_APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); > ++GL_API void GL_APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); > ++GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); > ++GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); > ++ > ++/* Available in both Common and Common-Lite profiles */ > ++GL_API void GL_APIENTRY glActiveTexture (GLenum texture); > ++GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref); > ++GL_API void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); > ++GL_API void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); > ++GL_API void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); > ++GL_API void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); > ++GL_API void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); > ++GL_API void GL_APIENTRY glClear (GLbitfield mask); > ++GL_API void GL_APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); > ++GL_API void GL_APIENTRY glClearDepthx (GLclampx depth); > ++GL_API void GL_APIENTRY glClearStencil (GLint s); > ++GL_API void GL_APIENTRY glClientActiveTexture (GLenum texture); > ++GL_API void GL_APIENTRY glClipPlanex (GLenum plane, const GLfixed *equation); > ++GL_API void GL_APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); > ++GL_API void GL_APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); > ++GL_API void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); > ++GL_API void GL_APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++GL_API void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); > ++GL_API void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); > ++GL_API void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); > ++GL_API void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); > ++GL_API void GL_APIENTRY glCullFace (GLenum mode); > ++GL_API void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); > ++GL_API void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); > ++GL_API void GL_APIENTRY glDepthFunc (GLenum func); > ++GL_API void GL_APIENTRY glDepthMask (GLboolean flag); > ++GL_API void GL_APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar); > ++GL_API void GL_APIENTRY glDisable (GLenum cap); > ++GL_API void GL_APIENTRY glDisableClientState (GLenum array); > ++GL_API void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); > ++GL_API void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); > ++GL_API void GL_APIENTRY glEnable (GLenum cap); > ++GL_API void GL_APIENTRY glEnableClientState (GLenum array); > ++GL_API void GL_APIENTRY glFinish (void); > ++GL_API void GL_APIENTRY glFlush (void); > ++GL_API void GL_APIENTRY glFogx (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glFogxv (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glFrontFace (GLenum mode); > ++GL_API void GL_APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++GL_API void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); > ++GL_API void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glGetClipPlanex (GLenum pname, GLfixed eqn[4]); > ++GL_API void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); > ++GL_API void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); > ++GL_API GLenum GL_APIENTRY glGetError (void); > ++GL_API void GL_APIENTRY glGetFixedv (GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glGetLightxv (GLenum light, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetMaterialxv (GLenum face, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetPointerv (GLenum pname, GLvoid **params); > ++GL_API const GLubyte * GL_APIENTRY glGetString (GLenum name); > ++GL_API void GL_APIENTRY glGetTexEnviv (GLenum env, GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glGetTexEnvxv (GLenum env, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); > ++GL_API void GL_APIENTRY glGetTexParameterxv (GLenum target, GLenum pname, GLfixed *params); > ++GL_API void GL_APIENTRY glHint (GLenum target, GLenum mode); > ++GL_API GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); > ++GL_API GLboolean GL_APIENTRY glIsEnabled (GLenum cap); > ++GL_API GLboolean GL_APIENTRY glIsTexture (GLuint texture); > ++GL_API void GL_APIENTRY glLightModelx (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glLightModelxv (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glLineWidthx (GLfixed width); > ++GL_API void GL_APIENTRY glLoadIdentity (void); > ++GL_API void GL_APIENTRY glLoadMatrixx (const GLfixed *m); > ++GL_API void GL_APIENTRY glLogicOp (GLenum opcode); > ++GL_API void GL_APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glMatrixMode (GLenum mode); > ++GL_API void GL_APIENTRY glMultMatrixx (const GLfixed *m); > ++GL_API void GL_APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); > ++GL_API void GL_APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz); > ++GL_API void GL_APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); > ++GL_API void GL_APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); > ++GL_API void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); > ++GL_API void GL_APIENTRY glPointParameterx (GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glPointParameterxv (GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glPointSizex (GLfixed size); > ++GL_API void GL_APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units); > ++GL_API void GL_APIENTRY glPopMatrix (void); > ++GL_API void GL_APIENTRY glPushMatrix (void); > ++GL_API void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); > ++GL_API void GL_APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); > ++GL_API void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); > ++GL_API void GL_APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert); > ++GL_API void GL_APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z); > ++GL_API void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); > ++GL_API void GL_APIENTRY glShadeModel (GLenum mode); > ++GL_API void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); > ++GL_API void GL_APIENTRY glStencilMask (GLuint mask); > ++GL_API void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); > ++GL_API void GL_APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++GL_API void GL_APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); > ++GL_API void GL_APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); > ++GL_API void GL_APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); > ++GL_API void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); > ++GL_API void GL_APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param); > ++GL_API void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); > ++GL_API void GL_APIENTRY glTexParameterxv (GLenum target, GLenum pname, const GLfixed *params); > ++GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); > ++GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z); > ++GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); > ++GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); > ++ > ++/*------------------------------------------------------------------------* > ++ * Required OES extension functions > ++ *------------------------------------------------------------------------*/ > ++ > ++/* GL_OES_read_format */ > ++#ifndef GL_OES_read_format > ++#define GL_OES_read_format 1 > ++#endif > ++ > ++/* GL_OES_compressed_paletted_texture */ > ++#ifndef GL_OES_compressed_paletted_texture > ++#define GL_OES_compressed_paletted_texture 1 > ++#endif > ++ > ++/* GL_OES_point_size_array */ > ++#ifndef GL_OES_point_size_array > ++#define GL_OES_point_size_array 1 > ++GL_API void GL_APIENTRY glPointSizePointerOES (GLenum type, GLsizei stride, const GLvoid *pointer); > ++#endif > ++ > ++/* GL_OES_point_sprite */ > ++#ifndef GL_OES_point_sprite > ++#define GL_OES_point_sprite 1 > ++#endif > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __gl_h_ */ > ++ > +diff -rupN a/usr/include/GLES/glplatform.h b/usr/include/GLES/glplatform.h > +--- a/usr/include/GLES/glplatform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES/glplatform.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,30 @@ > ++#ifndef __glplatform_h_ > ++#define __glplatform_h_ > ++ > ++/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ > ++ > ++/* > ++ * This document is licensed under the SGI Free Software B License Version > ++ * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . > ++ */ > ++ > ++/* Platform-specific types and definitions for OpenGL ES 1.X gl.h > ++ * > ++ * Adopters may modify khrplatform.h and this file to suit their platform. > ++ * You are encouraged to submit all modifications to the Khronos group so that > ++ * they can be included in future versions of this file. Please submit changes > ++ * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) > ++ * by filing a bug against product "OpenGL-ES" component "Registry". > ++ */ > ++ > ++#include > ++ > ++#ifndef GL_API > ++#define GL_API KHRONOS_APICALL > ++#endif > ++ > ++#ifndef GL_APIENTRY > ++#define GL_APIENTRY KHRONOS_APIENTRY > ++#endif > ++ > ++#endif /* __glplatform_h_ */ > +diff -rupN a/usr/include/GLES2/gl2ext.h b/usr/include/GLES2/gl2ext.h > +--- a/usr/include/GLES2/gl2ext.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES2/gl2ext.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,1494 @@ > ++#ifndef __gl2ext_h_ > ++#define __gl2ext_h_ 1 > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* > ++** Copyright (c) 2013 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++/* > ++** This header is generated from the Khronos OpenGL / OpenGL ES XML > ++** API Registry. The current version of the Registry, generator scripts > ++** used to make the header, and the header can be found at > ++** http://www.opengl.org/registry/ > ++** > ++** Khronos $Revision: 23422 $ on $Date: 2013-10-08 15:40:45 -0700 (Tue, 08 Oct 2013) $ > ++*/ > ++ > ++#ifndef GL_APIENTRYP > ++#define GL_APIENTRYP GL_APIENTRY* > ++#endif > ++ > ++/* Generated C header for: > ++ * API: gles2 > ++ * Profile: common > ++ * Versions considered: 2\.[0-9] > ++ * Versions emitted: _nomatch_^ > ++ * Default extensions included: gles2 > ++ * Additional extensions included: _nomatch_^ > ++ * Extensions removed: _nomatch_^ > ++ */ > ++ > ++#ifndef GL_KHR_debug > ++#define GL_KHR_debug 1 > ++typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); > ++#define GL_SAMPLER 0x82E6 > ++#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 > ++#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 > ++#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 > ++#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 > ++#define GL_DEBUG_SOURCE_API_KHR 0x8246 > ++#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 > ++#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 > ++#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 > ++#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A > ++#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B > ++#define GL_DEBUG_TYPE_ERROR_KHR 0x824C > ++#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D > ++#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E > ++#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F > ++#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 > ++#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 > ++#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 > ++#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 > ++#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A > ++#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B > ++#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C > ++#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D > ++#define GL_BUFFER_KHR 0x82E0 > ++#define GL_SHADER_KHR 0x82E1 > ++#define GL_PROGRAM_KHR 0x82E2 > ++#define GL_VERTEX_ARRAY_KHR 0x8074 > ++#define GL_QUERY_KHR 0x82E3 > ++#define GL_SAMPLER_KHR 0x82E6 > ++#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 > ++#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 > ++#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 > ++#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 > ++#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 > ++#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 > ++#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 > ++#define GL_DEBUG_OUTPUT_KHR 0x92E0 > ++#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 > ++#define GL_STACK_OVERFLOW_KHR 0x0503 > ++#define GL_STACK_UNDERFLOW_KHR 0x0504 > ++typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); > ++typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); > ++typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); > ++typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); > ++typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); > ++typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); > ++typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); > ++typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); > ++typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); > ++typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); > ++typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); > ++GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); > ++GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); > ++GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); > ++GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); > ++GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); > ++GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); > ++GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); > ++GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); > ++GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); > ++GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); > ++#endif > ++#endif /* GL_KHR_debug */ > ++ > ++#ifndef GL_KHR_texture_compression_astc_hdr > ++#define GL_KHR_texture_compression_astc_hdr 1 > ++#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 > ++#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 > ++#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 > ++#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 > ++#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 > ++#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 > ++#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 > ++#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 > ++#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 > ++#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 > ++#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA > ++#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB > ++#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC > ++#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC > ++#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD > ++#endif /* GL_KHR_texture_compression_astc_hdr */ > ++ > ++#ifndef GL_KHR_texture_compression_astc_ldr > ++#define GL_KHR_texture_compression_astc_ldr 1 > ++#endif /* GL_KHR_texture_compression_astc_ldr */ > ++ > ++#ifndef GL_OES_EGL_image > ++#define GL_OES_EGL_image 1 > ++typedef void *GLeglImageOES; > ++typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); > ++typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); > ++GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); > ++#endif > ++#endif /* GL_OES_EGL_image */ > ++ > ++#ifndef GL_OES_EGL_image_external > ++#define GL_OES_EGL_image_external 1 > ++#define GL_TEXTURE_EXTERNAL_OES 0x8D65 > ++#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 > ++#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 > ++#define GL_SAMPLER_EXTERNAL_OES 0x8D66 > ++#endif /* GL_OES_EGL_image_external */ > ++ > ++#ifndef GL_OES_compressed_ETC1_RGB8_texture > ++#define GL_OES_compressed_ETC1_RGB8_texture 1 > ++#define GL_ETC1_RGB8_OES 0x8D64 > ++#endif /* GL_OES_compressed_ETC1_RGB8_texture */ > ++ > ++#ifndef GL_OES_compressed_paletted_texture > ++#define GL_OES_compressed_paletted_texture 1 > ++#define GL_PALETTE4_RGB8_OES 0x8B90 > ++#define GL_PALETTE4_RGBA8_OES 0x8B91 > ++#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 > ++#define GL_PALETTE4_RGBA4_OES 0x8B93 > ++#define GL_PALETTE4_RGB5_A1_OES 0x8B94 > ++#define GL_PALETTE8_RGB8_OES 0x8B95 > ++#define GL_PALETTE8_RGBA8_OES 0x8B96 > ++#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 > ++#define GL_PALETTE8_RGBA4_OES 0x8B98 > ++#define GL_PALETTE8_RGB5_A1_OES 0x8B99 > ++#endif /* GL_OES_compressed_paletted_texture */ > ++ > ++#ifndef GL_OES_depth24 > ++#define GL_OES_depth24 1 > ++#define GL_DEPTH_COMPONENT24_OES 0x81A6 > ++#endif /* GL_OES_depth24 */ > ++ > ++#ifndef GL_OES_depth32 > ++#define GL_OES_depth32 1 > ++#define GL_DEPTH_COMPONENT32_OES 0x81A7 > ++#endif /* GL_OES_depth32 */ > ++ > ++#ifndef GL_OES_depth_texture > ++#define GL_OES_depth_texture 1 > ++#endif /* GL_OES_depth_texture */ > ++ > ++#ifndef GL_OES_element_index_uint > ++#define GL_OES_element_index_uint 1 > ++#endif /* GL_OES_element_index_uint */ > ++ > ++#ifndef GL_OES_fbo_render_mipmap > ++#define GL_OES_fbo_render_mipmap 1 > ++#endif /* GL_OES_fbo_render_mipmap */ > ++ > ++#ifndef GL_OES_fragment_precision_high > ++#define GL_OES_fragment_precision_high 1 > ++#endif /* GL_OES_fragment_precision_high */ > ++ > ++#ifndef GL_OES_get_program_binary > ++#define GL_OES_get_program_binary 1 > ++#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 > ++#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE > ++#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF > ++typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); > ++GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); > ++#endif > ++#endif /* GL_OES_get_program_binary */ > ++ > ++#ifndef GL_OES_mapbuffer > ++#define GL_OES_mapbuffer 1 > ++#define GL_WRITE_ONLY_OES 0x88B9 > ++#define GL_BUFFER_ACCESS_OES 0x88BB > ++#define GL_BUFFER_MAPPED_OES 0x88BC > ++#define GL_BUFFER_MAP_POINTER_OES 0x88BD > ++typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); > ++typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); > ++typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); > ++GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); > ++GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); > ++#endif > ++#endif /* GL_OES_mapbuffer */ > ++ > ++#ifndef GL_OES_packed_depth_stencil > ++#define GL_OES_packed_depth_stencil 1 > ++#define GL_DEPTH_STENCIL_OES 0x84F9 > ++#define GL_UNSIGNED_INT_24_8_OES 0x84FA > ++#define GL_DEPTH24_STENCIL8_OES 0x88F0 > ++#endif /* GL_OES_packed_depth_stencil */ > ++ > ++#ifndef GL_OES_required_internalformat > ++#define GL_OES_required_internalformat 1 > ++#define GL_ALPHA8_OES 0x803C > ++#define GL_DEPTH_COMPONENT16_OES 0x81A5 > ++#define GL_LUMINANCE4_ALPHA4_OES 0x8043 > ++#define GL_LUMINANCE8_ALPHA8_OES 0x8045 > ++#define GL_LUMINANCE8_OES 0x8040 > ++#define GL_RGBA4_OES 0x8056 > ++#define GL_RGB5_A1_OES 0x8057 > ++#define GL_RGB565_OES 0x8D62 > ++#define GL_RGB8_OES 0x8051 > ++#define GL_RGBA8_OES 0x8058 > ++#define GL_RGB10_EXT 0x8052 > ++#define GL_RGB10_A2_EXT 0x8059 > ++#endif /* GL_OES_required_internalformat */ > ++ > ++#ifndef GL_OES_rgb8_rgba8 > ++#define GL_OES_rgb8_rgba8 1 > ++#endif /* GL_OES_rgb8_rgba8 */ > ++ > ++#ifndef GL_OES_standard_derivatives > ++#define GL_OES_standard_derivatives 1 > ++#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B > ++#endif /* GL_OES_standard_derivatives */ > ++ > ++#ifndef GL_OES_stencil1 > ++#define GL_OES_stencil1 1 > ++#define GL_STENCIL_INDEX1_OES 0x8D46 > ++#endif /* GL_OES_stencil1 */ > ++ > ++#ifndef GL_OES_stencil4 > ++#define GL_OES_stencil4 1 > ++#define GL_STENCIL_INDEX4_OES 0x8D47 > ++#endif /* GL_OES_stencil4 */ > ++ > ++#ifndef GL_OES_surfaceless_context > ++#define GL_OES_surfaceless_context 1 > ++#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 > ++#endif /* GL_OES_surfaceless_context */ > ++ > ++#ifndef GL_OES_texture_3D > ++#define GL_OES_texture_3D 1 > ++#define GL_TEXTURE_WRAP_R_OES 0x8072 > ++#define GL_TEXTURE_3D_OES 0x806F > ++#define GL_TEXTURE_BINDING_3D_OES 0x806A > ++#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 > ++#define GL_SAMPLER_3D_OES 0x8B5F > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 > ++typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); > ++typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); > ++typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); > ++typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); > ++GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); > ++GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); > ++GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); > ++GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); > ++#endif > ++#endif /* GL_OES_texture_3D */ > ++ > ++#ifndef GL_OES_texture_compression_astc > ++#define GL_OES_texture_compression_astc 1 > ++#endif /* GL_OES_texture_compression_astc */ > ++ > ++#ifndef GL_OES_texture_float > ++#define GL_OES_texture_float 1 > ++#endif /* GL_OES_texture_float */ > ++ > ++#ifndef GL_OES_texture_float_linear > ++#define GL_OES_texture_float_linear 1 > ++#endif /* GL_OES_texture_float_linear */ > ++ > ++#ifndef GL_OES_texture_half_float > ++#define GL_OES_texture_half_float 1 > ++#define GL_HALF_FLOAT_OES 0x8D61 > ++#endif /* GL_OES_texture_half_float */ > ++ > ++#ifndef GL_OES_texture_half_float_linear > ++#define GL_OES_texture_half_float_linear 1 > ++#endif /* GL_OES_texture_half_float_linear */ > ++ > ++#ifndef GL_OES_texture_npot > ++#define GL_OES_texture_npot 1 > ++#endif /* GL_OES_texture_npot */ > ++ > ++#ifndef GL_OES_vertex_array_object > ++#define GL_OES_vertex_array_object 1 > ++#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 > ++typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); > ++typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); > ++typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); > ++typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); > ++GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); > ++GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); > ++GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); > ++#endif > ++#endif /* GL_OES_vertex_array_object */ > ++ > ++#ifndef GL_OES_vertex_half_float > ++#define GL_OES_vertex_half_float 1 > ++#endif /* GL_OES_vertex_half_float */ > ++ > ++#ifndef GL_OES_vertex_type_10_10_10_2 > ++#define GL_OES_vertex_type_10_10_10_2 1 > ++#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 > ++#define GL_INT_10_10_10_2_OES 0x8DF7 > ++#endif /* GL_OES_vertex_type_10_10_10_2 */ > ++ > ++#ifndef GL_AMD_compressed_3DC_texture > ++#define GL_AMD_compressed_3DC_texture 1 > ++#define GL_3DC_X_AMD 0x87F9 > ++#define GL_3DC_XY_AMD 0x87FA > ++#endif /* GL_AMD_compressed_3DC_texture */ > ++ > ++#ifndef GL_AMD_compressed_ATC_texture > ++#define GL_AMD_compressed_ATC_texture 1 > ++#define GL_ATC_RGB_AMD 0x8C92 > ++#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 > ++#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE > ++#endif /* GL_AMD_compressed_ATC_texture */ > ++ > ++#ifndef GL_AMD_performance_monitor > ++#define GL_AMD_performance_monitor 1 > ++#define GL_COUNTER_TYPE_AMD 0x8BC0 > ++#define GL_COUNTER_RANGE_AMD 0x8BC1 > ++#define GL_UNSIGNED_INT64_AMD 0x8BC2 > ++#define GL_PERCENTAGE_AMD 0x8BC3 > ++#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 > ++#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 > ++#define GL_PERFMON_RESULT_AMD 0x8BC6 > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); > ++typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); > ++typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); > ++typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); > ++typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); > ++typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); > ++typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); > ++GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); > ++GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); > ++GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); > ++GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); > ++GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); > ++GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); > ++#endif > ++#endif /* GL_AMD_performance_monitor */ > ++ > ++#ifndef GL_AMD_program_binary_Z400 > ++#define GL_AMD_program_binary_Z400 1 > ++#define GL_Z400_BINARY_AMD 0x8740 > ++#endif /* GL_AMD_program_binary_Z400 */ > ++ > ++#ifndef GL_ANGLE_depth_texture > ++#define GL_ANGLE_depth_texture 1 > ++#endif /* GL_ANGLE_depth_texture */ > ++ > ++#ifndef GL_ANGLE_framebuffer_blit > ++#define GL_ANGLE_framebuffer_blit 1 > ++#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 > ++#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 > ++#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 > ++#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA > ++typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); > ++#endif > ++#endif /* GL_ANGLE_framebuffer_blit */ > ++ > ++#ifndef GL_ANGLE_framebuffer_multisample > ++#define GL_ANGLE_framebuffer_multisample 1 > ++#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 > ++#define GL_MAX_SAMPLES_ANGLE 0x8D57 > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++#endif > ++#endif /* GL_ANGLE_framebuffer_multisample */ > ++ > ++#ifndef GL_ANGLE_instanced_arrays > ++#define GL_ANGLE_instanced_arrays 1 > ++#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE > ++typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); > ++GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); > ++#endif > ++#endif /* GL_ANGLE_instanced_arrays */ > ++ > ++#ifndef GL_ANGLE_pack_reverse_row_order > ++#define GL_ANGLE_pack_reverse_row_order 1 > ++#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 > ++#endif /* GL_ANGLE_pack_reverse_row_order */ > ++ > ++#ifndef GL_ANGLE_program_binary > ++#define GL_ANGLE_program_binary 1 > ++#define GL_PROGRAM_BINARY_ANGLE 0x93A6 > ++#endif /* GL_ANGLE_program_binary */ > ++ > ++#ifndef GL_ANGLE_texture_compression_dxt3 > ++#define GL_ANGLE_texture_compression_dxt3 1 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 > ++#endif /* GL_ANGLE_texture_compression_dxt3 */ > ++ > ++#ifndef GL_ANGLE_texture_compression_dxt5 > ++#define GL_ANGLE_texture_compression_dxt5 1 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 > ++#endif /* GL_ANGLE_texture_compression_dxt5 */ > ++ > ++#ifndef GL_ANGLE_texture_usage > ++#define GL_ANGLE_texture_usage 1 > ++#define GL_TEXTURE_USAGE_ANGLE 0x93A2 > ++#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 > ++#endif /* GL_ANGLE_texture_usage */ > ++ > ++#ifndef GL_ANGLE_translated_shader_source > ++#define GL_ANGLE_translated_shader_source 1 > ++#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 > ++typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); > ++#endif > ++#endif /* GL_ANGLE_translated_shader_source */ > ++ > ++#ifndef GL_APPLE_copy_texture_levels > ++#define GL_APPLE_copy_texture_levels 1 > ++typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); > ++#endif > ++#endif /* GL_APPLE_copy_texture_levels */ > ++ > ++#ifndef GL_APPLE_framebuffer_multisample > ++#define GL_APPLE_framebuffer_multisample 1 > ++#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 > ++#define GL_MAX_SAMPLES_APPLE 0x8D57 > ++#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 > ++#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 > ++#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 > ++#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); > ++#endif > ++#endif /* GL_APPLE_framebuffer_multisample */ > ++ > ++#ifndef GL_APPLE_rgb_422 > ++#define GL_APPLE_rgb_422 1 > ++#define GL_RGB_422_APPLE 0x8A1F > ++#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA > ++#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB > ++#define GL_RGB_RAW_422_APPLE 0x8A51 > ++#endif /* GL_APPLE_rgb_422 */ > ++ > ++#ifndef GL_APPLE_sync > ++#define GL_APPLE_sync 1 > ++#define GL_SYNC_OBJECT_APPLE 0x8A53 > ++#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 > ++#define GL_OBJECT_TYPE_APPLE 0x9112 > ++#define GL_SYNC_CONDITION_APPLE 0x9113 > ++#define GL_SYNC_STATUS_APPLE 0x9114 > ++#define GL_SYNC_FLAGS_APPLE 0x9115 > ++#define GL_SYNC_FENCE_APPLE 0x9116 > ++#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 > ++#define GL_UNSIGNALED_APPLE 0x9118 > ++#define GL_SIGNALED_APPLE 0x9119 > ++#define GL_ALREADY_SIGNALED_APPLE 0x911A > ++#define GL_TIMEOUT_EXPIRED_APPLE 0x911B > ++#define GL_CONDITION_SATISFIED_APPLE 0x911C > ++#define GL_WAIT_FAILED_APPLE 0x911D > ++#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 > ++#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull > ++typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); > ++typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); > ++typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); > ++typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); > ++typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); > ++GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); > ++GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); > ++GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); > ++GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); > ++GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); > ++#endif > ++#endif /* GL_APPLE_sync */ > ++ > ++#ifndef GL_APPLE_texture_format_BGRA8888 > ++#define GL_APPLE_texture_format_BGRA8888 1 > ++#define GL_BGRA_EXT 0x80E1 > ++#define GL_BGRA8_EXT 0x93A1 > ++#endif /* GL_APPLE_texture_format_BGRA8888 */ > ++ > ++#ifndef GL_APPLE_texture_max_level > ++#define GL_APPLE_texture_max_level 1 > ++#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D > ++#endif /* GL_APPLE_texture_max_level */ > ++ > ++#ifndef GL_ARM_mali_program_binary > ++#define GL_ARM_mali_program_binary 1 > ++#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 > ++#endif /* GL_ARM_mali_program_binary */ > ++ > ++#ifndef GL_ARM_mali_shader_binary > ++#define GL_ARM_mali_shader_binary 1 > ++#define GL_MALI_SHADER_BINARY_ARM 0x8F60 > ++#endif /* GL_ARM_mali_shader_binary */ > ++ > ++#ifndef GL_ARM_rgba8 > ++#define GL_ARM_rgba8 1 > ++#endif /* GL_ARM_rgba8 */ > ++ > ++#ifndef GL_DMP_shader_binary > ++#define GL_DMP_shader_binary 1 > ++#define GL_SHADER_BINARY_DMP 0x9250 > ++#endif /* GL_DMP_shader_binary */ > ++ > ++#ifndef GL_EXT_blend_minmax > ++#define GL_EXT_blend_minmax 1 > ++#define GL_MIN_EXT 0x8007 > ++#define GL_MAX_EXT 0x8008 > ++#endif /* GL_EXT_blend_minmax */ > ++ > ++#ifndef GL_EXT_color_buffer_half_float > ++#define GL_EXT_color_buffer_half_float 1 > ++#define GL_RGBA16F_EXT 0x881A > ++#define GL_RGB16F_EXT 0x881B > ++#define GL_RG16F_EXT 0x822F > ++#define GL_R16F_EXT 0x822D > ++#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 > ++#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 > ++#endif /* GL_EXT_color_buffer_half_float */ > ++ > ++#ifndef GL_EXT_debug_label > ++#define GL_EXT_debug_label 1 > ++#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F > ++#define GL_PROGRAM_OBJECT_EXT 0x8B40 > ++#define GL_SHADER_OBJECT_EXT 0x8B48 > ++#define GL_BUFFER_OBJECT_EXT 0x9151 > ++#define GL_QUERY_OBJECT_EXT 0x9153 > ++#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 > ++#define GL_TRANSFORM_FEEDBACK 0x8E22 > ++typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); > ++typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); > ++GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); > ++#endif > ++#endif /* GL_EXT_debug_label */ > ++ > ++#ifndef GL_EXT_debug_marker > ++#define GL_EXT_debug_marker 1 > ++typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); > ++typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); > ++typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); > ++GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); > ++GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); > ++#endif > ++#endif /* GL_EXT_debug_marker */ > ++ > ++#ifndef GL_EXT_discard_framebuffer > ++#define GL_EXT_discard_framebuffer 1 > ++#define GL_COLOR_EXT 0x1800 > ++#define GL_DEPTH_EXT 0x1801 > ++#define GL_STENCIL_EXT 0x1802 > ++typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); > ++#endif > ++#endif /* GL_EXT_discard_framebuffer */ > ++ > ++#ifndef GL_EXT_disjoint_timer_query > ++#define GL_EXT_disjoint_timer_query 1 > ++#define GL_QUERY_COUNTER_BITS_EXT 0x8864 > ++#define GL_CURRENT_QUERY_EXT 0x8865 > ++#define GL_QUERY_RESULT_EXT 0x8866 > ++#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 > ++#define GL_TIME_ELAPSED_EXT 0x88BF > ++#define GL_TIMESTAMP_EXT 0x8E28 > ++#define GL_GPU_DISJOINT_EXT 0x8FBB > ++typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); > ++typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); > ++typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); > ++typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); > ++typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); > ++typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); > ++typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); > ++typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); > ++typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); > ++GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); > ++GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); > ++GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); > ++GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); > ++GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); > ++GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); > ++GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); > ++GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); > ++#endif > ++#endif /* GL_EXT_disjoint_timer_query */ > ++ > ++#ifndef GL_EXT_draw_buffers > ++#define GL_EXT_draw_buffers 1 > ++#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF > ++#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 > ++#define GL_DRAW_BUFFER0_EXT 0x8825 > ++#define GL_DRAW_BUFFER1_EXT 0x8826 > ++#define GL_DRAW_BUFFER2_EXT 0x8827 > ++#define GL_DRAW_BUFFER3_EXT 0x8828 > ++#define GL_DRAW_BUFFER4_EXT 0x8829 > ++#define GL_DRAW_BUFFER5_EXT 0x882A > ++#define GL_DRAW_BUFFER6_EXT 0x882B > ++#define GL_DRAW_BUFFER7_EXT 0x882C > ++#define GL_DRAW_BUFFER8_EXT 0x882D > ++#define GL_DRAW_BUFFER9_EXT 0x882E > ++#define GL_DRAW_BUFFER10_EXT 0x882F > ++#define GL_DRAW_BUFFER11_EXT 0x8830 > ++#define GL_DRAW_BUFFER12_EXT 0x8831 > ++#define GL_DRAW_BUFFER13_EXT 0x8832 > ++#define GL_DRAW_BUFFER14_EXT 0x8833 > ++#define GL_DRAW_BUFFER15_EXT 0x8834 > ++#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 > ++#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 > ++#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 > ++#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 > ++#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 > ++#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 > ++#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 > ++#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 > ++#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 > ++#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 > ++#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA > ++#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB > ++#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC > ++#define GL_COLOR_ATTACHMENT13_EXT 0x8CED > ++#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE > ++#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF > ++typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); > ++#endif > ++#endif /* GL_EXT_draw_buffers */ > ++ > ++#ifndef GL_EXT_draw_instanced > ++#define GL_EXT_draw_instanced 1 > ++typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); > ++GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++#endif > ++#endif /* GL_EXT_draw_instanced */ > ++ > ++#ifndef GL_EXT_instanced_arrays > ++#define GL_EXT_instanced_arrays 1 > ++#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE > ++typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); > ++#endif > ++#endif /* GL_EXT_instanced_arrays */ > ++ > ++#ifndef GL_EXT_map_buffer_range > ++#define GL_EXT_map_buffer_range 1 > ++#define GL_MAP_READ_BIT_EXT 0x0001 > ++#define GL_MAP_WRITE_BIT_EXT 0x0002 > ++#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 > ++#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 > ++#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 > ++#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 > ++typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); > ++typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); > ++GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); > ++#endif > ++#endif /* GL_EXT_map_buffer_range */ > ++ > ++#ifndef GL_EXT_multi_draw_arrays > ++#define GL_EXT_multi_draw_arrays 1 > ++typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); > ++GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); > ++#endif > ++#endif /* GL_EXT_multi_draw_arrays */ > ++ > ++#ifndef GL_EXT_multisampled_render_to_texture > ++#define GL_EXT_multisampled_render_to_texture 1 > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C > ++#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 > ++#define GL_MAX_SAMPLES_EXT 0x8D57 > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#endif > ++#endif /* GL_EXT_multisampled_render_to_texture */ > ++ > ++#ifndef GL_EXT_multiview_draw_buffers > ++#define GL_EXT_multiview_draw_buffers 1 > ++#define GL_COLOR_ATTACHMENT_EXT 0x90F0 > ++#define GL_MULTIVIEW_EXT 0x90F1 > ++#define GL_DRAW_BUFFER_EXT 0x0C01 > ++#define GL_READ_BUFFER_EXT 0x0C02 > ++#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 > ++typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); > ++typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); > ++typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); > ++GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); > ++GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); > ++#endif > ++#endif /* GL_EXT_multiview_draw_buffers */ > ++ > ++#ifndef GL_EXT_occlusion_query_boolean > ++#define GL_EXT_occlusion_query_boolean 1 > ++#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F > ++#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A > ++#endif /* GL_EXT_occlusion_query_boolean */ > ++ > ++#ifndef GL_EXT_pvrtc_sRGB > ++#define GL_EXT_pvrtc_sRGB 1 > ++#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 > ++#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 > ++#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 > ++#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 > ++#endif /* GL_EXT_pvrtc_sRGB */ > ++ > ++#ifndef GL_EXT_read_format_bgra > ++#define GL_EXT_read_format_bgra 1 > ++#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 > ++#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 > ++#endif /* GL_EXT_read_format_bgra */ > ++ > ++#ifndef GL_EXT_robustness > ++#define GL_EXT_robustness 1 > ++#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 > ++#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 > ++#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 > ++#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 > ++#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 > ++#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 > ++#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 > ++typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); > ++typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); > ++typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); > ++typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); > ++GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); > ++GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); > ++GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); > ++#endif > ++#endif /* GL_EXT_robustness */ > ++ > ++#ifndef GL_EXT_sRGB > ++#define GL_EXT_sRGB 1 > ++#define GL_SRGB_EXT 0x8C40 > ++#define GL_SRGB_ALPHA_EXT 0x8C42 > ++#define GL_SRGB8_ALPHA8_EXT 0x8C43 > ++#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 > ++#endif /* GL_EXT_sRGB */ > ++ > ++#ifndef GL_EXT_sRGB_write_control > ++#define GL_EXT_sRGB_write_control 1 > ++#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 > ++#endif /* GL_EXT_sRGB_write_control */ > ++ > ++#ifndef GL_EXT_separate_shader_objects > ++#define GL_EXT_separate_shader_objects 1 > ++#define GL_ACTIVE_PROGRAM_EXT 0x8259 > ++#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 > ++#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 > ++#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF > ++#define GL_PROGRAM_SEPARABLE_EXT 0x8258 > ++#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A > ++typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); > ++typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); > ++typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); > ++typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); > ++typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); > ++typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); > ++typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); > ++typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); > ++typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); > ++GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); > ++GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); > ++GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); > ++GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); > ++GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); > ++GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); > ++GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); > ++GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); > ++GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); > ++GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); > ++GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); > ++GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); > ++GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); > ++GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); > ++GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); > ++GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); > ++GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); > ++GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); > ++GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); > ++GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); > ++GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); > ++GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); > ++GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++#endif > ++#endif /* GL_EXT_separate_shader_objects */ > ++ > ++#ifndef GL_EXT_shader_framebuffer_fetch > ++#define GL_EXT_shader_framebuffer_fetch 1 > ++#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 > ++#endif /* GL_EXT_shader_framebuffer_fetch */ > ++ > ++#ifndef GL_EXT_shader_integer_mix > ++#define GL_EXT_shader_integer_mix 1 > ++#endif /* GL_EXT_shader_integer_mix */ > ++ > ++#ifndef GL_EXT_shader_texture_lod > ++#define GL_EXT_shader_texture_lod 1 > ++#endif /* GL_EXT_shader_texture_lod */ > ++ > ++#ifndef GL_EXT_shadow_samplers > ++#define GL_EXT_shadow_samplers 1 > ++#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C > ++#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D > ++#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E > ++#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 > ++#endif /* GL_EXT_shadow_samplers */ > ++ > ++#ifndef GL_EXT_texture_compression_dxt1 > ++#define GL_EXT_texture_compression_dxt1 1 > ++#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 > ++#endif /* GL_EXT_texture_compression_dxt1 */ > ++ > ++#ifndef GL_EXT_texture_compression_s3tc > ++#define GL_EXT_texture_compression_s3tc 1 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 > ++#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 > ++#endif /* GL_EXT_texture_compression_s3tc */ > ++ > ++#ifndef GL_EXT_texture_filter_anisotropic > ++#define GL_EXT_texture_filter_anisotropic 1 > ++#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE > ++#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF > ++#endif /* GL_EXT_texture_filter_anisotropic */ > ++ > ++#ifndef GL_EXT_texture_format_BGRA8888 > ++#define GL_EXT_texture_format_BGRA8888 1 > ++#endif /* GL_EXT_texture_format_BGRA8888 */ > ++ > ++#ifndef GL_EXT_texture_rg > ++#define GL_EXT_texture_rg 1 > ++#define GL_RED_EXT 0x1903 > ++#define GL_RG_EXT 0x8227 > ++#define GL_R8_EXT 0x8229 > ++#define GL_RG8_EXT 0x822B > ++#endif /* GL_EXT_texture_rg */ > ++ > ++#ifndef GL_EXT_texture_sRGB_decode > ++#define GL_EXT_texture_sRGB_decode 1 > ++#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 > ++#define GL_DECODE_EXT 0x8A49 > ++#define GL_SKIP_DECODE_EXT 0x8A4A > ++#endif /* GL_EXT_texture_sRGB_decode */ > ++ > ++#ifndef GL_EXT_texture_storage > ++#define GL_EXT_texture_storage 1 > ++#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F > ++#define GL_ALPHA8_EXT 0x803C > ++#define GL_LUMINANCE8_EXT 0x8040 > ++#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 > ++#define GL_RGBA32F_EXT 0x8814 > ++#define GL_RGB32F_EXT 0x8815 > ++#define GL_ALPHA32F_EXT 0x8816 > ++#define GL_LUMINANCE32F_EXT 0x8818 > ++#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 > ++#define GL_ALPHA16F_EXT 0x881C > ++#define GL_LUMINANCE16F_EXT 0x881E > ++#define GL_LUMINANCE_ALPHA16F_EXT 0x881F > ++#define GL_R32F_EXT 0x822E > ++#define GL_RG32F_EXT 0x8230 > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); > ++GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); > ++#endif > ++#endif /* GL_EXT_texture_storage */ > ++ > ++#ifndef GL_EXT_texture_type_2_10_10_10_REV > ++#define GL_EXT_texture_type_2_10_10_10_REV 1 > ++#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 > ++#endif /* GL_EXT_texture_type_2_10_10_10_REV */ > ++ > ++#ifndef GL_EXT_unpack_subimage > ++#define GL_EXT_unpack_subimage 1 > ++#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 > ++#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 > ++#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 > ++#endif /* GL_EXT_unpack_subimage */ > ++ > ++#ifndef GL_FJ_shader_binary_GCCSO > ++#define GL_FJ_shader_binary_GCCSO 1 > ++#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 > ++#endif /* GL_FJ_shader_binary_GCCSO */ > ++ > ++#ifndef GL_IMG_multisampled_render_to_texture > ++#define GL_IMG_multisampled_render_to_texture 1 > ++#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 > ++#define GL_MAX_SAMPLES_IMG 0x9135 > ++#define GL_TEXTURE_SAMPLES_IMG 0x9136 > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); > ++#endif > ++#endif /* GL_IMG_multisampled_render_to_texture */ > ++ > ++#ifndef GL_IMG_program_binary > ++#define GL_IMG_program_binary 1 > ++#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 > ++#endif /* GL_IMG_program_binary */ > ++ > ++#ifndef GL_IMG_read_format > ++#define GL_IMG_read_format 1 > ++#define GL_BGRA_IMG 0x80E1 > ++#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 > ++#endif /* GL_IMG_read_format */ > ++ > ++#ifndef GL_IMG_shader_binary > ++#define GL_IMG_shader_binary 1 > ++#define GL_SGX_BINARY_IMG 0x8C0A > ++#endif /* GL_IMG_shader_binary */ > ++ > ++#ifndef GL_IMG_texture_compression_pvrtc > ++#define GL_IMG_texture_compression_pvrtc 1 > ++#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 > ++#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 > ++#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 > ++#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 > ++#endif /* GL_IMG_texture_compression_pvrtc */ > ++ > ++#ifndef GL_IMG_texture_compression_pvrtc2 > ++#define GL_IMG_texture_compression_pvrtc2 1 > ++#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 > ++#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 > ++#endif /* GL_IMG_texture_compression_pvrtc2 */ > ++ > ++#ifndef GL_NV_copy_buffer > ++#define GL_NV_copy_buffer 1 > ++#define GL_COPY_READ_BUFFER_NV 0x8F36 > ++#define GL_COPY_WRITE_BUFFER_NV 0x8F37 > ++typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); > ++#endif > ++#endif /* GL_NV_copy_buffer */ > ++ > ++#ifndef GL_NV_coverage_sample > ++#define GL_NV_coverage_sample 1 > ++#define GL_COVERAGE_COMPONENT_NV 0x8ED0 > ++#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 > ++#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 > ++#define GL_COVERAGE_BUFFERS_NV 0x8ED3 > ++#define GL_COVERAGE_SAMPLES_NV 0x8ED4 > ++#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 > ++#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 > ++#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 > ++#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 > ++typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); > ++typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); > ++GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); > ++#endif > ++#endif /* GL_NV_coverage_sample */ > ++ > ++#ifndef GL_NV_depth_nonlinear > ++#define GL_NV_depth_nonlinear 1 > ++#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C > ++#endif /* GL_NV_depth_nonlinear */ > ++ > ++#ifndef GL_NV_draw_buffers > ++#define GL_NV_draw_buffers 1 > ++#define GL_MAX_DRAW_BUFFERS_NV 0x8824 > ++#define GL_DRAW_BUFFER0_NV 0x8825 > ++#define GL_DRAW_BUFFER1_NV 0x8826 > ++#define GL_DRAW_BUFFER2_NV 0x8827 > ++#define GL_DRAW_BUFFER3_NV 0x8828 > ++#define GL_DRAW_BUFFER4_NV 0x8829 > ++#define GL_DRAW_BUFFER5_NV 0x882A > ++#define GL_DRAW_BUFFER6_NV 0x882B > ++#define GL_DRAW_BUFFER7_NV 0x882C > ++#define GL_DRAW_BUFFER8_NV 0x882D > ++#define GL_DRAW_BUFFER9_NV 0x882E > ++#define GL_DRAW_BUFFER10_NV 0x882F > ++#define GL_DRAW_BUFFER11_NV 0x8830 > ++#define GL_DRAW_BUFFER12_NV 0x8831 > ++#define GL_DRAW_BUFFER13_NV 0x8832 > ++#define GL_DRAW_BUFFER14_NV 0x8833 > ++#define GL_DRAW_BUFFER15_NV 0x8834 > ++#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 > ++#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 > ++#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 > ++#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 > ++#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 > ++#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 > ++#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 > ++#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 > ++#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 > ++#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 > ++#define GL_COLOR_ATTACHMENT10_NV 0x8CEA > ++#define GL_COLOR_ATTACHMENT11_NV 0x8CEB > ++#define GL_COLOR_ATTACHMENT12_NV 0x8CEC > ++#define GL_COLOR_ATTACHMENT13_NV 0x8CED > ++#define GL_COLOR_ATTACHMENT14_NV 0x8CEE > ++#define GL_COLOR_ATTACHMENT15_NV 0x8CEF > ++typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); > ++#endif > ++#endif /* GL_NV_draw_buffers */ > ++ > ++#ifndef GL_NV_draw_instanced > ++#define GL_NV_draw_instanced 1 > ++typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); > ++typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); > ++GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); > ++#endif > ++#endif /* GL_NV_draw_instanced */ > ++ > ++#ifndef GL_NV_explicit_attrib_location > ++#define GL_NV_explicit_attrib_location 1 > ++#endif /* GL_NV_explicit_attrib_location */ > ++ > ++#ifndef GL_NV_fbo_color_attachments > ++#define GL_NV_fbo_color_attachments 1 > ++#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF > ++#endif /* GL_NV_fbo_color_attachments */ > ++ > ++#ifndef GL_NV_fence > ++#define GL_NV_fence 1 > ++#define GL_ALL_COMPLETED_NV 0x84F2 > ++#define GL_FENCE_STATUS_NV 0x84F3 > ++#define GL_FENCE_CONDITION_NV 0x84F4 > ++typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); > ++typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); > ++typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); > ++typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); > ++typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); > ++typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); > ++GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); > ++GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); > ++GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); > ++GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); > ++GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition); > ++#endif > ++#endif /* GL_NV_fence */ > ++ > ++#ifndef GL_NV_framebuffer_blit > ++#define GL_NV_framebuffer_blit 1 > ++#define GL_READ_FRAMEBUFFER_NV 0x8CA8 > ++#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 > ++#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 > ++#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA > ++typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); > ++#endif > ++#endif /* GL_NV_framebuffer_blit */ > ++ > ++#ifndef GL_NV_framebuffer_multisample > ++#define GL_NV_framebuffer_multisample 1 > ++#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB > ++#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 > ++#define GL_MAX_SAMPLES_NV 0x8D57 > ++typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); > ++#endif > ++#endif /* GL_NV_framebuffer_multisample */ > ++ > ++#ifndef GL_NV_generate_mipmap_sRGB > ++#define GL_NV_generate_mipmap_sRGB 1 > ++#endif /* GL_NV_generate_mipmap_sRGB */ > ++ > ++#ifndef GL_NV_instanced_arrays > ++#define GL_NV_instanced_arrays 1 > ++#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE > ++typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); > ++#endif > ++#endif /* GL_NV_instanced_arrays */ > ++ > ++#ifndef GL_NV_non_square_matrices > ++#define GL_NV_non_square_matrices 1 > ++#define GL_FLOAT_MAT2x3_NV 0x8B65 > ++#define GL_FLOAT_MAT2x4_NV 0x8B66 > ++#define GL_FLOAT_MAT3x2_NV 0x8B67 > ++#define GL_FLOAT_MAT3x4_NV 0x8B68 > ++#define GL_FLOAT_MAT4x2_NV 0x8B69 > ++#define GL_FLOAT_MAT4x3_NV 0x8B6A > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++#endif > ++#endif /* GL_NV_non_square_matrices */ > ++ > ++#ifndef GL_NV_read_buffer > ++#define GL_NV_read_buffer 1 > ++#define GL_READ_BUFFER_NV 0x0C02 > ++typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); > ++#endif > ++#endif /* GL_NV_read_buffer */ > ++ > ++#ifndef GL_NV_read_buffer_front > ++#define GL_NV_read_buffer_front 1 > ++#endif /* GL_NV_read_buffer_front */ > ++ > ++#ifndef GL_NV_read_depth > ++#define GL_NV_read_depth 1 > ++#endif /* GL_NV_read_depth */ > ++ > ++#ifndef GL_NV_read_depth_stencil > ++#define GL_NV_read_depth_stencil 1 > ++#endif /* GL_NV_read_depth_stencil */ > ++ > ++#ifndef GL_NV_read_stencil > ++#define GL_NV_read_stencil 1 > ++#endif /* GL_NV_read_stencil */ > ++ > ++#ifndef GL_NV_sRGB_formats > ++#define GL_NV_sRGB_formats 1 > ++#define GL_SLUMINANCE_NV 0x8C46 > ++#define GL_SLUMINANCE_ALPHA_NV 0x8C44 > ++#define GL_SRGB8_NV 0x8C41 > ++#define GL_SLUMINANCE8_NV 0x8C47 > ++#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 > ++#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C > ++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D > ++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E > ++#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F > ++#define GL_ETC1_SRGB8_NV 0x88EE > ++#endif /* GL_NV_sRGB_formats */ > ++ > ++#ifndef GL_NV_shadow_samplers_array > ++#define GL_NV_shadow_samplers_array 1 > ++#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 > ++#endif /* GL_NV_shadow_samplers_array */ > ++ > ++#ifndef GL_NV_shadow_samplers_cube > ++#define GL_NV_shadow_samplers_cube 1 > ++#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 > ++#endif /* GL_NV_shadow_samplers_cube */ > ++ > ++#ifndef GL_NV_texture_border_clamp > ++#define GL_NV_texture_border_clamp 1 > ++#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 > ++#define GL_CLAMP_TO_BORDER_NV 0x812D > ++#endif /* GL_NV_texture_border_clamp */ > ++ > ++#ifndef GL_NV_texture_compression_s3tc_update > ++#define GL_NV_texture_compression_s3tc_update 1 > ++#endif /* GL_NV_texture_compression_s3tc_update */ > ++ > ++#ifndef GL_NV_texture_npot_2D_mipmap > ++#define GL_NV_texture_npot_2D_mipmap 1 > ++#endif /* GL_NV_texture_npot_2D_mipmap */ > ++ > ++#ifndef GL_QCOM_alpha_test > ++#define GL_QCOM_alpha_test 1 > ++#define GL_ALPHA_TEST_QCOM 0x0BC0 > ++#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 > ++#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 > ++typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); > ++#endif > ++#endif /* GL_QCOM_alpha_test */ > ++ > ++#ifndef GL_QCOM_binning_control > ++#define GL_QCOM_binning_control 1 > ++#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 > ++#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 > ++#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 > ++#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 > ++#endif /* GL_QCOM_binning_control */ > ++ > ++#ifndef GL_QCOM_driver_control > ++#define GL_QCOM_driver_control 1 > ++typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); > ++typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); > ++typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); > ++typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); > ++GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); > ++GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); > ++GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); > ++#endif > ++#endif /* GL_QCOM_driver_control */ > ++ > ++#ifndef GL_QCOM_extended_get > ++#define GL_QCOM_extended_get 1 > ++#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 > ++#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 > ++#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 > ++#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 > ++#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 > ++#define GL_TEXTURE_TYPE_QCOM 0x8BD7 > ++#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 > ++#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 > ++#define GL_TEXTURE_TARGET_QCOM 0x8BDA > ++#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB > ++#define GL_STATE_RESTORE 0x8BDC > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); > ++typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); > ++typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); > ++typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); > ++typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); > ++GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); > ++GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); > ++GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); > ++GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); > ++GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); > ++GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); > ++#endif > ++#endif /* GL_QCOM_extended_get */ > ++ > ++#ifndef GL_QCOM_extended_get2 > ++#define GL_QCOM_extended_get2 1 > ++typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); > ++typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); > ++typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); > ++typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); > ++GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); > ++GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); > ++GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); > ++#endif > ++#endif /* GL_QCOM_extended_get2 */ > ++ > ++#ifndef GL_QCOM_perfmon_global_mode > ++#define GL_QCOM_perfmon_global_mode 1 > ++#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 > ++#endif /* GL_QCOM_perfmon_global_mode */ > ++ > ++#ifndef GL_QCOM_tiled_rendering > ++#define GL_QCOM_tiled_rendering 1 > ++#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 > ++#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 > ++#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 > ++#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 > ++#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 > ++#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 > ++#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 > ++#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 > ++#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 > ++#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 > ++#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 > ++#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 > ++#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 > ++#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 > ++#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 > ++#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 > ++#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 > ++#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 > ++#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 > ++#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 > ++#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 > ++#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 > ++#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 > ++#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 > ++#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 > ++#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 > ++typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); > ++typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); > ++#ifdef GL_GLEXT_PROTOTYPES > ++GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); > ++GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); > ++#endif > ++#endif /* GL_QCOM_tiled_rendering */ > ++ > ++#ifndef GL_QCOM_writeonly_rendering > ++#define GL_QCOM_writeonly_rendering 1 > ++#define GL_WRITEONLY_RENDERING_QCOM 0x8823 > ++#endif /* GL_QCOM_writeonly_rendering */ > ++ > ++#ifndef GL_VIV_shader_binary > ++#define GL_VIV_shader_binary 1 > ++#define GL_SHADER_BINARY_VIV 0x8FC4 > ++#endif /* GL_VIV_shader_binary */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif > +diff -rupN a/usr/include/GLES2/gl2.h b/usr/include/GLES2/gl2.h > +--- a/usr/include/GLES2/gl2.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES2/gl2.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,523 @@ > ++#ifndef __gl2_h_ > ++#define __gl2_h_ 1 > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++/* > ++** Copyright (c) 2013 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++/* > ++** This header is generated from the Khronos OpenGL / OpenGL ES XML > ++** API Registry. The current version of the Registry, generator scripts > ++** used to make the header, and the header can be found at > ++** http://www.opengl.org/registry/ > ++** > ++** Khronos $Revision: 23422 $ on $Date: 2013-10-08 15:40:45 -0700 (Tue, 08 Oct 2013) $ > ++*/ > ++ > ++#include > ++ > ++/* Generated C header for: > ++ * API: gles2 > ++ * Profile: common > ++ * Versions considered: 2\.[0-9] > ++ * Versions emitted: .* > ++ * Default extensions included: None > ++ * Additional extensions included: _nomatch_^ > ++ * Extensions removed: _nomatch_^ > ++ */ > ++ > ++#ifndef GL_ES_VERSION_2_0 > ++#define GL_ES_VERSION_2_0 1 > ++#include > ++typedef khronos_int8_t GLbyte; > ++typedef khronos_float_t GLclampf; > ++typedef khronos_int32_t GLfixed; > ++typedef short GLshort; > ++typedef unsigned short GLushort; > ++typedef void GLvoid; > ++typedef struct __GLsync *GLsync; > ++typedef khronos_int64_t GLint64; > ++typedef khronos_uint64_t GLuint64; > ++typedef unsigned int GLenum; > ++typedef unsigned int GLuint; > ++typedef char GLchar; > ++typedef khronos_float_t GLfloat; > ++typedef khronos_ssize_t GLsizeiptr; > ++typedef khronos_intptr_t GLintptr; > ++typedef unsigned int GLbitfield; > ++typedef int GLint; > ++typedef unsigned char GLboolean; > ++typedef int GLsizei; > ++typedef khronos_uint8_t GLubyte; > ++#define GL_DEPTH_BUFFER_BIT 0x00000100 > ++#define GL_STENCIL_BUFFER_BIT 0x00000400 > ++#define GL_COLOR_BUFFER_BIT 0x00004000 > ++#define GL_FALSE 0 > ++#define GL_TRUE 1 > ++#define GL_POINTS 0x0000 > ++#define GL_LINES 0x0001 > ++#define GL_LINE_LOOP 0x0002 > ++#define GL_LINE_STRIP 0x0003 > ++#define GL_TRIANGLES 0x0004 > ++#define GL_TRIANGLE_STRIP 0x0005 > ++#define GL_TRIANGLE_FAN 0x0006 > ++#define GL_ZERO 0 > ++#define GL_ONE 1 > ++#define GL_SRC_COLOR 0x0300 > ++#define GL_ONE_MINUS_SRC_COLOR 0x0301 > ++#define GL_SRC_ALPHA 0x0302 > ++#define GL_ONE_MINUS_SRC_ALPHA 0x0303 > ++#define GL_DST_ALPHA 0x0304 > ++#define GL_ONE_MINUS_DST_ALPHA 0x0305 > ++#define GL_DST_COLOR 0x0306 > ++#define GL_ONE_MINUS_DST_COLOR 0x0307 > ++#define GL_SRC_ALPHA_SATURATE 0x0308 > ++#define GL_FUNC_ADD 0x8006 > ++#define GL_BLEND_EQUATION 0x8009 > ++#define GL_BLEND_EQUATION_RGB 0x8009 > ++#define GL_BLEND_EQUATION_ALPHA 0x883D > ++#define GL_FUNC_SUBTRACT 0x800A > ++#define GL_FUNC_REVERSE_SUBTRACT 0x800B > ++#define GL_BLEND_DST_RGB 0x80C8 > ++#define GL_BLEND_SRC_RGB 0x80C9 > ++#define GL_BLEND_DST_ALPHA 0x80CA > ++#define GL_BLEND_SRC_ALPHA 0x80CB > ++#define GL_CONSTANT_COLOR 0x8001 > ++#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 > ++#define GL_CONSTANT_ALPHA 0x8003 > ++#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 > ++#define GL_BLEND_COLOR 0x8005 > ++#define GL_ARRAY_BUFFER 0x8892 > ++#define GL_ELEMENT_ARRAY_BUFFER 0x8893 > ++#define GL_ARRAY_BUFFER_BINDING 0x8894 > ++#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 > ++#define GL_STREAM_DRAW 0x88E0 > ++#define GL_STATIC_DRAW 0x88E4 > ++#define GL_DYNAMIC_DRAW 0x88E8 > ++#define GL_BUFFER_SIZE 0x8764 > ++#define GL_BUFFER_USAGE 0x8765 > ++#define GL_CURRENT_VERTEX_ATTRIB 0x8626 > ++#define GL_FRONT 0x0404 > ++#define GL_BACK 0x0405 > ++#define GL_FRONT_AND_BACK 0x0408 > ++#define GL_TEXTURE_2D 0x0DE1 > ++#define GL_CULL_FACE 0x0B44 > ++#define GL_BLEND 0x0BE2 > ++#define GL_DITHER 0x0BD0 > ++#define GL_STENCIL_TEST 0x0B90 > ++#define GL_DEPTH_TEST 0x0B71 > ++#define GL_SCISSOR_TEST 0x0C11 > ++#define GL_POLYGON_OFFSET_FILL 0x8037 > ++#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E > ++#define GL_SAMPLE_COVERAGE 0x80A0 > ++#define GL_NO_ERROR 0 > ++#define GL_INVALID_ENUM 0x0500 > ++#define GL_INVALID_VALUE 0x0501 > ++#define GL_INVALID_OPERATION 0x0502 > ++#define GL_OUT_OF_MEMORY 0x0505 > ++#define GL_CW 0x0900 > ++#define GL_CCW 0x0901 > ++#define GL_LINE_WIDTH 0x0B21 > ++#define GL_ALIASED_POINT_SIZE_RANGE 0x846D > ++#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E > ++#define GL_CULL_FACE_MODE 0x0B45 > ++#define GL_FRONT_FACE 0x0B46 > ++#define GL_DEPTH_RANGE 0x0B70 > ++#define GL_DEPTH_WRITEMASK 0x0B72 > ++#define GL_DEPTH_CLEAR_VALUE 0x0B73 > ++#define GL_DEPTH_FUNC 0x0B74 > ++#define GL_STENCIL_CLEAR_VALUE 0x0B91 > ++#define GL_STENCIL_FUNC 0x0B92 > ++#define GL_STENCIL_FAIL 0x0B94 > ++#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 > ++#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 > ++#define GL_STENCIL_REF 0x0B97 > ++#define GL_STENCIL_VALUE_MASK 0x0B93 > ++#define GL_STENCIL_WRITEMASK 0x0B98 > ++#define GL_STENCIL_BACK_FUNC 0x8800 > ++#define GL_STENCIL_BACK_FAIL 0x8801 > ++#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 > ++#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 > ++#define GL_STENCIL_BACK_REF 0x8CA3 > ++#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 > ++#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 > ++#define GL_VIEWPORT 0x0BA2 > ++#define GL_SCISSOR_BOX 0x0C10 > ++#define GL_COLOR_CLEAR_VALUE 0x0C22 > ++#define GL_COLOR_WRITEMASK 0x0C23 > ++#define GL_UNPACK_ALIGNMENT 0x0CF5 > ++#define GL_PACK_ALIGNMENT 0x0D05 > ++#define GL_MAX_TEXTURE_SIZE 0x0D33 > ++#define GL_MAX_VIEWPORT_DIMS 0x0D3A > ++#define GL_SUBPIXEL_BITS 0x0D50 > ++#define GL_RED_BITS 0x0D52 > ++#define GL_GREEN_BITS 0x0D53 > ++#define GL_BLUE_BITS 0x0D54 > ++#define GL_ALPHA_BITS 0x0D55 > ++#define GL_DEPTH_BITS 0x0D56 > ++#define GL_STENCIL_BITS 0x0D57 > ++#define GL_POLYGON_OFFSET_UNITS 0x2A00 > ++#define GL_POLYGON_OFFSET_FACTOR 0x8038 > ++#define GL_TEXTURE_BINDING_2D 0x8069 > ++#define GL_SAMPLE_BUFFERS 0x80A8 > ++#define GL_SAMPLES 0x80A9 > ++#define GL_SAMPLE_COVERAGE_VALUE 0x80AA > ++#define GL_SAMPLE_COVERAGE_INVERT 0x80AB > ++#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 > ++#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 > ++#define GL_DONT_CARE 0x1100 > ++#define GL_FASTEST 0x1101 > ++#define GL_NICEST 0x1102 > ++#define GL_GENERATE_MIPMAP_HINT 0x8192 > ++#define GL_BYTE 0x1400 > ++#define GL_UNSIGNED_BYTE 0x1401 > ++#define GL_SHORT 0x1402 > ++#define GL_UNSIGNED_SHORT 0x1403 > ++#define GL_INT 0x1404 > ++#define GL_UNSIGNED_INT 0x1405 > ++#define GL_FLOAT 0x1406 > ++#define GL_FIXED 0x140C > ++#define GL_DEPTH_COMPONENT 0x1902 > ++#define GL_ALPHA 0x1906 > ++#define GL_RGB 0x1907 > ++#define GL_RGBA 0x1908 > ++#define GL_LUMINANCE 0x1909 > ++#define GL_LUMINANCE_ALPHA 0x190A > ++#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 > ++#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 > ++#define GL_UNSIGNED_SHORT_5_6_5 0x8363 > ++#define GL_FRAGMENT_SHADER 0x8B30 > ++#define GL_VERTEX_SHADER 0x8B31 > ++#define GL_MAX_VERTEX_ATTRIBS 0x8869 > ++#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB > ++#define GL_MAX_VARYING_VECTORS 0x8DFC > ++#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D > ++#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C > ++#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 > ++#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD > ++#define GL_SHADER_TYPE 0x8B4F > ++#define GL_DELETE_STATUS 0x8B80 > ++#define GL_LINK_STATUS 0x8B82 > ++#define GL_VALIDATE_STATUS 0x8B83 > ++#define GL_ATTACHED_SHADERS 0x8B85 > ++#define GL_ACTIVE_UNIFORMS 0x8B86 > ++#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 > ++#define GL_ACTIVE_ATTRIBUTES 0x8B89 > ++#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A > ++#define GL_SHADING_LANGUAGE_VERSION 0x8B8C > ++#define GL_CURRENT_PROGRAM 0x8B8D > ++#define GL_NEVER 0x0200 > ++#define GL_LESS 0x0201 > ++#define GL_EQUAL 0x0202 > ++#define GL_LEQUAL 0x0203 > ++#define GL_GREATER 0x0204 > ++#define GL_NOTEQUAL 0x0205 > ++#define GL_GEQUAL 0x0206 > ++#define GL_ALWAYS 0x0207 > ++#define GL_KEEP 0x1E00 > ++#define GL_REPLACE 0x1E01 > ++#define GL_INCR 0x1E02 > ++#define GL_DECR 0x1E03 > ++#define GL_INVERT 0x150A > ++#define GL_INCR_WRAP 0x8507 > ++#define GL_DECR_WRAP 0x8508 > ++#define GL_VENDOR 0x1F00 > ++#define GL_RENDERER 0x1F01 > ++#define GL_VERSION 0x1F02 > ++#define GL_EXTENSIONS 0x1F03 > ++#define GL_NEAREST 0x2600 > ++#define GL_LINEAR 0x2601 > ++#define GL_NEAREST_MIPMAP_NEAREST 0x2700 > ++#define GL_LINEAR_MIPMAP_NEAREST 0x2701 > ++#define GL_NEAREST_MIPMAP_LINEAR 0x2702 > ++#define GL_LINEAR_MIPMAP_LINEAR 0x2703 > ++#define GL_TEXTURE_MAG_FILTER 0x2800 > ++#define GL_TEXTURE_MIN_FILTER 0x2801 > ++#define GL_TEXTURE_WRAP_S 0x2802 > ++#define GL_TEXTURE_WRAP_T 0x2803 > ++#define GL_TEXTURE 0x1702 > ++#define GL_TEXTURE_CUBE_MAP 0x8513 > ++#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 > ++#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 > ++#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A > ++#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C > ++#define GL_TEXTURE0 0x84C0 > ++#define GL_TEXTURE1 0x84C1 > ++#define GL_TEXTURE2 0x84C2 > ++#define GL_TEXTURE3 0x84C3 > ++#define GL_TEXTURE4 0x84C4 > ++#define GL_TEXTURE5 0x84C5 > ++#define GL_TEXTURE6 0x84C6 > ++#define GL_TEXTURE7 0x84C7 > ++#define GL_TEXTURE8 0x84C8 > ++#define GL_TEXTURE9 0x84C9 > ++#define GL_TEXTURE10 0x84CA > ++#define GL_TEXTURE11 0x84CB > ++#define GL_TEXTURE12 0x84CC > ++#define GL_TEXTURE13 0x84CD > ++#define GL_TEXTURE14 0x84CE > ++#define GL_TEXTURE15 0x84CF > ++#define GL_TEXTURE16 0x84D0 > ++#define GL_TEXTURE17 0x84D1 > ++#define GL_TEXTURE18 0x84D2 > ++#define GL_TEXTURE19 0x84D3 > ++#define GL_TEXTURE20 0x84D4 > ++#define GL_TEXTURE21 0x84D5 > ++#define GL_TEXTURE22 0x84D6 > ++#define GL_TEXTURE23 0x84D7 > ++#define GL_TEXTURE24 0x84D8 > ++#define GL_TEXTURE25 0x84D9 > ++#define GL_TEXTURE26 0x84DA > ++#define GL_TEXTURE27 0x84DB > ++#define GL_TEXTURE28 0x84DC > ++#define GL_TEXTURE29 0x84DD > ++#define GL_TEXTURE30 0x84DE > ++#define GL_TEXTURE31 0x84DF > ++#define GL_ACTIVE_TEXTURE 0x84E0 > ++#define GL_REPEAT 0x2901 > ++#define GL_CLAMP_TO_EDGE 0x812F > ++#define GL_MIRRORED_REPEAT 0x8370 > ++#define GL_FLOAT_VEC2 0x8B50 > ++#define GL_FLOAT_VEC3 0x8B51 > ++#define GL_FLOAT_VEC4 0x8B52 > ++#define GL_INT_VEC2 0x8B53 > ++#define GL_INT_VEC3 0x8B54 > ++#define GL_INT_VEC4 0x8B55 > ++#define GL_BOOL 0x8B56 > ++#define GL_BOOL_VEC2 0x8B57 > ++#define GL_BOOL_VEC3 0x8B58 > ++#define GL_BOOL_VEC4 0x8B59 > ++#define GL_FLOAT_MAT2 0x8B5A > ++#define GL_FLOAT_MAT3 0x8B5B > ++#define GL_FLOAT_MAT4 0x8B5C > ++#define GL_SAMPLER_2D 0x8B5E > ++#define GL_SAMPLER_CUBE 0x8B60 > ++#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 > ++#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 > ++#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 > ++#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 > ++#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A > ++#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 > ++#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F > ++#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A > ++#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B > ++#define GL_COMPILE_STATUS 0x8B81 > ++#define GL_INFO_LOG_LENGTH 0x8B84 > ++#define GL_SHADER_SOURCE_LENGTH 0x8B88 > ++#define GL_SHADER_COMPILER 0x8DFA > ++#define GL_SHADER_BINARY_FORMATS 0x8DF8 > ++#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 > ++#define GL_LOW_FLOAT 0x8DF0 > ++#define GL_MEDIUM_FLOAT 0x8DF1 > ++#define GL_HIGH_FLOAT 0x8DF2 > ++#define GL_LOW_INT 0x8DF3 > ++#define GL_MEDIUM_INT 0x8DF4 > ++#define GL_HIGH_INT 0x8DF5 > ++#define GL_FRAMEBUFFER 0x8D40 > ++#define GL_RENDERBUFFER 0x8D41 > ++#define GL_RGBA4 0x8056 > ++#define GL_RGB5_A1 0x8057 > ++#define GL_RGB565 0x8D62 > ++#define GL_DEPTH_COMPONENT16 0x81A5 > ++#define GL_STENCIL_INDEX8 0x8D48 > ++#define GL_RENDERBUFFER_WIDTH 0x8D42 > ++#define GL_RENDERBUFFER_HEIGHT 0x8D43 > ++#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 > ++#define GL_RENDERBUFFER_RED_SIZE 0x8D50 > ++#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 > ++#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 > ++#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 > ++#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 > ++#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 > ++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 > ++#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 > ++#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 > ++#define GL_COLOR_ATTACHMENT0 0x8CE0 > ++#define GL_DEPTH_ATTACHMENT 0x8D00 > ++#define GL_STENCIL_ATTACHMENT 0x8D20 > ++#define GL_NONE 0 > ++#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 > ++#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 > ++#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 > ++#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 > ++#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD > ++#define GL_FRAMEBUFFER_BINDING 0x8CA6 > ++#define GL_RENDERBUFFER_BINDING 0x8CA7 > ++#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 > ++#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 > ++GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); > ++GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); > ++GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); > ++GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); > ++GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); > ++GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); > ++GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); > ++GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); > ++GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); > ++GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); > ++GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); > ++GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); > ++GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); > ++GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); > ++GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); > ++GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); > ++GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); > ++GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); > ++GL_APICALL void GL_APIENTRY glClearStencil (GLint s); > ++GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); > ++GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); > ++GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); > ++GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); > ++GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); > ++GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); > ++GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); > ++GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); > ++GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); > ++GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); > ++GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); > ++GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); > ++GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); > ++GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); > ++GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); > ++GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); > ++GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); > ++GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); > ++GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); > ++GL_APICALL void GL_APIENTRY glDisable (GLenum cap); > ++GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); > ++GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); > ++GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); > ++GL_APICALL void GL_APIENTRY glEnable (GLenum cap); > ++GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); > ++GL_APICALL void GL_APIENTRY glFinish (void); > ++GL_APICALL void GL_APIENTRY glFlush (void); > ++GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); > ++GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); > ++GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); > ++GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); > ++GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); > ++GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); > ++GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); > ++GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); > ++GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); > ++GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); > ++GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); > ++GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); > ++GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); > ++GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); > ++GL_APICALL GLenum GL_APIENTRY glGetError (void); > ++GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); > ++GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); > ++GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); > ++GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); > ++GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); > ++GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); > ++GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); > ++GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); > ++GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); > ++GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); > ++GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); > ++GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); > ++GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); > ++GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); > ++GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); > ++GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); > ++GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); > ++GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); > ++GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); > ++GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); > ++GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); > ++GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); > ++GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); > ++GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); > ++GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); > ++GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); > ++GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); > ++GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); > ++GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); > ++GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length); > ++GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); > ++GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); > ++GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); > ++GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); > ++GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); > ++GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); > ++GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); > ++GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); > ++GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); > ++GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); > ++GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); > ++GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); > ++GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); > ++GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); > ++GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); > ++GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); > ++GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); > ++GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); > ++GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); > ++GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); > ++GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); > ++GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); > ++GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); > ++GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); > ++GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); > ++GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); > ++GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); > ++GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); > ++GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); > ++GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); > ++GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); > ++GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); > ++GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); > ++GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); > ++#endif /* GL_ES_VERSION_2_0 */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif > +diff -rupN a/usr/include/GLES2/gl2platform.h b/usr/include/GLES2/gl2platform.h > +--- a/usr/include/GLES2/gl2platform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/GLES2/gl2platform.h 2013-10-12 03:05:04.000000000 +0200 > +@@ -0,0 +1,30 @@ > ++#ifndef __gl2platform_h_ > ++#define __gl2platform_h_ > ++ > ++/* $Revision: 23328 $ on $Date:: 2013-10-02 02:28:28 -0700 #$ */ > ++ > ++/* > ++ * This document is licensed under the SGI Free Software B License Version > ++ * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . > ++ */ > ++ > ++/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h > ++ * > ++ * Adopters may modify khrplatform.h and this file to suit their platform. > ++ * You are encouraged to submit all modifications to the Khronos group so that > ++ * they can be included in future versions of this file. Please submit changes > ++ * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) > ++ * by filing a bug against product "OpenGL-ES" component "Registry". > ++ */ > ++ > ++#include > ++ > ++#ifndef GL_APICALL > ++#define GL_APICALL KHRONOS_APICALL > ++#endif > ++ > ++#ifndef GL_APIENTRY > ++#define GL_APIENTRY KHRONOS_APIENTRY > ++#endif > ++ > ++#endif /* __gl2platform_h_ */ > +diff -rupN a/usr/include/KD/kd.h b/usr/include/KD/kd.h > +--- a/usr/include/KD/kd.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/kd.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,991 @@ > ++/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ > ++#ifndef __kd_h_ > ++#define __kd_h_ > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++#include "kdplatform.h" > ++ > ++ > ++ > ++/******************************************************* > ++ * Introduction > ++ *******************************************************/ > ++ > ++/******************************************************* > ++ * OpenKODE conformance > ++ *******************************************************/ > ++ > ++/******************************************************* > ++ * Overview > ++ *******************************************************/ > ++ > ++/******************************************************* > ++ * Programming environment > ++ *******************************************************/ > ++#define KD_VERSION_1_0 1 > ++typedef char KDchar; > ++typedef signed char KDint8; > ++typedef unsigned char KDuint8; > ++typedef int KDint; > ++typedef unsigned int KDuint; > ++typedef float KDfloat32; > ++typedef KDint KDboolean; > ++typedef KDint64 KDtime; > ++typedef KDint64 KDust; > ++typedef KDint64 KDoff; > ++typedef KDuint32 KDmode; > ++#define KDINT32_MIN (-0x7fffffff-1) > ++#define KDINT32_MAX 0x7fffffff > ++#define KDUINT32_MAX 0xffffffffU > ++#define KD_TRUE 1 > ++#define KD_FALSE 0 > ++#ifdef __cplusplus > ++ const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ > ++#else > ++ #define KD_NULL ((void *)0) > ++#endif > ++ > ++/******************************************************* > ++ * Errors > ++ *******************************************************/ > ++#define KD_EACCES 1 > ++#define KD_EADDRINUSE 2 > ++#define KD_EADDRNOTAVAIL 3 > ++#define KD_EAFNOSUPPORT 4 > ++#define KD_EAGAIN (5) > ++#define KD_EALREADY 6 > ++#define KD_EBADF 7 > ++#define KD_EBUSY 8 > ++#define KD_ECONNREFUSED 9 > ++#define KD_ECONNRESET 10 > ++#define KD_EDEADLK 11 > ++#define KD_EDESTADDRREQ 12 > ++#define KD_EEXIST 13 > ++#define KD_EFBIG 14 > ++#define KD_EHOSTUNREACH 15 > ++#define KD_EHOST_NOT_FOUND 16 > ++#define KD_EINVAL 17 > ++#define KD_EIO 18 > ++#define KD_EILSEQ 19 > ++#define KD_EISCONN 20 > ++#define KD_EISDIR 21 > ++#define KD_EMFILE 22 > ++#define KD_ENAMETOOLONG 23 > ++#define KD_ENOENT 24 > ++#define KD_ENOMEM 25 > ++#define KD_ENOSPC 26 > ++#define KD_ENOSYS 27 > ++#define KD_ENOTCONN 28 > ++#define KD_ENO_DATA 29 > ++#define KD_ENO_RECOVERY 30 > ++#define KD_EOPNOTSUPP 31 > ++#define KD_EOVERFLOW 32 > ++#define KD_EPERM 33 > ++#define KD_ERANGE 35 > ++#define KD_ETIMEDOUT (36) > ++#define KD_ETRY_AGAIN 37 > ++ > ++/* kdGetError: Get last error indication. */ > ++KD_API KDint KD_APIENTRY kdGetError(void); > ++ > ++/* kdSetError: Set last error indication. */ > ++KD_API void KD_APIENTRY kdSetError(KDint error); > ++ > ++/******************************************************* > ++ * Versioning and attribute queries > ++ *******************************************************/ > ++ > ++/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ > ++KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); > ++ > ++/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ > ++KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); > ++#define KD_ATTRIB_VENDOR 39 > ++#define KD_ATTRIB_VERSION 40 > ++#define KD_ATTRIB_PLATFORM 41 > ++ > ++/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ > ++KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); > ++ > ++/******************************************************* > ++ * Threads and synchronization > ++ *******************************************************/ > ++ > ++/* kdThreadAttrCreate: Create a thread attribute object. */ > ++typedef struct KDThreadAttr KDThreadAttr; > ++KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); > ++ > ++/* kdThreadAttrFree: Free a thread attribute object. */ > ++KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); > ++ > ++/* kdThreadAttrSetDetachState: Set detachstate attribute. */ > ++#define KD_THREAD_CREATE_JOINABLE 0 > ++#define KD_THREAD_CREATE_DETACHED 1 > ++KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); > ++ > ++/* kdThreadAttrSetStackSize: Set stacksize attribute. */ > ++KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); > ++ > ++/* kdThreadCreate: Create a new thread. */ > ++typedef struct KDThread KDThread; > ++KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); > ++ > ++/* kdThreadExit: Terminate this thread. */ > ++KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); > ++ > ++/* kdThreadJoin: Wait for termination of another thread. */ > ++KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); > ++ > ++/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ > ++KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); > ++ > ++/* kdThreadSelf: Return calling thread’s ID. */ > ++KD_API KDThread *KD_APIENTRY kdThreadSelf(void); > ++ > ++/* kdThreadOnce: Wrap initialization code so it is executed only once. */ > ++#ifndef KD_NO_STATIC_DATA > ++typedef struct KDThreadOnce { > ++ void *impl; > ++} KDThreadOnce; > ++#define KD_THREAD_ONCE_INIT { 0 } > ++KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); > ++#endif /* ndef KD_NO_STATIC_DATA */ > ++ > ++/* kdThreadMutexCreate: Create a mutex. */ > ++typedef struct KDThreadMutex KDThreadMutex; > ++KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); > ++ > ++/* kdThreadMutexFree: Free a mutex. */ > ++KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); > ++ > ++/* kdThreadMutexLock: Lock a mutex. */ > ++KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); > ++ > ++/* kdThreadMutexUnlock: Unlock a mutex. */ > ++KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); > ++ > ++/* kdThreadCondCreate: Create a condition variable. */ > ++typedef struct KDThreadCond KDThreadCond; > ++KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); > ++ > ++/* kdThreadCondFree: Free a condition variable. */ > ++KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); > ++ > ++/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ > ++KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); > ++KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); > ++ > ++/* kdThreadCondWait: Wait for a condition variable to be signalled. */ > ++KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); > ++ > ++/* kdThreadSemCreate: Create a semaphore. */ > ++typedef struct KDThreadSem KDThreadSem; > ++KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); > ++ > ++/* kdThreadSemFree: Free a semaphore. */ > ++KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); > ++ > ++/* kdThreadSemWait: Lock a semaphore. */ > ++KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); > ++ > ++/* kdThreadSemPost: Unlock a semaphore. */ > ++KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); > ++ > ++/******************************************************* > ++ * Events > ++ *******************************************************/ > ++ > ++/* KDEvent: Struct type containing an event. */ > ++typedef struct KDEvent KDEvent; > ++#define KD_EVENT_USER 0x40000000 > ++ > ++/* kdWaitEvent: Get next event from thread’s event queue. */ > ++KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); > ++ > ++/* kdSetEventUserptr: Set the userptr for global events. */ > ++KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); > ++ > ++/* kdDefaultEvent: Perform default processing on an unrecognized event. */ > ++KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); > ++ > ++/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ > ++KD_API KDint KD_APIENTRY kdPumpEvents(void); > ++ > ++/* kdInstallCallback: Install or remove a callback function for event processing. */ > ++typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); > ++KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); > ++ > ++/* kdCreateEvent: Create an event for posting. */ > ++KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); > ++ > ++/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ > ++KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); > ++KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); > ++typedef struct KDEventUser { > ++ union { > ++ KDint64 i64; > ++ void *p; > ++ struct { > ++ KDint32 a; > ++ KDint32 b; > ++ } i32pair; > ++ } value1; > ++ union { > ++ KDint64 i64; > ++ struct { > ++ union { > ++ KDint32 i32; > ++ void *p; > ++ } value2; > ++ union { > ++ KDint32 i32; > ++ void *p; > ++ } value3; > ++ } i32orp; > ++ } value23; > ++} KDEventUser; > ++ > ++/* kdFreeEvent: Abandon an event instead of posting it. */ > ++KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); > ++ > ++/******************************************************* > ++ * System events > ++ *******************************************************/ > ++ > ++/* KD_EVENT_QUIT: Event to request to quit application. */ > ++#define KD_EVENT_QUIT 43 > ++ > ++/* KD_EVENT_PAUSE: Application pause event. */ > ++#define KD_EVENT_PAUSE 45 > ++ > ++/* KD_EVENT_RESUME: Application resume event. */ > ++#define KD_EVENT_RESUME 46 > ++ > ++/* KD_EVENT_ORIENTATION: Orientation change event. */ > ++#define KD_EVENT_ORIENTATION 48 > ++ > ++/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ > ++#define KD_IOGROUP_EVENT 0x100 > ++#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) > ++#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) > ++ > ++ > ++/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ > ++#define KD_IOGROUP_ORIENTATION 0x200 > ++#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) > ++#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) > ++#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) > ++#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) > ++ > ++ > ++/******************************************************* > ++ * Application startup and exit. > ++ *******************************************************/ > ++ > ++/* kdMain: The application-defined main function. */ > ++KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); > ++ > ++/* kdExit: Exit the application. */ > ++KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); > ++ > ++/******************************************************* > ++ * Utility library functions > ++ *******************************************************/ > ++ > ++/* kdAbs: Compute the absolute value of an integer. */ > ++KD_API KDint KD_APIENTRY kdAbs(KDint i); > ++ > ++/* kdStrtof: Convert a string to a floating point number. */ > ++KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); > ++ > ++/* kdStrtol, kdStrtoul: Convert a string to an integer. */ > ++KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); > ++KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); > ++ > ++/* kdLtostr, kdUltostr: Convert an integer to a string. */ > ++#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) > ++#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) > ++KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); > ++KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); > ++ > ++/* kdFtostr: Convert a float to a string. */ > ++#define KD_FTOSTR_MAXLEN 16 > ++KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); > ++ > ++/* kdCryptoRandom: Return random data. */ > ++KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); > ++ > ++/******************************************************* > ++ * Locale specific functions > ++ *******************************************************/ > ++ > ++/* kdGetLocale: Determine the current language and locale. */ > ++KD_API const KDchar *KD_APIENTRY kdGetLocale(void); > ++ > ++/******************************************************* > ++ * Memory allocation > ++ *******************************************************/ > ++ > ++/* kdMalloc: Allocate memory. */ > ++KD_API void *KD_APIENTRY kdMalloc(KDsize size); > ++ > ++/* kdFree: Free allocated memory block. */ > ++KD_API void KD_APIENTRY kdFree(void *ptr); > ++ > ++/* kdRealloc: Resize memory block. */ > ++KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); > ++ > ++/******************************************************* > ++ * Thread-local storage. > ++ *******************************************************/ > ++ > ++/* kdGetTLS: Get the thread-local storage pointer. */ > ++KD_API void *KD_APIENTRY kdGetTLS(void); > ++ > ++/* kdSetTLS: Set the thread-local storage pointer. */ > ++KD_API void KD_APIENTRY kdSetTLS(void *ptr); > ++ > ++/******************************************************* > ++ * Mathematical functions > ++ *******************************************************/ > ++#define KD_E_F 2.71828175F > ++#define KD_PI_F 3.14159274F > ++#define KD_PI_2_F 1.57079637F > ++#define KD_2PI_F 6.28318548F > ++#define KD_LOG2E_F 1.44269502F > ++#define KD_LOG10E_F 0.434294492F > ++#define KD_LN2_F 0.693147182F > ++#define KD_LN10_F 2.30258512F > ++#define KD_PI_4_F 0.785398185F > ++#define KD_1_PI_F 0.318309873F > ++#define KD_2_PI_F 0.636619747F > ++#define KD_2_SQRTPI_F 1.12837923F > ++#define KD_SQRT2_F 1.41421354F > ++#define KD_SQRT1_2_F 0.707106769F > ++#define KD_FLT_EPSILON 1.19209290E-07F > ++#define KD_FLT_MAX 3.40282346638528860e+38F > ++#define KD_FLT_MIN 1.17549435e-38F > ++/* KD_INFINITY is defined in kdplatform.h since no portable definition > ++ * is possible. */ > ++#define kdIsNan(x) (((x) != (x)) ? 1 : 0) > ++#define KD_HUGE_VALF KD_INFINITY > ++#define KD_DEG_TO_RAD_F 0.0174532924F > ++#define KD_RAD_TO_DEG_F 57.2957802F > ++ > ++/* kdAcosf: Arc cosine function. */ > ++KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); > ++ > ++/* kdAsinf: Arc sine function. */ > ++KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); > ++ > ++/* kdAtanf: Arc tangent function. */ > ++KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); > ++ > ++/* kdAtan2f: Arc tangent function. */ > ++KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); > ++ > ++/* kdCosf: Cosine function. */ > ++KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); > ++ > ++/* kdSinf: Sine function. */ > ++KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); > ++ > ++/* kdTanf: Tangent function. */ > ++KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); > ++ > ++/* kdExpf: Exponential function. */ > ++KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); > ++ > ++/* kdLogf: Natural logarithm function. */ > ++KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); > ++ > ++/* kdFabsf: Absolute value. */ > ++KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); > ++ > ++/* kdPowf: Power function. */ > ++KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); > ++ > ++/* kdSqrtf: Square root function. */ > ++KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); > ++ > ++/* kdCeilf: Return ceiling value. */ > ++KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); > ++ > ++/* kdFloorf: Return floor value. */ > ++KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); > ++ > ++/* kdRoundf: Round value to nearest integer. */ > ++KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); > ++ > ++/* kdInvsqrtf: Inverse square root function. */ > ++KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); > ++ > ++/* kdFmodf: Calculate floating point remainder. */ > ++KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); > ++ > ++/******************************************************* > ++ * String and memory functions > ++ *******************************************************/ > ++ > ++/* kdMemchr: Scan memory for a byte value. */ > ++KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); > ++ > ++/* kdMemcmp: Compare two memory regions. */ > ++KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); > ++ > ++/* kdMemcpy: Copy a memory region, no overlapping. */ > ++KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); > ++ > ++/* kdMemmove: Copy a memory region, overlapping allowed. */ > ++KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); > ++ > ++/* kdMemset: Set bytes in memory to a value. */ > ++KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); > ++ > ++/* kdStrchr: Scan string for a byte value. */ > ++KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); > ++ > ++/* kdStrcmp: Compares two strings. */ > ++KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); > ++ > ++/* kdStrlen: Determine the length of a string. */ > ++KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); > ++ > ++/* kdStrnlen: Determine the length of a string. */ > ++KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); > ++ > ++/* kdStrncat_s: Concatenate two strings. */ > ++KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); > ++ > ++/* kdStrncmp: Compares two strings with length limit. */ > ++KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); > ++ > ++/* kdStrcpy_s: Copy a string with an overrun check. */ > ++KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); > ++ > ++/* kdStrncpy_s: Copy a string with an overrun check. */ > ++KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); > ++ > ++/******************************************************* > ++ * Time functions > ++ *******************************************************/ > ++ > ++/* kdGetTimeUST: Get the current unadjusted system time. */ > ++KD_API KDust KD_APIENTRY kdGetTimeUST(void); > ++ > ++/* kdTime: Get the current wall clock time. */ > ++KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); > ++ > ++/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ > ++typedef struct KDTm { > ++ KDint32 tm_sec; > ++ KDint32 tm_min; > ++ KDint32 tm_hour; > ++ KDint32 tm_mday; > ++ KDint32 tm_mon; > ++ KDint32 tm_year; > ++ KDint32 tm_wday; > ++ KDint32 tm_yday; > ++} KDTm; > ++KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); > ++KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); > ++ > ++/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ > ++KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); > ++ > ++/******************************************************* > ++ * Timer functions > ++ *******************************************************/ > ++ > ++/* kdSetTimer: Set timer. */ > ++#define KD_TIMER_ONESHOT 61 > ++#define KD_TIMER_PERIODIC_AVERAGE 62 > ++#define KD_TIMER_PERIODIC_MINIMUM 63 > ++typedef struct KDTimer KDTimer; > ++KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); > ++ > ++/* kdCancelTimer: Cancel and free a timer. */ > ++KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); > ++ > ++/* KD_EVENT_TIMER: Timer fire event. */ > ++#define KD_EVENT_TIMER 42 > ++ > ++/******************************************************* > ++ * File system > ++ *******************************************************/ > ++#define KD_EOF (-1) > ++ > ++/* kdFopen: Open a file from the file system. */ > ++typedef struct KDFile KDFile; > ++KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); > ++ > ++/* kdFclose: Close an open file. */ > ++KD_API KDint KD_APIENTRY kdFclose(KDFile *file); > ++ > ++/* kdFflush: Flush an open file. */ > ++KD_API KDint KD_APIENTRY kdFflush(KDFile *file); > ++ > ++/* kdFread: Read from a file. */ > ++KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); > ++ > ++/* kdFwrite: Write to a file. */ > ++KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); > ++ > ++/* kdGetc: Read next byte from an open file. */ > ++KD_API KDint KD_APIENTRY kdGetc(KDFile *file); > ++ > ++/* kdPutc: Write a byte to an open file. */ > ++KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); > ++ > ++/* kdFgets: Read a line of text from an open file. */ > ++KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); > ++ > ++/* kdFEOF: Check for end of file. */ > ++KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); > ++ > ++/* kdFerror: Check for an error condition on an open file. */ > ++KD_API KDint KD_APIENTRY kdFerror(KDFile *file); > ++ > ++/* kdClearerr: Clear a file’s error and end-of-file indicators. */ > ++KD_API void KD_APIENTRY kdClearerr(KDFile *file); > ++ > ++/* kdFseek: Reposition the file position indicator in a file. */ > ++typedef enum { > ++ KD_SEEK_SET = 0, > ++ KD_SEEK_CUR = 1, > ++ KD_SEEK_END = 2 > ++} KDfileSeekOrigin; > ++KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); > ++ > ++/* kdFtell: Get the file position of an open file. */ > ++KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); > ++ > ++/* kdMkdir: Create new directory. */ > ++KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); > ++ > ++/* kdRmdir: Delete a directory. */ > ++KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); > ++ > ++/* kdRename: Rename a file. */ > ++KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); > ++ > ++/* kdRemove: Delete a file. */ > ++KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); > ++ > ++/* kdTruncate: Truncate or extend a file. */ > ++KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); > ++ > ++/* kdStat, kdFstat: Return information about a file. */ > ++typedef struct KDStat { > ++ KDmode st_mode; > ++ KDoff st_size; > ++ KDtime st_mtime; > ++} KDStat; > ++KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); > ++KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); > ++#define KD_ISREG(m) ((m) & 0x8000) > ++#define KD_ISDIR(m) ((m) & 0x4000) > ++ > ++/* kdAccess: Determine whether the application can access a file or directory. */ > ++KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); > ++#define KD_R_OK 4 > ++#define KD_W_OK 2 > ++#define KD_X_OK 1 > ++ > ++/* kdOpenDir: Open a directory ready for listing. */ > ++typedef struct KDDir KDDir; > ++KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); > ++ > ++/* kdReadDir: Return the next file in a directory. */ > ++typedef struct KDDirent { > ++ const KDchar *d_name; > ++} KDDirent; > ++KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); > ++ > ++/* kdCloseDir: Close a directory. */ > ++KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); > ++ > ++/* kdGetFree: Get free space on a drive. */ > ++KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); > ++ > ++/******************************************************* > ++ * Network sockets > ++ *******************************************************/ > ++ > ++/* KDSockaddr: Struct type for socket address. */ > ++typedef struct KDSockaddr { > ++ KDuint16 family; > ++ union { > ++#define KD_AF_INET 70 > ++ struct { > ++ KDuint16 port; > ++ KDuint32 address; > ++ } sin; > ++ } data; > ++} KDSockaddr; > ++ > ++/* kdNameLookup: Look up a hostname. */ > ++KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); > ++ > ++/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ > ++KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); > ++ > ++/* kdSocketCreate: Creates a socket. */ > ++typedef struct KDSocket KDSocket; > ++KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); > ++#define KD_SOCK_TCP 64 > ++#define KD_SOCK_UDP 65 > ++ > ++/* kdSocketClose: Closes a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); > ++ > ++/* kdSocketBind: Bind a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); > ++#define KD_INADDR_ANY 0 > ++ > ++/* kdSocketGetName: Get the local address of a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); > ++ > ++/* kdSocketConnect: Connects a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); > ++ > ++/* kdSocketListen: Listen on a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); > ++ > ++/* kdSocketAccept: Accept an incoming connection. */ > ++KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); > ++ > ++/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); > ++KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); > ++ > ++/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ > ++KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); > ++KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); > ++ > ++/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ > ++KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); > ++ > ++/* kdHtons: Convert a 16-bit integer from host to network byte order. */ > ++KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); > ++ > ++/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ > ++KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); > ++ > ++/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ > ++KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); > ++ > ++/* kdInetAton: Convert a “dotted quad” format address to an integer. */ > ++KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); > ++ > ++/* kdInetNtop: Convert a network address to textual form. */ > ++#define KD_INET_ADDRSTRLEN 16 > ++typedef struct KDInAddr { > ++ KDuint32 s_addr; > ++} KDInAddr; > ++KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); > ++ > ++/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ > ++#define KD_EVENT_SOCKET_READABLE 49 > ++typedef struct KDEventSocketReadable { > ++ KDSocket *socket; > ++} KDEventSocketReadable; > ++ > ++/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ > ++#define KD_EVENT_SOCKET_WRITABLE 50 > ++typedef struct KDEventSocketWritable { > ++ KDSocket *socket; > ++} KDEventSocketWritable; > ++ > ++/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ > ++#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 > ++typedef struct KDEventSocketConnect { > ++ KDSocket *socket; > ++ KDint32 error; > ++} KDEventSocketConnect; > ++ > ++/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ > ++#define KD_EVENT_SOCKET_INCOMING 52 > ++typedef struct KDEventSocketIncoming { > ++ KDSocket *socket; > ++} KDEventSocketIncoming; > ++ > ++/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ > ++#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 > ++typedef struct KDEventNameLookup { > ++ KDint32 error; > ++ KDint32 resultlen; > ++ const KDSockaddr *result; > ++ KDboolean more; > ++} KDEventNameLookup; > ++ > ++/******************************************************* > ++ * Input/output > ++ *******************************************************/ > ++ > ++/* KD_EVENT_STATE: State changed event. */ > ++#define KD_EVENT_STATE 55 > ++ > ++typedef struct KDEventState { > ++ KDint32 index; > ++ union { > ++ KDint32 i; > ++ KDint64 l; > ++ KDfloat32 f; > ++ } value; > ++} KDEventState; > ++ > ++/* KD_EVENT_INPUT: Input changed event. */ > ++#define KD_EVENT_INPUT 56 > ++ > ++typedef struct KDEventInput { > ++ KDint32 index; > ++ union { > ++ KDint32 i; > ++ KDint64 l; > ++ KDfloat32 f; > ++ } value; > ++} KDEventInput; > ++ > ++/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ > ++#define KD_EVENT_INPUT_JOG 71 > ++typedef struct KDEventInputJog { > ++ KDint32 index; > ++ KDint32 count; > ++} KDEventInputJog; > ++ > ++/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ > ++#define KD_EVENT_INPUT_POINTER 57 > ++typedef struct KDEventInputPointer { > ++ KDint32 index; > ++ KDint32 select; > ++ KDint32 x; > ++ KDint32 y; > ++} KDEventInputPointer; > ++ > ++/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ > ++#define KD_EVENT_INPUT_STICK 58 > ++typedef struct KDEventInputStick { > ++ KDint32 index; > ++ KDint32 x; > ++ KDint32 y; > ++ KDint32 z; > ++} KDEventInputStick; > ++ > ++/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ > ++KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); > ++KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); > ++KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); > ++ > ++/* kdOutputSeti, kdOutputSetf: set outputs */ > ++KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); > ++KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); > ++#define KD_IO_CONTROLLER_STRIDE 64 > ++ > ++/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ > ++#define KD_IOGROUP_GAMEKEYS 0x1000 > ++#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) > ++#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) > ++#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) > ++#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) > ++#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) > ++#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) > ++#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) > ++#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) > ++#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) > ++#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) > ++ > ++/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ > ++#define KD_IOGROUP_GAMEKEYSNC 0x1100 > ++#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) > ++#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) > ++#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) > ++#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) > ++#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) > ++#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) > ++#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) > ++#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) > ++#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) > ++#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) > ++ > ++/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ > ++#define KD_IOGROUP_PHONEKEYPAD 0x2000 > ++#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) > ++#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) > ++#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) > ++#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) > ++#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) > ++#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) > ++#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) > ++#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) > ++#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) > ++#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) > ++#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) > ++#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) > ++#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) > ++#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) > ++#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) > ++#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) > ++ > ++/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ > ++#define KD_IOGROUP_VIBRATE 0x3000 > ++#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) > ++#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) > ++#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) > ++#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) > ++#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) > ++ > ++/* KD_IOGROUP_POINTER: I/O group for pointer. */ > ++#define KD_IOGROUP_POINTER 0x4000 > ++#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) > ++#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) > ++#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) > ++#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) > ++ > ++/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ > ++#define KD_IOGROUP_BACKLIGHT 0x5000 > ++#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) > ++#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) > ++ > ++/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ > ++#define KD_IOGROUP_JOGDIAL 0x6000 > ++#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) > ++#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) > ++#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) > ++#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) > ++#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) > ++#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) > ++ > ++/* KD_IOGROUP_STICK: I/O group for joystick. */ > ++#define KD_IOGROUP_STICK 0x7000 > ++#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) > ++#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) > ++#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) > ++#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) > ++#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) > ++#define KD_IO_STICK_STRIDE 8 > ++ > ++/* KD_IOGROUP_DPAD: I/O group for D-pad. */ > ++#define KD_IOGROUP_DPAD 0x8000 > ++#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) > ++#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) > ++#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) > ++#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) > ++#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) > ++#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) > ++#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) > ++#define KD_IO_DPAD_STRIDE 8 > ++ > ++/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ > ++#define KD_IOGROUP_BUTTONS 0x9000 > ++#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) > ++#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) > ++ > ++/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ > ++#define KD_IO_UNDEFINED 0x40000000 > ++ > ++/******************************************************* > ++ * Windowing > ++ *******************************************************/ > ++#ifdef KD_WINDOW_SUPPORTED > ++#include > ++typedef struct KDWindow KDWindow; > ++ > ++/* kdCreateWindow: Create a window. */ > ++KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); > ++ > ++/* kdDestroyWindow: Destroy a window. */ > ++KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); > ++ > ++/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ > ++KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); > ++KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); > ++KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); > ++ > ++/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ > ++KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); > ++KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); > ++KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); > ++ > ++/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ > ++KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); > ++ > ++/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ > ++#define KD_WINDOWPROPERTY_SIZE 66 > ++ > ++/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ > ++#define KD_WINDOWPROPERTY_VISIBILITY 67 > ++ > ++/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ > ++#define KD_WINDOWPROPERTY_FOCUS 68 > ++ > ++/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ > ++#define KD_WINDOWPROPERTY_CAPTION 69 > ++ > ++/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ > ++#define KD_EVENT_WINDOW_CLOSE 44 > ++ > ++/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ > ++#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 > ++typedef struct KDEventWindowProperty { > ++ KDint32 pname; > ++} KDEventWindowProperty; > ++ > ++/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ > ++#define KD_EVENT_WINDOW_FOCUS 60 > ++typedef struct KDEventWindowFocus { > ++ KDint32 focusstate; > ++} KDEventWindowFocus; > ++ > ++/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ > ++#define KD_EVENT_WINDOW_REDRAW 59 > ++#endif /* KD_WINDOW_SUPPORTED */ > ++ > ++/******************************************************* > ++ * Assertions and logging > ++ *******************************************************/ > ++ > ++/* kdHandleAssertion: Handle assertion failure. */ > ++KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); > ++ > ++/* kdLogMessage: Output a log message. */ > ++#ifdef KD_NDEBUG > ++#define kdLogMessage(s) > ++#else > ++KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); > ++#endif > ++ > ++/* struct KDEvent delayed to the end as it uses event data structs from > ++ * other parts of the .h file. */ > ++struct KDEvent { > ++ KDust timestamp; > ++ KDint32 type; > ++ void *userptr; > ++ union KDEventData { > ++ KDEventState state; > ++ KDEventInput input; > ++ KDEventInputJog inputjog; > ++ KDEventInputPointer inputpointer; > ++ KDEventInputStick inputstick; > ++ KDEventSocketReadable socketreadable; > ++ KDEventSocketWritable socketwritable; > ++ KDEventSocketConnect socketconnect; > ++ KDEventSocketIncoming socketincoming; > ++ KDEventNameLookup namelookup; > ++#ifdef KD_WINDOW_SUPPORTED > ++ KDEventWindowProperty windowproperty; > ++ KDEventWindowFocus windowfocus; > ++#endif /* KD_WINDOW_SUPPORTED */ > ++ KDEventUser user; > ++ } data; > ++}; > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __kd_h_ */ > ++ > +diff -rupN a/usr/include/KD/kdplatform.h b/usr/include/KD/kdplatform.h > +--- a/usr/include/KD/kdplatform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/kdplatform.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,37 @@ > ++/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ > ++#ifndef __kdplatform_h_ > ++#define __kdplatform_h_ > ++ > ++#define KD_API > ++#define KD_APIENTRY > ++ > ++typedef int KDint32; > ++typedef unsigned int KDuint32; > ++typedef long long KDint64; > ++typedef unsigned long long KDuint64; > ++typedef short KDint16; > ++typedef unsigned short KDuint16; > ++typedef unsigned long KDuintptr; > ++typedef unsigned long KDsize; > ++typedef long KDssize; > ++#define KDINT_MIN (-0x7fffffff-1) > ++#define KDINT_MAX 0x7fffffff > ++#define KDUINT_MAX 0xffffffffU > ++#define KDINT64_MIN (-0x7fffffffffffffffLL-1) > ++#define KDINT64_MAX 0x7fffffffffffffffLL > ++#define KDUINT64_MAX 0xffffffffffffffffULL > ++#define KDSSIZE_MIN (-0x7fffffff-1) > ++#define KDSSIZE_MAX 0x7fffffff > ++#define KDSIZE_MAX 0xffffffffU > ++#define KDUINTPTR_MAX 0xffffffffU > ++#define KD_NORETURN > ++#define KD_INFINITY (1.0F/0.0F) > ++#define KD_WINDOW_SUPPORTED > ++#ifdef KD_NDEBUG > ++#define kdAssert(c) > ++#else > ++#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) > ++#endif > ++ > ++#endif /* __kdplatform_h_ */ > ++ > +diff -rupN a/usr/include/KD/KHR_float64.h b/usr/include/KD/KHR_float64.h > +--- a/usr/include/KD/KHR_float64.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/KHR_float64.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,66 @@ > ++ > ++/******************************************************* > ++ * OpenKODE Core extension: KD_KHR_float64 > ++ *******************************************************/ > ++/* Sample KD/KHR_float64.h for OpenKODE Core */ > ++#ifndef __kd_KHR_float64_h_ > ++#define __kd_KHR_float64_h_ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++ > ++typedef double KDfloat64KHR; > ++#define KD_E_KHR 2.718281828459045235 > ++#define KD_PI_KHR 3.141592653589793239 > ++#define KD_PI_2_KHR 1.570796326794896619 > ++#define KD_2PI_KHR 6.283185307179586477 > ++#define KD_LOG2E_KHR 1.442695040888963407 > ++#define KD_LOG10E_KHR 0.4342944819032518276 > ++#define KD_LN2_KHR 0.6931471805599453094 > ++#define KD_LN10_KHR 2.302585092994045684 > ++#define KD_PI_4_KHR 0.7853981633974483096 > ++#define KD_1_PI_KHR 0.3183098861837906715 > ++#define KD_2_PI_KHR 0.6366197723675813431 > ++#define KD_2_SQRTPI_KHR 1.128379167095512574 > ++#define KD_SQRT2_KHR 1.414213562373095049 > ++#define KD_SQRT1_2_KHR 0.7071067811865475244 > ++#define KD_DBL_EPSILON_KHR 2.2204460492503131e-16 > ++#define KD_DBL_MAX_KHR 1.7976931348623157e+308 > ++#define KD_DBL_MIN_KHR 2.2250738585072014e-308 > ++#define KD_HUGE_VAL_KHR (1.0/0.0) > ++#define KD_DEG_TO_RAD_KHR 0.01745329251994329577 > ++#define KD_RAD_TO_DEG_KHR 57.29577951308232088 > ++KD_API KDfloat64KHR KD_APIENTRY kdAcosKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdAsinKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdAtanKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdAtan2KHR(KDfloat64KHR y, KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdCosKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdSinKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdTanKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdExpKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdLogKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdFabsKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdPowKHR(KDfloat64KHR x, KDfloat64KHR y); > ++KD_API KDfloat64KHR KD_APIENTRY kdSqrtKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdCeilKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdFloorKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdRoundKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdInvsqrtKHR(KDfloat64KHR x); > ++KD_API KDfloat64KHR KD_APIENTRY kdFmodKHR(KDfloat64KHR x, KDfloat64KHR y); > ++ > ++/* kdStrtodKHR: Convert a string to a 64-bit floating point number. */ > ++KD_API KDfloat64KHR KD_APIENTRY kdStrtodKHR(const KDchar *s, KDchar **endptr); > ++ > ++/* kdDtostrKHR: Convert a 64-bit float to a string. */ > ++#define KD_DTOSTR_MAXLEN_KHR 25 > ++KD_API KDssize KD_APIENTRY kdDtostrKHR(KDchar *buffer, KDsize buflen, KDfloat64KHR number); > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __kd_KHR_float64_h_ */ > ++ > +diff -rupN a/usr/include/KD/KHR_formatted.h b/usr/include/KD/KHR_formatted.h > +--- a/usr/include/KD/KHR_formatted.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/KHR_formatted.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,43 @@ > ++ > ++/******************************************************* > ++ * OpenKODE Core extension: KD_KHR_formatted > ++ *******************************************************/ > ++/* Sample KD/KHR_formatted.h for OpenKODE Core */ > ++#ifndef __kd_KHR_formatted_h_ > ++#define __kd_KHR_formatted_h_ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++ > ++typedef void *KDVaListKHR; /* example implementation only */ > ++ > ++/* kdSnprintfKHR, kdVsnprintfKHR, kdSprintfKHR, kdVsprintfKHR: Formatted output to a buffer. */ > ++KD_API KDint KD_APIENTRY kdSnprintfKHR(KDchar *buf, KDsize bufsize, const KDchar *format, ...); > ++KD_API KDint KD_APIENTRY kdVsnprintfKHR(KDchar *buf, KDsize bufsize, const KDchar *format, KDVaListKHR ap); > ++KD_API KDint KD_APIENTRY kdSprintfKHR(KDchar *buf, const KDchar *format, ...); > ++KD_API KDint KD_APIENTRY kdVsprintfKHR(KDchar *buf, const KDchar *format, KDVaListKHR ap); > ++ > ++/* kdFprintfKHR, kdVfprintfKHR: Formatted output to an open file. */ > ++KD_API KDint KD_APIENTRY kdFprintfKHR(KDFile *file, const KDchar *format, ...); > ++KD_API KDint KD_APIENTRY kdVfprintfKHR(KDFile *file, const KDchar *format, KDVaListKHR ap); > ++ > ++/* kdLogMessagefKHR: Formatted output to the platform’s debug logging facility. */ > ++KD_API KDint KD_APIENTRY kdLogMessagefKHR(const KDchar *format, ...); > ++ > ++/* kdSscanfKHR, kdVsscanfKHR: Read formatted input from a buffer. */ > ++KD_API KDint KD_APIENTRY kdSscanfKHR(const KDchar *str, const KDchar *format, ...); > ++KD_API KDint KD_APIENTRY kdVsscanfKHR(const KDchar *str, const KDchar *format, KDVaListKHR ap); > ++ > ++/* kdFscanfKHR, kdVfscanfKHR: Read formatted input from a file. */ > ++KD_API KDint KD_APIENTRY kdFscanfKHR(KDFile *file, const KDchar *format, ...); > ++KD_API KDint KD_APIENTRY kdVfscanfKHR(KDFile *file, const KDchar *format, KDVaListKHR ap); > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __kd_KHR_formatted_h_ */ > ++ > +diff -rupN a/usr/include/KD/KHR_perfcounter.h b/usr/include/KD/KHR_perfcounter.h > +--- a/usr/include/KD/KHR_perfcounter.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/KHR_perfcounter.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,54 @@ > ++ > ++/******************************************************* > ++ * OpenKODE Core extension: KD_KHR_perfcounter > ++ *******************************************************/ > ++/* Sample KD/KHR_perfcounter.h for OpenKODE Core */ > ++#ifndef __kd_KHR_perfcounter_h_ > ++#define __kd_KHR_perfcounter_h_ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++ > ++#define KD_INFINITE_COUNTER_VAL_KHR (KDINT64_MAX) > ++#define KD_UNKNOWN_COUNTER_VAL_KHR (-1) > ++ > ++/* KDCounterInfoKHR: Information on a single performance counter. */ > ++typedef struct KDCounterInfoKHR { > ++ const KDchar *vendorName; > ++ const KDchar *name; > ++ const KDchar *description; > ++ KDint64 minValue; > ++ KDint64 maxValue; > ++ KDfloat32 defaultScale; > ++} KDCounterInfoKHR; > ++ > ++/* kdGetNumberOfCountersKHR: Return the number of performance counters. */ > ++KD_API KDint KD_APIENTRY kdGetNumberOfCountersKHR(void); > ++ > ++/* kdGetCounterInformationKHR: Retrieve information on a performance counter. */ > ++KD_API const KDCounterInfoKHR *KD_APIENTRY kdGetCounterInformationKHR(KDint index); > ++ > ++/* kdActivateCountersKHR: Make counters active. */ > ++KD_API KDint KD_APIENTRY kdActivateCountersKHR(const KDint *indexes, KDint numindexes); > ++ > ++/* kdDeactivateCountersKHR: Makes counters inactive. */ > ++KD_API KDint KD_APIENTRY kdDeactivateCountersKHR(const KDint *indexes, KDint numindexes); > ++ > ++/* kdStartSamplingKHR: Start the performance counters sampling. */ > ++KD_API KDint KD_APIENTRY kdStartSamplingKHR(void); > ++ > ++/* kdStopSamplingKHR: Stop the performance counters sampling. */ > ++KD_API KDint KD_APIENTRY kdStopSamplingKHR(void); > ++ > ++/* kdGetCounterValuesKHR: Retrieves list of counter values. */ > ++KD_API KDint KD_APIENTRY kdGetCounterValuesKHR(const KDint *indexes, KDint numindexes, KDint64 *values); > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __kd_KHR_perfcounter_h_ */ > ++ > +diff -rupN a/usr/include/KD/KHR_thread_storage.h b/usr/include/KD/KHR_thread_storage.h > +--- a/usr/include/KD/KHR_thread_storage.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KD/KHR_thread_storage.h 2013-10-02 03:16:58.000000000 +0200 > +@@ -0,0 +1,33 @@ > ++ > ++/******************************************************* > ++ * OpenKODE Core extension: KD_KHR_thread_storage > ++ *******************************************************/ > ++/* Sample KD/KHR_thread_storage.h for OpenKODE Core */ > ++#ifndef __kd_KHR_thread_storage_h_ > ++#define __kd_KHR_thread_storage_h_ > ++#include > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif > ++ > ++ > ++ > ++/* KDThreadStorageKeyKHR: The representation of a thread storage key. */ > ++typedef KDuint32 KDThreadStorageKeyKHR; > ++ > ++/* kdMapThreadStorageKHR: Maps an arbitrary pointer to a global thread storage key. */ > ++KD_API KDThreadStorageKeyKHR KD_APIENTRY KD_APIENTRY kdMapThreadStorageKHR(const void * id); > ++ > ++/* kdSetThreadStorageKHR: Stores thread-local data. */ > ++KD_API KDint KD_APIENTRY KD_APIENTRY kdSetThreadStorageKHR(KDThreadStorageKeyKHR key, void * data); > ++ > ++/* kdGetThreadStorageKHR: Retrieves previously stored thread-local data. */ > ++KD_API void * KD_APIENTRY KD_APIENTRY kdGetThreadStorageKHR(KDThreadStorageKeyKHR key); > ++ > ++#ifdef __cplusplus > ++} > ++#endif > ++ > ++#endif /* __kd_KHR_thread_storage_h_ */ > ++ > +diff -rupN a/usr/include/KHR/khrplatform.h b/usr/include/KHR/khrplatform.h > +--- a/usr/include/KHR/khrplatform.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/KHR/khrplatform.h 2013-10-09 09:57:33.000000000 +0200 > +@@ -0,0 +1,282 @@ > ++#ifndef __khrplatform_h_ > ++#define __khrplatform_h_ > ++ > ++/* > ++** Copyright (c) 2008-2009 The Khronos Group Inc. > ++** > ++** Permission is hereby granted, free of charge, to any person obtaining a > ++** copy of this software and/or associated documentation files (the > ++** "Materials"), to deal in the Materials without restriction, including > ++** without limitation the rights to use, copy, modify, merge, publish, > ++** distribute, sublicense, and/or sell copies of the Materials, and to > ++** permit persons to whom the Materials are furnished to do so, subject to > ++** the following conditions: > ++** > ++** The above copyright notice and this permission notice shall be included > ++** in all copies or substantial portions of the Materials. > ++** > ++** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > ++** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. > ++*/ > ++ > ++/* Khronos platform-specific types and definitions. > ++ * > ++ * $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $ > ++ * > ++ * Adopters may modify this file to suit their platform. Adopters are > ++ * encouraged to submit platform specific modifications to the Khronos > ++ * group so that they can be included in future versions of this file. > ++ * Please submit changes by sending them to the public Khronos Bugzilla > ++ * (http://khronos.org/bugzilla) by filing a bug against product > ++ * "Khronos (general)" component "Registry". > ++ * > ++ * A predefined template which fills in some of the bug fields can be > ++ * reached using http://tinyurl.com/khrplatform-h-bugreport, but you > ++ * must create a Bugzilla login first. > ++ * > ++ * > ++ * See the Implementer's Guidelines for information about where this file > ++ * should be located on your system and for more details of its use: > ++ * http://www.khronos.org/registry/implementers_guide.pdf > ++ * > ++ * This file should be included as > ++ * #include > ++ * by Khronos client API header files that use its types and defines. > ++ * > ++ * The types in khrplatform.h should only be used to define API-specific types. > ++ * > ++ * Types defined in khrplatform.h: > ++ * khronos_int8_t signed 8 bit > ++ * khronos_uint8_t unsigned 8 bit > ++ * khronos_int16_t signed 16 bit > ++ * khronos_uint16_t unsigned 16 bit > ++ * khronos_int32_t signed 32 bit > ++ * khronos_uint32_t unsigned 32 bit > ++ * khronos_int64_t signed 64 bit > ++ * khronos_uint64_t unsigned 64 bit > ++ * khronos_intptr_t signed same number of bits as a pointer > ++ * khronos_uintptr_t unsigned same number of bits as a pointer > ++ * khronos_ssize_t signed size > ++ * khronos_usize_t unsigned size > ++ * khronos_float_t signed 32 bit floating point > ++ * khronos_time_ns_t unsigned 64 bit time in nanoseconds > ++ * khronos_utime_nanoseconds_t unsigned time interval or absolute time in > ++ * nanoseconds > ++ * khronos_stime_nanoseconds_t signed time interval in nanoseconds > ++ * khronos_boolean_enum_t enumerated boolean type. This should > ++ * only be used as a base type when a client API's boolean type is > ++ * an enum. Client APIs which use an integer or other type for > ++ * booleans cannot use this as the base type for their boolean. > ++ * > ++ * Tokens defined in khrplatform.h: > ++ * > ++ * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. > ++ * > ++ * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. > ++ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. > ++ * > ++ * Calling convention macros defined in this file: > ++ * KHRONOS_APICALL > ++ * KHRONOS_APIENTRY > ++ * KHRONOS_APIATTRIBUTES > ++ * > ++ * These may be used in function prototypes as: > ++ * > ++ * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( > ++ * int arg1, > ++ * int arg2) KHRONOS_APIATTRIBUTES; > ++ */ > ++ > ++/*------------------------------------------------------------------------- > ++ * Definition of KHRONOS_APICALL > ++ *------------------------------------------------------------------------- > ++ * This precedes the return type of the function in the function prototype. > ++ */ > ++#if defined(_WIN32) && !defined(__SCITECH_SNAP__) > ++# define KHRONOS_APICALL __declspec(dllimport) > ++#elif defined (__SYMBIAN32__) > ++# define KHRONOS_APICALL IMPORT_C > ++#else > ++# define KHRONOS_APICALL > ++#endif > ++ > ++/*------------------------------------------------------------------------- > ++ * Definition of KHRONOS_APIENTRY > ++ *------------------------------------------------------------------------- > ++ * This follows the return type of the function and precedes the function > ++ * name in the function prototype. > ++ */ > ++#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) > ++ /* Win32 but not WinCE */ > ++# define KHRONOS_APIENTRY __stdcall > ++#else > ++# define KHRONOS_APIENTRY > ++#endif > ++ > ++/*------------------------------------------------------------------------- > ++ * Definition of KHRONOS_APIATTRIBUTES > ++ *------------------------------------------------------------------------- > ++ * This follows the closing parenthesis of the function prototype arguments. > ++ */ > ++#if defined (__ARMCC_2__) > ++#define KHRONOS_APIATTRIBUTES __softfp > ++#else > ++#define KHRONOS_APIATTRIBUTES > ++#endif > ++ > ++/*------------------------------------------------------------------------- > ++ * basic type definitions > ++ *-----------------------------------------------------------------------*/ > ++#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) > ++ > ++ > ++/* > ++ * Using > ++ */ > ++#include > ++typedef int32_t khronos_int32_t; > ++typedef uint32_t khronos_uint32_t; > ++typedef int64_t khronos_int64_t; > ++typedef uint64_t khronos_uint64_t; > ++#define KHRONOS_SUPPORT_INT64 1 > ++#define KHRONOS_SUPPORT_FLOAT 1 > ++ > ++#elif defined(__VMS ) || defined(__sgi) > ++ > ++/* > ++ * Using > ++ */ > ++#include > ++typedef int32_t khronos_int32_t; > ++typedef uint32_t khronos_uint32_t; > ++typedef int64_t khronos_int64_t; > ++typedef uint64_t khronos_uint64_t; > ++#define KHRONOS_SUPPORT_INT64 1 > ++#define KHRONOS_SUPPORT_FLOAT 1 > ++ > ++#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) > ++ > ++/* > ++ * Win32 > ++ */ > ++typedef __int32 khronos_int32_t; > ++typedef unsigned __int32 khronos_uint32_t; > ++typedef __int64 khronos_int64_t; > ++typedef unsigned __int64 khronos_uint64_t; > ++#define KHRONOS_SUPPORT_INT64 1 > ++#define KHRONOS_SUPPORT_FLOAT 1 > ++ > ++#elif defined(__sun__) || defined(__digital__) > ++ > ++/* > ++ * Sun or Digital > ++ */ > ++typedef int khronos_int32_t; > ++typedef unsigned int khronos_uint32_t; > ++#if defined(__arch64__) || defined(_LP64) > ++typedef long int khronos_int64_t; > ++typedef unsigned long int khronos_uint64_t; > ++#else > ++typedef long long int khronos_int64_t; > ++typedef unsigned long long int khronos_uint64_t; > ++#endif /* __arch64__ */ > ++#define KHRONOS_SUPPORT_INT64 1 > ++#define KHRONOS_SUPPORT_FLOAT 1 > ++ > ++#elif 0 > ++ > ++/* > ++ * Hypothetical platform with no float or int64 support > ++ */ > ++typedef int khronos_int32_t; > ++typedef unsigned int khronos_uint32_t; > ++#define KHRONOS_SUPPORT_INT64 0 > ++#define KHRONOS_SUPPORT_FLOAT 0 > ++ > ++#else > ++ > ++/* > ++ * Generic fallback > ++ */ > ++#include > ++typedef int32_t khronos_int32_t; > ++typedef uint32_t khronos_uint32_t; > ++typedef int64_t khronos_int64_t; > ++typedef uint64_t khronos_uint64_t; > ++#define KHRONOS_SUPPORT_INT64 1 > ++#define KHRONOS_SUPPORT_FLOAT 1 > ++ > ++#endif > ++ > ++ > ++/* > ++ * Types that are (so far) the same on all platforms > ++ */ > ++typedef signed char khronos_int8_t; > ++typedef unsigned char khronos_uint8_t; > ++typedef signed short int khronos_int16_t; > ++typedef unsigned short int khronos_uint16_t; > ++ > ++/* > ++ * Types that differ between LLP64 and LP64 architectures - in LLP64, > ++ * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears > ++ * to be the only LLP64 architecture in current use. > ++ */ > ++#ifdef _WIN64 > ++typedef signed long long int khronos_intptr_t; > ++typedef unsigned long long int khronos_uintptr_t; > ++typedef signed long long int khronos_ssize_t; > ++typedef unsigned long long int khronos_usize_t; > ++#else > ++typedef signed long int khronos_intptr_t; > ++typedef unsigned long int khronos_uintptr_t; > ++typedef signed long int khronos_ssize_t; > ++typedef unsigned long int khronos_usize_t; > ++#endif > ++ > ++#if KHRONOS_SUPPORT_FLOAT > ++/* > ++ * Float type > ++ */ > ++typedef float khronos_float_t; > ++#endif > ++ > ++#if KHRONOS_SUPPORT_INT64 > ++/* Time types > ++ * > ++ * These types can be used to represent a time interval in nanoseconds or > ++ * an absolute Unadjusted System Time. Unadjusted System Time is the number > ++ * of nanoseconds since some arbitrary system event (e.g. since the last > ++ * time the system booted). The Unadjusted System Time is an unsigned > ++ * 64 bit value that wraps back to 0 every 584 years. Time intervals > ++ * may be either signed or unsigned. > ++ */ > ++typedef khronos_uint64_t khronos_utime_nanoseconds_t; > ++typedef khronos_int64_t khronos_stime_nanoseconds_t; > ++#endif > ++ > ++/* > ++ * Dummy value used to pad enum types to 32 bits. > ++ */ > ++#ifndef KHRONOS_MAX_ENUM > ++#define KHRONOS_MAX_ENUM 0x7FFFFFFF > ++#endif > ++ > ++/* > ++ * Enumerated boolean type > ++ * > ++ * Values other than zero should be considered to be true. Therefore > ++ * comparisons should not be made against KHRONOS_TRUE. > ++ */ > ++typedef enum { > ++ KHRONOS_FALSE = 0, > ++ KHRONOS_TRUE = 1, > ++ KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM > ++} khronos_boolean_enum_t; > ++ > ++#endif /* __khrplatform_h_ */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Audio.h b/usr/include/OpenMAX/il/OMX_Audio.h > +--- a/usr/include/OpenMAX/il/OMX_Audio.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Audio.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,1311 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** @file OMX_Audio.h - OpenMax IL version 1.1.2 > ++ * The structures needed by Audio components to exchange > ++ * parameters and configuration data with the componenmilts. > ++ */ > ++ > ++#ifndef OMX_Audio_h > ++#define OMX_Audio_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/* Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++ > ++/** @defgroup midi MIDI > ++ * @ingroup audio > ++ */ > ++ > ++/** @defgroup effects Audio effects > ++ * @ingroup audio > ++ */ > ++ > ++/** @defgroup audio OpenMAX IL Audio Domain > ++ * Structures for OpenMAX IL Audio domain > ++ * @{ > ++ */ > ++ > ++/** Enumeration used to define the possible audio codings. > ++ * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must > ++ * be done in a vendor specific way. Since this is for an audio > ++ * processing element this enum is relevant. However, for another > ++ * type of component other enums would be in this area. > ++ */ > ++typedef enum OMX_AUDIO_CODINGTYPE { > ++ OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */ > ++ OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */ > ++ OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */ > ++ OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */ > ++ OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */ > ++ OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */ > ++ OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/ > ++ OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */ > ++ OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */ > ++ OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */ > ++ OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */ > ++ OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */ > ++ OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */ > ++ OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */ > ++ OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */ > ++ OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */ > ++ OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */ > ++ OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */ > ++ OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */ > ++ OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */ > ++ OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */ > ++ OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */ > ++ OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */ > ++ OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */ > ++ OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */ > ++ OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */ > ++ OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */ > ++ OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */ > ++ OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_CodingMax = 0x7FFFFFFF > ++} OMX_AUDIO_CODINGTYPE; > ++ > ++ > ++/** The PortDefinition structure is used to define all of the parameters > ++ * necessary for the compliant component to setup an input or an output audio > ++ * path. If additional information is needed to define the parameters of the > ++ * port (such as frequency), additional structures must be sent such as the > ++ * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port. > ++ */ > ++typedef struct OMX_AUDIO_PORTDEFINITIONTYPE { > ++ OMX_STRING cMIMEType; /**< MIME type of data for the port */ > ++ OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference > ++ for an output device, > ++ otherwise this field is 0 */ > ++ OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is > ++ supported by the OMX component */ > ++ OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this > ++ port (e.g. PCM, AMR, MP3, etc) */ > ++} OMX_AUDIO_PORTDEFINITIONTYPE; > ++ > ++ > ++/** Port format parameter. This structure is used to enumerate > ++ * the various data input/output format supported by the port. > ++ */ > ++typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Indicates which port to set */ > ++ OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ > ++ OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */ > ++} OMX_AUDIO_PARAM_PORTFORMATTYPE; > ++ > ++ > ++/** PCM mode type */ > ++typedef enum OMX_AUDIO_PCMMODETYPE { > ++ OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */ > ++ OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */ > ++ OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */ > ++ OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_PCMModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_PCMMODETYPE; > ++ > ++ > ++typedef enum OMX_AUDIO_CHANNELTYPE { > ++ OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */ > ++ OMX_AUDIO_ChannelLF = 0x1, /**< Left front */ > ++ OMX_AUDIO_ChannelRF = 0x2, /**< Right front */ > ++ OMX_AUDIO_ChannelCF = 0x3, /**< Center front */ > ++ OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */ > ++ OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */ > ++ OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */ > ++ OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */ > ++ OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */ > ++ OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */ > ++ OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_ChannelMax = 0x7FFFFFFF > ++} OMX_AUDIO_CHANNELTYPE; > ++ > ++#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */ > ++#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */ > ++ > ++/** PCM format description */ > ++typedef struct OMX_AUDIO_PARAM_PCMMODETYPE { > ++ OMX_U32 nSize; /**< Size of this structure, in Bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */ > ++ OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */ > ++ OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */ > ++ OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for > ++ non-interleaved data (e.g. block data) */ > ++ OMX_U32 nBitPerSample; /**< Bit per sample */ > ++ OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++ OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */ > ++ OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */ > ++ > ++} OMX_AUDIO_PARAM_PCMMODETYPE; > ++ > ++ > ++/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate > ++ * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC. > ++ */ > ++typedef enum OMX_AUDIO_CHANNELMODETYPE { > ++ OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those > ++ two channels changes accordingly to each channel information */ > ++ OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between > ++ 2 channels for higher compression gain */ > ++ OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half > ++ the bitrate of the overall bitrate */ > ++ OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */ > ++ OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_CHANNELMODETYPE; > ++ > ++ > ++typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE { > ++ OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */ > ++ OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */ > ++ OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */ > ++ OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_MP3STREAMFORMATTYPE; > ++ > ++/** MP3 params */ > ++typedef struct OMX_AUDIO_PARAM_MP3TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable > ++ rate or unknown bit rates */ > ++ OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++ OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should > ++ limit the audio signal. Use 0 to let encoder decide */ > ++ OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ > ++ OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */ > ++} OMX_AUDIO_PARAM_MP3TYPE; > ++ > ++ > ++typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE { > ++ OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */ > ++ OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */ > ++ OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */ > ++ OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */ > ++ OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */ > ++ OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */ > ++ OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */ > ++ OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_AACSTREAMFORMATTYPE; > ++ > ++ > ++/** AAC mode type. Note that the term profile is used with the MPEG-2 > ++ * standard and the term object type and profile is used with MPEG-4 */ > ++typedef enum OMX_AUDIO_AACPROFILETYPE{ > ++ OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */ > ++ OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */ > ++ OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */ > ++ OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */ > ++ OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */ > ++ OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */ > ++ OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */ > ++ OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */ > ++ OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */ > ++ OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */ > ++ OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_AACObjectMax = 0x7FFFFFFF > ++} OMX_AUDIO_AACPROFILETYPE; > ++ > ++ > ++/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE). > ++ * Required for encoder configuration and optional as decoder info output. > ++ * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */ > ++#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */ > ++#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */ > ++#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */ > ++#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */ > ++#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */ > ++#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */ > ++#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/ > ++ > ++/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE). > ++ * Required for ER encoder configuration and optional as decoder info output */ > ++#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */ > ++#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */ > ++#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */ > ++#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */ > ++#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */ > ++ > ++ > ++/** AAC params */ > ++typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE { > ++ OMX_U32 nSize; /**< Size of this structure, in Bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++ OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable > ++ rate or unknown bit rates */ > ++ OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should > ++ limit the audio signal. Use 0 to let encoder decide */ > ++ OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec. > ++ Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD). > ++ Use 0 to let encoder decide */ > ++ OMX_U32 nAACtools; /**< AAC tool usage */ > ++ OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */ > ++ OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */ > ++ OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */ > ++ OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ > ++} OMX_AUDIO_PARAM_AACPROFILETYPE; > ++ > ++ > ++/** VORBIS params */ > ++typedef struct OMX_AUDIO_PARAM_VORBISTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable > ++ rate or unknown bit rates. Encoding is set to the > ++ bitrate closest to specified value (in bps) */ > ++ OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */ > ++ OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */ > ++ > ++ OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++ OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should > ++ limit the audio signal. Use 0 to let encoder decide */ > ++ OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high). > ++ In the default mode of operation, teh quality level is 3. > ++ Normal quality range is 0 - 10. */ > ++ OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the > ++ normal VBR encoding, but allows hard or soft bitrate > ++ constraints to be enforced by the encoder. This mode can > ++ be slower, and may also be lower quality. It is > ++ primarily useful for streaming. */ > ++ OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on > ++ non-stereo streams). Useful for lower-bitrate encoding. */ > ++} OMX_AUDIO_PARAM_VORBISTYPE; > ++ > ++ > ++/** WMA Version */ > ++typedef enum OMX_AUDIO_WMAFORMATTYPE { > ++ OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */ > ++ OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */ > ++ OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */ > ++ OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */ > ++ OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_WMAFORMATTYPE; > ++ > ++ > ++/** WMA Profile */ > ++typedef enum OMX_AUDIO_WMAPROFILETYPE { > ++ OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */ > ++ OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */ > ++ OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */ > ++ OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */ > ++ OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF > ++} OMX_AUDIO_WMAPROFILETYPE; > ++ > ++ > ++/** WMA params */ > ++typedef struct OMX_AUDIO_PARAM_WMATYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U16 nChannels; /**< Number of channels */ > ++ OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable > ++ rate or unknown bit rates */ > ++ OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */ > ++ OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */ > ++ OMX_U32 nSamplingRate; /**< Sampling rate of the source data */ > ++ OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */ > ++ OMX_U16 nEncodeOptions; /**< WMA Type-specific data */ > ++ OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */ > ++} OMX_AUDIO_PARAM_WMATYPE; > ++ > ++/** > ++ * RealAudio format > ++ */ > ++typedef enum OMX_AUDIO_RAFORMATTYPE { > ++ OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */ > ++ OMX_AUDIO_RA8, /**< RealAudio 8 codec */ > ++ OMX_AUDIO_RA9, /**< RealAudio 9 codec */ > ++ OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */ > ++ OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */ > ++ OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */ > ++ OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */ > ++ OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */ > ++ OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_RAFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_RAFORMATTYPE; > ++ > ++/** RA (Real Audio) params */ > ++typedef struct OMX_AUDIO_PARAM_RATYPE { > ++ OMX_U32 nSize; /**< Size of this structure, in Bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */ > ++ OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */ > ++ OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */ > ++ OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */ > ++ OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */ > ++ OMX_U32 nNumRegions; /**< is the number of regions value */ > ++ OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */ > ++} OMX_AUDIO_PARAM_RATYPE; > ++ > ++ > ++/** SBC Allocation Method Type */ > ++typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE { > ++ OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */ > ++ OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */ > ++ OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF > ++} OMX_AUDIO_SBCALLOCMETHODTYPE; > ++ > ++ > ++/** SBC params */ > ++typedef struct OMX_AUDIO_PARAM_SBCTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable > ++ rate or unknown bit rates */ > ++ OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++ OMX_U32 nBlocks; /**< Number of blocks */ > ++ OMX_U32 nSubbands; /**< Number of subbands */ > ++ OMX_U32 nBitPool; /**< Bitpool value */ > ++ OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */ > ++ OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ > ++ OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */ > ++} OMX_AUDIO_PARAM_SBCTYPE; > ++ > ++ > ++/** ADPCM stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_ADPCMTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_U32 nBitsPerSample; /**< Number of bits in each sample */ > ++ OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for > ++ variable or unknown sampling rate. */ > ++} OMX_AUDIO_PARAM_ADPCMTYPE; > ++ > ++ > ++/** G723 rate */ > ++typedef enum OMX_AUDIO_G723RATE { > ++ OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */ > ++ OMX_AUDIO_G723ModeLow, /**< 5300 bps */ > ++ OMX_AUDIO_G723ModeHigh, /**< 6300 bps */ > ++ OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_G723ModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_G723RATE; > ++ > ++ > ++/** G723 - Sample rate must be 8 KHz */ > ++typedef struct OMX_AUDIO_PARAM_G723TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++ OMX_BOOL bPostFilter; /**< Enable Post Filter */ > ++} OMX_AUDIO_PARAM_G723TYPE; > ++ > ++ > ++/** ITU G726 (ADPCM) rate */ > ++typedef enum OMX_AUDIO_G726MODE { > ++ OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */ > ++ OMX_AUDIO_G726Mode16, /**< 16 kbps */ > ++ OMX_AUDIO_G726Mode24, /**< 24 kbps */ > ++ OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */ > ++ OMX_AUDIO_G726Mode40, /**< 40 kbps */ > ++ OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_G726ModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_G726MODE; > ++ > ++ > ++/** G.726 stream format parameters - must be at 8KHz */ > ++typedef struct OMX_AUDIO_PARAM_G726TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_AUDIO_G726MODE eG726Mode; > ++} OMX_AUDIO_PARAM_G726TYPE; > ++ > ++ > ++/** G729 coder type */ > ++typedef enum OMX_AUDIO_G729TYPE { > ++ OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */ > ++ OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */ > ++ OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */ > ++ OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */ > ++ OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_G729Max = 0x7FFFFFFF > ++} OMX_AUDIO_G729TYPE; > ++ > ++ > ++/** G729 stream format parameters - fixed 6KHz sample rate */ > ++typedef struct OMX_AUDIO_PARAM_G729TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_AUDIO_G729TYPE eBitType; > ++} OMX_AUDIO_PARAM_G729TYPE; > ++ > ++ > ++/** AMR Frame format */ > ++typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE { > ++ OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance > ++ (Standard) Format */ > ++ OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface > ++ Format 1 */ > ++ OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface > ++ Format 2*/ > ++ OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage > ++ Format */ > ++ OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time > ++ Transport Protocol Payload Format */ > ++ OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added@Motorola request) */ > ++ OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_AMRFRAMEFORMATTYPE; > ++ > ++ > ++/** AMR band mode */ > ++typedef enum OMX_AUDIO_AMRBANDMODETYPE { > ++ OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */ > ++ OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */ > ++ OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */ > ++ OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */ > ++ OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */ > ++ OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */ > ++ OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */ > ++ OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */ > ++ OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */ > ++ OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */ > ++ OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */ > ++ OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */ > ++ OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */ > ++ OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */ > ++ OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */ > ++ OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */ > ++ OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */ > ++ OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */ > ++ OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_AMRBANDMODETYPE; > ++ > ++ > ++/** AMR Discontinuous Transmission mode */ > ++typedef enum OMX_AUDIO_AMRDTXMODETYPE { > ++ OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */ > ++ OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using > ++ Voice Activity Detector 1 (VAD1) is enabled */ > ++ OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using > ++ Voice Activity Detector 2 (VAD2) is enabled */ > ++ OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between > ++ Off, VAD1 or VAD2 modes */ > ++ > ++ OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */ > ++ > ++ OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF > ++} OMX_AUDIO_AMRDTXMODETYPE; > ++ > ++ > ++/** AMR params */ > ++typedef struct OMX_AUDIO_PARAM_AMRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels */ > ++ OMX_U32 nBitRate; /**< Bit rate read only field */ > ++ OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */ > ++ OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */ > ++ OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */ > ++} OMX_AUDIO_PARAM_AMRTYPE; > ++ > ++ > ++/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_GSMFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_GSMFRTYPE; > ++ > ++ > ++/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_GSMHRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_GSMHRTYPE; > ++ > ++ > ++/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_GSMEFRTYPE; > ++ > ++ > ++/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_TDMAFRTYPE; > ++ > ++ > ++/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_TDMAEFRTYPE; > ++ > ++ > ++/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_PDCFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_PDCFRTYPE; > ++ > ++ > ++/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_PDCEFRTYPE; > ++ > ++/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_PDCHRTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ > ++ OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ > ++} OMX_AUDIO_PARAM_PDCHRTYPE; > ++ > ++ > ++/** CDMA Rate types */ > ++typedef enum OMX_AUDIO_CDMARATETYPE { > ++ OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */ > ++ OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */ > ++ OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */ > ++ OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */ > ++ OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/ > ++ OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */ > ++ OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_CDMARateMax = 0x7FFFFFFF > ++} OMX_AUDIO_CDMARATETYPE; > ++ > ++ > ++/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_QCELP8TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable > ++ rate or unknown bit rates */ > ++ OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ > ++ OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ > ++ OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ > ++} OMX_AUDIO_PARAM_QCELP8TYPE; > ++ > ++ > ++/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_QCELP13TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ > ++ OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ > ++ OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ > ++} OMX_AUDIO_PARAM_QCELP13TYPE; > ++ > ++ > ++/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_EVRCTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */ > ++ OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ > ++ OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ > ++ OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ > ++ OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */ > ++ OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ > ++ OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */ > ++} OMX_AUDIO_PARAM_EVRCTYPE; > ++ > ++ > ++/** SMV ( up to 8.55kbps coder) stream format parameters */ > ++typedef struct OMX_AUDIO_PARAM_SMVTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannels; /**< Number of channels in the data stream (not > ++ necessarily the same as the number of channels > ++ to be rendered. */ > ++ OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ > ++ OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ > ++ OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/ > ++ OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/ > ++ OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/ > ++ OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ > ++ OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/ > ++} OMX_AUDIO_PARAM_SMVTYPE; > ++ > ++ > ++/** MIDI Format > ++ * @ingroup midi > ++ */ > ++typedef enum OMX_AUDIO_MIDIFORMATTYPE > ++{ > ++ OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */ > ++ OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */ > ++ OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */ > ++ OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */ > ++ OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */ > ++ OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */ > ++ OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */ > ++ OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */ > ++ OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF > ++} OMX_AUDIO_MIDIFORMATTYPE; > ++ > ++ > ++/** MIDI params > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_PARAM_MIDITYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire > ++ MIDI file passed in, otherwise if 0x0, the MIDI data > ++ is merged and streamed (instead of passed as an > ++ entire MIDI file) */ > ++ OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic > ++ voices. A value of zero indicates that the default > ++ polyphony of the device is used */ > ++ OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound > ++ bank at initialization */ > ++ OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */ > ++} OMX_AUDIO_PARAM_MIDITYPE; > ++ > ++ > ++/** Type of the MIDI sound bank > ++ * @ingroup midi > ++ */ > ++typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE { > ++ OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */ > ++ OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */ > ++ OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */ > ++ OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */ > ++ OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */ > ++ OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF > ++} OMX_AUDIO_MIDISOUNDBANKTYPE; > ++ > ++ > ++/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank > ++ * @ingroup midi > ++ */ > ++typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE { > ++ OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */ > ++ OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */ > ++ OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */ > ++ OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */ > ++ OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF > ++} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE; > ++ > ++ > ++/** MIDI params to load/unload user soundbank > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nDLSIndex; /**< DLS file index to be loaded */ > ++ OMX_U32 nDLSSize; /**< Size in bytes */ > ++ OMX_PTR pDLSData; /**< Pointer to DLS file data */ > ++ OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */ > ++ OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */ > ++} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE; > ++ > ++ > ++/** Structure for Live MIDI events and MIP messages. > ++ * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.) > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */ > ++ OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an > ++ array for the MIP message buffer, where the size is > ++ indicated by nMidiEventSize */ > ++} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE; > ++ > ++ > ++/** MIDI sound bank/ program pair in a given channel > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */ > ++ OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */ > ++ OMX_U16 nIDSoundBank; /**< Sound bank ID */ > ++ OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks > ++ by index if multiple banks are present */ > ++} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE; > ++ > ++ > ++/** MIDI control > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10 > ++ format based on JAVA MMAPI (JSR-135) requirement */ > ++ OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point > ++ number based on JSR-135 requirement */ > ++ OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10 > ++ fixed-point number based on JSR-135 requirement */ > ++ OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic > ++ voices. A value of zero indicates that the default > ++ polyphony of the device is used */ > ++ OMX_U32 nNumRepeat; /**< Number of times to repeat playback */ > ++ OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback > ++ will stop automatically. Set to zero if not used */ > ++ OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */ > ++ OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */ > ++ OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */ > ++ OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */ > ++ OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */ > ++ OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */ > ++ > ++} OMX_AUDIO_CONFIG_MIDICONTROLTYPE; > ++ > ++ > ++/** MIDI Playback States > ++ * @ingroup midi > ++ */ > ++typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE { > ++ OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to > ++ other defined states */ > ++ OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open. > ++ The MIDI engine is currently processing > ++ MIDI events. */ > ++ OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being > ++ primed. The MIDI engine is currently > ++ processing MIDI events. */ > ++ OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but > ++ not playing. The MIDI engine is currently > ++ processing MIDI events. The transition to > ++ this state is only possible from the > ++ OMX_AUDIO_MIDIPlayBackStatePlaying state, > ++ when the 'playback head' reaches the end > ++ of media data or the playback stops due > ++ to stop time set.*/ > ++ OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently > ++ playing. The MIDI engine is currently > ++ processing MIDI events.*/ > ++ OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS > ++ resource constraints */ > ++ OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and > ++ SP-MIDI content constraints, there is > ++ no audible MIDI content during playback > ++ currently. The situation may change if > ++ resources are freed later.*/ > ++ OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF > ++} OMX_AUDIO_MIDIPLAYBACKSTATETYPE; > ++ > ++ > ++/** MIDI status > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field. > ++ NOTE: May not return a meaningful value until the entire > ++ file is parsed and buffered. */ > ++ OMX_U32 nDuration; /**< The length of the currently open MIDI resource > ++ in milliseconds. NOTE: May not return a meaningful value > ++ until the entire file is parsed and buffered. */ > ++ OMX_U32 nPosition; /**< Current Position of the MIDI resource being played > ++ in milliseconds */ > ++ OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful > ++ value until the entire file is parsed and buffered. */ > ++ OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently > ++ open MIDI resource. NOTE: May not return a meaningful value > ++ until the entire file is parsed and buffered. */ > ++ OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing > ++ MIDI resource. NOTE: May not return a meaningful value until > ++ the entire file is parsed and buffered. */ > ++ OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */ > ++} OMX_AUDIO_CONFIG_MIDISTATUSTYPE; > ++ > ++ > ++/** MIDI Meta Event structure one per Meta Event. > ++ * MIDI Meta Events are like audio metadata, except that they are interspersed > ++ * with the MIDI content throughout the file and are not localized in the header. > ++ * As such, it is necessary to retrieve information about these Meta Events from > ++ * the engine, as it encounters these Meta Events within the MIDI content. > ++ * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright, > ++ * author, default tempo, etc.) scattered throughout the file. > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{ > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nIndex; /**< Index of Meta Event */ > ++ OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */ > ++ OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ > ++ OMX_U32 nTrack; /**< track number for the meta event */ > ++ OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */ > ++} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE; > ++ > ++ > ++/** MIDI Meta Event Data structure - one per Meta Event. > ++ * @ingroup midi > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{ > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nIndex; /**< Index of Meta Event */ > ++ OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ > ++ OMX_U8 nData[1]; /**< array of one or more bytes of meta data > ++ as indicated by the nMetaEventSize field */ > ++} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE; > ++ > ++ > ++/** Audio Volume adjustment for a port */ > ++typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port index indicating which port to > ++ set. Select the input port to set > ++ just that port's volume. Select the > ++ output port to adjust the master > ++ volume. */ > ++ OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) > ++ or logarithmic scale (mB) */ > ++ OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR > ++ Volume logarithmic setting for this port. The values > ++ for volume are in mB (millibels = 1/100 dB) relative > ++ to a gain of 1 (e.g. the output is the same as the > ++ input level). Values are in mB from nMax > ++ (maximum volume) to nMin mB (typically negative). > ++ Since the volume is "voltage" > ++ and not a "power", it takes a setting of > ++ -600 mB to decrease the volume by 1/2. If > ++ a component cannot accurately set the > ++ volume to the requested value, it must > ++ set the volume to the closest value BELOW > ++ the requested value. When getting the > ++ volume setting, the current actual volume > ++ must be returned. */ > ++} OMX_AUDIO_CONFIG_VOLUMETYPE; > ++ > ++ > ++/** Audio Volume adjustment for a channel */ > ++typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port index indicating which port to > ++ set. Select the input port to set > ++ just that port's volume. Select the > ++ output port to adjust the master > ++ volume. */ > ++ OMX_U32 nChannel; /**< channel to select from 0 to N-1, > ++ using OMX_ALL to apply volume settings > ++ to all channels */ > ++ OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or > ++ logarithmic scale (mB) */ > ++ OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR > ++ Volume logarithmic setting for this port. > ++ The values for volume are in mB > ++ (millibels = 1/100 dB) relative to a gain > ++ of 1 (e.g. the output is the same as the > ++ input level). Values are in mB from nMax > ++ (maximum volume) to nMin mB (typically negative). > ++ Since the volume is "voltage" > ++ and not a "power", it takes a setting of > ++ -600 mB to decrease the volume by 1/2. If > ++ a component cannot accurately set the > ++ volume to the requested value, it must > ++ set the volume to the closest value BELOW > ++ the requested value. When getting the > ++ volume setting, the current actual volume > ++ must be returned. */ > ++ OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, > ++ FALSE otherwise */ > ++} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE; > ++ > ++ > ++/** Audio balance setting */ > ++typedef struct OMX_AUDIO_CONFIG_BALANCETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port index indicating which port to > ++ set. Select the input port to set > ++ just that port's balance. Select the > ++ output port to adjust the master > ++ balance. */ > ++ OMX_S32 nBalance; /**< balance setting for this port > ++ (-100 to 100, where -100 indicates > ++ all left, and no right */ > ++} OMX_AUDIO_CONFIG_BALANCETYPE; > ++ > ++ > ++/** Audio Port mute */ > ++typedef struct OMX_AUDIO_CONFIG_MUTETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port index indicating which port to > ++ set. Select the input port to set > ++ just that port's mute. Select the > ++ output port to adjust the master > ++ mute. */ > ++ OMX_BOOL bMute; /**< Mute setting for this port */ > ++} OMX_AUDIO_CONFIG_MUTETYPE; > ++ > ++ > ++/** Audio Channel mute */ > ++typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nChannel; /**< channel to select from 0 to N-1, > ++ using OMX_ALL to apply mute settings > ++ to all channels */ > ++ OMX_BOOL bMute; /**< Mute setting for this channel */ > ++ OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, > ++ FALSE otherwise */ > ++} OMX_AUDIO_CONFIG_CHANNELMUTETYPE; > ++ > ++ > ++ > ++/** Enable / Disable for loudness control, which boosts bass and to a > ++ * smaller extent high end frequencies to compensate for hearing > ++ * ability at the extreme ends of the audio spectrum > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bLoudness; /**< Enable/disable for loudness */ > ++} OMX_AUDIO_CONFIG_LOUDNESSTYPE; > ++ > ++ > ++/** Enable / Disable for bass, which controls low frequencies > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_BASSTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for bass control */ > ++ OMX_S32 nBass; /**< bass setting for the port, as a > ++ continuous value from -100 to 100 > ++ (0 means no change in bass level)*/ > ++} OMX_AUDIO_CONFIG_BASSTYPE; > ++ > ++ > ++/** Enable / Disable for treble, which controls high frequencies tones > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_TREBLETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for treble control */ > ++ OMX_S32 nTreble; /**< treble setting for the port, as a > ++ continuous value from -100 to 100 > ++ (0 means no change in treble level) */ > ++} OMX_AUDIO_CONFIG_TREBLETYPE; > ++ > ++ > ++/** An equalizer is typically used for two reasons: to compensate for an > ++ * sub-optimal frequency response of a system to make it sound more natural > ++ * or to create intentionally some unnatural coloring to the sound to create > ++ * an effect. > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for equalizer */ > ++ OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is > ++ N-1, where N is the number of bands, lower limit is 0 */ > ++ OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a > ++ read only element and is used to determine > ++ the lower, center and upper frequency of > ++ this band. */ > ++ OMX_BS32 sBandLevel; /**< band level in millibels */ > ++} OMX_AUDIO_CONFIG_EQUALIZERTYPE; > ++ > ++ > ++/** Stereo widening mode type > ++ * @ingroup effects > ++ */ > ++typedef enum OMX_AUDIO_STEREOWIDENINGTYPE { > ++ OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */ > ++ OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */ > ++ OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF > ++} OMX_AUDIO_STEREOWIDENINGTYPE; > ++ > ++ > ++/** Control for stereo widening, which is a special 2-channel > ++ * case of the audio virtualizer effect. For example, for 5.1-channel > ++ * output, it translates to virtual surround sound. > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */ > ++ OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */ > ++ OMX_U32 nStereoWidening; /**< stereo widening setting for the port, > ++ as a continuous value from 0 to 100 */ > ++} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE; > ++ > ++ > ++/** The chorus effect (or ``choralizer'') is any signal processor which makes > ++ * one sound source (such as a voice) sound like many such sources singing > ++ * (or playing) in unison. Since performance in unison is never exact, chorus > ++ * effects simulate this by making independently modified copies of the input > ++ * signal. Modifications may include (1) delay, (2) frequency shift, and > ++ * (3) amplitude modulation. > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for chorus */ > ++ OMX_BU32 sDelay; /**< average delay in milliseconds */ > ++ OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */ > ++ OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of > ++ delay (i.e. 0 to 100) */ > ++ OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */ > ++} OMX_AUDIO_CONFIG_CHORUSTYPE; > ++ > ++ > ++/** Reverberation is part of the reflected sound that follows the early > ++ * reflections. In a typical room, this consists of a dense succession of > ++ * echoes whose energy decays exponentially. The reverberation effect structure > ++ * as defined here includes both (early) reflections as well as (late) reverberations. > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bEnable; /**< Enable/disable for reverberation control */ > ++ OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect > ++ (i.e. both early reflections and late > ++ reverberation) in millibels */ > ++ OMX_BS32 sRoomHighFreqLevel; /**< Attenuation@high frequencies > ++ relative to the intensity at low > ++ frequencies in millibels */ > ++ OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections > ++ (relative to room value), in millibels */ > ++ OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative > ++ to the direct path, in milliseconds */ > ++ OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation > ++ relative to room level, in millibels */ > ++ OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection > ++ to the beginning of the late reverberation > ++ section, in milliseconds */ > ++ OMX_BU32 sDecayTime; /**< Late reverberation decay time@low > ++ frequencies, in milliseconds */ > ++ OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative > ++ to low frequency decay time in percent */ > ++ OMX_U32 nDensity; /**< Modal density in the late reverberation decay, > ++ in percent (i.e. 0 - 100) */ > ++ OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay, > ++ in percent (i.e. 0 - 100) */ > ++ OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is > ++ the frequency used as the reference for all > ++ the high-frequency settings above */ > ++ > ++} OMX_AUDIO_CONFIG_REVERBERATIONTYPE; > ++ > ++ > ++/** Possible settings for the Echo Cancelation structure to use > ++ * @ingroup effects > ++ */ > ++typedef enum OMX_AUDIO_ECHOCANTYPE { > ++ OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */ > ++ OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation - > ++ echo from plastics and face */ > ++ OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for > ++ Hands Free operation */ > ++ OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for > ++ Car Kit (longer echo) */ > ++ OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_AUDIO_EchoCanMax = 0x7FFFFFFF > ++} OMX_AUDIO_ECHOCANTYPE; > ++ > ++ > ++/** Enable / Disable for echo cancelation, which removes undesired echo's > ++ * from the audio > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */ > ++} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE; > ++ > ++ > ++/** Enable / Disable for noise reduction, which undesired noise from > ++ * the audio > ++ * @ingroup effects > ++ */ > ++typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */ > ++} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE; > ++ > ++/** @} */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > ++ > +diff -rupN a/usr/include/OpenMAX/il/OMX_ComponentExt.h b/usr/include/OpenMAX/il/OMX_ComponentExt.h > +--- a/usr/include/OpenMAX/il/OMX_ComponentExt.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_ComponentExt.h 2011-08-09 09:07:36.000000000 +0200 > +@@ -0,0 +1,61 @@ > ++/* > ++ * Copyright (c) 2010 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_ComponentExt.h - OpenMax IL version 1.1.2 > ++ * The OMX_ComponentExt header file contains extensions to the definitions used > ++ * by both the application and the component to access common items. > ++ */ > ++ > ++#ifndef OMX_ComponentExt_h > ++#define OMX_ComponentExt_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/* Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++ > ++/** Set/query the commit mode */ > ++typedef struct OMX_CONFIG_COMMITMODETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_BOOL bDeferred; > ++} OMX_CONFIG_COMMITMODETYPE; > ++ > ++/** Explicit commit */ > ++typedef struct OMX_CONFIG_COMMITTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++} OMX_CONFIG_COMMITTYPE; > ++ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif /* OMX_ComponentExt_h */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Component.h b/usr/include/OpenMAX/il/OMX_Component.h > +--- a/usr/include/OpenMAX/il/OMX_Component.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Component.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,579 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_Component.h - OpenMax IL version 1.1.2 > ++ * The OMX_Component header file contains the definitions used to define > ++ * the public interface of a component. This header file is intended to > ++ * be used by both the application and the component. > ++ */ > ++ > ++#ifndef OMX_Component_h > ++#define OMX_Component_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++ > ++/* Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++#include > ++#include > ++#include > ++ > ++/** @ingroup comp */ > ++typedef enum OMX_PORTDOMAINTYPE { > ++ OMX_PortDomainAudio, > ++ OMX_PortDomainVideo, > ++ OMX_PortDomainImage, > ++ OMX_PortDomainOther, > ++ OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_PortDomainMax = 0x7ffffff > ++} OMX_PORTDOMAINTYPE; > ++ > ++/** @ingroup comp */ > ++typedef struct OMX_PARAM_PORTDEFINITIONTYPE { > ++ OMX_U32 nSize; /**< Size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port number the structure applies to */ > ++ OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ > ++ OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ > ++ OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ > ++ OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ > ++ OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by > ++ OMX_CommandPortEnable/OMX_CommandPortDisable. > ++ When disabled a port is unpopulated. A disabled port > ++ is not populated with buffers on a transition to IDLE. */ > ++ OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by > ++ nBufferCountActual. A disabled port is always unpopulated. > ++ An enabled port is populated on a transition to OMX_StateIdle > ++ and unpopulated on a transition to loaded. */ > ++ OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ > ++ union { > ++ OMX_AUDIO_PORTDEFINITIONTYPE audio; > ++ OMX_VIDEO_PORTDEFINITIONTYPE video; > ++ OMX_IMAGE_PORTDEFINITIONTYPE image; > ++ OMX_OTHER_PORTDEFINITIONTYPE other; > ++ } format; > ++ OMX_BOOL bBuffersContiguous; > ++ OMX_U32 nBufferAlignment; > ++} OMX_PARAM_PORTDEFINITIONTYPE; > ++ > ++/** @ingroup comp */ > ++typedef struct OMX_PARAM_U32TYPE { > ++ OMX_U32 nSize; /**< Size of this structure, in Bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_U32 nU32; /**< U32 value */ > ++} OMX_PARAM_U32TYPE; > ++ > ++/** @ingroup rpm */ > ++typedef enum OMX_SUSPENSIONPOLICYTYPE { > ++ OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ > ++ OMX_SuspensionEnabled, /**< Suspension allowed */ > ++ OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_SuspensionPolicyMax = 0x7fffffff > ++} OMX_SUSPENSIONPOLICYTYPE; > ++ > ++/** @ingroup rpm */ > ++typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_SUSPENSIONPOLICYTYPE ePolicy; > ++} OMX_PARAM_SUSPENSIONPOLICYTYPE; > ++ > ++/** @ingroup rpm */ > ++typedef enum OMX_SUSPENSIONTYPE { > ++ OMX_NotSuspended, /**< component is not suspended */ > ++ OMX_Suspended, /**< component is suspended */ > ++ OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_SuspendMax = 0x7FFFFFFF > ++} OMX_SUSPENSIONTYPE; > ++ > ++/** @ingroup rpm */ > ++typedef struct OMX_PARAM_SUSPENSIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_SUSPENSIONTYPE eType; > ++} OMX_PARAM_SUSPENSIONTYPE ; > ++ > ++typedef struct OMX_CONFIG_BOOLEANTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_BOOL bEnabled; > ++} OMX_CONFIG_BOOLEANTYPE; > ++ > ++/* Parameter specifying the content uri to use. */ > ++/** @ingroup cp */ > ++typedef struct OMX_PARAM_CONTENTURITYPE > ++{ > ++ OMX_U32 nSize; /**< size of the structure in bytes, including > ++ actual URI name */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U8 contentURI[1]; /**< The URI name */ > ++} OMX_PARAM_CONTENTURITYPE; > ++ > ++/* Parameter specifying the pipe to use. */ > ++/** @ingroup cp */ > ++typedef struct OMX_PARAM_CONTENTPIPETYPE > ++{ > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_HANDLETYPE hPipe; /**< The pipe handle*/ > ++} OMX_PARAM_CONTENTPIPETYPE; > ++ > ++/** @ingroup rpm */ > ++typedef struct OMX_RESOURCECONCEALMENTTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment > ++ methods (like degrading algorithm quality to > ++ lower resource consumption or functional bypass) > ++ on a component as a resolution to resource conflicts. */ > ++} OMX_RESOURCECONCEALMENTTYPE; > ++ > ++ > ++/** @ingroup metadata */ > ++typedef enum OMX_METADATACHARSETTYPE { > ++ OMX_MetadataCharsetUnknown = 0, > ++ OMX_MetadataCharsetASCII, > ++ OMX_MetadataCharsetBinary, > ++ OMX_MetadataCharsetCodePage1252, > ++ OMX_MetadataCharsetUTF8, > ++ OMX_MetadataCharsetJavaConformantUTF8, > ++ OMX_MetadataCharsetUTF7, > ++ OMX_MetadataCharsetImapUTF7, > ++ OMX_MetadataCharsetUTF16LE, > ++ OMX_MetadataCharsetUTF16BE, > ++ OMX_MetadataCharsetGB12345, > ++ OMX_MetadataCharsetHZGB2312, > ++ OMX_MetadataCharsetGB2312, > ++ OMX_MetadataCharsetGB18030, > ++ OMX_MetadataCharsetGBK, > ++ OMX_MetadataCharsetBig5, > ++ OMX_MetadataCharsetISO88591, > ++ OMX_MetadataCharsetISO88592, > ++ OMX_MetadataCharsetISO88593, > ++ OMX_MetadataCharsetISO88594, > ++ OMX_MetadataCharsetISO88595, > ++ OMX_MetadataCharsetISO88596, > ++ OMX_MetadataCharsetISO88597, > ++ OMX_MetadataCharsetISO88598, > ++ OMX_MetadataCharsetISO88599, > ++ OMX_MetadataCharsetISO885910, > ++ OMX_MetadataCharsetISO885913, > ++ OMX_MetadataCharsetISO885914, > ++ OMX_MetadataCharsetISO885915, > ++ OMX_MetadataCharsetShiftJIS, > ++ OMX_MetadataCharsetISO2022JP, > ++ OMX_MetadataCharsetISO2022JP1, > ++ OMX_MetadataCharsetISOEUCJP, > ++ OMX_MetadataCharsetSMS7Bit, > ++ OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_MetadataCharsetTypeMax= 0x7FFFFFFF > ++} OMX_METADATACHARSETTYPE; > ++ > ++/** @ingroup metadata */ > ++typedef enum OMX_METADATASCOPETYPE > ++{ > ++ OMX_MetadataScopeAllLevels, > ++ OMX_MetadataScopeTopLevel, > ++ OMX_MetadataScopePortLevel, > ++ OMX_MetadataScopeNodeLevel, > ++ OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_MetadataScopeTypeMax = 0x7fffffff > ++} OMX_METADATASCOPETYPE; > ++ > ++/** @ingroup metadata */ > ++typedef enum OMX_METADATASEARCHMODETYPE > ++{ > ++ OMX_MetadataSearchValueSizeByIndex, > ++ OMX_MetadataSearchItemByIndex, > ++ OMX_MetadataSearchNextItemByKey, > ++ OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_MetadataSearchTypeMax = 0x7fffffff > ++} OMX_METADATASEARCHMODETYPE; > ++/** @ingroup metadata */ > ++typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE > ++{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_METADATASCOPETYPE eScopeMode; > ++ OMX_U32 nScopeSpecifier; > ++ OMX_U32 nMetadataItemCount; > ++} OMX_CONFIG_METADATAITEMCOUNTTYPE; > ++ > ++/** @ingroup metadata */ > ++typedef struct OMX_CONFIG_METADATAITEMTYPE > ++{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_METADATASCOPETYPE eScopeMode; > ++ OMX_U32 nScopeSpecifier; > ++ OMX_U32 nMetadataItemIndex; > ++ OMX_METADATASEARCHMODETYPE eSearchMode; > ++ OMX_METADATACHARSETTYPE eKeyCharset; > ++ OMX_U8 nKeySizeUsed; > ++ OMX_U8 nKey[128]; > ++ OMX_METADATACHARSETTYPE eValueCharset; > ++ OMX_STRING sLanguageCountry; > ++ OMX_U32 nValueMaxSize; > ++ OMX_U32 nValueSizeUsed; > ++ OMX_U8 nValue[1]; > ++} OMX_CONFIG_METADATAITEMTYPE; > ++ > ++/* @ingroup metadata */ > ++typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE > ++{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_BOOL bAllKeys; > ++ OMX_U32 nParentNodeID; > ++ OMX_U32 nNumNodes; > ++} OMX_CONFIG_CONTAINERNODECOUNTTYPE; > ++ > ++/** @ingroup metadata */ > ++typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE > ++{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_BOOL bAllKeys; > ++ OMX_U32 nParentNodeID; > ++ OMX_U32 nNodeIndex; > ++ OMX_U32 nNodeID; > ++ OMX_STRING cNodeName; > ++ OMX_BOOL bIsLeafType; > ++} OMX_CONFIG_CONTAINERNODEIDTYPE; > ++ > ++/** @ingroup metadata */ > ++typedef struct OMX_PARAM_METADATAFILTERTYPE > ++{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and > ++ * the three key fields below are ignored */ > ++ OMX_METADATACHARSETTYPE eKeyCharset; > ++ OMX_U32 nKeySizeUsed; > ++ OMX_U8 nKey [128]; > ++ OMX_U32 nLanguageCountrySizeUsed; > ++ OMX_U8 nLanguageCountry[128]; > ++ OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. > ++ * retained for query later). If false then > ++ * key is not part of filter */ > ++} OMX_PARAM_METADATAFILTERTYPE; > ++ > ++/** The OMX_HANDLETYPE structure defines the component handle. The component > ++ * handle is used to access all of the component's public methods and also > ++ * contains pointers to the component's private data area. The component > ++ * handle is initialized by the OMX core (with help from the component) > ++ * during the process of loading the component. After the component is > ++ * successfully loaded, the application can safely access any of the > ++ * component's public functions (although some may return an error because > ++ * the state is inappropriate for the access). > ++ * > ++ * @ingroup comp > ++ */ > ++typedef struct OMX_COMPONENTTYPE > ++{ > ++ /** The size of this structure, in bytes. It is the responsibility > ++ of the allocator of this structure to fill in this value. Since > ++ this structure is allocated by the GetHandle function, this > ++ function will fill in this value. */ > ++ OMX_U32 nSize; > ++ > ++ /** nVersion is the version of the OMX specification that the structure > ++ is built against. It is the responsibility of the creator of this > ++ structure to initialize this value and every user of this structure > ++ should verify that it knows how to use the exact version of > ++ this structure found herein. */ > ++ OMX_VERSIONTYPE nVersion; > ++ > ++ /** pComponentPrivate is a pointer to the component private data area. > ++ This member is allocated and initialized by the component when the > ++ component is first loaded. The application should not access this > ++ data area. */ > ++ OMX_PTR pComponentPrivate; > ++ > ++ /** pApplicationPrivate is a pointer that is a parameter to the > ++ OMX_GetHandle method, and contains an application private value > ++ provided by the IL client. This application private data is > ++ returned to the IL Client by OMX in all callbacks */ > ++ OMX_PTR pApplicationPrivate; > ++ > ++ /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL > ++ specification for details on the GetComponentVersion method. > ++ */ > ++ OMX_ERRORTYPE (*GetComponentVersion)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_OUT OMX_STRING pComponentName, > ++ OMX_OUT OMX_VERSIONTYPE* pComponentVersion, > ++ OMX_OUT OMX_VERSIONTYPE* pSpecVersion, > ++ OMX_OUT OMX_UUIDTYPE* pComponentUUID); > ++ > ++ /** refer to OMX_SendCommand in OMX_core.h or the OMX IL > ++ specification for details on the SendCommand method. > ++ */ > ++ OMX_ERRORTYPE (*SendCommand)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_COMMANDTYPE Cmd, > ++ OMX_IN OMX_U32 nParam1, > ++ OMX_IN OMX_PTR pCmdData); > ++ > ++ /** refer to OMX_GetParameter in OMX_core.h or the OMX IL > ++ specification for details on the GetParameter method. > ++ */ > ++ OMX_ERRORTYPE (*GetParameter)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_INDEXTYPE nParamIndex, > ++ OMX_INOUT OMX_PTR pComponentParameterStructure); > ++ > ++ > ++ /** refer to OMX_SetParameter in OMX_core.h or the OMX IL > ++ specification for details on the SetParameter method. > ++ */ > ++ OMX_ERRORTYPE (*SetParameter)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_INDEXTYPE nIndex, > ++ OMX_IN OMX_PTR pComponentParameterStructure); > ++ > ++ > ++ /** refer to OMX_GetConfig in OMX_core.h or the OMX IL > ++ specification for details on the GetConfig method. > ++ */ > ++ OMX_ERRORTYPE (*GetConfig)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_INDEXTYPE nIndex, > ++ OMX_INOUT OMX_PTR pComponentConfigStructure); > ++ > ++ > ++ /** refer to OMX_SetConfig in OMX_core.h or the OMX IL > ++ specification for details on the SetConfig method. > ++ */ > ++ OMX_ERRORTYPE (*SetConfig)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_INDEXTYPE nIndex, > ++ OMX_IN OMX_PTR pComponentConfigStructure); > ++ > ++ > ++ /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL > ++ specification for details on the GetExtensionIndex method. > ++ */ > ++ OMX_ERRORTYPE (*GetExtensionIndex)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_STRING cParameterName, > ++ OMX_OUT OMX_INDEXTYPE* pIndexType); > ++ > ++ > ++ /** refer to OMX_GetState in OMX_core.h or the OMX IL > ++ specification for details on the GetState method. > ++ */ > ++ OMX_ERRORTYPE (*GetState)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_OUT OMX_STATETYPE* pState); > ++ > ++ > ++ /** The ComponentTunnelRequest method will interact with another OMX > ++ component to determine if tunneling is possible and to setup the > ++ tunneling. The return codes for this method can be used to > ++ determine if tunneling is not possible, or if tunneling is not > ++ supported. > ++ > ++ Base profile components (i.e. non-interop) do not support this > ++ method and should return OMX_ErrorNotImplemented > ++ > ++ The interop profile component MUST support tunneling to another > ++ interop profile component with a compatible port parameters. > ++ A component may also support proprietary communication. > ++ > ++ If proprietary communication is supported the negotiation of > ++ proprietary communication is done outside of OMX in a vendor > ++ specific way. It is only required that the proper result be > ++ returned and the details of how the setup is done is left > ++ to the component implementation. > ++ > ++ When this method is invoked when nPort in an output port, the > ++ component will: > ++ 1. Populate the pTunnelSetup structure with the output port's > ++ requirements and constraints for the tunnel. > ++ > ++ When this method is invoked when nPort in an input port, the > ++ component will: > ++ 1. Query the necessary parameters from the output port to > ++ determine if the ports are compatible for tunneling > ++ 2. If the ports are compatible, the component should store > ++ the tunnel step provided by the output port > ++ 3. Determine which port (either input or output) is the buffer > ++ supplier, and call OMX_SetParameter on the output port to > ++ indicate this selection. > ++ > ++ The component will return from this call within 5 msec. > ++ > ++ @param [in] hComp > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle method. > ++ @param [in] nPort > ++ nPort is used to select the port on the component to be used > ++ for tunneling. > ++ @param [in] hTunneledComp > ++ Handle of the component to tunnel with. This is the component > ++ handle returned by the call to the OMX_GetHandle method. When > ++ this parameter is 0x0 the component should setup the port for > ++ communication with the application / IL Client. > ++ @param [in] nPortOutput > ++ nPortOutput is used indicate the port the component should > ++ tunnel with. > ++ @param [in] pTunnelSetup > ++ Pointer to the tunnel setup structure. When nPort is an output port > ++ the component should populate the fields of this structure. When > ++ When nPort is an input port the component should review the setup > ++ provided by the component with the output port. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup tun > ++ */ > ++ > ++ OMX_ERRORTYPE (*ComponentTunnelRequest)( > ++ OMX_IN OMX_HANDLETYPE hComp, > ++ OMX_IN OMX_U32 nPort, > ++ OMX_IN OMX_HANDLETYPE hTunneledComp, > ++ OMX_IN OMX_U32 nTunneledPort, > ++ OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); > ++ > ++ /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL > ++ specification for details on the UseBuffer method. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*UseBuffer)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, > ++ OMX_IN OMX_U32 nPortIndex, > ++ OMX_IN OMX_PTR pAppPrivate, > ++ OMX_IN OMX_U32 nSizeBytes, > ++ OMX_IN OMX_U8* pBuffer); > ++ > ++ /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL > ++ specification for details on the AllocateBuffer method. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*AllocateBuffer)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, > ++ OMX_IN OMX_U32 nPortIndex, > ++ OMX_IN OMX_PTR pAppPrivate, > ++ OMX_IN OMX_U32 nSizeBytes); > ++ > ++ /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL > ++ specification for details on the FreeBuffer method. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*FreeBuffer)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_U32 nPortIndex, > ++ OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); > ++ > ++ /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL > ++ specification for details on the EmptyThisBuffer method. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*EmptyThisBuffer)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); > ++ > ++ /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL > ++ specification for details on the FillThisBuffer method. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*FillThisBuffer)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); > ++ > ++ /** The SetCallbacks method is used by the core to specify the callback > ++ structure from the application to the component. This is a blocking > ++ call. The component will return from this call within 5 msec. > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @param [in] pCallbacks > ++ pointer to an OMX_CALLBACKTYPE structure used to provide the > ++ callback information to the component > ++ @param [in] pAppData > ++ pointer to an application defined value. It is anticipated that > ++ the application will pass a pointer to a data structure or a "this > ++ pointer" in this area to allow the callback (in the application) > ++ to determine the context of the call > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ */ > ++ OMX_ERRORTYPE (*SetCallbacks)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_CALLBACKTYPE* pCallbacks, > ++ OMX_IN OMX_PTR pAppData); > ++ > ++ /** ComponentDeInit method is used to deinitialize the component > ++ providing a means to free any resources allocated at component > ++ initialization. NOTE: After this call the component handle is > ++ not valid for further use. > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ */ > ++ OMX_ERRORTYPE (*ComponentDeInit)( > ++ OMX_IN OMX_HANDLETYPE hComponent); > ++ > ++ /** @ingroup buf */ > ++ OMX_ERRORTYPE (*UseEGLImage)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, > ++ OMX_IN OMX_U32 nPortIndex, > ++ OMX_IN OMX_PTR pAppPrivate, > ++ OMX_IN void* eglImage); > ++ > ++ OMX_ERRORTYPE (*ComponentRoleEnum)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_OUT OMX_U8 *cRole, > ++ OMX_IN OMX_U32 nIndex); > ++ > ++} OMX_COMPONENTTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_ContentPipe.h b/usr/include/OpenMAX/il/OMX_ContentPipe.h > +--- a/usr/include/OpenMAX/il/OMX_ContentPipe.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_ContentPipe.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,195 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_ContentPipe.h - OpenMax IL version 1.1.2 > ++ * The OMX_ContentPipe header file contains the definitions used to define > ++ * the public interface for content piples. This header file is intended to > ++ * be used by the component. > ++ */ > ++ > ++#ifndef OMX_CONTENTPIPE_H > ++#define OMX_CONTENTPIPE_H > ++ > ++#ifndef KD_EACCES > ++/* OpenKODE error codes. CPResult values may be zero (indicating success > ++ or one of the following values) */ > ++#define KD_EACCES (1) > ++#define KD_EADDRINUSE (2) > ++#define KD_EAGAIN (5) > ++#define KD_EBADF (7) > ++#define KD_EBUSY (8) > ++#define KD_ECONNREFUSED (9) > ++#define KD_ECONNRESET (10) > ++#define KD_EDEADLK (11) > ++#define KD_EDESTADDRREQ (12) > ++#define KD_ERANGE (35) > ++#define KD_EEXIST (13) > ++#define KD_EFBIG (14) > ++#define KD_EHOSTUNREACH (15) > ++#define KD_EINVAL (17) > ++#define KD_EIO (18) > ++#define KD_EISCONN (20) > ++#define KD_EISDIR (21) > ++#define KD_EMFILE (22) > ++#define KD_ENAMETOOLONG (23) > ++#define KD_ENOENT (24) > ++#define KD_ENOMEM (25) > ++#define KD_ENOSPC (26) > ++#define KD_ENOSYS (27) > ++#define KD_ENOTCONN (28) > ++#define KD_EPERM (33) > ++#define KD_ETIMEDOUT (36) > ++#define KD_EILSEQ (19) > ++#endif > ++ > ++/** Map types from OMX standard types only here so interface is as generic as possible. */ > ++typedef OMX_U32 CPresult; > ++typedef char * CPstring; > ++typedef void * CPhandle; > ++typedef OMX_U32 CPuint; > ++typedef OMX_S32 CPint; > ++typedef char CPbyte; > ++typedef OMX_BOOL CPbool; > ++ > ++/** enumeration of origin types used in the CP_PIPETYPE's Seek function > ++ * @ingroup cp > ++ */ > ++typedef enum CP_ORIGINTYPE { > ++ CP_OriginBegin, > ++ CP_OriginCur, > ++ CP_OriginEnd, > ++ CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ CP_OriginMax = 0X7FFFFFFF > ++} CP_ORIGINTYPE; > ++ > ++/** enumeration of contact access types used in the CP_PIPETYPE's Open function > ++ * @ingroup cp > ++ */ > ++typedef enum CP_ACCESSTYPE { > ++ CP_AccessRead, > ++ CP_AccessWrite, > ++ CP_AccessReadWrite , > ++ CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ CP_AccessMax = 0X7FFFFFFF > ++} CP_ACCESSTYPE; > ++ > ++/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function > ++ * @ingroup cp > ++ */ > ++typedef enum CP_CHECKBYTESRESULTTYPE > ++{ > ++ CP_CheckBytesOk, /**< There are@least the request number > ++ of bytes available */ > ++ CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes > ++ and presently lacks sufficient bytes. > ++ Client will be called when they are > ++ sufficient bytes are available. */ > ++ CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes > ++ but those available are less than those > ++ requested */ > ++ CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream > ++ and no more bytes are available. */ > ++ CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */ > ++ CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ CP_CheckBytesMax = 0X7FFFFFFF > ++} CP_CHECKBYTESRESULTTYPE; > ++ > ++/** enumeration of content pipe events sent to the client callback. > ++ * @ingroup cp > ++ */ > ++typedef enum CP_EVENTTYPE{ > ++ CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/ > ++ CP_Overflow, /** enumeration of content pipe events sent to the client callback*/ > ++ CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/ > ++ CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ CP_EventMax = 0X7FFFFFFF > ++} CP_EVENTTYPE; > ++ > ++/** content pipe definition > ++ * @ingroup cp > ++ */ > ++typedef struct CP_PIPETYPE > ++{ > ++ /** Open a content stream for reading or writing. */ > ++ CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess ); > ++ > ++ /** Close a content stream. */ > ++ CPresult (*Close)( CPhandle hContent ); > ++ > ++ /** Create a content source and open it for writing. */ > ++ CPresult (*Create)( CPhandle *hContent, CPstring szURI ); > ++ > ++ /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/ > ++ CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult ); > ++ > ++ /** Seek to certain position in the content relative to the specified origin. */ > ++ CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin); > ++ > ++ /** Retrieve the current position relative to the start of the content. */ > ++ CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition); > ++ > ++ /** Retrieve data of the specified size from the content stream (advance content pointer by size of data). > ++ Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */ > ++ CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize); > ++ > ++ /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes. > ++ Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also > ++ returns the size of the block actually read. Content pointer advances the by the returned size. > ++ Note: pipe provides pointer. This function is appropriate for large reads. The client must call > ++ ReleaseReadBuffer when done with buffer. > ++ > ++ In some cases the requested block may not reside in contiguous memory within the > ++ pipe implementation. For instance if the pipe leverages a circular buffer then the requested > ++ block may straddle the boundary of the circular buffer. By default a pipe implementation > ++ performs a copy in this case to provide the block to the pipe client in one contiguous buffer. > ++ If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory > ++ boundary. Here the client may retrieve the data in segments over successive calls. */ > ++ CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy); > ++ > ++ /** Release a buffer obtained by ReadBuffer back to the pipe. */ > ++ CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer); > ++ > ++ /** Write data of the specified size to the content (advance content pointer by size of data). > ++ Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */ > ++ CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize); > ++ > ++ /** Retrieve a buffer allocated by the pipe used to write data to the content. > ++ Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate > ++ for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/ > ++ CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize); > ++ > ++ /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the > ++ the contents of the buffer to content and advance content pointer by the size of the buffer */ > ++ CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize); > ++ > ++ /** Register a per-handle client callback with the content pipe. */ > ++ CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)); > ++ > ++} CP_PIPETYPE; > ++ > ++#endif > ++ > +diff -rupN a/usr/include/OpenMAX/il/OMX_CoreExt.h b/usr/include/OpenMAX/il/OMX_CoreExt.h > +--- a/usr/include/OpenMAX/il/OMX_CoreExt.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_CoreExt.h 2011-08-09 09:07:36.000000000 +0200 > +@@ -0,0 +1,73 @@ > ++/* > ++ * Copyright (c) 2010 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_CoreExt.h - OpenMax IL version 1.1.2 > ++ * The OMX_CoreExt header file contains extensions to the definitions used > ++ * by both the application and the component to access common items. > ++ */ > ++ > ++#ifndef OMX_CoreExt_h > ++#define OMX_CoreExt_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/* Each OMX header shall include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++/** Extensions to the standard IL errors. */ > ++typedef enum OMX_ERROREXTTYPE > ++{ > ++ OMX_ErrorInvalidMode = (OMX_S32) (OMX_ErrorKhronosExtensions + 0x00000001), > ++ OMX_ErrorExtMax = 0x7FFFFFFF > ++} OMX_ERROREXTTYPE; > ++ > ++ > ++/** Event type extensions. */ > ++typedef enum OMX_EVENTEXTTYPE > ++{ > ++ OMX_EventIndexSettingChanged = OMX_EventKhronosExtensions, /**< component signals the IL client of a change > ++ in a param, config, or extension */ > ++ OMX_EventExtMax = 0x7FFFFFFF > ++} OMX_EVENTEXTTYPE; > ++ > ++ > ++/** Enable or disable a callback event. */ > ++typedef struct OMX_CONFIG_CALLBACKREQUESTTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_INDEXTYPE nIndex; /**< the index the callback is requested for */ > ++ OMX_BOOL bEnable; /**< enable (OMX_TRUE) or disable (OMX_FALSE) the callback */ > ++} OMX_CONFIG_CALLBACKREQUESTTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif /* OMX_CoreExt_h */ > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Core.h b/usr/include/OpenMAX/il/OMX_Core.h > +--- a/usr/include/OpenMAX/il/OMX_Core.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Core.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,1431 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_Core.h - OpenMax IL version 1.1.2 > ++ * The OMX_Core header file contains the definitions used by both the > ++ * application and the component to access common items. > ++ */ > ++ > ++#ifndef OMX_Core_h > ++#define OMX_Core_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/* Each OMX header shall include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++ > ++ > ++/** The OMX_COMMANDTYPE enumeration is used to specify the action in the > ++ * OMX_SendCommand macro. > ++ * @ingroup core > ++ */ > ++typedef enum OMX_COMMANDTYPE > ++{ > ++ OMX_CommandStateSet, /**< Change the component state */ > ++ OMX_CommandFlush, /**< Flush the data queue(s) of a component */ > ++ OMX_CommandPortDisable, /**< Disable a port on a component. */ > ++ OMX_CommandPortEnable, /**< Enable a port on a component. */ > ++ OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */ > ++ OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_CommandMax = 0X7FFFFFFF > ++} OMX_COMMANDTYPE; > ++ > ++ > ++ > ++/** The OMX_STATETYPE enumeration is used to indicate or change the component > ++ * state. This enumeration reflects the current state of the component when > ++ * used with the OMX_GetState macro or becomes the parameter in a state change > ++ * command when used with the OMX_SendCommand macro. > ++ * > ++ * The component will be in the Loaded state after the component is initially > ++ * loaded into memory. In the Loaded state, the component is not allowed to > ++ * allocate or hold resources other than to build it's internal parameter > ++ * and configuration tables. The application will send one or more > ++ * SetParameters/GetParameters and SetConfig/GetConfig commands to the > ++ * component and the component will record each of these parameter and > ++ * configuration changes for use later. When the application sends the > ++ * Idle command, the component will acquire the resources needed for the > ++ * specified configuration and will transition to the idle state if the > ++ * allocation is successful. If the component cannot successfully > ++ * transition to the idle state for any reason, the state of the component > ++ * shall be fully rolled back to the Loaded state (e.g. all allocated > ++ * resources shall be released). When the component receives the command > ++ * to go to the Executing state, it shall begin processing buffers by > ++ * sending all input buffers it holds to the application. While > ++ * the component is in the Idle state, the application may also send the > ++ * Pause command. If the component receives the pause command while in the > ++ * Idle state, the component shall send all input buffers it holds to the > ++ * application, but shall not begin processing buffers. This will allow the > ++ * application to prefill buffers. > ++ * > ++ * @ingroup comp > ++ */ > ++ > ++typedef enum OMX_STATETYPE > ++{ > ++ OMX_StateInvalid, /**< component has detected that it's internal data > ++ structures are corrupted to the point that > ++ it cannot determine it's state properly */ > ++ OMX_StateLoaded, /**< component has been loaded but has not completed > ++ initialization. The OMX_SetParameter macro > ++ and the OMX_GetParameter macro are the only > ++ valid macros allowed to be sent to the > ++ component in this state. */ > ++ OMX_StateIdle, /**< component initialization has been completed > ++ successfully and the component is ready to > ++ to start. */ > ++ OMX_StateExecuting, /**< component has accepted the start command and > ++ is processing data (if data is available) */ > ++ OMX_StatePause, /**< component has received pause command */ > ++ OMX_StateWaitForResources, /**< component is waiting for resources, either after > ++ preemption or before it gets the resources requested. > ++ See specification for complete details. */ > ++ OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_StateMax = 0X7FFFFFFF > ++} OMX_STATETYPE; > ++ > ++/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These > ++ * errors should cover most of the common failure cases. However, > ++ * vendors are free to add additional error messages of their own as > ++ * long as they follow these rules: > ++ * 1. Vendor error messages shall be in the range of 0x90000000 to > ++ * 0x9000FFFF. > ++ * 2. Vendor error messages shall be defined in a header file provided > ++ * with the component. No error messages are allowed that are > ++ * not defined. > ++ */ > ++typedef enum OMX_ERRORTYPE > ++{ > ++ OMX_ErrorNone = 0, > ++ > ++ /** There were insufficient resources to perform the requested operation */ > ++ OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000, > ++ > ++ /** There was an error, but the cause of the error could not be determined */ > ++ OMX_ErrorUndefined = (OMX_S32) 0x80001001, > ++ > ++ /** The component name string was not valid */ > ++ OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002, > ++ > ++ /** No component with the specified name string was found */ > ++ OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003, > ++ > ++ /** The component specified did not have a "OMX_ComponentInit" or > ++ "OMX_ComponentDeInit entry point */ > ++ OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004, > ++ > ++ /** One or more parameters were not valid */ > ++ OMX_ErrorBadParameter = (OMX_S32) 0x80001005, > ++ > ++ /** The requested function is not implemented */ > ++ OMX_ErrorNotImplemented = (OMX_S32) 0x80001006, > ++ > ++ /** The buffer was emptied before the next buffer was ready */ > ++ OMX_ErrorUnderflow = (OMX_S32) 0x80001007, > ++ > ++ /** The buffer was not available when it was needed */ > ++ OMX_ErrorOverflow = (OMX_S32) 0x80001008, > ++ > ++ /** The hardware failed to respond as expected */ > ++ OMX_ErrorHardware = (OMX_S32) 0x80001009, > ++ > ++ /** The component is in the state OMX_StateInvalid */ > ++ OMX_ErrorInvalidState = (OMX_S32) 0x8000100A, > ++ > ++ /** Stream is found to be corrupt */ > ++ OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B, > ++ > ++ /** Ports being connected are not compatible */ > ++ OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C, > ++ > ++ /** Resources allocated to an idle component have been > ++ lost resulting in the component returning to the loaded state */ > ++ OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D, > ++ > ++ /** No more indicies can be enumerated */ > ++ OMX_ErrorNoMore = (OMX_S32) 0x8000100E, > ++ > ++ /** The component detected a version mismatch */ > ++ OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F, > ++ > ++ /** The component is not ready to return data at this time */ > ++ OMX_ErrorNotReady = (OMX_S32) 0x80001010, > ++ > ++ /** There was a timeout that occurred */ > ++ OMX_ErrorTimeout = (OMX_S32) 0x80001011, > ++ > ++ /** This error occurs when trying to transition into the state you are already in */ > ++ OMX_ErrorSameState = (OMX_S32) 0x80001012, > ++ > ++ /** Resources allocated to an executing or paused component have been > ++ preempted, causing the component to return to the idle state */ > ++ OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013, > ++ > ++ /** A non-supplier port sends this error to the IL client (via the EventHandler callback) > ++ during the allocation of buffers (on a transition from the LOADED to the IDLE state or > ++ on a port restart) when it deems that it has waited an unusually long time for the supplier > ++ to send it an allocated buffer via a UseBuffer call. */ > ++ OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014, > ++ > ++ /** A non-supplier port sends this error to the IL client (via the EventHandler callback) > ++ during the deallocation of buffers (on a transition from the IDLE to LOADED state or > ++ on a port stop) when it deems that it has waited an unusually long time for the supplier > ++ to request the deallocation of a buffer header via a FreeBuffer call. */ > ++ OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015, > ++ > ++ /** A supplier port sends this error to the IL client (via the EventHandler callback) > ++ during the stopping of a port (either on a transition from the IDLE to LOADED > ++ state or a port stop) when it deems that it has waited an unusually long time for > ++ the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */ > ++ OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016, > ++ > ++ /** Attempting a state transtion that is not allowed */ > ++ OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017, > ++ > ++ /* Attempting a command that is not allowed during the present state. */ > ++ OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018, > ++ > ++ /** The values encapsulated in the parameter or config structure are not supported. */ > ++ OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019, > ++ > ++ /** The parameter or config indicated by the given index is not supported. */ > ++ OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A, > ++ > ++ /** The port index supplied is incorrect. */ > ++ OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B, > ++ > ++ /** The port has lost one or more of its buffers and it thus unpopulated. */ > ++ OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C, > ++ > ++ /** Component suspended due to temporary loss of resources */ > ++ OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D, > ++ > ++ /** Component suspended due to an inability to acquire dynamic resources */ > ++ OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E, > ++ > ++ /** When the macroblock error reporting is enabled the component returns new error > ++ for every frame that has errors */ > ++ OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F, > ++ > ++ /** A component reports this error when it cannot parse or determine the format of an input stream. */ > ++ OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020, > ++ > ++ /** The content open operation failed. */ > ++ OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021, > ++ > ++ /** The content creation operation failed. */ > ++ OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022, > ++ > ++ /** Separate table information is being used */ > ++ OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023, > ++ > ++ /** Tunneling is unsupported by the component*/ > ++ OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024, > ++ > ++ OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_ErrorMax = 0x7FFFFFFF > ++} OMX_ERRORTYPE; > ++ > ++/** @ingroup core */ > ++typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent); > ++ > ++/** @ingroup core */ > ++typedef struct OMX_COMPONENTREGISTERTYPE > ++{ > ++ const char * pName; /* Component name, 128 byte limit (including '\0') applies */ > ++ OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */ > ++} OMX_COMPONENTREGISTERTYPE; > ++ > ++/** @ingroup core */ > ++extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[]; > ++ > ++/** @ingroup rpm */ > ++typedef struct OMX_PRIORITYMGMTTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nGroupPriority; /**< Priority of the component group */ > ++ OMX_U32 nGroupID; /**< ID of the component group */ > ++} OMX_PRIORITYMGMTTYPE; > ++ > ++/* Component name and Role names are limited to 128 characters including the terminating '\0'. */ > ++#define OMX_MAX_STRINGNAME_SIZE 128 > ++ > ++/** @ingroup comp */ > ++typedef struct OMX_PARAM_COMPONENTROLETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */ > ++} OMX_PARAM_COMPONENTROLETYPE; > ++ > ++/** End of Stream Buffer Flag: > ++ * > ++ * A component sets EOS when it has no more data to emit on a particular > ++ * output port. Thus an output port shall set EOS on the last buffer it > ++ * emits. A component's determination of when an output port should > ++ * cease sending data is implemenation specific. > ++ * @ingroup buf > ++ */ > ++ > ++#define OMX_BUFFERFLAG_EOS 0x00000001 > ++ > ++/** Start Time Buffer Flag: > ++ * > ++ * The source of a stream (e.g. a demux component) sets the STARTTIME > ++ * flag on the buffer that contains the starting timestamp for the > ++ * stream. The starting timestamp corresponds to the first data that > ++ * should be displayed at startup or after a seek. > ++ * The first timestamp of the stream is not necessarily the start time. > ++ * For instance, in the case of a seek to a particular video frame, > ++ * the target frame may be an interframe. Thus the first buffer of > ++ * the stream will be the intra-frame preceding the target frame and > ++ * the starttime will occur with the target frame (with any other > ++ * required frames required to reconstruct the target intervening). > ++ * > ++ * The STARTTIME flag is directly associated with the buffer's > ++ * timestamp ' thus its association to buffer data and its > ++ * propagation is identical to the timestamp's. > ++ * > ++ * When a Sync Component client receives a buffer with the > ++ * STARTTIME flag it shall perform a SetConfig on its sync port > ++ * using OMX_ConfigTimeClientStartTime and passing the buffer's > ++ * timestamp. > ++ * > ++ * @ingroup buf > ++ */ > ++ > ++#define OMX_BUFFERFLAG_STARTTIME 0x00000002 > ++ > ++ > ++ > ++/** Decode Only Buffer Flag: > ++ * > ++ * The source of a stream (e.g. a demux component) sets the DECODEONLY > ++ * flag on any buffer that should shall be decoded but should not be > ++ * displayed. This flag is used, for instance, when a source seeks to > ++ * a target interframe that requires the decode of frames preceding the > ++ * target to facilitate the target's reconstruction. In this case the > ++ * source would emit the frames preceding the target downstream > ++ * but mark them as decode only. > ++ * > ++ * The DECODEONLY is associated with buffer data and propagated in a > ++ * manner identical to the buffer timestamp. > ++ * > ++ * A component that renders data should ignore all buffers with > ++ * the DECODEONLY flag set. > ++ * > ++ * @ingroup buf > ++ */ > ++ > ++#define OMX_BUFFERFLAG_DECODEONLY 0x00000004 > ++ > ++ > ++/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt > ++ * @ingroup buf > ++ */ > ++ > ++#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008 > ++ > ++/* End of Frame: The buffer contains exactly one end of frame and no data > ++ * occurs after the end of frame. This flag is an optional hint. The absence > ++ * of this flag does not imply the absence of an end of frame within the buffer. > ++ * @ingroup buf > ++*/ > ++#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010 > ++ > ++/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame ' > ++ * a frame that has no dependency on any other frame information > ++ * @ingroup buf > ++ */ > ++#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 > ++ > ++/* Extra data present flag: there is extra data appended to the data stream > ++ * residing in the buffer > ++ * @ingroup buf > ++ */ > ++#define OMX_BUFFERFLAG_EXTRADATA 0x00000040 > ++ > ++/** Codec Config Buffer Flag: > ++* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an > ++* output port when all bytes in the buffer form part or all of a set of > ++* codec specific configuration data. Examples include SPS/PPS nal units > ++* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for > ++* OMX_AUDIO_CodingAAC. Any component that for a given stream sets > ++* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes > ++* with frame data in the same buffer, and shall send all buffers > ++* containing codec configuration bytes before any buffers containing > ++* frame data that those configurations bytes describe. > ++* If the stream format for a particular codec has a frame specific > ++* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or > ++* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as > ++* normal without setting OMX_BUFFERFLAG_CODECCONFIG. > ++ * @ingroup buf > ++ */ > ++#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 > ++ > ++ > ++ > ++/** @ingroup buf */ > ++typedef struct OMX_BUFFERHEADERTYPE > ++{ > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U8* pBuffer; /**< Pointer to actual block of memory > ++ that is acting as the buffer */ > ++ OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */ > ++ OMX_U32 nFilledLen; /**< number of bytes currently in the > ++ buffer */ > ++ OMX_U32 nOffset; /**< start offset of valid data in bytes from > ++ the start of the buffer */ > ++ OMX_PTR pAppPrivate; /**< pointer to any data the application > ++ wants to associate with this buffer */ > ++ OMX_PTR pPlatformPrivate; /**< pointer to any data the platform > ++ wants to associate with this buffer */ > ++ OMX_PTR pInputPortPrivate; /**< pointer to any data the input port > ++ wants to associate with this buffer */ > ++ OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port > ++ wants to associate with this buffer */ > ++ OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a > ++ mark event upon processing this buffer. */ > ++ OMX_PTR pMarkData; /**< Application specific data associated with > ++ the mark sent on a mark event to disambiguate > ++ this mark from others. */ > ++ OMX_U32 nTickCount; /**< Optional entry that the component and > ++ application can update with a tick count > ++ when they access the component. This > ++ value should be in microseconds. Since > ++ this is a value relative to an arbitrary > ++ starting point, this value cannot be used > ++ to determine absolute time. This is an > ++ optional entry and not all components > ++ will update it.*/ > ++ OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample > ++ starting at the first logical sample > ++ boundary in the buffer. Timestamps of > ++ successive samples within the buffer may > ++ be inferred by adding the duration of the > ++ of the preceding buffer to the timestamp > ++ of the preceding buffer.*/ > ++ OMX_U32 nFlags; /**< buffer specific flags */ > ++ OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using > ++ this buffer */ > ++ OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using > ++ this buffer */ > ++} OMX_BUFFERHEADERTYPE; > ++ > ++/** The OMX_EXTRADATATYPE enumeration is used to define the > ++ * possible extra data payload types. > ++ * NB: this enum is binary backwards compatible with the previous > ++ * OMX_EXTRADATA_QUANT define. This should be replaced with > ++ * OMX_ExtraDataQuantization. > ++ */ > ++typedef enum OMX_EXTRADATATYPE > ++{ > ++ OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */ > ++ OMX_ExtraDataQuantization, /**< The data payload contains quantization data */ > ++ OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_ExtraDataMax = 0x7FFFFFFF > ++} OMX_EXTRADATATYPE; > ++ > ++ > ++typedef struct OMX_OTHER_EXTRADATATYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_EXTRADATATYPE eType; /* Extra Data type */ > ++ OMX_U32 nDataSize; /* Size of the supporting data to follow */ > ++ OMX_U8 data[1]; /* Supporting data hint */ > ++} OMX_OTHER_EXTRADATATYPE; > ++ > ++/** @ingroup comp */ > ++typedef struct OMX_PORT_PARAM_TYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPorts; /**< The number of ports for this component */ > ++ OMX_U32 nStartPortNumber; /** first port number for this type of port */ > ++} OMX_PORT_PARAM_TYPE; > ++ > ++/** @ingroup comp */ > ++typedef enum OMX_EVENTTYPE > ++{ > ++ OMX_EventCmdComplete, /**< component has sucessfully completed a command */ > ++ OMX_EventError, /**< component has detected an error condition */ > ++ OMX_EventMark, /**< component has detected a buffer mark */ > ++ OMX_EventPortSettingsChanged, /**< component is reported a port settings change */ > ++ OMX_EventBufferFlag, /**< component has detected an EOS */ > ++ OMX_EventResourcesAcquired, /**< component has been granted resources and is > ++ automatically starting the state change from > ++ OMX_StateWaitForResources to OMX_StateIdle. */ > ++ OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */ > ++ OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */ > ++ OMX_EventPortFormatDetected, /**< Component has detected a supported format. */ > ++ OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_EventMax = 0x7FFFFFFF > ++} OMX_EVENTTYPE; > ++ > ++typedef struct OMX_CALLBACKTYPE > ++{ > ++ /** The EventHandler method is used to notify the application when an > ++ event of interest occurs. Events are defined in the OMX_EVENTTYPE > ++ enumeration. Please see that enumeration for details of what will > ++ be returned for each type of event. Callbacks should not return > ++ an error to the component, so if an error occurs, the application > ++ shall handle it internally. This is a blocking call. > ++ > ++ The application should return from this call within 5 msec to avoid > ++ blocking the component for an excessively long period of time. > ++ > ++ @param hComponent > ++ handle of the component to access. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @param pAppData > ++ pointer to an application defined value that was provided in the > ++ pAppData parameter to the OMX_GetHandle method for the component. > ++ This application defined value is provided so that the application > ++ can have a component specific context when receiving the callback. > ++ @param eEvent > ++ Event that the component wants to notify the application about. > ++ @param nData1 > ++ nData will be the OMX_ERRORTYPE for an error event and will be > ++ an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event. > ++ @param nData2 > ++ nData2 will hold further information related to the event. Can be OMX_STATETYPE for > ++ a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event. > ++ Default value is 0 if not used. ) > ++ @param pEventData > ++ Pointer to additional event-specific data (see spec for meaning). > ++ */ > ++ > ++ OMX_ERRORTYPE (*EventHandler)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_PTR pAppData, > ++ OMX_IN OMX_EVENTTYPE eEvent, > ++ OMX_IN OMX_U32 nData1, > ++ OMX_IN OMX_U32 nData2, > ++ OMX_IN OMX_PTR pEventData); > ++ > ++ /** The EmptyBufferDone method is used to return emptied buffers from an > ++ input port back to the application for reuse. This is a blocking call > ++ so the application should not attempt to refill the buffers during this > ++ call, but should queue them and refill them in another thread. There > ++ is no error return, so the application shall handle any errors generated > ++ internally. > ++ > ++ The application should return from this call within 5 msec. > ++ > ++ @param hComponent > ++ handle of the component to access. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @param pAppData > ++ pointer to an application defined value that was provided in the > ++ pAppData parameter to the OMX_GetHandle method for the component. > ++ This application defined value is provided so that the application > ++ can have a component specific context when receiving the callback. > ++ @param pBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer > ++ or AllocateBuffer indicating the buffer that was emptied. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*EmptyBufferDone)( > ++ OMX_IN OMX_HANDLETYPE hComponent, > ++ OMX_IN OMX_PTR pAppData, > ++ OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); > ++ > ++ /** The FillBufferDone method is used to return filled buffers from an > ++ output port back to the application for emptying and then reuse. > ++ This is a blocking call so the application should not attempt to > ++ empty the buffers during this call, but should queue the buffers > ++ and empty them in another thread. There is no error return, so > ++ the application shall handle any errors generated internally. The > ++ application shall also update the buffer header to indicate the > ++ number of bytes placed into the buffer. > ++ > ++ The application should return from this call within 5 msec. > ++ > ++ @param hComponent > ++ handle of the component to access. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @param pAppData > ++ pointer to an application defined value that was provided in the > ++ pAppData parameter to the OMX_GetHandle method for the component. > ++ This application defined value is provided so that the application > ++ can have a component specific context when receiving the callback. > ++ @param pBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer > ++ or AllocateBuffer indicating the buffer that was filled. > ++ @ingroup buf > ++ */ > ++ OMX_ERRORTYPE (*FillBufferDone)( > ++ OMX_OUT OMX_HANDLETYPE hComponent, > ++ OMX_OUT OMX_PTR pAppData, > ++ OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); > ++ > ++} OMX_CALLBACKTYPE; > ++ > ++/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier > ++ preference when tunneling between two ports. > ++ @ingroup tun buf > ++*/ > ++typedef enum OMX_BUFFERSUPPLIERTYPE > ++{ > ++ OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified, > ++ or don't care */ > ++ OMX_BufferSupplyInput, /**< input port supplies the buffers */ > ++ OMX_BufferSupplyOutput, /**< output port supplies the buffers */ > ++ OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_BufferSupplyMax = 0x7FFFFFFF > ++} OMX_BUFFERSUPPLIERTYPE; > ++ > ++ > ++/** buffer supplier parameter > ++ * @ingroup tun > ++ */ > ++typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */ > ++} OMX_PARAM_BUFFERSUPPLIERTYPE; > ++ > ++ > ++/**< indicates that buffers received by an input port of a tunnel > ++ may not modify the data in the buffers > ++ @ingroup tun > ++ */ > ++#define OMX_PORTTUNNELFLAG_READONLY 0x00000001 > ++ > ++ > ++/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output > ++ port to an input port as part the two ComponentTunnelRequest calls > ++ resulting from a OMX_SetupTunnel call from the IL Client. > ++ @ingroup tun > ++ */ > ++typedef struct OMX_TUNNELSETUPTYPE > ++{ > ++ OMX_U32 nTunnelFlags; /**< bit flags for tunneling */ > ++ OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */ > ++} OMX_TUNNELSETUPTYPE; > ++ > ++/* OMX Component headers is included to enable the core to use > ++ macros for functions into the component for OMX release 1.0. > ++ Developers should not access any structures or data from within > ++ the component header directly */ > ++/* TO BE REMOVED - #include */ > ++ > ++/** GetComponentVersion will return information about the component. > ++ This is a blocking call. This macro will go directly from the > ++ application to the component (via a core macro). The > ++ component will return from this call within 5 msec. > ++ @param [in] hComponent > ++ handle of component to execute the command > ++ @param [out] pComponentName > ++ pointer to an empty string of length 128 bytes. The component > ++ will write its name into this string. The name will be > ++ terminated by a single zero byte. The name of a component will > ++ be 127 bytes or less to leave room for the trailing zero byte. > ++ An example of a valid component name is "OMX.ABC.ChannelMixer\0". > ++ @param [out] pComponentVersion > ++ pointer to an OMX Version structure that the component will fill > ++ in. The component will fill in a value that indicates the > ++ component version. NOTE: the component version is NOT the same > ++ as the OMX Specification version (found in all structures). The > ++ component version is defined by the vendor of the component and > ++ its value is entirely up to the component vendor. > ++ @param [out] pSpecVersion > ++ pointer to an OMX Version structure that the component will fill > ++ in. The SpecVersion is the version of the specification that the > ++ component was built against. Please note that this value may or > ++ may not match the structure's version. For example, if the > ++ component was built against the 2.0 specification, but the > ++ application (which creates the structure is built against the > ++ 1.0 specification the versions would be different. > ++ @param [out] pComponentUUID > ++ pointer to the UUID of the component which will be filled in by > ++ the component. The UUID is a unique identifier that is set at > ++ RUN time for the component and is unique to each instantion of > ++ the component. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_GetComponentVersion( \ > ++ hComponent, \ > ++ pComponentName, \ > ++ pComponentVersion, \ > ++ pSpecVersion, \ > ++ pComponentUUID) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \ > ++ hComponent, \ > ++ pComponentName, \ > ++ pComponentVersion, \ > ++ pSpecVersion, \ > ++ pComponentUUID) /* Macro End */ > ++ > ++ > ++/** Send a command to the component. This call is a non-blocking call. > ++ The component should check the parameters and then queue the command > ++ to the component thread to be executed. The component thread shall > ++ send the EventHandler() callback at the conclusion of the command. > ++ This macro will go directly from the application to the component (via > ++ a core macro). The component will return from this call within 5 msec. > ++ > ++ When the command is "OMX_CommandStateSet" the component will queue a > ++ state transition to the new state idenfied in nParam. > ++ > ++ When the command is "OMX_CommandFlush", to flush a port's buffer queues, > ++ the command will force the component to return all buffers NOT CURRENTLY > ++ BEING PROCESSED to the application, in the order in which the buffers > ++ were received. > ++ > ++ When the command is "OMX_CommandPortDisable" or > ++ "OMX_CommandPortEnable", the component's port (given by the value of > ++ nParam) will be stopped or restarted. > ++ > ++ When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the > ++ pCmdData will point to a OMX_MARKTYPE structure containing the component > ++ handle of the component to examine the buffer chain for the mark. nParam1 > ++ contains the index of the port on which the buffer mark is applied. > ++ > ++ Specification text for more details. > ++ > ++ @param [in] hComponent > ++ handle of component to execute the command > ++ @param [in] Cmd > ++ Command for the component to execute > ++ @param [in] nParam > ++ Parameter for the command to be executed. When Cmd has the value > ++ OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has > ++ the value OMX_CommandFlush, value of nParam indicates which port(s) > ++ to flush. -1 is used to flush all ports a single port index will > ++ only flush that port. When Cmd has the value "OMX_CommandPortDisable" > ++ or "OMX_CommandPortEnable", the component's port is given by > ++ the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer" > ++ the components pot is given by the value of nParam. > ++ @param [in] pCmdData > ++ Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value > ++ "OMX_CommandMarkBuffer". > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_SendCommand( \ > ++ hComponent, \ > ++ Cmd, \ > ++ nParam, \ > ++ pCmdData) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \ > ++ hComponent, \ > ++ Cmd, \ > ++ nParam, \ > ++ pCmdData) /* Macro End */ > ++ > ++ > ++/** The OMX_GetParameter macro will get one of the current parameter > ++ settings from the component. This macro cannot only be invoked when > ++ the component is in the OMX_StateInvalid state. The nParamIndex > ++ parameter is used to indicate which structure is being requested from > ++ the component. The application shall allocate the correct structure > ++ and shall fill in the structure size and version information before > ++ invoking this macro. When the parameter applies to a port, the > ++ caller shall fill in the appropriate nPortIndex value indicating the > ++ port on which the parameter applies. If the component has not had > ++ any settings changed, then the component should return a set of > ++ valid DEFAULT parameters for the component. This is a blocking > ++ call. > ++ > ++ The component should return from this call within 20 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] nParamIndex > ++ Index of the structure to be filled. This value is from the > ++ OMX_INDEXTYPE enumeration. > ++ @param [in,out] pComponentParameterStructure > ++ Pointer to application allocated structure to be filled by the > ++ component. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_GetParameter( \ > ++ hComponent, \ > ++ nParamIndex, \ > ++ pComponentParameterStructure) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \ > ++ hComponent, \ > ++ nParamIndex, \ > ++ pComponentParameterStructure) /* Macro End */ > ++ > ++ > ++/** The OMX_SetParameter macro will send an initialization parameter > ++ structure to a component. Each structure shall be sent one at a time, > ++ in a separate invocation of the macro. This macro can only be > ++ invoked when the component is in the OMX_StateLoaded state, or the > ++ port is disabled (when the parameter applies to a port). The > ++ nParamIndex parameter is used to indicate which structure is being > ++ passed to the component. The application shall allocate the > ++ correct structure and shall fill in the structure size and version > ++ information (as well as the actual data) before invoking this macro. > ++ The application is free to dispose of this structure after the call > ++ as the component is required to copy any data it shall retain. This > ++ is a blocking call. > ++ > ++ The component should return from this call within 20 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] nIndex > ++ Index of the structure to be sent. This value is from the > ++ OMX_INDEXTYPE enumeration. > ++ @param [in] pComponentParameterStructure > ++ pointer to application allocated structure to be used for > ++ initialization by the component. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_SetParameter( \ > ++ hComponent, \ > ++ nParamIndex, \ > ++ pComponentParameterStructure) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \ > ++ hComponent, \ > ++ nParamIndex, \ > ++ pComponentParameterStructure) /* Macro End */ > ++ > ++ > ++/** The OMX_GetConfig macro will get one of the configuration structures > ++ from a component. This macro can be invoked anytime after the > ++ component has been loaded. The nParamIndex call parameter is used to > ++ indicate which structure is being requested from the component. The > ++ application shall allocate the correct structure and shall fill in the > ++ structure size and version information before invoking this macro. > ++ If the component has not had this configuration parameter sent before, > ++ then the component should return a set of valid DEFAULT values for the > ++ component. This is a blocking call. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] nIndex > ++ Index of the structure to be filled. This value is from the > ++ OMX_INDEXTYPE enumeration. > ++ @param [in,out] pComponentConfigStructure > ++ pointer to application allocated structure to be filled by the > ++ component. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++*/ > ++#define OMX_GetConfig( \ > ++ hComponent, \ > ++ nConfigIndex, \ > ++ pComponentConfigStructure) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \ > ++ hComponent, \ > ++ nConfigIndex, \ > ++ pComponentConfigStructure) /* Macro End */ > ++ > ++ > ++/** The OMX_SetConfig macro will send one of the configuration > ++ structures to a component. Each structure shall be sent one at a time, > ++ each in a separate invocation of the macro. This macro can be invoked > ++ anytime after the component has been loaded. The application shall > ++ allocate the correct structure and shall fill in the structure size > ++ and version information (as well as the actual data) before invoking > ++ this macro. The application is free to dispose of this structure after > ++ the call as the component is required to copy any data it shall retain. > ++ This is a blocking call. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] nConfigIndex > ++ Index of the structure to be sent. This value is from the > ++ OMX_INDEXTYPE enumeration above. > ++ @param [in] pComponentConfigStructure > ++ pointer to application allocated structure to be used for > ++ initialization by the component. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_SetConfig( \ > ++ hComponent, \ > ++ nConfigIndex, \ > ++ pComponentConfigStructure) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \ > ++ hComponent, \ > ++ nConfigIndex, \ > ++ pComponentConfigStructure) /* Macro End */ > ++ > ++ > ++/** The OMX_GetExtensionIndex macro will invoke a component to translate > ++ a vendor specific configuration or parameter string into an OMX > ++ structure index. There is no requirement for the vendor to support > ++ this command for the indexes already found in the OMX_INDEXTYPE > ++ enumeration (this is done to save space in small components). The > ++ component shall support all vendor supplied extension indexes not found > ++ in the master OMX_INDEXTYPE enumeration. This is a blocking call. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @param [in] cParameterName > ++ OMX_STRING that shall be less than 128 characters long including > ++ the trailing null byte. This is the string that will get > ++ translated by the component into a configuration index. > ++ @param [out] pIndexType > ++ a pointer to a OMX_INDEXTYPE to receive the index value. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_GetExtensionIndex( \ > ++ hComponent, \ > ++ cParameterName, \ > ++ pIndexType) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \ > ++ hComponent, \ > ++ cParameterName, \ > ++ pIndexType) /* Macro End */ > ++ > ++ > ++/** The OMX_GetState macro will invoke the component to get the current > ++ state of the component and place the state value into the location > ++ pointed to by pState. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [out] pState > ++ pointer to the location to receive the state. The value returned > ++ is one of the OMX_STATETYPE members > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp > ++ */ > ++#define OMX_GetState( \ > ++ hComponent, \ > ++ pState) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->GetState( \ > ++ hComponent, \ > ++ pState) /* Macro End */ > ++ > ++ > ++/** The OMX_UseBuffer macro will request that the component use > ++ a buffer (and allocate its own buffer header) already allocated > ++ by another component, or by the IL Client. This is a blocking > ++ call. > ++ > ++ The component should return from this call within 20 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [out] ppBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure used to receive the > ++ pointer to the buffer header > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++ > ++#define OMX_UseBuffer( \ > ++ hComponent, \ > ++ ppBufferHdr, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ nSizeBytes, \ > ++ pBuffer) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \ > ++ hComponent, \ > ++ ppBufferHdr, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ nSizeBytes, \ > ++ pBuffer) > ++ > ++ > ++/** The OMX_AllocateBuffer macro will request that the component allocate > ++ a new buffer and buffer header. The component will allocate the > ++ buffer and the buffer header and return a pointer to the buffer > ++ header. This is a blocking call. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [out] ppBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure used to receive > ++ the pointer to the buffer header > ++ @param [in] nPortIndex > ++ nPortIndex is used to select the port on the component the buffer will > ++ be used with. The port can be found by using the nPortIndex > ++ value as an index into the Port Definition array of the component. > ++ @param [in] pAppPrivate > ++ pAppPrivate is used to initialize the pAppPrivate member of the > ++ buffer header structure. > ++ @param [in] nSizeBytes > ++ size of the buffer to allocate. Used when bAllocateNew is true. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++#define OMX_AllocateBuffer( \ > ++ hComponent, \ > ++ ppBuffer, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ nSizeBytes) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \ > ++ hComponent, \ > ++ ppBuffer, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ nSizeBytes) /* Macro End */ > ++ > ++ > ++/** The OMX_FreeBuffer macro will release a buffer header from the component > ++ which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If > ++ the component allocated the buffer (see the OMX_UseBuffer macro) then > ++ the component shall free the buffer and buffer header. This is a > ++ blocking call. > ++ > ++ The component should return from this call within 20 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] nPortIndex > ++ nPortIndex is used to select the port on the component the buffer will > ++ be used with. > ++ @param [in] pBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer > ++ or AllocateBuffer. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++#define OMX_FreeBuffer( \ > ++ hComponent, \ > ++ nPortIndex, \ > ++ pBuffer) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \ > ++ hComponent, \ > ++ nPortIndex, \ > ++ pBuffer) /* Macro End */ > ++ > ++ > ++/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an > ++ input port of a component. The buffer will be emptied by the component > ++ and returned to the application via the EmptyBufferDone call back. > ++ This is a non-blocking call in that the component will record the buffer > ++ and return immediately and then empty the buffer, later, at the proper > ++ time. As expected, this macro may be invoked only while the component > ++ is in the OMX_StateExecuting. If nPortIndex does not specify an input > ++ port, the component shall return an error. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] pBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer > ++ or AllocateBuffer. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++#define OMX_EmptyThisBuffer( \ > ++ hComponent, \ > ++ pBuffer) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \ > ++ hComponent, \ > ++ pBuffer) /* Macro End */ > ++ > ++ > ++/** The OMX_FillThisBuffer macro will send an empty buffer to an > ++ output port of a component. The buffer will be filled by the component > ++ and returned to the application via the FillBufferDone call back. > ++ This is a non-blocking call in that the component will record the buffer > ++ and return immediately and then fill the buffer, later, at the proper > ++ time. As expected, this macro may be invoked only while the component > ++ is in the OMX_ExecutingState. If nPortIndex does not specify an output > ++ port, the component shall return an error. > ++ > ++ The component should return from this call within 5 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [in] pBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer > ++ or AllocateBuffer. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++#define OMX_FillThisBuffer( \ > ++ hComponent, \ > ++ pBuffer) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \ > ++ hComponent, \ > ++ pBuffer) /* Macro End */ > ++ > ++ > ++ > ++/** The OMX_UseEGLImage macro will request that the component use > ++ a EGLImage provided by EGL (and allocate its own buffer header) > ++ This is a blocking call. > ++ > ++ The component should return from this call within 20 msec. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the OMX_GetHandle function. > ++ @param [out] ppBuffer > ++ pointer to an OMX_BUFFERHEADERTYPE structure used to receive the > ++ pointer to the buffer header. Note that the memory location used > ++ for this buffer is NOT visible to the IL Client. > ++ @param [in] nPortIndex > ++ nPortIndex is used to select the port on the component the buffer will > ++ be used with. The port can be found by using the nPortIndex > ++ value as an index into the Port Definition array of the component. > ++ @param [in] pAppPrivate > ++ pAppPrivate is used to initialize the pAppPrivate member of the > ++ buffer header structure. > ++ @param [in] eglImage > ++ eglImage contains the handle of the EGLImage to use as a buffer on the > ++ specified port. The component is expected to validate properties of > ++ the EGLImage against the configuration of the port to ensure the component > ++ can use the EGLImage as a buffer. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup comp buf > ++ */ > ++#define OMX_UseEGLImage( \ > ++ hComponent, \ > ++ ppBufferHdr, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ eglImage) \ > ++ ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \ > ++ hComponent, \ > ++ ppBufferHdr, \ > ++ nPortIndex, \ > ++ pAppPrivate, \ > ++ eglImage) > ++ > ++/** The OMX_Init method is used to initialize the OMX core. It shall be the > ++ first call made into OMX and it should only be executed one time without > ++ an interviening OMX_Deinit call. > ++ > ++ The core should return from this call within 20 msec. > ++ > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void); > ++ > ++ > ++/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be > ++ the last call made into OMX. In the event that the core determines that > ++ thare are components loaded when this call is made, the core may return > ++ with an error rather than try to unload the components. > ++ > ++ The core should return from this call within 20 msec. > ++ > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void); > ++ > ++ > ++/** The OMX_ComponentNameEnum method will enumerate through all the names of > ++ recognised valid components in the system. This function is provided > ++ as a means to detect all the components in the system run-time. There is > ++ no strict ordering to the enumeration order of component names, although > ++ each name will only be enumerated once. If the OMX core supports run-time > ++ installation of new components, it is only requried to detect newly > ++ installed components when the first call to enumerate component names > ++ is made (i.e. when nIndex is 0x0). > ++ > ++ The core should return from this call in 20 msec. > ++ > ++ @param [out] cComponentName > ++ pointer to a null terminated string with the component name. The > ++ names of the components are strings less than 127 bytes in length > ++ plus the trailing null for a maximum size of 128 bytes. An example > ++ of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are > ++ assigned by the vendor, but shall start with "OMX." and then have > ++ the Vendor designation next. > ++ @param [in] nNameLength > ++ number of characters in the cComponentName string. With all > ++ component name strings restricted to less than 128 characters > ++ (including the trailing null) it is recomended that the caller > ++ provide a input string for the cComponentName of 128 characters. > ++ @param [in] nIndex > ++ number containing the enumeration index for the component. > ++ Multiple calls to OMX_ComponentNameEnum with increasing values > ++ of nIndex will enumerate through the component names in the > ++ system until OMX_ErrorNoMore is returned. The value of nIndex > ++ is 0 to (N-1), where N is the number of valid installed components > ++ in the system. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. When the value of nIndex exceeds the number of > ++ components in the system minus 1, OMX_ErrorNoMore will be > ++ returned. Otherwise the appropriate OMX error will be returned. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum( > ++ OMX_OUT OMX_STRING cComponentName, > ++ OMX_IN OMX_U32 nNameLength, > ++ OMX_IN OMX_U32 nIndex); > ++ > ++ > ++/** The OMX_GetHandle method will locate the component specified by the > ++ component name given, load that component into memory and then invoke > ++ the component's methods to create an instance of the component. > ++ > ++ The core should return from this call within 20 msec. > ++ > ++ @param [out] pHandle > ++ pointer to an OMX_HANDLETYPE pointer to be filled in by this method. > ++ @param [in] cComponentName > ++ pointer to a null terminated string with the component name. The > ++ names of the components are strings less than 127 bytes in length > ++ plus the trailing null for a maximum size of 128 bytes. An example > ++ of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are > ++ assigned by the vendor, but shall start with "OMX." and then have > ++ the Vendor designation next. > ++ @param [in] pAppData > ++ pointer to an application defined value that will be returned > ++ during callbacks so that the application can identify the source > ++ of the callback. > ++ @param [in] pCallBacks > ++ pointer to a OMX_CALLBACKTYPE structure that will be passed to the > ++ component to initialize it with. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle( > ++ OMX_OUT OMX_HANDLETYPE* pHandle, > ++ OMX_IN OMX_STRING cComponentName, > ++ OMX_IN OMX_PTR pAppData, > ++ OMX_IN OMX_CALLBACKTYPE* pCallBacks); > ++ > ++ > ++/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle > ++ method. If the component reference count goes to zero, the component will > ++ be unloaded from memory. > ++ > ++ The core should return from this call within 20 msec when the component is > ++ in the OMX_StateLoaded state. > ++ > ++ @param [in] hComponent > ++ Handle of the component to be accessed. This is the component > ++ handle returned by the call to the GetHandle function. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle( > ++ OMX_IN OMX_HANDLETYPE hComponent); > ++ > ++ > ++ > ++/** The OMX_SetupTunnel method will handle the necessary calls to the components > ++ to setup the specified tunnel the two components. NOTE: This is > ++ an actual method (not a #define macro). This method will make calls into > ++ the component ComponentTunnelRequest method to do the actual tunnel > ++ connection. > ++ > ++ The ComponentTunnelRequest method on both components will be called. > ++ This method shall not be called unless the component is in the > ++ OMX_StateLoaded state except when the ports used for the tunnel are > ++ disabled. In this case, the component may be in the OMX_StateExecuting, > ++ OMX_StatePause, or OMX_StateIdle states. > ++ > ++ The core should return from this call within 20 msec. > ++ > ++ @param [in] hOutput > ++ Handle of the component to be accessed. Also this is the handle > ++ of the component whose port, specified in the nPortOutput parameter > ++ will be used the source for the tunnel. This is the component handle > ++ returned by the call to the OMX_GetHandle function. There is a > ++ requirement that hOutput be the source for the data when > ++ tunelling (i.e. nPortOutput is an output port). If 0x0, the component > ++ specified in hInput will have it's port specified in nPortInput > ++ setup for communication with the application / IL client. > ++ @param [in] nPortOutput > ++ nPortOutput is used to select the source port on component to be > ++ used in the tunnel. > ++ @param [in] hInput > ++ This is the component to setup the tunnel with. This is the handle > ++ of the component whose port, specified in the nPortInput parameter > ++ will be used the destination for the tunnel. This is the component handle > ++ returned by the call to the OMX_GetHandle function. There is a > ++ requirement that hInput be the destination for the data when > ++ tunelling (i.e. nPortInut is an input port). If 0x0, the component > ++ specified in hOutput will have it's port specified in nPortPOutput > ++ setup for communication with the application / IL client. > ++ @param [in] nPortInput > ++ nPortInput is used to select the destination port on component to be > ++ used in the tunnel. > ++ @return OMX_ERRORTYPE > ++ If the command successfully executes, the return code will be > ++ OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. > ++ When OMX_ErrorNotImplemented is returned, one or both components is > ++ a non-interop component and does not support tunneling. > ++ > ++ On failure, the ports of both components are setup for communication > ++ with the application / IL Client. > ++ @ingroup core tun > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel( > ++ OMX_IN OMX_HANDLETYPE hOutput, > ++ OMX_IN OMX_U32 nPortOutput, > ++ OMX_IN OMX_HANDLETYPE hInput, > ++ OMX_IN OMX_U32 nPortInput); > ++ > ++/** @ingroup cp */ > ++OMX_API OMX_ERRORTYPE OMX_GetContentPipe( > ++ OMX_OUT OMX_HANDLETYPE *hPipe, > ++ OMX_IN OMX_STRING szURI); > ++ > ++/** The OMX_GetComponentsOfRole method will return the number of components that support the given > ++ role and (if the compNames field is non-NULL) the names of those components. The call will fail if > ++ an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the > ++ client should: > ++ * first call this function with the compNames field NULL to determine the number of component names > ++ * second call this function with the compNames field pointing to an array of names allocated > ++ according to the number returned by the first call. > ++ > ++ The core should return from this call within 5 msec. > ++ > ++ @param [in] role > ++ This is generic standard component name consisting only of component class > ++ name and the type within that class (e.g. 'audio_decoder.aac'). > ++ @param [inout] pNumComps > ++ This is used both as input and output. > ++ > ++ If compNames is NULL, the input is ignored and the output specifies how many components support > ++ the given role. > ++ > ++ If compNames is not NULL, on input it bounds the size of the input structure and > ++ on output, it specifies the number of components string names listed within the compNames parameter. > ++ @param [inout] compNames > ++ If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts > ++ a list of the names of all physical components that implement the specified standard component name. > ++ Each name is NULL terminated. numComps indicates the number of names. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole ( > ++ OMX_IN OMX_STRING role, > ++ OMX_INOUT OMX_U32 *pNumComps, > ++ OMX_INOUT OMX_U8 **compNames); > ++ > ++/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given > ++ component and (if the roles field is non-NULL) the names of those roles. The call will fail if > ++ an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the > ++ client should: > ++ * first call this function with the roles field NULL to determine the number of role names > ++ * second call this function with the roles field pointing to an array of names allocated > ++ according to the number returned by the first call. > ++ > ++ The core should return from this call within 5 msec. > ++ > ++ @param [in] compName > ++ This is the name of the component being queried about. > ++ @param [inout] pNumRoles > ++ This is used both as input and output. > ++ > ++ If roles is NULL, the input is ignored and the output specifies how many roles the component supports. > ++ > ++ If compNames is not NULL, on input it bounds the size of the input structure and > ++ on output, it specifies the number of roles string names listed within the roles parameter. > ++ @param [out] roles > ++ If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings > ++ which accepts a list of the names of all standard components roles implemented on the > ++ specified component name. numComps indicates the number of names. > ++ @ingroup core > ++ */ > ++OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent ( > ++ OMX_IN OMX_STRING compName, > ++ OMX_INOUT OMX_U32 *pNumRoles, > ++ OMX_OUT OMX_U8 **roles); > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > ++ > +diff -rupN a/usr/include/OpenMAX/il/OMX_ImageExt.h b/usr/include/OpenMAX/il/OMX_ImageExt.h > +--- a/usr/include/OpenMAX/il/OMX_ImageExt.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_ImageExt.h 2011-08-09 12:28:16.000000000 +0200 > +@@ -0,0 +1,55 @@ > ++/* > ++ * Copyright (c) 2011 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_ImageExt.h - OpenMax IL version 1.1.2 > ++ * The OMX_ImageExt header file contains extensions to the > ++ * definitions used by both the application and the component to > ++ * access image items. > ++ */ > ++ > ++#ifndef OMX_ImageExt_h > ++#define OMX_ImageExt_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/* Each OMX header shall include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++/** Enum for standard image codingtype extensions */ > ++typedef enum OMX_IMAGE_CODINGEXTTYPE { > ++ OMX_IMAGE_CodingExtUnused = OMX_IMAGE_CodingKhronosExtensions, > ++ OMX_IMAGE_CodingWEBP, /**< WebP image format */ > ++} OMX_IMAGE_CODINGEXTTYPE; > ++ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif /* OMX_ImageExt_h */ > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Image.h b/usr/include/OpenMAX/il/OMX_Image.h > +--- a/usr/include/OpenMAX/il/OMX_Image.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Image.h 2011-08-16 11:38:40.000000000 +0200 > +@@ -0,0 +1,328 @@ > ++/** > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ */ > ++ > ++/** > ++ * @file OMX_Image.h - OpenMax IL version 1.1.2 > ++ * The structures needed by Image components to exchange parameters and > ++ * configuration data with the components. > ++ */ > ++#ifndef OMX_Image_h > ++#define OMX_Image_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/** > ++ * Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++ > ++/** @defgroup imaging OpenMAX IL Imaging Domain > ++ * @ingroup iv > ++ * Structures for OpenMAX IL Imaging domain > ++ * @{ > ++ */ > ++ > ++/** > ++ * Enumeration used to define the possible image compression coding. > ++ */ > ++typedef enum OMX_IMAGE_CODINGTYPE { > ++ OMX_IMAGE_CodingUnused, /**< Value when format is N/A */ > ++ OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */ > ++ OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */ > ++ OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */ > ++ OMX_IMAGE_CodingEXIF, /**< EXIF image format */ > ++ OMX_IMAGE_CodingTIFF, /**< TIFF image format */ > ++ OMX_IMAGE_CodingGIF, /**< Graphics image format */ > ++ OMX_IMAGE_CodingPNG, /**< PNG image format */ > ++ OMX_IMAGE_CodingLZW, /**< LZW image format */ > ++ OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */ > ++ OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_IMAGE_CodingMax = 0x7FFFFFFF > ++} OMX_IMAGE_CODINGTYPE; > ++ > ++ > ++/** > ++ * Data structure used to define an image path. The number of image paths > ++ * for input and output will vary by type of the image component. > ++ * > ++ * Input (aka Source) : Zero Inputs, one Output, > ++ * Splitter : One Input, 2 or more Outputs, > ++ * Processing Element : One Input, one output, > ++ * Mixer : 2 or more inputs, one output, > ++ * Output (aka Sink) : One Input, zero outputs. > ++ * > ++ * The PortDefinition structure is used to define all of the parameters > ++ * necessary for the compliant component to setup an input or an output > ++ * image path. If additional vendor specific data is required, it should > ++ * be transmitted to the component using the CustomCommand function. > ++ * Compliant components will prepopulate this structure with optimal > ++ * values during the OMX_GetParameter() command. > ++ * > ++ * STRUCT MEMBERS: > ++ * cMIMEType : MIME type of data for the port > ++ * pNativeRender : Platform specific reference for a display if a > ++ * sync, otherwise this field is 0 > ++ * nFrameWidth : Width of frame to be used on port if > ++ * uncompressed format is used. Use 0 for > ++ * unknown, don't care or variable > ++ * nFrameHeight : Height of frame to be used on port if > ++ * uncompressed format is used. Use 0 for > ++ * unknown, don't care or variable > ++ * nStride : Number of bytes per span of an image (i.e. > ++ * indicates the number of bytes to get from > ++ * span N to span N+1, where negative stride > ++ * indicates the image is bottom up > ++ * nSliceHeight : Height used when encoding in slices > ++ * bFlagErrorConcealment : Turns on error concealment if it is supported by > ++ * the OMX component > ++ * eCompressionFormat : Compression format used in this instance of > ++ * the component. When OMX_IMAGE_CodingUnused is > ++ * specified, eColorFormat is valid > ++ * eColorFormat : Decompressed format used by this component > ++ * pNativeWindow : Platform specific reference for a window object if a > ++ * display sink , otherwise this field is 0x0. > ++ */ > ++typedef struct OMX_IMAGE_PORTDEFINITIONTYPE { > ++ OMX_STRING cMIMEType; > ++ OMX_NATIVE_DEVICETYPE pNativeRender; > ++ OMX_U32 nFrameWidth; > ++ OMX_U32 nFrameHeight; > ++ OMX_S32 nStride; > ++ OMX_U32 nSliceHeight; > ++ OMX_BOOL bFlagErrorConcealment; > ++ OMX_IMAGE_CODINGTYPE eCompressionFormat; > ++ OMX_COLOR_FORMATTYPE eColorFormat; > ++ OMX_NATIVE_WINDOWTYPE pNativeWindow; > ++} OMX_IMAGE_PORTDEFINITIONTYPE; > ++ > ++ > ++/** > ++ * Port format parameter. This structure is used to enumerate the various > ++ * data input/output format supported by the port. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Indicates which port to set > ++ * nIndex : Indicates the enumeration index for the format from > ++ * 0x0 to N-1 > ++ * eCompressionFormat : Compression format used in this instance of the > ++ * component. When OMX_IMAGE_CodingUnused is specified, > ++ * eColorFormat is valid > ++ * eColorFormat : Decompressed format used by this component > ++ */ > ++typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nIndex; > ++ OMX_IMAGE_CODINGTYPE eCompressionFormat; > ++ OMX_COLOR_FORMATTYPE eColorFormat; > ++} OMX_IMAGE_PARAM_PORTFORMATTYPE; > ++ > ++ > ++/** > ++ * Flash control type > ++ * > ++ * ENUMS > ++ * Torch : Flash forced constantly on > ++ */ > ++typedef enum OMX_IMAGE_FLASHCONTROLTYPE { > ++ OMX_IMAGE_FlashControlOn = 0, > ++ OMX_IMAGE_FlashControlOff, > ++ OMX_IMAGE_FlashControlAuto, > ++ OMX_IMAGE_FlashControlRedEyeReduction, > ++ OMX_IMAGE_FlashControlFillin, > ++ OMX_IMAGE_FlashControlTorch, > ++ OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_IMAGE_FlashControlMax = 0x7FFFFFFF > ++} OMX_IMAGE_FLASHCONTROLTYPE; > ++ > ++ > ++/** > ++ * Flash control configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eFlashControl : Flash control type > ++ */ > ++typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_IMAGE_FLASHCONTROLTYPE eFlashControl; > ++} OMX_IMAGE_PARAM_FLASHCONTROLTYPE; > ++ > ++ > ++/** > ++ * Focus control type > ++ */ > ++typedef enum OMX_IMAGE_FOCUSCONTROLTYPE { > ++ OMX_IMAGE_FocusControlOn = 0, > ++ OMX_IMAGE_FocusControlOff, > ++ OMX_IMAGE_FocusControlAuto, > ++ OMX_IMAGE_FocusControlAutoLock, > ++ OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_IMAGE_FocusControlMax = 0x7FFFFFFF > ++} OMX_IMAGE_FOCUSCONTROLTYPE; > ++ > ++ > ++/** > ++ * Focus control configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eFocusControl : Focus control > ++ * nFocusSteps : Focus can take on values from 0 mm to infinity. > ++ * Interest is only in number of steps over this range. > ++ * nFocusStepIndex : Current focus step index > ++ */ > ++typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl; > ++ OMX_U32 nFocusSteps; > ++ OMX_U32 nFocusStepIndex; > ++} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE; > ++ > ++ > ++/** > ++ * Q Factor for JPEG compression, which controls the tradeoff between image > ++ * quality and size. Q Factor provides a more simple means of controlling > ++ * JPEG compression quality, without directly programming Quantization > ++ * tables for chroma and luma > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1 > ++ * produces the smallest, worst quality images, and a factor > ++ * of 100 produces the largest, best quality images. A > ++ * typical default is 75 for small good quality images > ++ */ > ++typedef struct OMX_IMAGE_PARAM_QFACTORTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nQFactor; > ++} OMX_IMAGE_PARAM_QFACTORTYPE; > ++ > ++/** > ++ * Quantization table type > ++ */ > ++ > ++typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE { > ++ OMX_IMAGE_QuantizationTableLuma = 0, > ++ OMX_IMAGE_QuantizationTableChroma, > ++ OMX_IMAGE_QuantizationTableChromaCb, > ++ OMX_IMAGE_QuantizationTableChromaCr, > ++ OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF > ++} OMX_IMAGE_QUANTIZATIONTABLETYPE; > ++ > ++/** > ++ * JPEG quantization tables are used to determine DCT compression for > ++ * YUV data, as an alternative to specifying Q factor, providing exact > ++ * control of compression > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eQuantizationTable : Quantization table type > ++ * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored > ++ * in increasing columns then by rows of data (i.e. > ++ * row 1, ... row 8). Quantization values are in > ++ * the range 0-255 and stored in linear order > ++ * (i.e. the component will zig-zag the > ++ * quantization table data if required internally) > ++ */ > ++typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable; > ++ OMX_U8 nQuantizationMatrix[64]; > ++} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE; > ++ > ++ > ++/** > ++ * Huffman table type, the same Huffman table is applied for chroma and > ++ * luma component > ++ */ > ++typedef enum OMX_IMAGE_HUFFMANTABLETYPE { > ++ OMX_IMAGE_HuffmanTableAC = 0, > ++ OMX_IMAGE_HuffmanTableDC, > ++ OMX_IMAGE_HuffmanTableACLuma, > ++ OMX_IMAGE_HuffmanTableACChroma, > ++ OMX_IMAGE_HuffmanTableDCLuma, > ++ OMX_IMAGE_HuffmanTableDCChroma, > ++ OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF > ++} OMX_IMAGE_HUFFMANTABLETYPE; > ++ > ++/** > ++ * JPEG Huffman table > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eHuffmanTable : Huffman table type > ++ * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each > ++ * possible length > ++ * nHuffmanTable[256] : 0-255, the size used for AC and DC > ++ * HuffmanTable are 16 and 162 > ++ */ > ++typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable; > ++ OMX_U8 nNumberOfHuffmanCodeOfLength[16]; > ++ OMX_U8 nHuffmanTable[256]; > ++}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE; > ++ > ++/** @} */ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_IndexExt.h b/usr/include/OpenMAX/il/OMX_IndexExt.h > +--- a/usr/include/OpenMAX/il/OMX_IndexExt.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_IndexExt.h 2011-08-18 13:48:18.000000000 +0200 > +@@ -0,0 +1,90 @@ > ++/* > ++ * Copyright (c) 2010 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** @file OMX_IndexExt.h - OpenMax IL version 1.1.2 > ++ * The OMX_IndexExt header file contains extensions to the definitions > ++ * for both applications and components . > ++ */ > ++ > ++#ifndef OMX_IndexExt_h > ++#define OMX_IndexExt_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/* Each OMX header shall include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++ > ++/** Khronos standard extension indices. > ++ > ++This enum lists the current Khronos extension indices to OpenMAX IL. > ++*/ > ++typedef enum OMX_INDEXEXTTYPE { > ++ > ++ /* Component parameters and configurations */ > ++ OMX_IndexExtComponentStartUnused = OMX_IndexKhronosExtensions + 0x00100000, > ++ OMX_IndexConfigCallbackRequest, /**< reference: OMX_CONFIG_CALLBACKREQUESTTYPE */ > ++ OMX_IndexConfigCommitMode, /**< reference: OMX_CONFIG_COMMITMODETYPE */ > ++ OMX_IndexConfigCommit, /**< reference: OMX_CONFIG_COMMITTYPE */ > ++ > ++ /* Port parameters and configurations */ > ++ OMX_IndexExtPortStartUnused = OMX_IndexKhronosExtensions + 0x00200000, > ++ > ++ /* Audio parameters and configurations */ > ++ OMX_IndexExtAudioStartUnused = OMX_IndexKhronosExtensions + 0x00400000, > ++ > ++ /* Image parameters and configurations */ > ++ OMX_IndexExtImageStartUnused = OMX_IndexKhronosExtensions + 0x00500000, > ++ > ++ /* Video parameters and configurations */ > ++ OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000, > ++ OMX_IndexParamNalStreamFormatSupported, /**< reference: OMX_NALSTREAMFORMATTYPE */ > ++ OMX_IndexParamNalStreamFormat, /**< reference: OMX_NALSTREAMFORMATTYPE */ > ++ OMX_IndexParamNalStreamFormatSelect, /**< reference: OMX_NALSTREAMFORMATTYPE */ > ++ OMX_IndexParamVideoVp8, /**< reference: OMX_VIDEO_PARAM_VP8TYPE */ > ++ OMX_IndexConfigVideoVp8ReferenceFrame, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMETYPE */ > ++ OMX_IndexConfigVideoVp8ReferenceFrameType, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE */ > ++ > ++ /* Image & Video common configurations */ > ++ OMX_IndexExtCommonStartUnused = OMX_IndexKhronosExtensions + 0x00700000, > ++ > ++ /* Other configurations */ > ++ OMX_IndexExtOtherStartUnused = OMX_IndexKhronosExtensions + 0x00800000, > ++ > ++ /* Time configurations */ > ++ OMX_IndexExtTimeStartUnused = OMX_IndexKhronosExtensions + 0x00900000, > ++ > ++ OMX_IndexExtMax = 0x7FFFFFFF > ++} OMX_INDEXEXTTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif /* OMX_IndexExt_h */ > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Index.h b/usr/include/OpenMAX/il/OMX_Index.h > +--- a/usr/include/OpenMAX/il/OMX_Index.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Index.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,258 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** @file OMX_Index.h - OpenMax IL version 1.1.2 > ++ * The OMX_Index header file contains the definitions for both applications > ++ * and components . > ++ */ > ++ > ++ > ++#ifndef OMX_Index_h > ++#define OMX_Index_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/* Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++ > ++/** The OMX_INDEXTYPE enumeration is used to select a structure when either > ++ * getting or setting parameters and/or configuration data. Each entry in > ++ * this enumeration maps to an OMX specified structure. When the > ++ * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods > ++ * are used, the second parameter will always be an entry from this enumeration > ++ * and the third entry will be the structure shown in the comments for the entry. > ++ * For example, if the application is initializing a cropping function, the > ++ * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter > ++ * and would send a pointer to an initialized OMX_RECTTYPE structure as the > ++ * third parameter. > ++ * > ++ * The enumeration entries named with the OMX_Config prefix are sent using > ++ * the OMX_SetConfig command and the enumeration entries named with the > ++ * OMX_PARAM_ prefix are sent using the OMX_SetParameter command. > ++ */ > ++typedef enum OMX_INDEXTYPE { > ++ > ++ OMX_IndexComponentStartUnused = 0x01000000, > ++ OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ > ++ OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */ > ++ OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */ > ++ OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */ > ++ OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */ > ++ OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */ > ++ OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */ > ++ OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */ > ++ OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */ > ++ OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */ > ++ OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */ > ++ OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */ > ++ OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */ > ++ OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */ > ++ OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */ > ++ OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */ > ++ OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */ > ++ OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */ > ++ OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */ > ++ OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ > ++ OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ > ++ OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ > ++ OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */ > ++ > ++ OMX_IndexPortStartUnused = 0x02000000, > ++ OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */ > ++ OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */ > ++ OMX_IndexReservedStartUnused = 0x03000000, > ++ > ++ /* Audio parameters and configurations */ > ++ OMX_IndexAudioStartUnused = 0x04000000, > ++ OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */ > ++ OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */ > ++ OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */ > ++ OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */ > ++ OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */ > ++ OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */ > ++ OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */ > ++ OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */ > ++ OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */ > ++ OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */ > ++ OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */ > ++ OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */ > ++ OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */ > ++ OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */ > ++ OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */ > ++ OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */ > ++ OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */ > ++ OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */ > ++ OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */ > ++ OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */ > ++ OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */ > ++ OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */ > ++ OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */ > ++ OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */ > ++ OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */ > ++ OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */ > ++ OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */ > ++ > ++ OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */ > ++ OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */ > ++ OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */ > ++ OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */ > ++ OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */ > ++ OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */ > ++ OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */ > ++ OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */ > ++ OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */ > ++ OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */ > ++ OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */ > ++ OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */ > ++ OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */ > ++ OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */ > ++ OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */ > ++ OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */ > ++ OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */ > ++ OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */ > ++ OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */ > ++ OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */ > ++ > ++ /* Image specific parameters and configurations */ > ++ OMX_IndexImageStartUnused = 0x05000000, > ++ OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */ > ++ OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ > ++ OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */ > ++ OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */ > ++ OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */ > ++ OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */ > ++ OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ > ++ > ++ /* Video specific parameters and configurations */ > ++ OMX_IndexVideoStartUnused = 0x06000000, > ++ OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */ > ++ OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */ > ++ OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */ > ++ OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */ > ++ OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */ > ++ OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */ > ++ OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */ > ++ OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */ > ++ OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */ > ++ OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */ > ++ OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */ > ++ OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */ > ++ OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */ > ++ OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */ > ++ OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ > ++ OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ > ++ OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */ > ++ OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */ > ++ OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */ > ++ OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ > ++ OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ > ++ OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */ > ++ OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ > ++ OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */ > ++ OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */ > ++ OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */ > ++ > ++ /* Image & Video common Configurations */ > ++ OMX_IndexCommonStartUnused = 0x07000000, > ++ OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ > ++ OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */ > ++ OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */ > ++ OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */ > ++ OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ > ++ OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */ > ++ OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */ > ++ OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */ > ++ OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */ > ++ OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */ > ++ OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */ > ++ OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */ > ++ OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */ > ++ OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ > ++ OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ > ++ OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ > ++ OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/ > ++ OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */ > ++ OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */ > ++ OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */ > ++ OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */ > ++ OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */ > ++ OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */ > ++ OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */ > ++ OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */ > ++ OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */ > ++ OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */ > ++ OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */ > ++ OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */ > ++ OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */ > ++ OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */ > ++ OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */ > ++ OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */ > ++ OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */ > ++ > ++ /* Reserved Configuration range */ > ++ OMX_IndexOtherStartUnused = 0x08000000, > ++ OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */ > ++ OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */ > ++ OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */ > ++ > ++ > ++ /* Reserved Time range */ > ++ OMX_IndexTimeStartUnused = 0x09000000, > ++ OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */ > ++ OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */ > ++ OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */ > ++ OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ > ++ OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ > ++ OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ > ++ OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ > ++ OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */ > ++ OMX_IndexConfigTimeClientStartTime, /** ++ OMX_IndexConfigTimePosition, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */ > ++ OMX_IndexConfigTimeSeekMode, /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */ > ++ > ++ > ++ OMX_IndexKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ /* Vendor specific area */ > ++ OMX_IndexVendorStartUnused = 0x7F000000, > ++ /* Vendor specific structures should be in the range of 0x7F000000 > ++ to 0x7FFFFFFE. This range is not broken out by vendor, so > ++ private indexes are not guaranteed unique and therefore should > ++ only be sent to the appropriate component. */ > ++ > ++ OMX_IndexMax = 0x7FFFFFFF > ++ > ++} OMX_INDEXTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_IVCommon.h b/usr/include/OpenMAX/il/OMX_IVCommon.h > +--- a/usr/include/OpenMAX/il/OMX_IVCommon.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_IVCommon.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,920 @@ > ++/** > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** > ++ * @file OMX_IVCommon.h - OpenMax IL version 1.1.2 > ++ * The structures needed by Video and Image components to exchange > ++ * parameters and configuration data with the components. > ++ */ > ++#ifndef OMX_IVCommon_h > ++#define OMX_IVCommon_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/** > ++ * Each OMX header must include all required header files to allow the header > ++ * to compile without errors. The includes below are required for this header > ++ * file to compile successfully > ++ */ > ++ > ++#include > ++ > ++/** @defgroup iv OpenMAX IL Imaging and Video Domain > ++ * Common structures for OpenMAX IL Imaging and Video domains > ++ * @{ > ++ */ > ++ > ++ > ++/** > ++ * Enumeration defining possible uncompressed image/video formats. > ++ * > ++ * ENUMS: > ++ * Unused : Placeholder value when format is N/A > ++ * Monochrome : black and white > ++ * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0 > ++ * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0 > ++ * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0 > ++ * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0 > ++ * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0 > ++ * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0 > ++ * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0 > ++ * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0 > ++ * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0 > ++ * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0 > ++ * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0 > ++ * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0 > ++ * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0 > ++ * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0 > ++ * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0 > ++ * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally > ++ * YUV411PackedPlanar : packed per payload in planar slices > ++ * YUV420Planar : Three arrays Y,U,V. > ++ * YUV420PackedPlanar : packed per payload in planar slices > ++ * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V > ++ * YUV422Planar : Three arrays Y,U,V. > ++ * YUV422PackedPlanar : packed per payload in planar slices > ++ * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V > ++ * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr) > ++ * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb) > ++ * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY) > ++ * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY) > ++ * YUV444Interleaved : Each pixel contains equal parts YUV > ++ * RawBayer8bit : SMIA camera output format > ++ * RawBayer10bit : SMIA camera output format > ++ * RawBayer8bitcompressed : SMIA camera output format > ++ */ > ++typedef enum OMX_COLOR_FORMATTYPE { > ++ OMX_COLOR_FormatUnused, > ++ OMX_COLOR_FormatMonochrome, > ++ OMX_COLOR_Format8bitRGB332, > ++ OMX_COLOR_Format12bitRGB444, > ++ OMX_COLOR_Format16bitARGB4444, > ++ OMX_COLOR_Format16bitARGB1555, > ++ OMX_COLOR_Format16bitRGB565, > ++ OMX_COLOR_Format16bitBGR565, > ++ OMX_COLOR_Format18bitRGB666, > ++ OMX_COLOR_Format18bitARGB1665, > ++ OMX_COLOR_Format19bitARGB1666, > ++ OMX_COLOR_Format24bitRGB888, > ++ OMX_COLOR_Format24bitBGR888, > ++ OMX_COLOR_Format24bitARGB1887, > ++ OMX_COLOR_Format25bitARGB1888, > ++ OMX_COLOR_Format32bitBGRA8888, > ++ OMX_COLOR_Format32bitARGB8888, > ++ OMX_COLOR_FormatYUV411Planar, > ++ OMX_COLOR_FormatYUV411PackedPlanar, > ++ OMX_COLOR_FormatYUV420Planar, > ++ OMX_COLOR_FormatYUV420PackedPlanar, > ++ OMX_COLOR_FormatYUV420SemiPlanar, > ++ OMX_COLOR_FormatYUV422Planar, > ++ OMX_COLOR_FormatYUV422PackedPlanar, > ++ OMX_COLOR_FormatYUV422SemiPlanar, > ++ OMX_COLOR_FormatYCbYCr, > ++ OMX_COLOR_FormatYCrYCb, > ++ OMX_COLOR_FormatCbYCrY, > ++ OMX_COLOR_FormatCrYCbY, > ++ OMX_COLOR_FormatYUV444Interleaved, > ++ OMX_COLOR_FormatRawBayer8bit, > ++ OMX_COLOR_FormatRawBayer10bit, > ++ OMX_COLOR_FormatRawBayer8bitcompressed, > ++ OMX_COLOR_FormatL2, > ++ OMX_COLOR_FormatL4, > ++ OMX_COLOR_FormatL8, > ++ OMX_COLOR_FormatL16, > ++ OMX_COLOR_FormatL24, > ++ OMX_COLOR_FormatL32, > ++ OMX_COLOR_FormatYUV420PackedSemiPlanar, > ++ OMX_COLOR_FormatYUV422PackedSemiPlanar, > ++ OMX_COLOR_Format18BitBGR666, > ++ OMX_COLOR_Format24BitARGB6666, > ++ OMX_COLOR_Format24BitABGR6666, > ++ OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_COLOR_FormatMax = 0x7FFFFFFF > ++} OMX_COLOR_FORMATTYPE; > ++ > ++ > ++/** > ++ * Defines the matrix for conversion from RGB to YUV or vice versa. > ++ * iColorMatrix should be initialized with the fixed point values > ++ * used in converting between formats. > ++ */ > ++typedef struct OMX_CONFIG_COLORCONVERSIONTYPE { > ++ OMX_U32 nSize; /**< Size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ > ++ OMX_U32 nPortIndex; /**< Port that this struct applies to */ > ++ OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */ > ++ OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */ > ++}OMX_CONFIG_COLORCONVERSIONTYPE; > ++ > ++ > ++/** > ++ * Structure defining percent to scale each frame dimension. For example: > ++ * To make the width 50% larger, use fWidth = 1.5 and to make the width > ++ * 1/2 the original size, use fWidth = 0.5 > ++ */ > ++typedef struct OMX_CONFIG_SCALEFACTORTYPE { > ++ OMX_U32 nSize; /**< Size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ > ++ OMX_U32 nPortIndex; /**< Port that this struct applies to */ > ++ OMX_S32 xWidth; /**< Fixed point value stored as Q16 */ > ++ OMX_S32 xHeight; /**< Fixed point value stored as Q16 */ > ++}OMX_CONFIG_SCALEFACTORTYPE; > ++ > ++ > ++/** > ++ * Enumeration of possible image filter types > ++ */ > ++typedef enum OMX_IMAGEFILTERTYPE { > ++ OMX_ImageFilterNone, > ++ OMX_ImageFilterNoise, > ++ OMX_ImageFilterEmboss, > ++ OMX_ImageFilterNegative, > ++ OMX_ImageFilterSketch, > ++ OMX_ImageFilterOilPaint, > ++ OMX_ImageFilterHatch, > ++ OMX_ImageFilterGpen, > ++ OMX_ImageFilterAntialias, > ++ OMX_ImageFilterDeRing, > ++ OMX_ImageFilterSolarize, > ++ OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_ImageFilterMax = 0x7FFFFFFF > ++} OMX_IMAGEFILTERTYPE; > ++ > ++ > ++/** > ++ * Image filter configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eImageFilter : Image filter type enumeration > ++ */ > ++typedef struct OMX_CONFIG_IMAGEFILTERTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_IMAGEFILTERTYPE eImageFilter; > ++} OMX_CONFIG_IMAGEFILTERTYPE; > ++ > ++ > ++/** > ++ * Customized U and V for color enhancement > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bColorEnhancement : Enable/disable color enhancement > ++ * nCustomizedU : Practical values: 16-240, range: 0-255, value set for > ++ * U component > ++ * nCustomizedV : Practical values: 16-240, range: 0-255, value set for > ++ * V component > ++ */ > ++typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bColorEnhancement; > ++ OMX_U8 nCustomizedU; > ++ OMX_U8 nCustomizedV; > ++} OMX_CONFIG_COLORENHANCEMENTTYPE; > ++ > ++ > ++/** > ++ * Define color key and color key mask > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nARGBColor : 32bit Alpha, Red, Green, Blue Color > ++ * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels > ++ */ > ++typedef struct OMX_CONFIG_COLORKEYTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nARGBColor; > ++ OMX_U32 nARGBMask; > ++} OMX_CONFIG_COLORKEYTYPE; > ++ > ++ > ++/** > ++ * List of color blend types for pre/post processing > ++ * > ++ * ENUMS: > ++ * None : No color blending present > ++ * AlphaConstant : Function is (alpha_constant * src) + > ++ * (1 - alpha_constant) * dst) > ++ * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst) > ++ * Alternate : Function is alternating pixels from src and dst > ++ * And : Function is (src & dst) > ++ * Or : Function is (src | dst) > ++ * Invert : Function is ~src > ++ */ > ++typedef enum OMX_COLORBLENDTYPE { > ++ OMX_ColorBlendNone, > ++ OMX_ColorBlendAlphaConstant, > ++ OMX_ColorBlendAlphaPerPixel, > ++ OMX_ColorBlendAlternate, > ++ OMX_ColorBlendAnd, > ++ OMX_ColorBlendOr, > ++ OMX_ColorBlendInvert, > ++ OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_ColorBlendMax = 0x7FFFFFFF > ++} OMX_COLORBLENDTYPE; > ++ > ++ > ++/** > ++ * Color blend configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nRGBAlphaConstant : Constant global alpha values when global alpha is used > ++ * eColorBlend : Color blend type enumeration > ++ */ > ++typedef struct OMX_CONFIG_COLORBLENDTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nRGBAlphaConstant; > ++ OMX_COLORBLENDTYPE eColorBlend; > ++} OMX_CONFIG_COLORBLENDTYPE; > ++ > ++ > ++/** > ++ * Hold frame dimension > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nWidth : Frame width in pixels > ++ * nHeight : Frame height in pixels > ++ */ > ++typedef struct OMX_FRAMESIZETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nWidth; > ++ OMX_U32 nHeight; > ++} OMX_FRAMESIZETYPE; > ++ > ++ > ++/** > ++ * Rotation configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nRotation : +/- integer rotation value > ++ */ > ++typedef struct OMX_CONFIG_ROTATIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nRotation; > ++} OMX_CONFIG_ROTATIONTYPE; > ++ > ++ > ++/** > ++ * Possible mirroring directions for pre/post processing > ++ * > ++ * ENUMS: > ++ * None : No mirroring > ++ * Vertical : Vertical mirroring, flip on X axis > ++ * Horizontal : Horizontal mirroring, flip on Y axis > ++ * Both : Both vertical and horizontal mirroring > ++ */ > ++typedef enum OMX_MIRRORTYPE { > ++ OMX_MirrorNone = 0, > ++ OMX_MirrorVertical, > ++ OMX_MirrorHorizontal, > ++ OMX_MirrorBoth, > ++ OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_MirrorMax = 0x7FFFFFFF > ++} OMX_MIRRORTYPE; > ++ > ++ > ++/** > ++ * Mirroring configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eMirror : Mirror type enumeration > ++ */ > ++typedef struct OMX_CONFIG_MIRRORTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_MIRRORTYPE eMirror; > ++} OMX_CONFIG_MIRRORTYPE; > ++ > ++ > ++/** > ++ * Position information only > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nX : X coordinate for the point > ++ * nY : Y coordinate for the point > ++ */ > ++typedef struct OMX_CONFIG_POINTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nX; > ++ OMX_S32 nY; > ++} OMX_CONFIG_POINTTYPE; > ++ > ++ > ++/** > ++ * Frame size plus position > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nLeft : X Coordinate of the top left corner of the rectangle > ++ * nTop : Y Coordinate of the top left corner of the rectangle > ++ * nWidth : Width of the rectangle > ++ * nHeight : Height of the rectangle > ++ */ > ++typedef struct OMX_CONFIG_RECTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nLeft; > ++ OMX_S32 nTop; > ++ OMX_U32 nWidth; > ++ OMX_U32 nHeight; > ++} OMX_CONFIG_RECTTYPE; > ++ > ++ > ++/** > ++ * Deblocking state; it is required to be set up before starting the codec > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bDeblocking : Enable/disable deblocking mode > ++ */ > ++typedef struct OMX_PARAM_DEBLOCKINGTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bDeblocking; > ++} OMX_PARAM_DEBLOCKINGTYPE; > ++ > ++ > ++/** > ++ * Stabilization state > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bStab : Enable/disable frame stabilization state > ++ */ > ++typedef struct OMX_CONFIG_FRAMESTABTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bStab; > ++} OMX_CONFIG_FRAMESTABTYPE; > ++ > ++ > ++/** > ++ * White Balance control type > ++ * > ++ * STRUCT MEMBERS: > ++ * SunLight : Referenced in JSR-234 > ++ * Flash : Optimal for device's integrated flash > ++ */ > ++typedef enum OMX_WHITEBALCONTROLTYPE { > ++ OMX_WhiteBalControlOff = 0, > ++ OMX_WhiteBalControlAuto, > ++ OMX_WhiteBalControlSunLight, > ++ OMX_WhiteBalControlCloudy, > ++ OMX_WhiteBalControlShade, > ++ OMX_WhiteBalControlTungsten, > ++ OMX_WhiteBalControlFluorescent, > ++ OMX_WhiteBalControlIncandescent, > ++ OMX_WhiteBalControlFlash, > ++ OMX_WhiteBalControlHorizon, > ++ OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_WhiteBalControlMax = 0x7FFFFFFF > ++} OMX_WHITEBALCONTROLTYPE; > ++ > ++ > ++/** > ++ * White Balance control configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eWhiteBalControl : White balance enumeration > ++ */ > ++typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_WHITEBALCONTROLTYPE eWhiteBalControl; > ++} OMX_CONFIG_WHITEBALCONTROLTYPE; > ++ > ++ > ++/** > ++ * Exposure control type > ++ */ > ++typedef enum OMX_EXPOSURECONTROLTYPE { > ++ OMX_ExposureControlOff = 0, > ++ OMX_ExposureControlAuto, > ++ OMX_ExposureControlNight, > ++ OMX_ExposureControlBackLight, > ++ OMX_ExposureControlSpotLight, > ++ OMX_ExposureControlSports, > ++ OMX_ExposureControlSnow, > ++ OMX_ExposureControlBeach, > ++ OMX_ExposureControlLargeAperture, > ++ OMX_ExposureControlSmallApperture, > ++ OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_ExposureControlMax = 0x7FFFFFFF > ++} OMX_EXPOSURECONTROLTYPE; > ++ > ++ > ++/** > ++ * White Balance control configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eExposureControl : Exposure control enumeration > ++ */ > ++typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_EXPOSURECONTROLTYPE eExposureControl; > ++} OMX_CONFIG_EXPOSURECONTROLTYPE; > ++ > ++ > ++/** > ++ * Defines sensor supported mode. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nFrameRate : Single shot mode is indicated by a 0 > ++ * bOneShot : Enable for single shot, disable for streaming > ++ * sFrameSize : Framesize > ++ */ > ++typedef struct OMX_PARAM_SENSORMODETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nFrameRate; > ++ OMX_BOOL bOneShot; > ++ OMX_FRAMESIZETYPE sFrameSize; > ++} OMX_PARAM_SENSORMODETYPE; > ++ > ++ > ++/** > ++ * Defines contrast level > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nContrast : Values allowed for contrast -100 to 100, zero means no change > ++ */ > ++typedef struct OMX_CONFIG_CONTRASTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nContrast; > ++} OMX_CONFIG_CONTRASTTYPE; > ++ > ++ > ++/** > ++ * Defines brightness level > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nBrightness : 0-100% > ++ */ > ++typedef struct OMX_CONFIG_BRIGHTNESSTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nBrightness; > ++} OMX_CONFIG_BRIGHTNESSTYPE; > ++ > ++ > ++/** > ++ * Defines backlight level configuration for a video sink, e.g. LCD panel > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nBacklight : Values allowed for backlight 0-100% > ++ * nTimeout : Number of milliseconds before backlight automatically turns > ++ * off. A value of 0x0 disables backight timeout > ++ */ > ++typedef struct OMX_CONFIG_BACKLIGHTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nBacklight; > ++ OMX_U32 nTimeout; > ++} OMX_CONFIG_BACKLIGHTTYPE; > ++ > ++ > ++/** > ++ * Defines setting for Gamma > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nGamma : Values allowed for gamma -100 to 100, zero means no change > ++ */ > ++typedef struct OMX_CONFIG_GAMMATYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nGamma; > ++} OMX_CONFIG_GAMMATYPE; > ++ > ++ > ++/** > ++ * Define for setting saturation > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nSaturation : Values allowed for saturation -100 to 100, zero means > ++ * no change > ++ */ > ++typedef struct OMX_CONFIG_SATURATIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nSaturation; > ++} OMX_CONFIG_SATURATIONTYPE; > ++ > ++ > ++/** > ++ * Define for setting Lightness > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nLightness : Values allowed for lightness -100 to 100, zero means no > ++ * change > ++ */ > ++typedef struct OMX_CONFIG_LIGHTNESSTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_S32 nLightness; > ++} OMX_CONFIG_LIGHTNESSTYPE; > ++ > ++ > ++/** > ++ * Plane blend configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Index of input port associated with the plane. > ++ * nDepth : Depth of the plane in relation to the screen. Higher > ++ * numbered depths are "behind" lower number depths. > ++ * This number defaults to the Port Index number. > ++ * nAlpha : Transparency blending component for the entire plane. > ++ * See blending modes for more detail. > ++ */ > ++typedef struct OMX_CONFIG_PLANEBLENDTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nDepth; > ++ OMX_U32 nAlpha; > ++} OMX_CONFIG_PLANEBLENDTYPE; > ++ > ++ > ++/** > ++ * Define interlace type > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bEnable : Enable control variable for this functionality > ++ * (see below) > ++ * nInterleavePortIndex : Index of input or output port associated with > ++ * the interleaved plane. > ++ * pPlanarPortIndexes[4] : Index of input or output planar ports. > ++ */ > ++typedef struct OMX_PARAM_INTERLEAVETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bEnable; > ++ OMX_U32 nInterleavePortIndex; > ++} OMX_PARAM_INTERLEAVETYPE; > ++ > ++ > ++/** > ++ * Defines the picture effect used for an input picture > ++ */ > ++typedef enum OMX_TRANSITIONEFFECTTYPE { > ++ OMX_EffectNone, > ++ OMX_EffectFadeFromBlack, > ++ OMX_EffectFadeToBlack, > ++ OMX_EffectUnspecifiedThroughConstantColor, > ++ OMX_EffectDissolve, > ++ OMX_EffectWipe, > ++ OMX_EffectUnspecifiedMixOfTwoScenes, > ++ OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_EffectMax = 0x7FFFFFFF > ++} OMX_TRANSITIONEFFECTTYPE; > ++ > ++ > ++/** > ++ * Structure used to configure current transition effect > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eEffect : Effect to enable > ++ */ > ++typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_TRANSITIONEFFECTTYPE eEffect; > ++} OMX_CONFIG_TRANSITIONEFFECTTYPE; > ++ > ++ > ++/** > ++ * Defines possible data unit types for encoded video data. The data unit > ++ * types are used both for encoded video input for playback as well as > ++ * encoded video output from recording. > ++ */ > ++typedef enum OMX_DATAUNITTYPE { > ++ OMX_DataUnitCodedPicture, > ++ OMX_DataUnitVideoSegment, > ++ OMX_DataUnitSeveralSegments, > ++ OMX_DataUnitArbitraryStreamSection, > ++ OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_DataUnitMax = 0x7FFFFFFF > ++} OMX_DATAUNITTYPE; > ++ > ++ > ++/** > ++ * Defines possible encapsulation types for coded video data unit. The > ++ * encapsulation information is used both for encoded video input for > ++ * playback as well as encoded video output from recording. > ++ */ > ++typedef enum OMX_DATAUNITENCAPSULATIONTYPE { > ++ OMX_DataEncapsulationElementaryStream, > ++ OMX_DataEncapsulationGenericPayload, > ++ OMX_DataEncapsulationRtpPayload, > ++ OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_DataEncapsulationMax = 0x7FFFFFFF > ++} OMX_DATAUNITENCAPSULATIONTYPE; > ++ > ++ > ++/** > ++ * Structure used to configure the type of being decoded/encoded > ++ */ > ++typedef struct OMX_PARAM_DATAUNITTYPE { > ++ OMX_U32 nSize; /**< Size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_DATAUNITTYPE eUnitType; > ++ OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType; > ++} OMX_PARAM_DATAUNITTYPE; > ++ > ++ > ++/** > ++ * Defines dither types > ++ */ > ++typedef enum OMX_DITHERTYPE { > ++ OMX_DitherNone, > ++ OMX_DitherOrdered, > ++ OMX_DitherErrorDiffusion, > ++ OMX_DitherOther, > ++ OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_DitherMax = 0x7FFFFFFF > ++} OMX_DITHERTYPE; > ++ > ++ > ++/** > ++ * Structure used to configure current type of dithering > ++ */ > ++typedef struct OMX_CONFIG_DITHERTYPE { > ++ OMX_U32 nSize; /**< Size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_DITHERTYPE eDither; /**< Type of dithering to use */ > ++} OMX_CONFIG_DITHERTYPE; > ++ > ++typedef struct OMX_CONFIG_CAPTUREMODETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; /**< Port that this structure applies to */ > ++ OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture > ++ * data as fast as possible (otherwise obey port's frame rate). */ > ++ OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the > ++ * specified number of frames (otherwise the port does not > ++ * terminate the capture until instructed to do so by the client). > ++ * Even if set, the client may manually terminate the capture prior > ++ * to reaching the limit. */ > ++ OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only > ++ * valid if bFrameLimited is set). */ > ++} OMX_CONFIG_CAPTUREMODETYPE; > ++ > ++typedef enum OMX_METERINGTYPE { > ++ > ++ OMX_MeteringModeAverage, /**< Center-weighted average metering. */ > ++ OMX_MeteringModeSpot, /**< Spot (partial) metering. */ > ++ OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */ > ++ > ++ OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_EVModeMax = 0x7fffffff > ++} OMX_METERINGTYPE; > ++ > ++typedef struct OMX_CONFIG_EXPOSUREVALUETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_METERINGTYPE eMetering; > ++ OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */ > ++ OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */ > ++ OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */ > ++ OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */ > ++ OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */ > ++ OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */ > ++ OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */ > ++} OMX_CONFIG_EXPOSUREVALUETYPE; > ++ > ++/** > ++ * Focus region configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bCenter : Use center region as focus region of interest > ++ * bLeft : Use left region as focus region of interest > ++ * bRight : Use right region as focus region of interest > ++ * bTop : Use top region as focus region of interest > ++ * bBottom : Use bottom region as focus region of interest > ++ * bTopLeft : Use top left region as focus region of interest > ++ * bTopRight : Use top right region as focus region of interest > ++ * bBottomLeft : Use bottom left region as focus region of interest > ++ * bBottomRight : Use bottom right region as focus region of interest > ++ */ > ++typedef struct OMX_CONFIG_FOCUSREGIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bCenter; > ++ OMX_BOOL bLeft; > ++ OMX_BOOL bRight; > ++ OMX_BOOL bTop; > ++ OMX_BOOL bBottom; > ++ OMX_BOOL bTopLeft; > ++ OMX_BOOL bTopRight; > ++ OMX_BOOL bBottomLeft; > ++ OMX_BOOL bBottomRight; > ++} OMX_CONFIG_FOCUSREGIONTYPE; > ++ > ++/** > ++ * Focus Status type > ++ */ > ++typedef enum OMX_FOCUSSTATUSTYPE { > ++ OMX_FocusStatusOff = 0, > ++ OMX_FocusStatusRequest, > ++ OMX_FocusStatusReached, > ++ OMX_FocusStatusUnableToReach, > ++ OMX_FocusStatusLost, > ++ OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_FocusStatusMax = 0x7FFFFFFF > ++} OMX_FOCUSSTATUSTYPE; > ++ > ++/** > ++ * Focus status configuration > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eFocusStatus : Specifies the focus status > ++ * bCenterStatus : Use center region as focus region of interest > ++ * bLeftStatus : Use left region as focus region of interest > ++ * bRightStatus : Use right region as focus region of interest > ++ * bTopStatus : Use top region as focus region of interest > ++ * bBottomStatus : Use bottom region as focus region of interest > ++ * bTopLeftStatus : Use top left region as focus region of interest > ++ * bTopRightStatus : Use top right region as focus region of interest > ++ * bBottomLeftStatus : Use bottom left region as focus region of interest > ++ * bBottomRightStatus : Use bottom right region as focus region of interest > ++ */ > ++typedef struct OMX_PARAM_FOCUSSTATUSTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_FOCUSSTATUSTYPE eFocusStatus; > ++ OMX_BOOL bCenterStatus; > ++ OMX_BOOL bLeftStatus; > ++ OMX_BOOL bRightStatus; > ++ OMX_BOOL bTopStatus; > ++ OMX_BOOL bBottomStatus; > ++ OMX_BOOL bTopLeftStatus; > ++ OMX_BOOL bTopRightStatus; > ++ OMX_BOOL bBottomLeftStatus; > ++ OMX_BOOL bBottomRightStatus; > ++} OMX_PARAM_FOCUSSTATUSTYPE; > ++ > ++/** @} */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Other.h b/usr/include/OpenMAX/il/OMX_Other.h > +--- a/usr/include/OpenMAX/il/OMX_Other.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Other.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,337 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** @file OMX_Other.h - OpenMax IL version 1.1.2 > ++ * The structures needed by Other components to exchange > ++ * parameters and configuration data with the components. > ++ */ > ++ > ++#ifndef OMX_Other_h > ++#define OMX_Other_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/* Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++ > ++ > ++/** > ++ * Enumeration of possible data types which match to multiple domains or no > ++ * domain at all. For types which are vendor specific, a value above > ++ * OMX_OTHER_VENDORTSTART should be used. > ++ */ > ++typedef enum OMX_OTHER_FORMATTYPE { > ++ OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time, > ++ time deltas, etc */ > ++ OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power > ++ management, setting clocks? */ > ++ OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames > ++ dropped, etc */ > ++ OMX_OTHER_FormatBinary, /**< Arbitrary binary data */ > ++ OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific > ++ formats */ > ++ > ++ OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_OTHER_FormatMax = 0x7FFFFFFF > ++} OMX_OTHER_FORMATTYPE; > ++ > ++/** > ++ * Enumeration of seek modes. > ++ */ > ++typedef enum OMX_TIME_SEEKMODETYPE { > ++ OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation > ++ * of the requested seek position over > ++ * the actual seek position if it > ++ * results in a faster seek. */ > ++ OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek > ++ * position over an approximation > ++ * of the requested seek position even > ++ * if it results in a slower seek. */ > ++ OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_TIME_SeekModeMax = 0x7FFFFFFF > ++} OMX_TIME_SEEKMODETYPE; > ++ > ++/* Structure representing the seekmode of the component */ > ++typedef struct OMX_TIME_CONFIG_SEEKMODETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */ > ++} OMX_TIME_CONFIG_SEEKMODETYPE; > ++ > ++/** Structure representing a time stamp used with the following configs > ++ * on the Clock Component (CC): > ++ * > ++ * OMX_IndexConfigTimeCurrentWallTime: query of the CC?s current wall > ++ * time > ++ * OMX_IndexConfigTimeCurrentMediaTime: query of the CC?s current media > ++ * time > ++ * OMX_IndexConfigTimeCurrentAudioReference and > ++ * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference > ++ * clock sending SC its reference time > ++ * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends > ++ * this structure to the Clock Component via a SetConfig on its > ++ * client port when it receives a buffer with > ++ * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp > ++ * specified by that buffer for nStartTimestamp. > ++ * > ++ * It?s also used with the following config on components in general: > ++ * > ++ * OMX_IndexConfigTimePosition: IL client querying component position > ++ * (GetConfig) or commanding a component to seek to the given location > ++ * (SetConfig) > ++ */ > ++typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version > ++ * information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_TICKS nTimestamp; /**< timestamp .*/ > ++} OMX_TIME_CONFIG_TIMESTAMPTYPE; > ++ > ++/** Enumeration of possible reference clocks to the media time. */ > ++typedef enum OMX_TIME_UPDATETYPE { > ++ OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */ > ++ OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */ > ++ OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */ > ++ OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_TIME_UpdateMax = 0x7FFFFFFF > ++} OMX_TIME_UPDATETYPE; > ++ > ++/** Enumeration of possible reference clocks to the media time. */ > ++typedef enum OMX_TIME_REFCLOCKTYPE { > ++ OMX_TIME_RefClockNone, /**< Use no references. */ > ++ OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */ > ++ OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */ > ++ OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_TIME_RefClockMax = 0x7FFFFFFF > ++} OMX_TIME_REFCLOCKTYPE; > ++ > ++/** Enumeration of clock states. */ > ++typedef enum OMX_TIME_CLOCKSTATE { > ++ OMX_TIME_ClockStateRunning, /**< Clock running. */ > ++ OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the > ++ * prescribed clients emit their > ++ * start time. */ > ++ OMX_TIME_ClockStateStopped, /**< Clock stopped. */ > ++ OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_TIME_ClockStateMax = 0x7FFFFFFF > ++} OMX_TIME_CLOCKSTATE; > ++ > ++/** Structure representing a media time request to the clock component. > ++ * > ++ * A client component sends this structure to the Clock Component via a SetConfig > ++ * on its client port to specify a media timestamp the Clock Component > ++ * should emit. The Clock Component should fulfill the request by sending a > ++ * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested > ++ * timestamp. > ++ * > ++ * The client may require a media time request be fulfilled slightly > ++ * earlier than the media time specified. In this case the client specifies > ++ * an offset which is equal to the difference between wall time corresponding > ++ * to the requested media time and the wall time when it will be > ++ * fulfilled. > ++ * > ++ * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to > ++ * time events according to timestamps. If a client must perform an operation O at > ++ * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a > ++ * media time request at T (perhaps specifying an offset to ensure the request fulfillment > ++ * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE > ++ * structure back to the client component, the client may perform operation O (perhaps having > ++ * to wait a slight amount more time itself as specified by the return values). > ++ */ > ++ > ++typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< port that this structure applies to */ > ++ OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time > ++ * from others (e.g. the number of the frame to deliver). > ++ * Duplicated in the media time structure that fulfills > ++ * this request. A value of zero is reserved for time scale > ++ * updates. */ > ++ OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/ > ++ OMX_TICKS nOffset; /**< Amount of wall clock time by which this > ++ * request should be fulfilled early */ > ++} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE; > ++ > ++/**< Structure sent from the clock component client either when fulfilling > ++ * a media time request or when the time scale has changed. > ++ * > ++ * In the former case the Clock Component fills this structure and times its emission > ++ * to a client component (via the client port) according to the corresponding media > ++ * time request sent by the client. The Clock Component should time the emission to occur > ++ * when the requested timestamp matches the Clock Component's media time but also the > ++ * prescribed offset early. > ++ * > ++ * Upon scale changes the clock component clears the nClientPrivate data, sends the current > ++ * media time and sets the nScale to the new scale via the client port. It emits a > ++ * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to > ++ * alter processing to accomodate scaling. For instance a video component might skip inter-frames > ++ * in the case of extreme fastforward. Likewise an audio component might add or remove samples > ++ * from an audio frame to scale audio data. > ++ * > ++ * It is expected that some clock components may not be able to fulfill requests > ++ * at exactly the prescribed time. This is acceptable so long as the request is > ++ * fulfilled at least as early as described and not later. This structure provides > ++ * fields the client may use to wait for the remaining time. > ++ * > ++ * The client may use either the nOffset or nWallTimeAtMedia fields to determine the > ++ * wall time until the nMediaTimestamp actually occurs. In the latter case the > ++ * client can get a more accurate value for offset by getting the current wall > ++ * from the cloc component and subtracting it from nWallTimeAtMedia. > ++ */ > ++ > ++typedef struct OMX_TIME_MEDIATIMETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time > ++ * from others. Copied from the media time request. > ++ * A value of zero is reserved for time scale updates. */ > ++ OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */ > ++ OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was > ++ * requested then this is the current media time. */ > ++ OMX_TICKS nOffset; /**< Amount of wall clock time by which this > ++ * request was actually fulfilled early */ > ++ > ++ OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp. > ++ * A client may compare this value to current > ++ * media time obtained from the Clock Component to determine > ++ * the wall time until the media timestamp is really > ++ * current. */ > ++ OMX_S32 xScale; /**< Current media time scale in Q16 format. */ > ++ OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/ > ++ /**< State of the media time. */ > ++} OMX_TIME_MEDIATIMETYPE; > ++ > ++/** Structure representing the current media time scale factor. Applicable only to clock > ++ * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via > ++ * the clock component client ports. Upon recieving this config the clock component changes > ++ * the rate by which the media time increases or decreases effectively implementing trick modes. > ++ */ > ++typedef struct OMX_TIME_CONFIG_SCALETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_S32 xScale; /**< This is a value in Q16 format which is used for > ++ * scaling the media time */ > ++} OMX_TIME_CONFIG_SCALETYPE; > ++ > ++/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE?s nWaitMask field */ > ++#define OMX_CLOCKPORT0 0x00000001 > ++#define OMX_CLOCKPORT1 0x00000002 > ++#define OMX_CLOCKPORT2 0x00000004 > ++#define OMX_CLOCKPORT3 0x00000008 > ++#define OMX_CLOCKPORT4 0x00000010 > ++#define OMX_CLOCKPORT5 0x00000020 > ++#define OMX_CLOCKPORT6 0x00000040 > ++#define OMX_CLOCKPORT7 0x00000080 > ++ > ++/** Structure representing the current mode of the media clock. > ++ * IL Client uses this config to change or query the mode of the > ++ * media clock of the clock component. Applicable only to clock > ++ * component. > ++ * > ++ * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time > ++ * starts immediately at the prescribed start time. If > ++ * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores > ++ * the given nStartTime and waits for all clients specified in the > ++ * nWaitMask to send starttimes (via > ++ * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts > ++ * the media clock using the earliest start time supplied. */ > ++typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version > ++ * information */ > ++ OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */ > ++ OMX_TICKS nStartTime; /**< Start time of the media time. */ > ++ OMX_TICKS nOffset; /**< Time to offset the media time by > ++ * (e.g. preroll). Media time will be > ++ * reported to be nOffset ticks earlier. > ++ */ > ++ OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */ > ++} OMX_TIME_CONFIG_CLOCKSTATETYPE; > ++ > ++/** Structure representing the reference clock currently being used to > ++ * compute media time. IL client uses this config to change or query the > ++ * clock component's active reference clock */ > ++typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */ > ++} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE; > ++ > ++/** Descriptor for setting specifics of power type. > ++ * Note: this structure is listed for backwards compatibility. */ > ++typedef struct OMX_OTHER_CONFIG_POWERTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_BOOL bEnablePM; /**< Flag to enable Power Management */ > ++} OMX_OTHER_CONFIG_POWERTYPE; > ++ > ++ > ++/** Descriptor for setting specifics of stats type. > ++ * Note: this structure is listed for backwards compatibility. */ > ++typedef struct OMX_OTHER_CONFIG_STATSTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ /* what goes here */ > ++} OMX_OTHER_CONFIG_STATSTYPE; > ++ > ++ > ++/** > ++ * The PortDefinition structure is used to define all of the parameters > ++ * necessary for the compliant component to setup an input or an output other > ++ * path. > ++ */ > ++typedef struct OMX_OTHER_PORTDEFINITIONTYPE { > ++ OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ > ++} OMX_OTHER_PORTDEFINITIONTYPE; > ++ > ++/** Port format parameter. This structure is used to enumerate > ++ * the various data input/output format supported by the port. > ++ */ > ++typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE { > ++ OMX_U32 nSize; /**< size of the structure in bytes */ > ++ OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ > ++ OMX_U32 nPortIndex; /**< Indicates which port to set */ > ++ OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ > ++ OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ > ++} OMX_OTHER_PARAM_PORTFORMATTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Types.h b/usr/include/OpenMAX/il/OMX_Types.h > +--- a/usr/include/OpenMAX/il/OMX_Types.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Types.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,359 @@ > ++/* > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_Types.h - OpenMax IL version 1.1.2 > ++ * The OMX_Types header file contains the primitive type definitions used by > ++ * the core, the application and the component. This file may need to be > ++ * modified to be used on systems that do not have "char" set to 8 bits, > ++ * "short" set to 16 bits and "long" set to 32 bits. > ++ */ > ++ > ++#ifndef OMX_Types_h > ++#define OMX_Types_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/** The OMX_API and OMX_APIENTRY are platform specific definitions used > ++ * to declare OMX function prototypes. They are modified to meet the > ++ * requirements for a particular platform */ > ++#ifdef __SYMBIAN32__ > ++# ifdef __OMX_EXPORTS > ++# define OMX_API __declspec(dllexport) > ++# else > ++# ifdef _WIN32 > ++# define OMX_API __declspec(dllexport) > ++# else > ++# define OMX_API __declspec(dllimport) > ++# endif > ++# endif > ++#else > ++# ifdef _WIN32 > ++# ifdef __OMX_EXPORTS > ++# define OMX_API __declspec(dllexport) > ++# else > ++# define OMX_API __declspec(dllimport) > ++# endif > ++# else > ++# ifdef __OMX_EXPORTS > ++# define OMX_API > ++# else > ++# define OMX_API extern > ++# endif > ++# endif > ++#endif > ++ > ++#ifndef OMX_APIENTRY > ++#define OMX_APIENTRY > ++#endif > ++ > ++/** OMX_IN is used to identify inputs to an OMX function. This designation > ++ will also be used in the case of a pointer that points to a parameter > ++ that is used as an output. */ > ++#ifndef OMX_IN > ++#define OMX_IN > ++#endif > ++ > ++/** OMX_OUT is used to identify outputs from an OMX function. This > ++ designation will also be used in the case of a pointer that points > ++ to a parameter that is used as an input. */ > ++#ifndef OMX_OUT > ++#define OMX_OUT > ++#endif > ++ > ++ > ++/** OMX_INOUT is used to identify parameters that may be either inputs or > ++ outputs from an OMX function at the same time. This designation will > ++ also be used in the case of a pointer that points to a parameter that > ++ is used both as an input and an output. */ > ++#ifndef OMX_INOUT > ++#define OMX_INOUT > ++#endif > ++ > ++/** OMX_ALL is used to as a wildcard to select all entities of the same type > ++ * when specifying the index, or referring to a object by an index. (i.e. > ++ * use OMX_ALL to indicate all N channels). When used as a port index > ++ * for a config or parameter this OMX_ALL denotes that the config or > ++ * parameter applies to the entire component not just one port. */ > ++#define OMX_ALL 0xFFFFFFFF > ++ > ++/** In the following we define groups that help building doxygen documentation */ > ++ > ++/** @defgroup core OpenMAX IL core > ++ * Functions and structure related to the OMX IL core > ++ */ > ++ > ++ /** @defgroup comp OpenMAX IL component > ++ * Functions and structure related to the OMX IL component > ++ */ > ++ > ++/** @defgroup rpm Resource and Policy Management > ++ * Structures for resource and policy management of components > ++ */ > ++ > ++/** @defgroup buf Buffer Management > ++ * Buffer handling functions and structures > ++ */ > ++ > ++/** @defgroup tun Tunneling > ++ * @ingroup core comp > ++ * Structures and functions to manage tunnels among component ports > ++ */ > ++ > ++/** @defgroup cp Content Pipes > ++ * @ingroup core > ++ */ > ++ > ++ /** @defgroup metadata Metadata handling > ++ * > ++ */ > ++ > ++/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */ > ++typedef unsigned char OMX_U8; > ++ > ++/** OMX_S8 is an 8 bit signed quantity that is byte aligned */ > ++typedef signed char OMX_S8; > ++ > ++/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */ > ++typedef unsigned short OMX_U16; > ++ > ++/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */ > ++typedef signed short OMX_S16; > ++ > ++/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */ > ++typedef unsigned long OMX_U32; > ++ > ++/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */ > ++typedef signed long OMX_S32; > ++ > ++ > ++/* Users with compilers that cannot accept the "long long" designation should > ++ define the OMX_SKIP64BIT macro. It should be noted that this may cause > ++ some components to fail to compile if the component was written to require > ++ 64 bit integral types. However, these components would NOT compile anyway > ++ since the compiler does not support the way the component was written. > ++*/ > ++#ifndef OMX_SKIP64BIT > ++#ifdef __SYMBIAN32__ > ++/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ > ++typedef unsigned long long OMX_U64; > ++ > ++/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ > ++typedef signed long long OMX_S64; > ++ > ++#elif defined(WIN32) > ++ > ++/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ > ++typedef unsigned __int64 OMX_U64; > ++ > ++/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ > ++typedef signed __int64 OMX_S64; > ++ > ++#else /* WIN32 */ > ++ > ++/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ > ++typedef unsigned long long OMX_U64; > ++ > ++/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ > ++typedef signed long long OMX_S64; > ++ > ++#endif /* WIN32 */ > ++#endif > ++ > ++ > ++/** The OMX_BOOL type is intended to be used to represent a true or a false > ++ value when passing parameters to and from the OMX core and components. The > ++ OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary. > ++ */ > ++typedef enum OMX_BOOL { > ++ OMX_FALSE = 0, > ++ OMX_TRUE = !OMX_FALSE, > ++ OMX_BOOL_MAX = 0x7FFFFFFF > ++} OMX_BOOL; > ++ > ++/** The OMX_PTR type is intended to be used to pass pointers between the OMX > ++ applications and the OMX Core and components. This is a 32 bit pointer and > ++ is aligned on a 32 bit boundary. > ++ */ > ++typedef void* OMX_PTR; > ++ > ++/** The OMX_STRING type is intended to be used to pass "C" type strings between > ++ the application and the core and component. The OMX_STRING type is a 32 > ++ bit pointer to a zero terminated string. The pointer is word aligned and > ++ the string is byte aligned. > ++ */ > ++typedef char* OMX_STRING; > ++ > ++/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as > ++ buffers between the application and the component and core. The OMX_BYTE > ++ type is a 32 bit pointer to a zero terminated string. The pointer is word > ++ aligned and the string is byte aligned. > ++ */ > ++typedef unsigned char* OMX_BYTE; > ++ > ++/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify > ++ at runtime. This identifier should be generated by a component in a way > ++ that guarantees that every instance of the identifier running on the system > ++ is unique. */ > ++typedef unsigned char OMX_UUIDTYPE[128]; > ++ > ++/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or > ++ an output port. This enumeration is common across all component types. > ++ */ > ++typedef enum OMX_DIRTYPE > ++{ > ++ OMX_DirInput, /**< Port is an input port */ > ++ OMX_DirOutput, /**< Port is an output port */ > ++ OMX_DirMax = 0x7FFFFFFF > ++} OMX_DIRTYPE; > ++ > ++/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering > ++ for numerical data (i.e. big endian, or little endian). > ++ */ > ++typedef enum OMX_ENDIANTYPE > ++{ > ++ OMX_EndianBig, /**< big endian */ > ++ OMX_EndianLittle, /**< little endian */ > ++ OMX_EndianMax = 0x7FFFFFFF > ++} OMX_ENDIANTYPE; > ++ > ++ > ++/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data > ++ is signed or unsigned > ++ */ > ++typedef enum OMX_NUMERICALDATATYPE > ++{ > ++ OMX_NumericalDataSigned, /**< signed data */ > ++ OMX_NumericalDataUnsigned, /**< unsigned data */ > ++ OMX_NumercialDataMax = 0x7FFFFFFF > ++} OMX_NUMERICALDATATYPE; > ++ > ++ > ++/** Unsigned bounded value type */ > ++typedef struct OMX_BU32 { > ++ OMX_U32 nValue; /**< actual value */ > ++ OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ > ++ OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ > ++} OMX_BU32; > ++ > ++ > ++/** Signed bounded value type */ > ++typedef struct OMX_BS32 { > ++ OMX_S32 nValue; /**< actual value */ > ++ OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ > ++ OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ > ++} OMX_BS32; > ++ > ++ > ++/** Structure representing some time or duration in microseconds. This structure > ++ * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate > ++ * negative deltas and preroll scenarios. The quantity is represented in microseconds > ++ * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based > ++ * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g. > ++ * individual audio samples delivered at 192 kHz). The quantity is 64 bit to > ++ * accommodate a large dynamic range (signed 32 bit values would allow only for plus > ++ * or minus 35 minutes). > ++ * > ++ * Implementations with limited precision may convert the signed 64 bit value to > ++ * a signed 32 bit value internally but risk loss of precision. > ++ */ > ++#ifndef OMX_SKIP64BIT > ++typedef OMX_S64 OMX_TICKS; > ++#else > ++typedef struct OMX_TICKS > ++{ > ++ OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */ > ++ OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */ > ++} OMX_TICKS; > ++#endif > ++#define OMX_TICKS_PER_SECOND 1000000 > ++ > ++/** Define the public interface for the OMX Handle. The core will not use > ++ this value internally, but the application should only use this value. > ++ */ > ++typedef void* OMX_HANDLETYPE; > ++ > ++typedef struct OMX_MARKTYPE > ++{ > ++ OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will > ++ generate a mark event upon > ++ processing the mark. */ > ++ OMX_PTR pMarkData; /**< Application specific data associated with > ++ the mark sent on a mark event to disambiguate > ++ this mark from others. */ > ++} OMX_MARKTYPE; > ++ > ++ > ++/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the > ++ * platform & operating specific object used to reference the display > ++ * or can be used by a audio port for native audio rendering */ > ++typedef void* OMX_NATIVE_DEVICETYPE; > ++ > ++/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the > ++ * platform & operating specific object used to reference the window */ > ++typedef void* OMX_NATIVE_WINDOWTYPE; > ++ > ++ > ++/** Define the OMX IL version that corresponds to this set of header files. > ++ * We also define a combined version that can be used to write or compare > ++ * values of the 32bit nVersion field, assuming a little endian architecture */ > ++#define OMX_VERSION_MAJOR 1 > ++#define OMX_VERSION_MINOR 1 > ++#define OMX_VERSION_REVISION 2 > ++#define OMX_VERSION_STEP 0 > ++ > ++#define OMX_VERSION ((OMX_VERSION_STEP<<24) | (OMX_VERSION_REVISION<<16) | (OMX_VERSION_MINOR<<8) | OMX_VERSION_MAJOR) > ++ > ++ > ++/** The OMX_VERSIONTYPE union is used to specify the version for > ++ a structure or component. For a component, the version is entirely > ++ specified by the component vendor. Components doing the same function > ++ from different vendors may or may not have the same version. For > ++ structures, the version shall be set by the entity that allocates the > ++ structure. For structures specified in the OMX 1.1 specification, the > ++ value of the version shall be set to 1.1.0.0 in all cases. Access to the > ++ OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or > ++ by accessing one of the structure elements to, for example, check only > ++ the Major revision. > ++ */ > ++typedef union OMX_VERSIONTYPE > ++{ > ++ struct > ++ { > ++ OMX_U8 nVersionMajor; /**< Major version accessor element */ > ++ OMX_U8 nVersionMinor; /**< Minor version accessor element */ > ++ OMX_U8 nRevision; /**< Revision version accessor element */ > ++ OMX_U8 nStep; /**< Step version accessor element */ > ++ } s; > ++ OMX_U32 nVersion; /**< 32 bit value to make accessing the > ++ version easily done in a single word > ++ size copy/compare operation */ > ++} OMX_VERSIONTYPE; > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_VideoExt.h b/usr/include/OpenMAX/il/OMX_VideoExt.h > +--- a/usr/include/OpenMAX/il/OMX_VideoExt.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_VideoExt.h 2011-08-18 13:29:40.000000000 +0200 > +@@ -0,0 +1,123 @@ > ++/* > ++ * Copyright (c) 2010 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** OMX_VideoExt.h - OpenMax IL version 1.1.2 > ++ * The OMX_VideoExt header file contains extensions to the > ++ * definitions used by both the application and the component to > ++ * access video items. > ++ */ > ++ > ++#ifndef OMX_VideoExt_h > ++#define OMX_VideoExt_h > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++/* Each OMX header shall include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++#include > ++ > ++/** NALU Formats */ > ++typedef enum OMX_NALUFORMATSTYPE { > ++ OMX_NaluFormatStartCodes = 1, > ++ OMX_NaluFormatOneNaluPerBuffer = 2, > ++ OMX_NaluFormatOneByteInterleaveLength = 4, > ++ OMX_NaluFormatTwoByteInterleaveLength = 8, > ++ OMX_NaluFormatFourByteInterleaveLength = 16, > ++ OMX_NaluFormatCodingMax = 0x7FFFFFFF > ++} OMX_NALUFORMATSTYPE; > ++ > ++/** NAL Stream Format */ > ++typedef struct OMX_NALSTREAMFORMATTYPE{ > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_NALUFORMATSTYPE eNaluFormat; > ++} OMX_NALSTREAMFORMATTYPE; > ++ > ++/** Enum for standard video codingtype extensions */ > ++typedef enum OMX_VIDEO_CODINGEXTTYPE { > ++ OMX_VIDEO_ExtCodingUnused = OMX_VIDEO_CodingKhronosExtensions, > ++ OMX_VIDEO_CodingVP8, /**< VP8/WebM */ > ++} OMX_VIDEO_CODINGEXTTYPE; > ++ > ++/** VP8 profiles */ > ++typedef enum OMX_VIDEO_VP8PROFILETYPE { > ++ OMX_VIDEO_VP8ProfileMain = 0x01, > ++ OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF, > ++ OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF > ++} OMX_VIDEO_VP8PROFILETYPE; > ++ > ++/** VP8 levels */ > ++typedef enum OMX_VIDEO_VP8LEVELTYPE { > ++ OMX_VIDEO_VP8Level_Version0 = 0x01, > ++ OMX_VIDEO_VP8Level_Version1 = 0x02, > ++ OMX_VIDEO_VP8Level_Version2 = 0x04, > ++ OMX_VIDEO_VP8Level_Version3 = 0x08, > ++ OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF, > ++ OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_VP8LEVELTYPE; > ++ > ++/** VP8 Param */ > ++typedef struct OMX_VIDEO_PARAM_VP8TYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_VP8PROFILETYPE eProfile; > ++ OMX_VIDEO_VP8LEVELTYPE eLevel; > ++ OMX_U32 nDCTPartitions; > ++ OMX_BOOL bErrorResilientMode; > ++} OMX_VIDEO_PARAM_VP8TYPE; > ++ > ++/** Structure for configuring VP8 reference frames */ > ++typedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bPreviousFrameRefresh; > ++ OMX_BOOL bGoldenFrameRefresh; > ++ OMX_BOOL bAlternateFrameRefresh; > ++ OMX_BOOL bUsePreviousFrame; > ++ OMX_BOOL bUseGoldenFrame; > ++ OMX_BOOL bUseAlternateFrame; > ++} OMX_VIDEO_VP8REFERENCEFRAMETYPE; > ++ > ++/** Structure for querying VP8 reference frame type */ > ++typedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bIsIntraFrame; > ++ OMX_BOOL bIsGoldenOrAlternateFrame; > ++} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE; > ++ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif /* OMX_VideoExt_h */ > ++/* File EOF */ > +diff -rupN a/usr/include/OpenMAX/il/OMX_Video.h b/usr/include/OpenMAX/il/OMX_Video.h > +--- a/usr/include/OpenMAX/il/OMX_Video.h 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/include/OpenMAX/il/OMX_Video.h 2011-08-09 09:08:06.000000000 +0200 > +@@ -0,0 +1,1060 @@ > ++/** > ++ * Copyright (c) 2008 The Khronos Group Inc. > ++ * > ++ * Permission is hereby granted, free of charge, to any person obtaining > ++ * a copy of this software and associated documentation files (the > ++ * "Software"), to deal in the Software without restriction, including > ++ * without limitation the rights to use, copy, modify, merge, publish, > ++ * distribute, sublicense, and/or sell copies of the Software, and to > ++ * permit persons to whom the Software is furnished to do so, subject > ++ * to the following conditions: > ++ * The above copyright notice and this permission notice shall be included > ++ * in all copies or substantial portions of the Software. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. > ++ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY > ++ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > ++ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > ++ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > ++ * > ++ */ > ++ > ++/** > ++ * @file OMX_Video.h - OpenMax IL version 1.1.2 > ++ * The structures is needed by Video components to exchange parameters > ++ * and configuration data with OMX components. > ++ */ > ++#ifndef OMX_Video_h > ++#define OMX_Video_h > ++ > ++/** @defgroup video OpenMAX IL Video Domain > ++ * @ingroup iv > ++ * Structures for OpenMAX IL Video domain > ++ * @{ > ++ */ > ++ > ++#ifdef __cplusplus > ++extern "C" { > ++#endif /* __cplusplus */ > ++ > ++ > ++/** > ++ * Each OMX header must include all required header files to allow the > ++ * header to compile without errors. The includes below are required > ++ * for this header file to compile successfully > ++ */ > ++ > ++#include > ++ > ++ > ++/** > ++ * Enumeration used to define the possible video compression codings. > ++ * NOTE: This essentially refers to file extensions. If the coding is > ++ * being used to specify the ENCODE type, then additional work > ++ * must be done to configure the exact flavor of the compression > ++ * to be used. For decode cases where the user application can > ++ * not differentiate between MPEG-4 and H.264 bit streams, it is > ++ * up to the codec to handle this. > ++ */ > ++typedef enum OMX_VIDEO_CODINGTYPE { > ++ OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */ > ++ OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ > ++ OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */ > ++ OMX_VIDEO_CodingH263, /**< H.263 */ > ++ OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */ > ++ OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */ > ++ OMX_VIDEO_CodingRV, /**< all versions of Real Video */ > ++ OMX_VIDEO_CodingAVC, /**< H.264/AVC */ > ++ OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */ > ++ OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_CodingMax = 0x7FFFFFFF > ++} OMX_VIDEO_CODINGTYPE; > ++ > ++ > ++/** > ++ * Data structure used to define a video path. The number of Video paths for > ++ * input and output will vary by type of the Video component. > ++ * > ++ * Input (aka Source) : zero Inputs, one Output, > ++ * Splitter : one Input, 2 or more Outputs, > ++ * Processing Element : one Input, one output, > ++ * Mixer : 2 or more inputs, one output, > ++ * Output (aka Sink) : one Input, zero outputs. > ++ * > ++ * The PortDefinition structure is used to define all of the parameters > ++ * necessary for the compliant component to setup an input or an output video > ++ * path. If additional vendor specific data is required, it should be > ++ * transmitted to the component using the CustomCommand function. Compliant > ++ * components will prepopulate this structure with optimal values during the > ++ * GetDefaultInitParams command. > ++ * > ++ * STRUCT MEMBERS: > ++ * cMIMEType : MIME type of data for the port > ++ * pNativeRender : Platform specific reference for a display if a > ++ * sync, otherwise this field is 0 > ++ * nFrameWidth : Width of frame to be used on channel if > ++ * uncompressed format is used. Use 0 for unknown, > ++ * don't care or variable > ++ * nFrameHeight : Height of frame to be used on channel if > ++ * uncompressed format is used. Use 0 for unknown, > ++ * don't care or variable > ++ * nStride : Number of bytes per span of an image > ++ * (i.e. indicates the number of bytes to get > ++ * from span N to span N+1, where negative stride > ++ * indicates the image is bottom up > ++ * nSliceHeight : Height used when encoding in slices > ++ * nBitrate : Bit rate of frame to be used on channel if > ++ * compressed format is used. Use 0 for unknown, > ++ * don't care or variable > ++ * xFramerate : Frame rate to be used on channel if uncompressed > ++ * format is used. Use 0 for unknown, don't care or > ++ * variable. Units are Q16 frames per second. > ++ * bFlagErrorConcealment : Turns on error concealment if it is supported by > ++ * the OMX component > ++ * eCompressionFormat : Compression format used in this instance of the > ++ * component. When OMX_VIDEO_CodingUnused is > ++ * specified, eColorFormat is used > ++ * eColorFormat : Decompressed format used by this component > ++ * pNativeWindow : Platform specific reference for a window object if a > ++ * display sink , otherwise this field is 0x0. > ++ */ > ++typedef struct OMX_VIDEO_PORTDEFINITIONTYPE { > ++ OMX_STRING cMIMEType; > ++ OMX_NATIVE_DEVICETYPE pNativeRender; > ++ OMX_U32 nFrameWidth; > ++ OMX_U32 nFrameHeight; > ++ OMX_S32 nStride; > ++ OMX_U32 nSliceHeight; > ++ OMX_U32 nBitrate; > ++ OMX_U32 xFramerate; > ++ OMX_BOOL bFlagErrorConcealment; > ++ OMX_VIDEO_CODINGTYPE eCompressionFormat; > ++ OMX_COLOR_FORMATTYPE eColorFormat; > ++ OMX_NATIVE_WINDOWTYPE pNativeWindow; > ++} OMX_VIDEO_PORTDEFINITIONTYPE; > ++ > ++/** > ++ * Port format parameter. This structure is used to enumerate the various > ++ * data input/output format supported by the port. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Indicates which port to set > ++ * nIndex : Indicates the enumeration index for the format from > ++ * 0x0 to N-1 > ++ * eCompressionFormat : Compression format used in this instance of the > ++ * component. When OMX_VIDEO_CodingUnused is specified, > ++ * eColorFormat is used > ++ * eColorFormat : Decompressed format used by this component > ++ * xFrameRate : Indicates the video frame rate in Q16 format > ++ */ > ++typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nIndex; > ++ OMX_VIDEO_CODINGTYPE eCompressionFormat; > ++ OMX_COLOR_FORMATTYPE eColorFormat; > ++ OMX_U32 xFramerate; > ++} OMX_VIDEO_PARAM_PORTFORMATTYPE; > ++ > ++ > ++/** > ++ * This is a structure for configuring video compression quantization > ++ * parameter values. Codecs may support different QP values for different > ++ * frame types. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version info > ++ * nPortIndex : Port that this structure applies to > ++ * nQpI : QP value to use for index frames > ++ * nQpP : QP value to use for P frames > ++ * nQpB : QP values to use for bidirectional frames > ++ */ > ++typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nQpI; > ++ OMX_U32 nQpP; > ++ OMX_U32 nQpB; > ++} OMX_VIDEO_PARAM_QUANTIZATIONTYPE; > ++ > ++ > ++/** > ++ * Structure for configuration of video fast update parameters. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version info > ++ * nPortIndex : Port that this structure applies to > ++ * bEnableVFU : Enable/Disable video fast update > ++ * nFirstGOB : Specifies the number of the first macroblock row > ++ * nFirstMB : specifies the first MB relative to the specified first GOB > ++ * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB > ++ * and nFirstMB > ++ */ > ++typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bEnableVFU; > ++ OMX_U32 nFirstGOB; > ++ OMX_U32 nFirstMB; > ++ OMX_U32 nNumMBs; > ++} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE; > ++ > ++ > ++/** > ++ * Enumeration of possible bitrate control types > ++ */ > ++typedef enum OMX_VIDEO_CONTROLRATETYPE { > ++ OMX_Video_ControlRateDisable, > ++ OMX_Video_ControlRateVariable, > ++ OMX_Video_ControlRateConstant, > ++ OMX_Video_ControlRateVariableSkipFrames, > ++ OMX_Video_ControlRateConstantSkipFrames, > ++ OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_Video_ControlRateMax = 0x7FFFFFFF > ++} OMX_VIDEO_CONTROLRATETYPE; > ++ > ++ > ++/** > ++ * Structure for configuring bitrate mode of a codec. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the struct in bytes > ++ * nVersion : OMX spec version info > ++ * nPortIndex : Port that this struct applies to > ++ * eControlRate : Control rate type enum > ++ * nTargetBitrate : Target bitrate to encode with > ++ */ > ++typedef struct OMX_VIDEO_PARAM_BITRATETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_CONTROLRATETYPE eControlRate; > ++ OMX_U32 nTargetBitrate; > ++} OMX_VIDEO_PARAM_BITRATETYPE; > ++ > ++ > ++/** > ++ * Enumeration of possible motion vector (MV) types > ++ */ > ++typedef enum OMX_VIDEO_MOTIONVECTORTYPE { > ++ OMX_Video_MotionVectorPixel, > ++ OMX_Video_MotionVectorHalfPel, > ++ OMX_Video_MotionVectorQuarterPel, > ++ OMX_Video_MotionVectorEighthPel, > ++ OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_Video_MotionVectorMax = 0x7FFFFFFF > ++} OMX_VIDEO_MOTIONVECTORTYPE; > ++ > ++ > ++/** > ++ * Structure for configuring the number of motion vectors used as well > ++ * as their accuracy. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the struct in bytes > ++ * nVersion : OMX spec version info > ++ * nPortIndex : port that this structure applies to > ++ * eAccuracy : Enumerated MV accuracy > ++ * bUnrestrictedMVs : Allow unrestricted MVs > ++ * bFourMV : Allow use of 4 MVs > ++ * sXSearchRange : Search range in horizontal direction for MVs > ++ * sYSearchRange : Search range in vertical direction for MVs > ++ */ > ++typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_MOTIONVECTORTYPE eAccuracy; > ++ OMX_BOOL bUnrestrictedMVs; > ++ OMX_BOOL bFourMV; > ++ OMX_S32 sXSearchRange; > ++ OMX_S32 sYSearchRange; > ++} OMX_VIDEO_PARAM_MOTIONVECTORTYPE; > ++ > ++ > ++/** > ++ * Enumeration of possible methods to use for Intra Refresh > ++ */ > ++typedef enum OMX_VIDEO_INTRAREFRESHTYPE { > ++ OMX_VIDEO_IntraRefreshCyclic, > ++ OMX_VIDEO_IntraRefreshAdaptive, > ++ OMX_VIDEO_IntraRefreshBoth, > ++ OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF > ++} OMX_VIDEO_INTRAREFRESHTYPE; > ++ > ++ > ++/** > ++ * Structure for configuring intra refresh mode > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eRefreshMode : Cyclic, Adaptive, or Both > ++ * nAirMBs : Number of intra macroblocks to refresh in a frame when > ++ * AIR is enabled > ++ * nAirRef : Number of times a motion marked macroblock has to be > ++ * intra coded > ++ * nCirMBs : Number of consecutive macroblocks to be coded as "intra" > ++ * when CIR is enabled > ++ */ > ++typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode; > ++ OMX_U32 nAirMBs; > ++ OMX_U32 nAirRef; > ++ OMX_U32 nCirMBs; > ++} OMX_VIDEO_PARAM_INTRAREFRESHTYPE; > ++ > ++ > ++/** > ++ * Structure for enabling various error correction methods for video > ++ * compression. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * bEnableHEC : Enable/disable header extension codes (HEC) > ++ * bEnableResync : Enable/disable resynchronization markers > ++ * nResynchMarkerSpacing : Resynch markers interval (in bits) to be > ++ * applied in the stream > ++ * bEnableDataPartitioning : Enable/disable data partitioning > ++ * bEnableRVLC : Enable/disable reversible variable length > ++ * coding > ++ */ > ++typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bEnableHEC; > ++ OMX_BOOL bEnableResync; > ++ OMX_U32 nResynchMarkerSpacing; > ++ OMX_BOOL bEnableDataPartitioning; > ++ OMX_BOOL bEnableRVLC; > ++} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE; > ++ > ++ > ++/** > ++ * Configuration of variable block-size motion compensation (VBSMC) > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * b16x16 : Enable inter block search 16x16 > ++ * b16x8 : Enable inter block search 16x8 > ++ * b8x16 : Enable inter block search 8x16 > ++ * b8x8 : Enable inter block search 8x8 > ++ * b8x4 : Enable inter block search 8x4 > ++ * b4x8 : Enable inter block search 4x8 > ++ * b4x4 : Enable inter block search 4x4 > ++ */ > ++typedef struct OMX_VIDEO_PARAM_VBSMCTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL b16x16; > ++ OMX_BOOL b16x8; > ++ OMX_BOOL b8x16; > ++ OMX_BOOL b8x8; > ++ OMX_BOOL b8x4; > ++ OMX_BOOL b4x8; > ++ OMX_BOOL b4x4; > ++} OMX_VIDEO_PARAM_VBSMCTYPE; > ++ > ++ > ++/** > ++ * H.263 profile types, each profile indicates support for various > ++ * performance bounds and different annexes. > ++ * > ++ * ENUMS: > ++ * Baseline : Baseline Profile: H.263 (V1), no optional modes > ++ * H320 Coding : H.320 Coding Efficiency Backward Compatibility > ++ * Profile: H.263+ (V2), includes annexes I, J, L.4 > ++ * and T > ++ * BackwardCompatible : Backward Compatibility Profile: H.263 (V1), > ++ * includes annex F > ++ * ISWV2 : Interactive Streaming Wireless Profile: H.263+ > ++ * (V2), includes annexes I, J, K and T > ++ * ISWV3 : Interactive Streaming Wireless Profile: H.263++ > ++ * (V3), includes profile 3 and annexes V and W.6.3.8 > ++ * HighCompression : Conversational High Compression Profile: H.263++ > ++ * (V3), includes profiles 1 & 2 and annexes D and U > ++ * Internet : Conversational Internet Profile: H.263++ (V3), > ++ * includes profile 5 and annex K > ++ * Interlace : Conversational Interlace Profile: H.263++ (V3), > ++ * includes profile 5 and annex W.6.3.11 > ++ * HighLatency : High Latency Profile: H.263++ (V3), includes > ++ * profile 6 and annexes O.1 and P.5 > ++ */ > ++typedef enum OMX_VIDEO_H263PROFILETYPE { > ++ OMX_VIDEO_H263ProfileBaseline = 0x01, > ++ OMX_VIDEO_H263ProfileH320Coding = 0x02, > ++ OMX_VIDEO_H263ProfileBackwardCompatible = 0x04, > ++ OMX_VIDEO_H263ProfileISWV2 = 0x08, > ++ OMX_VIDEO_H263ProfileISWV3 = 0x10, > ++ OMX_VIDEO_H263ProfileHighCompression = 0x20, > ++ OMX_VIDEO_H263ProfileInternet = 0x40, > ++ OMX_VIDEO_H263ProfileInterlace = 0x80, > ++ OMX_VIDEO_H263ProfileHighLatency = 0x100, > ++ OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF > ++} OMX_VIDEO_H263PROFILETYPE; > ++ > ++ > ++/** > ++ * H.263 level types, each level indicates support for various frame sizes, > ++ * bit rates, decoder frame rates. > ++ */ > ++typedef enum OMX_VIDEO_H263LEVELTYPE { > ++ OMX_VIDEO_H263Level10 = 0x01, > ++ OMX_VIDEO_H263Level20 = 0x02, > ++ OMX_VIDEO_H263Level30 = 0x04, > ++ OMX_VIDEO_H263Level40 = 0x08, > ++ OMX_VIDEO_H263Level45 = 0x10, > ++ OMX_VIDEO_H263Level50 = 0x20, > ++ OMX_VIDEO_H263Level60 = 0x40, > ++ OMX_VIDEO_H263Level70 = 0x80, > ++ OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_H263LevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_H263LEVELTYPE; > ++ > ++ > ++/** > ++ * Specifies the picture type. These values should be OR'd to signal all > ++ * pictures types which are allowed. > ++ * > ++ * ENUMS: > ++ * Generic Picture Types: I, P and B > ++ * H.263 Specific Picture Types: SI and SP > ++ * H.264 Specific Picture Types: EI and EP > ++ * MPEG-4 Specific Picture Types: S > ++ */ > ++typedef enum OMX_VIDEO_PICTURETYPE { > ++ OMX_VIDEO_PictureTypeI = 0x01, > ++ OMX_VIDEO_PictureTypeP = 0x02, > ++ OMX_VIDEO_PictureTypeB = 0x04, > ++ OMX_VIDEO_PictureTypeSI = 0x08, > ++ OMX_VIDEO_PictureTypeSP = 0x10, > ++ OMX_VIDEO_PictureTypeEI = 0x11, > ++ OMX_VIDEO_PictureTypeEP = 0x12, > ++ OMX_VIDEO_PictureTypeS = 0x14, > ++ OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF > ++} OMX_VIDEO_PICTURETYPE; > ++ > ++ > ++/** > ++ * H.263 Params > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nPFrames : Number of P frames between each I frame > ++ * nBFrames : Number of B frames between each I frame > ++ * eProfile : H.263 profile(s) to use > ++ * eLevel : H.263 level(s) to use > ++ * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE > ++ * (specified in the 1998 version of H.263) to > ++ * indicate custom picture sizes or clock > ++ * frequencies > ++ * nAllowedPictureTypes : Specifies the picture types allowed in the > ++ * bitstream > ++ * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is > ++ * not constrained. It is recommended to change > ++ * the value of the RTYPE bit for each reference > ++ * picture in error-free communication > ++ * nPictureHeaderRepetition : Specifies the frequency of picture header > ++ * repetition > ++ * nGOBHeaderInterval : Specifies the interval of non-empty GOB > ++ * headers in units of GOBs > ++ */ > ++typedef struct OMX_VIDEO_PARAM_H263TYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nPFrames; > ++ OMX_U32 nBFrames; > ++ OMX_VIDEO_H263PROFILETYPE eProfile; > ++ OMX_VIDEO_H263LEVELTYPE eLevel; > ++ OMX_BOOL bPLUSPTYPEAllowed; > ++ OMX_U32 nAllowedPictureTypes; > ++ OMX_BOOL bForceRoundingTypeToZero; > ++ OMX_U32 nPictureHeaderRepetition; > ++ OMX_U32 nGOBHeaderInterval; > ++} OMX_VIDEO_PARAM_H263TYPE; > ++ > ++ > ++/** > ++ * MPEG-2 profile types, each profile indicates support for various > ++ * performance bounds and different annexes. > ++ */ > ++typedef enum OMX_VIDEO_MPEG2PROFILETYPE { > ++ OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */ > ++ OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */ > ++ OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */ > ++ OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */ > ++ OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */ > ++ OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */ > ++ OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF > ++} OMX_VIDEO_MPEG2PROFILETYPE; > ++ > ++ > ++/** > ++ * MPEG-2 level types, each level indicates support for various frame > ++ * sizes, bit rates, decoder frame rates. No need > ++ */ > ++typedef enum OMX_VIDEO_MPEG2LEVELTYPE { > ++ OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */ > ++ OMX_VIDEO_MPEG2LevelML, /**< Main Level */ > ++ OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */ > ++ OMX_VIDEO_MPEG2LevelHL, /**< High Level */ > ++ OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_MPEG2LEVELTYPE; > ++ > ++ > ++/** > ++ * MPEG-2 params > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nPFrames : Number of P frames between each I frame > ++ * nBFrames : Number of B frames between each I frame > ++ * eProfile : MPEG-2 profile(s) to use > ++ * eLevel : MPEG-2 levels(s) to use > ++ */ > ++typedef struct OMX_VIDEO_PARAM_MPEG2TYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nPFrames; > ++ OMX_U32 nBFrames; > ++ OMX_VIDEO_MPEG2PROFILETYPE eProfile; > ++ OMX_VIDEO_MPEG2LEVELTYPE eLevel; > ++} OMX_VIDEO_PARAM_MPEG2TYPE; > ++ > ++ > ++/** > ++ * MPEG-4 profile types, each profile indicates support for various > ++ * performance bounds and different annexes. > ++ * > ++ * ENUMS: > ++ * - Simple Profile, Levels 1-3 > ++ * - Simple Scalable Profile, Levels 1-2 > ++ * - Core Profile, Levels 1-2 > ++ * - Main Profile, Levels 2-4 > ++ * - N-bit Profile, Level 2 > ++ * - Scalable Texture Profile, Level 1 > ++ * - Simple Face Animation Profile, Levels 1-2 > ++ * - Simple Face and Body Animation (FBA) Profile, Levels 1-2 > ++ * - Basic Animated Texture Profile, Levels 1-2 > ++ * - Hybrid Profile, Levels 1-2 > ++ * - Advanced Real Time Simple Profiles, Levels 1-4 > ++ * - Core Scalable Profile, Levels 1-3 > ++ * - Advanced Coding Efficiency Profile, Levels 1-4 > ++ * - Advanced Core Profile, Levels 1-2 > ++ * - Advanced Scalable Texture, Levels 2-3 > ++ */ > ++typedef enum OMX_VIDEO_MPEG4PROFILETYPE { > ++ OMX_VIDEO_MPEG4ProfileSimple = 0x01, > ++ OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02, > ++ OMX_VIDEO_MPEG4ProfileCore = 0x04, > ++ OMX_VIDEO_MPEG4ProfileMain = 0x08, > ++ OMX_VIDEO_MPEG4ProfileNbit = 0x10, > ++ OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20, > ++ OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40, > ++ OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80, > ++ OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100, > ++ OMX_VIDEO_MPEG4ProfileHybrid = 0x200, > ++ OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400, > ++ OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800, > ++ OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000, > ++ OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000, > ++ OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000, > ++ OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000, > ++ OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF > ++} OMX_VIDEO_MPEG4PROFILETYPE; > ++ > ++ > ++/** > ++ * MPEG-4 level types, each level indicates support for various frame > ++ * sizes, bit rates, decoder frame rates. No need > ++ */ > ++typedef enum OMX_VIDEO_MPEG4LEVELTYPE { > ++ OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */ > ++ OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */ > ++ OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */ > ++ OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */ > ++ OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */ > ++ OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */ > ++ OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */ > ++ OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */ > ++ OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_MPEG4LEVELTYPE; > ++ > ++ > ++/** > ++ * MPEG-4 configuration. This structure handles configuration options > ++ * which are specific to MPEG4 algorithms > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+ > ++ * Annex K). Put zero if not used > ++ * bSVH : Enable Short Video Header mode > ++ * bGov : Flag to enable GOV > ++ * nPFrames : Number of P frames between each I frame (also called > ++ * GOV period) > ++ * nBFrames : Number of B frames between each I frame > ++ * nIDCVLCThreshold : Value of intra DC VLC threshold > ++ * bACPred : Flag to use ac prediction > ++ * nMaxPacketSize : Maximum size of packet in bytes. > ++ * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4. > ++ * Interpreted as described in MPEG4 standard. > ++ * eProfile : MPEG-4 profile(s) to use. > ++ * eLevel : MPEG-4 level(s) to use. > ++ * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream > ++ * nHeaderExtension : Specifies the number of consecutive video packet > ++ * headers within a VOP > ++ * bReversibleVLC : Specifies whether reversible variable length coding > ++ * is in use > ++ */ > ++typedef struct OMX_VIDEO_PARAM_MPEG4TYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nSliceHeaderSpacing; > ++ OMX_BOOL bSVH; > ++ OMX_BOOL bGov; > ++ OMX_U32 nPFrames; > ++ OMX_U32 nBFrames; > ++ OMX_U32 nIDCVLCThreshold; > ++ OMX_BOOL bACPred; > ++ OMX_U32 nMaxPacketSize; > ++ OMX_U32 nTimeIncRes; > ++ OMX_VIDEO_MPEG4PROFILETYPE eProfile; > ++ OMX_VIDEO_MPEG4LEVELTYPE eLevel; > ++ OMX_U32 nAllowedPictureTypes; > ++ OMX_U32 nHeaderExtension; > ++ OMX_BOOL bReversibleVLC; > ++} OMX_VIDEO_PARAM_MPEG4TYPE; > ++ > ++ > ++/** > ++ * WMV Versions > ++ */ > ++typedef enum OMX_VIDEO_WMVFORMATTYPE { > ++ OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */ > ++ OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */ > ++ OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */ > ++ OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */ > ++ OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF > ++} OMX_VIDEO_WMVFORMATTYPE; > ++ > ++ > ++/** > ++ * WMV Params > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eFormat : Version of WMV stream / data > ++ */ > ++typedef struct OMX_VIDEO_PARAM_WMVTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_WMVFORMATTYPE eFormat; > ++} OMX_VIDEO_PARAM_WMVTYPE; > ++ > ++ > ++/** > ++ * Real Video Version > ++ */ > ++typedef enum OMX_VIDEO_RVFORMATTYPE { > ++ OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */ > ++ OMX_VIDEO_RVFormat8, /**< Real Video format 8 */ > ++ OMX_VIDEO_RVFormat9, /**< Real Video format 9 */ > ++ OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */ > ++ OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_RVFormatMax = 0x7FFFFFFF > ++} OMX_VIDEO_RVFORMATTYPE; > ++ > ++ > ++/** > ++ * Real Video Params > ++ * > ++ * STUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * eFormat : Version of RV stream / data > ++ * nBitsPerPixel : Bits per pixel coded in the frame > ++ * nPaddedWidth : Padded width in pixel of a video frame > ++ * nPaddedHeight : Padded Height in pixels of a video frame > ++ * nFrameRate : Rate of video in frames per second > ++ * nBitstreamFlags : Flags which internal information about the bitstream > ++ * nBitstreamVersion : Bitstream version > ++ * nMaxEncodeFrameSize: Max encoded frame size > ++ * bEnablePostFilter : Turn on/off post filter > ++ * bEnableTemporalInterpolation : Turn on/off temporal interpolation > ++ * bEnableLatencyMode : When enabled, the decoder does not display a decoded > ++ * frame until it has detected that no enhancement layer > ++ * frames or dependent B frames will be coming. This > ++ * detection usually occurs when a subsequent non-B > ++ * frame is encountered > ++ */ > ++typedef struct OMX_VIDEO_PARAM_RVTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_VIDEO_RVFORMATTYPE eFormat; > ++ OMX_U16 nBitsPerPixel; > ++ OMX_U16 nPaddedWidth; > ++ OMX_U16 nPaddedHeight; > ++ OMX_U32 nFrameRate; > ++ OMX_U32 nBitstreamFlags; > ++ OMX_U32 nBitstreamVersion; > ++ OMX_U32 nMaxEncodeFrameSize; > ++ OMX_BOOL bEnablePostFilter; > ++ OMX_BOOL bEnableTemporalInterpolation; > ++ OMX_BOOL bEnableLatencyMode; > ++} OMX_VIDEO_PARAM_RVTYPE; > ++ > ++ > ++/** > ++ * AVC profile types, each profile indicates support for various > ++ * performance bounds and different annexes. > ++ */ > ++typedef enum OMX_VIDEO_AVCPROFILETYPE { > ++ OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */ > ++ OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */ > ++ OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */ > ++ OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */ > ++ OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */ > ++ OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */ > ++ OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */ > ++ OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF > ++} OMX_VIDEO_AVCPROFILETYPE; > ++ > ++ > ++/** > ++ * AVC level types, each level indicates support for various frame sizes, > ++ * bit rates, decoder frame rates. No need > ++ */ > ++typedef enum OMX_VIDEO_AVCLEVELTYPE { > ++ OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */ > ++ OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */ > ++ OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */ > ++ OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */ > ++ OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */ > ++ OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */ > ++ OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */ > ++ OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */ > ++ OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */ > ++ OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */ > ++ OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */ > ++ OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */ > ++ OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */ > ++ OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */ > ++ OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */ > ++ OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */ > ++ OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_AVCLEVELTYPE; > ++ > ++ > ++/** > ++ * AVC loop filter modes > ++ * > ++ * OMX_VIDEO_AVCLoopFilterEnable : Enable > ++ * OMX_VIDEO_AVCLoopFilterDisable : Disable > ++ * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries > ++ */ > ++typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE { > ++ OMX_VIDEO_AVCLoopFilterEnable = 0, > ++ OMX_VIDEO_AVCLoopFilterDisable, > ++ OMX_VIDEO_AVCLoopFilterDisableSliceBoundary, > ++ OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF > ++} OMX_VIDEO_AVCLOOPFILTERTYPE; > ++ > ++ > ++/** > ++ * AVC params > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nSliceHeaderSpacing : Number of macroblocks between slice header, put > ++ * zero if not used > ++ * nPFrames : Number of P frames between each I frame > ++ * nBFrames : Number of B frames between each I frame > ++ * bUseHadamard : Enable/disable Hadamard transform > ++ * nRefFrames : Max number of reference frames to use for inter > ++ * motion search (1-16) > ++ * nRefIdxTrailing : Pic param set ref frame index (index into ref > ++ * frame buffer of trailing frames list), B frame > ++ * support > ++ * nRefIdxForward : Pic param set ref frame index (index into ref > ++ * frame buffer of forward frames list), B frame > ++ * support > ++ * bEnableUEP : Enable/disable unequal error protection. This > ++ * is only valid of data partitioning is enabled. > ++ * bEnableFMO : Enable/disable flexible macroblock ordering > ++ * bEnableASO : Enable/disable arbitrary slice ordering > ++ * bEnableRS : Enable/disable sending of redundant slices > ++ * eProfile : AVC profile(s) to use > ++ * eLevel : AVC level(s) to use > ++ * nAllowedPictureTypes : Specifies the picture types allowed in the > ++ * bitstream > ++ * bFrameMBsOnly : specifies that every coded picture of the > ++ * coded video sequence is a coded frame > ++ * containing only frame macroblocks > ++ * bMBAFF : Enable/disable switching between frame and > ++ * field macroblocks within a picture > ++ * bEntropyCodingCABAC : Entropy decoding method to be applied for the > ++ * syntax elements for which two descriptors appear > ++ * in the syntax tables > ++ * bWeightedPPrediction : Enable/disable weighted prediction shall not > ++ * be applied to P and SP slices > ++ * nWeightedBipredicitonMode : Default weighted prediction is applied to B > ++ * slices > ++ * bconstIpred : Enable/disable intra prediction > ++ * bDirect8x8Inference : Specifies the method used in the derivation > ++ * process for luma motion vectors for B_Skip, > ++ * B_Direct_16x16 and B_Direct_8x8 as specified > ++ * in subclause 8.4.1.2 of the AVC spec > ++ * bDirectSpatialTemporal : Flag indicating spatial or temporal direct > ++ * mode used in B slice coding (related to > ++ * bDirect8x8Inference) . Spatial direct mode is > ++ * more common and should be the default. > ++ * nCabacInitIdx : Index used to init CABAC contexts > ++ * eLoopFilterMode : Enable/disable loop filter > ++ */ > ++typedef struct OMX_VIDEO_PARAM_AVCTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nSliceHeaderSpacing; > ++ OMX_U32 nPFrames; > ++ OMX_U32 nBFrames; > ++ OMX_BOOL bUseHadamard; > ++ OMX_U32 nRefFrames; > ++ OMX_U32 nRefIdx10ActiveMinus1; > ++ OMX_U32 nRefIdx11ActiveMinus1; > ++ OMX_BOOL bEnableUEP; > ++ OMX_BOOL bEnableFMO; > ++ OMX_BOOL bEnableASO; > ++ OMX_BOOL bEnableRS; > ++ OMX_VIDEO_AVCPROFILETYPE eProfile; > ++ OMX_VIDEO_AVCLEVELTYPE eLevel; > ++ OMX_U32 nAllowedPictureTypes; > ++ OMX_BOOL bFrameMBsOnly; > ++ OMX_BOOL bMBAFF; > ++ OMX_BOOL bEntropyCodingCABAC; > ++ OMX_BOOL bWeightedPPrediction; > ++ OMX_U32 nWeightedBipredicitonMode; > ++ OMX_BOOL bconstIpred ; > ++ OMX_BOOL bDirect8x8Inference; > ++ OMX_BOOL bDirectSpatialTemporal; > ++ OMX_U32 nCabacInitIdc; > ++ OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode; > ++} OMX_VIDEO_PARAM_AVCTYPE; > ++ > ++typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, > ++ or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ > ++ OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE, > ++ or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ > ++ OMX_U32 nProfileIndex; /**< Used to query for individual profile support information, > ++ This parameter is valid only for > ++ OMX_IndexParamVideoProfileLevelQuerySupported index, > ++ For all other indices this parameter is to be ignored. */ > ++} OMX_VIDEO_PARAM_PROFILELEVELTYPE; > ++ > ++/** > ++ * Structure for dynamically configuring bitrate mode of a codec. > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the struct in bytes > ++ * nVersion : OMX spec version info > ++ * nPortIndex : Port that this struct applies to > ++ * nEncodeBitrate : Target average bitrate to be generated in bps > ++ */ > ++typedef struct OMX_VIDEO_CONFIG_BITRATETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nEncodeBitrate; > ++} OMX_VIDEO_CONFIG_BITRATETYPE; > ++ > ++/** > ++ * Defines Encoder Frame Rate setting > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * xEncodeFramerate : Encoding framerate represented in Q16 format > ++ */ > ++typedef struct OMX_CONFIG_FRAMERATETYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 xEncodeFramerate; /* Q16 format */ > ++} OMX_CONFIG_FRAMERATETYPE; > ++ > ++typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL IntraRefreshVOP; > ++} OMX_CONFIG_INTRAREFRESHVOPTYPE; > ++ > ++typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */ > ++ OMX_U8 ErrMap[1]; /* Error map hint */ > ++} OMX_CONFIG_MACROBLOCKERRORMAPTYPE; > ++ > ++typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_BOOL bEnabled; > ++} OMX_CONFIG_MBERRORREPORTINGTYPE; > ++ > ++typedef struct OMX_PARAM_MACROBLOCKSTYPE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nMacroblocks; > ++} OMX_PARAM_MACROBLOCKSTYPE; > ++ > ++/** > ++ * AVC Slice Mode modes > ++ * > ++ * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame > ++ * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame > ++ * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame > ++ */ > ++typedef enum OMX_VIDEO_AVCSLICEMODETYPE { > ++ OMX_VIDEO_SLICEMODE_AVCDefault = 0, > ++ OMX_VIDEO_SLICEMODE_AVCMBSlice, > ++ OMX_VIDEO_SLICEMODE_AVCByteSlice, > ++ OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ > ++ OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ > ++ OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF > ++} OMX_VIDEO_AVCSLICEMODETYPE; > ++ > ++/** > ++ * AVC FMO Slice Mode Params > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nNumSliceGroups : Specifies the number of slice groups > ++ * nSliceGroupMapType : Specifies the type of slice groups > ++ * eSliceMode : Specifies the type of slice > ++ */ > ++typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U8 nNumSliceGroups; > ++ OMX_U8 nSliceGroupMapType; > ++ OMX_VIDEO_AVCSLICEMODETYPE eSliceMode; > ++} OMX_VIDEO_PARAM_AVCSLICEFMO; > ++ > ++/** > ++ * AVC IDR Period Configs > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nIDRPeriod : Specifies periodicity of IDR frames > ++ * nPFrames : Specifies internal of coding Intra frames > ++ */ > ++typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nIDRPeriod; > ++ OMX_U32 nPFrames; > ++} OMX_VIDEO_CONFIG_AVCINTRAPERIOD; > ++ > ++/** > ++ * AVC NAL Size Configs > ++ * > ++ * STRUCT MEMBERS: > ++ * nSize : Size of the structure in bytes > ++ * nVersion : OMX specification version information > ++ * nPortIndex : Port that this structure applies to > ++ * nNaluBytes : Specifies the NAL unit size > ++ */ > ++typedef struct OMX_VIDEO_CONFIG_NALSIZE { > ++ OMX_U32 nSize; > ++ OMX_VERSIONTYPE nVersion; > ++ OMX_U32 nPortIndex; > ++ OMX_U32 nNaluBytes; > ++} OMX_VIDEO_CONFIG_NALSIZE; > ++ > ++/** @} */ > ++ > ++#ifdef __cplusplus > ++} > ++#endif /* __cplusplus */ > ++ > ++#endif > ++/* File EOF */ > ++ > diff --git a/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-001-pkgconfig.patch b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-001-pkgconfig.patch > new file mode 100644 > index 0000000..7743c5c > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries-001-pkgconfig.patch > @@ -0,0 +1,42 @@ > +diff -rupN a/usr/lib/pkgconfig/egl.pc b/usr/lib/pkgconfig/egl.pc > +--- a/usr/lib/pkgconfig/egl.pc 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/lib/pkgconfig/egl.pc 2014-11-03 15:57:00.428740000 +0100 > +@@ -0,0 +1,10 @@ > ++prefix=/usr > ++exec_prefix=${prefix} > ++libdir=/usr/lib > ++includedir=/usr/include > ++ > ++Name: egl > ++Description: EGL implementation > ++Version: 1 > ++Cflags: -I${includedir}/EGL > ++Libs: -L${libdir} -lEGL > +diff -rupN a/usr/lib/pkgconfig/gles.pc b/usr/lib/pkgconfig/gles.pc > +--- a/usr/lib/pkgconfig/gles.pc 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/lib/pkgconfig/gles.pc 2014-11-03 15:57:06.036740000 +0100 > +@@ -0,0 +1,10 @@ > ++prefix=/usr > ++exec_prefix=${prefix} > ++libdir=/usr/lib > ++includedir=/usr/include > ++ > ++Name: glesv2 > ++Description: OpenGL ES 1.1 implementation > ++Version: 1.1 > ++Cflags: -I${includedir}/GLES > ++Libs: -L${libdir} -lGLESv1_CM > +diff -rupN a/usr/lib/pkgconfig/glesv2.pc b/usr/lib/pkgconfig/glesv2.pc > +--- a/usr/lib/pkgconfig/glesv2.pc 1970-01-01 01:00:00.000000000 +0100 > ++++ b/usr/lib/pkgconfig/glesv2.pc 2014-11-03 15:57:13.524740000 +0100 > +@@ -0,0 +1,10 @@ > ++prefix=/usr > ++exec_prefix=${prefix} > ++libdir=/usr/lib > ++includedir=/usr/include > ++ > ++Name: glesv2 > ++Description: OpenGL ES 2 implementation > ++Version: 2 > ++Cflags: -I${includedir}/GLESv2 > ++Libs: -L${libdir} -lGLESv2 > diff --git a/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash > new file mode 100644 > index 0000000..8185593 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash > @@ -0,0 +1,3 @@ > +# From https://developer.nvidia.com/linux-tegra-rel-16 > +sha1 6b57b43f8f9c5b76fa3763144e57c0c16047b1a8 Tegra20_Linux_R16.4.0_armhf.tbz2 > +sha1 44e7f84dd6e3b80d37ecddf9cc133031b2653004 Tegra30_Linux_R16.4.0_armhf.tbz2 > diff --git a/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk > new file mode 100644 > index 0000000..053480a > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk > @@ -0,0 +1,187 @@ > +################################################################################ > +# > +# nvidia-tegra3-binaries > +# > +################################################################################ > + > +NVIDIA_TEGRA23_BINARIES_VERSION = $(NVIDIA_TEGRA23_VERSION) > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA2),y) > +NVIDIA_TEGRA23_BINARIES_SOURCE = Tegra20_Linux_R$(NVIDIA_TEGRA23_BINARIES_VERSION)_armhf.tbz2 > +endif > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA3),y) > +NVIDIA_TEGRA23_BINARIES_SOURCE = Tegra30_Linux_R$(NVIDIA_TEGRA23_BINARIES_VERSION)_armhf.tbz2 > +endif > +NVIDIA_TEGRA23_BINARIES_SITE = $(NVIDIA_TEGRA23_SITE) > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS), y) > +NVIDIA_TEGRA23_BINARIES_LICENSE = License For Customer Use of NVIDIA Software, LGPLv2.1 > +NVIDIA_TEGRA23_BINARIES_LICENSE_FILES = nv_tegra/LICENSE nv_tegra/nv_sample_apps/LICENSE.gst-openmax > +else > +NVIDIA_TEGRA23_BINARIES_LICENSE = License For Customer Use of NVIDIA Software > +NVIDIA_TEGRA23_BINARIES_LICENSE_FILES = nv_tegra/LICENSE > +endif > + > +NVIDIA_TEGRA23_BINARIES_INSTALL_STAGING = YES > +NVIDIA_TEGRA23_BINARIES_INSTALL_TARGET = YES > + > +NVIDIA_TEGRA23_BINARIES_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXv > +NVIDIA_TEGRA23_BINARIES_PROVIDES = libegl libgles libopenmax > + > +NVIDIA_TEGRA23_BINARIES_LIBS_VERSION = nv_tegra_release > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA2),y) > +NVIDIA_TEGRA23_BINARIES_FIRMWARE = \ > + nvrm_avp.bin nvavp_vid_ucode_alt.bin nvavp_os_0ff00000.bin \ > + nvavp_os_eff00000.bin > +endif > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA3),y) > +NVIDIA_TEGRA23_BINARIES_FIRMWARE = \ > + nvrm_avp_0ff00000.bin nvrm_avp_8e000000.bin nvrm_avp_9e000000.bin \ > + nvrm_avp_be000000.bin nvrm_avp_eff00000.bin nvavp_vid_ucode_alt.bin \ > + nvavp_os_0ff00000.bin nvavp_os_eff00000.bin > +endif > + > +NVIDIA_TEGRA23_BINARIES_LIBRARIES = \ > + libardrv_dynamic.so libcgdrv.so libEGL.so.1 libGLESv1_CM.so.1 libGLESv2.so.2 \ > + libKD.so libnvapputil.so libnvavp.so libnvcwm.so libnvdc.so \ > + libnvddk_2d.so libnvddk_2d_v2.so libnvddk_disp.so libnvddk_kbc.so \ > + libnvddk_mipihsi.so libnvddk_nand.so libnvddk_se.so libnvddk_snor.so \ > + libnvddk_spif.so libnvddk_usbphy.so libnvdispatch_helper.so libnvglsi.so \ > + libnvmedia_audio.so libnvmm_audio.so libnvmm_camera.so libnvmm_contentpipe.so \ > + libnvmm_image.so libnvmmlite_audio.so libnvmmlite_image.so libnvmmlite.so \ > + libnvmmlite_utils.so libnvmmlite_video.so libnvmm_manager.so libnvmm_parser.so \ > + libnvmm_service.so libnvmm.so libnvmm_utils.so libnvmm_video.so libnvmm_writer.so \ > + libnvodm_disp.so libnvodm_dtvtuner.so libnvodm_imager.so libnvodm_misc.so \ > + libnvodm_query.so libnvomxilclient.so libnvomx.so libnvos.so libnvparser.so \ > + libnvrm_graphics.so libnvrm.so libnvsm.so libnvtestio.so libnvtestresults.so \ > + libnvtvmr.so libnvwinsys.so libnvwsi.so > + > +ifeq ($(BR2_PACKAGE_JPEG_TEGRA23),y) > +NVIDIA_TEGRA23_BINARIES_PROVIDES += jpeg > +NVIDIA_TEGRA23_BINARIES_LIBRARIES += libjpeg.so > +endif > + > +NVIDIA_TEGRA23_BINARIES_X11ABI_DRIVERS = \ > + tegra_drv.abi5.so tegra_drv.abi6.so tegra_drv.abi7.so tegra_drv.abi8.so \ > + tegra_drv.abi10.so tegra_drv.abi11.so tegra_drv.abi12.so tegra_drv.abi13.so \ > + tegra_drv.abi14.so > + > +NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS = \ > + libgstnv4l2.so libgstnvvidconv.so libgstnvxvimagesink.so libgstomx.so > + > +NVIDIA_TEGRA23_BINARIES_MULTIMEDIA_APPS = nvgstplayer nvgstcapture > + > +NVIDIA_TEGRA23_BINARIES_PKGCONFIG = egl.pc gles.pc glesv2.pc > + > +NVIDIA_TEGRA23_BINARIES_HEADERS = OpenMAX/il KHR KD GLES2 GLES EGL > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V5),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi5.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V6),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi6.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V7),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi7.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V8),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi8.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V10),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi10.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V11),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi11.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V12),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi12.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V13),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi13.so > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_X11ABI_V14),y) > +NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER = tegra_drv.abi14.so > +endif > + > +define NVIDIA_TEGRA23_BINARIES_EXTRACT_CMDS > + bzcat $(DL_DIR)/$(NVIDIA_TEGRA23_BINARIES_SOURCE) | tar --strip-components=1 -C $(@D) -xf - > + rm -rf $(@D)/nv_tegra/nvidia_drivers > + mkdir $(@D)/nv_tegra/nvidia_drivers > + tar -xvf $(@D)/nv_tegra/nvidia_drivers.tbz2 -C $(@D)/nv_tegra/nvidia_drivers/ > + rm -rf $(@D)/nv_tegra/nv_sample_apps/nvgstapps > + mkdir $(@D)/nv_tegra/nv_sample_apps/nvgstapps > + tar -xvf $(@D)/nv_tegra/nv_sample_apps/nvgstapps.tbz2 -C $(@D)/nv_tegra/nv_sample_apps/nvgstapps/ > +endef > + > +define NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS > + $(foreach lib,$(NVIDIA_TEGRA23_BINARIES_LIBRARIES), > + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nvidia_drivers/usr/lib/$(lib) \ > + $(1)/usr/lib/$(lib); \ > + ) > + (cd $(1)/usr/lib; \ > + ln -sf libGLESv2.so.2 libGLESv2.so; \ > + ln -sf libGLESv1_CM.so.1 libGLESv1_CM.so; \ > + ln -sf libEGL.so.1 libEGL.so \ > + ) > + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nvidia_drivers/etc/$(NVIDIA_TEGRA23_BINARIES_LIBS_VERSION) \ > + $(1)/etc/$(NVIDIA_TEGRA23_BINARIES_LIBS_VERSION) > + $(foreach xabi,$(NVIDIA_TEGRA23_BINARIES_X11ABI_DRIVERS), > + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nvidia_drivers/usr/lib/xorg/modules/drivers/$(xabi) \ > + $(1)/usr/lib/xorg/modules/drivers/$(xabi); \ > + ) > + (cd $(1)/usr/lib/xorg/modules/drivers; \ > + ln -sf $(NVIDIA_TEGRA23_BINARIES_X_ABI_DRIVER) tegra_drv.so \ > + ) > +endef > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS),y) > +define NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS > + $(foreach gst_plug,$(NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS), > + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nv_sample_apps/nvgstapps/usr/lib/gstreamer-0.10/$(gst_plug) \ > + $(1)/usr/lib/gstreamer-0.10/$(gst_plug); \ > + ) > +endef > +endif > + > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS),y) > +define NVIDIA_TEGRA23_BINARIES_INSTALL_APPS > + $(foreach apps,$(NVIDIA_TEGRA23_BINARIES_MULTIMEDIA_APPS), > + $(INSTALL) -D -m 0755 $(@D)/nv_tegra/nv_sample_apps/nvgstapps/usr/bin/$(apps) \ > + $(TARGET_DIR)/usr/bin/$(apps); \ > + ) > +endef > +endif > + > +define NVIDIA_TEGRA23_BINARIES_INSTALL_STAGING_CMDS > + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS, $(STAGING_DIR)) > + $(foreach pkgconfig,$(NVIDIA_TEGRA23_BINARIES_PKGCONFIG), > + $(INSTALL) -D -m 0644 $(@D)/usr/lib/pkgconfig/$(pkgconfig) \ > + $(STAGING_DIR)/usr/lib/pkgconfig/$(pkgconfig); \ > + ) > + $(foreach header,$(NVIDIA_TEGRA23_BINARIES_HEADERS), > + $(INSTALL) -d $(STAGING_DIR)/usr/include/$(header); > + $(INSTALL) -D -m 0644 $(@D)/usr/include/$(header)/* \ > + $(STAGING_DIR)/usr/include/$(header)/; \ > + ) > + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS, $(STAGING_DIR)) > +endef > + > +define NVIDIA_TEGRA23_BINARIES_INSTALL_TARGET_CMDS > + $(foreach firmware,$(NVIDIA_TEGRA23_BINARIES_FIRMWARE), > + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nvidia_drivers/lib/firmware/$(firmware) \ > + $(TARGET_DIR)/lib/firmware/$(firmware); \ > + ) > + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS, $(TARGET_DIR)) > + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS, $(TARGET_DIR)) > + $(NVIDIA_TEGRA23_BINARIES_INSTALL_APPS) > +endef > + > +$(eval $(generic-package)) > diff --git a/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in b/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in > new file mode 100644 > index 0000000..0ac5599 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in > @@ -0,0 +1,9 @@ > +config BR2_PACKAGE_NVIDIA_TEGRA23_CODECS > + bool "nvidia-tegra23 codecs" > + depends on BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES > + help > + NVIDIA Tegra restricted codecs from Linux For Tegra 16.4.0 > + These codecs are under > + NVIDIA(r) Tegra(r) Software License Agreement > + > + https://developer.nvidia.com/linux-tegra-rel-16 > diff --git a/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash b/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash > new file mode 100644 > index 0000000..de4a461 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash > @@ -0,0 +1,3 @@ > +# From https://developer.nvidia.com/linux-tegra-rel-16 > +sha1 d0889bf0ca408583a1e88657c6fd18f3659ef1bb Tegra20_Linux-codecs_R16.4.0_armhf.tbz2 > +sha1 a9f298222d3b6a618ef96a6bed9641929b152c8a Tegra30_Linux-codecs_R16.4.0_armhf.tbz2 > diff --git a/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk b/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk > new file mode 100644 > index 0000000..19bc663 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk > @@ -0,0 +1,42 @@ > +################################################################################ > +# > +# nvidia-tegra23-codecs > +# > +################################################################################ > + > +NVIDIA_TEGRA23_CODECS_VERSION = $(NVIDIA_TEGRA23_VERSION) > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA2),y) > +NVIDIA_TEGRA23_CODECS_SOURCE = Tegra20_Linux-codecs_R$(NVIDIA_TEGRA23_CODECS_VERSION)_armhf.tbz2 > +endif > +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_TEGRA3),y) > +NVIDIA_TEGRA23_CODECS_SOURCE = Tegra30_Linux-codecs_R$(NVIDIA_TEGRA23_CODECS_VERSION)_armhf.tbz2 > +endif > +NVIDIA_TEGRA23_CODECS_SITE = $(NVIDIA_TEGRA23_SITE) > +NVIDIA_TEGRA23_CODECS_LICENSE = NVIDIA(r) Tegra(r) Software License Agreement > +NVIDIA_TEGRA23_CODECS_LICENSE_FILES = Tegra_Software_License_Agreement-Tegra-Linux-codecs.txt > +NVIDIA_TEGRA23_CODECS_REDISTRIBUTE = NO > +NVIDIA_TEGRA23_CODECS_DEPENDENCIES = nvidia-tegra23-binaries > +NVIDIA_TEGRA23_CODECS_INSTALL_STAGING = NO > +NVIDIA_TEGRA23_CODECS_INSTALL_TARGET = YES > + > +NVIDIA_TEGRA23_CODECS_FIRMWARE = \ > + nvmm_aacdec.axf nvmm_adtsdec.axf nvmm_h264dec.axf nvmm_h264dec2x.axf \ > + nvmm_jpegdec.axf nvmm_jpegenc.axf nvmm_manager.axf nvmm_mp3dec.axf \ > + nvmm_mpeg4dec.axf nvmm_service.axf > + > +# The archive contains an archive with the firmware codecs > +define NVIDIA_TEGRA23_CODECS_EXTRACT_CMDS > + bzcat $(DL_DIR)/$(NVIDIA_TEGRA23_CODECS_SOURCE) | tar -C $(@D) -xf - > + rm -rf $(@D)/restricted_codecs > + mkdir $(@D)/restricted_codecs > + tar -xvf $(@D)/restricted_codecs.tbz2 -C $(@D)/restricted_codecs/ > +endef > + > +define NVIDIA_TEGRA23_CODECS_INSTALL_TARGET_CMDS > + $(foreach codec,$(NVIDIA_TEGRA23_CODECS_FIRMWARE), > + $(INSTALL) -D -m 0644 $(@D)/restricted_codecs/lib/firmware/$(codec) \ > + $(TARGET_DIR)/lib/firmware/$(codec); \ > + ) > +endef > + > +$(eval $(generic-package)) > diff --git a/package/nvidia-tegra23/nvidia-tegra23.mk b/package/nvidia-tegra23/nvidia-tegra23.mk > new file mode 100644 > index 0000000..2f645d8 > --- /dev/null > +++ b/package/nvidia-tegra23/nvidia-tegra23.mk > @@ -0,0 +1,10 @@ > +################################################################################ > +# > +# nvidia-tegra23 > +# > +################################################################################ > + > +NVIDIA_TEGRA23_SITE = https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T > +NVIDIA_TEGRA23_VERSION = 16.4.0 > + > +include $(sort $(wildcard package/nvidia-tegra23/*/*.mk)) > -- > 2.1.3 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'