Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: webrtc/sdk/android/src/java/org/webrtc/EglBase14.java

Issue 3003843002: Android: Expose EglBase.swapBuffers with presentation time (Closed)
Patch Set: Suppress warning Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/sdk/android/src/java/org/webrtc/EglBase10.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 package org.webrtc; 11 package org.webrtc;
12 12
13 import android.annotation.TargetApi; 13 import android.annotation.TargetApi;
14 import android.graphics.SurfaceTexture; 14 import android.graphics.SurfaceTexture;
15 import android.opengl.EGL14; 15 import android.opengl.EGL14;
16 import android.opengl.EGLConfig; 16 import android.opengl.EGLConfig;
17 import android.opengl.EGLContext; 17 import android.opengl.EGLContext;
18 import android.opengl.EGLDisplay; 18 import android.opengl.EGLDisplay;
19 import android.opengl.EGLExt; 19 import android.opengl.EGLExt;
20 import android.opengl.EGLSurface; 20 import android.opengl.EGLSurface;
21 import android.view.Surface; 21 import android.view.Surface;
22 22
23 /** 23 /**
24 * Holds EGL state and utility methods for handling an EGL14 EGLContext, an EGLD isplay, 24 * Holds EGL state and utility methods for handling an EGL14 EGLContext, an EGLD isplay,
25 * and an EGLSurface. 25 * and an EGLSurface.
26 */ 26 */
27 @TargetApi(18) 27 @TargetApi(18)
28 class EglBase14 extends EglBase { 28 class EglBase14 implements EglBase {
29 private static final String TAG = "EglBase14"; 29 private static final String TAG = "EglBase14";
30 private static final int EGLExt_SDK_VERSION = android.os.Build.VERSION_CODES.J ELLY_BEAN_MR2; 30 private static final int EGLExt_SDK_VERSION = android.os.Build.VERSION_CODES.J ELLY_BEAN_MR2;
31 private static final int CURRENT_SDK_VERSION = android.os.Build.VERSION.SDK_IN T; 31 private static final int CURRENT_SDK_VERSION = android.os.Build.VERSION.SDK_IN T;
32 private EGLContext eglContext; 32 private EGLContext eglContext;
33 private EGLConfig eglConfig; 33 private EGLConfig eglConfig;
34 private EGLDisplay eglDisplay; 34 private EGLDisplay eglDisplay;
35 private EGLSurface eglSurface = EGL14.EGL_NO_SURFACE; 35 private EGLSurface eglSurface = EGL14.EGL_NO_SURFACE;
36 36
37 // EGL 1.4 is supported from API 17. But EGLExt that is used for setting prese ntation 37 // EGL 1.4 is supported from API 17. But EGLExt that is used for setting prese ntation
38 // time stamp on a surface is supported from 18 so we require 18. 38 // time stamp on a surface is supported from 18 so we require 18.
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 public void swapBuffers() { 189 public void swapBuffers() {
190 checkIsNotReleased(); 190 checkIsNotReleased();
191 if (eglSurface == EGL14.EGL_NO_SURFACE) { 191 if (eglSurface == EGL14.EGL_NO_SURFACE) {
192 throw new RuntimeException("No EGLSurface - can't swap buffers"); 192 throw new RuntimeException("No EGLSurface - can't swap buffers");
193 } 193 }
194 synchronized (EglBase.lock) { 194 synchronized (EglBase.lock) {
195 EGL14.eglSwapBuffers(eglDisplay, eglSurface); 195 EGL14.eglSwapBuffers(eglDisplay, eglSurface);
196 } 196 }
197 } 197 }
198 198
199 @Override
199 public void swapBuffers(long timeStampNs) { 200 public void swapBuffers(long timeStampNs) {
200 checkIsNotReleased(); 201 checkIsNotReleased();
201 if (eglSurface == EGL14.EGL_NO_SURFACE) { 202 if (eglSurface == EGL14.EGL_NO_SURFACE) {
202 throw new RuntimeException("No EGLSurface - can't swap buffers"); 203 throw new RuntimeException("No EGLSurface - can't swap buffers");
203 } 204 }
204 synchronized (EglBase.lock) { 205 synchronized (EglBase.lock) {
205 // See 206 // See
206 // https://android.googlesource.com/platform/frameworks/native/+/tools_r22 .2/opengl/specs/EGL_ANDROID_presentation_time.txt 207 // https://android.googlesource.com/platform/frameworks/native/+/tools_r22 .2/opengl/specs/EGL_ANDROID_presentation_time.txt
207 EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, timeStampNs); 208 EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, timeStampNs);
208 EGL14.eglSwapBuffers(eglDisplay, eglSurface); 209 EGL14.eglSwapBuffers(eglDisplay, eglSurface);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 synchronized (EglBase.lock) { 257 synchronized (EglBase.lock) {
257 eglContext = EGL14.eglCreateContext(eglDisplay, eglConfig, rootContext, co ntextAttributes, 0); 258 eglContext = EGL14.eglCreateContext(eglDisplay, eglConfig, rootContext, co ntextAttributes, 0);
258 } 259 }
259 if (eglContext == EGL14.EGL_NO_CONTEXT) { 260 if (eglContext == EGL14.EGL_NO_CONTEXT) {
260 throw new RuntimeException( 261 throw new RuntimeException(
261 "Failed to create EGL context: 0x" + Integer.toHexString(EGL14.eglGetE rror())); 262 "Failed to create EGL context: 0x" + Integer.toHexString(EGL14.eglGetE rror()));
262 } 263 }
263 return eglContext; 264 return eglContext;
264 } 265 }
265 } 266 }
OLDNEW
« no previous file with comments | « webrtc/sdk/android/src/java/org/webrtc/EglBase10.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698