MediaTranscodingService: Separate jni file into a sperate library.
This is needed when we move MediaTranscodeManager into apex.
Also rework the MediaTranscodeManager test so it could be invoked with
instrument.
Bug: 145628554
Test: MediaTranscodeManagerTest.
Change-Id: If0572af30d3aa7b7189ea0fc89582b83dd0d5d35
diff --git a/media/java/android/media/MediaTranscodeManager.java b/media/java/android/media/MediaTranscodeManager.java
index 2c431b9..5122cbe 100644
--- a/media/java/android/media/MediaTranscodeManager.java
+++ b/media/java/android/media/MediaTranscodeManager.java
@@ -397,7 +397,7 @@
}
static {
- System.loadLibrary("media_jni");
+ System.loadLibrary("mediatranscodemanager_jni");
native_init();
}
}
diff --git a/media/jni/Android.bp b/media/jni/Android.bp
index d2294b3..7518496 100644
--- a/media/jni/Android.bp
+++ b/media/jni/Android.bp
@@ -21,7 +21,6 @@
"android_media_MediaProfiles.cpp",
"android_media_MediaRecorder.cpp",
"android_media_MediaSync.cpp",
- "android_media_MediaTranscodeManager.cpp",
"android_media_ResampleInputStream.cpp",
"android_media_Streams.cpp",
"android_media_SyncParams.cpp",
@@ -166,3 +165,27 @@
"-Wunreachable-code",
],
}
+
+cc_library_shared {
+ name: "libmediatranscodemanager_jni",
+ srcs: [
+ "android_media_MediaTranscodeManager.cpp",
+ ],
+
+ shared_libs: [
+ "libandroid_runtime",
+ "libcutils",
+ "liblog",
+ "libmedia",
+ ],
+
+ export_include_dirs: ["."],
+
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wno-error=deprecated-declarations",
+ "-Wunused",
+ "-Wunreachable-code",
+ ],
+}
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 5cb42a9a..963b650 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -1453,7 +1453,6 @@
extern int register_android_mtp_MtpDatabase(JNIEnv *env);
extern int register_android_mtp_MtpDevice(JNIEnv *env);
extern int register_android_mtp_MtpServer(JNIEnv *env);
-extern int register_android_media_MediaTranscodeManager(JNIEnv *env);
jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
{
@@ -1566,11 +1565,6 @@
goto bail;
}
- if (register_android_media_MediaTranscodeManager(env) < 0) {
- ALOGE("ERROR: MediaTranscodeManager native registration failed");
- goto bail;
- }
-
/* success -- return valid version number */
result = JNI_VERSION_1_4;
diff --git a/media/jni/android_media_MediaTranscodeManager.cpp b/media/jni/android_media_MediaTranscodeManager.cpp
index 0b4048c..6695f85 100644
--- a/media/jni/android_media_MediaTranscodeManager.cpp
+++ b/media/jni/android_media_MediaTranscodeManager.cpp
@@ -100,3 +100,26 @@
return AndroidRuntime::registerNativeMethods(env,
"android/media/MediaTranscodeManager", gMethods, NELEM(gMethods));
}
+
+jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
+{
+ JNIEnv* env = NULL;
+ jint result = -1;
+
+ if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
+ ALOGE("ERROR: GetEnv failed\n");
+ return result;
+ }
+ assert(env != NULL);
+
+ if (register_android_media_MediaTranscodeManager(env) < 0) {
+ ALOGE("ERROR: MediaTranscodeManager native registration failed");
+ goto bail;
+ }
+
+ /* success -- return valid version number */
+ result = JNI_VERSION_1_4;
+
+bail:
+ return result;
+}
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
index a9dc886..2d1820e 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaFrameworkTestRunner.java
@@ -16,27 +16,29 @@
package com.android.mediaframeworktest;
+import android.os.Bundle;
+import android.test.InstrumentationTestRunner;
+import android.test.InstrumentationTestSuite;
+
import com.android.mediaframeworktest.functional.CameraTest;
import com.android.mediaframeworktest.functional.MediaMetadataTest;
import com.android.mediaframeworktest.functional.MediaMimeTest;
import com.android.mediaframeworktest.functional.MediaPlayerInvokeTest;
-import com.android.mediaframeworktest.functional.mediaplayback.MediaPlayerApiTest;
-import com.android.mediaframeworktest.functional.mediarecorder.MediaRecorderTest;
-import com.android.mediaframeworktest.functional.audio.SimTonesTest;
-import com.android.mediaframeworktest.functional.audio.MediaAudioTrackTest;
-import com.android.mediaframeworktest.functional.audio.MediaAudioManagerTest;
+import com.android.mediaframeworktest.functional.MediaTranscodeManagerTest;
import com.android.mediaframeworktest.functional.audio.MediaAudioEffectTest;
+import com.android.mediaframeworktest.functional.audio.MediaAudioManagerTest;
+import com.android.mediaframeworktest.functional.audio.MediaAudioTrackTest;
import com.android.mediaframeworktest.functional.audio.MediaBassBoostTest;
import com.android.mediaframeworktest.functional.audio.MediaEnvReverbTest;
import com.android.mediaframeworktest.functional.audio.MediaEqualizerTest;
import com.android.mediaframeworktest.functional.audio.MediaPresetReverbTest;
import com.android.mediaframeworktest.functional.audio.MediaVirtualizerTest;
import com.android.mediaframeworktest.functional.audio.MediaVisualizerTest;
-import junit.framework.TestSuite;
+import com.android.mediaframeworktest.functional.audio.SimTonesTest;
+import com.android.mediaframeworktest.functional.mediaplayback.MediaPlayerApiTest;
+import com.android.mediaframeworktest.functional.mediarecorder.MediaRecorderTest;
-import android.os.Bundle;
-import android.test.InstrumentationTestRunner;
-import android.test.InstrumentationTestSuite;
+import junit.framework.TestSuite;
/**
@@ -69,6 +71,7 @@
suite.addTestSuite(MediaEnvReverbTest.class);
suite.addTestSuite(MediaEqualizerTest.class);
suite.addTestSuite(MediaPresetReverbTest.class);
+ suite.addTestSuite(MediaTranscodeManagerTest.class);
suite.addTestSuite(MediaVirtualizerTest.class);
suite.addTestSuite(MediaVisualizerTest.class);
return suite;
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediatranscodemanager/MediaTranscodeManagerTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediatranscodemanager/MediaTranscodeManagerTest.java
index eeda50e..1d2cc44 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediatranscodemanager/MediaTranscodeManagerTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediatranscodemanager/MediaTranscodeManagerTest.java
@@ -14,32 +14,66 @@
* limitations under the License.
*/
-package com.android.mediaframeworktest.functional.mediatranscodemanager;
+package com.android.mediaframeworktest.functional;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import android.content.Context;
import android.media.MediaTranscodeManager;
+import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
+import com.android.mediaframeworktest.MediaFrameworkTest;
import org.junit.Test;
-import org.junit.runner.RunWith;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
-@RunWith(AndroidJUnit4.class)
-public class MediaTranscodeManagerTest {
+/*
+ * Functional tests for MediaTranscodeManager in the media framework.
+ *
+ * To run this test suite:
+ make frameworks/base/media/tests/MediaFrameworkTest
+ make mediaframeworktest
+
+ adb install -r out/target/product/dream/data/app/mediaframeworktest.apk
+
+ adb shell am instrument -e class \
+ com.android.mediaframeworktest.functional.MediaTranscodeManagerTest \
+ -w com.android.mediaframeworktest/.MediaFrameworkTestRunner
+ *
+ */
+public class MediaTranscodeManagerTest
+ extends ActivityInstrumentationTestCase2<MediaFrameworkTest> {
private static final String TAG = "MediaTranscodeManagerTest";
+ private Context mContext;
+ private MediaTranscodeManager mMediaTranscodeManager = null;
/** The time to wait for the transcode operation to complete before failing the test. */
private static final int TRANSCODE_TIMEOUT_SECONDS = 2;
+ public MediaTranscodeManagerTest() {
+ super("com.android.MediaTranscodeManagerTest", MediaFrameworkTest.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mContext = getActivity();
+ mMediaTranscodeManager =
+ MediaTranscodeManager.getInstance(mContext);
+ assertNotNull(mMediaTranscodeManager);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
@Test
public void testMediaTranscodeManager() throws InterruptedException {
Log.d(TAG, "Starting: testMediaTranscodeManager");
@@ -49,12 +83,8 @@
new MediaTranscodeManager.TranscodingRequest.Builder().build();
Executor listenerExecutor = Executors.newSingleThreadExecutor();
- MediaTranscodeManager mediaTranscodeManager =
- MediaTranscodeManager.getInstance(ApplicationProvider.getApplicationContext());
- assertNotNull(mediaTranscodeManager);
-
MediaTranscodeManager.TranscodingJob job;
- job = mediaTranscodeManager.enqueueTranscodingRequest(request, listenerExecutor,
+ job = mMediaTranscodeManager.enqueueTranscodingRequest(request, listenerExecutor,
transcodingJob -> {
Log.d(TAG, "Transcoding completed with result: " + transcodingJob.getResult());
transcodeCompleteSemaphore.release();