media bitstreams test: use MediaPreparer to dl test input

Bug: 65165250
Test: cts-tradefed run cts -m CtsMediaStressTestCases
Test: cts-tradefed run cts -m CtsMediaBitStreamsTestCases
Merged-In: I598edc53d0779d80e65f975d9556f158f6a19fbb
Change-Id: I446d483a604ee898a26b28b11789fa27d5ca4364
diff --git a/hostsidetests/media/bitstreams/AndroidTest.xml b/hostsidetests/media/bitstreams/AndroidTest.xml
index 2603aba..9c8da50 100644
--- a/hostsidetests/media/bitstreams/AndroidTest.xml
+++ b/hostsidetests/media/bitstreams/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS Sample host test cases">
     <option name="config-descriptor:metadata" key="component" value="media" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer">
+        <option name="media-download-only" value="true" />
+    </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsMediaBitstreamsDeviceSideTestApp.apk" />
diff --git a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
index 669a508..46a39fc 100644
--- a/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
+++ b/hostsidetests/media/bitstreams/src/android/media/cts/bitstreams/MediaBitstreamsTest.java
@@ -16,6 +16,7 @@
 package android.media.cts.bitstreams;
 
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.compatibility.common.tradefed.targetprep.MediaPreparer;
 import com.android.compatibility.common.util.MetricsReportLog;
 import com.android.compatibility.common.util.ResultType;
 import com.android.compatibility.common.util.ResultUnit;
@@ -32,6 +33,7 @@
 import com.android.tradefed.util.FileUtil;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -66,7 +68,7 @@
     @Option(name = MediaBitstreams.OPT_HOST_BITSTREAMS_PATH,
             description = "Absolute path of Ittiam bitstreams (host)",
             mandatory = true)
-    private File mHostBitstreamsPath = new File(MediaBitstreams.DEFAULT_HOST_BITSTREAMS_PATH);
+    private File mHostBitstreamsPath = getDefaultBitstreamsDir();
 
     @Option(name = MediaBitstreams.OPT_DEVICE_BITSTREAMS_PATH,
             description = "Absolute path of Ittiam bitstreams (device)")
@@ -129,6 +131,22 @@
     private IAbi mAbi;
     private ITestDevice mDevice;
 
+    static File getDefaultBitstreamsDir() {
+        File mediaDir = MediaPreparer.getDefaultMediaDir();
+        File[] subDirs = mediaDir.listFiles(new FileFilter() {
+            @Override
+            public boolean accept(File child) {
+                return child.isDirectory();
+            }
+        });
+        if (subDirs != null && subDirs.length == 1) {
+            File parent = new File(mediaDir, subDirs[0].getName());
+            return new File(parent, MediaBitstreams.DEFAULT_HOST_BITSTREAMS_PATH);
+        } else {
+            return new File(MediaBitstreams.DEFAULT_HOST_BITSTREAMS_PATH);
+        }
+    }
+
     static Collection<Object[]> bitstreams(String prefix, BitstreamPackage packageToRun) {
         final String dynConfXml = new File("/", MediaBitstreams.DYNAMIC_CONFIG_XML).toString();
         try (InputStream is = MediaBitstreamsTest.class.getResourceAsStream(dynConfXml)) {