transcoding: Add TranscodingTestConfig for testing.

TranscodingTestConfig will have passThrough and processingDelayMs
that are used to signal the transcoding service to bypass
mediatranscoder for testing purpose.

Bug: 145628554
Test: atest MediaTranscodeManagerTest

Change-Id: Iac6a61ebda50f1a4b30e0d17022169aa9c6c06f2
diff --git a/media/libmediatranscoding/Android.bp b/media/libmediatranscoding/Android.bp
index c299087..b6dca8d 100644
--- a/media/libmediatranscoding/Android.bp
+++ b/media/libmediatranscoding/Android.bp
@@ -31,6 +31,7 @@
         "aidl/android/media/TranscodingJobParcel.aidl",
         "aidl/android/media/TranscodingRequestParcel.aidl",
         "aidl/android/media/TranscodingResultParcel.aidl",
+        "aidl/android/media/TranscodingTestConfig.aidl",
     ],
     backend:
     {
diff --git a/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl b/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
index fb0b918..3ed9f0d 100644
--- a/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
+++ b/media/libmediatranscoding/aidl/android/media/TranscodingRequestParcel.aidl
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.media.TranscodingJobPriority;
+import android.media.TranscodingTestConfig;
 import android.media.TranscodingType;
 import android.media.TranscodingVideoTrackFormat;
 
@@ -59,4 +60,15 @@
      * Whether to receive update on progress and change of awaitNumJobs.
      */
     boolean requestUpdate;
+
+    /**
+     * Whether this request is for testing.
+     */
+    boolean isForTesting = false;
+
+    /**
+     * Test configuration. This is only valid when isForTesting is set to true.
+     */
+
+    TranscodingTestConfig testConfig;
 }
diff --git a/media/libmediatranscoding/aidl/android/media/TranscodingTestConfig.aidl b/media/libmediatranscoding/aidl/android/media/TranscodingTestConfig.aidl
new file mode 100644
index 0000000..8d7091a
--- /dev/null
+++ b/media/libmediatranscoding/aidl/android/media/TranscodingTestConfig.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ package android.media;
+
+ /**
+  * TranscodingTestConfig contains the test configureation used in testing.
+  *
+  * {@hide}
+  */
+parcelable TranscodingTestConfig {
+    /**
+     * Passthrough mode used for testing. The transcoding service will assume the destination
+     * path already contains the transcoding of the source file and return it to client directly.
+     */
+    boolean passThroughMode = false;
+
+    /**
+     * Delay of processing the job in milliseconds. Used only for testing. This comebines with
+     * passThroughMode are used to simulate the transcoding latency in transcoding without involvign
+     * MediaTranscoder.
+     */
+    int processingDelayMs = 0;
+}
diff --git a/media/libmediatranscoding/include/media/TranscodingRequest.h b/media/libmediatranscoding/include/media/TranscodingRequest.h
index 25236bd..7471cb7 100644
--- a/media/libmediatranscoding/include/media/TranscodingRequest.h
+++ b/media/libmediatranscoding/include/media/TranscodingRequest.h
@@ -40,6 +40,8 @@
         transcodingType = parcel.transcodingType;
         priority = parcel.priority;
         requestUpdate = parcel.requestUpdate;
+        isForTesting = parcel.isForTesting;
+        testConfig = parcel.testConfig;
     }
 };