• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.ui.gl;
6 
7 import android.graphics.SurfaceTexture;
8 import android.os.Build;
9 import android.util.Log;
10 
11 import org.chromium.base.CalledByNative;
12 import org.chromium.base.JNINamespace;
13 
14 /**
15  * Wrapper class for the underlying platform's SurfaceTexture in order to
16  * provide a stable JNI API.
17  */
18 @JNINamespace("gfx")
19 class SurfaceTexturePlatformWrapper {
20 
21     private static final String TAG = "SurfaceTexturePlatformWrapper";
22 
23     @CalledByNative
create(int textureId)24     private static SurfaceTexture create(int textureId) {
25         return new SurfaceTexture(textureId);
26     }
27 
28     @CalledByNative
createSingleBuffered(int textureId)29     private static SurfaceTexture createSingleBuffered(int textureId) {
30         assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
31         return new SurfaceTexture(textureId, true);
32     }
33 
34     @CalledByNative
destroy(SurfaceTexture surfaceTexture)35     private static void destroy(SurfaceTexture surfaceTexture) {
36         surfaceTexture.setOnFrameAvailableListener(null);
37         surfaceTexture.release();
38     }
39 
40     @CalledByNative
setFrameAvailableCallback(SurfaceTexture surfaceTexture, long nativeSurfaceTextureListener)41     private static void setFrameAvailableCallback(SurfaceTexture surfaceTexture,
42             long nativeSurfaceTextureListener) {
43         surfaceTexture.setOnFrameAvailableListener(
44                 new SurfaceTextureListener(nativeSurfaceTextureListener));
45     }
46 
47     @CalledByNative
updateTexImage(SurfaceTexture surfaceTexture)48     private static void updateTexImage(SurfaceTexture surfaceTexture) {
49         try {
50             surfaceTexture.updateTexImage();
51         } catch (RuntimeException e) {
52             Log.e(TAG, "Error calling updateTexImage", e);
53         }
54     }
55 
56     @CalledByNative
releaseTexImage(SurfaceTexture surfaceTexture)57     private static void releaseTexImage(SurfaceTexture surfaceTexture) {
58         assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
59         surfaceTexture.releaseTexImage();
60     }
61 
62     @CalledByNative
setDefaultBufferSize(SurfaceTexture surfaceTexture, int width, int height)63     private static void setDefaultBufferSize(SurfaceTexture surfaceTexture, int width,
64             int height) {
65         surfaceTexture.setDefaultBufferSize(width, height);
66     }
67 
68     @CalledByNative
getTransformMatrix(SurfaceTexture surfaceTexture, float[] matrix)69     private static void getTransformMatrix(SurfaceTexture surfaceTexture, float[] matrix) {
70         surfaceTexture.getTransformMatrix(matrix);
71     }
72 
73     @CalledByNative
attachToGLContext(SurfaceTexture surfaceTexture, int texName)74     private static void attachToGLContext(SurfaceTexture surfaceTexture, int texName) {
75         assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
76         surfaceTexture.attachToGLContext(texName);
77     }
78 
79     @CalledByNative
detachFromGLContext(SurfaceTexture surfaceTexture)80     private static void detachFromGLContext(SurfaceTexture surfaceTexture) {
81         assert Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
82         surfaceTexture.detachFromGLContext();
83     }
84 }
85