Merge "Upadte/Add prebuilt NDK"
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libEGL.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libEGL.so
index bc0e66e..5bd7f30 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libEGL.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libEGL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv1_CM.so
index 344c046..d8f9723 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv2.so
index 181df7a..ea4d19c 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenMAXAL.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenMAXAL.so
index f801d6e..90b7929 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenMAXAL.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenMAXAL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenSLES.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenSLES.so
index 3efc100..af77566 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenSLES.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libOpenSLES.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libandroid.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libandroid.so
index fd59a4d..a5f456b 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libandroid.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libandroid.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libc.so
index cca301b..d7aa49a 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libdl.so
index df4a325..56e6674 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libjnigraphics.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libjnigraphics.so
index 0bc4b74..fbe903c 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libjnigraphics.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libjnigraphics.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libEGL.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libEGL.so
index 5d5e317..dcde3c6 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libEGL.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libEGL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv1_CM.so
index bdf03df..4045443 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv2.so
index 7801167..a1e773c 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenMAXAL.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenMAXAL.so
index 2150934..4f50078 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenMAXAL.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenMAXAL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenSLES.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenSLES.so
index 6732436..cb55f5d 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenSLES.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libOpenSLES.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libandroid.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libandroid.so
index 58dfe03..8e7db22 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libandroid.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libandroid.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libc.so
index 916150a..d052e6f 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libdl.so
index 7915ad2..a334c3e 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libjnigraphics.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libjnigraphics.so
index 12581d7..b044e02 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libjnigraphics.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libjnigraphics.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/liblog.so
index d03a633..d9ce18e 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libm.so
index 160f7cd..cee4464 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libstdc++.so
index d78aeec..12c0131 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libz.so
index c85e733..74c6b12 100755
--- a/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-14/arch-x86/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libc.so
index e08ba5e..c95151a 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libdl.so
index f1ef0a2..baba783 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-3/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libGLESv1_CM.so
index 344c046..d8f9723 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libc.so
index e08ba5e..c95151a 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libdl.so
index f1ef0a2..baba783 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-4/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv1_CM.so
index 344c046..d8f9723 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv2.so
index 181df7a..ea4d19c 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libc.so
index 5ed30e9..ebc5441 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libdl.so
index f1ef0a2..baba783 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-5/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv1_CM.so
index 344c046..d8f9723 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv2.so
index 181df7a..ea4d19c 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libc.so
index 861378c..4d296ec 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libdl.so
index df4a325..56e6674 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libjnigraphics.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libjnigraphics.so
index 0bc4b74..fbe903c 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libjnigraphics.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libjnigraphics.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-8/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/include/asm/types.h b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/include/asm/types.h
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libEGL.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libEGL.so
index bc0e66e..5bd7f30 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libEGL.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libEGL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv1_CM.so
index 344c046..d8f9723 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv2.so
index 181df7a..ea4d19c 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libOpenSLES.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libOpenSLES.so
index 3efc100..af77566 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libOpenSLES.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libOpenSLES.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libandroid.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libandroid.so
index fd59a4d..a5f456b 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libandroid.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libandroid.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libc.so
index cca301b..d7aa49a 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libdl.so
index df4a325..56e6674 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libjnigraphics.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libjnigraphics.so
index 0bc4b74..fbe903c 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libjnigraphics.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libjnigraphics.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/liblog.so
index 3c0ed1d..07e8250 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libm.so
index deda7d1..dec5dde 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libstdc++.so
index f5a0775..b9f5e72 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libthread_db.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libthread_db.so
index 5104c2c..54b50c8 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libthread_db.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libthread_db.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libz.so
index beb6abe..9f8c193 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-arm/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libEGL.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libEGL.so
index 5d5e317..dcde3c6 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libEGL.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libEGL.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv1_CM.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv1_CM.so
index bdf03df..4045443 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv1_CM.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv1_CM.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv2.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv2.so
index 7801167..a1e773c 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv2.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libGLESv2.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libOpenSLES.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libOpenSLES.so
index 6732436..cb55f5d 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libOpenSLES.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libOpenSLES.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libandroid.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libandroid.so
index 58dfe03..8e7db22 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libandroid.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libandroid.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libc.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libc.so
index 916150a..d052e6f 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libc.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libc.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libdl.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libdl.so
index 7915ad2..a334c3e 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libdl.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libdl.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libjnigraphics.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libjnigraphics.so
index 12581d7..b044e02 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libjnigraphics.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libjnigraphics.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/liblog.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/liblog.so
index d03a633..d9ce18e 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/liblog.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/liblog.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libm.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libm.so
index 160f7cd..cee4464 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libm.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libm.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libstdc++.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libstdc++.so
index d78aeec..12c0131 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libstdc++.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libstdc++.so
Binary files differ
diff --git a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libz.so b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libz.so
index c85e733..74c6b12 100755
--- a/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libz.so
+++ b/ndk/android-ndk-r7/platforms/android-9/arch-x86/usr/lib/libz.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_shared.so
index f60bf69..5329854 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_static.a
index 6029db5..f498fda 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi-v7a/libgabi++_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_shared.so
index 3c2ef53..62035e6 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_static.a
index 0cdcabd..a53ad35 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/armeabi/libgabi++_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_shared.so
index 5eee9c7..84b1aef 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_static.a
index fd0deb9..31e9011 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gabi++/libs/x86/libgabi++_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so
index 39c6bbb..dbb10fb 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_static.a
index 8447c05..538df34 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libsupc++.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libsupc++.a
index 8d18d2b..e582ce6 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libsupc++.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libsupc++.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_shared.so
index 2666669..5ec09ea 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_static.a
index 0870825..1bb2f47 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libgnustl_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a
index ee9d588..8e4c3ac 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libsupc++.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_shared.so
index d6e3601..bff0e70 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_static.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_static.a
index 8823434..0af31a1 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libgnustl_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libsupc++.a b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libsupc++.a
index f84c363..6676dcf 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libsupc++.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/gnu-libstdc++/libs/x86/libsupc++.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_shared.so
index a08da4a..ad28af1 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_static.a b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_static.a
index 1f276f3..b9b06cd 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_shared.so
index 40e8eef..be2c880 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a
index f719abf..a7c8663 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_shared.so b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_shared.so
index b4ccb69..dad4a7d 100755
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_shared.so
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_shared.so
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_static.a b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_static.a
index 27f4b04..4c3b988 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_static.a
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/libs/x86/libstlport_static.a
Binary files differ
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_cmath.h b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_cmath.h
index 2867c23..5cb0cd5 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_cmath.h
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_cmath.h
@@ -531,7 +531,7 @@
 #endif
 
 #if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
-#if defined (ANDROID)
+#if defined (__ANDROID__)
 namespace __captured {
 template<typename _Tp> inline int __capture_isfinite(_Tp __f) { return isfinite(__f); }
 template<typename _Tp> inline int __capture_isinf(_Tp __f) { return isinf(__f); }
@@ -573,7 +573,7 @@
 #if !(defined(__HP_aCC) && defined(_STLP_DEBUG))
 using ::hypot;
 #endif
-#if defined (ANDROID)
+#if defined (__ANDROID__)
 using __captured::isfinite;
 using __captured::isinf;
 using __captured::isnan;
@@ -583,7 +583,7 @@
 using ::log10;
 using ::modf;
 using ::pow;
-#if defined (ANDROID)
+#if defined (__ANDROID__)
 using __captured::signbit;
 #endif
 using ::sin;
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_mbstate_t.h b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_mbstate_t.h
index 53566a7..83f085e 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_mbstate_t.h
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_mbstate_t.h
@@ -27,7 +27,7 @@
 
 #if defined (_STLP_USE_OWN_MBSTATE_T)
 #  if !defined (_STLP_CPP_MBSTATE_T) || !defined (__cplusplus) || !defined (_STLP_USE_NEW_C_HEADERS)
-#    if !defined (ANDROID) /* mbstate_t conflicts with Android's definition */
+#    if !defined (__ANDROID__) /* mbstate_t conflicts with Android's definition */
 typedef int mbstate_t;
 #    endif
 #  endif
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_pair.h b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_pair.h
index de0b08e..7da76a9 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_pair.h
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/_pair.h
@@ -43,7 +43,7 @@
 
 _STLP_BEGIN_NAMESPACE
 
-#if defined (ANDROID)
+#if defined (__ANDROID__)
 /* Android has stl_pair.h, prevent using it by defining the header guard. */
 #  define __SGI_STL_INTERNAL_PAIR_H
 #endif
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/config/_system.h b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/config/_system.h
index c0b4add..1e82095 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/config/_system.h
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/config/_system.h
@@ -59,7 +59,7 @@
 #  elif defined (__HP_aCC)
 #    include <stl/config/_hpacc.h>
 #  endif
-#elif defined (ANDROID)
+#elif defined (__ANDROID__)
 /* Android mobile phone platform. Somewhat but not entirely GNU/Linux-like */
 #  include <stl/config/_android.h>
 #elif defined (linux) || defined (__linux__)
diff --git a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/pointers/_tools.h b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/pointers/_tools.h
index ec94806..5bb7b25 100644
--- a/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/pointers/_tools.h
+++ b/ndk/android-ndk-r7/sources/cxx-stl/stlport/stlport/stl/pointers/_tools.h
@@ -90,8 +90,8 @@
 struct _StorageType<_Tp*> {
   // Even if we detect a pointer type we use dispatch function to consider if it can be stored as a void*.
   // For instance function pointer might not necessarily be convertible to void*.
-  enum { use_void_ptr = (sizeof(_UseVoidPtrStorageType(__true_type(),
-                                                       __STATIC_CAST(_Tp*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(__true_type(),
+                                                                  __STATIC_CAST(_Tp*, 0))) == sizeof(char*))  };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             void*,
@@ -101,8 +101,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp const*> {
-  enum { use_void_ptr = (sizeof(_UseConstVoidPtrStorageType(__true_type(),
-                                                            __STATIC_CAST(const _Tp*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(__true_type(),
+                                                                       __STATIC_CAST(const _Tp*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             const void*,
@@ -114,8 +114,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp volatile*> {
-  enum { use_void_ptr = (sizeof(_UseVolatileVoidPtrStorageType(__true_type(),
-                                                               __STATIC_CAST(_Tp volatile*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(__true_type(),
+                                                                          __STATIC_CAST(_Tp volatile*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             volatile void*,
@@ -127,8 +127,8 @@
 
 template <class _Tp>
 struct _StorageType<_Tp const volatile*> {
-  enum { use_void_ptr = (sizeof(_UseConstVolatileVoidPtrStorageType(__true_type(),
-                                                                    __STATIC_CAST(_Tp const volatile*, 0))) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(__true_type(),
+                                                                               __STATIC_CAST(_Tp const volatile*, 0))) == sizeof(char*)) };
   enum { use_const_volatile_void_ptr = use_void_ptr };
   typedef typename __select<use_void_ptr,
                             const volatile void*,
@@ -147,10 +147,10 @@
 #else
   static _Tp __null_rep;
 #endif
-  enum { use_void_ptr = (sizeof(_UseVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_const_void_ptr = (sizeof(_UseConstVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_volatile_void_ptr = (sizeof(_UseVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
-  enum { use_const_volatile_void_ptr = (sizeof(_UseConstVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_const_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_volatile_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
+  enum { use_const_volatile_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) };
 
   typedef typename __select<!use_const_volatile_void_ptr,
                             _Tp,
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/egl.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/egl.h
new file mode 100644
index 0000000..99ea342
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/egl.h
@@ -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 <EGL/eglplatform.h>
+
+#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 --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglext.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglext.h
new file mode 100644
index 0000000..a08932a
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglext.h
@@ -0,0 +1,263 @@
+#ifndef __eglext_h_
+#define __eglext_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright (c) 2007-2010 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.
+*/
+
+#include <EGL/eglplatform.h>
+
+/*************************************************************/
+
+/* Header file version number */
+/* Current version at http://www.khronos.org/registry/egl/ */
+/* $Revision: 11249 $ on $Date: 2010-05-05 09:54:28 -0700 (Wed, 05 May 2010) $ */
+#define EGL_EGLEXT_VERSION 5
+
+#ifndef EGL_KHR_config_attribs
+#define EGL_KHR_config_attribs 1
+#define EGL_CONFORMANT_KHR			0x3042	/* EGLConfig attribute */
+#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR	0x0020	/* EGL_SURFACE_TYPE bitfield */
+#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR		0x0040	/* EGL_SURFACE_TYPE bitfield */
+#endif
+
+#ifndef EGL_KHR_lock_surface
+#define EGL_KHR_lock_surface 1
+#define EGL_READ_SURFACE_BIT_KHR		0x0001	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
+#define EGL_WRITE_SURFACE_BIT_KHR		0x0002	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
+#define EGL_LOCK_SURFACE_BIT_KHR		0x0080	/* EGL_SURFACE_TYPE bitfield */
+#define EGL_OPTIMAL_FORMAT_BIT_KHR		0x0100	/* EGL_SURFACE_TYPE bitfield */
+#define EGL_MATCH_FORMAT_KHR			0x3043	/* EGLConfig attribute */
+#define EGL_FORMAT_RGB_565_EXACT_KHR		0x30C0	/* EGL_MATCH_FORMAT_KHR value */
+#define EGL_FORMAT_RGB_565_KHR			0x30C1	/* EGL_MATCH_FORMAT_KHR value */
+#define EGL_FORMAT_RGBA_8888_EXACT_KHR		0x30C2	/* EGL_MATCH_FORMAT_KHR value */
+#define EGL_FORMAT_RGBA_8888_KHR		0x30C3	/* EGL_MATCH_FORMAT_KHR value */
+#define EGL_MAP_PRESERVE_PIXELS_KHR		0x30C4	/* eglLockSurfaceKHR attribute */
+#define EGL_LOCK_USAGE_HINT_KHR			0x30C5	/* eglLockSurfaceKHR attribute */
+#define EGL_BITMAP_POINTER_KHR			0x30C6	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PITCH_KHR			0x30C7	/* eglQuerySurface attribute */
+#define EGL_BITMAP_ORIGIN_KHR			0x30C8	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR		0x30C9	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR	0x30CA	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR	0x30CB	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR	0x30CC	/* eglQuerySurface attribute */
+#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR	0x30CD	/* eglQuerySurface attribute */
+#define EGL_LOWER_LEFT_KHR			0x30CE	/* EGL_BITMAP_ORIGIN_KHR value */
+#define EGL_UPPER_LEFT_KHR			0x30CF	/* EGL_BITMAP_ORIGIN_KHR value */
+#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 /* EGL_EGLEXT_PROTOTYPES */
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
+#endif
+
+#ifndef EGL_KHR_image
+#define EGL_KHR_image 1
+#define EGL_NATIVE_PIXMAP_KHR			0x30B0	/* eglCreateImageKHR target */
+typedef void *EGLImageKHR;
+#define EGL_NO_IMAGE_KHR			((EGLImageKHR)0)
+#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 /* EGL_EGLEXT_PROTOTYPES */
+typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
+#endif
+
+#ifndef EGL_KHR_vg_parent_image
+#define EGL_KHR_vg_parent_image 1
+#define EGL_VG_PARENT_IMAGE_KHR			0x30BA	/* eglCreateImageKHR target */
+#endif
+
+#ifndef EGL_KHR_gl_texture_2D_image
+#define EGL_KHR_gl_texture_2D_image 1
+#define EGL_GL_TEXTURE_2D_KHR			0x30B1	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_LEVEL_KHR		0x30BC	/* eglCreateImageKHR attribute */
+#endif
+
+#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	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR	0x30B4	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR	0x30B5	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR	0x30B6	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR	0x30B7	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR	0x30B8	/* eglCreateImageKHR target */
+#endif
+
+#ifndef EGL_KHR_gl_texture_3D_image
+#define EGL_KHR_gl_texture_3D_image 1
+#define EGL_GL_TEXTURE_3D_KHR			0x30B2	/* eglCreateImageKHR target */
+#define EGL_GL_TEXTURE_ZOFFSET_KHR		0x30BD	/* eglCreateImageKHR attribute */
+#endif
+
+#ifndef EGL_KHR_gl_renderbuffer_image
+#define EGL_KHR_gl_renderbuffer_image 1
+#define EGL_GL_RENDERBUFFER_KHR			0x30B9	/* eglCreateImageKHR target */
+#endif
+
+#ifndef EGL_KHR_reusable_sync
+#define EGL_KHR_reusable_sync 1
+
+typedef void* EGLSyncKHR;
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+
+#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	/* eglClientWaitSyncKHR <flags> bitfield */
+#define EGL_FOREVER_KHR				0xFFFFFFFFFFFFFFFFull
+#define EGL_NO_SYNC_KHR				((EGLSyncKHR)0)
+#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 /* EGL_EGLEXT_PROTOTYPES */
+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);
+#endif
+
+#ifndef EGL_KHR_image_base
+#define EGL_KHR_image_base 1
+/* Most interfaces defined by EGL_KHR_image_pixmap above */
+#define EGL_IMAGE_PRESERVED_KHR			0x30D2	/* eglCreateImageKHR attribute */
+#endif
+
+#ifndef EGL_KHR_image_pixmap
+#define EGL_KHR_image_pixmap 1
+/* Interfaces defined by EGL_KHR_image above */
+#endif
+
+#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
+
+#ifndef EGL_NV_coverage_sample
+#define EGL_NV_coverage_sample 1
+#define EGL_COVERAGE_BUFFERS_NV 0x30E0
+#define EGL_COVERAGE_SAMPLES_NV 0x30E1
+#endif
+
+#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
+
+#ifndef EGL_NV_sync
+#define EGL_NV_sync 1
+#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 void* EGLSyncNV;
+typedef unsigned long long EGLTimeNV;
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
+EGLBoolean eglDestroySyncNV (EGLSyncNV sync);
+EGLBoolean eglFenceNV (EGLSyncNV sync);
+EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
+EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
+EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
+#endif /* EGL_EGLEXT_PROTOTYPES */
+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);
+#endif
+
+#ifndef EGL_KHR_fence_sync
+#define EGL_KHR_fence_sync 1
+/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR	0x30F0
+#define EGL_SYNC_CONDITION_KHR			0x30F8
+#define EGL_SYNC_FENCE_KHR			0x30F9
+#endif
+
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+struct ANativeWindowBuffer;
+#define EGL_NATIVE_BUFFER_ANDROID               0x3140  /* eglCreateImageKHR target */
+#endif
+
+#ifndef EGL_ANDROID_swap_rectangle
+#define EGL_ANDROID_swap_rectangle 1
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSetSwapRectangleANDROID (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
+#endif /* EGL_EGLEXT_PROTOTYPES */
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
+#endif
+
+#ifndef EGL_ANDROID_recordable
+#define EGL_ANDROID_recordable 1
+#define EGL_RECORDABLE_ANDROID                  0x3142  /* EGLConfig attribute */
+#endif
+
+/* EGL_NV_system_time
+ */
+#ifndef EGL_NV_system_time
+#define EGL_NV_system_time 1
+typedef khronos_int64_t EGLint64NV;
+typedef khronos_uint64_t EGLuint64NV;
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void);
+EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void);
+#endif
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void);
+typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglplatform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglplatform.h
new file mode 100644
index 0000000..bfac71b
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/EGL/eglplatform.h
@@ -0,0 +1,120 @@
+#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: 9724 $ on $Date: 2009-12-02 02:05:33 -0800 (Wed, 02 Dec 2009) $
+ *
+ * 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 <KHR/khrplatform.h>
+
+/* 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".
+ */
+
+#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 <windows.h>
+
+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(__ANDROID__) || defined(ANDROID)
+
+#include <android/native_window.h>
+
+struct egl_native_pixmap_t;
+
+typedef struct ANativeWindow*           EGLNativeWindowType;
+typedef struct egl_native_pixmap_t*     EGLNativePixmapType;
+typedef void*                           EGLNativeDisplayType;
+
+#elif defined(__unix__)
+
+/* X11 (tentative)  */
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef Display *EGLNativeDisplayType;
+typedef Pixmap   EGLNativePixmapType;
+typedef Window   EGLNativeWindowType;
+
+#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 --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/gl.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/gl.h
new file mode 100644
index 0000000..5b8d85a
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/gl.h
@@ -0,0 +1,770 @@
+#ifndef __gl_h_
+#define __gl_h_
+
+/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */
+
+#include <GLES/glplatform.h>
+
+#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 --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glext.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glext.h
new file mode 100644
index 0000000..65ab5e4
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glext.h
@@ -0,0 +1,1014 @@
+#ifndef __glext_h_
+#define __glext_h_
+
+/* $Revision: 10965 $ on $Date:: 2010-04-09 02:11:29 -0700 #$ */
+
+#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_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_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
+
+/* GL_OES_EGL_image_external */
+#ifndef GL_OES_EGL_image_external
+#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
+#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_texture_2D_limited_npot */
+/* 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_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_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
+
+/*------------------------------------------------------------------------*
+ * 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_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_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
+
+/* GL_OES_EGL_image_external */
+#ifndef GL_OES_EGL_image_external
+#define GL_OES_EGL_image_external 1
+#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_texture_2D_limited_npot */
+#ifndef GL_APPLE_texture_2D_limited_npot
+#define GL_APPLE_texture_2D_limited_npot 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_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 mode, GLint *first, GLsizei *count, GLsizei primcount);
+GL_API void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, 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_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
+
+/*------------------------------------------------------------------------*
+ * 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 p, const GLfloat *eqn);
+GL_API void GL_APIENTRY glClipPlanexIMG (GLenum p, const GLfixed *eqn);
+#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 target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+#endif
+typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (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 n, const GLuint *fences);
+GL_API void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
+GL_API GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
+GL_API GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
+GL_API void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
+GL_API void GL_APIENTRY glFinishFenceNV (GLuint fence);
+GL_API void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
+#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 --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glplatform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glplatform.h
new file mode 100644
index 0000000..2db6ee2
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES/glplatform.h
@@ -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 <KHR/khrplatform.h>
+
+#ifndef GL_API
+#define GL_API      KHRONOS_APICALL
+#endif
+
+#ifndef GL_APIENTRY
+#define GL_APIENTRY KHRONOS_APIENTRY
+#endif
+
+#endif /* __glplatform_h_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2.h
new file mode 100644
index 0000000..e1d3b87
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2.h
@@ -0,0 +1,621 @@
+#ifndef __gl2_h_
+#define __gl2_h_
+
+/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
+
+#include <GLES2/gl2platform.h>
+
+#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/ .
+ */
+
+/*-------------------------------------------------------------------------
+ * Data type definitions
+ *-----------------------------------------------------------------------*/
+
+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;
+
+/* GL types for handling large vertex buffer objects */
+typedef khronos_intptr_t GLintptr;
+typedef khronos_ssize_t  GLsizeiptr;
+
+/* OpenGL ES core versions */
+#define GL_ES_VERSION_2_0                 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 (not supported in ES20) */
+/*      GL_NEVER */
+/*      GL_LESS */
+/*      GL_EQUAL */
+/*      GL_LEQUAL */
+/*      GL_GREATER */
+/*      GL_NOTEQUAL */
+/*      GL_GEQUAL */
+/*      GL_ALWAYS */
+
+/* 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 */
+
+/* BlendEquationSeparate */
+#define GL_FUNC_ADD                       0x8006
+#define GL_BLEND_EQUATION                 0x8009
+#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
+#define GL_BLEND_EQUATION_ALPHA           0x883D
+
+/* BlendSubtract */
+#define GL_FUNC_SUBTRACT                  0x800A
+#define GL_FUNC_REVERSE_SUBTRACT          0x800B
+
+/* Separate Blend Functions */
+#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
+
+/* 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_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
+
+/* 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_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
+
+/* ErrorCode */
+#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
+
+/* FrontFaceDirection */
+#define GL_CW                             0x0900
+#define GL_CCW                            0x0901
+
+/* GetPName */
+#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
+/*      GL_SCISSOR_TEST */
+#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
+/*      GL_POLYGON_OFFSET_FILL */
+#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
+
+/* 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_GENERATE_MIPMAP_HINT            0x8192
+
+/* DataType */
+#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
+
+/* PixelFormat */
+#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
+
+/* 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
+
+/* Shaders */
+#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
+
+/* StencilFunction */
+#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
+
+/* StencilOp */
+/*      GL_ZERO */
+#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
+
+/* StringName */
+#define GL_VENDOR                         0x1F00
+#define GL_RENDERER                       0x1F01
+#define GL_VERSION                        0x1F02
+#define GL_EXTENSIONS                     0x1F03
+
+/* 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
+
+/* TextureTarget */
+/*      GL_TEXTURE_2D */
+#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
+
+/* 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
+
+/* TextureWrapMode */
+#define GL_REPEAT                         0x2901
+#define GL_CLAMP_TO_EDGE                  0x812F
+#define GL_MIRRORED_REPEAT                0x8370
+
+/* Uniform Types */
+#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
+
+/* Vertex Arrays */
+#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
+
+/* Read Format */
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
+
+/* Shader Source */
+#define GL_COMPILE_STATUS                 0x8B81
+#define GL_INFO_LOG_LENGTH                0x8B84
+#define GL_SHADER_SOURCE_LENGTH           0x8B88
+#define GL_SHADER_COMPILER                0x8DFA
+
+/* Shader Binary */
+#define GL_SHADER_BINARY_FORMATS          0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
+
+/* Shader Precision-Specified Types */
+#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
+
+/* Framebuffer Object. */
+#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_INDEX                  0x1901
+#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 core functions.
+ *-----------------------------------------------------------------------*/
+
+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 (GLclampf red, GLclampf green, GLclampf blue, GLclampf 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 srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
+GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
+GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
+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 GLvoid* data);
+GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* 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 (GLclampf zNear, GLclampf zFar);
+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 GLvoid* 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 int          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 int          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, GLvoid** 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, GLvoid* 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 (GLclampf value, GLboolean invert);
+GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** 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 fail, GLenum zfail, GLenum zpass);
+GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* 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 GLvoid* pixels);
+GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
+GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
+GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
+GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
+GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
+GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
+GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
+GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
+GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
+GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
+GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
+GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
+GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
+GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
+GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
+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 indx, GLfloat x);
+GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
+GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
+GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
+GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
+GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
+GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
+GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
+GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gl2_h_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2ext.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2ext.h
new file mode 100644
index 0000000..9db4e25
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2ext.h
@@ -0,0 +1,816 @@
+#ifndef __gl2ext_h_
+#define __gl2ext_h_
+
+/* $Revision: 10969 $ on $Date:: 2010-04-09 02:27:15 -0700 #$ */
+
+#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_compressed_ETC1_RGB8_texture */
+#ifndef GL_OES_compressed_ETC1_RGB8_texture
+#define GL_ETC1_RGB8_OES                                        0x8D64
+#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
+
+/* 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_depth_texture */
+/* No new tokens introduced by this extension. */
+
+/* GL_OES_EGL_image */
+#ifndef GL_OES_EGL_image
+typedef void* GLeglImageOES;
+#endif
+
+/* GL_OES_element_index_uint */
+#ifndef GL_OES_element_index_uint
+#define GL_UNSIGNED_INT                                         0x1405
+#endif
+
+/* GL_OES_get_program_binary */
+#ifndef GL_OES_get_program_binary
+#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
+#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
+#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
+#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_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_rgb8_rgba8 */
+#ifndef GL_OES_rgb8_rgba8
+#define GL_RGB8_OES                                             0x8051
+#define GL_RGBA8_OES                                            0x8058
+#endif
+
+/* GL_OES_standard_derivatives */
+#ifndef GL_OES_standard_derivatives
+#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
+#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_texture_3D */
+#ifndef GL_OES_texture_3D
+#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
+#endif
+
+/* GL_OES_texture_float */
+/* No new tokens introduced by this extension. */
+
+/* GL_OES_texture_float_linear */
+/* No new tokens introduced by this extension. */
+
+/* GL_OES_texture_half_float */
+#ifndef GL_OES_texture_half_float
+#define GL_HALF_FLOAT_OES                                       0x8D61
+#endif
+
+/* GL_OES_texture_half_float_linear */
+/* No new tokens introduced by this extension. */
+
+/* GL_OES_texture_npot */
+/* No new tokens introduced by this extension. */
+
+/* GL_OES_vertex_array_object */
+#ifndef GL_OES_vertex_array_object
+#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
+#endif
+
+/* GL_OES_vertex_half_float */
+/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
+
+/* GL_OES_vertex_type_10_10_10_2 */
+#ifndef GL_OES_vertex_type_10_10_10_2
+#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
+#define GL_INT_10_10_10_2_OES                                   0x8DF7
+#endif
+
+/* GL_OES_EGL_image_external */
+#ifndef GL_OES_EGL_image_external
+#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
+#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
+#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
+#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
+#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
+
+/* GL_AMD_performance_monitor */
+#ifndef GL_AMD_performance_monitor
+#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
+#endif
+
+/* GL_AMD_program_binary_Z400 */
+#ifndef GL_AMD_program_binary_Z400
+#define GL_Z400_BINARY_AMD                                      0x8740
+#endif
+
+/*------------------------------------------------------------------------*
+ * 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_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_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_type_2_10_10_10_REV */
+#ifndef GL_EXT_texture_type_2_10_10_10_REV
+#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
+#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
+
+/*------------------------------------------------------------------------*
+ * IMG extension tokens
+ *------------------------------------------------------------------------*/
+
+/* GL_IMG_program_binary */
+#ifndef GL_IMG_program_binary
+#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
+#endif
+
+/* 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_shader_binary */
+#ifndef GL_IMG_shader_binary
+#define GL_SGX_BINARY_IMG                                       0x8C0A
+#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_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
+
+/* GL_NV_coverage_sample */
+#ifndef GL_NV_coverage_sample
+#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                               0x8000
+#endif
+
+/* GL_NV_depth_nonlinear */
+#ifndef GL_NV_depth_nonlinear
+#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
+#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_compressed_ETC1_RGB8_texture */
+#ifndef GL_OES_compressed_ETC1_RGB8_texture
+#define GL_OES_compressed_ETC1_RGB8_texture 1
+#endif
+
+/* GL_OES_compressed_paletted_texture */
+#ifndef GL_OES_compressed_paletted_texture
+#define GL_OES_compressed_paletted_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_depth_texture */
+#ifndef GL_OES_depth_texture
+#define GL_OES_depth_texture 1
+#endif
+
+/* GL_OES_EGL_image */
+#ifndef GL_OES_EGL_image
+#define GL_OES_EGL_image 1
+#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
+typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
+typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
+#endif
+
+/* GL_OES_element_index_uint */
+#ifndef GL_OES_element_index_uint
+#define GL_OES_element_index_uint 1
+#endif
+
+/* GL_OES_fbo_render_mipmap */
+#ifndef GL_OES_fbo_render_mipmap
+#define GL_OES_fbo_render_mipmap 1
+#endif
+
+/* GL_OES_fragment_precision_high */
+#ifndef GL_OES_fragment_precision_high
+#define GL_OES_fragment_precision_high 1
+#endif
+
+/* GL_OES_get_program_binary */
+#ifndef GL_OES_get_program_binary
+#define GL_OES_get_program_binary 1
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
+GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
+#endif
+typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
+typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
+#endif
+
+/* GL_OES_mapbuffer */
+#ifndef GL_OES_mapbuffer
+#define GL_OES_mapbuffer 1
+#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, 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_packed_depth_stencil */
+#ifndef GL_OES_packed_depth_stencil
+#define GL_OES_packed_depth_stencil 1
+#endif
+
+/* GL_OES_rgb8_rgba8 */
+#ifndef GL_OES_rgb8_rgba8
+#define GL_OES_rgb8_rgba8 1
+#endif
+
+/* GL_OES_standard_derivatives */
+#ifndef GL_OES_standard_derivatives
+#define GL_OES_standard_derivatives 1
+#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_texture_3D */
+#ifndef GL_OES_texture_3D
+#define GL_OES_texture_3D 1
+#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 GLvoid* 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 GLvoid* 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 GLvoid* 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 GLvoid* data);
+GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+#endif
+typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* 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 GLvoid* 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 GLvoid* 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 GLvoid* data);
+typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+#endif
+
+/* GL_OES_texture_float */
+#ifndef GL_OES_texture_float
+#define GL_OES_texture_float 1
+#endif
+
+/* GL_OES_texture_float_linear */
+#ifndef GL_OES_texture_float_linear
+#define GL_OES_texture_float_linear 1
+#endif
+
+/* GL_OES_texture_half_float */
+#ifndef GL_OES_texture_half_float
+#define GL_OES_texture_half_float 1
+#endif
+
+/* GL_OES_texture_half_float_linear */
+#ifndef GL_OES_texture_half_float_linear
+#define GL_OES_texture_half_float_linear 1
+#endif
+
+/* GL_OES_texture_npot */
+#ifndef GL_OES_texture_npot
+#define GL_OES_texture_npot 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_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
+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
+
+/* GL_OES_vertex_half_float */
+#ifndef GL_OES_vertex_half_float
+#define GL_OES_vertex_half_float 1
+#endif
+
+/* GL_OES_vertex_type_10_10_10_2 */
+#ifndef GL_OES_vertex_type_10_10_10_2
+#define GL_OES_vertex_type_10_10_10_2 1
+#endif
+
+/* GL_OES_EGL_image_external */
+#ifndef GL_OES_EGL_image_external
+#define GL_OES_EGL_image_external 1
+#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
+
+/* AMD_performance_monitor */
+#ifndef GL_AMD_performance_monitor
+#define GL_AMD_performance_monitor 1
+#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, GLvoid *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 *countersList);
+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
+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, GLvoid *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 *countersList);
+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);
+#endif
+
+/* GL_AMD_program_binary_Z400 */
+#ifndef GL_AMD_program_binary_Z400
+#define GL_AMD_program_binary_Z400 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_APICALL 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
+
+#ifndef GL_EXT_multi_draw_arrays
+#define GL_EXT_multi_draw_arrays 1
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, 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_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_type_2_10_10_10_REV */
+#ifndef GL_EXT_texture_type_2_10_10_10_REV
+#define GL_EXT_texture_type_2_10_10_10_REV 1
+#endif
+
+/* GL_EXT_texture_compression_dxt1 */
+#ifndef GL_EXT_texture_compression_dxt1
+#define GL_EXT_texture_compression_dxt1 1
+#endif
+
+/*------------------------------------------------------------------------*
+ * IMG extension functions
+ *------------------------------------------------------------------------*/
+
+/* GL_IMG_program_binary */
+#ifndef GL_IMG_program_binary
+#define GL_IMG_program_binary 1
+#endif
+
+/* GL_IMG_read_format */
+#ifndef GL_IMG_read_format
+#define GL_IMG_read_format 1
+#endif
+
+/* GL_IMG_shader_binary */
+#ifndef GL_IMG_shader_binary
+#define GL_IMG_shader_binary 1
+#endif
+
+/* GL_IMG_texture_compression_pvrtc */
+#ifndef GL_IMG_texture_compression_pvrtc
+#define GL_IMG_texture_compression_pvrtc 1
+#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_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
+typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+#endif
+
+/*------------------------------------------------------------------------*
+ * NV extension functions
+ *------------------------------------------------------------------------*/
+
+/* GL_NV_fence */
+#ifndef GL_NV_fence
+#define GL_NV_fence 1
+#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
+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
+
+/* GL_NV_coverage_sample */
+#ifndef GL_NV_coverage_sample
+#define GL_NV_coverage_sample 1
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
+GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
+#endif
+typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
+typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
+#endif
+
+/* GL_NV_depth_nonlinear */
+#ifndef GL_NV_depth_nonlinear
+#define GL_NV_depth_nonlinear 1
+#endif
+
+/*------------------------------------------------------------------------*
+ * QCOM extension functions
+ *------------------------------------------------------------------------*/
+
+/* GL_QCOM_driver_control */
+#ifndef GL_QCOM_driver_control
+#define GL_QCOM_driver_control 1
+#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
+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_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, GLvoid *texels);
+GL_APICALL 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_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
+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_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+GL_APICALL 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 /* __gl2ext_h_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2platform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2platform.h
new file mode 100644
index 0000000..c9fa3c4
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/GLES2/gl2platform.h
@@ -0,0 +1,30 @@
+#ifndef __gl2platform_h_
+#define __gl2platform_h_
+
+/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -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 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 <KHR/khrplatform.h>
+
+#ifndef GL_APICALL
+#define GL_APICALL  KHRONOS_APICALL
+#endif
+
+#ifndef GL_APIENTRY
+#define GL_APIENTRY KHRONOS_APIENTRY
+#endif
+
+#endif /* __gl2platform_h_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/KHR/khrplatform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/KHR/khrplatform.h
new file mode 100644
index 0000000..75bc551
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/KHR/khrplatform.h
@@ -0,0 +1,243 @@
+#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.
+*/
+
+/* Platform-specific types and definitions.
+ * $Revision: 7244 $ on $Date: 2009-01-20 17:06:59 -0800 (Tue, 20 Jan 2009) $
+ *
+ * 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.
+ *    http://www.khronos.org/registry/implementers_guide.pdf
+ *
+ *
+ * This file should be included as
+ *        #include <KHR/khrplatform.h>
+ * by the Khronos API header file that uses its types and defines.
+ *
+ * The types in this file should only be used to define API-specific types.
+ * Types defined in this file:
+ *    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_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
+ * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
+ *
+ *
+ * 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
+#elif defined(__ANDROID__)
+#   define KHRONOS_APICALL __attribute__((visibility("default")))
+#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 <stdint.h>
+ */
+#include <stdint.h>
+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 <inttypes.h>
+ */
+#include <inttypes.h>
+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 <stdint.h>
+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;
+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;
+
+#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
+
+
+#endif /* __khrplatform_h_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL.h
new file mode 100644
index 0000000..d31283c
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL.h
@@ -0,0 +1,3195 @@
+/*
+ * Copyright (c) 2007-2010 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.
+ *
+ * OpenMAXAL.h - OpenMAX AL version 1.0.1
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file is a standard OpenMAX AL header file and should not be   */
+/* modified in any way.                                                     */
+/****************************************************************************/
+
+#ifndef _OPENMAXAL_H_
+#define _OPENMAXAL_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "OpenMAXAL_Platform.h"
+
+
+  /*****************************************************************/
+  /* TYPES                                                         */
+  /*****************************************************************/
+
+/* remap common types to XA types for clarity */
+typedef xa_int8_t   XAint8;   /* 8 bit signed integer    */
+typedef xa_uint8_t  XAuint8;  /* 8 bit unsigned integer  */
+typedef xa_int16_t  XAint16;  /* 16 bit signed integer   */
+typedef xa_uint16_t XAuint16; /* 16 bit unsigned integer */
+typedef xa_int32_t  XAint32;  /* 32 bit signed integer   */
+typedef xa_uint32_t XAuint32; /* 32 bit unsigned integer */
+typedef xa_uint64_t XAuint64; /* 64 bit unsigned integer */
+
+typedef XAuint32    XAboolean;
+typedef XAuint8     XAchar;
+typedef XAint16     XAmillibel;
+typedef XAuint32    XAmillisecond;
+typedef XAuint32    XAmilliHertz;
+typedef XAint32     XAmillimeter;
+typedef XAint32     XAmillidegree;
+typedef XAint16     XApermille;
+typedef XAuint32    XAmicrosecond;
+typedef XAuint64    XAtime;
+typedef XAuint32    XAresult;
+
+#define XA_BOOLEAN_FALSE                    ((XAuint32) 0x00000000)
+#define XA_BOOLEAN_TRUE                     ((XAuint32) 0x00000001)
+
+#define XA_MILLIBEL_MAX                     ((XAmillibel) 0x7FFF)
+#define XA_MILLIBEL_MIN                     ((XAmillibel) (-XA_MILLIBEL_MAX-1))
+
+#define XA_MILLIHERTZ_MAX                   ((XAmilliHertz) 0xFFFFFFFF)
+
+#define XA_MILLIMETER_MAX                   ((XAmillimeter) 0x7FFFFFFF)
+
+
+
+  /*****************************************************************/
+  /* RESULT CODES                                                  */
+  /*****************************************************************/
+
+#define XA_RESULT_SUCCESS                   ((XAuint32) 0x00000000)
+#define XA_RESULT_PRECONDITIONS_VIOLATED    ((XAuint32) 0x00000001)
+#define XA_RESULT_PARAMETER_INVALID         ((XAuint32) 0x00000002)
+#define XA_RESULT_MEMORY_FAILURE            ((XAuint32) 0x00000003)
+#define XA_RESULT_RESOURCE_ERROR            ((XAuint32) 0x00000004)
+#define XA_RESULT_RESOURCE_LOST             ((XAuint32) 0x00000005)
+#define XA_RESULT_IO_ERROR                  ((XAuint32) 0x00000006)
+#define XA_RESULT_BUFFER_INSUFFICIENT       ((XAuint32) 0x00000007)
+#define XA_RESULT_CONTENT_CORRUPTED         ((XAuint32) 0x00000008)
+#define XA_RESULT_CONTENT_UNSUPPORTED       ((XAuint32) 0x00000009)
+#define XA_RESULT_CONTENT_NOT_FOUND         ((XAuint32) 0x0000000A)
+#define XA_RESULT_PERMISSION_DENIED         ((XAuint32) 0x0000000B)
+#define XA_RESULT_FEATURE_UNSUPPORTED       ((XAuint32) 0x0000000C)
+#define XA_RESULT_INTERNAL_ERROR            ((XAuint32) 0x0000000D)
+#define XA_RESULT_UNKNOWN_ERROR             ((XAuint32) 0x0000000E)
+#define XA_RESULT_OPERATION_ABORTED         ((XAuint32) 0x0000000F)
+#define XA_RESULT_CONTROL_LOST              ((XAuint32) 0x00000010)
+
+
+
+  /*****************************************************************/
+  /* INTERFACE ID DEFINITION                                       */
+  /*****************************************************************/
+
+/* Interface ID defined as a UUID */
+typedef const struct XAInterfaceID_ {
+    XAuint32 time_low;
+    XAuint16 time_mid;
+    XAuint16 time_hi_and_version;
+    XAuint16 clock_seq;
+    XAuint8  node[6];
+} * XAInterfaceID;
+
+/* NULL Interface */
+XA_API extern const XAInterfaceID XA_IID_NULL;
+
+
+
+  /*****************************************************************/
+  /* GENERAL INTERFACES, STRUCTS AND DEFINES                       */
+  /*****************************************************************/
+
+/* OBJECT */
+
+#define XA_PRIORITY_LOWEST                      ((XAint32) (-0x7FFFFFFF-1))
+#define XA_PRIORITY_VERYLOW                     ((XAint32) -0x60000000)
+#define XA_PRIORITY_LOW                         ((XAint32) -0x40000000)
+#define XA_PRIORITY_BELOWNORMAL                 ((XAint32) -0x20000000)
+#define XA_PRIORITY_NORMAL                      ((XAint32) 0x00000000)
+#define XA_PRIORITY_ABOVENORMAL                 ((XAint32) 0x20000000)
+#define XA_PRIORITY_HIGH                        ((XAint32) 0x40000000)
+#define XA_PRIORITY_VERYHIGH                    ((XAint32) 0x60000000)
+#define XA_PRIORITY_HIGHEST                     ((XAint32) 0x7FFFFFFF)
+
+#define XA_OBJECT_EVENT_RUNTIME_ERROR           ((XAuint32) 0x00000001)
+#define XA_OBJECT_EVENT_ASYNC_TERMINATION       ((XAuint32) 0x00000002)
+#define XA_OBJECT_EVENT_RESOURCES_LOST          ((XAuint32) 0x00000003)
+#define XA_OBJECT_EVENT_RESOURCES_AVAILABLE     ((XAuint32) 0x00000004)
+#define XA_OBJECT_EVENT_ITF_CONTROL_TAKEN       ((XAuint32) 0x00000005)
+#define XA_OBJECT_EVENT_ITF_CONTROL_RETURNED    ((XAuint32) 0x00000006)
+#define XA_OBJECT_EVENT_ITF_PARAMETERS_CHANGED  ((XAuint32) 0x00000007)
+
+#define XA_OBJECT_STATE_UNREALIZED              ((XAuint32) 0x00000001)
+#define XA_OBJECT_STATE_REALIZED                ((XAuint32) 0x00000002)
+#define XA_OBJECT_STATE_SUSPENDED               ((XAuint32) 0x00000003)
+
+
+XA_API extern const XAInterfaceID XA_IID_OBJECT;
+
+struct XAObjectItf_;
+typedef const struct XAObjectItf_ * const * XAObjectItf;
+
+typedef void (XAAPIENTRY * xaObjectCallback) (
+    XAObjectItf caller,
+    const void * pContext,
+    XAuint32 event,
+    XAresult result,
+    XAuint32 param,
+    void * pInterface
+);
+
+struct XAObjectItf_ {
+    XAresult (*Realize) (
+        XAObjectItf self,
+        XAboolean async
+    );
+    XAresult (*Resume) (
+        XAObjectItf self,
+        XAboolean async
+    );
+    XAresult (*GetState) (
+        XAObjectItf self,
+        XAuint32 * pState
+    );
+    XAresult (*GetInterface) (
+        XAObjectItf self,
+        const XAInterfaceID iid,
+        void * pInterface
+    );
+    XAresult (*RegisterCallback) (
+        XAObjectItf self,
+        xaObjectCallback callback,
+        void * pContext
+    );
+    void (*AbortAsyncOperation) (
+        XAObjectItf self
+    );
+    void (*Destroy) (
+        XAObjectItf self
+    );
+    XAresult (*SetPriority) (
+        XAObjectItf self,
+        XAint32 priority,
+        XAboolean preemptable
+    );
+    XAresult (*GetPriority) (
+        XAObjectItf self,
+        XAint32 * pPriority,
+        XAboolean * pPreemptable
+    );
+    XAresult (*SetLossOfControlInterfaces) (
+        XAObjectItf self,
+        XAint16 numInterfaces,
+        XAInterfaceID * pInterfaceIDs,
+        XAboolean enabled
+    );
+};
+
+/* CONFIG EXTENSION */
+
+XA_API extern const XAInterfaceID XA_IID_CONFIGEXTENSION;
+
+struct XAConfigExtensionsItf_;
+typedef const struct XAConfigExtensionsItf_
+    * const * XAConfigExtensionsItf;
+
+struct XAConfigExtensionsItf_ {
+    XAresult (*SetConfiguration) (
+        XAConfigExtensionsItf self,
+        const XAchar * configKey,
+        XAuint32 valueSize,
+        const void * pConfigValue
+    );
+    XAresult (*GetConfiguration) (
+        XAConfigExtensionsItf self,
+        const XAchar * configKey,
+        XAuint32 * pValueSize,
+        void * pConfigValue
+    );
+};
+
+/* DYNAMIC INTERFACE MANAGEMENT */
+
+#define XA_DYNAMIC_ITF_EVENT_RUNTIME_ERROR              ((XAuint32) 0x00000001)
+#define XA_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION          ((XAuint32) 0x00000002)
+#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST             ((XAuint32) 0x00000003)
+#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((XAuint32) 0x00000004)
+#define XA_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE        ((XAuint32) 0x00000005)
+
+XA_API extern const XAInterfaceID XA_IID_DYNAMICINTERFACEMANAGEMENT;
+
+struct XADynamicInterfaceManagementItf_;
+typedef const struct XADynamicInterfaceManagementItf_
+    * const * XADynamicInterfaceManagementItf;
+
+typedef void (XAAPIENTRY * xaDynamicInterfaceManagementCallback) (
+    XADynamicInterfaceManagementItf caller,
+    void * pContext,
+    XAuint32 event,
+    XAresult result,
+    const XAInterfaceID iid
+);
+
+struct XADynamicInterfaceManagementItf_ {
+    XAresult (*AddInterface) (
+        XADynamicInterfaceManagementItf self,
+        const XAInterfaceID iid,
+        XAboolean aysnc
+    );
+    XAresult (*RemoveInterface) (
+        XADynamicInterfaceManagementItf self,
+        const XAInterfaceID iid
+    );
+    XAresult (*ResumeInterface) (
+        XADynamicInterfaceManagementItf self,
+        const XAInterfaceID iid,
+        XAboolean aysnc
+    );
+    XAresult (*RegisterCallback) (
+        XADynamicInterfaceManagementItf self,
+        xaDynamicInterfaceManagementCallback callback,
+        void * pContext
+    );
+};
+
+/* DATA SOURCES/SINKS */
+
+#define XA_DATAFORMAT_MIME              ((XAuint32) 0x00000001)
+#define XA_DATAFORMAT_PCM               ((XAuint32) 0x00000002)
+#define XA_DATAFORMAT_RAWIMAGE          ((XAuint32) 0x00000003)
+
+#define XA_DATALOCATOR_URI              ((XAuint32) 0x00000001)
+#define XA_DATALOCATOR_ADDRESS          ((XAuint32) 0x00000002)
+#define XA_DATALOCATOR_IODEVICE         ((XAuint32) 0x00000003)
+#define XA_DATALOCATOR_OUTPUTMIX        ((XAuint32) 0x00000004)
+#define XA_DATALOCATOR_NATIVEDISPLAY    ((XAuint32) 0x00000005)
+#define XA_DATALOCATOR_RESERVED6        ((XAuint32) 0x00000006)
+#define XA_DATALOCATOR_RESERVED7        ((XAuint32) 0x00000007)
+
+typedef struct XADataSink_ {
+    void * pLocator;
+    void * pFormat;
+} XADataSink;
+
+typedef struct XADataSource_ {
+    void * pLocator;
+    void * pFormat;
+} XADataSource;
+
+#define XA_CONTAINERTYPE_UNSPECIFIED    ((XAuint32) 0x00000001)
+#define XA_CONTAINERTYPE_RAW            ((XAuint32) 0x00000002)
+#define XA_CONTAINERTYPE_ASF            ((XAuint32) 0x00000003)
+#define XA_CONTAINERTYPE_AVI            ((XAuint32) 0x00000004)
+#define XA_CONTAINERTYPE_BMP            ((XAuint32) 0x00000005)
+#define XA_CONTAINERTYPE_JPG            ((XAuint32) 0x00000006)
+#define XA_CONTAINERTYPE_JPG2000        ((XAuint32) 0x00000007)
+#define XA_CONTAINERTYPE_M4A            ((XAuint32) 0x00000008)
+#define XA_CONTAINERTYPE_MP3            ((XAuint32) 0x00000009)
+#define XA_CONTAINERTYPE_MP4            ((XAuint32) 0x0000000A)
+#define XA_CONTAINERTYPE_MPEG_ES        ((XAuint32) 0x0000000B)
+#define XA_CONTAINERTYPE_MPEG_PS        ((XAuint32) 0x0000000C)
+#define XA_CONTAINERTYPE_MPEG_TS        ((XAuint32) 0x0000000D)
+#define XA_CONTAINERTYPE_QT             ((XAuint32) 0x0000000E)
+#define XA_CONTAINERTYPE_WAV            ((XAuint32) 0x0000000F)
+#define XA_CONTAINERTYPE_XMF_0          ((XAuint32) 0x00000010)
+#define XA_CONTAINERTYPE_XMF_1          ((XAuint32) 0x00000011)
+#define XA_CONTAINERTYPE_XMF_2          ((XAuint32) 0x00000012)
+#define XA_CONTAINERTYPE_XMF_3          ((XAuint32) 0x00000013)
+#define XA_CONTAINERTYPE_XMF_GENERIC    ((XAuint32) 0x00000014)
+#define XA_CONTAINERTYPE_AMR            ((XAuint32) 0x00000015)
+#define XA_CONTAINERTYPE_AAC            ((XAuint32) 0x00000016)
+#define XA_CONTAINERTYPE_3GPP           ((XAuint32) 0x00000017)
+#define XA_CONTAINERTYPE_3GA            ((XAuint32) 0x00000018)
+#define XA_CONTAINERTYPE_RM             ((XAuint32) 0x00000019)
+#define XA_CONTAINERTYPE_DMF            ((XAuint32) 0x0000001A)
+#define XA_CONTAINERTYPE_SMF            ((XAuint32) 0x0000001B)
+#define XA_CONTAINERTYPE_MOBILE_DLS     ((XAuint32) 0x0000001C)
+#define XA_CONTAINERTYPE_OGG            ((XAuint32) 0x0000001D)
+
+typedef struct XADataFormat_MIME_ {
+    XAuint32 formatType;
+    XAchar * mimeType;
+    XAuint32 containerType;
+} XADataFormat_MIME;
+
+#define XA_BYTEORDER_BIGENDIAN          ((XAuint32) 0x00000001)
+#define XA_BYTEORDER_LITTLEENDIAN       ((XAuint32) 0x00000002)
+
+#define XA_SAMPLINGRATE_8               ((XAuint32)   8000000)
+#define XA_SAMPLINGRATE_11_025          ((XAuint32)  11025000)
+#define XA_SAMPLINGRATE_12              ((XAuint32)  12000000)
+#define XA_SAMPLINGRATE_16              ((XAuint32)  16000000)
+#define XA_SAMPLINGRATE_22_05           ((XAuint32)  22050000)
+#define XA_SAMPLINGRATE_24              ((XAuint32)  24000000)
+#define XA_SAMPLINGRATE_32              ((XAuint32)  32000000)
+#define XA_SAMPLINGRATE_44_1            ((XAuint32)  44100000)
+#define XA_SAMPLINGRATE_48              ((XAuint32)  48000000)
+#define XA_SAMPLINGRATE_64              ((XAuint32)  64000000)
+#define XA_SAMPLINGRATE_88_2            ((XAuint32)  88200000)
+#define XA_SAMPLINGRATE_96              ((XAuint32)  96000000)
+#define XA_SAMPLINGRATE_192             ((XAuint32) 192000000)
+
+#define XA_SPEAKER_FRONT_LEFT               ((XAuint32) 0x00000001)
+#define XA_SPEAKER_FRONT_RIGHT              ((XAuint32) 0x00000002)
+#define XA_SPEAKER_FRONT_CENTER             ((XAuint32) 0x00000004)
+#define XA_SPEAKER_LOW_FREQUENCY            ((XAuint32) 0x00000008)
+#define XA_SPEAKER_BACK_LEFT                ((XAuint32) 0x00000010)
+#define XA_SPEAKER_BACK_RIGHT               ((XAuint32) 0x00000020)
+#define XA_SPEAKER_FRONT_LEFT_OF_CENTER     ((XAuint32) 0x00000040)
+#define XA_SPEAKER_FRONT_RIGHT_OF_CENTER    ((XAuint32) 0x00000080)
+#define XA_SPEAKER_BACK_CENTER              ((XAuint32) 0x00000100)
+#define XA_SPEAKER_SIDE_LEFT                ((XAuint32) 0x00000200)
+#define XA_SPEAKER_SIDE_RIGHT               ((XAuint32) 0x00000400)
+#define XA_SPEAKER_TOP_CENTER               ((XAuint32) 0x00000800)
+#define XA_SPEAKER_TOP_FRONT_LEFT           ((XAuint32) 0x00001000)
+#define XA_SPEAKER_TOP_FRONT_CENTER         ((XAuint32) 0x00002000)
+#define XA_SPEAKER_TOP_FRONT_RIGHT          ((XAuint32) 0x00004000)
+#define XA_SPEAKER_TOP_BACK_LEFT            ((XAuint32) 0x00008000)
+#define XA_SPEAKER_TOP_BACK_CENTER          ((XAuint32) 0x00010000)
+#define XA_SPEAKER_TOP_BACK_RIGHT           ((XAuint32) 0x00020000)
+
+#define XA_PCMSAMPLEFORMAT_FIXED_8          ((XAuint16) 0x0008)
+#define XA_PCMSAMPLEFORMAT_FIXED_16         ((XAuint16) 0x0010)
+#define XA_PCMSAMPLEFORMAT_FIXED_20         ((XAuint16) 0x0014)
+#define XA_PCMSAMPLEFORMAT_FIXED_24         ((XAuint16) 0x0018)
+#define XA_PCMSAMPLEFORMAT_FIXED_28         ((XAuint16) 0x001C)
+#define XA_PCMSAMPLEFORMAT_FIXED_32         ((XAuint16) 0x0020)
+
+typedef struct XADataFormat_PCM_ {
+    XAuint32 formatType;
+    XAuint32 numChannels;
+    XAuint32 samplesPerSec;
+    XAuint32 bitsPerSample;
+    XAuint32 containerSize;
+    XAuint32 channelMask;
+    XAuint32 endianness;
+} XADataFormat_PCM;
+
+#define XA_COLORFORMAT_UNUSED                   ((XAuint32) 0x00000000)
+#define XA_COLORFORMAT_MONOCHROME               ((XAuint32) 0x00000001)
+#define XA_COLORFORMAT_8BITRGB332               ((XAuint32) 0x00000002)
+#define XA_COLORFORMAT_12BITRGB444              ((XAuint32) 0x00000003)
+#define XA_COLORFORMAT_16BITARGB4444            ((XAuint32) 0x00000004)
+#define XA_COLORFORMAT_16BITARGB1555            ((XAuint32) 0x00000005)
+#define XA_COLORFORMAT_16BITRGB565              ((XAuint32) 0x00000006)
+#define XA_COLORFORMAT_16BITBGR565              ((XAuint32) 0x00000007)
+#define XA_COLORFORMAT_18BITRGB666              ((XAuint32) 0x00000008)
+#define XA_COLORFORMAT_18BITARGB1665            ((XAuint32) 0x00000009)
+#define XA_COLORFORMAT_19BITARGB1666            ((XAuint32) 0x0000000A)
+#define XA_COLORFORMAT_24BITRGB888              ((XAuint32) 0x0000000B)
+#define XA_COLORFORMAT_24BITBGR888              ((XAuint32) 0x0000000C)
+#define XA_COLORFORMAT_24BITARGB1887            ((XAuint32) 0x0000000D)
+#define XA_COLORFORMAT_25BITARGB1888            ((XAuint32) 0x0000000E)
+#define XA_COLORFORMAT_32BITBGRA8888            ((XAuint32) 0x0000000F)
+#define XA_COLORFORMAT_32BITARGB8888            ((XAuint32) 0x00000010)
+#define XA_COLORFORMAT_YUV411PLANAR             ((XAuint32) 0x00000011)
+#define XA_COLORFORMAT_YUV420PLANAR             ((XAuint32) 0x00000013)
+#define XA_COLORFORMAT_YUV420SEMIPLANAR         ((XAuint32) 0x00000015)
+#define XA_COLORFORMAT_YUV422PLANAR             ((XAuint32) 0x00000016)
+#define XA_COLORFORMAT_YUV422SEMIPLANAR         ((XAuint32) 0x00000018)
+#define XA_COLORFORMAT_YCBYCR                   ((XAuint32) 0x00000019)
+#define XA_COLORFORMAT_YCRYCB                   ((XAuint32) 0x0000001A)
+#define XA_COLORFORMAT_CBYCRY                   ((XAuint32) 0x0000001B)
+#define XA_COLORFORMAT_CRYCBY                   ((XAuint32) 0x0000001C)
+#define XA_COLORFORMAT_YUV444INTERLEAVED        ((XAuint32) 0x0000001D)
+#define XA_COLORFORMAT_RAWBAYER8BIT             ((XAuint32) 0x0000001E)
+#define XA_COLORFORMAT_RAWBAYER10BIT            ((XAuint32) 0x0000001F)
+#define XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED   ((XAuint32) 0x00000020)
+#define XA_COLORFORMAT_L2                       ((XAuint32) 0x00000021)
+#define XA_COLORFORMAT_L4                       ((XAuint32) 0x00000022)
+#define XA_COLORFORMAT_L8                       ((XAuint32) 0x00000023)
+#define XA_COLORFORMAT_L16                      ((XAuint32) 0x00000024)
+#define XA_COLORFORMAT_L24                      ((XAuint32) 0x00000025)
+#define XA_COLORFORMAT_L32                      ((XAuint32) 0x00000026)
+#define XA_COLORFORMAT_18BITBGR666              ((XAuint32) 0x00000029)
+#define XA_COLORFORMAT_24BITARGB6666            ((XAuint32) 0x0000002A)
+#define XA_COLORFORMAT_24BITABGR6666            ((XAuint32) 0x0000002B)
+
+typedef struct XADataFormat_RawImage_ {
+    XAuint32 formatType;
+    XAuint32 colorFormat;
+    XAuint32 height;
+    XAuint32 width;
+    XAuint32 stride;
+} XADataFormat_RawImage;
+
+typedef struct XADataLocator_Address_ {
+    XAuint32 locatorType;
+    void * pAddress;
+    XAuint32 length;
+} XADataLocator_Address;
+
+#define XA_IODEVICE_AUDIOINPUT          ((XAuint32) 0x00000001)
+#define XA_IODEVICE_LEDARRAY            ((XAuint32) 0x00000002)
+#define XA_IODEVICE_VIBRA               ((XAuint32) 0x00000003)
+#define XA_IODEVICE_CAMERA              ((XAuint32) 0x00000004)
+#define XA_IODEVICE_RADIO               ((XAuint32) 0x00000005)
+
+typedef struct XADataLocator_IODevice_ {
+    XAuint32 locatorType;
+    XAuint32 deviceType;
+    XAuint32 deviceID;
+    XAObjectItf device;
+} XADataLocator_IODevice;
+
+typedef void * XANativeHandle;
+
+typedef struct XADataLocator_NativeDisplay_{
+    XAuint32 locatorType;
+    XANativeHandle hWindow;
+    XANativeHandle hDisplay;
+} XADataLocator_NativeDisplay;
+
+typedef struct XADataLocator_OutputMix {
+    XAuint32 locatorType;
+    XAObjectItf outputMix;
+} XADataLocator_OutputMix;
+
+typedef struct XADataLocator_URI_ {
+    XAuint32 locatorType;
+    XAchar * URI;
+} XADataLocator_URI;
+
+
+/* ENGINE */
+
+#define XA_DEFAULTDEVICEID_AUDIOINPUT   ((XAuint32) 0xFFFFFFFF)
+#define XA_DEFAULTDEVICEID_AUDIOOUTPUT  ((XAuint32) 0xFFFFFFFE)
+#define XA_DEFAULTDEVICEID_LED          ((XAuint32) 0xFFFFFFFD)
+#define XA_DEFAULTDEVICEID_VIBRA        ((XAuint32) 0xFFFFFFFC)
+#define XA_DEFAULTDEVICEID_CAMERA       ((XAuint32) 0xFFFFFFFB)
+
+#define XA_ENGINEOPTION_THREADSAFE      ((XAuint32) 0x00000001)
+#define XA_ENGINEOPTION_LOSSOFCONTROL   ((XAuint32) 0x00000002)
+
+#define XA_OBJECTID_ENGINE              ((XAuint32) 0x00000001)
+#define XA_OBJECTID_LEDDEVICE           ((XAuint32) 0x00000002)
+#define XA_OBJECTID_VIBRADEVICE         ((XAuint32) 0x00000003)
+#define XA_OBJECTID_MEDIAPLAYER         ((XAuint32) 0x00000004)
+#define XA_OBJECTID_MEDIARECORDER       ((XAuint32) 0x00000005)
+#define XA_OBJECTID_RADIODEVICE         ((XAuint32) 0x00000006)
+#define XA_OBJECTID_OUTPUTMIX           ((XAuint32) 0x00000007)
+#define XA_OBJECTID_METADATAEXTRACTOR   ((XAuint32) 0x00000008)
+#define XA_OBJECTID_CAMERADEVICE        ((XAuint32) 0x00000009)
+
+#define XA_PROFILES_MEDIA_PLAYER            ((XAint16) 0x0001)
+#define XA_PROFILES_MEDIA_PLAYER_RECORDER   ((XAint16) 0x0002)
+#define XA_PROFILES_PLUS_MIDI               ((XAint16) 0x0004)
+
+typedef struct XAEngineOption_ {
+    XAuint32 feature;
+    XAuint32 data;
+} XAEngineOption;
+
+XA_API XAresult XAAPIENTRY xaCreateEngine(
+    XAObjectItf * pEngine,
+    XAuint32 numOptions,
+    const XAEngineOption * pEngineOptions,
+    XAuint32 numInterfaces,
+    const XAInterfaceID * pInterfaceIds,
+    const XAboolean * pInterfaceRequired
+);
+
+XA_API XAresult XAAPIENTRY xaQueryNumSupportedEngineInterfaces(
+    XAuint32 * pNumSupportedInterfaces
+);
+
+XA_API XAresult XAAPIENTRY xaQuerySupportedEngineInterfaces(
+    XAuint32 index,
+    XAInterfaceID * pInterfaceId
+);
+
+typedef struct XALEDDescriptor_ {
+    XAuint8 ledCount;
+    XAuint8 primaryLED;
+    XAuint32 colorMask;
+} XALEDDescriptor;
+
+typedef struct XAVibraDescriptor_ {
+    XAboolean supportsFrequency;
+    XAboolean supportsIntensity;
+    XAmilliHertz minFrequency;
+    XAmilliHertz maxFrequency;
+} XAVibraDescriptor;
+
+
+XA_API extern const XAInterfaceID XA_IID_ENGINE;
+
+struct XAEngineItf_;
+typedef const struct XAEngineItf_ * const * XAEngineItf;
+
+struct XAEngineItf_ {
+    XAresult (*CreateCameraDevice) (
+        XAEngineItf self,
+        XAObjectItf * pDevice,
+        XAuint32 deviceID,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateRadioDevice) (
+        XAEngineItf self,
+        XAObjectItf * pDevice,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateLEDDevice) (
+        XAEngineItf self,
+        XAObjectItf * pDevice,
+        XAuint32 deviceID,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+       XAresult (*CreateVibraDevice) (
+        XAEngineItf self,
+        XAObjectItf * pDevice,
+        XAuint32 deviceID,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateMediaPlayer) (
+        XAEngineItf self,
+        XAObjectItf * pPlayer,
+        XADataSource * pDataSrc,
+        XADataSource * pBankSrc,
+        XADataSink * pAudioSnk,
+        XADataSink * pImageVideoSnk,
+        XADataSink * pVibra,
+        XADataSink * pLEDArray,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateMediaRecorder) (
+        XAEngineItf self,
+        XAObjectItf * pRecorder,
+        XADataSource * pAudioSrc,
+        XADataSource * pImageVideoSrc,
+        XADataSink * pDataSnk,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateOutputMix) (
+        XAEngineItf self,
+        XAObjectItf * pMix,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateMetadataExtractor) (
+        XAEngineItf self,
+        XAObjectItf * pMetadataExtractor,
+        XADataSource * pDataSource,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*CreateExtensionObject) (
+        XAEngineItf self,
+        XAObjectItf * pObject,
+        void * pParameters,
+        XAuint32 objectID,
+        XAuint32 numInterfaces,
+        const XAInterfaceID * pInterfaceIds,
+        const XAboolean * pInterfaceRequired
+    );
+    XAresult (*GetImplementationInfo) (
+        XAEngineItf self,
+        XAuint32 * pMajor,
+        XAuint32 * pMinor,
+        XAuint32 * pStep,
+        const XAchar * pImplementationText
+    );
+    XAresult (*QuerySupportedProfiles) (
+        XAEngineItf self,
+        XAint16 * pProfilesSupported
+    );
+    XAresult (*QueryNumSupportedInterfaces) (
+        XAEngineItf self,
+        XAuint32 objectID,
+        XAuint32 * pNumSupportedInterfaces
+    );
+    XAresult (*QuerySupportedInterfaces) (
+        XAEngineItf self,
+        XAuint32 objectID,
+        XAuint32 index,
+        XAInterfaceID * pInterfaceId
+    );
+    XAresult (*QueryNumSupportedExtensions) (
+        XAEngineItf self,
+        XAuint32 * pNumExtensions
+    );
+    XAresult (*QuerySupportedExtension) (
+        XAEngineItf self,
+        XAuint32 index,
+        XAchar * pExtensionName,
+        XAint16 * pNameLength
+    );
+    XAresult (*IsExtensionSupported) (
+        XAEngineItf self,
+        const XAchar * pExtensionName,
+        XAboolean * pSupported
+    );
+    XAresult (*QueryLEDCapabilities) (
+        XAEngineItf self,
+        XAuint32 *pIndex,
+        XAuint32 * pLEDDeviceID,
+        XALEDDescriptor * pDescriptor
+    );
+    XAresult (*QueryVibraCapabilities) (
+        XAEngineItf self,
+        XAuint32 *pIndex,
+        XAuint32 * pVibraDeviceID,
+        XAVibraDescriptor * pDescriptor
+    );
+};
+
+/* THREAD SYNC */
+
+XA_API extern const XAInterfaceID XA_IID_THREADSYNC;
+
+struct XAThreadSyncItf_;
+typedef const struct XAThreadSyncItf_ * const * XAThreadSyncItf;
+
+struct XAThreadSyncItf_ {
+    XAresult (*EnterCriticalSection) (
+        XAThreadSyncItf self
+    );
+    XAresult (*ExitCriticalSection) (
+        XAThreadSyncItf self
+    );
+};
+
+
+
+  /*****************************************************************/
+  /* PLAYBACK RELATED INTERFACES, STRUCTS AND DEFINES              */
+  /*****************************************************************/
+
+/* PLAY */
+
+#define XA_TIME_UNKNOWN                     ((XAuint32) 0xFFFFFFFF)
+
+#define XA_PLAYEVENT_HEADATEND              ((XAuint32) 0x00000001)
+#define XA_PLAYEVENT_HEADATMARKER           ((XAuint32) 0x00000002)
+#define XA_PLAYEVENT_HEADATNEWPOS           ((XAuint32) 0x00000004)
+#define XA_PLAYEVENT_HEADMOVING             ((XAuint32) 0x00000008)
+#define XA_PLAYEVENT_HEADSTALLED            ((XAuint32) 0x00000010)
+
+#define XA_PLAYSTATE_STOPPED                ((XAuint32) 0x00000001)
+#define XA_PLAYSTATE_PAUSED                 ((XAuint32) 0x00000002)
+#define XA_PLAYSTATE_PLAYING                ((XAuint32) 0x00000003)
+
+#define XA_PREFETCHEVENT_STATUSCHANGE       ((XAuint32) 0x00000001)
+#define XA_PREFETCHEVENT_FILLLEVELCHANGE    ((XAuint32) 0x00000002)
+
+#define XA_PREFETCHSTATUS_UNDERFLOW         ((XAuint32) 0x00000001)
+#define XA_PREFETCHSTATUS_SUFFICIENTDATA    ((XAuint32) 0x00000002)
+#define XA_PREFETCHSTATUS_OVERFLOW          ((XAuint32) 0x00000003)
+
+#define XA_SEEKMODE_FAST                    ((XAuint32) 0x0001)
+#define XA_SEEKMODE_ACCURATE                ((XAuint32) 0x0002)
+
+XA_API extern const XAInterfaceID XA_IID_PLAY;
+
+struct XAPlayItf_;
+typedef const struct XAPlayItf_ * const * XAPlayItf;
+
+typedef void (XAAPIENTRY * xaPlayCallback) (
+    XAPlayItf caller,
+    void * pContext,
+    XAuint32 event
+);
+
+struct XAPlayItf_ {
+    XAresult (*SetPlayState) (
+        XAPlayItf self,
+        XAuint32 state
+    );
+    XAresult (*GetPlayState) (
+        XAPlayItf self,
+        XAuint32 * pState
+    );
+    XAresult (*GetDuration) (
+        XAPlayItf self,
+        XAmillisecond * pMsec
+    );
+    XAresult (*GetPosition) (
+        XAPlayItf self,
+        XAmillisecond * pMsec
+    );
+    XAresult (*RegisterCallback) (
+        XAPlayItf self,
+        xaPlayCallback callback,
+        void * pContext
+    );
+    XAresult (*SetCallbackEventsMask) (
+        XAPlayItf self,
+        XAuint32 eventFlags
+    );
+    XAresult (*GetCallbackEventsMask) (
+        XAPlayItf self,
+        XAuint32 * pEventFlags
+    );
+    XAresult (*SetMarkerPosition) (
+        XAPlayItf self,
+        XAmillisecond mSec
+    );
+    XAresult (*ClearMarkerPosition) (
+        XAPlayItf self
+    );
+    XAresult (*GetMarkerPosition) (
+        XAPlayItf self,
+        XAmillisecond * pMsec
+    );
+    XAresult (*SetPositionUpdatePeriod) (
+        XAPlayItf self,
+        XAmillisecond mSec
+    );
+    XAresult (*GetPositionUpdatePeriod) (
+        XAPlayItf self,
+        XAmillisecond * pMsec
+    );
+};
+
+/* PLAYBACK RATE */
+
+#define XA_RATEPROP_STAGGEREDVIDEO      ((XAuint32) 0x00000001)
+#define XA_RATEPROP_SMOOTHVIDEO         ((XAuint32) 0x00000002)
+#define XA_RATEPROP_SILENTAUDIO         ((XAuint32) 0x00000100)
+#define XA_RATEPROP_STAGGEREDAUDIO      ((XAuint32) 0x00000200)
+#define XA_RATEPROP_NOPITCHCORAUDIO     ((XAuint32) 0x00000400)
+#define XA_RATEPROP_PITCHCORAUDIO       ((XAuint32) 0x00000800)
+
+XA_API extern const XAInterfaceID XA_IID_PLAYBACKRATE;
+
+struct XAPlaybackRateItf_;
+typedef const struct XAPlaybackRateItf_ * const * XAPlaybackRateItf;
+
+struct XAPlaybackRateItf_ {
+    XAresult (*SetRate) (
+        XAPlaybackRateItf self,
+        XApermille rate
+    );
+    XAresult (*GetRate) (
+        XAPlaybackRateItf self,
+        XApermille * pRate
+    );
+    XAresult (*SetPropertyConstraints) (
+        XAPlaybackRateItf self,
+        XAuint32 constraints
+    );
+    XAresult (*GetProperties) (
+        XAPlaybackRateItf self,
+        XAuint32 * pProperties
+    );
+    XAresult (*GetCapabilitiesOfRate) (
+        XAPlaybackRateItf self,
+        XApermille rate,
+        XAuint32 * pCapabilities
+    );
+    XAresult (*GetRateRange) (
+        XAPlaybackRateItf self,
+        XAuint8 index,
+        XApermille * pMinRate,
+        XApermille * pMaxRate,
+        XApermille * pStepSize,
+        XAuint32 * pCapabilities
+    );
+};
+
+/* PREFETCH STATUS */
+
+XA_API extern const XAInterfaceID XA_IID_PREFETCHSTATUS;
+
+struct XAPrefetchStatusItf_;
+typedef const struct XAPrefetchStatusItf_
+    * const * XAPrefetchStatusItf;
+
+typedef void (XAAPIENTRY * xaPrefetchCallback) (
+    XAPrefetchStatusItf caller,
+    void * pContext,
+    XAuint32 event
+);
+
+struct XAPrefetchStatusItf_ {
+    XAresult (*GetPrefetchStatus) (
+        XAPrefetchStatusItf self,
+        XAuint32 * pStatus
+    );
+    XAresult (*GetFillLevel) (
+        XAPrefetchStatusItf self,
+        XApermille * pLevel
+    );
+    XAresult (*RegisterCallback) (
+        XAPrefetchStatusItf self,
+        xaPrefetchCallback callback,
+        void * pContext
+    );
+    XAresult (*SetCallbackEventsMask) (
+        XAPrefetchStatusItf self,
+        XAuint32 eventFlags
+    );
+    XAresult (*GetCallbackEventsMask) (
+        XAPrefetchStatusItf self,
+        XAuint32 * pEventFlags
+    );
+    XAresult (*SetFillUpdatePeriod) (
+        XAPrefetchStatusItf self,
+        XApermille period
+    );
+    XAresult (*GetFillUpdatePeriod) (
+        XAPrefetchStatusItf self,
+        XApermille * pPeriod
+    );
+};
+
+/* SEEK */
+
+XA_API extern const XAInterfaceID XA_IID_SEEK;
+
+struct XASeekItf_;
+typedef const struct XASeekItf_ * const * XASeekItf;
+
+struct XASeekItf_ {
+    XAresult (*SetPosition) (
+        XASeekItf self,
+        XAmillisecond pos,
+        XAuint32 seekMode
+    );
+    XAresult (*SetLoop) (
+        XASeekItf self,
+        XAboolean loopEnable,
+        XAmillisecond startPos,
+        XAmillisecond endPos
+    );
+    XAresult (*GetLoop) (
+        XASeekItf self,
+        XAboolean * pLoopEnabled,
+        XAmillisecond * pStartPos,
+        XAmillisecond * pEndPos
+    );
+};
+
+/* VOLUME */
+
+XA_API extern const XAInterfaceID XA_IID_VOLUME;
+
+struct XAVolumeItf_;
+typedef const struct XAVolumeItf_ * const * XAVolumeItf;
+
+struct XAVolumeItf_ {
+    XAresult (*SetVolumeLevel) (
+        XAVolumeItf self,
+        XAmillibel level
+    );
+    XAresult (*GetVolumeLevel) (
+        XAVolumeItf self,
+        XAmillibel * pLevel
+    );
+    XAresult (*GetMaxVolumeLevel) (
+        XAVolumeItf self,
+        XAmillibel * pMaxLevel
+    );
+    XAresult (*SetMute) (
+        XAVolumeItf self,
+        XAboolean mute
+    );
+    XAresult (*GetMute) (
+        XAVolumeItf self,
+        XAboolean * pMute
+    );
+    XAresult (*EnableStereoPosition) (
+        XAVolumeItf self,
+        XAboolean enable
+    );
+    XAresult (*IsEnabledStereoPosition) (
+        XAVolumeItf self,
+        XAboolean * pEnable
+    );
+    XAresult (*SetStereoPosition) (
+        XAVolumeItf self,
+        XApermille stereoPosition
+    );
+    XAresult (*GetStereoPosition) (
+        XAVolumeItf self,
+        XApermille * pStereoPosition
+    );
+};
+
+/* IMAGE CONTROL */
+
+XA_API extern const XAInterfaceID XA_IID_IMAGECONTROLS;
+
+struct XAImageControlsItf_;
+typedef const struct XAImageControlsItf_ * const * XAImageControlsItf;
+
+struct XAImageControlsItf_ {
+    XAresult (*SetBrightness) (
+        XAImageControlsItf self,
+        XAuint32 brightness
+    );
+    XAresult (*GetBrightness) (
+        XAImageControlsItf self,
+        XAuint32 * pBrightness
+    );
+    XAresult (*SetContrast) (
+        XAImageControlsItf self,
+        XAint32 contrast
+    );
+    XAresult (*GetContrast) (
+        XAImageControlsItf self,
+        XAint32 * pContrast
+    );
+    XAresult (*SetGamma) (
+        XAImageControlsItf self,
+        XApermille gamma
+    );
+    XAresult (*GetGamma) (
+        XAImageControlsItf self,
+        XApermille * pGamma
+    );
+    XAresult (*GetSupportedGammaSettings) (
+        XAImageControlsItf self,
+        XApermille * pMinValue,
+        XApermille * pMaxValue,
+        XAuint32 * pNumSettings,
+        XApermille ** ppSettings
+    );
+};
+
+/* IMAGE EFFECT */
+
+#define XA_IMAGEEFFECT_MONOCHROME       ((XAuint32) 0x00000001)
+#define XA_IMAGEEFFECT_NEGATIVE         ((XAuint32) 0x00000002)
+#define XA_IMAGEEFFECT_SEPIA            ((XAuint32) 0x00000003)
+#define XA_IMAGEEFFECT_EMBOSS           ((XAuint32) 0x00000004)
+#define XA_IMAGEEFFECT_PAINTBRUSH       ((XAuint32) 0x00000005)
+#define XA_IMAGEEFFECT_SOLARIZE         ((XAuint32) 0x00000006)
+#define XA_IMAGEEFFECT_CARTOON          ((XAuint32) 0x00000007)
+
+XA_API extern const XAInterfaceID XA_IID_IMAGEEFFECTS;
+
+struct XAImageEffectsItf_;
+typedef const struct XAImageEffectsItf_ * const * XAImageEffectsItf;
+
+struct XAImageEffectsItf_ {
+    XAresult (*QuerySupportedImageEffects) (
+        XAImageEffectsItf self,
+        XAuint32 index,
+        XAuint32 * pImageEffectId
+    );
+    XAresult (*EnableImageEffect) (
+        XAImageEffectsItf self,
+        XAuint32 imageEffectID
+    );
+    XAresult (*DisableImageEffect) (
+        XAImageEffectsItf self,
+        XAuint32 imageEffectID
+    );
+    XAresult (*IsImageEffectEnabled) (
+        XAImageEffectsItf self,
+        XAuint32 imageEffectID,
+        XAboolean * pEnabled
+    );
+};
+
+/* VIDEO POST PROCESSING */
+
+#define XA_VIDEOMIRROR_NONE             ((XAuint32) 0x00000001)
+#define XA_VIDEOMIRROR_VERTICAL         ((XAuint32) 0x00000002)
+#define XA_VIDEOMIRROR_HORIZONTAL       ((XAuint32) 0x00000003)
+#define XA_VIDEOMIRROR_BOTH             ((XAuint32) 0x00000004)
+
+#define XA_VIDEOSCALE_STRETCH           ((XAuint32) 0x00000001)
+#define XA_VIDEOSCALE_FIT               ((XAuint32) 0x00000002)
+#define XA_VIDEOSCALE_CROP              ((XAuint32) 0x00000003)
+
+#define XA_RENDERINGHINT_NONE           ((XAuint32) 0x00000000)
+#define XA_RENDERINGHINT_ANTIALIASING   ((XAuint32) 0x00000001)
+
+typedef struct XARectangle_ {
+    XAuint32 left;
+    XAuint32 top;
+    XAuint32 width;
+    XAuint32 height;
+} XARectangle;
+
+XA_API extern const XAInterfaceID XA_IID_VIDEOPOSTPROCESSING;
+
+struct XAVideoPostProcessingItf_;
+typedef const struct XAVideoPostProcessingItf_ * const * XAVideoPostProcessingItf;
+
+struct XAVideoPostProcessingItf_ {
+    XAresult (*SetRotation) (
+        XAVideoPostProcessingItf self,
+        XAmillidegree rotation
+    );
+    XAresult (*IsArbitraryRotationSupported) (
+        XAVideoPostProcessingItf self,
+        XAboolean *pSupported
+    );
+    XAresult (*SetScaleOptions) (
+        XAVideoPostProcessingItf self,
+        XAuint32 scaleOptions,
+        XAuint32 backgroundColor,
+        XAuint32 renderingHints
+    );
+    XAresult (*SetSourceRectangle) (
+        XAVideoPostProcessingItf self,
+        const XARectangle *pSrcRect
+    );
+    XAresult (*SetDestinationRectangle) (
+        XAVideoPostProcessingItf self,
+        const XARectangle *pDestRect
+    );
+    XAresult (*SetMirror) (
+        XAVideoPostProcessingItf self,
+        XAuint32 mirror
+    );
+    XAresult (*Commit) (
+        XAVideoPostProcessingItf self
+    );
+};
+
+
+
+  /*****************************************************************/
+  /* CAPTURING INTERFACES, STRUCTS AND DEFINES                     */
+  /*****************************************************************/
+
+/* RECORD */
+
+#define XA_RECORDEVENT_HEADATLIMIT          ((XAuint32) 0x00000001)
+#define XA_RECORDEVENT_HEADATMARKER         ((XAuint32) 0x00000002)
+#define XA_RECORDEVENT_HEADATNEWPOS         ((XAuint32) 0x00000004)
+#define XA_RECORDEVENT_HEADMOVING           ((XAuint32) 0x00000008)
+#define XA_RECORDEVENT_HEADSTALLED          ((XAuint32) 0x00000010)
+#define XA_RECORDEVENT_BUFFER_FULL          ((XAuint32) 0x00000020)
+
+#define XA_RECORDSTATE_STOPPED          ((XAuint32) 0x00000001)
+#define XA_RECORDSTATE_PAUSED           ((XAuint32) 0x00000002)
+#define XA_RECORDSTATE_RECORDING        ((XAuint32) 0x00000003)
+
+XA_API extern const XAInterfaceID XA_IID_RECORD;
+
+struct XARecordItf_;
+typedef const struct XARecordItf_ * const * XARecordItf;
+
+typedef void (XAAPIENTRY * xaRecordCallback) (
+    XARecordItf caller,
+    void * pContext,
+    XAuint32 event
+);
+
+struct XARecordItf_ {
+    XAresult (*SetRecordState) (
+        XARecordItf self,
+        XAuint32 state
+    );
+    XAresult (*GetRecordState) (
+        XARecordItf self,
+        XAuint32 * pState
+    );
+    XAresult (*SetDurationLimit) (
+        XARecordItf self,
+        XAmillisecond msec
+    );
+    XAresult (*GetPosition) (
+        XARecordItf self,
+        XAmillisecond * pMsec
+    );
+    XAresult (*RegisterCallback) (
+        XARecordItf self,
+        xaRecordCallback callback,
+        void * pContext
+    );
+    XAresult (*SetCallbackEventsMask) (
+        XARecordItf self,
+        XAuint32 eventFlags
+    );
+    XAresult (*GetCallbackEventsMask) (
+        XARecordItf self,
+        XAuint32 * pEventFlags
+    );
+    XAresult (*SetMarkerPosition) (
+        XARecordItf self,
+        XAmillisecond mSec
+    );
+    XAresult (*ClearMarkerPosition) (
+        XARecordItf self
+    );
+    XAresult (*GetMarkerPosition) (
+        XARecordItf self,
+        XAmillisecond * pMsec
+    );
+    XAresult (*SetPositionUpdatePeriod) (
+        XARecordItf self,
+        XAmillisecond mSec
+    );
+    XAresult (*GetPositionUpdatePeriod) (
+        XARecordItf self,
+        XAmillisecond * pMsec
+    );
+};
+
+/* SNAPSHOT */
+
+XA_API extern const XAInterfaceID XA_IID_SNAPSHOT;
+
+struct XASnapshotItf_;
+typedef const struct XASnapshotItf_ * const * XASnapshotItf;
+
+typedef void (XAAPIENTRY * xaSnapshotInitiatedCallback) (
+    XASnapshotItf caller,
+    void * context
+);
+
+typedef void (XAAPIENTRY * xaSnapshotTakenCallback) (
+    XASnapshotItf caller,
+    void * context,
+    XAuint32 numberOfPicsTaken,
+    const XADataSink * image
+);
+
+struct XASnapshotItf_ {
+    XAresult (*InitiateSnapshot) (
+        XASnapshotItf self,
+        XAuint32 numberOfPictures,
+        XAuint32 fps,
+        XAboolean freezeViewFinder,
+        XADataSink sink,
+        xaSnapshotInitiatedCallback initiatedCallback,
+        xaSnapshotTakenCallback takenCallback,
+        void * pContext
+    );
+    XAresult (*TakeSnapshot) (
+        XASnapshotItf self
+    );
+    XAresult (*CancelSnapshot) (
+        XASnapshotItf self
+    );
+    XAresult (*ReleaseBuffers) (
+        XASnapshotItf self,
+        XADataSink * image
+    );
+    XAresult (*GetMaxPicsPerBurst) (
+        XASnapshotItf self,
+        XAuint32 * maxNumberOfPictures
+    );
+    XAresult (*GetBurstFPSRange) (
+        XASnapshotItf self,
+        XAuint32 * minFPS,
+        XAuint32 * maxFPS
+    );
+    XAresult (*SetShutterFeedback) (
+        XASnapshotItf self,
+        XAboolean enabled
+    );
+    XAresult (*GetShutterFeedback) (
+        XASnapshotItf self,
+        XAboolean * enabled
+    );
+};
+
+
+
+  /*****************************************************************/
+  /* METADATA RELATED INTERFACES, STRUCTS AND DEFINES              */
+  /*****************************************************************/
+
+/* METADATA (EXTRACTION, INSERTION, TRAVERSAL) */
+
+#define XA_NODE_PARENT                  ((XAuint32) 0xFFFFFFFF)
+
+#define XA_ROOT_NODE_ID                 ((XAint32) 0x7FFFFFFF)
+
+#define XA_NODETYPE_UNSPECIFIED         ((XAuint32) 0x00000001)
+#define XA_NODETYPE_AUDIO               ((XAuint32) 0x00000002)
+#define XA_NODETYPE_VIDEO               ((XAuint32) 0x00000003)
+#define XA_NODETYPE_IMAGE               ((XAuint32) 0x00000004)
+
+#define XA_CHARACTERENCODING_UNKNOWN            ((XAuint32) 0x00000000)
+#define XA_CHARACTERENCODING_BINARY             ((XAuint32) 0x00000001)
+#define XA_CHARACTERENCODING_ASCII              ((XAuint32) 0x00000002)
+#define XA_CHARACTERENCODING_BIG5               ((XAuint32) 0x00000003)
+#define XA_CHARACTERENCODING_CODEPAGE1252       ((XAuint32) 0x00000004)
+#define XA_CHARACTERENCODING_GB2312             ((XAuint32) 0x00000005)
+#define XA_CHARACTERENCODING_HZGB2312           ((XAuint32) 0x00000006)
+#define XA_CHARACTERENCODING_GB12345            ((XAuint32) 0x00000007)
+#define XA_CHARACTERENCODING_GB18030            ((XAuint32) 0x00000008)
+#define XA_CHARACTERENCODING_GBK                ((XAuint32) 0x00000009)
+#define XA_CHARACTERENCODING_IMAPUTF7           ((XAuint32) 0x0000000A)
+#define XA_CHARACTERENCODING_ISO2022JP          ((XAuint32) 0x0000000B)
+#define XA_CHARACTERENCODING_ISO2022JP1         ((XAuint32) 0x0000000B)
+#define XA_CHARACTERENCODING_ISO88591           ((XAuint32) 0x0000000C)
+#define XA_CHARACTERENCODING_ISO885910          ((XAuint32) 0x0000000D)
+#define XA_CHARACTERENCODING_ISO885913          ((XAuint32) 0x0000000E)
+#define XA_CHARACTERENCODING_ISO885914          ((XAuint32) 0x0000000F)
+#define XA_CHARACTERENCODING_ISO885915          ((XAuint32) 0x00000010)
+#define XA_CHARACTERENCODING_ISO88592           ((XAuint32) 0x00000011)
+#define XA_CHARACTERENCODING_ISO88593           ((XAuint32) 0x00000012)
+#define XA_CHARACTERENCODING_ISO88594           ((XAuint32) 0x00000013)
+#define XA_CHARACTERENCODING_ISO88595           ((XAuint32) 0x00000014)
+#define XA_CHARACTERENCODING_ISO88596           ((XAuint32) 0x00000015)
+#define XA_CHARACTERENCODING_ISO88597           ((XAuint32) 0x00000016)
+#define XA_CHARACTERENCODING_ISO88598           ((XAuint32) 0x00000017)
+#define XA_CHARACTERENCODING_ISO88599           ((XAuint32) 0x00000018)
+#define XA_CHARACTERENCODING_ISOEUCJP           ((XAuint32) 0x00000019)
+#define XA_CHARACTERENCODING_SHIFTJIS           ((XAuint32) 0x0000001A)
+#define XA_CHARACTERENCODING_SMS7BIT            ((XAuint32) 0x0000001B)
+#define XA_CHARACTERENCODING_UTF7               ((XAuint32) 0x0000001C)
+#define XA_CHARACTERENCODING_UTF8               ((XAuint32) 0x0000001D)
+#define XA_CHARACTERENCODING_JAVACONFORMANTUTF8 ((XAuint32) 0x0000001E)
+#define XA_CHARACTERENCODING_UTF16BE            ((XAuint32) 0x0000001F)
+#define XA_CHARACTERENCODING_UTF16LE            ((XAuint32) 0x00000020)
+
+#define XA_METADATA_FILTER_KEY          ((XAuint8) 0x01)
+#define XA_METADATA_FILTER_LANG         ((XAuint8) 0x02)
+#define XA_METADATA_FILTER_ENCODING     ((XAuint8) 0x04)
+
+#define XA_METADATATRAVERSALMODE_ALL    ((XAuint32) 0x00000001)
+#define XA_METADATATRAVERSALMODE_NODE   ((XAuint32) 0x00000002)
+
+#ifndef _KHRONOS_KEYS_
+#define _KHRONOS_KEYS_
+#define KHRONOS_TITLE                   "KhronosTitle"
+#define KHRONOS_ALBUM                   "KhronosAlbum"
+#define KHRONOS_TRACK_NUMBER            "KhronosTrackNumber"
+#define KHRONOS_ARTIST                  "KhronosArtist"
+#define KHRONOS_GENRE                   "KhronosGenre"
+#define KHRONOS_YEAR                    "KhronosYear"
+#define KHRONOS_COMMENT                 "KhronosComment"
+#define KHRONOS_ARTIST_URL              "KhronosArtistURL"
+#define KHRONOS_CONTENT_URL             "KhronosContentURL"
+#define KHRONOS_RATING                  "KhronosRating"
+#define KHRONOS_ALBUM_ART               "KhronosAlbumArt"
+#define KHRONOS_COPYRIGHT               "KhronosCopyright"
+#endif /* _KHRONOS_KEYS_ */
+
+
+typedef struct XAMetadataInfo_ {
+    XAuint32 size;
+    XAuint32 encoding;
+    const XAchar langCountry[16];
+    XAuint8 data[1];
+} XAMetadataInfo;
+
+XA_API extern const XAInterfaceID XA_IID_METADATAEXTRACTION;
+
+struct XAMetadataExtractionItf_;
+typedef const struct XAMetadataExtractionItf_
+    * const * XAMetadataExtractionItf;
+
+struct XAMetadataExtractionItf_ {
+    XAresult (*GetItemCount) (
+        XAMetadataExtractionItf self,
+        XAuint32 * pItemCount
+    );
+    XAresult (*GetKeySize) (
+        XAMetadataExtractionItf self,
+        XAuint32 index,
+        XAuint32 * pKeySize
+    );
+    XAresult (*GetKey) (
+        XAMetadataExtractionItf self,
+        XAuint32 index,
+        XAuint32 keySize,
+        XAMetadataInfo * pKey
+    );
+    XAresult (*GetValueSize) (
+        XAMetadataExtractionItf self,
+        XAuint32 index,
+        XAuint32 * pValueSize
+    );
+    XAresult (*GetValue) (
+        XAMetadataExtractionItf self,
+        XAuint32 index,
+        XAuint32 valueSize,
+        XAMetadataInfo * pValue
+    );
+    XAresult (*AddKeyFilter) (
+        XAMetadataExtractionItf self,
+        XAuint32 keySize,
+        const void * pKey,
+        XAuint32 keyEncoding,
+        const XAchar * pValueLangCountry,
+        XAuint32 valueEncoding,
+        XAuint8 filterMask
+    );
+    XAresult (*ClearKeyFilter) (
+        XAMetadataExtractionItf self
+    );
+};
+
+
+XA_API extern const XAInterfaceID XA_IID_METADATAINSERTION;
+
+struct XAMetadataInsertionItf_;
+typedef const struct XAMetadataInsertionItf_
+    * const * XAMetadataInsertionItf;
+
+typedef void (XAAPIENTRY * xaMetadataInsertionCallback) (
+    XAMetadataInsertionItf caller,
+    void * pContext,
+    XAMetadataInfo * pKey,
+    XAMetadataInfo * pValue,
+    XAint32 nodeID,
+    XAboolean result
+);
+
+struct XAMetadataInsertionItf_ {
+    XAresult (*CreateChildNode) (
+        XAMetadataInsertionItf self,
+        XAint32 parentNodeID,
+        XAuint32 type,
+        XAchar * mimeType,
+        XAint32 * pChildNodeID
+    );
+    XAresult (*GetSupportedKeysCount) (
+        XAMetadataInsertionItf self,
+        XAint32 nodeID,
+        XAboolean * pFreeKeys,
+        XAuint32 * pKeyCount,
+        XAuint32 * pEncodingCount
+    );
+    XAresult (*GetKeySize) (
+        XAMetadataInsertionItf self,
+        XAint32 nodeID,
+        XAuint32 keyIndex,
+        XAuint32 * pKeySize
+    );
+    XAresult (*GetKey) (
+        XAMetadataInsertionItf self,
+        XAint32 nodeID,
+        XAuint32 keyIndex,
+        XAuint32 keySize,
+        XAMetadataInfo * pKey
+    );
+    XAresult (*GetFreeKeysEncoding) (
+        XAMetadataInsertionItf self,
+        XAint32 nodeID,
+        XAuint32 encodingIndex,
+        XAuint32 * pEncoding
+    );
+    XAresult (*InsertMetadataItem) (
+        XAMetadataInsertionItf self,
+        XAint32 nodeID,
+        XAMetadataInfo * pKey,
+        XAMetadataInfo * pValue,
+        XAboolean overwrite
+    );
+    XAresult (*RegisterCallback) (
+        XAMetadataInsertionItf self,
+        xaMetadataInsertionCallback callback,
+        void * pContext
+    );
+};
+
+
+XA_API extern const XAInterfaceID XA_IID_METADATATRAVERSAL;
+
+struct XAMetadataTraversalItf_;
+typedef const struct XAMetadataTraversalItf_
+    *  const *  XAMetadataTraversalItf;
+
+struct XAMetadataTraversalItf_ {
+    XAresult (*SetMode) (
+        XAMetadataTraversalItf self,
+        XAuint32 mode
+    );
+    XAresult (*GetChildCount) (
+        XAMetadataTraversalItf self,
+        XAuint32 * pCount
+    );
+    XAresult (*GetChildMIMETypeSize) (
+        XAMetadataTraversalItf self,
+        XAuint32 index,
+        XAuint32 * pSize
+    );
+    XAresult (*GetChildInfo) (
+        XAMetadataTraversalItf self,
+        XAuint32 index,
+        XAint32 * pNodeID,
+        XAuint32 * pType,
+        XAuint32 size,
+        XAchar * pMimeType
+    );
+    XAresult (*SetActiveNode) (
+        XAMetadataTraversalItf self,
+        XAuint32 index
+    );
+};
+
+/* DYNAMIC SOURCE */
+
+XA_API extern const XAInterfaceID XA_IID_DYNAMICSOURCE;
+
+struct XADynamicSourceItf_;
+typedef const struct XADynamicSourceItf_ * const * XADynamicSourceItf;
+
+struct XADynamicSourceItf_ {
+    XAresult (*SetSource) (
+        XADynamicSourceItf self,
+        XADataSource * pDataSource
+    );
+};
+
+
+
+  /*****************************************************************/
+  /*  I/O DEVICES RELATED INTERFACES, STRUCTS AND DEFINES          */
+  /*****************************************************************/
+
+/* CAMERA AND CAMERA CAPABILITIES */
+
+#define XA_CAMERA_APERTUREMODE_MANUAL               ((XAuint32) 0x00000001)
+#define XA_CAMERA_APERTUREMODE_AUTO                 ((XAuint32) 0x00000002)
+
+#define XA_CAMERA_AUTOEXPOSURESTATUS_SUCCESS        ((XAuint32) 0x00000001)
+#define XA_CAMERA_AUTOEXPOSURESTATUS_UNDEREXPOSURE  ((XAuint32) 0x00000002)
+#define XA_CAMERA_AUTOEXPOSURESTATUS_OVEREXPOSURE   ((XAuint32) 0x00000003)
+
+#define XA_CAMERACBEVENT_ROTATION                   ((XAuint32) 0x00000001)
+#define XA_CAMERACBEVENT_FLASHREADY                 ((XAuint32) 0x00000002)
+#define XA_CAMERACBEVENT_FOCUSSTATUS                ((XAuint32) 0x00000003)
+#define XA_CAMERACBEVENT_EXPOSURESTATUS             ((XAuint32) 0x00000004)
+#define XA_CAMERACBEVENT_WHITEBALANCELOCKED         ((XAuint32) 0x00000005)
+#define XA_CAMERACBEVENT_ZOOMSTATUS                 ((XAuint32) 0x00000006)
+
+#define XA_CAMERACAP_FLASH                          ((XAuint32) 0x00000001)
+#define XA_CAMERACAP_AUTOFOCUS                      ((XAuint32) 0x00000002)
+#define XA_CAMERACAP_CONTINUOUSAUTOFOCUS            ((XAuint32) 0x00000004)
+#define XA_CAMERACAP_MANUALFOCUS                    ((XAuint32) 0x00000008)
+#define XA_CAMERACAP_AUTOEXPOSURE                   ((XAuint32) 0x00000010)
+#define XA_CAMERACAP_MANUALEXPOSURE                 ((XAuint32) 0x00000020)
+#define XA_CAMERACAP_AUTOISOSENSITIVITY             ((XAuint32) 0x00000040)
+#define XA_CAMERACAP_MANUALISOSENSITIVITY           ((XAuint32) 0x00000080)
+#define XA_CAMERACAP_AUTOAPERTURE                   ((XAuint32) 0x00000100)
+#define XA_CAMERACAP_MANUALAPERTURE                 ((XAuint32) 0x00000200)
+#define XA_CAMERACAP_AUTOSHUTTERSPEED               ((XAuint32) 0x00000400)
+#define XA_CAMERACAP_MANUALSHUTTERSPEED             ((XAuint32) 0x00000800)
+#define XA_CAMERACAP_AUTOWHITEBALANCE               ((XAuint32) 0x00001000)
+#define XA_CAMERACAP_MANUALWHITEBALANCE             ((XAuint32) 0x00002000)
+#define XA_CAMERACAP_OPTICALZOOM                    ((XAuint32) 0x00004000)
+#define XA_CAMERACAP_DIGITALZOOM                    ((XAuint32) 0x00008000)
+#define XA_CAMERACAP_METERING                       ((XAuint32) 0x00010000)
+#define XA_CAMERACAP_BRIGHTNESS                     ((XAuint32) 0x00020000)
+#define XA_CAMERACAP_CONTRAST                       ((XAuint32) 0x00040000)
+#define XA_CAMERACAP_GAMMA                          ((XAuint32) 0x00080000)
+
+
+#define XA_CAMERA_EXPOSUREMODE_MANUAL               ((XAuint32) 0x00000001)
+#define XA_CAMERA_EXPOSUREMODE_AUTO                 ((XAuint32) 0x00000002)
+#define XA_CAMERA_EXPOSUREMODE_NIGHT                ((XAuint32) 0x00000004)
+#define XA_CAMERA_EXPOSUREMODE_BACKLIGHT            ((XAuint32) 0x00000008)
+#define XA_CAMERA_EXPOSUREMODE_SPOTLIGHT            ((XAuint32) 0x00000010)
+#define XA_CAMERA_EXPOSUREMODE_SPORTS               ((XAuint32) 0x00000020)
+#define XA_CAMERA_EXPOSUREMODE_SNOW                 ((XAuint32) 0x00000040)
+#define XA_CAMERA_EXPOSUREMODE_BEACH                ((XAuint32) 0x00000080)
+#define XA_CAMERA_EXPOSUREMODE_LARGEAPERTURE        ((XAuint32) 0x00000100)
+#define XA_CAMERA_EXPOSUREMODE_SMALLAPERTURE        ((XAuint32) 0x00000200)
+#define XA_CAMERA_EXPOSUREMODE_PORTRAIT             ((XAuint32) 0x0000400)
+#define XA_CAMERA_EXPOSUREMODE_NIGHTPORTRAIT        ((XAuint32) 0x00000800)
+
+#define XA_CAMERA_FLASHMODE_OFF                     ((XAuint32) 0x00000001)
+#define XA_CAMERA_FLASHMODE_ON                      ((XAuint32) 0x00000002)
+#define XA_CAMERA_FLASHMODE_AUTO                    ((XAuint32) 0x00000004)
+#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION         ((XAuint32) 0x00000008)
+#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION_AUTO    ((XAuint32) 0x00000010)
+#define XA_CAMERA_FLASHMODE_FILLIN                  ((XAuint32) 0x00000020)
+#define XA_CAMERA_FLASHMODE_TORCH                   ((XAuint32) 0x00000040)
+
+#define XA_CAMERA_FOCUSMODE_MANUAL                  ((XAuint32) 0x00000001)
+#define XA_CAMERA_FOCUSMODE_AUTO                    ((XAuint32) 0x00000002)
+#define XA_CAMERA_FOCUSMODE_CENTROID                ((XAuint32) 0x00000004)
+#define XA_CAMERA_FOCUSMODE_CONTINUOUS_AUTO         ((XAuint32) 0x00000008)
+#define XA_CAMERA_FOCUSMODE_CONTINUOUS_CENTROID     ((XAuint32) 0x00000010)
+
+#define XA_CAMERA_FOCUSMODESTATUS_OFF               ((XAuint32) 0x00000001)
+#define XA_CAMERA_FOCUSMODESTATUS_REQUEST           ((XAuint32) 0x00000002)
+#define XA_CAMERA_FOCUSMODESTATUS_REACHED           ((XAuint32) 0x00000003)
+#define XA_CAMERA_FOCUSMODESTATUS_UNABLETOREACH     ((XAuint32) 0x00000004)
+#define XA_CAMERA_FOCUSMODESTATUS_LOST              ((XAuint32) 0x00000005)
+
+#define XA_CAMERA_ISOSENSITIVITYMODE_MANUAL         ((XAuint32) 0x00000001)
+#define XA_CAMERA_ISOSENSITIVITYMODE_AUTO           ((XAuint32) 0x00000002)
+
+#define XA_CAMERA_LOCK_AUTOFOCUS                    ((XAuint32) 0x00000001)
+#define XA_CAMERA_LOCK_AUTOEXPOSURE                 ((XAuint32) 0x00000002)
+#define XA_CAMERA_LOCK_AUTOWHITEBALANCE             ((XAuint32) 0x00000004)
+
+#define XA_CAMERA_METERINGMODE_AVERAGE              ((XAuint32) 0x00000001)
+#define XA_CAMERA_METERINGMODE_SPOT                 ((XAuint32) 0x00000002)
+#define XA_CAMERA_METERINGMODE_MATRIX               ((XAuint32) 0x00000004)
+
+#define XA_CAMERA_SHUTTERSPEEDMODE_MANUAL           ((XAuint32) 0x00000001)
+#define XA_CAMERA_SHUTTERSPEEDMODE_AUTO             ((XAuint32) 0x00000002)
+
+#define XA_CAMERA_WHITEBALANCEMODE_MANUAL           ((XAuint32) 0x00000001)
+#define XA_CAMERA_WHITEBALANCEMODE_AUTO             ((XAuint32) 0x00000002)
+#define XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT         ((XAuint32) 0x00000004)
+#define XA_CAMERA_WHITEBALANCEMODE_CLOUDY           ((XAuint32) 0x00000008)
+#define XA_CAMERA_WHITEBALANCEMODE_SHADE            ((XAuint32) 0x00000010)
+#define XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN         ((XAuint32) 0x00000020)
+#define XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT      ((XAuint32) 0x00000040)
+#define XA_CAMERA_WHITEBALANCEMODE_INCANDESCENT     ((XAuint32) 0x00000080)
+#define XA_CAMERA_WHITEBALANCEMODE_FLASH            ((XAuint32) 0x00000100)
+#define XA_CAMERA_WHITEBALANCEMODE_SUNSET           ((XAuint32) 0x00000200)
+
+#define XA_CAMERA_ZOOM_SLOW                         ((XAuint32) 50)
+#define XA_CAMERA_ZOOM_NORMAL                       ((XAuint32) 100)
+#define XA_CAMERA_ZOOM_FAST                         ((XAuint32) 200)
+#define XA_CAMERA_ZOOM_FASTEST                      ((XAuint32) 0xFFFFFFFF)
+
+#define XA_FOCUSPOINTS_ONE                          ((XAuint32) 0x00000001)
+#define XA_FOCUSPOINTS_THREE_3X1                    ((XAuint32) 0x00000002)
+#define XA_FOCUSPOINTS_FIVE_CROSS                   ((XAuint32) 0x00000003)
+#define XA_FOCUSPOINTS_SEVEN_CROSS                  ((XAuint32) 0x00000004)
+#define XA_FOCUSPOINTS_NINE_SQUARE                  ((XAuint32) 0x00000005)
+#define XA_FOCUSPOINTS_ELEVEN_CROSS                 ((XAuint32) 0x00000006)
+#define XA_FOCUSPOINTS_TWELVE_3X4                   ((XAuint32) 0x00000007)
+#define XA_FOCUSPOINTS_TWELVE_4X3                   ((XAuint32) 0x00000008)
+#define XA_FOCUSPOINTS_SIXTEEN_SQUARE               ((XAuint32) 0x00000009)
+#define XA_FOCUSPOINTS_CUSTOM                       ((XAuint32) 0x0000000A)
+
+typedef struct XAFocusPointPosition_ {
+    XAuint32 left;
+    XAuint32 top;
+    XAuint32 width;
+    XAuint32 height;
+} XAFocusPointPosition;
+
+#define XA_ORIENTATION_UNKNOWN                      ((XAuint32) 0x00000001)
+#define XA_ORIENTATION_OUTWARDS                     ((XAuint32) 0x00000002)
+#define XA_ORIENTATION_INWARDS                      ((XAuint32) 0x00000003)
+
+typedef struct XACameraDescriptor_ {
+    XAchar * name;
+    XAuint32 maxWidth;
+    XAuint32 maxHeight;
+    XAuint32 orientation;
+    XAuint32 featuresSupported;
+    XAuint32 exposureModesSupported;
+    XAuint32 flashModesSupported;
+    XAuint32 focusModesSupported;
+    XAuint32 meteringModesSupported;
+    XAuint32 whiteBalanceModesSupported;
+} XACameraDescriptor;
+
+XA_API extern const XAInterfaceID XA_IID_CAMERACAPABILITIES;
+
+struct XACameraCapabilitiesItf_;
+typedef const struct XACameraCapabilitiesItf_
+    * const * XACameraCapabilitiesItf;
+
+struct XACameraCapabilitiesItf_ {
+    XAresult (*GetCameraCapabilities) (
+        XACameraCapabilitiesItf self,
+        XAuint32 *pIndex,
+        XAuint32 * pCameraDeviceID,
+        XACameraDescriptor * pDescriptor
+    );
+    XAresult (*QueryFocusRegionPatterns) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAuint32 * pPatternID,
+        XAuint32 * pFocusPattern,
+        XAuint32 * pCustomPoints1,
+        XAuint32 * pCustomPoints2
+    );
+    XAresult (*GetSupportedAutoLocks) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAuint32 * pNumCombinations,
+        XAuint32 ** ppLocks
+    );
+    XAresult (*GetSupportedFocusManualSettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAboolean macroEnabled,
+        XAmillimeter * pMinValue,
+        XAmillimeter * pMaxValue,
+        XAuint32 * pNumSettings,
+        XAmillimeter ** ppSettings
+    );
+    XAresult (*GetSupportedISOSensitivitySettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAuint32 * pMinValue,
+        XAuint32 * pMaxValue,
+        XAuint32 * pNumSettings,
+        XAuint32 ** ppSettings
+    );
+    XAresult (*GetSupportedApertureManualSettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAuint32 * pMinValue,
+        XAuint32 * pMaxValue,
+        XAuint32 * pNumSettings,
+        XAuint32 ** ppSettings
+    );
+    XAresult (*GetSupportedShutterSpeedManualSettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAmicrosecond * pMinValue,
+        XAmicrosecond * pMaxValue,
+        XAuint32 * pNumSettings,
+        XAmicrosecond ** ppSettings
+    );
+    XAresult (*GetSupportedWhiteBalanceManualSettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAuint32 * pMinValue,
+        XAuint32 * pMaxValue,
+        XAuint32 * pNumSettings,
+        XAuint32 ** ppSettings
+    );
+    XAresult (*GetSupportedZoomSettings) (
+        XACameraCapabilitiesItf self,
+        XAuint32 cameraDeviceID,
+        XAboolean digitalEnabled,
+        XAboolean macroEnabled,
+        XApermille * pMaxValue,
+        XAuint32 * pNumSettings,
+        XApermille ** ppSettings,
+        XAboolean * pSpeedSupported
+
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_CAMERA;
+
+struct XACameraItf_;
+typedef const struct XACameraItf_ * const * XACameraItf;
+
+typedef void (XAAPIENTRY * xaCameraCallback) (
+    XACameraItf caller,
+    void * pContext,
+    XAuint32 eventId,
+    XAuint32 eventData
+);
+
+struct XACameraItf_ {
+    XAresult (*RegisterCallback) (
+        XACameraItf self,
+        xaCameraCallback callback,
+        void * pContext
+    );
+    XAresult (*SetFlashMode) (
+        XACameraItf self,
+        XAuint32 flashMode
+    );
+    XAresult (*GetFlashMode) (
+        XACameraItf self,
+        XAuint32 * pFlashMode
+    );
+    XAresult (*IsFlashReady) (
+        XACameraItf self,
+        XAboolean * pReady
+    );
+    XAresult (*SetFocusMode) (
+        XACameraItf self,
+        XAuint32 focusMode,
+        XAmillimeter manualSetting,
+        XAboolean macroEnabled
+    );
+    XAresult (*GetFocusMode) (
+        XACameraItf self,
+        XAuint32 * pFocusMode,
+        XAmillimeter * pManualSetting,
+        XAboolean * pMacroEnabled
+    );
+    XAresult (*SetFocusRegionPattern) (
+        XACameraItf self,
+        XAuint32 focusPattern,
+        XAuint32 activePoints1,
+        XAuint32 activePoints2
+    );
+    XAresult (*GetFocusRegionPattern) (
+        XACameraItf self,
+        XAuint32 * pFocusPattern,
+        XAuint32 * pActivePoints1,
+        XAuint32 * pActivePoints2
+    );
+    XAresult (*GetFocusRegionPositions) (
+        XACameraItf self,
+        XAuint32 * pNumPositionEntries,
+        XAFocusPointPosition * pFocusPosition
+    );
+    XAresult (*GetFocusModeStatus) (
+        XACameraItf self,
+        XAuint32 * pFocusStatus,
+        XAuint32 * pRegionStatus1,
+        XAuint32 * pRegionStatus2
+    );
+    XAresult (*SetMeteringMode) (
+        XACameraItf self,
+        XAuint32 meteringMode
+    );
+    XAresult (*GetMeteringMode) (
+        XACameraItf self,
+        XAuint32 * pMeteringMode
+    );
+    XAresult (*SetExposureMode) (
+        XACameraItf self,
+        XAuint32 exposure,
+        XAuint32 compensation
+    );
+    XAresult (*GetExposureMode) (
+        XACameraItf self,
+        XAuint32 * pExposure,
+        XAuint32 * pCompensation
+    );
+    XAresult (*SetISOSensitivity) (
+        XACameraItf self,
+        XAuint32 isoSensitivity,
+        XAuint32 manualSetting
+    );
+    XAresult (*GetISOSensitivity) (
+        XACameraItf self,
+        XAuint32 * pIsoSensitivity,
+        XAuint32 * pManualSetting
+    );
+    XAresult (*SetAperture) (
+        XACameraItf self,
+        XAuint32 aperture,
+        XAuint32 manualSetting
+    );
+    XAresult (*GetAperture) (
+        XACameraItf self,
+        XAuint32 * pAperture,
+        XAuint32 * pManualSetting
+    );
+    XAresult (*SetShutterSpeed) (
+        XACameraItf self,
+        XAuint32 shutterSpeed,
+        XAmicrosecond manualSetting
+    );
+    XAresult (*GetShutterSpeed) (
+        XACameraItf self,
+        XAuint32 * pShutterSpeed,
+        XAmicrosecond * pManualSetting
+    );
+    XAresult (*SetWhiteBalance) (
+        XACameraItf self,
+        XAuint32 whiteBalance,
+        XAuint32 manualSetting
+    );
+    XAresult (*GetWhiteBalance) (
+        XACameraItf self,
+        XAuint32 * pWhiteBalance,
+        XAuint32 * pManualSetting
+    );
+    XAresult (*SetAutoLocks) (
+        XACameraItf self,
+        XAuint32 locks
+    );
+    XAresult (*GetAutoLocks) (
+        XACameraItf self,
+        XAuint32 * locks
+    );
+    XAresult (*SetZoom) (
+        XACameraItf self,
+        XApermille zoom,
+        XAboolean digitalEnabled,
+        XAuint32 speed,
+        XAboolean async
+    );
+    XAresult (*GetZoom) (
+        XACameraItf self,
+        XApermille * pZoom,
+        XAboolean * pDigital
+    );
+};
+
+/* AUDIO I/O DEVICE CAPABILITIES */
+
+#define XA_DEVCONNECTION_INTEGRATED                 ((XAint16) 0x0001)
+#define XA_DEVCONNECTION_ATTACHED_WIRED             ((XAint16) 0x0100)
+#define XA_DEVCONNECTION_ATTACHED_WIRELESS          ((XAint16) 0x0200)
+#define XA_DEVCONNECTION_NETWORK                    ((XAint16) 0x0400)
+
+#define XA_DEVLOCATION_HANDSET                      ((XAint16) 0x0001)
+#define XA_DEVLOCATION_HEADSET                      ((XAint16) 0x0002)
+#define XA_DEVLOCATION_CARKIT                       ((XAint16) 0x0003)
+#define XA_DEVLOCATION_DOCK                         ((XAint16) 0x0004)
+#define XA_DEVLOCATION_REMOTE                       ((XAint16) 0x0005)
+
+#define XA_DEVSCOPE_UNKNOWN                         ((XAint16) 0x0001)
+#define XA_DEVSCOPE_ENVIRONMENT                     ((XAint16) 0x0002)
+#define XA_DEVSCOPE_USER                            ((XAint16) 0x0003)
+
+typedef struct XAAudioInputDescriptor_ {
+    XAchar * deviceName;
+    XAint16 deviceConnection;
+    XAint16 deviceScope;
+    XAint16 deviceLocation;
+    XAboolean isForTelephony;
+    XAmilliHertz minSampleRate;
+    XAmilliHertz maxSampleRate;
+    XAboolean isFreqRangeContinuous;
+    XAmilliHertz * samplingRatesSupported;
+    XAint16 numOfSamplingRatesSupported;
+    XAint16 maxChannels;
+} XAAudioInputDescriptor;
+
+typedef struct XAAudioOutputDescriptor_ {
+    XAchar *pDeviceName;
+    XAint16 deviceConnection;
+    XAint16 deviceScope;
+    XAint16 deviceLocation;
+    XAboolean isForTelephony;
+    XAmilliHertz minSampleRate;
+    XAmilliHertz maxSampleRate;
+    XAboolean isFreqRangeContinuous;
+    XAmilliHertz *samplingRatesSupported;
+    XAint16 numOfSamplingRatesSupported;
+    XAint16 maxChannels;
+} XAAudioOutputDescriptor;
+
+XA_API extern const XAInterfaceID XA_IID_AUDIOIODEVICECAPABILITIES;
+
+struct XAAudioIODeviceCapabilitiesItf_;
+typedef const struct XAAudioIODeviceCapabilitiesItf_
+    * const * XAAudioIODeviceCapabilitiesItf;
+
+typedef void (XAAPIENTRY * xaAvailableAudioInputsChangedCallback) (
+    XAAudioIODeviceCapabilitiesItf caller,
+    void * pContext,
+    XAuint32 deviceID,
+    XAint32 numInputs,
+    XAboolean isNew
+);
+
+typedef void (XAAPIENTRY * xaAvailableAudioOutputsChangedCallback) (
+    XAAudioIODeviceCapabilitiesItf caller,
+    void * pContext,
+    XAuint32 deviceID,
+    XAint32 numOutputs,
+    XAboolean isNew
+);
+
+typedef void (XAAPIENTRY * xaDefaultDeviceIDMapChangedCallback) (
+    XAAudioIODeviceCapabilitiesItf caller,
+    void * pContext,
+	XAboolean isOutput,
+    XAint32 numDevices
+);
+
+struct XAAudioIODeviceCapabilitiesItf_ {
+    XAresult (*GetAvailableAudioInputs) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAint32 * pNumInputs,
+        XAuint32 * pInputDeviceIDs
+    );
+    XAresult (*QueryAudioInputCapabilities) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 deviceID,
+        XAAudioInputDescriptor * pDescriptor
+    );
+    XAresult (*RegisterAvailableAudioInputsChangedCallback) (
+        XAAudioIODeviceCapabilitiesItf self,
+        xaAvailableAudioInputsChangedCallback callback,
+        void * pContext
+    );
+    XAresult (*GetAvailableAudioOutputs) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAint32 * pNumOutputs,
+        XAuint32 * pOutputDeviceIDs
+    );
+    XAresult (*QueryAudioOutputCapabilities) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 deviceID,
+        XAAudioOutputDescriptor * pDescriptor
+    );
+    XAresult (*RegisterAvailableAudioOutputsChangedCallback) (
+        XAAudioIODeviceCapabilitiesItf self,
+        xaAvailableAudioOutputsChangedCallback callback,
+        void * pContext
+    );
+    XAresult (*RegisterDefaultDeviceIDMapChangedCallback) (
+        XAAudioIODeviceCapabilitiesItf self,
+        xaDefaultDeviceIDMapChangedCallback callback,
+        void * pContext
+    );
+    XAresult (*GetAssociatedAudioInputs) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 deviceID,
+        XAint32 * pNumAudioInputs,
+        XAuint32 * pAudioInputDeviceIDs
+    );
+    XAresult (*GetAssociatedAudioOutputs) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 deviceID,
+        XAint32 * pNumAudioOutputs,
+        XAuint32 * pAudioOutputDeviceIDs
+    );
+    XAresult (*GetDefaultAudioDevices) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 defaultDeviceID,
+        XAint32 *pNumAudioDevices,
+        XAuint32 *pAudioDeviceIDs
+    );
+    XAresult (*QuerySampleFormatsSupported) (
+        XAAudioIODeviceCapabilitiesItf self,
+        XAuint32 deviceID,
+        XAmilliHertz samplingRate,
+        XAint32 *pSampleFormats,
+        XAint32 *pNumOfSampleFormats
+    );
+};
+
+/* DEVICE VOLUME */
+
+XA_API extern const XAInterfaceID XA_IID_DEVICEVOLUME;
+
+struct XADeviceVolumeItf_;
+typedef const struct XADeviceVolumeItf_ * const * XADeviceVolumeItf;
+
+struct XADeviceVolumeItf_ {
+    XAresult (*GetVolumeScale) (
+        XADeviceVolumeItf self,
+        XAuint32 deviceID,
+        XAint32 * pMinValue,
+        XAint32 * pMaxValue,
+        XAboolean * pIsMillibelScale
+    );
+    XAresult (*SetVolume) (
+        XADeviceVolumeItf self,
+        XAuint32 deviceID,
+        XAint32 volume
+    );
+    XAresult (*GetVolume) (
+        XADeviceVolumeItf self,
+        XAuint32 deviceID,
+        XAint32 * pVolume
+    );
+};
+
+/* EQUALIZER */
+
+#define XA_EQUALIZER_UNDEFINED    ((XAuint16) 0xFFFF)
+
+XA_API extern const XAInterfaceID XA_IID_EQUALIZER;
+
+struct XAEqualizerItf_;
+typedef const struct XAEqualizerItf_ * const * XAEqualizerItf;
+
+struct XAEqualizerItf_ {
+    XAresult (*SetEnabled) (
+        XAEqualizerItf self,
+        XAboolean enabled
+    );
+    XAresult (*IsEnabled) (
+        XAEqualizerItf self,
+        XAboolean * pEnabled
+    );
+    XAresult (*GetNumberOfBands) (
+        XAEqualizerItf self,
+        XAuint16 * pNumBands
+    );
+    XAresult (*GetBandLevelRange) (
+        XAEqualizerItf self,
+        XAmillibel * pMin,
+        XAmillibel * pMax
+    );
+    XAresult (*SetBandLevel) (
+        XAEqualizerItf self,
+        XAuint16 band,
+        XAmillibel level
+    );
+    XAresult (*GetBandLevel) (
+        XAEqualizerItf self,
+        XAuint16 band,
+        XAmillibel * pLevel
+    );
+    XAresult (*GetCenterFreq) (
+        XAEqualizerItf self,
+        XAuint16 band,
+        XAmilliHertz * pCenter
+    );
+    XAresult (*GetBandFreqRange) (
+        XAEqualizerItf self,
+        XAuint16 band,
+        XAmilliHertz * pMin,
+        XAmilliHertz * pMax
+    );
+    XAresult (*GetBand) (
+        XAEqualizerItf self,
+        XAmilliHertz frequency,
+        XAuint16 * pBand
+    );
+    XAresult (*GetCurrentPreset) (
+        XAEqualizerItf self,
+        XAuint16 * pPreset
+    );
+    XAresult (*UsePreset) (
+        XAEqualizerItf self,
+        XAuint16 index
+    );
+    XAresult (*GetNumberOfPresets) (
+        XAEqualizerItf self,
+        XAuint16 * pNumPresets
+    );
+    XAresult (*GetPresetName) (
+        XAEqualizerItf self,
+        XAuint16 index,
+        const XAchar ** ppName
+    );
+};
+
+/* OUTPUT MIX */
+
+XA_API extern const XAInterfaceID XA_IID_OUTPUTMIX;
+
+struct XAOutputMixItf_;
+typedef const struct XAOutputMixItf_ * const * XAOutputMixItf;
+
+typedef void (XAAPIENTRY * xaMixDeviceChangeCallback) (
+    XAOutputMixItf caller,
+    void * pContext
+);
+
+struct XAOutputMixItf_ {
+    XAresult (*GetDestinationOutputDeviceIDs) (
+        XAOutputMixItf self,
+        XAint32 * pNumDevices,
+        XAuint32 * pDeviceIDs
+    );
+    XAresult (*RegisterDeviceChangeCallback) (
+        XAOutputMixItf self,
+        xaMixDeviceChangeCallback callback,
+        void * pContext
+    );
+    XAresult (*ReRoute) (
+        XAOutputMixItf self,
+        XAint32 numOutputDevices,
+        XAuint32 * pOutputDeviceIDs
+    );
+};
+
+/* RADIO */
+
+#define XA_FREQRANGE_FMEUROAMERICA                  ((XAuint8) 0x01)
+#define XA_FREQRANGE_FMJAPAN                        ((XAuint8) 0x02)
+#define XA_FREQRANGE_AMLW                           ((XAuint8) 0x03)
+#define XA_FREQRANGE_AMMW                           ((XAuint8) 0x04)
+#define XA_FREQRANGE_AMSW                           ((XAuint8) 0x05)
+
+#define XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED       ((XAuint32) 0x00000001)
+#define XA_RADIO_EVENT_FREQUENCY_CHANGED            ((XAuint32) 0x00000002)
+#define XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED      ((XAuint32) 0x00000003)
+#define XA_RADIO_EVENT_PRESET_CHANGED               ((XAuint32) 0x00000004)
+#define XA_RADIO_EVENT_SEEK_COMPLETED               ((XAuint32) 0x00000005)
+
+#define XA_STEREOMODE_MONO                          ((XAuint32) 0x00000000)
+#define XA_STEREOMODE_STEREO                        ((XAuint32) 0x00000001)
+#define XA_STEREOMODE_AUTO                          ((XAuint32) 0x00000002)
+
+XA_API extern const XAInterfaceID XA_IID_RADIO;
+
+struct XARadioItf_;
+typedef const struct XARadioItf_ * const * XARadioItf;
+
+typedef void (XAAPIENTRY * xaRadioCallback) (
+    XARadioItf caller,
+    void * pContext,
+    XAuint32 event,
+    XAuint32 eventIntData,
+    XAboolean eventBooleanData
+);
+
+struct XARadioItf_ {
+    XAresult (*SetFreqRange) (
+        XARadioItf self,
+        XAuint8 range
+    );
+    XAresult (*GetFreqRange) (
+        XARadioItf self,
+        XAuint8 * pRange
+    );
+    XAresult (*IsFreqRangeSupported) (
+        XARadioItf self,
+        XAuint8 range,
+        XAboolean * pSupported
+    );
+    XAresult (*GetFreqRangeProperties) (
+        XARadioItf self,
+        XAuint8 range,
+        XAuint32 * pMinFreq,
+        XAuint32 * pMaxFreq,
+        XAuint32 * pFreqInterval
+    );
+    XAresult (*SetFrequency) (
+        XARadioItf self,
+        XAuint32 freq
+    );
+    XAresult (*CancelSetFrequency) (
+        XARadioItf self
+    );
+    XAresult (*GetFrequency) (
+        XARadioItf self,
+        XAuint32 * pFreq
+    );
+    XAresult (*SetSquelch) (
+        XARadioItf self,
+        XAboolean squelch
+    );
+    XAresult (*GetSquelch) (
+        XARadioItf self,
+        XAboolean * pSquelch
+    );
+    XAresult (*SetStereoMode) (
+        XARadioItf self,
+        XAuint32 mode
+    );
+    XAresult (*GetStereoMode) (
+        XARadioItf self,
+        XAuint32 * pMode
+    );
+    XAresult (*GetSignalStrength) (
+        XARadioItf self,
+        XAuint32 * pStrength
+    );
+    XAresult (*Seek) (
+        XARadioItf self,
+        XAboolean upwards
+    );
+    XAresult (*StopSeeking) (
+        XARadioItf self
+    );
+    XAresult (*GetNumberOfPresets) (
+        XARadioItf self,
+        XAuint32 * pNumPresets
+    );
+    XAresult (*SetPreset) (
+        XARadioItf self,
+        XAuint32 preset,
+        XAuint32 freq,
+        XAuint8 range,
+        XAuint32 mode,
+        const XAchar * pName
+    );
+    XAresult (*GetPreset) (
+        XARadioItf self,
+        XAuint32 preset,
+        XAuint32 * pFreq,
+        XAuint8 * pRange,
+        XAuint32 * pMode,
+        XAchar * pName,
+        XAuint16 * pNameLength
+    );
+    XAresult (*RegisterRadioCallback) (
+        XARadioItf self,
+        xaRadioCallback callback,
+        void * pContext
+    );
+};
+
+/* RDS */
+
+#define XA_RDS_EVENT_NEW_PI                         ((XAuint16) 0x0001)
+#define XA_RDS_EVENT_NEW_PTY                        ((XAuint16) 0x0002)
+#define XA_RDS_EVENT_NEW_PS                         ((XAuint16) 0x0004)
+#define XA_RDS_EVENT_NEW_RT                         ((XAuint16) 0x0008)
+#define XA_RDS_EVENT_NEW_RT_PLUS                    ((XAuint16) 0x0010)
+#define XA_RDS_EVENT_NEW_CT                         ((XAuint16) 0x0020)
+#define XA_RDS_EVENT_NEW_TA                         ((XAuint16) 0x0040)
+#define XA_RDS_EVENT_NEW_TP                         ((XAuint16) 0x0080)
+#define XA_RDS_EVENT_NEW_ALARM                      ((XAuint16) 0x0100)
+
+#define XA_RDSPROGRAMMETYPE_RDSPTY_NONE \
+    ((XAuint32) 0x00000000)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_NEWS \
+    ((XAuint32) 0x00000001)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_CURRENTAFFAIRS \
+    ((XAuint32) 0x00000002)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_INFORMATION \
+    ((XAuint32) 0x00000003)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_SPORT \
+    ((XAuint32) 0x00000004)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_EDUCATION \
+    ((XAuint32) 0x00000005)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_DRAMA \
+    ((XAuint32) 0x00000006)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_CULTURE \
+    ((XAuint32) 0x00000007)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_SCIENCE \
+    ((XAuint32) 0x00000008)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_VARIEDSPEECH \
+    ((XAuint32) 0x00000009)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC \
+    ((XAuint32) 0x0000000A)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_ROCKMUSIC \
+    ((XAuint32) 0x0000000B)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_EASYLISTENING \
+    ((XAuint32) 0x0000000C)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_LIGHTCLASSICAL \
+    ((XAuint32) 0x0000000D)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_SERIOUSCLASSICAL \
+    ((XAuint32) 0x0000000E)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_OTHERMUSIC \
+    ((XAuint32) 0x0000000F)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_WEATHER \
+    ((XAuint32) 0x00000010)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_FINANCE \
+    ((XAuint32) 0x00000011)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_CHILDRENSPROGRAMMES \
+    ((XAuint32) 0x00000012)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_SOCIALAFFAIRS \
+    ((XAuint32) 0x00000013)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_RELIGION \
+    ((XAuint32) 0x00000014)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_PHONEIN \
+    ((XAuint32) 0x00000015)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_TRAVEL \
+    ((XAuint32) 0x00000016)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_LEISURE \
+    ((XAuint32) 0x00000017)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_JAZZMUSIC \
+    ((XAuint32) 0x00000018)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_COUNTRYMUSIC \
+    ((XAuint32) 0x00000019)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_NATIONALMUSIC \
+    ((XAuint32) 0x0000001A)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_OLDIESMUSIC \
+    ((XAuint32) 0x0000001B)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_FOLKMUSIC \
+    ((XAuint32) 0x0000001C)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_DOCUMENTARY \
+    ((XAuint32) 0x0000001D)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARMTEST \
+    ((XAuint32) 0x0000001E)
+#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARM \
+    ((XAuint32) 0x0000001F)
+
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_NONE \
+    ((XAuint32) 0x00000000)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_NEWS \
+    ((XAuint32) 0x00000001)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_INFORMATION \
+    ((XAuint32) 0x00000002)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_SPORTS \
+    ((XAuint32) 0x00000003)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_TALK \
+    ((XAuint32) 0x00000004)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_ROCK \
+    ((XAuint32) 0x00000005)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICROCK \
+    ((XAuint32) 0x00000006)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_ADULTHITS \
+    ((XAuint32) 0x00000007)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTROCK \
+    ((XAuint32) 0x00000008)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_TOP40 \
+    ((XAuint32) 0x00000009)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_COUNTRY \
+    ((XAuint32) 0x0000000A)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_OLDIES \
+    ((XAuint32) 0x0000000B)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFT \
+    ((XAuint32) 0x0000000C)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_NOSTALGIA \
+    ((XAuint32) 0x0000000D)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_JAZZ \
+    ((XAuint32) 0x0000000E)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICAL \
+    ((XAuint32) 0x0000000F)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_RHYTHMANDBLUES \
+    ((XAuint32) 0x00000010)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTRHYTHMANDBLUES \
+    ((XAuint32) 0x00000011)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_LANGUAGE \
+    ((XAuint32) 0x00000012)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSMUSIC \
+    ((XAuint32) 0x00000013)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSTALK \
+    ((XAuint32) 0x00000014)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_PERSONALITY \
+    ((XAuint32) 0x00000015)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_PUBLIC \
+    ((XAuint32) 0x00000016)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_COLLEGE \
+    ((XAuint32) 0x00000017)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED1 \
+    ((XAuint32) 0x00000018)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED2 \
+    ((XAuint32) 0x00000019)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED3 \
+    ((XAuint32) 0x0000001A)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED4 \
+    ((XAuint32) 0x0000001B)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED5 \
+    ((XAuint32) 0x0000001C)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_WEATHER \
+    ((XAuint32) 0x0000001D)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCYTEST \
+    ((XAuint32) 0x0000001E)
+#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCY \
+    ((XAuint32) 0x0000001F)
+
+#define XA_RDSRTPLUS_ITEMTITLE              ((XAuint8) 0x01)
+#define XA_RDSRTPLUS_ITEMALBUM              ((XAuint8) 0x02)
+#define XA_RDSRTPLUS_ITEMTRACKNUMBER        ((XAuint8) 0x03)
+#define XA_RDSRTPLUS_ITEMARTIST             ((XAuint8) 0x04)
+#define XA_RDSRTPLUS_ITEMCOMPOSITION        ((XAuint8) 0x05)
+#define XA_RDSRTPLUS_ITEMMOVEMENT           ((XAuint8) 0x06)
+#define XA_RDSRTPLUS_ITEMCONDUCTOR          ((XAuint8) 0x07)
+#define XA_RDSRTPLUS_ITEMCOMPOSER           ((XAuint8) 0x08)
+#define XA_RDSRTPLUS_ITEMBAND               ((XAuint8) 0x09)
+#define XA_RDSRTPLUS_ITEMCOMMENT            ((XAuint8) 0x0A)
+#define XA_RDSRTPLUS_ITEMGENRE              ((XAuint8) 0x0B)
+#define XA_RDSRTPLUS_INFONEWS               ((XAuint8) 0x0C)
+#define XA_RDSRTPLUS_INFONEWSLOCAL          ((XAuint8) 0x0D)
+#define XA_RDSRTPLUS_INFOSTOCKMARKET        ((XAuint8) 0x0E)
+#define XA_RDSRTPLUS_INFOSPORT              ((XAuint8) 0x0F)
+#define XA_RDSRTPLUS_INFOLOTTERY            ((XAuint8) 0x10)
+#define XA_RDSRTPLUS_INFOHOROSCOPE          ((XAuint8) 0x11)
+#define XA_RDSRTPLUS_INFODAILYDIVERSION     ((XAuint8) 0x12)
+#define XA_RDSRTPLUS_INFOHEALTH             ((XAuint8) 0x13)
+#define XA_RDSRTPLUS_INFOEVENT              ((XAuint8) 0x14)
+#define XA_RDSRTPLUS_INFOSZENE              ((XAuint8) 0x15)
+#define XA_RDSRTPLUS_INFOCINEMA             ((XAuint8) 0x16)
+#define XA_RDSRTPLUS_INFOTV                 ((XAuint8) 0x17)
+#define XA_RDSRTPLUS_INFODATETIME           ((XAuint8) 0x18)
+#define XA_RDSRTPLUS_INFOWEATHER            ((XAuint8) 0x19)
+#define XA_RDSRTPLUS_INFOTRAFFIC            ((XAuint8) 0x1A)
+#define XA_RDSRTPLUS_INFOALARM              ((XAuint8) 0x1B)
+#define XA_RDSRTPLUS_INFOADVISERTISEMENT    ((XAuint8) 0x1C)
+#define XA_RDSRTPLUS_INFOURL                ((XAuint8) 0x1D)
+#define XA_RDSRTPLUS_INFOOTHER              ((XAuint8) 0x1E)
+#define XA_RDSRTPLUS_STATIONNAMESHORT       ((XAuint8) 0x1F)
+#define XA_RDSRTPLUS_STATIONNAMELONG        ((XAuint8) 0x20)
+#define XA_RDSRTPLUS_PROGRAMNOW             ((XAuint8) 0x21)
+#define XA_RDSRTPLUS_PROGRAMNEXT            ((XAuint8) 0x22)
+#define XA_RDSRTPLUS_PROGRAMPART            ((XAuint8) 0x23)
+#define XA_RDSRTPLUS_PROGRAMHOST            ((XAuint8) 0x24)
+#define XA_RDSRTPLUS_PROFRAMEDITORIALSTAFF  ((XAuint8) 0x25)
+#define XA_RDSRTPLUS_PROGRAMFREQUENCY       ((XAuint8) 0x26)
+#define XA_RDSRTPLUS_PROGRAMHOMEPAGE        ((XAuint8) 0x27)
+#define XA_RDSRTPLUS_PROGRAMSUBCHANNEL      ((XAuint8) 0x28)
+#define XA_RDSRTPLUS_PHONEHOTLINE           ((XAuint8) 0x29)
+#define XA_RDSRTPLUS_PHONESTUDIO            ((XAuint8) 0x2A)
+#define XA_RDSRTPLUS_PHONEOTHER             ((XAuint8) 0x2B)
+#define XA_RDSRTPLUS_SMSSTUDIO              ((XAuint8) 0x2C)
+#define XA_RDSRTPLUS_SMSOTHER               ((XAuint8) 0x2D)
+#define XA_RDSRTPLUS_EMAILHOTLINE           ((XAuint8) 0x2E)
+#define XA_RDSRTPLUS_EMAILSTUDIO            ((XAuint8) 0x2F)
+#define XA_RDSRTPLUS_EMAILOTHER             ((XAuint8) 0x30)
+#define XA_RDSRTPLUS_MMSOTHER               ((XAuint8) 0x31)
+#define XA_RDSRTPLUS_CHAT                   ((XAuint8) 0x32)
+#define XA_RDSRTPLUS_CHATCENTER             ((XAuint8) 0x33)
+#define XA_RDSRTPLUS_VOTEQUESTION           ((XAuint8) 0x34)
+#define XA_RDSRTPLUS_VOTECENTER             ((XAuint8) 0x35)
+#define XA_RDSRTPLUS_OPENCLASS45            ((XAuint8) 0x36)
+#define XA_RDSRTPLUS_OPENCLASS55            ((XAuint8) 0x37)
+#define XA_RDSRTPLUS_OPENCLASS56            ((XAuint8) 0x38)
+#define XA_RDSRTPLUS_OPENCLASS57            ((XAuint8) 0x39)
+#define XA_RDSRTPLUS_OPENCLASS58            ((XAuint8) 0x3A)
+#define XA_RDSRTPLUS_PLACE                  ((XAuint8) 0x3B)
+#define XA_RDSRTPLUS_APPOINTMENT            ((XAuint8) 0x3C)
+#define XA_RDSRTPLUS_IDENTIFIER             ((XAuint8) 0x3D)
+#define XA_RDSRTPLUS_PURCHASE               ((XAuint8) 0x3E)
+#define XA_RDSRTPLUS_GETDATA                ((XAuint8) 0x3F)
+
+XA_API extern const XAInterfaceID XA_IID_RDS;
+
+struct XARDSItf_;
+typedef const struct XARDSItf_ * const * XARDSItf;
+
+typedef void (XAAPIENTRY * xaGetODAGroupCallback) (
+    XARadioItf caller,
+    void * pContext,
+    XAboolean success,
+    XAint16 group,
+    XAuint16 message
+);
+
+typedef void (XAAPIENTRY * xaNewODADataCallback) (
+    XARDSItf caller,
+    void * pContext,
+    XAint16 group,
+    XAuint64 data
+);
+
+typedef void (XAAPIENTRY * xaRDSCallback) (
+    XARDSItf caller,
+    void * pContext,
+    XAuint16 event,
+    XAuint8 eventData
+);
+
+struct XARDSItf_ {
+    XAresult (*QueryRDSSignal) (
+        XARDSItf self,
+        XAboolean * isSignal
+    );
+    XAresult (*GetProgrammeServiceName) (
+        XARDSItf self,
+        XAchar * ps
+    );
+    XAresult (*GetRadioText) (
+        XARDSItf self,
+        XAchar * rt
+    );
+    XAresult (*GetRadioTextPlus) (
+        XARDSItf self,
+        XAuint8 contentType,
+        XAchar * informationElement,
+        XAchar * descriptor,
+        XAuint8 * descriptorContentType
+    );
+    XAresult (*GetProgrammeType) (
+        XARDSItf self,
+        XAuint32 * pty
+    );
+    XAresult (*GetProgrammeTypeString) (
+        XARDSItf self,
+        XAboolean isLengthMax16,
+        XAchar * pty
+    );
+    XAresult (*GetProgrammeIdentificationCode) (
+        XARDSItf self,
+        XAint16 * pi
+    );
+    XAresult (*GetClockTime) (
+        XARDSItf self,
+        XAtime * dateAndTime
+    );
+    XAresult (*GetTrafficAnnouncement) (
+        XARDSItf self,
+        XAboolean * ta
+    );
+    XAresult (*GetTrafficProgramme) (
+        XARDSItf self,
+        XAboolean * tp
+    );
+    XAresult (*SeekByProgrammeType) (
+        XARDSItf self,
+        XAuint32 pty,
+        XAboolean upwards
+    );
+    XAresult (*SeekTrafficAnnouncement) (
+        XARDSItf self,
+        XAboolean upwards
+    );
+    XAresult (*SeekTrafficProgramme) (
+        XARDSItf self,
+        XAboolean upwards
+    );
+    XAresult (*SetAutomaticSwitching) (
+        XARDSItf self,
+        XAboolean automatic
+    );
+    XAresult (*GetAutomaticSwitching) (
+        XARDSItf self,
+        XAboolean * automatic
+    );
+    XAresult (*SetAutomaticTrafficAnnouncement) (
+        XARDSItf self,
+        XAboolean automatic
+    );
+    XAresult (*GetAutomaticTrafficAnnouncement) (
+        XARDSItf self,
+        XAboolean * automatic
+    );
+    XAresult (*GetODAGroup) (
+        XARDSItf self,
+        XAuint16 AID,
+        xaGetODAGroupCallback callback,
+        void * pContext
+    );
+    XAresult (*SubscribeODAGroup) (
+        XARDSItf self,
+        XAint16 group,
+        XAboolean useErrorCorrection
+    );
+    XAresult (*UnsubscribeODAGroup) (
+        XARDSItf self,
+        XAint16 group
+    );
+    XAresult (*ListODAGroupSubscriptions) (
+        XARDSItf self,
+        XAint16* pGroups,
+        XAuint32* pLength
+    );
+    XAresult (*RegisterRDSCallback) (
+        XARDSItf self,
+        xaRDSCallback callback,
+        void * pContext
+    );
+    XAresult (*RegisterODADataCallback) (
+        XARDSItf self,
+        xaNewODADataCallback callback,
+        void * pContext
+    );
+};
+
+/* VIBRA */
+
+XA_API extern const XAInterfaceID XA_IID_VIBRA;
+
+struct XAVibraItf_;
+typedef const struct XAVibraItf_ * const * XAVibraItf;
+
+struct XAVibraItf_ {
+    XAresult (*Vibrate) (
+        XAVibraItf self,
+        XAboolean vibrate
+    );
+    XAresult (*IsVibrating) (
+        XAVibraItf self,
+        XAboolean * pVibrating
+    );
+    XAresult (*SetFrequency) (
+        XAVibraItf self,
+        XAmilliHertz frequency
+    );
+    XAresult (*GetFrequency) (
+        XAVibraItf self,
+        XAmilliHertz * pFrequency
+    );
+    XAresult (*SetIntensity) (
+        XAVibraItf self,
+        XApermille intensity
+    );
+    XAresult (*GetIntensity) (
+        XAVibraItf self,
+        XApermille * pIntensity
+    );
+};
+
+/* LED ARRAY */
+
+typedef struct XAHSL_ {
+    XAmillidegree hue;
+    XApermille saturation;
+    XApermille lightness;
+} XAHSL;
+
+XA_API extern const XAInterfaceID XA_IID_LED;
+
+struct XALEDArrayItf_;
+typedef const struct XALEDArrayItf_ * const * XALEDArrayItf;
+
+struct XALEDArrayItf_ {
+    XAresult (*ActivateLEDArray) (
+        XALEDArrayItf self,
+        XAuint32 lightMask
+    );
+    XAresult (*IsLEDArrayActivated) (
+        XALEDArrayItf self,
+        XAuint32 * pLightMask
+    );
+    XAresult (*SetColor) (
+        XALEDArrayItf self,
+        XAuint8 index,
+        const XAHSL * pColor
+    );
+    XAresult (*GetColor) (
+        XALEDArrayItf self,
+        XAuint8 index,
+        XAHSL * pColor
+    );
+};
+
+
+
+  /*****************************************************************/
+  /* CODEC RELATED INTERFACES, STRUCTS AND DEFINES                 */
+  /*****************************************************************/
+
+/* AUDIO ENCODER AND AUDIO ENCODER/DECODER CAPABILITIES */
+
+#define XA_RATECONTROLMODE_CONSTANTBITRATE  ((XAuint32) 0x00000001)
+#define XA_RATECONTROLMODE_VARIABLEBITRATE  ((XAuint32) 0x00000002)
+
+#define XA_AUDIOCODEC_PCM                   ((XAuint32) 0x00000001)
+#define XA_AUDIOCODEC_MP3                   ((XAuint32) 0x00000002)
+#define XA_AUDIOCODEC_AMR                   ((XAuint32) 0x00000003)
+#define XA_AUDIOCODEC_AMRWB                 ((XAuint32) 0x00000004)
+#define XA_AUDIOCODEC_AMRWBPLUS             ((XAuint32) 0x00000005)
+#define XA_AUDIOCODEC_AAC                   ((XAuint32) 0x00000006)
+#define XA_AUDIOCODEC_WMA                   ((XAuint32) 0x00000007)
+#define XA_AUDIOCODEC_REAL                  ((XAuint32) 0x00000008)
+#define XA_AUDIOCODEC_VORBIS                ((XAuint32) 0x00000009)
+
+#define XA_AUDIOPROFILE_PCM                 ((XAuint32) 0x00000001)
+
+#define XA_AUDIOPROFILE_MPEG1_L3            ((XAuint32) 0x00000001)
+#define XA_AUDIOPROFILE_MPEG2_L3            ((XAuint32) 0x00000002)
+#define XA_AUDIOPROFILE_MPEG25_L3           ((XAuint32) 0x00000003)
+
+#define XA_AUDIOCHANMODE_MP3_MONO           ((XAuint32) 0x00000001)
+#define XA_AUDIOCHANMODE_MP3_STEREO         ((XAuint32) 0x00000002)
+#define XA_AUDIOCHANMODE_MP3_JOINTSTEREO    ((XAuint32) 0x00000003)
+#define XA_AUDIOCHANMODE_MP3_DUAL           ((XAuint32) 0x00000004)
+
+#define XA_AUDIOPROFILE_AMR                 ((XAuint32) 0x00000001)
+
+#define XA_AUDIOSTREAMFORMAT_CONFORMANCE    ((XAuint32) 0x00000001)
+#define XA_AUDIOSTREAMFORMAT_IF1            ((XAuint32) 0x00000002)
+#define XA_AUDIOSTREAMFORMAT_IF2            ((XAuint32) 0x00000003)
+#define XA_AUDIOSTREAMFORMAT_FSF            ((XAuint32) 0x00000004)
+#define XA_AUDIOSTREAMFORMAT_RTPPAYLOAD     ((XAuint32) 0x00000005)
+#define XA_AUDIOSTREAMFORMAT_ITU            ((XAuint32) 0x00000006)
+
+#define XA_AUDIOPROFILE_AMRWB               ((XAuint32) 0x00000001)
+
+#define XA_AUDIOPROFILE_AMRWBPLUS           ((XAuint32) 0x00000001)
+
+#define XA_AUDIOPROFILE_AAC_AAC             ((XAuint32) 0x00000001)
+
+#define XA_AUDIOMODE_AAC_MAIN               ((XAuint32) 0x00000001)
+#define XA_AUDIOMODE_AAC_LC                 ((XAuint32) 0x00000002)
+#define XA_AUDIOMODE_AAC_SSR                ((XAuint32) 0x00000003)
+#define XA_AUDIOMODE_AAC_LTP                ((XAuint32) 0x00000004)
+#define XA_AUDIOMODE_AAC_HE                 ((XAuint32) 0x00000005)
+#define XA_AUDIOMODE_AAC_SCALABLE           ((XAuint32) 0x00000006)
+#define XA_AUDIOMODE_AAC_ERLC               ((XAuint32) 0x00000007)
+#define XA_AUDIOMODE_AAC_LD                 ((XAuint32) 0x00000008)
+#define XA_AUDIOMODE_AAC_HE_PS              ((XAuint32) 0x00000009)
+#define XA_AUDIOMODE_AAC_HE_MPS             ((XAuint32) 0x0000000A)
+
+#define XA_AUDIOSTREAMFORMAT_MP2ADTS        ((XAuint32) 0x00000001)
+#define XA_AUDIOSTREAMFORMAT_MP4ADTS        ((XAuint32) 0x00000002)
+#define XA_AUDIOSTREAMFORMAT_MP4LOAS        ((XAuint32) 0x00000003)
+#define XA_AUDIOSTREAMFORMAT_MP4LATM        ((XAuint32) 0x00000004)
+#define XA_AUDIOSTREAMFORMAT_ADIF           ((XAuint32) 0x00000005)
+#define XA_AUDIOSTREAMFORMAT_MP4FF          ((XAuint32) 0x00000006)
+#define XA_AUDIOSTREAMFORMAT_RAW            ((XAuint32) 0x00000007)
+
+#define XA_AUDIOPROFILE_WMA7                ((XAuint32) 0x00000001)
+#define XA_AUDIOPROFILE_WMA8                ((XAuint32) 0x00000002)
+#define XA_AUDIOPROFILE_WMA9                ((XAuint32) 0x00000003)
+#define XA_AUDIOPROFILE_WMA10               ((XAuint32) 0x00000004)
+
+#define XA_AUDIOMODE_WMA_LEVEL1             ((XAuint32) 0x00000001)
+#define XA_AUDIOMODE_WMA_LEVEL2             ((XAuint32) 0x00000002)
+#define XA_AUDIOMODE_WMA_LEVEL3             ((XAuint32) 0x00000003)
+#define XA_AUDIOMODE_WMA_LEVEL4             ((XAuint32) 0x00000004)
+#define XA_AUDIOMODE_WMAPRO_LEVELM0         ((XAuint32) 0x00000005)
+#define XA_AUDIOMODE_WMAPRO_LEVELM1         ((XAuint32) 0x00000006)
+#define XA_AUDIOMODE_WMAPRO_LEVELM2         ((XAuint32) 0x00000007)
+#define XA_AUDIOMODE_WMAPRO_LEVELM3         ((XAuint32) 0x00000008)
+
+#define XA_AUDIOPROFILE_REALAUDIO           ((XAuint32) 0x00000001)
+
+#define XA_AUDIOMODE_REALAUDIO_G2           ((XAuint32) 0x00000001)
+#define XA_AUDIOMODE_REALAUDIO_8            ((XAuint32) 0x00000002)
+#define XA_AUDIOMODE_REALAUDIO_10           ((XAuint32) 0x00000003)
+#define XA_AUDIOMODE_REALAUDIO_SURROUND     ((XAuint32) 0x00000004)
+
+#define XA_AUDIOPROFILE_VORBIS              ((XAuint32) 0x00000001)
+
+#define XA_AUDIOMODE_VORBIS                 ((XAuint32) 0x00000001)
+
+
+typedef struct XAAudioCodecDescriptor_ {
+    XAuint32 maxChannels;
+    XAuint32 minBitsPerSample;
+    XAuint32 maxBitsPerSample;
+    XAmilliHertz minSampleRate;
+    XAmilliHertz maxSampleRate;
+    XAboolean isFreqRangeContinuous;
+    XAmilliHertz * pSampleRatesSupported;
+    XAuint32 numSampleRatesSupported;
+    XAuint32 minBitRate;
+    XAuint32 maxBitRate;
+    XAboolean isBitrateRangeContinuous;
+    XAuint32 * pBitratesSupported;
+    XAuint32 numBitratesSupported;
+    XAuint32 profileSetting;
+    XAuint32 modeSetting;
+} XAAudioCodecDescriptor;
+
+typedef struct XAAudioEncoderSettings_ {
+    XAuint32 encoderId;
+    XAuint32 channelsIn;
+    XAuint32 channelsOut;
+    XAmilliHertz sampleRate;
+    XAuint32 bitRate;
+    XAuint32 bitsPerSample;
+    XAuint32 rateControl;
+    XAuint32 profileSetting;
+    XAuint32 levelSetting;
+    XAuint32 channelMode;
+    XAuint32 streamFormat;
+    XAuint32 encodeOptions;
+    XAuint32 blockAlignment;
+} XAAudioEncoderSettings;
+
+XA_API extern const XAInterfaceID XA_IID_AUDIODECODERCAPABILITIES;
+
+struct XAAudioDecoderCapabilitiesItf_;
+typedef const struct XAAudioDecoderCapabilitiesItf_
+    * const * XAAudioDecoderCapabilitiesItf;
+
+struct XAAudioDecoderCapabilitiesItf_ {
+    XAresult (*GetAudioDecoders) (
+        XAAudioDecoderCapabilitiesItf self,
+        XAuint32 * pNumDecoders,
+        XAuint32 * pDecoderIds
+    );
+    XAresult (*GetAudioDecoderCapabilities) (
+        XAAudioDecoderCapabilitiesItf self,
+        XAuint32 decoderId,
+        XAuint32 * pIndex,
+        XAAudioCodecDescriptor * pDescriptor
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_AUDIOENCODER;
+
+struct XAAudioEncoderItf_;
+typedef const struct XAAudioEncoderItf_ * const * XAAudioEncoderItf;
+
+struct XAAudioEncoderItf_ {
+    XAresult (*SetEncoderSettings) (
+        XAAudioEncoderItf self,
+        XAAudioEncoderSettings * pSettings
+    );
+    XAresult (*GetEncoderSettings) (
+        XAAudioEncoderItf self,
+        XAAudioEncoderSettings * pSettings
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_AUDIOENCODERCAPABILITIES;
+
+struct XAAudioEncoderCapabilitiesItf_;
+typedef const struct XAAudioEncoderCapabilitiesItf_
+    * const * XAAudioEncoderCapabilitiesItf;
+
+struct XAAudioEncoderCapabilitiesItf_ {
+    XAresult (*GetAudioEncoders) (
+        XAAudioEncoderCapabilitiesItf self,
+        XAuint32 * pNumEncoders,
+        XAuint32 * pEncoderIds
+    );
+    XAresult (*GetAudioEncoderCapabilities) (
+        XAAudioEncoderCapabilitiesItf self,
+        XAuint32 encoderId,
+        XAuint32 * pIndex,
+        XAAudioCodecDescriptor * pDescriptor
+    );
+};
+
+/* IMAGE ENCODER AND IMAGE ENCODER/DECODER CAPABILITIES */
+
+#define XA_IMAGECODEC_JPEG              ((XAuint32) 0x00000001)
+#define XA_IMAGECODEC_GIF               ((XAuint32) 0x00000002)
+#define XA_IMAGECODEC_BMP               ((XAuint32) 0x00000003)
+#define XA_IMAGECODEC_PNG               ((XAuint32) 0x00000004)
+#define XA_IMAGECODEC_TIFF              ((XAuint32) 0x00000005)
+#define XA_IMAGECODEC_RAW               ((XAuint32) 0x00000006)
+
+typedef struct XAImageCodecDescriptor_ {
+    XAuint32 codecId;
+    XAuint32 maxWidth;
+    XAuint32 maxHeight;
+} XAImageCodecDescriptor;
+
+typedef struct XAImageSettings_ {
+    XAuint32 encoderId;
+    XAuint32 width;
+    XAuint32 height;
+    XApermille compressionLevel;
+    XAuint32 colorFormat;
+} XAImageSettings;
+
+XA_API extern const XAInterfaceID XA_IID_IMAGEENCODERCAPABILITIES;
+
+struct XAImageEncoderCapabilitiesItf_;
+typedef const struct XAImageEncoderCapabilitiesItf_
+    * const * XAImageEncoderCapabilitiesItf;
+
+struct XAImageEncoderCapabilitiesItf_ {
+    XAresult (*GetImageEncoderCapabilities) (
+        XAImageEncoderCapabilitiesItf self,
+        XAuint32 * pEncoderId,
+        XAImageCodecDescriptor * pDescriptor
+    );
+    XAresult (*QueryColorFormats) (
+        const XAImageEncoderCapabilitiesItf self,
+        XAuint32 * pIndex,
+        XAuint32 * pColorFormat
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_IMAGEDECODERCAPABILITIES;
+
+struct XAImageDecoderCapabilitiesItf_;
+typedef const struct XAImageDecoderCapabilitiesItf_
+    * const * XAImageDecoderCapabilitiesItf;
+
+struct XAImageDecoderCapabilitiesItf_ {
+    XAresult (*GetImageDecoderCapabilities) (
+        XAImageDecoderCapabilitiesItf self,
+        XAuint32 * pDecoderId,
+        XAImageCodecDescriptor * pDescriptor
+    );
+    XAresult (*QueryColorFormats) (
+        const XAImageDecoderCapabilitiesItf self,
+        XAuint32 * pIndex,
+        XAuint32 * pColorFormat
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_IMAGEENCODER;
+
+struct XAImageEncoderItf_;
+typedef const struct XAImageEncoderItf_ * const * XAImageEncoderItf;
+
+struct XAImageEncoderItf_ {
+    XAresult (*SetImageSettings) (
+        XAImageEncoderItf self,
+        const XAImageSettings * pSettings
+    );
+    XAresult (*GetImageSettings) (
+        XAImageEncoderItf self,
+        XAImageSettings * pSettings
+    );
+    XAresult (*GetSizeEstimate) (
+        XAImageEncoderItf self,
+        XAuint32 * pSize
+    );
+};
+
+/* VIDEO ENCODER AND VIDEO ENCODER/DECODER CAPABILITIES */
+
+#define XA_VIDEOCODEC_MPEG2                     ((XAuint32) 0x00000001)
+#define XA_VIDEOCODEC_H263                      ((XAuint32) 0x00000002)
+#define XA_VIDEOCODEC_MPEG4                     ((XAuint32) 0x00000003)
+#define XA_VIDEOCODEC_AVC                       ((XAuint32) 0x00000004)
+#define XA_VIDEOCODEC_VC1                       ((XAuint32) 0x00000005)
+
+#define XA_VIDEOPROFILE_MPEG2_SIMPLE            ((XAuint32) 0x00000001)
+#define XA_VIDEOPROFILE_MPEG2_MAIN              ((XAuint32) 0x00000002)
+#define XA_VIDEOPROFILE_MPEG2_422               ((XAuint32) 0x00000003)
+#define XA_VIDEOPROFILE_MPEG2_SNR               ((XAuint32) 0x00000004)
+#define XA_VIDEOPROFILE_MPEG2_SPATIAL           ((XAuint32) 0x00000005)
+#define XA_VIDEOPROFILE_MPEG2_HIGH              ((XAuint32) 0x00000006)
+
+#define XA_VIDEOLEVEL_MPEG2_LL                  ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_MPEG2_ML                  ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_MPEG2_H14                 ((XAuint32) 0x00000003)
+#define XA_VIDEOLEVEL_MPEG2_HL                  ((XAuint32) 0x00000004)
+
+#define XA_VIDEOPROFILE_H263_BASELINE           ((XAuint32) 0x00000001)
+#define XA_VIDEOPROFILE_H263_H320CODING         ((XAuint32) 0x00000002)
+#define XA_VIDEOPROFILE_H263_BACKWARDCOMPATIBLE ((XAuint32) 0x00000003)
+#define XA_VIDEOPROFILE_H263_ISWV2              ((XAuint32) 0x00000004)
+#define XA_VIDEOPROFILE_H263_ISWV3              ((XAuint32) 0x00000005)
+#define XA_VIDEOPROFILE_H263_HIGHCOMPRESSION    ((XAuint32) 0x00000006)
+#define XA_VIDEOPROFILE_H263_INTERNET           ((XAuint32) 0x00000007)
+#define XA_VIDEOPROFILE_H263_INTERLACE          ((XAuint32) 0x00000008)
+#define XA_VIDEOPROFILE_H263_HIGHLATENCY        ((XAuint32) 0x00000009)
+
+#define XA_VIDEOLEVEL_H263_10                   ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_H263_20                   ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_H263_30                   ((XAuint32) 0x00000003)
+#define XA_VIDEOLEVEL_H263_40                   ((XAuint32) 0x00000004)
+#define XA_VIDEOLEVEL_H263_45                   ((XAuint32) 0x00000005)
+#define XA_VIDEOLEVEL_H263_50                   ((XAuint32) 0x00000006)
+#define XA_VIDEOLEVEL_H263_60                   ((XAuint32) 0x00000007)
+#define XA_VIDEOLEVEL_H263_70                   ((XAuint32) 0x00000008)
+
+#define XA_VIDEOPROFILE_MPEG4_SIMPLE            ((XAuint32) 0x00000001)
+#define XA_VIDEOPROFILE_MPEG4_SIMPLESCALABLE    ((XAuint32) 0x00000002)
+#define XA_VIDEOPROFILE_MPEG4_CORE              ((XAuint32) 0x00000003)
+#define XA_VIDEOPROFILE_MPEG4_MAIN              ((XAuint32) 0x00000004)
+#define XA_VIDEOPROFILE_MPEG4_NBIT              ((XAuint32) 0x00000005)
+#define XA_VIDEOPROFILE_MPEG4_SCALABLETEXTURE   ((XAuint32) 0x00000006)
+#define XA_VIDEOPROFILE_MPEG4_SIMPLEFACE        ((XAuint32) 0x00000007)
+#define XA_VIDEOPROFILE_MPEG4_SIMPLEFBA         ((XAuint32) 0x00000008)
+#define XA_VIDEOPROFILE_MPEG4_BASICANIMATED     ((XAuint32) 0x00000009)
+#define XA_VIDEOPROFILE_MPEG4_HYBRID            ((XAuint32) 0x0000000A)
+#define XA_VIDEOPROFILE_MPEG4_ADVANCEDREALTIME  ((XAuint32) 0x0000000B)
+#define XA_VIDEOPROFILE_MPEG4_CORESCALABLE      ((XAuint32) 0x0000000C)
+#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCODING    ((XAuint32) 0x0000000D)
+#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCORE      ((XAuint32) 0x0000000E)
+#define XA_VIDEOPROFILE_MPEG4_ADVANCEDSCALABLE  ((XAuint32) 0x0000000F)
+
+#define XA_VIDEOLEVEL_MPEG4_0                   ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_MPEG4_0b                  ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_MPEG4_1                   ((XAuint32) 0x00000003)
+#define XA_VIDEOLEVEL_MPEG4_2                   ((XAuint32) 0x00000004)
+#define XA_VIDEOLEVEL_MPEG4_3                   ((XAuint32) 0x00000005)
+#define XA_VIDEOLEVEL_MPEG4_4                   ((XAuint32) 0x00000006)
+#define XA_VIDEOLEVEL_MPEG4_4a                  ((XAuint32) 0x00000007)
+#define XA_VIDEOLEVEL_MPEG4_5                   ((XAuint32) 0x00000008)
+
+#define XA_VIDEOPROFILE_AVC_BASELINE            ((XAuint32) 0x00000001)
+#define XA_VIDEOPROFILE_AVC_MAIN                ((XAuint32) 0x00000002)
+#define XA_VIDEOPROFILE_AVC_EXTENDED            ((XAuint32) 0x00000003)
+#define XA_VIDEOPROFILE_AVC_HIGH                ((XAuint32) 0x00000004)
+#define XA_VIDEOPROFILE_AVC_HIGH10              ((XAuint32) 0x00000005)
+#define XA_VIDEOPROFILE_AVC_HIGH422             ((XAuint32) 0x00000006)
+#define XA_VIDEOPROFILE_AVC_HIGH444             ((XAuint32) 0x00000007)
+
+#define XA_VIDEOLEVEL_AVC_1                     ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_AVC_1B                    ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_AVC_11                    ((XAuint32) 0x00000003)
+#define XA_VIDEOLEVEL_AVC_12                    ((XAuint32) 0x00000004)
+#define XA_VIDEOLEVEL_AVC_13                    ((XAuint32) 0x00000005)
+#define XA_VIDEOLEVEL_AVC_2                     ((XAuint32) 0x00000006)
+#define XA_VIDEOLEVEL_AVC_21                    ((XAuint32) 0x00000007)
+#define XA_VIDEOLEVEL_AVC_22                    ((XAuint32) 0x00000008)
+#define XA_VIDEOLEVEL_AVC_3                     ((XAuint32) 0x00000009)
+#define XA_VIDEOLEVEL_AVC_31                    ((XAuint32) 0x0000000A)
+#define XA_VIDEOLEVEL_AVC_32                    ((XAuint32) 0x0000000B)
+#define XA_VIDEOLEVEL_AVC_4                     ((XAuint32) 0x0000000C)
+#define XA_VIDEOLEVEL_AVC_41                    ((XAuint32) 0x0000000D)
+#define XA_VIDEOLEVEL_AVC_42                    ((XAuint32) 0x0000000E)
+#define XA_VIDEOLEVEL_AVC_5                     ((XAuint32) 0x0000000F)
+#define XA_VIDEOLEVEL_AVC_51                    ((XAuint32) 0x00000010)
+
+#define XA_VIDEOLEVEL_VC1_SIMPLE                ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_VC1_MAIN                  ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_VC1_ADVANCED              ((XAuint32) 0x00000003)
+
+#define XA_VIDEOLEVEL_VC1_LOW                   ((XAuint32) 0x00000001)
+#define XA_VIDEOLEVEL_VC1_MEDIUM                ((XAuint32) 0x00000002)
+#define XA_VIDEOLEVEL_VC1_HIGH                  ((XAuint32) 0x00000003)
+#define XA_VIDEOLEVEL_VC1_L0                    ((XAuint32) 0x00000004)
+#define XA_VIDEOLEVEL_VC1_L1                    ((XAuint32) 0x00000005)
+#define XA_VIDEOLEVEL_VC1_L2                    ((XAuint32) 0x00000006)
+#define XA_VIDEOLEVEL_VC1_L3                    ((XAuint32) 0x00000007)
+#define XA_VIDEOLEVEL_VC1_L4                    ((XAuint32) 0x00000008)
+
+typedef struct XAVideoCodecDescriptor_ {
+    XAuint32 codecId;
+    XAuint32 maxWidth;
+    XAuint32 maxHeight;
+    XAuint32 maxFrameRate;
+    XAuint32 maxBitRate;
+    XAuint32 rateControlSupported;
+    XAuint32 profileSetting;
+    XAuint32 levelSetting;
+} XAVideoCodecDescriptor;
+
+typedef struct XAVideoSettings_ {
+    XAuint32 encoderId;
+    XAuint32 width;
+    XAuint32 height;
+    XAuint32 frameRate;
+    XAuint32 bitRate;
+    XAuint32 rateControl;
+    XAuint32 profileSetting;
+    XAuint32 levelSetting;
+    XAuint32 keyFrameInterval;
+} XAVideoSettings;
+
+XA_API extern const XAInterfaceID XA_IID_VIDEODECODERCAPABILITIES;
+
+struct XAVideoDecoderCapabilitiesItf_;
+typedef const struct XAVideoDecoderCapabilitiesItf_
+    * const * XAVideoDecoderCapabilitiesItf;
+
+struct XAVideoDecoderCapabilitiesItf_ {
+    XAresult (*GetVideoDecoders) (
+        XAVideoDecoderCapabilitiesItf self,
+        XAuint32 * pNumDecoders,
+        XAuint32 * pDecoderIds
+    );
+    XAresult (*GetVideoDecoderCapabilities) (
+        XAVideoDecoderCapabilitiesItf self,
+        XAuint32 decoderId,
+        XAuint32 * pIndex,
+        XAVideoCodecDescriptor * pDescriptor
+    );
+};
+
+XA_API extern const XAInterfaceID XA_IID_VIDEOENCODER;
+
+XA_API extern const XAInterfaceID XA_IID_VIDEOENCODERCAPABILITIES;
+
+struct XAVideoEncoderCapabilitiesItf_;
+typedef const struct XAVideoEncoderCapabilitiesItf_
+    * const * XAVideoEncoderCapabilitiesItf;
+
+struct XAVideoEncoderCapabilitiesItf_ {
+    XAresult (*GetVideoEncoders) (
+        XAVideoEncoderCapabilitiesItf self,
+        XAuint32 * pNumEncoders,
+        XAuint32 * pEncoderIds
+    );
+    XAresult (*GetVideoEncoderCapabilities) (
+        XAVideoEncoderCapabilitiesItf self,
+        XAuint32 encoderId,
+        XAuint32 * pIndex,
+        XAVideoCodecDescriptor * pDescriptor
+    );
+};
+
+struct XAVideoEncoderItf_;
+typedef const struct XAVideoEncoderItf_ * const * XAVideoEncoderItf;
+
+struct XAVideoEncoderItf_ {
+    XAresult (*SetVideoSettings) (
+        XAVideoEncoderItf self,
+        XAVideoSettings * pSettings
+    );
+    XAresult (*GetVideoSettings) (
+        XAVideoEncoderItf self,
+        XAVideoSettings * pSettings
+    );
+};
+
+/* STREAM INFORMATION */
+
+#define XA_DOMAINTYPE_AUDIO     0x00000001
+#define XA_DOMAINTYPE_VIDEO     0x00000002
+#define XA_DOMAINTYPE_IMAGE     0x00000003
+#define XA_DOMAINTYPE_TIMEDTEXT 0x00000004
+#define XA_DOMAINTYPE_MIDI      0x00000005
+#define XA_DOMAINTYPE_VENDOR    0xFFFFFFFE
+#define XA_DOMAINTYPE_UNKNOWN   0xFFFFFFFF
+
+#define XA_MIDIBANK_DEVICE      0x00000001
+#define XA_MIDIBANK_CUSTOM      0x00000002
+
+#define XA_MIDI_UNKNOWN         0xFFFFFFFF
+
+#define XA_STREAMCBEVENT_PROPERTYCHANGE     ((XAuint32) 0x00000001)
+
+typedef struct XAMediaContainerInformation_ {
+    XAuint32 containerType;
+    XAmillisecond mediaDuration;
+    XAuint32 numStreams;
+} XAMediaContainerInformation;
+
+typedef struct XAVideoStreamInformation_ {
+    XAuint32 codecId;
+    XAuint32 width;
+    XAuint32 height;
+    XAuint32 frameRate;
+    XAuint32 bitRate;
+    XAmillisecond duration;
+} XAVideoStreamInformation;
+
+typedef struct XAAudioStreamInformation_ {
+    XAuint32 codecId;
+    XAuint32 channels;
+    XAmilliHertz sampleRate;
+    XAuint32 bitRate;
+    XAchar langCountry[16];
+    XAmillisecond duration;
+} XAAudioStreamInformation;
+
+typedef struct XAImageStreamInformation_ {
+    XAuint32 codecId;
+    XAuint32 width;
+    XAuint32 height;
+    XAmillisecond presentationDuration;
+} XAImageStreamInformation;
+
+typedef struct XATimedTextStreamInformation_ {
+    XAuint16 layer;
+    XAuint32 width;
+    XAuint32 height;
+    XAuint16 tx;
+    XAuint16 ty;
+    XAuint32 bitrate;
+    XAchar langCountry[16];
+    XAmillisecond duration;
+} XATimedTextStreamInformation;
+
+typedef struct XAMIDIStreamInformation_ {
+    XAuint32 channels;
+    XAuint32 tracks;
+    XAuint32 bankType;
+    XAchar langCountry[16];
+    XAmillisecond duration;
+} XAMIDIStreamInformation;
+
+typedef struct XAVendorStreamInformation_ {
+    void *VendorStreamInfo;
+} XAVendorStreamInformation;
+
+XA_API extern const XAInterfaceID XA_IID_STREAMINFORMATION;
+
+struct XAStreamInformationItf_;
+typedef const struct XAStreamInformationItf_ * const * XAStreamInformationItf;
+
+typedef void (XAAPIENTRY * xaStreamEventChangeCallback) (
+    XAStreamInformationItf caller,
+    XAuint32 eventId,
+    XAuint32 streamIndex,
+    void * pEventData,
+    void * pContext
+);
+
+struct XAStreamInformationItf_ {
+    XAresult (*QueryMediaContainerInformation) (
+        XAStreamInformationItf self,
+        XAMediaContainerInformation * info
+    );
+    XAresult (*QueryStreamType) (
+        XAStreamInformationItf self,
+        XAuint32 streamIndex,
+        XAuint32 *domain
+    );
+    XAresult (*QueryStreamInformation) (
+        XAStreamInformationItf self,
+        XAuint32 streamIndex,
+        void * info
+    );
+    XAresult (*QueryStreamName) (
+        XAStreamInformationItf self,
+        XAuint32 streamIndex,
+        XAuint16 * pNameSize,
+        XAchar * pName
+    );
+    XAresult (*RegisterStreamChangeCallback) (
+        XAStreamInformationItf self,
+        xaStreamEventChangeCallback callback,
+        void * pContext
+    );
+    XAresult (*QueryActiveStreams) (
+        XAStreamInformationItf self,
+        XAuint32 *numStreams,
+        XAboolean *activeStreams
+    );
+    XAresult (*SetActiveStream) (
+        XAStreamInformationItf self,
+        XAuint32   streamNum,
+        XAboolean  active,
+        XAboolean  commitNow
+    );
+};
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* _OPENMAXAL_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Android.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Android.h
new file mode 100644
index 0000000..10f36f4
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Android.h
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENMAX_AL_ANDROID_H_
+#define OPENMAX_AL_ANDROID_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android common types                                                      */
+/*---------------------------------------------------------------------------*/
+
+typedef xa_int64_t             XAAint64;          /* 64 bit signed integer   */
+
+typedef xa_uint64_t            XAAuint64;         /* 64 bit unsigned integer */
+
+/*---------------------------------------------------------------------------*/
+/* Android common types                                                      */
+/*---------------------------------------------------------------------------*/
+
+#define XA_ANDROID_VIDEOCODEC_VP8            ((XAuint32) 0x00000006)
+
+#define XA_ANDROID_VIDEOPROFILE_VP8_MAIN     ((XAuint32) 0x00000001)
+
+#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION0   ((XAuint32) 0x00000001)
+#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION1   ((XAuint32) 0x00000002)
+#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION2   ((XAuint32) 0x00000003)
+#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION3   ((XAuint32) 0x00000004)
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Interface                                            */
+/*---------------------------------------------------------------------------*/
+
+extern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUESOURCE;
+
+struct XAAndroidBufferQueueItf_;
+typedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf;
+
+#define XA_ANDROID_ITEMKEY_NONE             ((XAuint32) 0x00000000)
+#define XA_ANDROID_ITEMKEY_EOS              ((XAuint32) 0x00000001)
+#define XA_ANDROID_ITEMKEY_DISCONTINUITY    ((XAuint32) 0x00000002)
+#define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003)
+#define XA_ANDROID_ITEMKEY_FORMAT_CHANGE    ((XAuint32) 0x00000004)
+
+#define XA_ANDROIDBUFFERQUEUEEVENT_NONE        ((XAuint32) 0x00000000)
+#define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((XAuint32) 0x00000001)
+#if 0   // reserved for future use
+#define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((XAuint32) 0x00000002)
+#define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((XAuint32) 0x00000004)
+#define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((XAuint32) 0x00000008)
+#define XA_ANDROIDBUFFERQUEUEEVENT_ERROR       ((XAuint32) 0x00000010)
+#define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((XAuint32) 0x00000020)
+#endif
+
+typedef struct XAAndroidBufferItem_ {
+    XAuint32 itemKey;  // identifies the item
+    XAuint32 itemSize;
+    XAuint8  itemData[0];
+} XAAndroidBufferItem;
+
+typedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)(
+    XAAndroidBufferQueueItf caller,/* input */
+    void *pCallbackContext,        /* input */
+    void *pBufferContext,          /* input */
+    void *pBufferData,             /* input */
+    XAuint32 dataSize,             /* input */
+    XAuint32 dataUsed,             /* input */
+    const XAAndroidBufferItem *pItems,/* input */
+    XAuint32 itemsLength           /* input */
+);
+
+typedef struct XAAndroidBufferQueueState_ {
+    XAuint32    count;
+    XAuint32    index;
+} XAAndroidBufferQueueState;
+
+struct XAAndroidBufferQueueItf_ {
+    XAresult (*RegisterCallback) (
+        XAAndroidBufferQueueItf self,
+        xaAndroidBufferQueueCallback callback,
+        void* pCallbackContext
+    );
+
+    XAresult (*Clear) (
+        XAAndroidBufferQueueItf self
+    );
+
+    XAresult (*Enqueue) (
+        XAAndroidBufferQueueItf self,
+        void *pBufferContext,
+        void *pData,
+        XAuint32 dataLength,
+        const XAAndroidBufferItem *pItems,
+        XAuint32 itemsLength
+    );
+
+    XAresult (*GetState) (
+        XAAndroidBufferQueueItf self,
+        XAAndroidBufferQueueState *pState
+    );
+
+
+    XAresult (*SetCallbackEventsMask) (
+            XAAndroidBufferQueueItf self,
+            XAuint32 eventFlags
+    );
+
+    XAresult (*GetCallbackEventsMask) (
+            XAAndroidBufferQueueItf self,
+            XAuint32 *pEventFlags
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Data Locator                                         */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE       ((XAuint32) 0x800007BE)
+
+/** Android Buffer Queue-based data locator definition,
+ *  locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */
+typedef struct XADataLocator_AndroidBufferQueue_ {
+    XAuint32    locatorType;
+    XAuint32    numBuffers;
+} XADataLocator_AndroidBufferQueue;
+
+
+/*---------------------------------------------------------------------------*/
+/* Android File Descriptor Data Locator                                      */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define XA_DATALOCATOR_ANDROIDFD                ((XAuint32) 0x800007BC)
+
+#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll)
+
+/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */
+typedef struct XADataLocator_AndroidFD_ {
+    XAuint32        locatorType;
+    XAint32         fd;
+    XAAint64        offset;
+    XAAint64        length;
+} XADataLocator_AndroidFD;
+
+/**
+ * MIME types required for data in Android Buffer Queues
+ */
+#define XA_ANDROID_MIME_MP2TS              ((XAchar *) "video/mp2ts")
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENMAX_AL_ANDROID_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Platform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Platform.h
new file mode 100644
index 0000000..23be77e
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/OMXAL/OpenMAXAL_Platform.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2007-2010 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.
+ *
+ * OpenMAXAL_Platform.h - OpenMAX AL version 1.0.1
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file contains definitions for the base types and the          */
+/* XAAPIENTRY macro. This file **WILL NEED TO BE EDITED** to provide        */
+/* the correct definitions specific to the platform being used.             */
+/****************************************************************************/
+
+#ifndef _OPENMAXAL_PLATFORM_H_
+#define _OPENMAXAL_PLATFORM_H_
+
+typedef unsigned char               xa_uint8_t;
+typedef signed char                 xa_int8_t;
+typedef unsigned short              xa_uint16_t;
+typedef signed short                xa_int16_t;
+typedef unsigned int /*long*/       xa_uint32_t;
+typedef signed int /*long*/         xa_int32_t;
+typedef long long                   xa_int64_t;
+typedef unsigned long long          xa_uint64_t;
+
+#ifndef XAAPIENTRY
+#define XAAPIENTRY                 /* override per-platform */
+#endif
+
+/** The XA_API is a platform-specific macro used
+ *  to declare OPENMAX AL function prototypes.  It is modified to meet the
+ *  requirements for a particular platform
+ *
+ * Example:
+ * #ifdef __SYMBIAN32__
+ * #   define XA_API __declspec(dllimport)
+ * #endif
+ */
+
+#ifndef XA_API
+#ifdef __GNUC__
+#define XA_API
+#else
+#define XA_API __declspec(dllimport)
+#endif
+#endif
+
+#endif /* _OPENMAXAL_PLATFORM_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES.h
new file mode 100644
index 0000000..8686997
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES.h
@@ -0,0 +1,2774 @@
+/*
+ * 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.
+ *
+ * OpenSLES.h - OpenSL ES version 1.0.1
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file is a standard OpenSL ES header file and should not be    */
+/* modified in any way.                                                     */
+/****************************************************************************/
+
+#ifndef OPENSL_ES_H_
+#define OPENSL_ES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "OpenSLES_Platform.h"
+
+
+/*****************************************************************************/
+/* Common types, structures, and defines                                */
+/*****************************************************************************/
+
+#ifndef _KHRONOS_KEYS_
+#define _KHRONOS_KEYS_
+
+#define KHRONOS_TITLE "KhronosTitle"
+#define KHRONOS_ALBUM "KhronosAlbum"
+#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber"
+#define KHRONOS_ARTIST "KhronosArtist"
+#define KHRONOS_GENRE "KhronosGenre"
+#define KHRONOS_YEAR "KhronosYear"
+#define KHRONOS_COMMENT "KhronosComment"
+#define KHRONOS_ARTIST_URL "KhronosArtistURL"
+#define KHRONOS_CONTENT_URL "KhronosContentURL"
+#define KHRONOS_RATING "KhronosRating"
+#define KHRONOS_ALBUM_ART "KhronosAlbumArt"
+#define KHRONOS_COPYRIGHT "KhronosCopyright"
+
+#endif
+
+
+/* remap common types to SL types for clarity */
+typedef sl_int8_t              SLint8;          /* 8 bit signed integer  */
+typedef sl_uint8_t             SLuint8;         /* 8 bit unsigned integer */
+typedef sl_int16_t             SLint16;         /* 16 bit signed integer */
+typedef sl_uint16_t            SLuint16;        /* 16 bit unsigned integer */
+typedef sl_int32_t             SLint32;           /* 32 bit signed integer */
+typedef sl_uint32_t            SLuint32;          /* 32 bit unsigned integer */
+
+typedef SLuint32                    SLboolean;
+#define SL_BOOLEAN_FALSE            ((SLboolean) 0x00000000)
+#define SL_BOOLEAN_TRUE             ((SLboolean) 0x00000001)
+
+typedef SLuint8						SLchar;			/* UTF-8 is to be used */
+typedef SLint16						SLmillibel;
+typedef SLuint32					SLmillisecond;
+typedef SLuint32					SLmilliHertz;
+typedef SLint32						SLmillimeter;
+typedef SLint32						SLmillidegree;
+typedef SLint16						SLpermille;
+typedef SLuint32					SLmicrosecond;
+typedef SLuint32					SLresult;
+
+#define SL_MILLIBEL_MAX 	((SLmillibel) 0x7FFF)
+#define SL_MILLIBEL_MIN 	((SLmillibel) (-SL_MILLIBEL_MAX-1))
+
+#define SL_MILLIHERTZ_MAX	((SLmilliHertz) 0xFFFFFFFF)
+#define SL_MILLIMETER_MAX	((SLmillimeter) 0x7FFFFFFF)
+
+/** Interface ID defined as a UUID */
+typedef const struct SLInterfaceID_ {
+    SLuint32 time_low;
+    SLuint16 time_mid;
+    SLuint16 time_hi_and_version;
+    SLuint16 clock_seq;
+    SLuint8  node[6];
+} * SLInterfaceID;
+
+/* Forward declaration for the object interface */
+struct SLObjectItf_;
+
+typedef const struct SLObjectItf_ * const * SLObjectItf;
+
+/* Objects ID's */
+
+#define SL_OBJECTID_ENGINE			((SLuint32) 0x00001001)
+#define SL_OBJECTID_LEDDEVICE		((SLuint32) 0x00001002)
+#define SL_OBJECTID_VIBRADEVICE		((SLuint32) 0x00001003)
+#define SL_OBJECTID_AUDIOPLAYER		((SLuint32) 0x00001004)
+#define SL_OBJECTID_AUDIORECORDER	((SLuint32) 0x00001005)
+#define SL_OBJECTID_MIDIPLAYER		((SLuint32) 0x00001006)
+#define SL_OBJECTID_LISTENER		((SLuint32) 0x00001007)
+#define SL_OBJECTID_3DGROUP			((SLuint32) 0x00001008)
+#define SL_OBJECTID_OUTPUTMIX		((SLuint32) 0x00001009)
+#define SL_OBJECTID_METADATAEXTRACTOR	((SLuint32) 0x0000100A)
+
+
+/* SL Profiles */
+
+#define SL_PROFILES_PHONE	((SLuint16) 0x0001)
+#define SL_PROFILES_MUSIC	((SLuint16) 0x0002)
+#define SL_PROFILES_GAME	((SLuint16) 0x0004)
+
+/* Types of voices supported by the system */
+
+#define SL_VOICETYPE_2D_AUDIO		((SLuint16) 0x0001)
+#define SL_VOICETYPE_MIDI			((SLuint16) 0x0002)
+#define SL_VOICETYPE_3D_AUDIO 		((SLuint16) 0x0004)
+#define SL_VOICETYPE_3D_MIDIOUTPUT 	((SLuint16) 0x0008)
+
+/* Convenient macros representing various different priority levels, for use with the SetPriority method */
+
+#define SL_PRIORITY_LOWEST		((SLint32) (-0x7FFFFFFF-1))
+#define SL_PRIORITY_VERYLOW		((SLint32) -0x60000000)
+#define SL_PRIORITY_LOW			((SLint32) -0x40000000)
+#define SL_PRIORITY_BELOWNORMAL	((SLint32) -0x20000000)
+#define SL_PRIORITY_NORMAL		((SLint32) 0x00000000)
+#define SL_PRIORITY_ABOVENORMAL	((SLint32) 0x20000000)
+#define SL_PRIORITY_HIGH		((SLint32) 0x40000000)
+#define SL_PRIORITY_VERYHIGH	((SLint32) 0x60000000)
+#define SL_PRIORITY_HIGHEST	((SLint32) 0x7FFFFFFF)
+
+
+/** These macros list the various sample formats that are possible on audio input and output devices. */
+
+#define SL_PCMSAMPLEFORMAT_FIXED_8	((SLuint16) 0x0008)
+#define SL_PCMSAMPLEFORMAT_FIXED_16	((SLuint16) 0x0010)
+#define SL_PCMSAMPLEFORMAT_FIXED_20 	((SLuint16) 0x0014)
+#define SL_PCMSAMPLEFORMAT_FIXED_24	((SLuint16) 0x0018)
+#define SL_PCMSAMPLEFORMAT_FIXED_28 	((SLuint16) 0x001C)
+#define SL_PCMSAMPLEFORMAT_FIXED_32	((SLuint16) 0x0020)
+
+
+/** These macros specify the commonly used sampling rates (in milliHertz) supported by most audio I/O devices. */
+
+#define SL_SAMPLINGRATE_8		((SLuint32) 8000000)
+#define SL_SAMPLINGRATE_11_025	((SLuint32) 11025000)
+#define SL_SAMPLINGRATE_12		((SLuint32) 12000000)
+#define SL_SAMPLINGRATE_16		((SLuint32) 16000000)
+#define SL_SAMPLINGRATE_22_05	((SLuint32) 22050000)
+#define SL_SAMPLINGRATE_24		((SLuint32) 24000000)
+#define SL_SAMPLINGRATE_32		((SLuint32) 32000000)
+#define SL_SAMPLINGRATE_44_1	((SLuint32) 44100000)
+#define SL_SAMPLINGRATE_48		((SLuint32) 48000000)
+#define SL_SAMPLINGRATE_64		((SLuint32) 64000000)
+#define SL_SAMPLINGRATE_88_2	((SLuint32) 88200000)
+#define SL_SAMPLINGRATE_96		((SLuint32) 96000000)
+#define SL_SAMPLINGRATE_192	((SLuint32) 192000000)
+
+#define SL_SPEAKER_FRONT_LEFT			((SLuint32) 0x00000001)
+#define SL_SPEAKER_FRONT_RIGHT			((SLuint32) 0x00000002)
+#define SL_SPEAKER_FRONT_CENTER			((SLuint32) 0x00000004)
+#define SL_SPEAKER_LOW_FREQUENCY			((SLuint32) 0x00000008)
+#define SL_SPEAKER_BACK_LEFT			((SLuint32) 0x00000010)
+#define SL_SPEAKER_BACK_RIGHT			((SLuint32) 0x00000020)
+#define SL_SPEAKER_FRONT_LEFT_OF_CENTER	((SLuint32) 0x00000040)
+#define SL_SPEAKER_FRONT_RIGHT_OF_CENTER	((SLuint32) 0x00000080)
+#define SL_SPEAKER_BACK_CENTER			((SLuint32) 0x00000100)
+#define SL_SPEAKER_SIDE_LEFT			((SLuint32) 0x00000200)
+#define SL_SPEAKER_SIDE_RIGHT			((SLuint32) 0x00000400)
+#define SL_SPEAKER_TOP_CENTER			((SLuint32) 0x00000800)
+#define SL_SPEAKER_TOP_FRONT_LEFT		((SLuint32) 0x00001000)
+#define SL_SPEAKER_TOP_FRONT_CENTER		((SLuint32) 0x00002000)
+#define SL_SPEAKER_TOP_FRONT_RIGHT		((SLuint32) 0x00004000)
+#define SL_SPEAKER_TOP_BACK_LEFT			((SLuint32) 0x00008000)
+#define SL_SPEAKER_TOP_BACK_CENTER		((SLuint32) 0x00010000)
+#define SL_SPEAKER_TOP_BACK_RIGHT		((SLuint32) 0x00020000)
+
+
+/*****************************************************************************/
+/* Errors                                                                    */
+/*                                                                           */
+/*****************************************************************************/
+
+#define SL_RESULT_SUCCESS				((SLuint32) 0x00000000)
+#define SL_RESULT_PRECONDITIONS_VIOLATED	((SLuint32) 0x00000001)
+#define SL_RESULT_PARAMETER_INVALID		((SLuint32) 0x00000002)
+#define SL_RESULT_MEMORY_FAILURE			((SLuint32) 0x00000003)
+#define SL_RESULT_RESOURCE_ERROR			((SLuint32) 0x00000004)
+#define SL_RESULT_RESOURCE_LOST			((SLuint32) 0x00000005)
+#define SL_RESULT_IO_ERROR				((SLuint32) 0x00000006)
+#define SL_RESULT_BUFFER_INSUFFICIENT		((SLuint32) 0x00000007)
+#define SL_RESULT_CONTENT_CORRUPTED		((SLuint32) 0x00000008)
+#define SL_RESULT_CONTENT_UNSUPPORTED		((SLuint32) 0x00000009)
+#define SL_RESULT_CONTENT_NOT_FOUND		((SLuint32) 0x0000000A)
+#define SL_RESULT_PERMISSION_DENIED		((SLuint32) 0x0000000B)
+#define SL_RESULT_FEATURE_UNSUPPORTED		((SLuint32) 0x0000000C)
+#define SL_RESULT_INTERNAL_ERROR			((SLuint32) 0x0000000D)
+#define SL_RESULT_UNKNOWN_ERROR			((SLuint32) 0x0000000E)
+#define SL_RESULT_OPERATION_ABORTED		((SLuint32) 0x0000000F)
+#define SL_RESULT_CONTROL_LOST			((SLuint32) 0x00000010)
+
+
+/* Object state definitions */
+
+#define SL_OBJECT_STATE_UNREALIZED	((SLuint32) 0x00000001)
+#define SL_OBJECT_STATE_REALIZED		((SLuint32) 0x00000002)
+#define SL_OBJECT_STATE_SUSPENDED	((SLuint32) 0x00000003)
+
+/* Object event definitions */
+
+#define SL_OBJECT_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
+#define SL_OBJECT_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
+#define SL_OBJECT_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
+#define SL_OBJECT_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000004)
+#define SL_OBJECT_EVENT_ITF_CONTROL_TAKEN		((SLuint32) 0x00000005)
+#define SL_OBJECT_EVENT_ITF_CONTROL_RETURNED		((SLuint32) 0x00000006)
+#define SL_OBJECT_EVENT_ITF_PARAMETERS_CHANGED	((SLuint32) 0x00000007)
+
+
+/*****************************************************************************/
+/* Interface definitions                                                     */
+/*****************************************************************************/
+
+/** NULL Interface */
+
+extern SL_API const SLInterfaceID SL_IID_NULL;
+
+/*---------------------------------------------------------------------------*/
+/* Data Source and Data Sink Structures                                      */
+/*---------------------------------------------------------------------------*/
+
+/** Data locator macros  */
+#define SL_DATALOCATOR_URI			((SLuint32) 0x00000001)
+#define SL_DATALOCATOR_ADDRESS		((SLuint32) 0x00000002)
+#define SL_DATALOCATOR_IODEVICE		((SLuint32) 0x00000003)
+#define SL_DATALOCATOR_OUTPUTMIX		((SLuint32) 0x00000004)
+#define SL_DATALOCATOR_RESERVED5		((SLuint32) 0x00000005)
+#define SL_DATALOCATOR_BUFFERQUEUE	((SLuint32) 0x00000006)
+#define SL_DATALOCATOR_MIDIBUFFERQUEUE	((SLuint32) 0x00000007)
+#define SL_DATALOCATOR_RESERVED8		((SLuint32) 0x00000008)
+
+
+
+/** URI-based data locator definition where locatorType must be SL_DATALOCATOR_URI*/
+typedef struct SLDataLocator_URI_ {
+	SLuint32 		locatorType;
+	SLchar *		URI;
+} SLDataLocator_URI;
+
+/** Address-based data locator definition where locatorType must be SL_DATALOCATOR_ADDRESS*/
+typedef struct SLDataLocator_Address_ {
+	SLuint32 	locatorType;
+	void 		*pAddress;
+	SLuint32	length;
+} SLDataLocator_Address;
+
+/** IODevice-types */
+#define SL_IODEVICE_AUDIOINPUT	((SLuint32) 0x00000001)
+#define SL_IODEVICE_LEDARRAY	((SLuint32) 0x00000002)
+#define SL_IODEVICE_VIBRA		((SLuint32) 0x00000003)
+#define SL_IODEVICE_RESERVED4	((SLuint32) 0x00000004)
+#define SL_IODEVICE_RESERVED5	((SLuint32) 0x00000005)
+
+/** IODevice-based data locator definition where locatorType must be SL_DATALOCATOR_IODEVICE*/
+typedef struct SLDataLocator_IODevice_ {
+	SLuint32	locatorType;
+	SLuint32	deviceType;
+	SLuint32	deviceID;
+	SLObjectItf	device;
+} SLDataLocator_IODevice;
+
+/** OutputMix-based data locator definition where locatorType must be SL_DATALOCATOR_OUTPUTMIX*/
+typedef struct SLDataLocator_OutputMix {
+	SLuint32 		locatorType;
+	SLObjectItf		outputMix;
+} SLDataLocator_OutputMix;
+
+
+/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_BUFFERQUEUE*/
+typedef struct SLDataLocator_BufferQueue {
+	SLuint32	locatorType;
+	SLuint32	numBuffers;
+} SLDataLocator_BufferQueue;
+
+/** MidiBufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_MIDIBUFFERQUEUE*/
+typedef struct SLDataLocator_MIDIBufferQueue {
+	SLuint32	locatorType;
+	SLuint32	tpqn;
+	SLuint32	numBuffers;
+} SLDataLocator_MIDIBufferQueue;
+
+/** Data format defines */
+#define SL_DATAFORMAT_MIME		((SLuint32) 0x00000001)
+#define SL_DATAFORMAT_PCM		((SLuint32) 0x00000002)
+#define SL_DATAFORMAT_RESERVED3	((SLuint32) 0x00000003)
+
+
+/** MIME-type-based data format definition where formatType must be SL_DATAFORMAT_MIME*/
+typedef struct SLDataFormat_MIME_ {
+	SLuint32 		formatType;
+	SLchar * 		mimeType;
+	SLuint32		containerType;
+} SLDataFormat_MIME;
+
+/* Byte order of a block of 16- or 32-bit data */
+#define SL_BYTEORDER_BIGENDIAN				((SLuint32) 0x00000001)
+#define SL_BYTEORDER_LITTLEENDIAN			((SLuint32) 0x00000002)
+
+/* Container type */
+#define SL_CONTAINERTYPE_UNSPECIFIED	((SLuint32) 0x00000001)
+#define SL_CONTAINERTYPE_RAW		((SLuint32) 0x00000002)
+#define SL_CONTAINERTYPE_ASF		((SLuint32) 0x00000003)
+#define SL_CONTAINERTYPE_AVI		((SLuint32) 0x00000004)
+#define SL_CONTAINERTYPE_BMP		((SLuint32) 0x00000005)
+#define SL_CONTAINERTYPE_JPG		((SLuint32) 0x00000006)
+#define SL_CONTAINERTYPE_JPG2000		((SLuint32) 0x00000007)
+#define SL_CONTAINERTYPE_M4A		((SLuint32) 0x00000008)
+#define SL_CONTAINERTYPE_MP3		((SLuint32) 0x00000009)
+#define SL_CONTAINERTYPE_MP4		((SLuint32) 0x0000000A)
+#define SL_CONTAINERTYPE_MPEG_ES		((SLuint32) 0x0000000B)
+#define SL_CONTAINERTYPE_MPEG_PS		((SLuint32) 0x0000000C)
+#define SL_CONTAINERTYPE_MPEG_TS		((SLuint32) 0x0000000D)
+#define SL_CONTAINERTYPE_QT		((SLuint32) 0x0000000E)
+#define SL_CONTAINERTYPE_WAV		((SLuint32) 0x0000000F)
+#define SL_CONTAINERTYPE_XMF_0		((SLuint32) 0x00000010)
+#define SL_CONTAINERTYPE_XMF_1		((SLuint32) 0x00000011)
+#define SL_CONTAINERTYPE_XMF_2		((SLuint32) 0x00000012)
+#define SL_CONTAINERTYPE_XMF_3		((SLuint32) 0x00000013)
+#define SL_CONTAINERTYPE_XMF_GENERIC	((SLuint32) 0x00000014)
+#define SL_CONTAINERTYPE_AMR  		((SLuint32) 0x00000015)
+#define SL_CONTAINERTYPE_AAC		((SLuint32) 0x00000016)
+#define SL_CONTAINERTYPE_3GPP		((SLuint32) 0x00000017)
+#define SL_CONTAINERTYPE_3GA		((SLuint32) 0x00000018)
+#define SL_CONTAINERTYPE_RM		((SLuint32) 0x00000019)
+#define SL_CONTAINERTYPE_DMF		((SLuint32) 0x0000001A)
+#define SL_CONTAINERTYPE_SMF		((SLuint32) 0x0000001B)
+#define SL_CONTAINERTYPE_MOBILE_DLS	((SLuint32) 0x0000001C)
+#define SL_CONTAINERTYPE_OGG	((SLuint32) 0x0000001D)
+
+
+/** PCM-type-based data format definition where formatType must be SL_DATAFORMAT_PCM*/
+typedef struct SLDataFormat_PCM_ {
+	SLuint32 		formatType;
+	SLuint32 		numChannels;
+	SLuint32 		samplesPerSec;
+	SLuint32 		bitsPerSample;
+	SLuint32 		containerSize;
+	SLuint32 		channelMask;
+	SLuint32		endianness;
+} SLDataFormat_PCM;
+
+typedef struct SLDataSource_ {
+	void *pLocator;
+	void *pFormat;
+} SLDataSource;
+
+
+typedef struct SLDataSink_ {
+	void *pLocator;
+	void *pFormat;
+} SLDataSink;
+
+
+
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Standard Object Interface                                                 */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_OBJECT;
+
+/** Object callback */
+
+
+typedef void (SLAPIENTRY *slObjectCallback) (
+	SLObjectItf caller,
+	const void * pContext,
+	SLuint32 event,
+	SLresult result,
+    SLuint32 param,
+    void *pInterface
+);
+
+
+struct SLObjectItf_ {
+	SLresult (*Realize) (
+		SLObjectItf self,
+		SLboolean async
+	);
+	SLresult (*Resume) (
+		SLObjectItf self,
+		SLboolean async
+	);
+	SLresult (*GetState) (
+		SLObjectItf self,
+		SLuint32 * pState
+	);
+	SLresult (*GetInterface) (
+		SLObjectItf self,
+		const SLInterfaceID iid,
+		void * pInterface
+	);
+	SLresult (*RegisterCallback) (
+		SLObjectItf self,
+		slObjectCallback callback,
+		void * pContext
+	);
+	void (*AbortAsyncOperation) (
+		SLObjectItf self
+	);
+	void (*Destroy) (
+		SLObjectItf self
+	);
+	SLresult (*SetPriority) (
+		SLObjectItf self,
+		SLint32 priority,
+		SLboolean preemptable
+	);
+	SLresult (*GetPriority) (
+		SLObjectItf self,
+		SLint32 *pPriority,
+		SLboolean *pPreemptable
+	);
+	SLresult (*SetLossOfControlInterfaces) (
+		SLObjectItf self,
+		SLint16 numInterfaces,
+		SLInterfaceID * pInterfaceIDs,
+		SLboolean enabled
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio IO Device capabilities interface                                    */
+/*---------------------------------------------------------------------------*/
+
+#define SL_DEFAULTDEVICEID_AUDIOINPUT 	((SLuint32) 0xFFFFFFFF)
+#define SL_DEFAULTDEVICEID_AUDIOOUTPUT 	((SLuint32) 0xFFFFFFFE)
+#define SL_DEFAULTDEVICEID_LED          ((SLuint32) 0xFFFFFFFD)
+#define SL_DEFAULTDEVICEID_VIBRA        ((SLuint32) 0xFFFFFFFC)
+#define SL_DEFAULTDEVICEID_RESERVED1    ((SLuint32) 0xFFFFFFFB)
+
+
+#define SL_DEVCONNECTION_INTEGRATED         ((SLint16) 0x0001)
+#define SL_DEVCONNECTION_ATTACHED_WIRED     ((SLint16) 0x0100)
+#define SL_DEVCONNECTION_ATTACHED_WIRELESS  ((SLint16) 0x0200)
+#define SL_DEVCONNECTION_NETWORK 		    ((SLint16) 0x0400)
+
+
+#define SL_DEVLOCATION_HANDSET 	((SLuint16) 0x0001)
+#define SL_DEVLOCATION_HEADSET 	((SLuint16) 0x0002)
+#define SL_DEVLOCATION_CARKIT 	((SLuint16) 0x0003)
+#define SL_DEVLOCATION_DOCK 	((SLuint16) 0x0004)
+#define SL_DEVLOCATION_REMOTE 	((SLuint16) 0x0005)
+/* Note: SL_DEVLOCATION_RESLTE is deprecated, use SL_DEVLOCATION_REMOTE instead. */
+#define SL_DEVLOCATION_RESLTE 	((SLuint16) 0x0005)
+
+
+#define SL_DEVSCOPE_UNKNOWN     ((SLuint16) 0x0001)
+#define SL_DEVSCOPE_ENVIRONMENT ((SLuint16) 0x0002)
+#define SL_DEVSCOPE_USER        ((SLuint16) 0x0003)
+
+
+typedef struct SLAudioInputDescriptor_ {
+	SLchar *deviceName;
+	SLint16 deviceConnection;
+	SLint16 deviceScope;
+	SLint16 deviceLocation;
+	SLboolean isForTelephony;
+	SLmilliHertz minSampleRate;
+	SLmilliHertz maxSampleRate;
+	SLboolean isFreqRangeContinuous;
+	SLmilliHertz *samplingRatesSupported;
+	SLint16 numOfSamplingRatesSupported;
+	SLint16 maxChannels;
+} SLAudioInputDescriptor;
+
+
+typedef struct SLAudioOutputDescriptor_ {
+	SLchar *pDeviceName;
+	SLint16 deviceConnection;
+	SLint16 deviceScope;
+	SLint16 deviceLocation;
+	SLboolean isForTelephony;
+	SLmilliHertz minSampleRate;
+	SLmilliHertz maxSampleRate;
+	SLboolean isFreqRangeContinuous;
+	SLmilliHertz *samplingRatesSupported;
+	SLint16 numOfSamplingRatesSupported;
+	SLint16 maxChannels;
+} SLAudioOutputDescriptor;
+
+
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOIODEVICECAPABILITIES;
+
+struct SLAudioIODeviceCapabilitiesItf_;
+typedef const struct SLAudioIODeviceCapabilitiesItf_ * const * SLAudioIODeviceCapabilitiesItf;
+
+
+typedef void (SLAPIENTRY *slAvailableAudioInputsChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLuint32 deviceID,
+	SLint32 numInputs,
+	SLboolean isNew
+);
+
+
+typedef void (SLAPIENTRY *slAvailableAudioOutputsChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLuint32 deviceID,
+	SLint32 numOutputs,
+	SLboolean isNew
+);
+
+typedef void (SLAPIENTRY *slDefaultDeviceIDMapChangedCallback) (
+	SLAudioIODeviceCapabilitiesItf caller,
+	void *pContext,
+	SLboolean isOutput,
+	SLint32 numDevices
+);
+
+
+struct SLAudioIODeviceCapabilitiesItf_ {
+	SLresult (*GetAvailableAudioInputs)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLint32  *pNumInputs,
+		SLuint32 *pInputDeviceIDs
+	);
+	SLresult (*QueryAudioInputCapabilities)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLAudioInputDescriptor *pDescriptor
+	);
+	SLresult (*RegisterAvailableAudioInputsChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slAvailableAudioInputsChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*GetAvailableAudioOutputs)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLint32 *pNumOutputs,
+		SLuint32 *pOutputDeviceIDs
+	);
+	SLresult (*QueryAudioOutputCapabilities)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLAudioOutputDescriptor *pDescriptor
+	);
+	SLresult (*RegisterAvailableAudioOutputsChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slAvailableAudioOutputsChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*RegisterDefaultDeviceIDMapChangedCallback) (
+		SLAudioIODeviceCapabilitiesItf self,
+		slDefaultDeviceIDMapChangedCallback callback,
+		void *pContext
+	);
+	SLresult (*GetAssociatedAudioInputs) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLint32 *pNumAudioInputs,
+		SLuint32 *pAudioInputDeviceIDs
+	);
+	SLresult (*GetAssociatedAudioOutputs) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLint32 *pNumAudioOutputs,
+		SLuint32 *pAudioOutputDeviceIDs
+	);
+	SLresult (*GetDefaultAudioDevices) (
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 defaultDeviceID,
+		SLint32 *pNumAudioDevices,
+		SLuint32 *pAudioDeviceIDs
+	);
+	SLresult (*QuerySampleFormatsSupported)(
+		SLAudioIODeviceCapabilitiesItf self,
+		SLuint32 deviceId,
+		SLmilliHertz samplingRate,
+		SLint32 *pSampleFormats,
+		SLint32 *pNumOfSampleFormats
+	);
+};
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Capabilities of the LED array IODevice                                    */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLLEDDescriptor_ {
+	SLuint8   ledCount;
+	SLuint8   primaryLED;
+	SLuint32  colorMask;
+} SLLEDDescriptor;
+
+
+/*---------------------------------------------------------------------------*/
+/* LED Array interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLHSL_ {
+    SLmillidegree  hue;
+    SLpermille     saturation;
+    SLpermille     lightness;
+} SLHSL;
+
+
+extern SL_API const SLInterfaceID SL_IID_LED;
+
+struct SLLEDArrayItf_;
+typedef const struct SLLEDArrayItf_ * const * SLLEDArrayItf;
+
+struct SLLEDArrayItf_ {
+	SLresult (*ActivateLEDArray) (
+		SLLEDArrayItf self,
+		SLuint32 lightMask
+	);
+	SLresult (*IsLEDArrayActivated) (
+		SLLEDArrayItf self,
+		SLuint32 *lightMask
+	);
+	SLresult (*SetColor) (
+		SLLEDArrayItf self,
+		SLuint8 index,
+		const SLHSL *color
+	);
+	SLresult (*GetColor) (
+		SLLEDArrayItf self,
+		SLuint8 index,
+		SLHSL *color
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Capabilities of the Vibra IODevice                                        */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLVibraDescriptor_ {
+	SLboolean supportsFrequency;
+	SLboolean supportsIntensity;
+	SLmilliHertz  minFrequency;
+	SLmilliHertz  maxFrequency;
+} SLVibraDescriptor;
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Vibra interface                                                           */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VIBRA;
+
+
+struct SLVibraItf_;
+typedef const struct SLVibraItf_ * const * SLVibraItf;
+
+struct SLVibraItf_ {
+	SLresult (*Vibrate) (
+		SLVibraItf self,
+		SLboolean vibrate
+	);
+	SLresult (*IsVibrating) (
+		SLVibraItf self,
+		SLboolean *pVibrating
+	);
+	SLresult (*SetFrequency) (
+		SLVibraItf self,
+		SLmilliHertz frequency
+	);
+	SLresult (*GetFrequency) (
+		SLVibraItf self,
+		SLmilliHertz *pFrequency
+	);
+	SLresult (*SetIntensity) (
+		SLVibraItf self,
+		SLpermille intensity
+	);
+	SLresult (*GetIntensity) (
+		SLVibraItf self,
+		SLpermille *pIntensity
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Meta data extraction related types and interface                          */
+/*---------------------------------------------------------------------------*/
+
+#define SL_CHARACTERENCODING_UNKNOWN			((SLuint32) 0x00000000)
+#define SL_CHARACTERENCODING_BINARY       ((SLuint32) 0x00000001)
+#define SL_CHARACTERENCODING_ASCII        ((SLuint32) 0x00000002)
+#define SL_CHARACTERENCODING_BIG5         ((SLuint32) 0x00000003)
+#define SL_CHARACTERENCODING_CODEPAGE1252		((SLuint32) 0x00000004)
+#define SL_CHARACTERENCODING_GB2312			((SLuint32) 0x00000005)
+#define SL_CHARACTERENCODING_HZGB2312			((SLuint32) 0x00000006)
+#define SL_CHARACTERENCODING_GB12345			((SLuint32) 0x00000007)
+#define SL_CHARACTERENCODING_GB18030			((SLuint32) 0x00000008)
+#define SL_CHARACTERENCODING_GBK				((SLuint32) 0x00000009)
+#define SL_CHARACTERENCODING_IMAPUTF7			((SLuint32) 0x0000000A)
+#define SL_CHARACTERENCODING_ISO2022JP			((SLuint32) 0x0000000B)
+#define SL_CHARACTERENCODING_ISO2022JP1		((SLuint32) 0x0000000B)
+#define SL_CHARACTERENCODING_ISO88591			((SLuint32) 0x0000000C)
+#define SL_CHARACTERENCODING_ISO885910			((SLuint32) 0x0000000D)
+#define SL_CHARACTERENCODING_ISO885913			((SLuint32) 0x0000000E)
+#define SL_CHARACTERENCODING_ISO885914			((SLuint32) 0x0000000F)
+#define SL_CHARACTERENCODING_ISO885915			((SLuint32) 0x00000010)
+#define SL_CHARACTERENCODING_ISO88592			((SLuint32) 0x00000011)
+#define SL_CHARACTERENCODING_ISO88593			((SLuint32) 0x00000012)
+#define SL_CHARACTERENCODING_ISO88594			((SLuint32) 0x00000013)
+#define SL_CHARACTERENCODING_ISO88595			((SLuint32) 0x00000014)
+#define SL_CHARACTERENCODING_ISO88596			((SLuint32) 0x00000015)
+#define SL_CHARACTERENCODING_ISO88597			((SLuint32) 0x00000016)
+#define SL_CHARACTERENCODING_ISO88598			((SLuint32) 0x00000017)
+#define SL_CHARACTERENCODING_ISO88599			((SLuint32) 0x00000018)
+#define SL_CHARACTERENCODING_ISOEUCJP			((SLuint32) 0x00000019)
+#define SL_CHARACTERENCODING_SHIFTJIS			((SLuint32) 0x0000001A)
+#define SL_CHARACTERENCODING_SMS7BIT			((SLuint32) 0x0000001B)
+#define SL_CHARACTERENCODING_UTF7			((SLuint32) 0x0000001C)
+#define SL_CHARACTERENCODING_UTF8			((SLuint32) 0x0000001D)
+#define SL_CHARACTERENCODING_JAVACONFORMANTUTF8	((SLuint32) 0x0000001E)
+#define SL_CHARACTERENCODING_UTF16BE			((SLuint32) 0x0000001F)
+#define SL_CHARACTERENCODING_UTF16LE			((SLuint32) 0x00000020)
+
+
+#define SL_METADATA_FILTER_KEY		((SLuint8) 0x01)
+#define SL_METADATA_FILTER_LANG		((SLuint8) 0x02)
+#define SL_METADATA_FILTER_ENCODING	((SLuint8) 0x04)
+
+
+typedef struct SLMetadataInfo_ {
+    SLuint32     size;
+    SLuint32     encoding;
+    SLchar       langCountry[16];
+    SLuint8      data[1];
+} SLMetadataInfo;
+
+extern SL_API const SLInterfaceID SL_IID_METADATAEXTRACTION;
+
+struct SLMetadataExtractionItf_;
+typedef const struct SLMetadataExtractionItf_ * const * SLMetadataExtractionItf;
+
+
+struct SLMetadataExtractionItf_ {
+	SLresult (*GetItemCount) (
+		SLMetadataExtractionItf self,
+		SLuint32 *pItemCount
+	);
+	SLresult (*GetKeySize) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 *pKeySize
+	);
+	SLresult (*GetKey) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 keySize,
+		SLMetadataInfo *pKey
+	);
+	SLresult (*GetValueSize) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 *pValueSize
+	);
+	SLresult (*GetValue) (
+		SLMetadataExtractionItf self,
+		SLuint32 index,
+		SLuint32 valueSize,
+		SLMetadataInfo *pValue
+	);
+	SLresult (*AddKeyFilter) (
+		SLMetadataExtractionItf self,
+		SLuint32 keySize,
+		const void *pKey,
+		SLuint32 keyEncoding,
+		const SLchar *pValueLangCountry,
+		SLuint32 valueEncoding,
+		SLuint8 filterMask
+	);
+	SLresult (*ClearKeyFilter) (
+		SLMetadataExtractionItf self
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Meta data traversal related types and interface                          */
+/*---------------------------------------------------------------------------*/
+
+#define SL_METADATATRAVERSALMODE_ALL	((SLuint32) 0x00000001)
+#define SL_METADATATRAVERSALMODE_NODE	((SLuint32) 0x00000002)
+
+
+#define SL_NODETYPE_UNSPECIFIED	((SLuint32) 0x00000001)
+#define SL_NODETYPE_AUDIO		((SLuint32) 0x00000002)
+#define SL_NODETYPE_VIDEO		((SLuint32) 0x00000003)
+#define SL_NODETYPE_IMAGE		((SLuint32) 0x00000004)
+
+#define SL_NODE_PARENT 0xFFFFFFFF
+
+extern SL_API const SLInterfaceID SL_IID_METADATATRAVERSAL;
+
+struct SLMetadataTraversalItf_;
+typedef const struct SLMetadataTraversalItf_ * const * SLMetadataTraversalItf;
+
+struct SLMetadataTraversalItf_ {
+	SLresult (*SetMode) (
+		SLMetadataTraversalItf self,
+		SLuint32 mode
+	);
+	SLresult (*GetChildCount) (
+		SLMetadataTraversalItf self,
+		SLuint32 *pCount
+	);
+	SLresult (*GetChildMIMETypeSize) (
+		SLMetadataTraversalItf self,
+		SLuint32 index,
+		SLuint32 *pSize
+	);
+	SLresult (*GetChildInfo) (
+		SLMetadataTraversalItf self,
+		SLuint32 index,
+		SLint32 *pNodeID,
+		SLuint32 *pType,
+		SLuint32 size,
+		SLchar *pMimeType
+	);
+	SLresult (*SetActiveNode) (
+		SLMetadataTraversalItf self,
+		SLuint32 index
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Dynamic Source types and interface                                        */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_DYNAMICSOURCE;
+
+struct SLDynamicSourceItf_;
+typedef const struct SLDynamicSourceItf_ * const * SLDynamicSourceItf;
+
+struct SLDynamicSourceItf_ {
+	SLresult (*SetSource) (
+		SLDynamicSourceItf self,
+		SLDataSource *pDataSource
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Output Mix interface                                                      */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_OUTPUTMIX;
+
+struct SLOutputMixItf_;
+typedef const struct SLOutputMixItf_ * const * SLOutputMixItf;
+
+typedef void (SLAPIENTRY *slMixDeviceChangeCallback) (
+	SLOutputMixItf caller,
+    void *pContext
+);
+
+
+struct SLOutputMixItf_ {
+	SLresult (*GetDestinationOutputDeviceIDs) (
+		SLOutputMixItf self,
+		SLint32 *pNumDevices,
+		SLuint32 *pDeviceIDs
+	);
+	SLresult (*RegisterDeviceChangeCallback) (
+		SLOutputMixItf self,
+		slMixDeviceChangeCallback callback,
+		void *pContext
+    );
+    SLresult (*ReRoute)(
+        SLOutputMixItf self,
+        SLint32 numOutputDevices,
+        SLuint32 *pOutputDeviceIDs
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Playback interface                                                        */
+/*---------------------------------------------------------------------------*/
+
+/** Playback states */
+#define SL_PLAYSTATE_STOPPED	((SLuint32) 0x00000001)
+#define SL_PLAYSTATE_PAUSED	((SLuint32) 0x00000002)
+#define SL_PLAYSTATE_PLAYING	((SLuint32) 0x00000003)
+
+/** Play events **/
+#define SL_PLAYEVENT_HEADATEND		((SLuint32) 0x00000001)
+#define SL_PLAYEVENT_HEADATMARKER	((SLuint32) 0x00000002)
+#define SL_PLAYEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
+#define SL_PLAYEVENT_HEADMOVING		((SLuint32) 0x00000008)
+#define SL_PLAYEVENT_HEADSTALLED	((SLuint32) 0x00000010)
+
+#define SL_TIME_UNKNOWN	((SLuint32) 0xFFFFFFFF)
+
+
+extern SL_API const SLInterfaceID SL_IID_PLAY;
+
+/** Playback interface methods */
+
+struct SLPlayItf_;
+typedef const struct SLPlayItf_ * const * SLPlayItf;
+
+typedef void (SLAPIENTRY *slPlayCallback) (
+	SLPlayItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+struct SLPlayItf_ {
+	SLresult (*SetPlayState) (
+		SLPlayItf self,
+		SLuint32 state
+	);
+	SLresult (*GetPlayState) (
+		SLPlayItf self,
+		SLuint32 *pState
+	);
+	SLresult (*GetDuration) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*GetPosition) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*RegisterCallback) (
+		SLPlayItf self,
+		slPlayCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLPlayItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLPlayItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetMarkerPosition) (
+		SLPlayItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*ClearMarkerPosition) (
+		SLPlayItf self
+	);
+	SLresult (*GetMarkerPosition) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*SetPositionUpdatePeriod) (
+		SLPlayItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*GetPositionUpdatePeriod) (
+		SLPlayItf self,
+		SLmillisecond *pMsec
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Prefetch status interface                                                 */
+/*---------------------------------------------------------------------------*/
+
+#define SL_PREFETCHEVENT_STATUSCHANGE		((SLuint32) 0x00000001)
+#define SL_PREFETCHEVENT_FILLLEVELCHANGE	((SLuint32) 0x00000002)
+
+#define SL_PREFETCHSTATUS_UNDERFLOW		((SLuint32) 0x00000001)
+#define SL_PREFETCHSTATUS_SUFFICIENTDATA	((SLuint32) 0x00000002)
+#define SL_PREFETCHSTATUS_OVERFLOW		((SLuint32) 0x00000003)
+
+
+extern SL_API const SLInterfaceID SL_IID_PREFETCHSTATUS;
+
+
+/** Prefetch status interface methods */
+
+struct SLPrefetchStatusItf_;
+typedef const struct SLPrefetchStatusItf_ * const * SLPrefetchStatusItf;
+
+typedef void (SLAPIENTRY *slPrefetchCallback) (
+	SLPrefetchStatusItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+struct SLPrefetchStatusItf_ {
+	SLresult (*GetPrefetchStatus) (
+		SLPrefetchStatusItf self,
+		SLuint32 *pStatus
+	);
+	SLresult (*GetFillLevel) (
+		SLPrefetchStatusItf self,
+		SLpermille *pLevel
+	);
+	SLresult (*RegisterCallback) (
+		SLPrefetchStatusItf self,
+		slPrefetchCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLPrefetchStatusItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLPrefetchStatusItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetFillUpdatePeriod) (
+		SLPrefetchStatusItf self,
+		SLpermille period
+	);
+	SLresult (*GetFillUpdatePeriod) (
+		SLPrefetchStatusItf self,
+		SLpermille *pPeriod
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Playback Rate interface                                                   */
+/*---------------------------------------------------------------------------*/
+
+#define SL_RATEPROP_RESERVED1		  		((SLuint32) 0x00000001)
+#define SL_RATEPROP_RESERVED2		  		((SLuint32) 0x00000002)
+#define SL_RATEPROP_SILENTAUDIO				((SLuint32) 0x00000100)
+#define SL_RATEPROP_STAGGEREDAUDIO	((SLuint32) 0x00000200)
+#define SL_RATEPROP_NOPITCHCORAUDIO	((SLuint32) 0x00000400)
+#define SL_RATEPROP_PITCHCORAUDIO	((SLuint32) 0x00000800)
+
+
+extern SL_API const SLInterfaceID SL_IID_PLAYBACKRATE;
+
+struct SLPlaybackRateItf_;
+typedef const struct SLPlaybackRateItf_ * const * SLPlaybackRateItf;
+
+struct SLPlaybackRateItf_ {
+	SLresult (*SetRate)(
+		SLPlaybackRateItf self,
+		SLpermille rate
+	);
+	SLresult (*GetRate)(
+		SLPlaybackRateItf self,
+		SLpermille *pRate
+	);
+	SLresult (*SetPropertyConstraints)(
+		SLPlaybackRateItf self,
+		SLuint32 constraints
+	);
+	SLresult (*GetProperties)(
+		SLPlaybackRateItf self,
+		SLuint32 *pProperties
+	);
+	SLresult (*GetCapabilitiesOfRate)(
+		SLPlaybackRateItf self,
+		SLpermille rate,
+		SLuint32 *pCapabilities
+	);
+	SLresult (*GetRateRange) (
+		SLPlaybackRateItf self,
+		SLuint8 index,
+		SLpermille *pMinRate,
+		SLpermille *pMaxRate,
+		SLpermille *pStepSize,
+		SLuint32 *pCapabilities
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Seek Interface                                                            */
+/*---------------------------------------------------------------------------*/
+
+#define SL_SEEKMODE_FAST		((SLuint32) 0x0001)
+#define SL_SEEKMODE_ACCURATE	((SLuint32) 0x0002)
+
+extern SL_API const SLInterfaceID SL_IID_SEEK;
+
+struct SLSeekItf_;
+typedef const struct SLSeekItf_ * const * SLSeekItf;
+
+struct SLSeekItf_ {
+	SLresult (*SetPosition)(
+		SLSeekItf self,
+		SLmillisecond pos,
+		SLuint32 seekMode
+	);
+	SLresult (*SetLoop)(
+		SLSeekItf self,
+		SLboolean loopEnable,
+		SLmillisecond startPos,
+		SLmillisecond endPos
+	);
+	SLresult (*GetLoop)(
+		SLSeekItf self,
+		SLboolean *pLoopEnabled,
+		SLmillisecond *pStartPos,
+		SLmillisecond *pEndPos
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Standard Recording Interface                                              */
+/*---------------------------------------------------------------------------*/
+
+/** Recording states */
+#define SL_RECORDSTATE_STOPPED 	((SLuint32) 0x00000001)
+#define SL_RECORDSTATE_PAUSED	((SLuint32) 0x00000002)
+#define SL_RECORDSTATE_RECORDING	((SLuint32) 0x00000003)
+
+
+/** Record event **/
+#define SL_RECORDEVENT_HEADATLIMIT	((SLuint32) 0x00000001)
+#define SL_RECORDEVENT_HEADATMARKER	((SLuint32) 0x00000002)
+#define SL_RECORDEVENT_HEADATNEWPOS	((SLuint32) 0x00000004)
+#define SL_RECORDEVENT_HEADMOVING	((SLuint32) 0x00000008)
+#define SL_RECORDEVENT_HEADSTALLED 	((SLuint32) 0x00000010)
+/* Note: SL_RECORDEVENT_BUFFER_INSUFFICIENT is deprecated, use SL_RECORDEVENT_BUFFER_FULL instead. */
+#define SL_RECORDEVENT_BUFFER_INSUFFICIENT      ((SLuint32) 0x00000020)
+#define SL_RECORDEVENT_BUFFER_FULL	((SLuint32) 0x00000020)
+
+
+extern SL_API const SLInterfaceID SL_IID_RECORD;
+
+struct SLRecordItf_;
+typedef const struct SLRecordItf_ * const * SLRecordItf;
+
+typedef void (SLAPIENTRY *slRecordCallback) (
+	SLRecordItf caller,
+	void *pContext,
+	SLuint32 event
+);
+
+/** Recording interface methods */
+struct SLRecordItf_ {
+	SLresult (*SetRecordState) (
+		SLRecordItf self,
+		SLuint32 state
+	);
+	SLresult (*GetRecordState) (
+		SLRecordItf self,
+		SLuint32 *pState
+	);
+	SLresult (*SetDurationLimit) (
+		SLRecordItf self,
+		SLmillisecond msec
+	);
+	SLresult (*GetPosition) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*RegisterCallback) (
+		SLRecordItf self,
+		slRecordCallback callback,
+		void *pContext
+	);
+	SLresult (*SetCallbackEventsMask) (
+		SLRecordItf self,
+		SLuint32 eventFlags
+	);
+	SLresult (*GetCallbackEventsMask) (
+		SLRecordItf self,
+		SLuint32 *pEventFlags
+	);
+	SLresult (*SetMarkerPosition) (
+		SLRecordItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*ClearMarkerPosition) (
+		SLRecordItf self
+	);
+	SLresult (*GetMarkerPosition) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+	SLresult (*SetPositionUpdatePeriod) (
+		SLRecordItf self,
+		SLmillisecond mSec
+	);
+	SLresult (*GetPositionUpdatePeriod) (
+		SLRecordItf self,
+		SLmillisecond *pMsec
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Equalizer interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+#define SL_EQUALIZER_UNDEFINED				((SLuint16) 0xFFFF)
+
+extern SL_API const SLInterfaceID SL_IID_EQUALIZER;
+
+struct SLEqualizerItf_;
+typedef const struct SLEqualizerItf_ * const * SLEqualizerItf;
+
+struct SLEqualizerItf_ {
+	SLresult (*SetEnabled)(
+		SLEqualizerItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLEqualizerItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*GetNumberOfBands)(
+		SLEqualizerItf self,
+		SLuint16 *pAmount
+	);
+	SLresult (*GetBandLevelRange)(
+		SLEqualizerItf self,
+		SLmillibel *pMin,
+		SLmillibel *pMax
+	);
+	SLresult (*SetBandLevel)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmillibel level
+	);
+	SLresult (*GetBandLevel)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmillibel *pLevel
+	);
+	SLresult (*GetCenterFreq)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmilliHertz *pCenter
+	);
+	SLresult (*GetBandFreqRange)(
+		SLEqualizerItf self,
+		SLuint16 band,
+		SLmilliHertz *pMin,
+		SLmilliHertz *pMax
+	);
+	SLresult (*GetBand)(
+		SLEqualizerItf self,
+		SLmilliHertz frequency,
+		SLuint16 *pBand
+	);
+	SLresult (*GetCurrentPreset)(
+		SLEqualizerItf self,
+		SLuint16 *pPreset
+	);
+	SLresult (*UsePreset)(
+		SLEqualizerItf self,
+		SLuint16 index
+	);
+	SLresult (*GetNumberOfPresets)(
+		SLEqualizerItf self,
+		SLuint16 *pNumPresets
+	);
+	SLresult (*GetPresetName)(
+		SLEqualizerItf self,
+		SLuint16 index,
+		const SLchar ** ppName
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Volume Interface                                                           */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_VOLUME;
+
+struct SLVolumeItf_;
+typedef const struct SLVolumeItf_ * const * SLVolumeItf;
+
+struct SLVolumeItf_ {
+	SLresult (*SetVolumeLevel) (
+		SLVolumeItf self,
+		SLmillibel level
+	);
+	SLresult (*GetVolumeLevel) (
+		SLVolumeItf self,
+		SLmillibel *pLevel
+	);
+	SLresult (*GetMaxVolumeLevel) (
+		SLVolumeItf  self,
+		SLmillibel *pMaxLevel
+	);
+	SLresult (*SetMute) (
+		SLVolumeItf self,
+		SLboolean mute
+	);
+	SLresult (*GetMute) (
+		SLVolumeItf self,
+		SLboolean *pMute
+	);
+	SLresult (*EnableStereoPosition) (
+		SLVolumeItf self,
+		SLboolean enable
+	);
+	SLresult (*IsEnabledStereoPosition) (
+		SLVolumeItf self,
+		SLboolean *pEnable
+	);
+	SLresult (*SetStereoPosition) (
+		SLVolumeItf self,
+		SLpermille stereoPosition
+	);
+	SLresult (*GetStereoPosition) (
+		SLVolumeItf self,
+		SLpermille *pStereoPosition
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Device Volume Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_DEVICEVOLUME;
+
+struct SLDeviceVolumeItf_;
+typedef const struct SLDeviceVolumeItf_ * const * SLDeviceVolumeItf;
+
+struct SLDeviceVolumeItf_ {
+	SLresult (*GetVolumeScale) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 *pMinValue,
+		SLint32 *pMaxValue,
+		SLboolean *pIsMillibelScale
+	);
+	SLresult (*SetVolume) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 volume
+	);
+	SLresult (*GetVolume) (
+		SLDeviceVolumeItf self,
+		SLuint32 deviceID,
+		SLint32 *pVolume
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Buffer Queue Interface                                                    */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_BUFFERQUEUE;
+
+struct SLBufferQueueItf_;
+typedef const struct SLBufferQueueItf_ * const * SLBufferQueueItf;
+
+typedef void (SLAPIENTRY *slBufferQueueCallback)(
+	SLBufferQueueItf caller,
+	void *pContext
+);
+
+/** Buffer queue state **/
+
+typedef struct SLBufferQueueState_ {
+	SLuint32	count;
+	SLuint32	playIndex;
+} SLBufferQueueState;
+
+
+struct SLBufferQueueItf_ {
+	SLresult (*Enqueue) (
+		SLBufferQueueItf self,
+		const void *pBuffer,
+		SLuint32 size
+	);
+	SLresult (*Clear) (
+		SLBufferQueueItf self
+	);
+	SLresult (*GetState) (
+		SLBufferQueueItf self,
+		SLBufferQueueState *pState
+	);
+	SLresult (*RegisterCallback) (
+		SLBufferQueueItf self,
+		slBufferQueueCallback callback,
+		void* pContext
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* PresetReverb                                                              */
+/*---------------------------------------------------------------------------*/
+
+#define SL_REVERBPRESET_NONE		((SLuint16) 0x0000)
+#define SL_REVERBPRESET_SMALLROOM	((SLuint16) 0x0001)
+#define SL_REVERBPRESET_MEDIUMROOM	((SLuint16) 0x0002)
+#define SL_REVERBPRESET_LARGEROOM	((SLuint16) 0x0003)
+#define SL_REVERBPRESET_MEDIUMHALL	((SLuint16) 0x0004)
+#define SL_REVERBPRESET_LARGEHALL	((SLuint16) 0x0005)
+#define SL_REVERBPRESET_PLATE 		((SLuint16) 0x0006)
+
+
+extern SL_API const SLInterfaceID SL_IID_PRESETREVERB;
+
+struct SLPresetReverbItf_;
+typedef const struct SLPresetReverbItf_ * const * SLPresetReverbItf;
+
+struct SLPresetReverbItf_ {
+	SLresult (*SetPreset) (
+		SLPresetReverbItf self,
+		SLuint16 preset
+	);
+	SLresult (*GetPreset) (
+		SLPresetReverbItf self,
+		SLuint16 *pPreset
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* EnvironmentalReverb                                                       */
+/*---------------------------------------------------------------------------*/
+
+#define SL_I3DL2_ENVIRONMENT_PRESET_DEFAULT \
+	{ SL_MILLIBEL_MIN,    0,  1000,   500, SL_MILLIBEL_MIN,  20, SL_MILLIBEL_MIN,  40, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_GENERIC \
+	{ -1000, -100, 1490,  830, -2602,   7,   200,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL \
+	{ -1000,-6000,  170,  100, -1204,   1,   207,   2, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ROOM \
+	{ -1000, -454,  400,  830, -1646,   2,    53,   3, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_BATHROOM \
+	{ -1000,-1200, 1490,  540,  -370,   7,  1030,  11, 1000, 600 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM \
+	{ -1000,-6000,  500,  100, -1376,   3, -1104,   4, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_STONEROOM \
+	{ -1000, -300, 2310,  640,  -711,  12,    83,  17, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM \
+	{ -1000, -476, 4320,  590,  -789,  20,  -289,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL \
+	{ -1000, -500, 3920,  700, -1230,  20,    -2,  29, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CAVE \
+	{ -1000,    0, 2910, 1300,  -602,  15,  -302,  22, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ARENA \
+	{ -1000, -698, 7240,  330, -1166,  20,    16,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_HANGAR \
+	{ -1000,-1000, 10050,  230,  -602,  20,   198,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY \
+	{ -1000,-4000,  300,  100, -1831,   2, -1630,  30, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_HALLWAY \
+	{ -1000, -300, 1490,  590, -1219,   7,   441,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR \
+	{ -1000, -237, 2700,  790, -1214,  13,   395,  20, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_ALLEY \
+	{ -1000, -270, 1490,  860, -1204,   7,    -4,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_FOREST \
+	{ -1000,-3300, 1490,  540, -2560, 162,  -613,  88,  790,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_CITY \
+	{ -1000, -800, 1490,  670, -2273,   7, -2217,  11,  500,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS \
+	{ -1000,-2500, 1490,  210, -2780, 300, -2014, 100,  270,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_QUARRY \
+	{ -1000,-1000, 1490,  830, SL_MILLIBEL_MIN,  61,   500,  25, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PLAIN \
+	{ -1000,-2000, 1490,  500, -2466, 179, -2514, 100,  210,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT \
+	{ -1000,    0, 1650, 1500, -1363,   8, -1153,  12, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE \
+	{ -1000,-1000, 2810,  140,   429,  14,   648,  21,  800, 600 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_UNDERWATER \
+	{ -1000,-4000, 1490,  100,  -449,   7,  1700,  11, 1000,1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
+	{ -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
+	{ -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
+	{ -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
+	{ -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
+	{ -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
+#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
+	{ -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 }
+
+
+typedef struct SLEnvironmentalReverbSettings_ {
+	SLmillibel    roomLevel;
+	SLmillibel    roomHFLevel;
+	SLmillisecond decayTime;
+	SLpermille    decayHFRatio;
+	SLmillibel    reflectionsLevel;
+	SLmillisecond reflectionsDelay;
+	SLmillibel    reverbLevel;
+	SLmillisecond reverbDelay;
+	SLpermille    diffusion;
+	SLpermille    density;
+} SLEnvironmentalReverbSettings;
+
+
+
+
+extern SL_API const SLInterfaceID SL_IID_ENVIRONMENTALREVERB;
+
+
+struct SLEnvironmentalReverbItf_;
+typedef const struct SLEnvironmentalReverbItf_ * const * SLEnvironmentalReverbItf;
+
+struct SLEnvironmentalReverbItf_ {
+	SLresult (*SetRoomLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel room
+	);
+	SLresult (*GetRoomLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pRoom
+	);
+	SLresult (*SetRoomHFLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel roomHF
+	);
+	SLresult (*GetRoomHFLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pRoomHF
+	);
+	SLresult (*SetDecayTime) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond decayTime
+	);
+	SLresult (*GetDecayTime) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pDecayTime
+	);
+	SLresult (*SetDecayHFRatio) (
+		SLEnvironmentalReverbItf self,
+		SLpermille decayHFRatio
+	);
+	SLresult (*GetDecayHFRatio) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDecayHFRatio
+	);
+	SLresult (*SetReflectionsLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel reflectionsLevel
+	);
+	SLresult (*GetReflectionsLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pReflectionsLevel
+	);
+	SLresult (*SetReflectionsDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond reflectionsDelay
+	);
+	SLresult (*GetReflectionsDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pReflectionsDelay
+	);
+	SLresult (*SetReverbLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel reverbLevel
+	);
+	SLresult (*GetReverbLevel) (
+		SLEnvironmentalReverbItf self,
+		SLmillibel *pReverbLevel
+	);
+	SLresult (*SetReverbDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond reverbDelay
+	);
+	SLresult (*GetReverbDelay) (
+		SLEnvironmentalReverbItf self,
+		SLmillisecond *pReverbDelay
+	);
+	SLresult (*SetDiffusion) (
+		SLEnvironmentalReverbItf self,
+		SLpermille diffusion
+	);
+	SLresult (*GetDiffusion) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDiffusion
+	);
+	SLresult (*SetDensity) (
+		SLEnvironmentalReverbItf self,
+		SLpermille density
+	);
+	SLresult (*GetDensity) (
+		SLEnvironmentalReverbItf self,
+		SLpermille *pDensity
+	);
+	SLresult (*SetEnvironmentalReverbProperties) (
+		SLEnvironmentalReverbItf self,
+		const SLEnvironmentalReverbSettings *pProperties
+	);
+	SLresult (*GetEnvironmentalReverbProperties) (
+		SLEnvironmentalReverbItf self,
+		SLEnvironmentalReverbSettings *pProperties
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Effects Send Interface                                                    */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_EFFECTSEND;
+
+struct SLEffectSendItf_;
+typedef const struct SLEffectSendItf_ * const * SLEffectSendItf;
+
+struct SLEffectSendItf_ {
+	SLresult (*EnableEffectSend) (
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLboolean enable,
+		SLmillibel initialLevel
+	);
+	SLresult (*IsEnabled) (
+		SLEffectSendItf self,
+		const void * pAuxEffect,
+		SLboolean *pEnable
+	);
+	SLresult (*SetDirectLevel) (
+		SLEffectSendItf self,
+		SLmillibel directLevel
+	);
+	SLresult (*GetDirectLevel) (
+		SLEffectSendItf self,
+		SLmillibel *pDirectLevel
+	);
+	SLresult (*SetSendLevel) (
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLmillibel sendLevel
+	);
+	SLresult (*GetSendLevel)(
+		SLEffectSendItf self,
+		const void *pAuxEffect,
+		SLmillibel *pSendLevel
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Grouping Interface                                                     */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DGROUPING;
+
+
+struct SL3DGroupingItf_ ;
+typedef const struct SL3DGroupingItf_ * const * SL3DGroupingItf;
+
+struct SL3DGroupingItf_ {
+	SLresult (*Set3DGroup) (
+		SL3DGroupingItf self,
+		SLObjectItf group
+	);
+	SLresult (*Get3DGroup) (
+		SL3DGroupingItf self,
+		SLObjectItf *pGroup
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Commit Interface                                                       */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DCOMMIT;
+
+struct SL3DCommitItf_;
+typedef const struct SL3DCommitItf_* const * SL3DCommitItf;
+
+struct SL3DCommitItf_ {
+	SLresult (*Commit) (
+		SL3DCommitItf self
+	);
+	SLresult (*SetDeferred) (
+		SL3DCommitItf self,
+		SLboolean deferred
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Location Interface                                                     */
+/*---------------------------------------------------------------------------*/
+
+typedef struct SLVec3D_ {
+	SLint32	x;
+	SLint32	y;
+	SLint32	z;
+} SLVec3D;
+
+extern SL_API const SLInterfaceID SL_IID_3DLOCATION;
+
+struct SL3DLocationItf_;
+typedef const struct SL3DLocationItf_ * const * SL3DLocationItf;
+
+struct SL3DLocationItf_ {
+	SLresult (*SetLocationCartesian) (
+		SL3DLocationItf self,
+		const SLVec3D *pLocation
+	);
+	SLresult (*SetLocationSpherical) (
+		SL3DLocationItf self,
+		SLmillidegree azimuth,
+		SLmillidegree elevation,
+		SLmillimeter distance
+	);
+	SLresult (*Move) (
+		SL3DLocationItf self,
+		const SLVec3D *pMovement
+	);
+	SLresult (*GetLocationCartesian) (
+		SL3DLocationItf self,
+		SLVec3D *pLocation
+	);
+	SLresult (*SetOrientationVectors) (
+		SL3DLocationItf self,
+		const SLVec3D *pFront,
+		const SLVec3D *pAbove
+	);
+	SLresult (*SetOrientationAngles) (
+		SL3DLocationItf self,
+		SLmillidegree heading,
+		SLmillidegree pitch,
+		SLmillidegree roll
+	);
+	SLresult (*Rotate) (
+		SL3DLocationItf self,
+		SLmillidegree theta,
+		const SLVec3D *pAxis
+	);
+	SLresult (*GetOrientationVectors) (
+		SL3DLocationItf self,
+		SLVec3D *pFront,
+		SLVec3D *pUp
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* 3D Doppler Interface                                                      */
+/*---------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_3DDOPPLER;
+
+struct SL3DDopplerItf_;
+typedef const struct SL3DDopplerItf_ * const * SL3DDopplerItf;
+
+struct SL3DDopplerItf_ {
+	SLresult (*SetVelocityCartesian) (
+		SL3DDopplerItf self,
+		const SLVec3D *pVelocity
+	);
+	SLresult (*SetVelocitySpherical) (
+		SL3DDopplerItf self,
+		SLmillidegree azimuth,
+		SLmillidegree elevation,
+		SLmillimeter speed
+	);
+	SLresult (*GetVelocityCartesian) (
+		SL3DDopplerItf self,
+		SLVec3D *pVelocity
+	);
+	SLresult (*SetDopplerFactor) (
+		SL3DDopplerItf self,
+		SLpermille dopplerFactor
+	);
+	SLresult (*GetDopplerFactor) (
+		SL3DDopplerItf self,
+		SLpermille *pDopplerFactor
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* 3D Source Interface and associated defines                                */
+/* --------------------------------------------------------------------------*/
+
+#define SL_ROLLOFFMODEL_EXPONENTIAL	((SLuint32) 0x00000000)
+#define SL_ROLLOFFMODEL_LINEAR		((SLuint32) 0x00000001)
+
+
+extern SL_API const SLInterfaceID SL_IID_3DSOURCE;
+
+struct SL3DSourceItf_;
+typedef const struct SL3DSourceItf_ * const * SL3DSourceItf;
+
+struct SL3DSourceItf_ {
+	SLresult (*SetHeadRelative) (
+		SL3DSourceItf self,
+		SLboolean headRelative
+	);
+	SLresult (*GetHeadRelative) (
+		SL3DSourceItf self,
+		SLboolean *pHeadRelative
+	);
+	SLresult (*SetRolloffDistances) (
+		SL3DSourceItf self,
+		SLmillimeter minDistance,
+		SLmillimeter maxDistance
+	);
+	SLresult (*GetRolloffDistances) (
+		SL3DSourceItf self,
+		SLmillimeter *pMinDistance,
+		SLmillimeter *pMaxDistance
+	);
+	SLresult (*SetRolloffMaxDistanceMute) (
+		SL3DSourceItf self,
+		SLboolean mute
+	);
+	SLresult (*GetRolloffMaxDistanceMute) (
+		SL3DSourceItf self,
+		SLboolean *pMute
+	);
+	SLresult (*SetRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille rolloffFactor
+	);
+	SLresult (*GetRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille *pRolloffFactor
+	);
+	SLresult (*SetRoomRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille roomRolloffFactor
+	);
+	SLresult (*GetRoomRolloffFactor) (
+		SL3DSourceItf self,
+		SLpermille *pRoomRolloffFactor
+	);
+	SLresult (*SetRolloffModel) (
+		SL3DSourceItf self,
+		SLuint8 model
+	);
+	SLresult (*GetRolloffModel) (
+		SL3DSourceItf self,
+		SLuint8 *pModel
+	);
+	SLresult (*SetCone) (
+		SL3DSourceItf self,
+		SLmillidegree innerAngle,
+		SLmillidegree outerAngle,
+		SLmillibel outerLevel
+	);
+	SLresult (*GetCone) (
+		SL3DSourceItf self,
+		SLmillidegree *pInnerAngle,
+		SLmillidegree *pOuterAngle,
+		SLmillibel *pOuterLevel
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* 3D Macroscopic Interface                                                  */
+/* --------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_3DMACROSCOPIC;
+
+struct SL3DMacroscopicItf_;
+typedef const struct SL3DMacroscopicItf_ * const * SL3DMacroscopicItf;
+
+struct SL3DMacroscopicItf_ {
+	SLresult (*SetSize) (
+		SL3DMacroscopicItf self,
+		SLmillimeter width,
+		SLmillimeter height,
+		SLmillimeter depth
+	);
+	SLresult (*GetSize) (
+		SL3DMacroscopicItf self,
+		SLmillimeter *pWidth,
+		SLmillimeter *pHeight,
+		SLmillimeter *pDepth
+	);
+	SLresult (*SetOrientationAngles) (
+		SL3DMacroscopicItf self,
+		SLmillidegree heading,
+		SLmillidegree pitch,
+		SLmillidegree roll
+	);
+	SLresult (*SetOrientationVectors) (
+		SL3DMacroscopicItf self,
+		const SLVec3D *pFront,
+		const SLVec3D *pAbove
+	);
+	SLresult (*Rotate) (
+		SL3DMacroscopicItf self,
+		SLmillidegree theta,
+		const SLVec3D *pAxis
+	);
+	SLresult (*GetOrientationVectors) (
+		SL3DMacroscopicItf self,
+		SLVec3D *pFront,
+		SLVec3D *pUp
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Mute Solo Interface                                                       */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MUTESOLO;
+
+struct SLMuteSoloItf_;
+typedef const struct SLMuteSoloItf_ * const * SLMuteSoloItf;
+
+struct SLMuteSoloItf_ {
+	SLresult (*SetChannelMute) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean mute
+	);
+	SLresult (*GetChannelMute) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean *pMute
+	);
+	SLresult (*SetChannelSolo) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean solo
+	);
+	SLresult (*GetChannelSolo) (
+		SLMuteSoloItf self,
+		SLuint8 chan,
+		SLboolean *pSolo
+	);
+	SLresult (*GetNumChannels) (
+		SLMuteSoloItf self,
+		SLuint8 *pNumChannels
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Dynamic Interface Management Interface and associated types and macros    */
+/* --------------------------------------------------------------------------*/
+
+#define SL_DYNAMIC_ITF_EVENT_RUNTIME_ERROR			((SLuint32) 0x00000001)
+#define SL_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION		((SLuint32) 0x00000002)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST			((SLuint32) 0x00000003)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY	((SLuint32) 0x00000004)
+#define SL_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE		((SLuint32) 0x00000005)
+
+
+
+
+extern SL_API const SLInterfaceID SL_IID_DYNAMICINTERFACEMANAGEMENT;
+
+struct SLDynamicInterfaceManagementItf_;
+typedef const struct SLDynamicInterfaceManagementItf_ * const * SLDynamicInterfaceManagementItf;
+
+typedef void (SLAPIENTRY *slDynamicInterfaceManagementCallback) (
+	SLDynamicInterfaceManagementItf caller,
+	void * pContext,
+	SLuint32 event,
+	SLresult result,
+    const SLInterfaceID iid
+);
+
+
+struct SLDynamicInterfaceManagementItf_ {
+	SLresult (*AddInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid,
+		SLboolean async
+	);
+	SLresult (*RemoveInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid
+	);
+	SLresult (*ResumeInterface) (
+		SLDynamicInterfaceManagementItf self,
+		const SLInterfaceID iid,
+		SLboolean async
+	);
+	SLresult (*RegisterCallback) (
+		SLDynamicInterfaceManagementItf self,
+		slDynamicInterfaceManagementCallback callback,
+		void * pContext
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Midi Message Interface and associated types                               */
+/* --------------------------------------------------------------------------*/
+
+#define SL_MIDIMESSAGETYPE_NOTE_ON_OFF		((SLuint32) 0x00000001)
+#define SL_MIDIMESSAGETYPE_POLY_PRESSURE	((SLuint32) 0x00000002)
+#define SL_MIDIMESSAGETYPE_CONTROL_CHANGE	((SLuint32) 0x00000003)
+#define SL_MIDIMESSAGETYPE_PROGRAM_CHANGE	((SLuint32) 0x00000004)
+#define SL_MIDIMESSAGETYPE_CHANNEL_PRESSURE	((SLuint32) 0x00000005)
+#define SL_MIDIMESSAGETYPE_PITCH_BEND		((SLuint32) 0x00000006)
+#define SL_MIDIMESSAGETYPE_SYSTEM_MESSAGE	((SLuint32) 0x00000007)
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDIMESSAGE;
+
+struct SLMIDIMessageItf_;
+typedef const struct SLMIDIMessageItf_ * const * SLMIDIMessageItf;
+
+typedef void (SLAPIENTRY *slMetaEventCallback) (
+	SLMIDIMessageItf caller,
+	void *pContext,
+	SLuint8 type,
+    SLuint32 length,
+	const SLuint8 *pData,
+	SLuint32 tick,
+	SLuint16 track
+);
+
+typedef void (SLAPIENTRY *slMIDIMessageCallback) (
+	SLMIDIMessageItf caller,
+	void *pContext,
+	SLuint8 statusByte,
+	SLuint32 length,
+	const SLuint8 *pData,
+	SLuint32 tick,
+	SLuint16 track
+);
+
+struct SLMIDIMessageItf_ {
+	SLresult (*SendMessage) (
+		SLMIDIMessageItf self,
+		const SLuint8 *data,
+		SLuint32 length
+	);
+	SLresult (*RegisterMetaEventCallback) (
+		SLMIDIMessageItf self,
+		slMetaEventCallback callback,
+		void *pContext
+	);
+	SLresult (*RegisterMIDIMessageCallback) (
+		SLMIDIMessageItf self,
+		slMIDIMessageCallback callback,
+		void *pContext
+	);
+	SLresult (*AddMIDIMessageCallbackFilter) (
+		SLMIDIMessageItf self,
+		SLuint32 messageType
+	);
+	SLresult (*ClearMIDIMessageCallbackFilter) (
+		SLMIDIMessageItf self
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Mute Solo interface                                                  */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDIMUTESOLO;
+
+struct SLMIDIMuteSoloItf_;
+typedef const struct SLMIDIMuteSoloItf_ * const * SLMIDIMuteSoloItf;
+
+struct SLMIDIMuteSoloItf_ {
+	SLresult (*SetChannelMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean mute
+	);
+	SLresult (*GetChannelMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean *pMute
+	);
+	SLresult (*SetChannelSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean solo
+	);
+	SLresult (*GetChannelSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint8 channel,
+		SLboolean *pSolo
+	);
+	SLresult (*GetTrackCount) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 *pCount
+	);
+	SLresult (*SetTrackMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean mute
+	);
+	SLresult (*GetTrackMute) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean *pMute
+	);
+	SLresult (*SetTrackSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean solo
+	);
+	SLresult (*GetTrackSolo) (
+		SLMIDIMuteSoloItf self,
+		SLuint16 track,
+		SLboolean *pSolo
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Tempo interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDITEMPO;
+
+struct SLMIDITempoItf_;
+typedef const struct SLMIDITempoItf_ * const * SLMIDITempoItf;
+
+struct SLMIDITempoItf_ {
+	SLresult (*SetTicksPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLuint32 tpqn
+	);
+	SLresult (*GetTicksPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLuint32 *pTpqn
+	);
+	SLresult (*SetMicrosecondsPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLmicrosecond uspqn
+	);
+	SLresult (*GetMicrosecondsPerQuarterNote) (
+		SLMIDITempoItf self,
+		SLmicrosecond *uspqn
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Midi Time interface                                                       */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_MIDITIME;
+
+struct SLMIDITimeItf_;
+typedef const struct SLMIDITimeItf_ * const * SLMIDITimeItf;
+
+struct SLMIDITimeItf_ {
+	SLresult (*GetDuration) (
+		SLMIDITimeItf self,
+		SLuint32 *pDuration
+	);
+	SLresult (*SetPosition) (
+		SLMIDITimeItf self,
+		SLuint32 position
+	);
+	SLresult (*GetPosition) (
+		SLMIDITimeItf self,
+		SLuint32 *pPosition
+	);
+	SLresult (*SetLoopPoints) (
+		SLMIDITimeItf self,
+		SLuint32 startTick,
+		SLuint32 numTicks
+	);
+	SLresult (*GetLoopPoints) (
+		SLMIDITimeItf self,
+		SLuint32 *pStartTick,
+		SLuint32 *pNumTicks
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Decoder Capabilities Interface                                      */
+/* --------------------------------------------------------------------------*/
+
+/*Audio Codec related defines*/
+
+#define SL_RATECONTROLMODE_CONSTANTBITRATE	((SLuint32) 0x00000001)
+#define SL_RATECONTROLMODE_VARIABLEBITRATE	((SLuint32) 0x00000002)
+
+#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
+#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
+#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
+#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
+#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
+#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
+#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
+#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)
+
+#define SL_AUDIOPROFILE_PCM                   ((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_MPEG1_L3              ((SLuint32) 0x00000001)
+#define SL_AUDIOPROFILE_MPEG2_L3              ((SLuint32) 0x00000002)
+#define SL_AUDIOPROFILE_MPEG25_L3             ((SLuint32) 0x00000003)
+
+#define SL_AUDIOCHANMODE_MP3_MONO             ((SLuint32) 0x00000001)
+#define SL_AUDIOCHANMODE_MP3_STEREO           ((SLuint32) 0x00000002)
+#define SL_AUDIOCHANMODE_MP3_JOINTSTEREO      ((SLuint32) 0x00000003)
+#define SL_AUDIOCHANMODE_MP3_DUAL             ((SLuint32) 0x00000004)
+
+#define SL_AUDIOPROFILE_AMR			((SLuint32) 0x00000001)
+
+#define SL_AUDIOSTREAMFORMAT_CONFORMANCE	((SLuint32) 0x00000001)
+#define SL_AUDIOSTREAMFORMAT_IF1			((SLuint32) 0x00000002)
+#define SL_AUDIOSTREAMFORMAT_IF2			((SLuint32) 0x00000003)
+#define SL_AUDIOSTREAMFORMAT_FSF			((SLuint32) 0x00000004)
+#define SL_AUDIOSTREAMFORMAT_RTPPAYLOAD	((SLuint32) 0x00000005)
+#define SL_AUDIOSTREAMFORMAT_ITU			((SLuint32) 0x00000006)
+
+#define SL_AUDIOPROFILE_AMRWB			((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_AMRWBPLUS		((SLuint32) 0x00000001)
+
+#define SL_AUDIOPROFILE_AAC_AAC			((SLuint32) 0x00000001)
+
+#define SL_AUDIOMODE_AAC_MAIN			((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_AAC_LC			((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_AAC_SSR			((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_AAC_LTP			((SLuint32) 0x00000004)
+#define SL_AUDIOMODE_AAC_HE			((SLuint32) 0x00000005)
+#define SL_AUDIOMODE_AAC_SCALABLE		((SLuint32) 0x00000006)
+#define SL_AUDIOMODE_AAC_ERLC			((SLuint32) 0x00000007)
+#define SL_AUDIOMODE_AAC_LD			((SLuint32) 0x00000008)
+#define SL_AUDIOMODE_AAC_HE_PS			((SLuint32) 0x00000009)
+#define SL_AUDIOMODE_AAC_HE_MPS			((SLuint32) 0x0000000A)
+
+#define SL_AUDIOSTREAMFORMAT_MP2ADTS		((SLuint32) 0x00000001)
+#define SL_AUDIOSTREAMFORMAT_MP4ADTS		((SLuint32) 0x00000002)
+#define SL_AUDIOSTREAMFORMAT_MP4LOAS		((SLuint32) 0x00000003)
+#define SL_AUDIOSTREAMFORMAT_MP4LATM		((SLuint32) 0x00000004)
+#define SL_AUDIOSTREAMFORMAT_ADIF		((SLuint32) 0x00000005)
+#define SL_AUDIOSTREAMFORMAT_MP4FF		((SLuint32) 0x00000006)
+#define SL_AUDIOSTREAMFORMAT_RAW			((SLuint32) 0x00000007)
+
+#define SL_AUDIOPROFILE_WMA7		((SLuint32) 0x00000001)
+#define SL_AUDIOPROFILE_WMA8		((SLuint32) 0x00000002)
+#define SL_AUDIOPROFILE_WMA9		((SLuint32) 0x00000003)
+#define SL_AUDIOPROFILE_WMA10		((SLuint32) 0x00000004)
+
+#define SL_AUDIOMODE_WMA_LEVEL1		((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_WMA_LEVEL2		((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_WMA_LEVEL3		((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_WMA_LEVEL4		((SLuint32) 0x00000004)
+#define SL_AUDIOMODE_WMAPRO_LEVELM0	((SLuint32) 0x00000005)
+#define SL_AUDIOMODE_WMAPRO_LEVELM1	((SLuint32) 0x00000006)
+#define SL_AUDIOMODE_WMAPRO_LEVELM2	((SLuint32) 0x00000007)
+#define SL_AUDIOMODE_WMAPRO_LEVELM3	((SLuint32) 0x00000008)
+
+#define SL_AUDIOPROFILE_REALAUDIO		((SLuint32) 0x00000001)
+
+#define SL_AUDIOMODE_REALAUDIO_G2		((SLuint32) 0x00000001)
+#define SL_AUDIOMODE_REALAUDIO_8			((SLuint32) 0x00000002)
+#define SL_AUDIOMODE_REALAUDIO_10		((SLuint32) 0x00000003)
+#define SL_AUDIOMODE_REALAUDIO_SURROUND	((SLuint32) 0x00000004)
+
+typedef struct SLAudioCodecDescriptor_ {
+    SLuint32      maxChannels;
+    SLuint32      minBitsPerSample;
+    SLuint32      maxBitsPerSample;
+    SLmilliHertz  minSampleRate;
+    SLmilliHertz  maxSampleRate;
+    SLboolean     isFreqRangeContinuous;
+    SLmilliHertz *pSampleRatesSupported;
+    SLuint32      numSampleRatesSupported;
+    SLuint32      minBitRate;
+    SLuint32      maxBitRate;
+    SLboolean     isBitrateRangeContinuous;
+    SLuint32     *pBitratesSupported;
+    SLuint32      numBitratesSupported;
+    SLuint32	  profileSetting;
+    SLuint32      modeSetting;
+} SLAudioCodecDescriptor;
+
+/*Structure used to retrieve the profile and level settings supported by an audio encoder */
+
+typedef struct SLAudioCodecProfileMode_ {
+    SLuint32 profileSetting;
+    SLuint32 modeSetting;
+} SLAudioCodecProfileMode;
+
+extern SL_API const SLInterfaceID SL_IID_AUDIODECODERCAPABILITIES;
+
+struct SLAudioDecoderCapabilitiesItf_;
+typedef const struct SLAudioDecoderCapabilitiesItf_ * const * SLAudioDecoderCapabilitiesItf;
+
+struct SLAudioDecoderCapabilitiesItf_ {
+    SLresult (*GetAudioDecoders) (
+        SLAudioDecoderCapabilitiesItf self,
+        SLuint32 * pNumDecoders ,
+        SLuint32 *pDecoderIds
+    );
+    SLresult (*GetAudioDecoderCapabilities) (
+        SLAudioDecoderCapabilitiesItf self,
+        SLuint32 decoderId,
+        SLuint32 *pIndex,
+        SLAudioCodecDescriptor *pDescriptor
+    );
+};
+
+
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Encoder Capabilities Interface                                      */
+/* --------------------------------------------------------------------------*/
+
+/* Structure used when setting audio encoding parameters */
+
+typedef struct SLAudioEncoderSettings_ {
+    SLuint32 encoderId;
+    SLuint32 channelsIn;
+    SLuint32 channelsOut;
+    SLmilliHertz sampleRate;
+    SLuint32 bitRate;
+    SLuint32 bitsPerSample;
+    SLuint32 rateControl;
+    SLuint32 profileSetting;
+    SLuint32 levelSetting;
+    SLuint32 channelMode;
+    SLuint32 streamFormat;
+    SLuint32 encodeOptions;
+    SLuint32 blockAlignment;
+} SLAudioEncoderSettings;
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOENCODERCAPABILITIES;
+
+struct SLAudioEncoderCapabilitiesItf_;
+typedef const struct SLAudioEncoderCapabilitiesItf_ * const * SLAudioEncoderCapabilitiesItf;
+
+struct SLAudioEncoderCapabilitiesItf_ {
+    SLresult (*GetAudioEncoders) (
+        SLAudioEncoderCapabilitiesItf self,
+        SLuint32 *pNumEncoders ,
+        SLuint32 *pEncoderIds
+    );
+    SLresult (*GetAudioEncoderCapabilities) (
+        SLAudioEncoderCapabilitiesItf self,
+        SLuint32 encoderId,
+        SLuint32 *pIndex,
+        SLAudioCodecDescriptor * pDescriptor
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Audio Encoder Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_AUDIOENCODER;
+
+struct SLAudioEncoderItf_;
+typedef const struct SLAudioEncoderItf_ * const * SLAudioEncoderItf;
+
+struct SLAudioEncoderItf_ {
+    SLresult (*SetEncoderSettings) (
+        SLAudioEncoderItf		self,
+        SLAudioEncoderSettings 	*pSettings
+    );
+    SLresult (*GetEncoderSettings) (
+        SLAudioEncoderItf		self,
+        SLAudioEncoderSettings	*pSettings
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Bass Boost Interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_BASSBOOST;
+
+struct SLBassBoostItf_;
+typedef const struct SLBassBoostItf_ * const * SLBassBoostItf;
+
+struct SLBassBoostItf_ {
+	SLresult (*SetEnabled)(
+		SLBassBoostItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLBassBoostItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*SetStrength)(
+		SLBassBoostItf self,
+		SLpermille strength
+	);
+	SLresult (*GetRoundedStrength)(
+		SLBassBoostItf self,
+		SLpermille *pStrength
+	);
+	SLresult (*IsStrengthSupported)(
+		SLBassBoostItf self,
+		SLboolean *pSupported
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Pitch Interface                                                           */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_PITCH;
+
+struct SLPitchItf_;
+typedef const struct SLPitchItf_ * const * SLPitchItf;
+
+struct SLPitchItf_ {
+	SLresult (*SetPitch) (
+		SLPitchItf self,
+		SLpermille pitch
+	);
+	SLresult (*GetPitch) (
+		SLPitchItf self,
+		SLpermille *pPitch
+	);
+	SLresult (*GetPitchCapabilities) (
+		SLPitchItf self,
+		SLpermille *pMinPitch,
+		SLpermille *pMaxPitch
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Rate Pitch Interface                                                      */
+/* RatePitchItf is an interface for controlling the rate a sound is played   */
+/* back. A change in rate will cause a change in pitch.                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_RATEPITCH;
+
+struct SLRatePitchItf_;
+typedef const struct SLRatePitchItf_ * const * SLRatePitchItf;
+
+struct SLRatePitchItf_ {
+	SLresult (*SetRate) (
+		SLRatePitchItf self,
+		SLpermille rate
+	);
+	SLresult (*GetRate) (
+		SLRatePitchItf self,
+		SLpermille *pRate
+	);
+	SLresult (*GetRatePitchCapabilities) (
+		SLRatePitchItf self,
+		SLpermille *pMinRate,
+		SLpermille *pMaxRate
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Virtualizer Interface                                                      */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VIRTUALIZER;
+
+struct SLVirtualizerItf_;
+typedef const struct SLVirtualizerItf_ * const * SLVirtualizerItf;
+
+struct SLVirtualizerItf_ {
+	SLresult (*SetEnabled)(
+		SLVirtualizerItf self,
+		SLboolean enabled
+	);
+	SLresult (*IsEnabled)(
+		SLVirtualizerItf self,
+		SLboolean *pEnabled
+	);
+	SLresult (*SetStrength)(
+		SLVirtualizerItf self,
+		SLpermille strength
+	);
+	SLresult (*GetRoundedStrength)(
+		SLVirtualizerItf self,
+		SLpermille *pStrength
+	);
+	SLresult (*IsStrengthSupported)(
+		SLVirtualizerItf self,
+		SLboolean *pSupported
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Visualization Interface                                                   */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_VISUALIZATION;
+
+struct SLVisualizationItf_;
+typedef const struct SLVisualizationItf_ * const * SLVisualizationItf;
+
+typedef void (SLAPIENTRY *slVisualizationCallback) (
+	void *pContext,
+	const SLuint8 waveform[],
+	const SLuint8 fft[],
+	SLmilliHertz samplerate
+);
+
+struct SLVisualizationItf_{
+	SLresult (*RegisterVisualizationCallback)(
+		SLVisualizationItf self,
+		slVisualizationCallback callback,
+		void *pContext,
+		SLmilliHertz rate
+	);
+	SLresult (*GetMaxRate)(
+		SLVisualizationItf self,
+		SLmilliHertz* pRate
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Engine Interface                                                          */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_ENGINE;
+
+struct SLEngineItf_;
+typedef const struct SLEngineItf_ * const * SLEngineItf;
+
+
+struct SLEngineItf_ {
+
+	SLresult (*CreateLEDDevice) (
+		SLEngineItf self,
+		SLObjectItf * pDevice,
+		SLuint32 deviceID,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateVibraDevice) (
+		SLEngineItf self,
+		SLObjectItf * pDevice,
+		SLuint32 deviceID,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateAudioPlayer) (
+		SLEngineItf self,
+		SLObjectItf * pPlayer,
+		SLDataSource *pAudioSrc,
+		SLDataSink *pAudioSnk,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateAudioRecorder) (
+		SLEngineItf self,
+		SLObjectItf * pRecorder,
+		SLDataSource *pAudioSrc,
+		SLDataSink *pAudioSnk,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateMidiPlayer) (
+		SLEngineItf self,
+		SLObjectItf * pPlayer,
+		SLDataSource *pMIDISrc,
+		SLDataSource *pBankSrc,
+		SLDataSink *pAudioOutput,
+		SLDataSink *pVibra,
+		SLDataSink *pLEDArray,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateListener) (
+		SLEngineItf self,
+		SLObjectItf * pListener,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*Create3DGroup) (
+		SLEngineItf self,
+		SLObjectItf * pGroup,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateOutputMix) (
+		SLEngineItf self,
+		SLObjectItf * pMix,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+	SLresult (*CreateMetadataExtractor) (
+		SLEngineItf self,
+		SLObjectItf * pMetadataExtractor,
+		SLDataSource * pDataSource,
+		SLuint32 numInterfaces,
+		const SLInterfaceID * pInterfaceIds,
+		const SLboolean * pInterfaceRequired
+	);
+    SLresult (*CreateExtensionObject) (
+        SLEngineItf self,
+        SLObjectItf * pObject,
+        void * pParameters,
+        SLuint32 objectID,
+        SLuint32 numInterfaces,
+        const SLInterfaceID * pInterfaceIds,
+        const SLboolean * pInterfaceRequired
+    );
+	SLresult (*QueryNumSupportedInterfaces) (
+		SLEngineItf self,
+		SLuint32 objectID,
+		SLuint32 * pNumSupportedInterfaces
+	);
+	SLresult (*QuerySupportedInterfaces) (
+		SLEngineItf self,
+		SLuint32 objectID,
+		SLuint32 index,
+		SLInterfaceID * pInterfaceId
+	);
+    SLresult (*QueryNumSupportedExtensions) (
+        SLEngineItf self,
+        SLuint32 * pNumExtensions
+    );
+    SLresult (*QuerySupportedExtension) (
+        SLEngineItf self,
+        SLuint32 index,
+        SLchar * pExtensionName,
+        SLint16 * pNameLength
+    );
+    SLresult (*IsExtensionSupported) (
+        SLEngineItf self,
+        const SLchar * pExtensionName,
+        SLboolean * pSupported
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Engine Capabilities Interface                                             */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_ENGINECAPABILITIES;
+
+struct SLEngineCapabilitiesItf_;
+typedef const struct SLEngineCapabilitiesItf_ * const * SLEngineCapabilitiesItf;
+
+struct SLEngineCapabilitiesItf_ {
+	SLresult (*QuerySupportedProfiles) (
+		SLEngineCapabilitiesItf self,
+		SLuint16 *pProfilesSupported
+	);
+	SLresult (*QueryAvailableVoices) (
+		SLEngineCapabilitiesItf self,
+		SLuint16 voiceType,
+		SLint16 *pNumMaxVoices,
+		SLboolean *pIsAbsoluteMax,
+		SLint16 *pNumFreeVoices
+	);
+	SLresult (*QueryNumberOfMIDISynthesizers) (
+		SLEngineCapabilitiesItf self,
+		SLint16 *pNumMIDIsynthesizers
+	);
+	SLresult (*QueryAPIVersion) (
+		SLEngineCapabilitiesItf self,
+		SLint16 *pMajor,
+		SLint16 *pMinor,
+		SLint16 *pStep
+	);
+	SLresult (*QueryLEDCapabilities) (
+		SLEngineCapabilitiesItf self,
+        SLuint32 *pIndex,
+		SLuint32 *pLEDDeviceID,
+		SLLEDDescriptor *pDescriptor
+	);
+	SLresult (*QueryVibraCapabilities) (
+		SLEngineCapabilitiesItf self,
+        SLuint32 *pIndex,
+		SLuint32 *pVibraDeviceID,
+		SLVibraDescriptor *pDescriptor
+	);
+	SLresult (*IsThreadSafe) (
+		SLEngineCapabilitiesItf self,
+		SLboolean *pIsThreadSafe
+	);
+};
+
+/*---------------------------------------------------------------------------*/
+/* Thread Sync Interface                                                     */
+/* --------------------------------------------------------------------------*/
+
+
+extern SL_API const SLInterfaceID SL_IID_THREADSYNC;
+
+struct SLThreadSyncItf_;
+typedef const struct SLThreadSyncItf_ * const * SLThreadSyncItf;
+
+
+struct SLThreadSyncItf_ {
+	SLresult (*EnterCriticalSection) (
+		SLThreadSyncItf self
+	);
+	SLresult (*ExitCriticalSection) (
+		SLThreadSyncItf self
+	);
+};
+
+
+/*****************************************************************************/
+/* SL engine constructor                                                     */
+/*****************************************************************************/
+
+#define SL_ENGINEOPTION_THREADSAFE	((SLuint32) 0x00000001)
+#define SL_ENGINEOPTION_LOSSOFCONTROL	((SLuint32) 0x00000002)
+
+typedef struct SLEngineOption_ {
+	SLuint32 feature;
+	SLuint32 data;
+} SLEngineOption;
+
+
+SL_API SLresult SLAPIENTRY slCreateEngine(
+	SLObjectItf             *pEngine,
+	SLuint32                numOptions,
+	const SLEngineOption    *pEngineOptions,
+	SLuint32                numInterfaces,
+	const SLInterfaceID     *pInterfaceIds,
+	const SLboolean         * pInterfaceRequired
+);
+
+SL_API SLresult SLAPIENTRY slQueryNumSupportedEngineInterfaces(
+	SLuint32 * pNumSupportedInterfaces
+);
+
+SL_API SLresult SLAPIENTRY slQuerySupportedEngineInterfaces(
+	SLuint32 index,
+	SLInterfaceID * pInterfaceId
+);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* OPENSL_ES_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Android.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Android.h
new file mode 100644
index 0000000..f295518
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Android.h
@@ -0,0 +1,349 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENSL_ES_ANDROID_H_
+#define OPENSL_ES_ANDROID_H_
+
+#include "OpenSLES_AndroidConfiguration.h"
+#include "OpenSLES_AndroidMetadata.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android common types                                                      */
+/*---------------------------------------------------------------------------*/
+
+typedef sl_int64_t             SLAint64;          /* 64 bit signed integer   */
+
+typedef sl_uint64_t            SLAuint64;         /* 64 bit unsigned integer */
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect interface                                                  */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
+
+/** Android Effect interface methods */
+
+struct SLAndroidEffectItf_;
+typedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
+
+struct SLAndroidEffectItf_ {
+
+    SLresult (*CreateEffect) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId);
+
+    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId);
+
+    SLresult (*SetEnabled) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLboolean enabled);
+
+    SLresult (*IsEnabled) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLboolean *pEnabled);
+
+    SLresult (*SendCommand) (SLAndroidEffectItf self,
+            SLInterfaceID effectImplementationId,
+            SLuint32 command,
+            SLuint32 commandSize,
+            void *pCommandData,
+            SLuint32 *replySize,
+            void *pReplyData);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect Send interface                                             */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
+
+/** Android Effect Send interface methods */
+
+struct SLAndroidEffectSendItf_;
+typedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
+
+struct SLAndroidEffectSendItf_ {
+    SLresult (*EnableEffectSend) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLboolean enable,
+        SLmillibel initialLevel
+    );
+    SLresult (*IsEnabled) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLboolean *pEnable
+    );
+    SLresult (*SetDirectLevel) (
+        SLAndroidEffectSendItf self,
+        SLmillibel directLevel
+    );
+    SLresult (*GetDirectLevel) (
+        SLAndroidEffectSendItf self,
+        SLmillibel *pDirectLevel
+    );
+    SLresult (*SetSendLevel) (
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLmillibel sendLevel
+    );
+    SLresult (*GetSendLevel)(
+        SLAndroidEffectSendItf self,
+        SLInterfaceID effectImplementationId,
+        SLmillibel *pSendLevel
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Effect Capabilities interface                                     */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
+
+/** Android Effect Capabilities interface methods */
+
+struct SLAndroidEffectCapabilitiesItf_;
+typedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
+
+struct SLAndroidEffectCapabilitiesItf_ {
+
+    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
+            SLuint32 *pNumSupportedEffects);
+
+
+    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
+            SLuint32 index,
+            SLInterfaceID *pEffectType,
+            SLInterfaceID *pEffectImplementation,
+            SLchar *pName,
+            SLuint16 *pNameSize);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Configuration interface                                           */
+/*---------------------------------------------------------------------------*/
+extern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
+
+/** Android Configuration interface methods */
+
+struct SLAndroidConfigurationItf_;
+typedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
+
+struct SLAndroidConfigurationItf_ {
+
+    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
+            const SLchar *configKey,
+            const void *pConfigValue,
+            SLuint32 valueSize);
+
+    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
+           const SLchar *configKey,
+           SLuint32 *pValueSize,
+           void *pConfigValue
+       );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Simple Buffer Queue Interface                                     */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
+
+struct SLAndroidSimpleBufferQueueItf_;
+typedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
+
+typedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
+	SLAndroidSimpleBufferQueueItf caller,
+	void *pContext
+);
+
+/** Android simple buffer queue state **/
+
+typedef struct SLAndroidSimpleBufferQueueState_ {
+	SLuint32	count;
+	SLuint32	index;
+} SLAndroidSimpleBufferQueueState;
+
+
+struct SLAndroidSimpleBufferQueueItf_ {
+	SLresult (*Enqueue) (
+		SLAndroidSimpleBufferQueueItf self,
+		const void *pBuffer,
+		SLuint32 size
+	);
+	SLresult (*Clear) (
+		SLAndroidSimpleBufferQueueItf self
+	);
+	SLresult (*GetState) (
+		SLAndroidSimpleBufferQueueItf self,
+		SLAndroidSimpleBufferQueueState *pState
+	);
+	SLresult (*RegisterCallback) (
+		SLAndroidSimpleBufferQueueItf self,
+		slAndroidSimpleBufferQueueCallback callback,
+		void* pContext
+	);
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Interface                                            */
+/*---------------------------------------------------------------------------*/
+
+extern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE;
+
+struct SLAndroidBufferQueueItf_;
+typedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
+
+#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
+#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
+#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
+#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
+#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
+
+#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
+#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
+#if 0   // reserved for future use
+#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
+#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
+#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
+#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
+#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
+#endif
+
+typedef struct SLAndroidBufferItem_ {
+    SLuint32 itemKey;  // identifies the item
+    SLuint32 itemSize;
+    SLuint8  itemData[0];
+} SLAndroidBufferItem;
+
+typedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
+    SLAndroidBufferQueueItf caller,/* input */
+    void *pCallbackContext,        /* input */
+    void *pBufferContext,          /* input */
+    void *pBufferData,             /* input */
+    SLuint32 dataSize,             /* input */
+    SLuint32 dataUsed,             /* input */
+    const SLAndroidBufferItem *pItems,/* input */
+    SLuint32 itemsLength           /* input */
+);
+
+typedef struct SLAndroidBufferQueueState_ {
+    SLuint32    count;
+    SLuint32    index;
+} SLAndroidBufferQueueState;
+
+struct SLAndroidBufferQueueItf_ {
+    SLresult (*RegisterCallback) (
+        SLAndroidBufferQueueItf self,
+        slAndroidBufferQueueCallback callback,
+        void* pCallbackContext
+    );
+
+    SLresult (*Clear) (
+        SLAndroidBufferQueueItf self
+    );
+
+    SLresult (*Enqueue) (
+        SLAndroidBufferQueueItf self,
+        void *pBufferContext,
+        void *pData,
+        SLuint32 dataLength,
+        const SLAndroidBufferItem *pItems,
+        SLuint32 itemsLength
+    );
+
+    SLresult (*GetState) (
+        SLAndroidBufferQueueItf self,
+        SLAndroidBufferQueueState *pState
+    );
+
+    SLresult (*SetCallbackEventsMask) (
+            SLAndroidBufferQueueItf self,
+            SLuint32 eventFlags
+    );
+
+    SLresult (*GetCallbackEventsMask) (
+            SLAndroidBufferQueueItf self,
+            SLuint32 *pEventFlags
+    );
+};
+
+
+/*---------------------------------------------------------------------------*/
+/* Android File Descriptor Data Locator                                      */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
+
+#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
+
+/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
+typedef struct SLDataLocator_AndroidFD_ {
+    SLuint32        locatorType;
+    SLint32         fd;
+    SLAint64        offset;
+    SLAint64        length;
+} SLDataLocator_AndroidFD;
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Android Simple Buffer Queue Data Locator                          */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
+
+/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
+typedef struct SLDataLocator_AndroidSimpleBufferQueue {
+	SLuint32	locatorType;
+	SLuint32	numBuffers;
+} SLDataLocator_AndroidSimpleBufferQueue;
+
+
+/*---------------------------------------------------------------------------*/
+/* Android Buffer Queue Data Locator                                         */
+/*---------------------------------------------------------------------------*/
+
+/** Addendum to Data locator macros  */
+#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
+
+/** Android Buffer Queue-based data locator definition,
+ *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
+typedef struct SLDataLocator_AndroidBufferQueue_ {
+    SLuint32    locatorType;
+    SLuint32    numBuffers;
+} SLDataLocator_AndroidBufferQueue;
+
+/**
+ * MIME types required for data in Android Buffer Queues
+ */
+#define SL_ANDROID_MIME_AACADTS            ((SLchar *) "audio/vnd.android.aac-adts")
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROID_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidConfiguration.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidConfiguration.h
new file mode 100644
index 0000000..01f460d
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidConfiguration.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENSL_ES_ANDROIDCONFIGURATION_H_
+#define OPENSL_ES_ANDROIDCONFIGURATION_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android AudioRecorder configuration                                       */
+/*---------------------------------------------------------------------------*/
+
+/** Audio recording preset */
+/** Audio recording preset key */
+#define SL_ANDROID_KEY_RECORDING_PRESET ((const SLchar*) "androidRecordingPreset")
+/** Audio recording preset values */
+/**   preset "none" cannot be set, it is used to indicate the current settings
+ *     do not match any of the presets. */
+#define SL_ANDROID_RECORDING_PRESET_NONE                ((SLuint32) 0x00000000)
+/**   generic recording configuration on the platform */
+#define SL_ANDROID_RECORDING_PRESET_GENERIC             ((SLuint32) 0x00000001)
+/**   uses the microphone audio source with the same orientation as the camera
+ *     if available, the main device microphone otherwise */
+#define SL_ANDROID_RECORDING_PRESET_CAMCORDER           ((SLuint32) 0x00000002)
+/**   uses the main microphone tuned for voice recognition */
+#define SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION   ((SLuint32) 0x00000003)
+/**   uses the main microphone tuned for audio communications */
+#define SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION ((SLuint32) 0x00000004)
+
+/*---------------------------------------------------------------------------*/
+/* Android AudioPlayer configuration                                         */
+/*---------------------------------------------------------------------------*/
+
+/** Audio playback stream type */
+/** Audio playback stream type key */
+#define SL_ANDROID_KEY_STREAM_TYPE ((const SLchar*) "androidPlaybackStreamType")
+
+/** Audio playback stream type  values */
+/*      same as android.media.AudioManager.STREAM_VOICE_CALL */
+#define SL_ANDROID_STREAM_VOICE        ((SLint32) 0x00000000)
+/*      same as android.media.AudioManager.STREAM_SYSTEM */
+#define SL_ANDROID_STREAM_SYSTEM       ((SLint32) 0x00000001)
+/*      same as android.media.AudioManager.STREAM_RING */
+#define SL_ANDROID_STREAM_RING         ((SLint32) 0x00000002)
+/*      same as android.media.AudioManager.STREAM_MUSIC */
+#define SL_ANDROID_STREAM_MEDIA        ((SLint32) 0x00000003)
+/*      same as android.media.AudioManager.STREAM_ALARM */
+#define SL_ANDROID_STREAM_ALARM        ((SLint32) 0x00000004)
+/*      same as android.media.AudioManager.STREAM_NOTIFICATION */
+#define SL_ANDROID_STREAM_NOTIFICATION ((SLint32) 0x00000005)
+
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROIDCONFIGURATION_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidMetadata.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidMetadata.h
new file mode 100644
index 0000000..01e33b8
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_AndroidMetadata.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENSL_ES_ANDROIDMETADATA_H_
+#define OPENSL_ES_ANDROIDMETADATA_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*/
+/* Android metadata keys                                                     */
+/*---------------------------------------------------------------------------*/
+
+/**
+ * Additional metadata keys to be used in SLMetadataExtractionItf:
+ *   the ANDROID_KEY_PCMFORMAT_* keys follow the fields of the SLDataFormat_PCM struct, and as such
+ *   all values corresponding to these keys are of SLuint32 type, and are defined as the fields
+ *   of the same name in SLDataFormat_PCM.  The exception is that sample rate is expressed here
+ *   in Hz units, rather than in milliHz units.
+ */
+#define ANDROID_KEY_PCMFORMAT_NUMCHANNELS   "AndroidPcmFormatNumChannels"
+#define ANDROID_KEY_PCMFORMAT_SAMPLERATE    "AndroidPcmFormatSampleRate"
+#define ANDROID_KEY_PCMFORMAT_BITSPERSAMPLE "AndroidPcmFormatBitsPerSample"
+#define ANDROID_KEY_PCMFORMAT_CONTAINERSIZE "AndroidPcmFormatContainerSize"
+#define ANDROID_KEY_PCMFORMAT_CHANNELMASK   "AndroidPcmFormatChannelMask"
+#define ANDROID_KEY_PCMFORMAT_ENDIANNESS    "AndroidPcmFormatEndianness"
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* OPENSL_ES_ANDROIDMETADATA_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Platform.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Platform.h
new file mode 100644
index 0000000..527693d
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/SLES/OpenSLES_Platform.h
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ *
+ * OpenSLES_Platform.h - OpenSL ES version 1.0
+ *
+ */
+
+/****************************************************************************/
+/* NOTE: This file contains definitions for the base types and the          */
+/* SLAPIENTRY macro. This file **WILL NEED TO BE EDITED** to provide        */
+/* the correct definitions specific to the platform being used.             */
+/****************************************************************************/
+
+#ifndef _OPENSLES_PLATFORM_H_
+#define _OPENSLES_PLATFORM_H_
+
+typedef unsigned char               sl_uint8_t;
+typedef signed char                 sl_int8_t;
+typedef unsigned short              sl_uint16_t;
+typedef signed short                sl_int16_t;
+typedef unsigned int /*long*/       sl_uint32_t;
+typedef signed int /*long*/         sl_int32_t;
+typedef long long                   sl_int64_t;
+typedef unsigned long long          sl_uint64_t;
+
+#ifndef SL_API
+#ifdef __GNUC__
+#define SL_API                 /* override per-platform */
+#else
+#define SL_API __declspec(dllimport)
+#endif
+#endif
+
+#ifndef SLAPIENTRY
+#define SLAPIENTRY
+#endif
+
+#endif /* _OPENSLES_PLATFORM_H_ */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h
new file mode 100644
index 0000000..0c50fc3
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _ALLOCA_H
+#define _ALLOCA_H
+
+#define alloca(size)   __builtin_alloca(size)
+
+#endif /* _ALLOCA_H */
+
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/api-level.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/api-level.h
new file mode 100644
index 0000000..9e4ac51
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/api-level.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef ANDROID_API_LEVEL_H
+#define ANDROID_API_LEVEL_H
+
+#define __ANDROID_API__ 14
+
+#endif /* ANDROID_API_LEVEL_H */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager.h
new file mode 100644
index 0000000..57dd7cb
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_ASSET_MANAGER_H
+#define ANDROID_ASSET_MANAGER_H
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct AAssetManager;
+typedef struct AAssetManager AAssetManager;
+
+struct AAssetDir;
+typedef struct AAssetDir AAssetDir;
+
+struct AAsset;
+typedef struct AAsset AAsset;
+
+/* Available modes for opening assets */
+enum {
+    AASSET_MODE_UNKNOWN      = 0,
+    AASSET_MODE_RANDOM       = 1,
+    AASSET_MODE_STREAMING    = 2,
+    AASSET_MODE_BUFFER       = 3
+};
+
+
+/**
+ * Open the named directory within the asset hierarchy.  The directory can then
+ * be inspected with the AAssetDir functions.  To open the top-level directory,
+ * pass in "" as the dirName.
+ *
+ * The object returned here should be freed by calling AAssetDir_close().
+ */
+AAssetDir* AAssetManager_openDir(AAssetManager* mgr, const char* dirName);
+
+/**
+ * Open an asset.
+ *
+ * The object returned here should be freed by calling AAsset_close().
+ */
+AAsset* AAssetManager_open(AAssetManager* mgr, const char* filename, int mode);
+
+/**
+ * Iterate over the files in an asset directory.  A NULL string is returned
+ * when all the file names have been returned.
+ *
+ * The returned file name is suitable for passing to AAssetManager_open().
+ *
+ * The string returned here is owned by the AssetDir implementation and is not
+ * guaranteed to remain valid if any other calls are made on this AAssetDir
+ * instance.
+ */
+const char* AAssetDir_getNextFileName(AAssetDir* assetDir);
+
+/**
+ * Reset the iteration state of AAssetDir_getNextFileName() to the beginning.
+ */
+void AAssetDir_rewind(AAssetDir* assetDir);
+
+/**
+ * Close an opened AAssetDir, freeing any related resources.
+ */
+void AAssetDir_close(AAssetDir* assetDir);
+
+/**
+ * Attempt to read 'count' bytes of data from the current offset.
+ *
+ * Returns the number of bytes read, zero on EOF, or < 0 on error.
+ */
+int AAsset_read(AAsset* asset, void* buf, size_t count);
+
+/**
+ * Seek to the specified offset within the asset data.  'whence' uses the
+ * same constants as lseek()/fseek().
+ *
+ * Returns the new position on success, or (off_t) -1 on error.
+ */
+off_t AAsset_seek(AAsset* asset, off_t offset, int whence);
+
+/**
+ * Close the asset, freeing all associated resources.
+ */
+void AAsset_close(AAsset* asset);
+
+/**
+ * Get a pointer to a buffer holding the entire contents of the assset.
+ *
+ * Returns NULL on failure.
+ */
+const void* AAsset_getBuffer(AAsset* asset);
+
+/**
+ * Report the total size of the asset data.
+ */
+off_t AAsset_getLength(AAsset* asset);
+
+/**
+ * Report the total amount of asset data that can be read from the current position.
+ */
+off_t AAsset_getRemainingLength(AAsset* asset);
+
+/**
+ * Open a new file descriptor that can be used to read the asset data.
+ *
+ * Returns < 0 if direct fd access is not possible (for example, if the asset is
+ * compressed).
+ */
+int AAsset_openFileDescriptor(AAsset* asset, off_t* outStart, off_t* outLength);
+
+/**
+ * Returns whether this asset's internal buffer is allocated in ordinary RAM (i.e. not
+ * mmapped).
+ */
+int AAsset_isAllocated(AAsset* asset);
+
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif      // ANDROID_ASSET_MANAGER_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager_jni.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager_jni.h
new file mode 100644
index 0000000..aec2d3c
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/asset_manager_jni.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_ASSET_MANAGER_JNI_H
+#define ANDROID_ASSET_MANAGER_JNI_H
+
+#include <android/asset_manager.h>
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Given a Dalvik AssetManager object, obtain the corresponding native AAssetManager
+ * object.  Note that the caller is responsible for obtaining and holding a VM reference
+ * to the jobject to prevent its being garbage collected while the native object is
+ * in use.
+ */
+AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif      // ANDROID_ASSET_MANAGER_JNI_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/bitmap.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/bitmap.h
new file mode 100644
index 0000000..160e34a
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/bitmap.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_BITMAP_H
+#define ANDROID_BITMAP_H
+
+#include <sys/cdefs.h>
+#include <stdint.h>
+#include <jni.h>
+
+__BEGIN_DECLS
+
+#define ANDROID_BITMAP_RESUT_SUCCESS            0
+#define ANDROID_BITMAP_RESULT_BAD_PARAMETER     -1
+#define ANDROID_BITMAP_RESULT_JNI_EXCEPTION     -2
+#define ANDROID_BITMAP_RESULT_ALLOCATION_FAILED -3
+
+enum AndroidBitmapFormat {
+    ANDROID_BITMAP_FORMAT_NONE      = 0,
+    ANDROID_BITMAP_FORMAT_RGBA_8888 = 1,
+    ANDROID_BITMAP_FORMAT_RGB_565   = 4,
+    ANDROID_BITMAP_FORMAT_RGBA_4444 = 7,
+    ANDROID_BITMAP_FORMAT_A_8       = 8,
+};
+
+typedef struct {
+    uint32_t    width;
+    uint32_t    height;
+    uint32_t    stride;
+    int32_t     format;
+    uint32_t    flags;      // 0 for now
+} AndroidBitmapInfo;
+
+/**
+ * Given a java bitmap object, fill out the AndroidBitmap struct for it.
+ * If the call fails, the info parameter will be ignored
+ */
+int AndroidBitmap_getInfo(JNIEnv* env, jobject jbitmap,
+                          AndroidBitmapInfo* info);
+
+/**
+ * Given a java bitmap object, attempt to lock the pixel address.
+ * Locking will ensure that the memory for the pixels will not move
+ * until the unlockPixels call, and ensure that, if the pixels had been
+ * previously purged, they will have been restored.
+ *
+ * If this call succeeds, it must be balanced by a call to
+ * AndroidBitmap_unlockPixels, after which time the address of the pixels should
+ * no longer be used.
+ *
+ * If this succeeds, *addrPtr will be set to the pixel address. If the call
+ * fails, addrPtr will be ignored.
+ */
+int AndroidBitmap_lockPixels(JNIEnv* env, jobject jbitmap, void** addrPtr);
+
+/**
+ * Call this to balanace a successful call to AndroidBitmap_lockPixels
+ */
+int AndroidBitmap_unlockPixels(JNIEnv* env, jobject jbitmap);
+
+__END_DECLS
+
+#endif /* ANDROID_BITMAP_H */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/configuration.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/configuration.h
new file mode 100644
index 0000000..99e8f97
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/configuration.h
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_CONFIGURATION_H
+#define ANDROID_CONFIGURATION_H
+
+#include <android/asset_manager.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct AConfiguration;
+typedef struct AConfiguration AConfiguration;
+
+enum {
+    ACONFIGURATION_ORIENTATION_ANY  = 0x0000,
+    ACONFIGURATION_ORIENTATION_PORT = 0x0001,
+    ACONFIGURATION_ORIENTATION_LAND = 0x0002,
+    ACONFIGURATION_ORIENTATION_SQUARE = 0x0003,
+
+    ACONFIGURATION_TOUCHSCREEN_ANY  = 0x0000,
+    ACONFIGURATION_TOUCHSCREEN_NOTOUCH  = 0x0001,
+    ACONFIGURATION_TOUCHSCREEN_STYLUS  = 0x0002,
+    ACONFIGURATION_TOUCHSCREEN_FINGER  = 0x0003,
+
+    ACONFIGURATION_DENSITY_DEFAULT = 0,
+    ACONFIGURATION_DENSITY_LOW = 120,
+    ACONFIGURATION_DENSITY_MEDIUM = 160,
+    ACONFIGURATION_DENSITY_HIGH = 240,
+    ACONFIGURATION_DENSITY_NONE = 0xffff,
+
+    ACONFIGURATION_KEYBOARD_ANY  = 0x0000,
+    ACONFIGURATION_KEYBOARD_NOKEYS  = 0x0001,
+    ACONFIGURATION_KEYBOARD_QWERTY  = 0x0002,
+    ACONFIGURATION_KEYBOARD_12KEY  = 0x0003,
+
+    ACONFIGURATION_NAVIGATION_ANY  = 0x0000,
+    ACONFIGURATION_NAVIGATION_NONAV  = 0x0001,
+    ACONFIGURATION_NAVIGATION_DPAD  = 0x0002,
+    ACONFIGURATION_NAVIGATION_TRACKBALL  = 0x0003,
+    ACONFIGURATION_NAVIGATION_WHEEL  = 0x0004,
+
+    ACONFIGURATION_KEYSHIDDEN_ANY = 0x0000,
+    ACONFIGURATION_KEYSHIDDEN_NO = 0x0001,
+    ACONFIGURATION_KEYSHIDDEN_YES = 0x0002,
+    ACONFIGURATION_KEYSHIDDEN_SOFT = 0x0003,
+
+    ACONFIGURATION_NAVHIDDEN_ANY = 0x0000,
+    ACONFIGURATION_NAVHIDDEN_NO = 0x0001,
+    ACONFIGURATION_NAVHIDDEN_YES = 0x0002,
+
+    ACONFIGURATION_SCREENSIZE_ANY  = 0x00,
+    ACONFIGURATION_SCREENSIZE_SMALL = 0x01,
+    ACONFIGURATION_SCREENSIZE_NORMAL = 0x02,
+    ACONFIGURATION_SCREENSIZE_LARGE = 0x03,
+    ACONFIGURATION_SCREENSIZE_XLARGE = 0x04,
+
+    ACONFIGURATION_SCREENLONG_ANY = 0x00,
+    ACONFIGURATION_SCREENLONG_NO = 0x1,
+    ACONFIGURATION_SCREENLONG_YES = 0x2,
+
+    ACONFIGURATION_UI_MODE_TYPE_ANY = 0x00,
+    ACONFIGURATION_UI_MODE_TYPE_NORMAL = 0x01,
+    ACONFIGURATION_UI_MODE_TYPE_DESK = 0x02,
+    ACONFIGURATION_UI_MODE_TYPE_CAR = 0x03,
+
+    ACONFIGURATION_UI_MODE_NIGHT_ANY = 0x00,
+    ACONFIGURATION_UI_MODE_NIGHT_NO = 0x1,
+    ACONFIGURATION_UI_MODE_NIGHT_YES = 0x2,
+
+    ACONFIGURATION_MCC = 0x0001,
+    ACONFIGURATION_MNC = 0x0002,
+    ACONFIGURATION_LOCALE = 0x0004,
+    ACONFIGURATION_TOUCHSCREEN = 0x0008,
+    ACONFIGURATION_KEYBOARD = 0x0010,
+    ACONFIGURATION_KEYBOARD_HIDDEN = 0x0020,
+    ACONFIGURATION_NAVIGATION = 0x0040,
+    ACONFIGURATION_ORIENTATION = 0x0080,
+    ACONFIGURATION_DENSITY = 0x0100,
+    ACONFIGURATION_SCREEN_SIZE = 0x0200,
+    ACONFIGURATION_VERSION = 0x0400,
+    ACONFIGURATION_SCREEN_LAYOUT = 0x0800,
+    ACONFIGURATION_UI_MODE = 0x1000,
+};
+
+/**
+ * Create a new AConfiguration, initialized with no values set.
+ */
+AConfiguration* AConfiguration_new();
+
+/**
+ * Free an AConfiguration that was previously created with
+ * AConfiguration_new().
+ */
+void AConfiguration_delete(AConfiguration* config);
+
+/**
+ * Create and return a new AConfiguration based on the current configuration in
+ * use in the given AssetManager.
+ */
+void AConfiguration_fromAssetManager(AConfiguration* out, AAssetManager* am);
+
+/**
+ * Copy the contents of 'src' to 'dest'.
+ */
+void AConfiguration_copy(AConfiguration* dest, AConfiguration* src);
+
+/**
+ * Return the current MCC set in the configuration.  0 if not set.
+ */
+int32_t AConfiguration_getMcc(AConfiguration* config);
+
+/**
+ * Set the current MCC in the configuration.  0 to clear.
+ */
+void AConfiguration_setMcc(AConfiguration* config, int32_t mcc);
+
+/**
+ * Return the current MNC set in the configuration.  0 if not set.
+ */
+int32_t AConfiguration_getMnc(AConfiguration* config);
+
+/**
+ * Set the current MNC in the configuration.  0 to clear.
+ */
+void AConfiguration_setMnc(AConfiguration* config, int32_t mnc);
+
+/**
+ * Return the current language code set in the configuration.  The output will
+ * be filled with an array of two characters.  They are not 0-terminated.  If
+ * a language is not set, they will be 0.
+ */
+void AConfiguration_getLanguage(AConfiguration* config, char* outLanguage);
+
+/**
+ * Set the current language code in the configuration, from the first two
+ * characters in the string.
+ */
+void AConfiguration_setLanguage(AConfiguration* config, const char* language);
+
+/**
+ * Return the current country code set in the configuration.  The output will
+ * be filled with an array of two characters.  They are not 0-terminated.  If
+ * a country is not set, they will be 0.
+ */
+void AConfiguration_getCountry(AConfiguration* config, char* outCountry);
+
+/**
+ * Set the current country code in the configuration, from the first two
+ * characters in the string.
+ */
+void AConfiguration_setCountry(AConfiguration* config, const char* country);
+
+/**
+ * Return the current ACONFIGURATION_ORIENTATION_* set in the configuration.
+ */
+int32_t AConfiguration_getOrientation(AConfiguration* config);
+
+/**
+ * Set the current orientation in the configuration.
+ */
+void AConfiguration_setOrientation(AConfiguration* config, int32_t orientation);
+
+/**
+ * Return the current ACONFIGURATION_TOUCHSCREEN_* set in the configuration.
+ */
+int32_t AConfiguration_getTouchscreen(AConfiguration* config);
+
+/**
+ * Set the current touchscreen in the configuration.
+ */
+void AConfiguration_setTouchscreen(AConfiguration* config, int32_t touchscreen);
+
+/**
+ * Return the current ACONFIGURATION_DENSITY_* set in the configuration.
+ */
+int32_t AConfiguration_getDensity(AConfiguration* config);
+
+/**
+ * Set the current density in the configuration.
+ */
+void AConfiguration_setDensity(AConfiguration* config, int32_t density);
+
+/**
+ * Return the current ACONFIGURATION_KEYBOARD_* set in the configuration.
+ */
+int32_t AConfiguration_getKeyboard(AConfiguration* config);
+
+/**
+ * Set the current keyboard in the configuration.
+ */
+void AConfiguration_setKeyboard(AConfiguration* config, int32_t keyboard);
+
+/**
+ * Return the current ACONFIGURATION_NAVIGATION_* set in the configuration.
+ */
+int32_t AConfiguration_getNavigation(AConfiguration* config);
+
+/**
+ * Set the current navigation in the configuration.
+ */
+void AConfiguration_setNavigation(AConfiguration* config, int32_t navigation);
+
+/**
+ * Return the current ACONFIGURATION_KEYSHIDDEN_* set in the configuration.
+ */
+int32_t AConfiguration_getKeysHidden(AConfiguration* config);
+
+/**
+ * Set the current keys hidden in the configuration.
+ */
+void AConfiguration_setKeysHidden(AConfiguration* config, int32_t keysHidden);
+
+/**
+ * Return the current ACONFIGURATION_NAVHIDDEN_* set in the configuration.
+ */
+int32_t AConfiguration_getNavHidden(AConfiguration* config);
+
+/**
+ * Set the current nav hidden in the configuration.
+ */
+void AConfiguration_setNavHidden(AConfiguration* config, int32_t navHidden);
+
+/**
+ * Return the current SDK (API) version set in the configuration.
+ */
+int32_t AConfiguration_getSdkVersion(AConfiguration* config);
+
+/**
+ * Set the current SDK version in the configuration.
+ */
+void AConfiguration_setSdkVersion(AConfiguration* config, int32_t sdkVersion);
+
+/**
+ * Return the current ACONFIGURATION_SCREENSIZE_* set in the configuration.
+ */
+int32_t AConfiguration_getScreenSize(AConfiguration* config);
+
+/**
+ * Set the current screen size in the configuration.
+ */
+void AConfiguration_setScreenSize(AConfiguration* config, int32_t screenSize);
+
+/**
+ * Return the current ACONFIGURATION_SCREENLONG_* set in the configuration.
+ */
+int32_t AConfiguration_getScreenLong(AConfiguration* config);
+
+/**
+ * Set the current screen long in the configuration.
+ */
+void AConfiguration_setScreenLong(AConfiguration* config, int32_t screenLong);
+
+/**
+ * Return the current ACONFIGURATION_UI_MODE_TYPE_* set in the configuration.
+ */
+int32_t AConfiguration_getUiModeType(AConfiguration* config);
+
+/**
+ * Set the current UI mode type in the configuration.
+ */
+void AConfiguration_setUiModeType(AConfiguration* config, int32_t uiModeType);
+
+/**
+ * Return the current ACONFIGURATION_UI_MODE_NIGHT_* set in the configuration.
+ */
+int32_t AConfiguration_getUiModeNight(AConfiguration* config);
+
+/**
+ * Set the current UI mode night in the configuration.
+ */
+void AConfiguration_setUiModeNight(AConfiguration* config, int32_t uiModeNight);
+
+/**
+ * Perform a diff between two configurations.  Returns a bit mask of
+ * ACONFIGURATION_* constants, each bit set meaning that configuration element
+ * is different between them.
+ */
+int32_t AConfiguration_diff(AConfiguration* config1, AConfiguration* config2);
+
+/**
+ * Determine whether 'base' is a valid configuration for use within the
+ * environment 'requested'.  Returns 0 if there are any values in 'base'
+ * that conflict with 'requested'.  Returns 1 if it does not conflict.
+ */
+int32_t AConfiguration_match(AConfiguration* base, AConfiguration* requested);
+
+/**
+ * Determine whether the configuration in 'test' is better than the existing
+ * configuration in 'base'.  If 'requested' is non-NULL, this decision is based
+ * on the overall configuration given there.  If it is NULL, this decision is
+ * simply based on which configuration is more specific.  Returns non-0 if
+ * 'test' is better than 'base'.
+ *
+ * This assumes you have already filtered the configurations with
+ * AConfiguration_match().
+ */
+int32_t AConfiguration_isBetterThan(AConfiguration* base, AConfiguration* test,
+        AConfiguration* requested);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif // ANDROID_CONFIGURATION_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/input.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/input.h
new file mode 100644
index 0000000..9449574
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/input.h
@@ -0,0 +1,688 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ANDROID_INPUT_H
+#define _ANDROID_INPUT_H
+
+/******************************************************************
+ *
+ * IMPORTANT NOTICE:
+ *
+ *   This file is part of Android's set of stable system headers
+ *   exposed by the Android NDK (Native Development Kit).
+ *
+ *   Third-party source AND binary code relies on the definitions
+ *   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
+ *
+ *   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
+ *   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
+ *   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
+ *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
+ */
+
+/*
+ * Structures and functions to receive and process input events in
+ * native code.
+ *
+ * NOTE: These functions MUST be implemented by /system/lib/libui.so
+ */
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <android/keycodes.h>
+#include <android/looper.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Key states (may be returned by queries about the current state of a
+ * particular key code, scan code or switch).
+ */
+enum {
+    /* The key state is unknown or the requested key itself is not supported. */
+    AKEY_STATE_UNKNOWN = -1,
+
+    /* The key is up. */
+    AKEY_STATE_UP = 0,
+
+    /* The key is down. */
+    AKEY_STATE_DOWN = 1,
+
+    /* The key is down but is a virtual key press that is being emulated by the system. */
+    AKEY_STATE_VIRTUAL = 2
+};
+
+/*
+ * Meta key / modifer state.
+ */
+enum {
+    /* No meta keys are pressed. */
+    AMETA_NONE = 0,
+
+    /* This mask is used to check whether one of the ALT meta keys is pressed. */
+    AMETA_ALT_ON = 0x02,
+
+    /* This mask is used to check whether the left ALT meta key is pressed. */
+    AMETA_ALT_LEFT_ON = 0x10,
+
+    /* This mask is used to check whether the right ALT meta key is pressed. */
+    AMETA_ALT_RIGHT_ON = 0x20,
+
+    /* This mask is used to check whether one of the SHIFT meta keys is pressed. */
+    AMETA_SHIFT_ON = 0x01,
+
+    /* This mask is used to check whether the left SHIFT meta key is pressed. */
+    AMETA_SHIFT_LEFT_ON = 0x40,
+
+    /* This mask is used to check whether the right SHIFT meta key is pressed. */
+    AMETA_SHIFT_RIGHT_ON = 0x80,
+
+    /* This mask is used to check whether the SYM meta key is pressed. */
+    AMETA_SYM_ON = 0x04
+};
+
+/*
+ * Input events.
+ *
+ * Input events are opaque structures.  Use the provided accessors functions to
+ * read their properties.
+ */
+struct AInputEvent;
+typedef struct AInputEvent AInputEvent;
+
+/*
+ * Input event types.
+ */
+enum {
+    /* Indicates that the input event is a key event. */
+    AINPUT_EVENT_TYPE_KEY = 1,
+
+    /* Indicates that the input event is a motion event. */
+    AINPUT_EVENT_TYPE_MOTION = 2
+};
+
+/*
+ * Key event actions.
+ */
+enum {
+    /* The key has been pressed down. */
+    AKEY_EVENT_ACTION_DOWN = 0,
+
+    /* The key has been released. */
+    AKEY_EVENT_ACTION_UP = 1,
+
+    /* Multiple duplicate key events have occurred in a row, or a complex string is
+     * being delivered.  The repeat_count property of the key event contains the number
+     * of times the given key code should be executed.
+     */
+    AKEY_EVENT_ACTION_MULTIPLE = 2
+};
+
+/*
+ * Key event flags.
+ */
+enum {
+    /* This mask is set if the device woke because of this key event. */
+    AKEY_EVENT_FLAG_WOKE_HERE = 0x1,
+
+    /* This mask is set if the key event was generated by a software keyboard. */
+    AKEY_EVENT_FLAG_SOFT_KEYBOARD = 0x2,
+
+    /* This mask is set if we don't want the key event to cause us to leave touch mode. */
+    AKEY_EVENT_FLAG_KEEP_TOUCH_MODE = 0x4,
+
+    /* This mask is set if an event was known to come from a trusted part
+     * of the system.  That is, the event is known to come from the user,
+     * and could not have been spoofed by a third party component. */
+    AKEY_EVENT_FLAG_FROM_SYSTEM = 0x8,
+
+    /* This mask is used for compatibility, to identify enter keys that are
+     * coming from an IME whose enter key has been auto-labelled "next" or
+     * "done".  This allows TextView to dispatch these as normal enter keys
+     * for old applications, but still do the appropriate action when
+     * receiving them. */
+    AKEY_EVENT_FLAG_EDITOR_ACTION = 0x10,
+
+    /* When associated with up key events, this indicates that the key press
+     * has been canceled.  Typically this is used with virtual touch screen
+     * keys, where the user can slide from the virtual key area on to the
+     * display: in that case, the application will receive a canceled up
+     * event and should not perform the action normally associated with the
+     * key.  Note that for this to work, the application can not perform an
+     * action for a key until it receives an up or the long press timeout has
+     * expired. */
+    AKEY_EVENT_FLAG_CANCELED = 0x20,
+
+    /* This key event was generated by a virtual (on-screen) hard key area.
+     * Typically this is an area of the touchscreen, outside of the regular
+     * display, dedicated to "hardware" buttons. */
+    AKEY_EVENT_FLAG_VIRTUAL_HARD_KEY = 0x40,
+
+    /* This flag is set for the first key repeat that occurs after the
+     * long press timeout. */
+    AKEY_EVENT_FLAG_LONG_PRESS = 0x80,
+
+    /* Set when a key event has AKEY_EVENT_FLAG_CANCELED set because a long
+     * press action was executed while it was down. */
+    AKEY_EVENT_FLAG_CANCELED_LONG_PRESS = 0x100,
+
+    /* Set for AKEY_EVENT_ACTION_UP when this event's key code is still being
+     * tracked from its initial down.  That is, somebody requested that tracking
+     * started on the key down and a long press has not caused
+     * the tracking to be canceled. */
+    AKEY_EVENT_FLAG_TRACKING = 0x200
+};
+
+/*
+ * Motion event actions.
+ */
+
+/* Bit shift for the action bits holding the pointer index as
+ * defined by AMOTION_EVENT_ACTION_POINTER_INDEX_MASK.
+ */
+#define AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT 8
+
+enum {
+    /* Bit mask of the parts of the action code that are the action itself.
+     */
+    AMOTION_EVENT_ACTION_MASK = 0xff,
+
+    /* Bits in the action code that represent a pointer index, used with
+     * AMOTION_EVENT_ACTION_POINTER_DOWN and AMOTION_EVENT_ACTION_POINTER_UP.  Shifting
+     * down by AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT provides the actual pointer
+     * index where the data for the pointer going up or down can be found.
+     */
+    AMOTION_EVENT_ACTION_POINTER_INDEX_MASK  = 0xff00,
+
+    /* A pressed gesture has started, the motion contains the initial starting location.
+     */
+    AMOTION_EVENT_ACTION_DOWN = 0,
+
+    /* A pressed gesture has finished, the motion contains the final release location
+     * as well as any intermediate points since the last down or move event.
+     */
+    AMOTION_EVENT_ACTION_UP = 1,
+
+    /* A change has happened during a press gesture (between AMOTION_EVENT_ACTION_DOWN and
+     * AMOTION_EVENT_ACTION_UP).  The motion contains the most recent point, as well as
+     * any intermediate points since the last down or move event.
+     */
+    AMOTION_EVENT_ACTION_MOVE = 2,
+
+    /* The current gesture has been aborted.
+     * You will not receive any more points in it.  You should treat this as
+     * an up event, but not perform any action that you normally would.
+     */
+    AMOTION_EVENT_ACTION_CANCEL = 3,
+
+    /* A movement has happened outside of the normal bounds of the UI element.
+     * This does not provide a full gesture, but only the initial location of the movement/touch.
+     */
+    AMOTION_EVENT_ACTION_OUTSIDE = 4,
+
+    /* A non-primary pointer has gone down.
+     * The bits in AMOTION_EVENT_ACTION_POINTER_INDEX_MASK indicate which pointer changed.
+     */
+    AMOTION_EVENT_ACTION_POINTER_DOWN = 5,
+
+    /* A non-primary pointer has gone up.
+     * The bits in AMOTION_EVENT_ACTION_POINTER_INDEX_MASK indicate which pointer changed.
+     */
+    AMOTION_EVENT_ACTION_POINTER_UP = 6
+};
+
+/*
+ * Motion event flags.
+ */
+enum {
+    /* This flag indicates that the window that received this motion event is partly
+     * or wholly obscured by another visible window above it.  This flag is set to true
+     * even if the event did not directly pass through the obscured area.
+     * A security sensitive application can check this flag to identify situations in which
+     * a malicious application may have covered up part of its content for the purpose
+     * of misleading the user or hijacking touches.  An appropriate response might be
+     * to drop the suspect touches or to take additional precautions to confirm the user's
+     * actual intent.
+     */
+    AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED = 0x1,
+};
+
+/*
+ * Motion event edge touch flags.
+ */
+enum {
+    /* No edges intersected */
+    AMOTION_EVENT_EDGE_FLAG_NONE = 0,
+
+    /* Flag indicating the motion event intersected the top edge of the screen. */
+    AMOTION_EVENT_EDGE_FLAG_TOP = 0x01,
+
+    /* Flag indicating the motion event intersected the bottom edge of the screen. */
+    AMOTION_EVENT_EDGE_FLAG_BOTTOM = 0x02,
+
+    /* Flag indicating the motion event intersected the left edge of the screen. */
+    AMOTION_EVENT_EDGE_FLAG_LEFT = 0x04,
+
+    /* Flag indicating the motion event intersected the right edge of the screen. */
+    AMOTION_EVENT_EDGE_FLAG_RIGHT = 0x08
+};
+
+/*
+ * Input sources.
+ *
+ * Refer to the documentation on android.view.InputDevice for more details about input sources
+ * and their correct interpretation.
+ */
+enum {
+    AINPUT_SOURCE_CLASS_MASK = 0x000000ff,
+
+    AINPUT_SOURCE_CLASS_BUTTON = 0x00000001,
+    AINPUT_SOURCE_CLASS_POINTER = 0x00000002,
+    AINPUT_SOURCE_CLASS_NAVIGATION = 0x00000004,
+    AINPUT_SOURCE_CLASS_POSITION = 0x00000008,
+};
+
+enum {
+    AINPUT_SOURCE_UNKNOWN = 0x00000000,
+
+    AINPUT_SOURCE_KEYBOARD = 0x00000100 | AINPUT_SOURCE_CLASS_BUTTON,
+    AINPUT_SOURCE_DPAD = 0x00000200 | AINPUT_SOURCE_CLASS_BUTTON,
+    AINPUT_SOURCE_TOUCHSCREEN = 0x00001000 | AINPUT_SOURCE_CLASS_POINTER,
+    AINPUT_SOURCE_MOUSE = 0x00002000 | AINPUT_SOURCE_CLASS_POINTER,
+    AINPUT_SOURCE_TRACKBALL = 0x00010000 | AINPUT_SOURCE_CLASS_NAVIGATION,
+    AINPUT_SOURCE_TOUCHPAD = 0x00100000 | AINPUT_SOURCE_CLASS_POSITION,
+
+    AINPUT_SOURCE_ANY = 0xffffff00,
+};
+
+/*
+ * Keyboard types.
+ *
+ * Refer to the documentation on android.view.InputDevice for more details.
+ */
+enum {
+    AINPUT_KEYBOARD_TYPE_NONE = 0,
+    AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC = 1,
+    AINPUT_KEYBOARD_TYPE_ALPHABETIC = 2,
+};
+
+/*
+ * Constants used to retrieve information about the range of motion for a particular
+ * coordinate of a motion event.
+ *
+ * Refer to the documentation on android.view.InputDevice for more details about input sources
+ * and their correct interpretation.
+ */
+enum {
+    AINPUT_MOTION_RANGE_X = 0,
+    AINPUT_MOTION_RANGE_Y = 1,
+    AINPUT_MOTION_RANGE_PRESSURE = 2,
+    AINPUT_MOTION_RANGE_SIZE = 3,
+    AINPUT_MOTION_RANGE_TOUCH_MAJOR = 4,
+    AINPUT_MOTION_RANGE_TOUCH_MINOR = 5,
+    AINPUT_MOTION_RANGE_TOOL_MAJOR = 6,
+    AINPUT_MOTION_RANGE_TOOL_MINOR = 7,
+    AINPUT_MOTION_RANGE_ORIENTATION = 8,
+};
+
+
+/*
+ * Input event accessors.
+ *
+ * Note that most functions can only be used on input events that are of a given type.
+ * Calling these functions on input events of other types will yield undefined behavior.
+ */
+
+/*** Accessors for all input events. ***/
+
+/* Get the input event type. */
+int32_t AInputEvent_getType(const AInputEvent* event);
+
+/* Get the id for the device that an input event came from.
+ *
+ * Input events can be generated by multiple different input devices.
+ * Use the input device id to obtain information about the input
+ * device that was responsible for generating a particular event.
+ *
+ * An input device id of 0 indicates that the event didn't come from a physical device;
+ * other numbers are arbitrary and you shouldn't depend on the values.
+ * Use the provided input device query API to obtain information about input devices.
+ */
+int32_t AInputEvent_getDeviceId(const AInputEvent* event);
+
+/* Get the input event source. */
+int32_t AInputEvent_getSource(const AInputEvent* event);
+
+/*** Accessors for key events only. ***/
+
+/* Get the key event action. */
+int32_t AKeyEvent_getAction(const AInputEvent* key_event);
+
+/* Get the key event flags. */
+int32_t AKeyEvent_getFlags(const AInputEvent* key_event);
+
+/* Get the key code of the key event.
+ * This is the physical key that was pressed, not the Unicode character. */
+int32_t AKeyEvent_getKeyCode(const AInputEvent* key_event);
+
+/* Get the hardware key id of this key event.
+ * These values are not reliable and vary from device to device. */
+int32_t AKeyEvent_getScanCode(const AInputEvent* key_event);
+
+/* Get the meta key state. */
+int32_t AKeyEvent_getMetaState(const AInputEvent* key_event);
+
+/* Get the repeat count of the event.
+ * For both key up an key down events, this is the number of times the key has
+ * repeated with the first down starting at 0 and counting up from there.  For
+ * multiple key events, this is the number of down/up pairs that have occurred. */
+int32_t AKeyEvent_getRepeatCount(const AInputEvent* key_event);
+
+/* Get the time of the most recent key down event, in the
+ * java.lang.System.nanoTime() time base.  If this is a down event,
+ * this will be the same as eventTime.
+ * Note that when chording keys, this value is the down time of the most recently
+ * pressed key, which may not be the same physical key of this event. */
+int64_t AKeyEvent_getDownTime(const AInputEvent* key_event);
+
+/* Get the time this event occurred, in the
+ * java.lang.System.nanoTime() time base. */
+int64_t AKeyEvent_getEventTime(const AInputEvent* key_event);
+
+/*** Accessors for motion events only. ***/
+
+/* Get the combined motion event action code and pointer index. */
+int32_t AMotionEvent_getAction(const AInputEvent* motion_event);
+
+/* Get the motion event flags. */
+int32_t AMotionEvent_getFlags(const AInputEvent* motion_event);
+
+/* Get the state of any meta / modifier keys that were in effect when the
+ * event was generated. */
+int32_t AMotionEvent_getMetaState(const AInputEvent* motion_event);
+
+/* Get a bitfield indicating which edges, if any, were touched by this motion event.
+ * For touch events, clients can use this to determine if the user's finger was
+ * touching the edge of the display. */
+int32_t AMotionEvent_getEdgeFlags(const AInputEvent* motion_event);
+
+/* Get the time when the user originally pressed down to start a stream of
+ * position events, in the java.lang.System.nanoTime() time base. */
+int64_t AMotionEvent_getDownTime(const AInputEvent* motion_event);
+
+/* Get the time when this specific event was generated,
+ * in the java.lang.System.nanoTime() time base. */
+int64_t AMotionEvent_getEventTime(const AInputEvent* motion_event);
+
+/* Get the X coordinate offset.
+ * For touch events on the screen, this is the delta that was added to the raw
+ * screen coordinates to adjust for the absolute position of the containing windows
+ * and views. */
+float AMotionEvent_getXOffset(const AInputEvent* motion_event);
+
+/* Get the precision of the Y coordinates being reported.
+ * For touch events on the screen, this is the delta that was added to the raw
+ * screen coordinates to adjust for the absolute position of the containing windows
+ * and views. */
+float AMotionEvent_getYOffset(const AInputEvent* motion_event);
+
+/* Get the precision of the X coordinates being reported.
+ * You can multiply this number with an X coordinate sample to find the
+ * actual hardware value of the X coordinate. */
+float AMotionEvent_getXPrecision(const AInputEvent* motion_event);
+
+/* Get the precision of the Y coordinates being reported.
+ * You can multiply this number with a Y coordinate sample to find the
+ * actual hardware value of the Y coordinate. */
+float AMotionEvent_getYPrecision(const AInputEvent* motion_event);
+
+/* Get the number of pointers of data contained in this event.
+ * Always >= 1. */
+size_t AMotionEvent_getPointerCount(const AInputEvent* motion_event);
+
+/* Get the pointer identifier associated with a particular pointer
+ * data index is this event.  The identifier tells you the actual pointer
+ * number associated with the data, accounting for individual pointers
+ * going up and down since the start of the current gesture. */
+int32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the original raw X coordinate of this event.
+ * For touch events on the screen, this is the original location of the event
+ * on the screen, before it had been adjusted for the containing window
+ * and views. */
+float AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the original raw X coordinate of this event.
+ * For touch events on the screen, this is the original location of the event
+ * on the screen, before it had been adjusted for the containing window
+ * and views. */
+float AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current X coordinate of this event for the given pointer index.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current Y coordinate of this event for the given pointer index.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current pressure of this event for the given pointer index.
+ * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure),
+ * although values higher than 1 may be generated depending on the calibration of
+ * the input device. */
+float AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current scaled value of the approximate size for the given pointer index.
+ * This represents some approximation of the area of the screen being
+ * pressed; the actual value in pixels corresponding to the
+ * touch is normalized with the device specific range of values
+ * and scaled to a value between 0 and 1.  The value of size can be used to
+ * determine fat touch events. */
+float AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current length of the major axis of an ellipse that describes the touch area
+ * at the point of contact for the given pointer index. */
+float AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current length of the minor axis of an ellipse that describes the touch area
+ * at the point of contact for the given pointer index. */
+float AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current length of the major axis of an ellipse that describes the size
+ * of the approaching tool for the given pointer index.
+ * The tool area represents the estimated size of the finger or pen that is
+ * touching the device independent of its actual touch area at the point of contact. */
+float AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current length of the minor axis of an ellipse that describes the size
+ * of the approaching tool for the given pointer index.
+ * The tool area represents the estimated size of the finger or pen that is
+ * touching the device independent of its actual touch area at the point of contact. */
+float AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the current orientation of the touch area and tool area in radians clockwise from
+ * vertical for the given pointer index.
+ * An angle of 0 degrees indicates that the major axis of contact is oriented
+ * upwards, is perfectly circular or is of unknown orientation.  A positive angle
+ * indicates that the major axis of contact is oriented to the right.  A negative angle
+ * indicates that the major axis of contact is oriented to the left.
+ * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
+ * (finger pointing fully right). */
+float AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index);
+
+/* Get the number of historical points in this event.  These are movements that
+ * have occurred between this event and the previous event.  This only applies
+ * to AMOTION_EVENT_ACTION_MOVE events -- all other actions will have a size of 0.
+ * Historical samples are indexed from oldest to newest. */
+size_t AMotionEvent_getHistorySize(const AInputEvent* motion_event);
+
+/* Get the time that a historical movement occurred between this event and
+ * the previous event, in the java.lang.System.nanoTime() time base. */
+int64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event,
+        size_t history_index);
+
+/* Get the historical raw X coordinate of this event for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * For touch events on the screen, this is the original location of the event
+ * on the screen, before it had been adjusted for the containing window
+ * and views.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical raw Y coordinate of this event for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * For touch events on the screen, this is the original location of the event
+ * on the screen, before it had been adjusted for the containing window
+ * and views.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical X coordinate of this event for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical Y coordinate of this event for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * Whole numbers are pixels; the value may have a fraction for input devices
+ * that are sub-pixel precise. */
+float AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical pressure of this event for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure),
+ * although values higher than 1 may be generated depending on the calibration of
+ * the input device. */
+float AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the current scaled value of the approximate size for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * This represents some approximation of the area of the screen being
+ * pressed; the actual value in pixels corresponding to the
+ * touch is normalized with the device specific range of values
+ * and scaled to a value between 0 and 1.  The value of size can be used to
+ * determine fat touch events. */
+float AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical length of the major axis of an ellipse that describes the touch area
+ * at the point of contact for the given pointer index that
+ * occurred between this event and the previous motion event. */
+float AMotionEvent_getHistoricalTouchMajor(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical length of the minor axis of an ellipse that describes the touch area
+ * at the point of contact for the given pointer index that
+ * occurred between this event and the previous motion event. */
+float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical length of the major axis of an ellipse that describes the size
+ * of the approaching tool for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * The tool area represents the estimated size of the finger or pen that is
+ * touching the device independent of its actual touch area at the point of contact. */
+float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical length of the minor axis of an ellipse that describes the size
+ * of the approaching tool for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * The tool area represents the estimated size of the finger or pen that is
+ * touching the device independent of its actual touch area at the point of contact. */
+float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+/* Get the historical orientation of the touch area and tool area in radians clockwise from
+ * vertical for the given pointer index that
+ * occurred between this event and the previous motion event.
+ * An angle of 0 degrees indicates that the major axis of contact is oriented
+ * upwards, is perfectly circular or is of unknown orientation.  A positive angle
+ * indicates that the major axis of contact is oriented to the right.  A negative angle
+ * indicates that the major axis of contact is oriented to the left.
+ * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians
+ * (finger pointing fully right). */
+float AMotionEvent_getHistoricalOrientation(const AInputEvent* motion_event, size_t pointer_index,
+        size_t history_index);
+
+
+/*
+ * Input queue
+ *
+ * An input queue is the facility through which you retrieve input
+ * events.
+ */
+struct AInputQueue;
+typedef struct AInputQueue AInputQueue;
+
+/*
+ * Add this input queue to a looper for processing.  See
+ * ALooper_addFd() for information on the ident, callback, and data params.
+ */
+void AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
+        int ident, ALooper_callbackFunc callback, void* data);
+
+/*
+ * Remove the input queue from the looper it is currently attached to.
+ */
+void AInputQueue_detachLooper(AInputQueue* queue);
+
+/*
+ * Returns true if there are one or more events available in the
+ * input queue.  Returns 1 if the queue has events; 0 if
+ * it does not have events; and a negative value if there is an error.
+ */
+int32_t AInputQueue_hasEvents(AInputQueue* queue);
+
+/*
+ * Returns the next available event from the queue.  Returns a negative
+ * value if no events are available or an error has occurred.
+ */
+int32_t AInputQueue_getEvent(AInputQueue* queue, AInputEvent** outEvent);
+
+/*
+ * Sends the key for standard pre-dispatching -- that is, possibly deliver
+ * it to the current IME to be consumed before the app.  Returns 0 if it
+ * was not pre-dispatched, meaning you can process it right now.  If non-zero
+ * is returned, you must abandon the current event processing and allow the
+ * event to appear again in the event queue (if it does not get consumed during
+ * pre-dispatching).
+ */
+int32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event);
+
+/*
+ * Report that dispatching has finished with the given event.
+ * This must be called after receiving an event with AInputQueue_get_event().
+ */
+void AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _ANDROID_INPUT_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/keycodes.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/keycodes.h
new file mode 100644
index 0000000..496eccc
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/keycodes.h
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ANDROID_KEYCODES_H
+#define _ANDROID_KEYCODES_H
+
+/******************************************************************
+ *
+ * IMPORTANT NOTICE:
+ *
+ *   This file is part of Android's set of stable system headers
+ *   exposed by the Android NDK (Native Development Kit).
+ *
+ *   Third-party source AND binary code relies on the definitions
+ *   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
+ *
+ *   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
+ *   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
+ *   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
+ *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
+ */
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Key codes.
+ */
+enum {
+    AKEYCODE_UNKNOWN         = 0,
+    AKEYCODE_SOFT_LEFT       = 1,
+    AKEYCODE_SOFT_RIGHT      = 2,
+    AKEYCODE_HOME            = 3,
+    AKEYCODE_BACK            = 4,
+    AKEYCODE_CALL            = 5,
+    AKEYCODE_ENDCALL         = 6,
+    AKEYCODE_0               = 7,
+    AKEYCODE_1               = 8,
+    AKEYCODE_2               = 9,
+    AKEYCODE_3               = 10,
+    AKEYCODE_4               = 11,
+    AKEYCODE_5               = 12,
+    AKEYCODE_6               = 13,
+    AKEYCODE_7               = 14,
+    AKEYCODE_8               = 15,
+    AKEYCODE_9               = 16,
+    AKEYCODE_STAR            = 17,
+    AKEYCODE_POUND           = 18,
+    AKEYCODE_DPAD_UP         = 19,
+    AKEYCODE_DPAD_DOWN       = 20,
+    AKEYCODE_DPAD_LEFT       = 21,
+    AKEYCODE_DPAD_RIGHT      = 22,
+    AKEYCODE_DPAD_CENTER     = 23,
+    AKEYCODE_VOLUME_UP       = 24,
+    AKEYCODE_VOLUME_DOWN     = 25,
+    AKEYCODE_POWER           = 26,
+    AKEYCODE_CAMERA          = 27,
+    AKEYCODE_CLEAR           = 28,
+    AKEYCODE_A               = 29,
+    AKEYCODE_B               = 30,
+    AKEYCODE_C               = 31,
+    AKEYCODE_D               = 32,
+    AKEYCODE_E               = 33,
+    AKEYCODE_F               = 34,
+    AKEYCODE_G               = 35,
+    AKEYCODE_H               = 36,
+    AKEYCODE_I               = 37,
+    AKEYCODE_J               = 38,
+    AKEYCODE_K               = 39,
+    AKEYCODE_L               = 40,
+    AKEYCODE_M               = 41,
+    AKEYCODE_N               = 42,
+    AKEYCODE_O               = 43,
+    AKEYCODE_P               = 44,
+    AKEYCODE_Q               = 45,
+    AKEYCODE_R               = 46,
+    AKEYCODE_S               = 47,
+    AKEYCODE_T               = 48,
+    AKEYCODE_U               = 49,
+    AKEYCODE_V               = 50,
+    AKEYCODE_W               = 51,
+    AKEYCODE_X               = 52,
+    AKEYCODE_Y               = 53,
+    AKEYCODE_Z               = 54,
+    AKEYCODE_COMMA           = 55,
+    AKEYCODE_PERIOD          = 56,
+    AKEYCODE_ALT_LEFT        = 57,
+    AKEYCODE_ALT_RIGHT       = 58,
+    AKEYCODE_SHIFT_LEFT      = 59,
+    AKEYCODE_SHIFT_RIGHT     = 60,
+    AKEYCODE_TAB             = 61,
+    AKEYCODE_SPACE           = 62,
+    AKEYCODE_SYM             = 63,
+    AKEYCODE_EXPLORER        = 64,
+    AKEYCODE_ENVELOPE        = 65,
+    AKEYCODE_ENTER           = 66,
+    AKEYCODE_DEL             = 67,
+    AKEYCODE_GRAVE           = 68,
+    AKEYCODE_MINUS           = 69,
+    AKEYCODE_EQUALS          = 70,
+    AKEYCODE_LEFT_BRACKET    = 71,
+    AKEYCODE_RIGHT_BRACKET   = 72,
+    AKEYCODE_BACKSLASH       = 73,
+    AKEYCODE_SEMICOLON       = 74,
+    AKEYCODE_APOSTROPHE      = 75,
+    AKEYCODE_SLASH           = 76,
+    AKEYCODE_AT              = 77,
+    AKEYCODE_NUM             = 78,
+    AKEYCODE_HEADSETHOOK     = 79,
+    AKEYCODE_FOCUS           = 80,   // *Camera* focus
+    AKEYCODE_PLUS            = 81,
+    AKEYCODE_MENU            = 82,
+    AKEYCODE_NOTIFICATION    = 83,
+    AKEYCODE_SEARCH          = 84,
+    AKEYCODE_MEDIA_PLAY_PAUSE= 85,
+    AKEYCODE_MEDIA_STOP      = 86,
+    AKEYCODE_MEDIA_NEXT      = 87,
+    AKEYCODE_MEDIA_PREVIOUS  = 88,
+    AKEYCODE_MEDIA_REWIND    = 89,
+    AKEYCODE_MEDIA_FAST_FORWARD = 90,
+    AKEYCODE_MUTE            = 91,
+    AKEYCODE_PAGE_UP         = 92,
+    AKEYCODE_PAGE_DOWN       = 93,
+    AKEYCODE_PICTSYMBOLS     = 94,
+    AKEYCODE_SWITCH_CHARSET  = 95,
+    AKEYCODE_BUTTON_A        = 96,
+    AKEYCODE_BUTTON_B        = 97,
+    AKEYCODE_BUTTON_C        = 98,
+    AKEYCODE_BUTTON_X        = 99,
+    AKEYCODE_BUTTON_Y        = 100,
+    AKEYCODE_BUTTON_Z        = 101,
+    AKEYCODE_BUTTON_L1       = 102,
+    AKEYCODE_BUTTON_R1       = 103,
+    AKEYCODE_BUTTON_L2       = 104,
+    AKEYCODE_BUTTON_R2       = 105,
+    AKEYCODE_BUTTON_THUMBL   = 106,
+    AKEYCODE_BUTTON_THUMBR   = 107,
+    AKEYCODE_BUTTON_START    = 108,
+    AKEYCODE_BUTTON_SELECT   = 109,
+    AKEYCODE_BUTTON_MODE     = 110,
+
+    // NOTE: If you add a new keycode here you must also add it to several other files.
+    //       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _ANDROID_KEYCODES_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/log.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/log.h
new file mode 100644
index 0000000..0ea4c29
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/log.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ANDROID_LOG_H
+#define _ANDROID_LOG_H
+
+/******************************************************************
+ *
+ * IMPORTANT NOTICE:
+ *
+ *   This file is part of Android's set of stable system headers
+ *   exposed by the Android NDK (Native Development Kit) since
+ *   platform release 1.5
+ *
+ *   Third-party source AND binary code relies on the definitions
+ *   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
+ *
+ *   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
+ *   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
+ *   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
+ *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
+ */
+
+/*
+ * Support routines to send messages to the Android in-kernel log buffer,
+ * which can later be accessed through the 'logcat' utility.
+ *
+ * Each log message must have
+ *   - a priority
+ *   - a log tag
+ *   - some text
+ *
+ * The tag normally corresponds to the component that emits the log message,
+ * and should be reasonably small.
+ *
+ * Log message text may be truncated to less than an implementation-specific
+ * limit (e.g. 1023 characters max).
+ *
+ * Note that a newline character ("\n") will be appended automatically to your
+ * log message, if not already there. It is not possible to send several messages
+ * and have them appear on a single line in logcat.
+ *
+ * PLEASE USE LOGS WITH MODERATION:
+ *
+ *  - Sending log messages eats CPU and slow down your application and the
+ *    system.
+ *
+ *  - The circular log buffer is pretty small (<64KB), sending many messages
+ *    might push off other important log messages from the rest of the system.
+ *
+ *  - In release builds, only send log messages to account for exceptional
+ *    conditions.
+ *
+ * NOTE: These functions MUST be implemented by /system/lib/liblog.so
+ */
+
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Android log priority values, in ascending priority order.
+ */
+typedef enum android_LogPriority {
+    ANDROID_LOG_UNKNOWN = 0,
+    ANDROID_LOG_DEFAULT,    /* only for SetMinPriority() */
+    ANDROID_LOG_VERBOSE,
+    ANDROID_LOG_DEBUG,
+    ANDROID_LOG_INFO,
+    ANDROID_LOG_WARN,
+    ANDROID_LOG_ERROR,
+    ANDROID_LOG_FATAL,
+    ANDROID_LOG_SILENT,     /* only for SetMinPriority(); must be last */
+} android_LogPriority;
+
+/*
+ * Send a simple string to the log.
+ */
+int __android_log_write(int prio, const char *tag, const char *text);
+
+/*
+ * Send a formatted string to the log, used like printf(fmt,...)
+ */
+int __android_log_print(int prio, const char *tag,  const char *fmt, ...)
+#if defined(__GNUC__)
+    __attribute__ ((format(printf, 3, 4)))
+#endif
+    ;
+
+/*
+ * A variant of __android_log_print() that takes a va_list to list
+ * additional parameters.
+ */
+int __android_log_vprint(int prio, const char *tag,
+                         const char *fmt, va_list ap);
+
+/*
+ * Log an assertion failure and SIGTRAP the process to have a chance
+ * to inspect it, if a debugger is attached. This uses the FATAL priority.
+ */
+void __android_log_assert(const char *cond, const char *tag,
+			  const char *fmt, ...)    
+#if defined(__GNUC__)
+    __attribute__ ((noreturn))
+    __attribute__ ((format(printf, 3, 4)))
+#endif
+    ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ANDROID_LOG_H */
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/looper.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/looper.h
new file mode 100644
index 0000000..a9d8426
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/looper.h
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_LOOPER_H
+#define ANDROID_LOOPER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * ALooper
+ *
+ * A looper is the state tracking an event loop for a thread.
+ * Loopers do not define event structures or other such things; rather
+ * they are a lower-level facility to attach one or more discrete objects
+ * listening for an event.  An "event" here is simply data available on
+ * a file descriptor: each attached object has an associated file descriptor,
+ * and waiting for "events" means (internally) polling on all of these file
+ * descriptors until one or more of them have data available.
+ *
+ * A thread can have only one ALooper associated with it.
+ */
+struct ALooper;
+typedef struct ALooper ALooper;
+
+/**
+ * Returns the looper associated with the calling thread, or NULL if
+ * there is not one.
+ */
+ALooper* ALooper_forThread();
+
+enum {
+    /**
+     * Option for ALooper_prepare: this looper will accept calls to
+     * ALooper_addFd() that do not have a callback (that is provide NULL
+     * for the callback).  In this case the caller of ALooper_pollOnce()
+     * or ALooper_pollAll() MUST check the return from these functions to
+     * discover when data is available on such fds and process it.
+     */
+    ALOOPER_PREPARE_ALLOW_NON_CALLBACKS = 1<<0
+};
+
+/**
+ * Prepares a looper associated with the calling thread, and returns it.
+ * If the thread already has a looper, it is returned.  Otherwise, a new
+ * one is created, associated with the thread, and returned.
+ *
+ * The opts may be ALOOPER_PREPARE_ALLOW_NON_CALLBACKS or 0.
+ */
+ALooper* ALooper_prepare(int opts);
+
+enum {
+    /**
+     * Result from ALooper_pollOnce() and ALooper_pollAll():
+     * The poll was awoken using wake() before the timeout expired
+     * and no callbacks were executed and no other file descriptors were ready.
+     */
+    ALOOPER_POLL_WAKE = -1,
+
+    /**
+     * Result from ALooper_pollOnce() and ALooper_pollAll():
+     * One or more callbacks were executed.
+     */
+    ALOOPER_POLL_CALLBACK = -2,
+
+    /**
+     * Result from ALooper_pollOnce() and ALooper_pollAll():
+     * The timeout expired.
+     */
+    ALOOPER_POLL_TIMEOUT = -3,
+
+    /**
+     * Result from ALooper_pollOnce() and ALooper_pollAll():
+     * An error occurred.
+     */
+    ALOOPER_POLL_ERROR = -4,
+};
+
+/**
+ * Acquire a reference on the given ALooper object.  This prevents the object
+ * from being deleted until the reference is removed.  This is only needed
+ * to safely hand an ALooper from one thread to another.
+ */
+void ALooper_acquire(ALooper* looper);
+
+/**
+ * Remove a reference that was previously acquired with ALooper_acquire().
+ */
+void ALooper_release(ALooper* looper);
+
+/**
+ * Flags for file descriptor events that a looper can monitor.
+ *
+ * These flag bits can be combined to monitor multiple events at once.
+ */
+enum {
+    /**
+     * The file descriptor is available for read operations.
+     */
+    ALOOPER_EVENT_INPUT = 1 << 0,
+
+    /**
+     * The file descriptor is available for write operations.
+     */
+    ALOOPER_EVENT_OUTPUT = 1 << 1,
+
+    /**
+     * The file descriptor has encountered an error condition.
+     *
+     * The looper always sends notifications about errors; it is not necessary
+     * to specify this event flag in the requested event set.
+     */
+    ALOOPER_EVENT_ERROR = 1 << 2,
+
+    /**
+     * The file descriptor was hung up.
+     * For example, indicates that the remote end of a pipe or socket was closed.
+     *
+     * The looper always sends notifications about hangups; it is not necessary
+     * to specify this event flag in the requested event set.
+     */
+    ALOOPER_EVENT_HANGUP = 1 << 3,
+
+    /**
+     * The file descriptor is invalid.
+     * For example, the file descriptor was closed prematurely.
+     *
+     * The looper always sends notifications about invalid file descriptors; it is not necessary
+     * to specify this event flag in the requested event set.
+     */
+    ALOOPER_EVENT_INVALID = 1 << 4,
+};
+
+/**
+ * For callback-based event loops, this is the prototype of the function
+ * that is called.  It is given the file descriptor it is associated with,
+ * a bitmask of the poll events that were triggered (typically ALOOPER_EVENT_INPUT),
+ * and the data pointer that was originally supplied.
+ *
+ * Implementations should return 1 to continue receiving callbacks, or 0
+ * to have this file descriptor and callback unregistered from the looper.
+ */
+typedef int (*ALooper_callbackFunc)(int fd, int events, void* data);
+
+/**
+ * Waits for events to be available, with optional timeout in milliseconds.
+ * Invokes callbacks for all file descriptors on which an event occurred.
+ *
+ * If the timeout is zero, returns immediately without blocking.
+ * If the timeout is negative, waits indefinitely until an event appears.
+ *
+ * Returns ALOOPER_POLL_WAKE if the poll was awoken using wake() before
+ * the timeout expired and no callbacks were invoked and no other file
+ * descriptors were ready.
+ *
+ * Returns ALOOPER_POLL_CALLBACK if one or more callbacks were invoked.
+ *
+ * Returns ALOOPER_POLL_TIMEOUT if there was no data before the given
+ * timeout expired.
+ *
+ * Returns ALOOPER_POLL_ERROR if an error occurred.
+ *
+ * Returns a value >= 0 containing an identifier if its file descriptor has data
+ * and it has no callback function (requiring the caller here to handle it).
+ * In this (and only this) case outFd, outEvents and outData will contain the poll
+ * events and data associated with the fd, otherwise they will be set to NULL.
+ *
+ * This method does not return until it has finished invoking the appropriate callbacks
+ * for all file descriptors that were signalled.
+ */
+int ALooper_pollOnce(int timeoutMillis, int* outFd, int* outEvents, void** outData);
+
+/**
+ * Like ALooper_pollOnce(), but performs all pending callbacks until all
+ * data has been consumed or a file descriptor is available with no callback.
+ * This function will never return ALOOPER_POLL_CALLBACK.
+ */
+int ALooper_pollAll(int timeoutMillis, int* outFd, int* outEvents, void** outData);
+
+/**
+ * Wakes the poll asynchronously.
+ *
+ * This method can be called on any thread.
+ * This method returns immediately.
+ */
+void ALooper_wake(ALooper* looper);
+
+/**
+ * Adds a new file descriptor to be polled by the looper.
+ * If the same file descriptor was previously added, it is replaced.
+ *
+ * "fd" is the file descriptor to be added.
+ * "ident" is an identifier for this event, which is returned from ALooper_pollOnce().
+ * The identifier must be >= 0, or ALOOPER_POLL_CALLBACK if providing a non-NULL callback.
+ * "events" are the poll events to wake up on.  Typically this is ALOOPER_EVENT_INPUT.
+ * "callback" is the function to call when there is an event on the file descriptor.
+ * "data" is a private data pointer to supply to the callback.
+ *
+ * There are two main uses of this function:
+ *
+ * (1) If "callback" is non-NULL, then this function will be called when there is
+ * data on the file descriptor.  It should execute any events it has pending,
+ * appropriately reading from the file descriptor.  The 'ident' is ignored in this case.
+ *
+ * (2) If "callback" is NULL, the 'ident' will be returned by ALooper_pollOnce
+ * when its file descriptor has data available, requiring the caller to take
+ * care of processing it.
+ *
+ * Returns 1 if the file descriptor was added or -1 if an error occurred.
+ *
+ * This method can be called on any thread.
+ * This method may block briefly if it needs to wake the poll.
+ */
+int ALooper_addFd(ALooper* looper, int fd, int ident, int events,
+        ALooper_callbackFunc callback, void* data);
+
+/**
+ * Removes a previously added file descriptor from the looper.
+ *
+ * When this method returns, it is safe to close the file descriptor since the looper
+ * will no longer have a reference to it.  However, it is possible for the callback to
+ * already be running or for it to run one last time if the file descriptor was already
+ * signalled.  Calling code is responsible for ensuring that this case is safely handled.
+ * For example, if the callback takes care of removing itself during its own execution either
+ * by returning 0 or by calling this method, then it can be guaranteed to not be invoked
+ * again at any later time unless registered anew.
+ *
+ * Returns 1 if the file descriptor was removed, 0 if none was previously registered
+ * or -1 if an error occurred.
+ *
+ * This method can be called on any thread.
+ * This method may block briefly if it needs to wake the poll.
+ */
+int ALooper_removeFd(ALooper* looper, int fd);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif // ANDROID_NATIVE_WINDOW_H
diff --git a/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/native_activity.h b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/native_activity.h
new file mode 100644
index 0000000..52997bf
--- /dev/null
+++ b/ndk/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/native_activity.h
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_NATIVE_ACTIVITY_H
+#define ANDROID_NATIVE_ACTIVITY_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include <jni.h>
+
+#include <android/asset_manager.h>
+#include <android/input.h>
+#include <android/native_window.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ANativeActivityCallbacks;
+
+/**
+ * This structure defines the native side of an android.app.NativeActivity.
+ * It is created by the framework, and handed to the application's native
+ * code as it is being launched.
+ */
+typedef struct ANativeActivity {
+    /**
+     * Pointer to the callback function table of the native application.
+     * You can set the functions here to your own callbacks.  The callbacks
+     * pointer itself here should not be changed; it is allocated and managed
+     * for you by the framework.
+     */
+    struct ANativeActivityCallbacks* callbacks;
+
+    /**
+     * The global handle on the process's Java VM.
+     */
+    JavaVM* vm;
+
+    /**
+     * JNI context for the main thread of the app.  Note that this field
+     * can ONLY be used from the main thread of the process; that is, the
+     * thread that calls into the ANativeActivityCallbacks.
+     */
+    JNIEnv* env;
+
+    /**
+     * The NativeActivity object handle.
+     *
+     * IMPORTANT NOTE: This member is mis-named. It should really be named
+     * 'activity' instead of 'clazz', since it's a reference to the
+     * NativeActivity instance created by the system for you.
+     *
+     * We unfortunately cannot change this without breaking NDK
+     * source-compatibility.
+     */
+    jobject clazz;
+
+    /**
+     * Path to this application's internal data directory.
+     */
+    const char* internalDataPath;
+    
+    /**
+     * Path to this application's external (removable/mountable) data directory.
+     */
+    const char* externalDataPath;
+    
+    /**
+     * The platform's SDK version code.
+     */
+    int32_t sdkVersion;
+    
+    /**
+     * This is the native instance of the application.  It is not used by
+     * the framework, but can be set by the application to its own instance
+     * state.
+     */
+    void* instance;
+
+    /**
+     * Pointer to the Asset Manager instance for the application.  The application
+     * uses this to access binary assets bundled inside its own .apk file.
+     */
+    AAssetManager* assetManager;
+} ANativeActivity;
+
+/**
+ * These are the callbacks the framework makes into a native application.
+ * All of these callbacks happen on the main thread of the application.
+ * By default, all callbacks are NULL; set to a pointer to your own function
+ * to have it called.
+ */
+typedef struct ANativeActivityCallbacks {
+    /**
+     * NativeActivity has started.  See Java documentation for Activity.onStart()
+     * for more information.
+     */
+    void (*onStart)(ANativeActivity* activity);
+    
+    /**
+     * NativeActivity has resumed.  See Java documentation for Activity.onResume()
+     * for more information.
+     */
+    void (*onResume)(ANativeActivity* activity);
+    
+    /**
+     * Framework is asking NativeActivity to save its current instance state.
+     * See Java documentation for Activity.onSaveInstanceState() for more
+     * information.  The returned pointer needs to be created with malloc();
+     * the framework will call free() on it for you.  You also must fill in
+     * outSize with the number of bytes in the allocation.  Note that the
+     * saved state will be persisted, so it can not contain any active
+     * entities (pointers to memory, file descriptors, etc).
+     */
+    void* (*onSaveInstanceState)(ANativeActivity* activity, size_t* outSize);
+    
+    /**
+     * NativeActivity has paused.  See Java documentation for Activity.onPause()
+     * for more information.
+     */
+    void (*onPause)(ANativeActivity* activity);
+    
+    /**
+     * NativeActivity has stopped.  See Java documentation for Activity.onStop()