Below test was executed on emulator. cts_host > start test android.graphics.cts.YuvImageTest#testCompressYuvToJpeg ============================================================== Test package: android.graphics android.graphics.cts.YuvImageTest#testCompressYuvToJpeg........................(fail) junit.framework.AssertionFailedError: MSE too large for normal case: 850.3241935483871 at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) ============================================================== Time: 9388.689s ************************************************************************** Second Trial on another PC. ============================ result for standard android2.2 sdk njred202:/remoterepo/a20234/venus2/sdk_upload/android-cts[1009] $ ./tools/startcts Android CTS version 2.2_r2 Device(emulator-5554) connected cts_host > start --plan CTS -t android.graphics.cts.YuvImageTest#testCompressYuvToJpeg cts_host > start test android.graphics.cts.YuvImageTest#testCompressYuvToJpeg ============================================================== Test package: android.graphics android.graphics.cts.YuvImageTest#testCompressYuvToJpeg....(fail) junit.framework.AssertionFailedError: MSE too large for normal case: 850.3241935483871 at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) ============================================================== Time: 2557.41s ************************************************************************ Third Trial on another PC. ============================ cts_host > result for venus2 sdk: njred202:/remoterepo/a20234/venus2/sdk_upload/android-cts[1007] $ ./tools/startcts Android CTS version 2.2_r2 Device(emulator-5554) connected cts_host > cts_host > start --plan CTS -t android.graphics.cts.YuvImageTest#testCompressYuvToJpeg start test android.graphics.cts.YuvImageTest#testCompressYuvToJpeg ============================================================== Test package: android.graphics android.graphics.cts.YuvImageTest#testCompressYuvToJpeg....(fail) junit.framework.AssertionFailedError: MSE too large for normal case: 849.296370967742 at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) at android.graphics.cts.YuvImageTest.compareBitmaps(YuvImageTest.java:355) at android.graphics.cts.YuvImageTest.compressRects(YuvImageTest.java:251) at android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) ============================================================== Time: 1834.855s
Comment 1 by project member e...@google.com,
Sep 20, 2010
Owner: btm...@android.com
Nov 14, 2010
,
I also get the same problem. Does anyone have solution and what is the cause?
Nov 14, 2010
,
Hello. I get the same problem. I applied the patch (A). So this test passed! (A) http://android.git.kernel.org/?p=platform/cts.git;a=commit;h=cac69966080b824fe6c10a011f7d2658681ae8de
Nov 15, 2010
,
Yes, that patch should fix things. It will included in the next release.
Status: FutureRelease
Nov 15, 2010
,
android.graphics.cts.YuvImageTest.testCompressYuvToJpeg(YuvImageTest.java:189) at this line we pass two copies of the same rect[l], so effectively the altered code is doing the same job as that of unchanged code.. how is this fix solving the issue?
Nov 16, 2010
,
t4tina007, the compressRects method (line 243) changed to pass in a different argument to compareBitmaps (line 255) depending on whether or not the rect1 and rect2 arguments passed to compressRects was the same. Beyond that, I can't tell you much, since this is not my area of expertise. However, here is what the reviewer commented before approving it: "...the issue is that the requested rectangle region for doing the YuvToJpeg compression may be adjusted in the cases that the left-top point of the region is located in odd-indexed position. In such cases, the rectangle in the golden test image should be adjusted accordingly."
看看补丁最新的补丁:比较一下新、旧YuvImageTest.java的不同。
修改后,测试通过!
个人觉得是因为 actual = compressDecompress(image, rect2),当rect2的left,top是奇数时,这一句会将rect2的left,top改变。
此时而rect1和rect2是指向同一个的,所以rect1在被compressToJpeg()后,其left,top也会改变,由(11,11)变成(10,10)
diff -u /source/android-2.2/cts/tests/tests/graphics/src/android/graphics/cts/YuvImageTest.java /home/yhluo/tmp/YuvImageTest_new.txt
--- /source/android-2.2/cts/tests/tests/graphics/src/android/graphics/cts/YuvImageTest.java 2010-12-02 03:49:41.000000000 +0800
+++ /home/yhluo/tmp/YuvImageTest_new.txt 2011-03-24 14:58:59.000000000 +0800
@@ -245,9 +245,13 @@
Bitmap expected = null;
Bitmap actual = null;
boolean sameRect = rect1.equals(rect2) ? true : false;
- expected = Bitmap.createBitmap(testBitmap, rect1.left, rect1.top,
- rect1.width(), rect1.height());
- actual = compressDecompress(image, rect2);
+
+ Rect actualRect = new Rect(rect2);
+ actual = compressDecompress(image, actualRect);
+
+ Rect expectedRect = sameRect ? actualRect : rect1;
+ expected = Bitmap.createBitmap(testBitmap, expectedRect.left, expectedRect.top, expectedRect.width(), expectedRect.height());
+
compareBitmaps(expected, actual, mMseMargin, sameRect);
}
@@ -422,3 +426,4 @@
}
}
}
+