summaryrefslogtreecommitdiffstats
path: root/media/tests
diff options
context:
space:
mode:
Diffstat (limited to 'media/tests')
-rwxr-xr-xmedia/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java3
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java79
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java27
3 files changed, 103 insertions, 6 deletions
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
index 760b6b5..407b4b3 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
@@ -23,7 +23,8 @@ package com.android.mediaframeworktest;
*
*/
public class MediaNames {
-
+ //A directory to hold all kinds of media files
+ public static final String MEDIA_SAMPLE_POOL = "/sdcard/media_api/samples/";
//Audio files
public static final String MP3CBR = "/sdcard/media_api/music/MP3CBR.mp3";
public static final String MP3VBR = "/sdcard/media_api/music/MP3VBR.mp3";
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java
index d9e17ea..cbd44ab 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java
@@ -34,6 +34,7 @@ import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Random;
/**
* Junit / Instrumentation test case for the media player api
@@ -50,8 +51,9 @@ public class CodecTest {
private static final Object lock = new Object();
private static final Object prepareDone = new Object();
private static final Object videoSizeChanged = new Object();
+ private static final Object onCompletion = new Object();
private static boolean onPrepareSuccess = false;
-
+ private static boolean onCompleteSuccess = false;
public static String printCpuInfo(){
String cm = "dumpsys cpuinfo";
@@ -725,8 +727,75 @@ public class CodecTest {
}
return onPrepareSuccess;
}
-
-
-
-}
+ static MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ public void onCompletion(MediaPlayer mp) {
+ synchronized (onCompletion) {
+ Log.v(TAG, "notify the completion callback");
+ onCompletion.notify();
+ onCompleteSuccess = true;
+ }
+ }
+ };
+
+ // For each media file, forward twice and backward once, then play to the end
+ public static boolean playMediaSamples(String filePath) throws Exception {
+ int duration = 0;
+ int curPosition = 0;
+ int nextPosition = 0;
+ int waittime = 0;
+ Random r = new Random();
+ initializeMessageLooper();
+ synchronized (lock) {
+ try {
+ lock.wait(WAIT_FOR_COMMAND_TO_COMPLETE);
+ } catch(Exception e) {
+ Log.v(TAG, "looper was interrupted.");
+ return false;
+ }
+ }
+ try {
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+ Log.v(TAG, "playMediaSamples: sample file name " + filePath);
+ mMediaPlayer.setDataSource(filePath);
+ mMediaPlayer.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder());
+ mMediaPlayer.prepare();
+ duration = mMediaPlayer.getDuration();
+ Log.v(TAG, "playMediaSamples: duration = " + duration);
+ // start to play
+ mMediaPlayer.start();
+ // randomly play for time within (0, duration/3)
+ Thread.sleep(r.nextInt(duration/3));
+ mMediaPlayer.pause();
+ Log.v(TAG, "playMediaSamples: current position after pause: "
+ + mMediaPlayer.getCurrentPosition());
+ // seek to position (0, 2/3*duration)
+ nextPosition = mMediaPlayer.getCurrentPosition() + r.nextInt(duration/3);
+ mMediaPlayer.seekTo(nextPosition);
+ Log.v(TAG, "playMediaSamples: current position after the first seek:"
+ + mMediaPlayer.getCurrentPosition());
+ // play for another short time
+ mMediaPlayer.start();
+ Thread.sleep(r.nextInt(duration/6));
+ Log.v(TAG, "playMediaSamples: position after the second play:"
+ + mMediaPlayer.getCurrentPosition());
+ // seek to a random position (0, duration)
+ mMediaPlayer.seekTo(r.nextInt(duration));
+ Log.v(TAG, "playMediaSamples: current position after the second seek:"
+ + mMediaPlayer.getCurrentPosition());
+ waittime = duration - mMediaPlayer.getCurrentPosition();
+ synchronized(onCompletion){
+ try {
+ onCompletion.wait(waittime + 30000);
+ }catch (Exception e) {
+ Log.v(TAG, "playMediaSamples are interrupted");
+ return false;
+ }
+ }
+ terminateMessageLooper();
+ }catch (Exception e) {
+ Log.v(TAG, "playMediaSamples:" + e.getMessage());
+ }
+ return onCompleteSuccess;
+ }
+}
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
index 8be7058..94c69a8 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java
@@ -26,6 +26,8 @@ import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.Suppress;
+import java.io.File;
+
/**
* Junit / Instrumentation test case for the media player api
@@ -456,4 +458,29 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra
CodecTest.prepareAsyncCallback(MediaNames.STREAM_H264_480_360_1411k, true);
assertTrue("StreamH264PrepareAsyncCallback", onPrepareSuccess);
}
+
+ //Provide a tool to play all kinds of media files in a directory
+ @Suppress
+ @LargeTest
+ public void testMediaSamples() throws Exception {
+ // load directory files
+ boolean onCompleteSuccess = false;
+ File dir = new File(MediaNames.MEDIA_SAMPLE_POOL);
+ String[] children = dir.list();
+ if (children == null) {
+ Log.v("MediaPlayerApiTest:testMediaSamples", "dir is empty");
+ return;
+ } else {
+ for (int i = 0; i < children.length; i++) {
+ //Get filename of directory
+ String filename = children[i];
+ Log.v("MediaPlayerApiTest",
+ "testMediaSamples: file to be played: "
+ + dir + "/" + filename);
+ onCompleteSuccess =
+ CodecTest.playMediaSamples(dir + "/" + filename);
+ assertTrue("testMediaSamples", onCompleteSuccess);
+ }
+ }
+ }
}