现在的位置: 首页 > 综合 > 正文

CTS test failed —– android.graphics.cts.YuvImageTest#testCompressYuvToJpeg

2013年08月30日 ⁄ 综合 ⁄ 共 8319字 ⁄ 字号 评论关闭
From:http://code.google.com/p/android/issues/detail?id=11290
Reported by udaykira...@gmail.com, Sep 16, 2010
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

(No comment was entered for this change.)
Owner: btm...@android.com
Comment 2 by khanhlv...@gmail.com, Nov 14, 2010

I also get the same problem.
Does anyone have solution and what is the cause?
Comment 3 by myamase...@gmail.com, 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
Comment 4 by project member btm...@android.com, Nov 15, 2010

Yes, that patch should fix things. It will included in the next release.
Status: FutureRelease
Comment 5 by t4tina...@gmail.com, 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? 

Comment 6 by project member btm...@android.com, 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 @@
         }
     }
 }
+

抱歉!评论已关闭.