5#include <QtCore/qmutex.h>
6#include <QtCore/qcoreapplication.h>
19 const int idx = g_surfaceTextures->indexOf(
id);
32 m_surfaceTexture =
QJniObject(
"android/graphics/SurfaceTexture",
"(I)V", jint(texName));
34 if (!m_surfaceTexture.isValid())
38 g_surfaceTextures->append(jlong(
this));
40 setOnFrameAvailableListener(listener);
45 if (m_surface.isValid())
46 m_surface.callMethod<
void>(
"release");
48 if (m_surfaceTexture.isValid()) {
51 const int idx = g_surfaceTextures->indexOf(jlong(
this));
53 g_surfaceTextures->remove(idx);
60 if (!m_surfaceTexture.isValid())
64 jfloatArray
array = env->NewFloatArray(16);
65 m_surfaceTexture.callMethod<
void>(
"getTransformMatrix",
"([F)V",
array);
66 env->GetFloatArrayRegion(
array, 0, 16,
matrix.data());
67 env->DeleteLocalRef(
array);
74 m_surfaceTexture.callMethod<
void>(
"release");
79 if (!m_surfaceTexture.isValid())
82 m_surfaceTexture.callMethod<
void>(
"updateTexImage");
87 return m_surfaceTexture.object();
92 if (!m_surface.isValid()) {
94 "(Landroid/graphics/SurfaceTexture;)V",
95 m_surfaceTexture.object());
98 return m_surface.object();
103 if (!m_surfaceHolder.isValid()) {
104 m_surfaceHolder =
QJniObject(
"org/qtproject/qt/android/multimedia/QtSurfaceTextureHolder",
105 "(Landroid/view/Surface;)V",
109 return m_surfaceHolder.object();
114 if (!m_surfaceTexture.isValid())
117 m_surfaceTexture.callMethod<
void>(
"attachToGLContext",
"(I)V", texName);
122 if (!m_surfaceTexture.isValid())
125 m_surfaceTexture.callMethod<
void>(
"detachFromGLContext");
130 static const JNINativeMethod
methods[] = {
140void AndroidSurfaceTexture::setOnFrameAvailableListener(
const QJniObject &listener)
142 m_surfaceTexture.callMethod<
void>(
"setOnFrameAvailableListener",
143 "(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V",
149#include "moc_androidsurfacetexture_p.cpp"
static void notifyFrameAvailable(JNIEnv *, jobject, int id)
static JNINativeMethod methods[]
static QT_BEGIN_NAMESPACE const char QtSurfaceTextureListenerClassName[]
static void notifyFrameAvailable(JNIEnv *, jobject, jlong id)
QList< jlong > SurfaceTextures
AndroidSurfaceTexture(quint32 texName)
void attachToGLContext(quint32 texName)
static bool registerNativeMethods()
QMatrix4x4 getTransformMatrix()
void detachFromGLContext()
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
Combined button and popup list for selecting options.
#define Q_STATIC_ASSERT(Condition)
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
GLenum GLuint GLintptr GLsizeiptr size
[1]