OLD | NEW |
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 package org.webrtc; | 10 package org.webrtc; |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PIXEL_BUFFER); | 249 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PIXEL_BUFFER); |
250 eglBase.createPbufferSurface(WIDTH, HEIGHT); | 250 eglBase.createPbufferSurface(WIDTH, HEIGHT); |
251 | 251 |
252 // Create resources for generating OES textures. | 252 // Create resources for generating OES textures. |
253 final SurfaceTextureHelper surfaceTextureHelper = | 253 final SurfaceTextureHelper surfaceTextureHelper = |
254 SurfaceTextureHelper.create(eglBase.getEglBaseContext()); | 254 SurfaceTextureHelper.create(eglBase.getEglBaseContext()); |
255 final StubOesTextureProducer oesProducer = new StubOesTextureProducer( | 255 final StubOesTextureProducer oesProducer = new StubOesTextureProducer( |
256 eglBase.getEglBaseContext(), surfaceTextureHelper.getSurfaceTexture(), W
IDTH, HEIGHT); | 256 eglBase.getEglBaseContext(), surfaceTextureHelper.getSurfaceTexture(), W
IDTH, HEIGHT); |
257 final SurfaceTextureHelperTest.MockTextureListener listener = | 257 final SurfaceTextureHelperTest.MockTextureListener listener = |
258 new SurfaceTextureHelperTest.MockTextureListener(); | 258 new SurfaceTextureHelperTest.MockTextureListener(); |
259 surfaceTextureHelper.setListener(listener); | 259 surfaceTextureHelper.startListening(listener); |
260 | 260 |
261 // Create RGB byte buffer plane with random content. | 261 // Create RGB byte buffer plane with random content. |
262 final ByteBuffer rgbPlane = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 3); | 262 final ByteBuffer rgbPlane = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 3); |
263 final Random random = new Random(SEED); | 263 final Random random = new Random(SEED); |
264 random.nextBytes(rgbPlane.array()); | 264 random.nextBytes(rgbPlane.array()); |
265 | 265 |
266 // Draw the frame and block until an OES texture is delivered. | 266 // Draw the frame and block until an OES texture is delivered. |
267 oesProducer.draw(rgbPlane); | 267 oesProducer.draw(rgbPlane); |
268 listener.waitForNewFrame(); | 268 listener.waitForNewFrame(); |
269 | 269 |
270 // Real test starts here. | 270 // Real test starts here. |
271 // Draw the OES texture on the pixel buffer. | 271 // Draw the OES texture on the pixel buffer. |
272 eglBase.makeCurrent(); | 272 eglBase.makeCurrent(); |
273 final GlRectDrawer drawer = new GlRectDrawer(); | 273 final GlRectDrawer drawer = new GlRectDrawer(); |
274 drawer.drawOes(listener.oesTextureId, listener.transformMatrix, 0, 0, WIDTH,
HEIGHT); | 274 drawer.drawOes(listener.oesTextureId, listener.transformMatrix, 0, 0, WIDTH,
HEIGHT); |
275 | 275 |
276 // Download the pixels in the pixel buffer as RGBA. Not all platforms suppor
t RGB, e.g. Nexus 9. | 276 // Download the pixels in the pixel buffer as RGBA. Not all platforms suppor
t RGB, e.g. Nexus 9. |
277 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4); | 277 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(WIDTH * HEIGHT * 4); |
278 GLES20.glReadPixels(0, 0, WIDTH, HEIGHT, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_
BYTE, rgbaData); | 278 GLES20.glReadPixels(0, 0, WIDTH, HEIGHT, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_
BYTE, rgbaData); |
279 GlUtil.checkNoGLES2Error("glReadPixels"); | 279 GlUtil.checkNoGLES2Error("glReadPixels"); |
280 | 280 |
281 // Assert rendered image is pixel perfect to source RGB. | 281 // Assert rendered image is pixel perfect to source RGB. |
282 assertEquals(WIDTH, HEIGHT, stripAlphaChannel(rgbaData), rgbPlane); | 282 assertEquals(WIDTH, HEIGHT, stripAlphaChannel(rgbaData), rgbPlane); |
283 | 283 |
284 drawer.release(); | 284 drawer.release(); |
285 surfaceTextureHelper.returnTextureFrame(); | 285 surfaceTextureHelper.returnTextureFrame(); |
286 oesProducer.release(); | 286 oesProducer.release(); |
287 surfaceTextureHelper.disconnect(); | 287 surfaceTextureHelper.dispose(); |
288 eglBase.release(); | 288 eglBase.release(); |
289 } | 289 } |
290 } | 290 } |
OLD | NEW |