testDecodeAfterFlush: extend to audio

Also set completion flag if skipping test.

Bug: 24345187
Change-Id: I047ad32e8e27cf689d0acf91134e40435fa43904
diff --git a/tests/tests/media/src/android/media/cts/MediaCodecTest.java b/tests/tests/media/src/android/media/cts/MediaCodecTest.java
index bb05ea0..fba805e 100644
--- a/tests/tests/media/src/android/media/cts/MediaCodecTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaCodecTest.java
@@ -798,6 +798,11 @@
     }
 
     public void testDecodeAfterFlush() throws InterruptedException {
+        testDecodeAfterFlush(true /* audio */);
+        testDecodeAfterFlush(false /* audio */);
+    }
+
+    private void testDecodeAfterFlush(final boolean audio) throws InterruptedException {
         final int INPUT_RESOURCE_ID =
                 R.raw.video_480x360_mp4_h264_1350kbps_30fps_aac_stereo_192kbps_44100hz;
 
@@ -806,23 +811,27 @@
         final int DECODING_TIMEOUT_MS = 10000;
 
         final AtomicBoolean completed = new AtomicBoolean(false);
-        Thread videoDecodingThread = new Thread(new Runnable() {
+        Thread decodingThread = new Thread(new Runnable() {
             @Override
             public void run() {
                 OutputSurface outputSurface = null;
                 MediaExtractor mediaExtractor = null;
                 MediaCodec mediaCodec = null;
                 try {
-                    outputSurface = new OutputSurface(1, 1);
-                    mediaExtractor = getMediaExtractorForMimeType(INPUT_RESOURCE_ID, "video/");
+                    String mimeTypePrefix  = audio ? "audio/" : "video/";
+                    if (!audio) {
+                        outputSurface = new OutputSurface(1, 1);
+                    }
+                    mediaExtractor = getMediaExtractorForMimeType(INPUT_RESOURCE_ID, mimeTypePrefix);
                     MediaFormat mediaFormat =
                             mediaExtractor.getTrackFormat(mediaExtractor.getSampleTrackIndex());
                     if (!MediaUtils.checkDecoderForFormat(mediaFormat)) {
+                        completed.set(true);
                         return; // skip
                     }
                     String mimeType = mediaFormat.getString(MediaFormat.KEY_MIME);
                     mediaCodec = MediaCodec.createDecoderByType(mimeType);
-                    mediaCodec.configure(mediaFormat, outputSurface.getSurface(),
+                    mediaCodec.configure(mediaFormat, outputSurface == null ? null : outputSurface.getSurface(),
                             null /* crypto */, 0 /* flags */);
                     mediaCodec.start();
 
@@ -851,10 +860,10 @@
                 }
             }
         });
-        videoDecodingThread.start();
-        videoDecodingThread.join(DECODING_TIMEOUT_MS);
+        decodingThread.start();
+        decodingThread.join(DECODING_TIMEOUT_MS);
         // In case it's timed out, need to stop the thread and have all resources released.
-        videoDecodingThread.interrupt();
+        decodingThread.interrupt();
         if (!completed.get()) {
             throw new RuntimeException("timed out decoding to end-of-stream");
         }