diff --git a/media/java/android/media/MediaTranscodeManager.java b/media/java/android/media/MediaTranscodeManager.java index 2c431b98fc7a1..5122cbe34bd38 100644 --- a/media/java/android/media/MediaTranscodeManager.java +++ b/media/java/android/media/MediaTranscodeManager.java @@ -397,7 +397,7 @@ public final class MediaTranscodeManager { } static { - System.loadLibrary("media_jni"); + System.loadLibrary("mediatranscodemanager_jni"); native_init(); } } diff --git a/media/jni/Android.bp b/media/jni/Android.bp index d2294b38d992a..7518496287a8e 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -21,7 +21,6 @@ cc_library_shared { "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 @@ cc_library_shared { "-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 5cb42a9a96ccd..963b650292e45 100644 --- a/media/jni/android_media_MediaPlayer.cpp +++ b/media/jni/android_media_MediaPlayer.cpp @@ -1453,7 +1453,6 @@ extern int register_android_media_MediaProfiles(JNIEnv *env); 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 @@ jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) 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 0b4048c1170c5..6695f8511116d 100644 --- a/media/jni/android_media_MediaTranscodeManager.cpp +++ b/media/jni/android_media_MediaTranscodeManager.cpp @@ -100,3 +100,26 @@ int register_android_media_MediaTranscodeManager(JNIEnv *env) { 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 a9dc886d9f786..2d1820e393130 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 @@ public class MediaFrameworkTestRunner extends InstrumentationTestRunner { 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 eeda50e5c0955..1d2cc444fdb41 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 { 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 @@ public class MediaTranscodeManagerTest { 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();