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

Side by Side Diff: webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.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 10
11 package org.webrtc; 11 package org.webrtc;
12 12
13 import android.graphics.Point; 13 import android.graphics.Point;
14 import android.test.ActivityTestCase; 14 import android.test.ActivityTestCase;
15 import android.test.suitebuilder.annotation.MediumTest; 15 import android.test.suitebuilder.annotation.MediumTest;
16 import android.view.View.MeasureSpec; 16 import android.view.View.MeasureSpec;
17 17
18 import java.nio.ByteBuffer; 18 import java.nio.ByteBuffer;
19 import java.util.Arrays; 19 import java.util.Arrays;
20 import java.util.List; 20 import java.util.List;
21 21
22 public final class SurfaceViewRendererOnMeasureTest extends ActivityTestCase { 22 public final class SurfaceViewRendererOnMeasureTest extends ActivityTestCase {
23 /** 23 /**
24 * List with all possible scaling types. 24 * List with all possible scaling types.
25 */ 25 */
26 private static final List<RendererCommon.ScalingType> scalingTypes = Arrays.as List( 26 private static final List<RendererCommon.ScalingType> scalingTypes = Arrays.as List(
27 RendererCommon.ScalingType.SCALE_ASPECT_FIT, 27 RendererCommon.ScalingType.SCALE_ASPECT_FIT, RendererCommon.ScalingType.SC ALE_ASPECT_FILL,
28 RendererCommon.ScalingType.SCALE_ASPECT_FILL,
29 RendererCommon.ScalingType.SCALE_ASPECT_BALANCED); 28 RendererCommon.ScalingType.SCALE_ASPECT_BALANCED);
30 29
31 /** 30 /**
32 * List with MeasureSpec modes. 31 * List with MeasureSpec modes.
33 */ 32 */
34 private static final List<Integer> measureSpecModes = 33 private static final List<Integer> measureSpecModes =
35 Arrays.asList(MeasureSpec.EXACTLY, MeasureSpec.AT_MOST); 34 Arrays.asList(MeasureSpec.EXACTLY, MeasureSpec.AT_MOST);
36 35
37 /** 36 /**
38 * Returns a dummy YUV frame. 37 * Returns a dummy YUV frame.
39 */ 38 */
40 static VideoRenderer.I420Frame createFrame(int width, int height, int rotation Degree) { 39 static VideoRenderer.I420Frame createFrame(int width, int height, int rotation Degree) {
41 final int[] yuvStrides = new int[] {width, (width + 1) / 2, (width + 1) / 2} ; 40 final int[] yuvStrides = new int[] {width, (width + 1) / 2, (width + 1) / 2} ;
42 final int[] yuvHeights = new int[] {height, (height + 1) / 2, (height + 1) / 2}; 41 final int[] yuvHeights = new int[] {height, (height + 1) / 2, (height + 1) / 2};
43 final ByteBuffer[] yuvPlanes = new ByteBuffer[3]; 42 final ByteBuffer[] yuvPlanes = new ByteBuffer[3];
44 for (int i = 0; i < 3; ++i) { 43 for (int i = 0; i < 3; ++i) {
45 yuvPlanes[i] = ByteBuffer.allocateDirect(yuvStrides[i] * yuvHeights[i]); 44 yuvPlanes[i] = ByteBuffer.allocateDirect(yuvStrides[i] * yuvHeights[i]);
46 } 45 }
47 return new VideoRenderer.I420Frame(width, height, rotationDegree, yuvStrides , yuvPlanes, 0); 46 return new VideoRenderer.I420Frame(width, height, rotationDegree, yuvStrides , yuvPlanes, 0);
48 } 47 }
49 48
50 /** 49 /**
51 * Assert onMeasure() with given parameters will result in expected measured s ize. 50 * Assert onMeasure() with given parameters will result in expected measured s ize.
52 */ 51 */
53 private static void assertMeasuredSize( 52 private static void assertMeasuredSize(SurfaceViewRenderer surfaceViewRenderer ,
54 SurfaceViewRenderer surfaceViewRenderer, RendererCommon.ScalingType scalin gType, 53 RendererCommon.ScalingType scalingType, String frameDimensions, int expect edWidth,
55 String frameDimensions, 54 int expectedHeight, int widthSpec, int heightSpec) {
56 int expectedWidth, int expectedHeight,
57 int widthSpec, int heightSpec) {
58 surfaceViewRenderer.setScalingType(scalingType); 55 surfaceViewRenderer.setScalingType(scalingType);
59 surfaceViewRenderer.onMeasure(widthSpec, heightSpec); 56 surfaceViewRenderer.onMeasure(widthSpec, heightSpec);
60 final int measuredWidth = surfaceViewRenderer.getMeasuredWidth(); 57 final int measuredWidth = surfaceViewRenderer.getMeasuredWidth();
61 final int measuredHeight = surfaceViewRenderer.getMeasuredHeight(); 58 final int measuredHeight = surfaceViewRenderer.getMeasuredHeight();
62 if (measuredWidth != expectedWidth || measuredHeight != expectedHeight) { 59 if (measuredWidth != expectedWidth || measuredHeight != expectedHeight) {
63 fail("onMeasure(" 60 fail("onMeasure(" + MeasureSpec.toString(widthSpec) + ", " + MeasureSpec.t oString(heightSpec)
64 + MeasureSpec.toString(widthSpec) + ", " + MeasureSpec.toString(height Spec) + ")" 61 + ")"
65 + " with scaling type " + scalingType 62 + " with scaling type " + scalingType + " and frame: " + frameDimensio ns
66 + " and frame: " + frameDimensions 63 + " expected measured size " + expectedWidth + "x" + expectedHeight + ", but was "
67 + " expected measured size " + expectedWidth + "x" + expectedHeight 64 + measuredWidth + "x" + measuredHeight);
68 + ", but was " + measuredWidth + "x" + measuredHeight);
69 } 65 }
70 } 66 }
71 67
72 /** 68 /**
73 * Test how SurfaceViewRenderer.onMeasure() behaves when no frame has been del ivered. 69 * Test how SurfaceViewRenderer.onMeasure() behaves when no frame has been del ivered.
74 */ 70 */
75 @MediumTest 71 @MediumTest
76 public void testNoFrame() { 72 public void testNoFrame() {
77 final SurfaceViewRenderer surfaceViewRenderer = 73 final SurfaceViewRenderer surfaceViewRenderer =
78 new SurfaceViewRenderer(getInstrumentation().getContext()); 74 new SurfaceViewRenderer(getInstrumentation().getContext());
79 final String frameDimensions = "null"; 75 final String frameDimensions = "null";
80 76
81 // Test behaviour before SurfaceViewRenderer.init() is called. 77 // Test behaviour before SurfaceViewRenderer.init() is called.
82 for (RendererCommon.ScalingType scalingType : scalingTypes) { 78 for (RendererCommon.ScalingType scalingType : scalingTypes) {
83 for (int measureSpecMode : measureSpecModes) { 79 for (int measureSpecMode : measureSpecModes) {
84 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMo de); 80 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMo de);
85 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 81 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0, zeroMeasureSize,
86 0, 0, zeroMeasureSize, zeroMeasureSize); 82 zeroMeasureSize);
87 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 83 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 12 80, 720,
88 1280, 720,
89 MeasureSpec.makeMeasureSpec(1280, measureSpecMode), 84 MeasureSpec.makeMeasureSpec(1280, measureSpecMode),
90 MeasureSpec.makeMeasureSpec(720, measureSpecMode)); 85 MeasureSpec.makeMeasureSpec(720, measureSpecMode));
91 } 86 }
92 } 87 }
93 88
94 // Test behaviour after SurfaceViewRenderer.init() is called, but still no fr ame. 89 // Test behaviour after SurfaceViewRenderer.init() is called, but still no f rame.
95 surfaceViewRenderer.init((EglBase.Context) null, null); 90 surfaceViewRenderer.init((EglBase.Context) null, null);
96 for (RendererCommon.ScalingType scalingType : scalingTypes) { 91 for (RendererCommon.ScalingType scalingType : scalingTypes) {
97 for (int measureSpecMode : measureSpecModes) { 92 for (int measureSpecMode : measureSpecModes) {
98 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMo de); 93 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMo de);
99 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 94 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0, zeroMeasureSize,
100 0, 0, zeroMeasureSize, zeroMeasureSize); 95 zeroMeasureSize);
101 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 96 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 12 80, 720,
102 1280, 720,
103 MeasureSpec.makeMeasureSpec(1280, measureSpecMode), 97 MeasureSpec.makeMeasureSpec(1280, measureSpecMode),
104 MeasureSpec.makeMeasureSpec(720, measureSpecMode)); 98 MeasureSpec.makeMeasureSpec(720, measureSpecMode));
105 } 99 }
106 } 100 }
107 101
108 surfaceViewRenderer.release(); 102 surfaceViewRenderer.release();
109 } 103 }
110 104
111 /** 105 /**
112 * Test how SurfaceViewRenderer.onMeasure() behaves with a 1280x720 frame. 106 * Test how SurfaceViewRenderer.onMeasure() behaves with a 1280x720 frame.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 assertEquals(rotatedHeight, frame.rotatedHeight()); 150 assertEquals(rotatedHeight, frame.rotatedHeight());
157 final String frameDimensions = 151 final String frameDimensions =
158 unrotatedWidth + "x" + unrotatedHeight + " with rotation " + rotationD egree; 152 unrotatedWidth + "x" + unrotatedHeight + " with rotation " + rotationD egree;
159 surfaceViewRenderer.renderFrame(frame); 153 surfaceViewRenderer.renderFrame(frame);
160 rendererEvents.waitForFrameSize(unrotatedWidth, unrotatedHeight, rotationD egree); 154 rendererEvents.waitForFrameSize(unrotatedWidth, unrotatedHeight, rotationD egree);
161 155
162 // Test forcing to zero size. 156 // Test forcing to zero size.
163 for (RendererCommon.ScalingType scalingType : scalingTypes) { 157 for (RendererCommon.ScalingType scalingType : scalingTypes) {
164 for (int measureSpecMode : measureSpecModes) { 158 for (int measureSpecMode : measureSpecModes) {
165 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpec Mode); 159 final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpec Mode);
166 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 160 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0,
167 0, 0, zeroMeasureSize, zeroMeasureSize); 161 zeroMeasureSize, zeroMeasureSize);
168 } 162 }
169 } 163 }
170 164
171 // Test perfect fit. 165 // Test perfect fit.
172 for (RendererCommon.ScalingType scalingType : scalingTypes) { 166 for (RendererCommon.ScalingType scalingType : scalingTypes) {
173 for (int measureSpecMode : measureSpecModes) { 167 for (int measureSpecMode : measureSpecModes) {
174 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 168 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, rotatedWidth,
175 rotatedWidth, rotatedHeight, 169 rotatedHeight, MeasureSpec.makeMeasureSpec(rotatedWidth, measureSp ecMode),
176 MeasureSpec.makeMeasureSpec(rotatedWidth, measureSpecMode),
177 MeasureSpec.makeMeasureSpec(rotatedHeight, measureSpecMode)); 170 MeasureSpec.makeMeasureSpec(rotatedHeight, measureSpecMode));
178 } 171 }
179 } 172 }
180 173
181 // Force spec size with different aspect ratio than frame aspect ratio. 174 // Force spec size with different aspect ratio than frame aspect ratio.
182 for (RendererCommon.ScalingType scalingType : scalingTypes) { 175 for (RendererCommon.ScalingType scalingType : scalingTypes) {
183 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 176 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 72 0, 1280,
184 720, 1280,
185 MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACTLY), 177 MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACTLY),
186 MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXACTLY)); 178 MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXACTLY));
187 } 179 }
188 180
189 final float videoAspectRatio = (float) rotatedWidth / rotatedHeight; 181 final float videoAspectRatio = (float) rotatedWidth / rotatedHeight;
190 { 182 {
191 // Relax both width and height constraints. 183 // Relax both width and height constraints.
192 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MO ST); 184 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MO ST);
193 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_ MOST); 185 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_ MOST);
194 for (RendererCommon.ScalingType scalingType : scalingTypes) { 186 for (RendererCommon.ScalingType scalingType : scalingTypes) {
195 final Point expectedSize = 187 final Point expectedSize =
196 RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280); 188 RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280);
197 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 189 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, expectedSize.x,
198 expectedSize.x, expectedSize.y, widthSpec, heightSpec); 190 expectedSize.y, widthSpec, heightSpec);
199 } 191 }
200 } 192 }
201 { 193 {
202 // Force width to 720, but relax height constraint. This will give the s ame result as 194 // Force width to 720, but relax height constraint. This will give the s ame result as
203 // above, because width is already the limiting factor and will be maxed out. 195 // above, because width is already the limiting factor and will be maxed out.
204 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACT LY); 196 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACT LY);
205 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_ MOST); 197 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_ MOST);
206 for (RendererCommon.ScalingType scalingType : scalingTypes) { 198 for (RendererCommon.ScalingType scalingType : scalingTypes) {
207 final Point expectedSize = 199 final Point expectedSize =
208 RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280); 200 RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280);
209 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 201 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, expectedSize.x,
210 expectedSize.x, expectedSize.y, widthSpec, heightSpec); 202 expectedSize.y, widthSpec, heightSpec);
211 } 203 }
212 } 204 }
213 { 205 {
214 // Force height, but relax width constraint. This will force a bad layou t size. 206 // Force height, but relax width constraint. This will force a bad layou t size.
215 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MO ST); 207 final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MO ST);
216 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXA CTLY); 208 final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXA CTLY);
217 for (RendererCommon.ScalingType scalingType : scalingTypes) { 209 for (RendererCommon.ScalingType scalingType : scalingTypes) {
218 assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 210 assertMeasuredSize(
219 720, 1280, widthSpec, heightSpec); 211 surfaceViewRenderer, scalingType, frameDimensions, 720, 1280, widt hSpec, heightSpec);
220 } 212 }
221 } 213 }
222 } 214 }
223 215
224 surfaceViewRenderer.release(); 216 surfaceViewRenderer.release();
225 } 217 }
226 } 218 }
OLDNEW
« no previous file with comments | « webrtc/api/androidtests/src/org/webrtc/SurfaceTextureHelperTest.java ('k') | webrtc/base/java/src/org/webrtc/Logging.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698