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

Side by Side Diff: webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java

Issue 2377003002: Format all Java in WebRTC. (Closed)
Patch Set: Rebase. Created 4 years, 2 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
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 package org.webrtc; 10 package org.webrtc;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 // Create SurfaceTextureHelper and listener. 104 // Create SurfaceTextureHelper and listener.
105 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 105 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e(
106 "SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext( )); 106 "SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext( ));
107 final MockTextureListener listener = new MockTextureListener(); 107 final MockTextureListener listener = new MockTextureListener();
108 surfaceTextureHelper.startListening(listener); 108 surfaceTextureHelper.startListening(listener);
109 surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height) ; 109 surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height) ;
110 110
111 // Create resources for stubbing an OES texture producer. |eglOesBase| has t he SurfaceTexture in 111 // Create resources for stubbing an OES texture producer. |eglOesBase| has t he SurfaceTexture in
112 // |surfaceTextureHelper| as the target EGLSurface. 112 // |surfaceTextureHelper| as the target EGLSurface.
113 final EglBase eglOesBase = 113 final EglBase eglOesBase = EglBase.create(eglBase.getEglBaseContext(), EglBa se.CONFIG_PLAIN);
114 EglBase.create(eglBase.getEglBaseContext(), EglBase.CONFIG_PLAIN);
115 eglOesBase.createSurface(surfaceTextureHelper.getSurfaceTexture()); 114 eglOesBase.createSurface(surfaceTextureHelper.getSurfaceTexture());
116 assertEquals(eglOesBase.surfaceWidth(), width); 115 assertEquals(eglOesBase.surfaceWidth(), width);
117 assertEquals(eglOesBase.surfaceHeight(), height); 116 assertEquals(eglOesBase.surfaceHeight(), height);
118 117
119 final int red[] = new int[] {79, 144, 185}; 118 final int red[] = new int[] {79, 144, 185};
120 final int green[] = new int[] {66, 210, 162}; 119 final int green[] = new int[] {66, 210, 162};
121 final int blue[] = new int[] {161, 117, 158}; 120 final int blue[] = new int[] {161, 117, 158};
122 // Draw three frames. 121 // Draw three frames.
123 for (int i = 0; i < 3; ++i) { 122 for (int i = 0; i < 3; ++i) {
124 // Draw a constant color frame onto the SurfaceTexture. 123 // Draw a constant color frame onto the SurfaceTexture.
125 eglOesBase.makeCurrent(); 124 eglOesBase.makeCurrent();
126 GLES20.glClearColor(red[i] / 255.0f, green[i] / 255.0f, blue[i] / 255.0f, 1.0f); 125 GLES20.glClearColor(red[i] / 255.0f, green[i] / 255.0f, blue[i] / 255.0f, 1.0f);
127 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 126 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
128 // swapBuffers() will ultimately trigger onTextureFrameAvailable(). 127 // swapBuffers() will ultimately trigger onTextureFrameAvailable().
129 eglOesBase.swapBuffers(); 128 eglOesBase.swapBuffers();
130 129
131 // Wait for an OES texture to arrive and draw it onto the pixel buffer. 130 // Wait for an OES texture to arrive and draw it onto the pixel buffer.
132 listener.waitForNewFrame(); 131 listener.waitForNewFrame();
133 eglBase.makeCurrent(); 132 eglBase.makeCurrent();
134 drawer.drawOes(listener.oesTextureId, listener.transformMatrix, width, hei ght, 133 drawer.drawOes(
135 0, 0, width, height); 134 listener.oesTextureId, listener.transformMatrix, width, height, 0, 0, width, height);
136 135
137 surfaceTextureHelper.returnTextureFrame(); 136 surfaceTextureHelper.returnTextureFrame();
138 137
139 // Download the pixels in the pixel buffer as RGBA. Not all platforms supp ort RGB, e.g. 138 // Download the pixels in the pixel buffer as RGBA. Not all platforms supp ort RGB, e.g.
140 // Nexus 9. 139 // Nexus 9.
141 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(width * height * 4); 140 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(width * height * 4);
142 GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNE D_BYTE, rgbaData); 141 GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNE D_BYTE, rgbaData);
143 GlUtil.checkNoGLES2Error("glReadPixels"); 142 GlUtil.checkNoGLES2Error("glReadPixels");
144 143
145 // Assert rendered image is expected constant color. 144 // Assert rendered image is expected constant color.
(...skipping 25 matching lines...) Expand all
171 170
172 // Create SurfaceTextureHelper and listener. 171 // Create SurfaceTextureHelper and listener.
173 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 172 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e(
174 "SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext( )); 173 "SurfaceTextureHelper test" /* threadName */, eglBase.getEglBaseContext( ));
175 final MockTextureListener listener = new MockTextureListener(); 174 final MockTextureListener listener = new MockTextureListener();
176 surfaceTextureHelper.startListening(listener); 175 surfaceTextureHelper.startListening(listener);
177 surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height) ; 176 surfaceTextureHelper.getSurfaceTexture().setDefaultBufferSize(width, height) ;
178 177
179 // Create resources for stubbing an OES texture producer. |eglOesBase| has t he SurfaceTexture in 178 // Create resources for stubbing an OES texture producer. |eglOesBase| has t he SurfaceTexture in
180 // |surfaceTextureHelper| as the target EGLSurface. 179 // |surfaceTextureHelper| as the target EGLSurface.
181 final EglBase eglOesBase = 180 final EglBase eglOesBase = EglBase.create(eglBase.getEglBaseContext(), EglBa se.CONFIG_PLAIN);
182 EglBase.create(eglBase.getEglBaseContext(), EglBase.CONFIG_PLAIN);
183 eglOesBase.createSurface(surfaceTextureHelper.getSurfaceTexture()); 181 eglOesBase.createSurface(surfaceTextureHelper.getSurfaceTexture());
184 assertEquals(eglOesBase.surfaceWidth(), width); 182 assertEquals(eglOesBase.surfaceWidth(), width);
185 assertEquals(eglOesBase.surfaceHeight(), height); 183 assertEquals(eglOesBase.surfaceHeight(), height);
186 184
187 final int red = 79; 185 final int red = 79;
188 final int green = 66; 186 final int green = 66;
189 final int blue = 161; 187 final int blue = 161;
190 // Draw a constant color frame onto the SurfaceTexture. 188 // Draw a constant color frame onto the SurfaceTexture.
191 eglOesBase.makeCurrent(); 189 eglOesBase.makeCurrent();
192 GLES20.glClearColor(red / 255.0f, green / 255.0f, blue / 255.0f, 1.0f); 190 GLES20.glClearColor(red / 255.0f, green / 255.0f, blue / 255.0f, 1.0f);
193 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 191 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
194 // swapBuffers() will ultimately trigger onTextureFrameAvailable(). 192 // swapBuffers() will ultimately trigger onTextureFrameAvailable().
195 eglOesBase.swapBuffers(); 193 eglOesBase.swapBuffers();
196 eglOesBase.release(); 194 eglOesBase.release();
197 195
198 // Wait for OES texture frame. 196 // Wait for OES texture frame.
199 listener.waitForNewFrame(); 197 listener.waitForNewFrame();
200 // Diconnect while holding the frame. 198 // Diconnect while holding the frame.
201 surfaceTextureHelper.dispose(); 199 surfaceTextureHelper.dispose();
202 200
203 // Draw the pending texture frame onto the pixel buffer. 201 // Draw the pending texture frame onto the pixel buffer.
204 eglBase.makeCurrent(); 202 eglBase.makeCurrent();
205 final GlRectDrawer drawer = new GlRectDrawer(); 203 final GlRectDrawer drawer = new GlRectDrawer();
206 drawer.drawOes(listener.oesTextureId, listener.transformMatrix, width, heigh t, 204 drawer.drawOes(
207 0, 0, width, height); 205 listener.oesTextureId, listener.transformMatrix, width, height, 0, 0, wi dth, height);
208 drawer.release(); 206 drawer.release();
209 207
210 // Download the pixels in the pixel buffer as RGBA. Not all platforms suppor t RGB, e.g. Nexus 9. 208 // Download the pixels in the pixel buffer as RGBA. Not all platforms suppor t RGB, e.g. Nexus 9.
211 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(width * height * 4); 209 final ByteBuffer rgbaData = ByteBuffer.allocateDirect(width * height * 4);
212 GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_ BYTE, rgbaData); 210 GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_ BYTE, rgbaData);
213 GlUtil.checkNoGLES2Error("glReadPixels"); 211 GlUtil.checkNoGLES2Error("glReadPixels");
214 eglBase.release(); 212 eglBase.release();
215 213
216 // Assert rendered image is expected constant color. 214 // Assert rendered image is expected constant color.
217 while (rgbaData.hasRemaining()) { 215 while (rgbaData.hasRemaining()) {
218 assertEquals(rgbaData.get() & 0xFF, red); 216 assertEquals(rgbaData.get() & 0xFF, red);
219 assertEquals(rgbaData.get() & 0xFF, green); 217 assertEquals(rgbaData.get() & 0xFF, green);
220 assertEquals(rgbaData.get() & 0xFF, blue); 218 assertEquals(rgbaData.get() & 0xFF, blue);
221 assertEquals(rgbaData.get() & 0xFF, 255); 219 assertEquals(rgbaData.get() & 0xFF, 255);
222 } 220 }
223 // Late frame return after everything has been disposed and released. 221 // Late frame return after everything has been disposed and released.
224 surfaceTextureHelper.returnTextureFrame(); 222 surfaceTextureHelper.returnTextureFrame();
225 } 223 }
226 224
227 /** 225 /**
228 * Test disposing the SurfaceTextureHelper, but keep trying to produce more te xture frames. No 226 * Test disposing the SurfaceTextureHelper, but keep trying to produce more te xture frames. No
229 * frames should be delivered to the listener. 227 * frames should be delivered to the listener.
230 */ 228 */
231 @MediumTest 229 @MediumTest
232 public static void testDispose() throws InterruptedException { 230 public static void testDispose() throws InterruptedException {
233 // Create SurfaceTextureHelper and listener. 231 // Create SurfaceTextureHelper and listener.
234 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 232 final SurfaceTextureHelper surfaceTextureHelper =
235 "SurfaceTextureHelper test" /* threadName */, null); 233 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
236 final MockTextureListener listener = new MockTextureListener(); 234 final MockTextureListener listener = new MockTextureListener();
237 surfaceTextureHelper.startListening(listener); 235 surfaceTextureHelper.startListening(listener);
238 // Create EglBase with the SurfaceTexture as target EGLSurface. 236 // Create EglBase with the SurfaceTexture as target EGLSurface.
239 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN); 237 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN);
240 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture()); 238 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture());
241 eglBase.makeCurrent(); 239 eglBase.makeCurrent();
242 // Assert no frame has been received yet. 240 // Assert no frame has been received yet.
243 assertFalse(listener.waitForNewFrame(1)); 241 assertFalse(listener.waitForNewFrame(1));
244 // Draw and wait for one frame. 242 // Draw and wait for one frame.
245 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 243 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
(...skipping 14 matching lines...) Expand all
260 258
261 eglBase.release(); 259 eglBase.release();
262 } 260 }
263 261
264 /** 262 /**
265 * Test disposing the SurfaceTextureHelper immediately after is has been setup to use a 263 * Test disposing the SurfaceTextureHelper immediately after is has been setup to use a
266 * shared context. No frames should be delivered to the listener. 264 * shared context. No frames should be delivered to the listener.
267 */ 265 */
268 @SmallTest 266 @SmallTest
269 public static void testDisposeImmediately() { 267 public static void testDisposeImmediately() {
270 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 268 final SurfaceTextureHelper surfaceTextureHelper =
271 "SurfaceTextureHelper test" /* threadName */, null); 269 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
272 surfaceTextureHelper.dispose(); 270 surfaceTextureHelper.dispose();
273 } 271 }
274 272
275 /** 273 /**
276 * Call stopListening(), but keep trying to produce more texture frames. No fr ames should be 274 * Call stopListening(), but keep trying to produce more texture frames. No fr ames should be
277 * delivered to the listener. 275 * delivered to the listener.
278 */ 276 */
279 @MediumTest 277 @MediumTest
280 public static void testStopListening() throws InterruptedException { 278 public static void testStopListening() throws InterruptedException {
281 // Create SurfaceTextureHelper and listener. 279 // Create SurfaceTextureHelper and listener.
282 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 280 final SurfaceTextureHelper surfaceTextureHelper =
283 "SurfaceTextureHelper test" /* threadName */, null); 281 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
284 final MockTextureListener listener = new MockTextureListener(); 282 final MockTextureListener listener = new MockTextureListener();
285 surfaceTextureHelper.startListening(listener); 283 surfaceTextureHelper.startListening(listener);
286 // Create EglBase with the SurfaceTexture as target EGLSurface. 284 // Create EglBase with the SurfaceTexture as target EGLSurface.
287 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN); 285 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN);
288 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture()); 286 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture());
289 eglBase.makeCurrent(); 287 eglBase.makeCurrent();
290 // Assert no frame has been received yet. 288 // Assert no frame has been received yet.
291 assertFalse(listener.waitForNewFrame(1)); 289 assertFalse(listener.waitForNewFrame(1));
292 // Draw and wait for one frame. 290 // Draw and wait for one frame.
293 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 291 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
(...skipping 14 matching lines...) Expand all
308 306
309 surfaceTextureHelper.dispose(); 307 surfaceTextureHelper.dispose();
310 eglBase.release(); 308 eglBase.release();
311 } 309 }
312 310
313 /** 311 /**
314 * Test stopListening() immediately after the SurfaceTextureHelper has been se tup. 312 * Test stopListening() immediately after the SurfaceTextureHelper has been se tup.
315 */ 313 */
316 @SmallTest 314 @SmallTest
317 public static void testStopListeningImmediately() throws InterruptedException { 315 public static void testStopListeningImmediately() throws InterruptedException {
318 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 316 final SurfaceTextureHelper surfaceTextureHelper =
319 "SurfaceTextureHelper test" /* threadName */, null); 317 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
320 final MockTextureListener listener = new MockTextureListener(); 318 final MockTextureListener listener = new MockTextureListener();
321 surfaceTextureHelper.startListening(listener); 319 surfaceTextureHelper.startListening(listener);
322 surfaceTextureHelper.stopListening(); 320 surfaceTextureHelper.stopListening();
323 surfaceTextureHelper.dispose(); 321 surfaceTextureHelper.dispose();
324 } 322 }
325 323
326 /** 324 /**
327 * Test stopListening() immediately after the SurfaceTextureHelper has been se tup on the handler 325 * Test stopListening() immediately after the SurfaceTextureHelper has been se tup on the handler
328 * thread. 326 * thread.
329 */ 327 */
330 @SmallTest 328 @SmallTest
331 public static void testStopListeningImmediatelyOnHandlerThread() throws Interr uptedException { 329 public static void testStopListeningImmediatelyOnHandlerThread() throws Interr uptedException {
332 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 330 final SurfaceTextureHelper surfaceTextureHelper =
333 "SurfaceTextureHelper test" /* threadName */, null); 331 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
334 final MockTextureListener listener = new MockTextureListener(); 332 final MockTextureListener listener = new MockTextureListener();
335 333
336 final CountDownLatch stopListeningBarrier = new CountDownLatch(1); 334 final CountDownLatch stopListeningBarrier = new CountDownLatch(1);
337 final CountDownLatch stopListeningBarrierDone = new CountDownLatch(1); 335 final CountDownLatch stopListeningBarrierDone = new CountDownLatch(1);
338 // Start by posting to the handler thread to keep it occupied. 336 // Start by posting to the handler thread to keep it occupied.
339 surfaceTextureHelper.getHandler().post(new Runnable() { 337 surfaceTextureHelper.getHandler().post(new Runnable() {
340 @Override 338 @Override
341 public void run() { 339 public void run() {
342 ThreadUtils.awaitUninterruptibly(stopListeningBarrier); 340 ThreadUtils.awaitUninterruptibly(stopListeningBarrier);
343 surfaceTextureHelper.stopListening(); 341 surfaceTextureHelper.stopListening();
344 stopListeningBarrierDone.countDown(); 342 stopListeningBarrierDone.countDown();
345 } 343 }
346 }); 344 });
347 345
348 // startListening() is asynchronous and will post to the occupied handler th read. 346 // startListening() is asynchronous and will post to the occupied handler th read.
349 surfaceTextureHelper.startListening(listener); 347 surfaceTextureHelper.startListening(listener);
350 // Wait for stopListening() to be called on the handler thread. 348 // Wait for stopListening() to be called on the handler thread.
351 stopListeningBarrier.countDown(); 349 stopListeningBarrier.countDown();
352 stopListeningBarrierDone.await(); 350 stopListeningBarrierDone.await();
353 // Wait until handler thread is idle to try to catch late startListening() c all. 351 // Wait until handler thread is idle to try to catch late startListening() c all.
354 final CountDownLatch barrier = new CountDownLatch(1); 352 final CountDownLatch barrier = new CountDownLatch(1);
355 surfaceTextureHelper.getHandler().post(new Runnable() { 353 surfaceTextureHelper.getHandler().post(new Runnable() {
356 @Override public void run() { 354 @Override
355 public void run() {
357 barrier.countDown(); 356 barrier.countDown();
358 } 357 }
359 }); 358 });
360 ThreadUtils.awaitUninterruptibly(barrier); 359 ThreadUtils.awaitUninterruptibly(barrier);
361 // Previous startListening() call should never have taken place and it shoul d be ok to call it 360 // Previous startListening() call should never have taken place and it shoul d be ok to call it
362 // again. 361 // again.
363 surfaceTextureHelper.startListening(listener); 362 surfaceTextureHelper.startListening(listener);
364 363
365 surfaceTextureHelper.dispose(); 364 surfaceTextureHelper.dispose();
366 } 365 }
367 366
368 /** 367 /**
369 * Test calling startListening() with a new listener after stopListening() has been called. 368 * Test calling startListening() with a new listener after stopListening() has been called.
370 */ 369 */
371 @MediumTest 370 @MediumTest
372 public static void testRestartListeningWithNewListener() throws InterruptedExc eption { 371 public static void testRestartListeningWithNewListener() throws InterruptedExc eption {
373 // Create SurfaceTextureHelper and listener. 372 // Create SurfaceTextureHelper and listener.
374 final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.creat e( 373 final SurfaceTextureHelper surfaceTextureHelper =
375 "SurfaceTextureHelper test" /* threadName */, null); 374 SurfaceTextureHelper.create("SurfaceTextureHelper test" /* threadName */ , null);
376 final MockTextureListener listener1 = new MockTextureListener(); 375 final MockTextureListener listener1 = new MockTextureListener();
377 surfaceTextureHelper.startListening(listener1); 376 surfaceTextureHelper.startListening(listener1);
378 // Create EglBase with the SurfaceTexture as target EGLSurface. 377 // Create EglBase with the SurfaceTexture as target EGLSurface.
379 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN); 378 final EglBase eglBase = EglBase.create(null, EglBase.CONFIG_PLAIN);
380 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture()); 379 eglBase.createSurface(surfaceTextureHelper.getSurfaceTexture());
381 eglBase.makeCurrent(); 380 eglBase.makeCurrent();
382 // Assert no frame has been received yet. 381 // Assert no frame has been received yet.
383 assertFalse(listener1.waitForNewFrame(1)); 382 assertFalse(listener1.waitForNewFrame(1));
384 // Draw and wait for one frame. 383 // Draw and wait for one frame.
385 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 384 GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // 0 YYYYYYYY YYYYYYYY 459 // 0 YYYYYYYY YYYYYYYY
461 // 16 YYYYYYYY YYYYYYYY 460 // 16 YYYYYYYY YYYYYYYY
462 // ... 461 // ...
463 // 240 YYYYYYYY YYYYYYYY 462 // 240 YYYYYYYY YYYYYYYY
464 // 256 UUUUUUUU VVVVVVVV 463 // 256 UUUUUUUU VVVVVVVV
465 // 272 UUUUUUUU VVVVVVVV 464 // 272 UUUUUUUU VVVVVVVV
466 // ... 465 // ...
467 // 368 UUUUUUUU VVVVVVVV 466 // 368 UUUUUUUU VVVVVVVV
468 // 384 buffer end 467 // 384 buffer end
469 ByteBuffer buffer = ByteBuffer.allocateDirect(width * height * 3 / 2); 468 ByteBuffer buffer = ByteBuffer.allocateDirect(width * height * 3 / 2);
470 surfaceTextureHelper.textureToYUV(buffer, width, height, width, 469 surfaceTextureHelper.textureToYUV(
471 listener.oesTextureId, listener.transformMatrix); 470 buffer, width, height, width, listener.oesTextureId, listener.transfor mMatrix);
472 471
473 surfaceTextureHelper.returnTextureFrame(); 472 surfaceTextureHelper.returnTextureFrame();
474 473
475 // Allow off-by-one differences due to different rounding. 474 // Allow off-by-one differences due to different rounding.
476 while (buffer.position() < width*height) { 475 while (buffer.position() < width * height) {
477 assertClose(1, buffer.get() & 0xff, ref_y[i]); 476 assertClose(1, buffer.get() & 0xff, ref_y[i]);
478 } 477 }
479 while (buffer.hasRemaining()) { 478 while (buffer.hasRemaining()) {
480 if (buffer.position() % width < width/2) 479 if (buffer.position() % width < width / 2)
481 assertClose(1, buffer.get() & 0xff, ref_u[i]); 480 assertClose(1, buffer.get() & 0xff, ref_u[i]);
482 else 481 else
483 assertClose(1, buffer.get() & 0xff, ref_v[i]); 482 assertClose(1, buffer.get() & 0xff, ref_v[i]);
484 } 483 }
485 } 484 }
486 485
487 surfaceTextureHelper.dispose(); 486 surfaceTextureHelper.dispose();
488 eglBase.release(); 487 eglBase.release();
489 } 488 }
490 } 489 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698