CodecDecoderSurfaceTest: Don't test P010 when vendor version is under T

P010 is implemented both in framework and vendor from T. Test P010 only
when both framework and vendor are T or above.

Bug: 235610661
Change-Id: Id96aee44d8ddfabeab2c76b19d5bb50fd8c039fd
diff --git a/tests/media/src/android/mediav2/cts/CodecDecoderSurfaceTest.java b/tests/media/src/android/mediav2/cts/CodecDecoderSurfaceTest.java
index e8243f8..f03fa90 100644
--- a/tests/media/src/android/mediav2/cts/CodecDecoderSurfaceTest.java
+++ b/tests/media/src/android/mediav2/cts/CodecDecoderSurfaceTest.java
@@ -198,18 +198,20 @@
     @Test(timeout = PER_TEST_TIMEOUT_LARGE_TEST_MS)
     public void testSimpleDecodeToSurface() throws IOException, InterruptedException {
         boolean[] boolStates = {true, false};
-        OutputManager ref;
+        OutputManager ref = null;
         OutputManager test = new OutputManager();
         final long pts = 0;
         final int mode = MediaExtractor.SEEK_TO_CLOSEST_SYNC;
         {
-            decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
-            ref = mOutputBuff;
-            // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-            // produce multiple progressive frames?) For now, do not verify timestamps.
-            if (!mIsInterlaced) {
-                assertTrue("input pts list and output pts list are not identical",
-                        ref.isOutPtsListIdenticalToInpPtsList(false));
+            if (!mSkipChecksumVerification || VNDK_IS_AT_LEAST_T) {
+                decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
+                ref = mOutputBuff;
+                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
+                // produce multiple progressive frames?) For now, do not verify timestamps.
+                if (!mIsInterlaced) {
+                    assertTrue("input pts list and output pts list are not identical",
+                            ref.isOutPtsListIdenticalToInpPtsList(false));
+                }
             }
             MediaFormat format = setUpSource(mTestFile);
             mCodec = MediaCodec.createByCodecName(mCodecName);
@@ -231,12 +233,15 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", ref.equals(test));
+                if (ref != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", ref.equals(test));
+                    }
                 }
             }
             mCodec.release();
@@ -266,13 +271,16 @@
         boolean[] boolStates = {true, false};
         OutputManager test = new OutputManager();
         {
-            decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
-            OutputManager ref = mOutputBuff;
-            // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-            // produce multiple progressive frames?) For now, do not verify timestamps.
-            if (!mIsInterlaced) {
-                assertTrue("input pts list and output pts list are not identical",
-                        ref.isOutPtsListIdenticalToInpPtsList(false));
+            OutputManager ref = null;
+            if (!mSkipChecksumVerification || VNDK_IS_AT_LEAST_T) {
+                decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
+                ref = mOutputBuff;
+                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
+                // produce multiple progressive frames?) For now, do not verify timestamps.
+                if (!mIsInterlaced) {
+                    assertTrue("input pts list and output pts list are not identical",
+                            ref.isOutPtsListIdenticalToInpPtsList(false));
+                }
             }
             mOutputBuff = test;
             setUpSource(mTestFile);
@@ -312,12 +320,15 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", ref.equals(test));
+                if (ref != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", ref.equals(test));
+                    }
                 }
 
                 /* test flush in eos state */
@@ -334,12 +345,15 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", ref.equals(test));
+                if (ref != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", ref.equals(test));
+                    }
                 }
             }
             mCodec.release();
@@ -368,19 +382,24 @@
         boolean[] boolStates = {true, false};
         OutputManager test = new OutputManager();
         {
-            decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
-            OutputManager ref = mOutputBuff;
-            if (!mIsInterlaced) {
-                assertTrue("input pts list and reference pts list are not identical",
-                        ref.isOutPtsListIdenticalToInpPtsList(false));
-            }
-            decodeAndSavePts(mReconfigFile, mCodecName, pts, mode, Integer.MAX_VALUE);
-            OutputManager configRef = mOutputBuff;
-            // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-            // produce multiple progressive frames?) For now, do not verify timestamps.
-            if (!mIsInterlaced) {
-                assertTrue("input pts list and reconfig ref output pts list are not identical",
-                        configRef.isOutPtsListIdenticalToInpPtsList(false));
+            OutputManager ref = null;
+            OutputManager configRef = null;
+
+            if (!mSkipChecksumVerification || VNDK_IS_AT_LEAST_T) {
+                decodeAndSavePts(mTestFile, mCodecName, pts, mode, Integer.MAX_VALUE);
+                ref = mOutputBuff;
+                if (!mIsInterlaced) {
+                    assertTrue("input pts list and reference pts list are not identical",
+                            ref.isOutPtsListIdenticalToInpPtsList(false));
+                }
+                decodeAndSavePts(mReconfigFile, mCodecName, pts, mode, Integer.MAX_VALUE);
+                configRef = mOutputBuff;
+                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
+                // produce multiple progressive frames?) For now, do not verify timestamps.
+                if (!mIsInterlaced) {
+                    assertTrue("input pts list and reconfig ref output pts list are not identical",
+                            configRef.isOutPtsListIdenticalToInpPtsList(false));
+                }
             }
             mOutputBuff = test;
             mCodec = MediaCodec.createByCodecName(mCodecName);
@@ -415,12 +434,15 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", ref.equals(test));
+                if (ref != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", ref.equals(test));
+                    }
                 }
                 /* test reconfigure codec at eos state */
                 reConfigureCodec(format, !isAsync, false, false);
@@ -436,12 +458,15 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", ref.equals(test));
+                if (ref != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky", ref.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", ref.equals(test));
+                    }
                 }
                 mExtractor.release();
 
@@ -463,12 +488,16 @@
                 assertTrue(log + " unexpected error", !mAsyncHandle.hasSeenError());
                 assertTrue(log + "no input sent", 0 != mInputCount);
                 assertTrue(log + "output received", 0 != mOutputCount);
-                // TODO: Timestamps for deinterlaced content are under review. (E.g. can decoders
-                // produce multiple progressive frames?) For now, do not verify timestamps.
-                if (mIsInterlaced) {
-                    assertTrue(log + "decoder output is flaky", configRef.equalsInterlaced(test));
-                } else {
-                    assertTrue(log + "decoder output is flaky", configRef.equals(test));
+                if (configRef != null) {
+                    // TODO: Timestamps for deinterlaced content are under review.
+                    // (E.g. can decoders produce multiple progressive frames?)
+                    // For now, do not verify timestamps.
+                    if (mIsInterlaced) {
+                        assertTrue(log + "decoder output is flaky",
+                            configRef.equalsInterlaced(test));
+                    } else {
+                        assertTrue(log + "decoder output is flaky", configRef.equals(test));
+                    }
                 }
                 mExtractor.release();
             }
@@ -482,6 +511,9 @@
     @LargeTest
     @Test(timeout = PER_TEST_TIMEOUT_LARGE_TEST_MS)
     public void testSimpleDecodeToSurfaceNative() throws IOException {
+        if (mSkipChecksumVerification) {
+            Assume.assumeTrue("vendor should be T or higher", VNDK_IS_AT_LEAST_T);
+        }
         MediaFormat format = setUpSource(mTestFile);
         mExtractor.release();
         mActivity.setScreenParams(getWidth(format), getHeight(format), false);
@@ -496,6 +528,9 @@
     @LargeTest
     @Test(timeout = PER_TEST_TIMEOUT_LARGE_TEST_MS)
     public void testFlushNative() throws IOException {
+        if (mSkipChecksumVerification) {
+            Assume.assumeTrue("vendor should be T or higher", VNDK_IS_AT_LEAST_T);
+        }
         MediaFormat format = setUpSource(mTestFile);
         mExtractor.release();
         mActivity.setScreenParams(getWidth(format), getHeight(format), true);