summaryrefslogtreecommitdiffstats
path: root/media/tests/MediaFrameworkTest
diff options
context:
space:
mode:
Diffstat (limited to 'media/tests/MediaFrameworkTest')
-rw-r--r--media/tests/MediaFrameworkTest/AndroidManifest.xml1
-rw-r--r--media/tests/MediaFrameworkTest/res/raw/testmidi.midbin38964 -> 2956 bytes
-rw-r--r--media/tests/MediaFrameworkTest/res/raw/testmp3.mp3bin249241 -> 306196 bytes
-rwxr-xr-xmedia/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java50
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java106
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java31
6 files changed, 143 insertions, 45 deletions
diff --git a/media/tests/MediaFrameworkTest/AndroidManifest.xml b/media/tests/MediaFrameworkTest/AndroidManifest.xml
index d0ff9ce..ac59799 100644
--- a/media/tests/MediaFrameworkTest/AndroidManifest.xml
+++ b/media/tests/MediaFrameworkTest/AndroidManifest.xml
@@ -19,6 +19,7 @@
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
+ <uses-permission android:name="android.permission.WRITE_SDCARD" />
<application>
<uses-library android:name="android.test.runner" />
<activity android:label="@string/app_name"
diff --git a/media/tests/MediaFrameworkTest/res/raw/testmidi.mid b/media/tests/MediaFrameworkTest/res/raw/testmidi.mid
index df84e20..d4ead53 100644
--- a/media/tests/MediaFrameworkTest/res/raw/testmidi.mid
+++ b/media/tests/MediaFrameworkTest/res/raw/testmidi.mid
Binary files differ
diff --git a/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 b/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3
index 89c44b0..b7d69f8 100644
--- a/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3
+++ b/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3
Binary files differ
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
index 760b6b5..fd3a4ba 100755
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
@@ -23,27 +23,27 @@ 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";
+ public static final String MP3CBR = "/sdcard/media_api/music/MP3_256kbps_2ch.mp3";
+ public static final String MP3VBR = "/sdcard/media_api/music/MP3_256kbps_2ch_VBR.mp3";
public static final String SHORTMP3 = "/sdcard/media_api/music/SHORTMP3.mp3";
- public static final String MIDI = "/sdcard/media_api/music/MIDI.mid";
+ public static final String MIDI = "/sdcard/media_api/music/ants.mid";
public static final String WMA9 = "/sdcard/media_api/music/WMA9.wma";
public static final String WMA10 = "/sdcard/media_api/music/WMA10.wma";
- public static final String WAV = "/sdcard/media_api/music/complicated_wav.wav";
- public static final String AMR = "/sdcard/media_api/music/AMRNB.amr";
- public static final String OGG = "/sdcard/media_api/music/Mists_of_Time-4T.ogg";
- public static final String OGGSHORT = "/sdcard/media_api/music/Skippy.ogg";
+ public static final String WAV = "/sdcard/media_api/music/rings_2ch.wav";
+ public static final String AMR = "/sdcard/media_api/music/test_amr_ietf.amr";
+ public static final String OGG = "/sdcard/media_api/music/Revelation.ogg";
- public static final int MP3CBR_LENGTH = 231116;
- public static final int MP3VBR_LENGTH = 126407;
+ public static final int MP3CBR_LENGTH = 71000;
+ public static final int MP3VBR_LENGTH = 71000;
public static final int SHORTMP3_LENGTH = 286;
- public static final int MIDI_LENGTH = 210528;
+ public static final int MIDI_LENGTH = 17000;
public static final int WMA9_LENGTH = 126559;
public static final int WMA10_LENGTH = 126559;
- public static final int AMR_LENGTH = 126540;
- public static final int OGG_LENGTH = 40000;
+ public static final int AMR_LENGTH = 37000;
+ public static final int OGG_LENGTH = 4000;
public static final int SEEK_TIME = 10000;
public static final long PAUSE_WAIT_TIME = 3000;
@@ -60,29 +60,21 @@ public class MediaNames {
//public static final String VIDEO_RTSP3GP = "rtsp://193.159.241.21/sp/alizee05.3gp";
//local video
- public static final String VIDEO_MP4 = "/sdcard/media_api/video/gingerkids.MP4";
+ public static final String VIDEO_MP4 = "/sdcard/media_api/video/MPEG4_320_AAC_64.mp4";
public static final String VIDEO_LONG_3GP = "/sdcard/media_api/video/radiohead.3gp";
public static final String VIDEO_SHORT_3GP = "/sdcard/media_api/video/short.3gp";
public static final String VIDEO_LARGE_SIZE_3GP = "/sdcard/media_api/video/border_large.3gp";
- public static final String VIDEO_H263_AAC = "/sdcard/media_api/video/H263_AAC.3gp";
- public static final String VIDEO_H263_AMR = "/sdcard/media_api/video/H263_AMR.3gp";
- public static final String VIDEO_H264_AAC = "/sdcard/media_api/video/H264_AAC.3gp";
- public static final String VIDEO_H264_AMR = "/sdcard/media_api/video/H264_AMR.3gp";
+ public static final String VIDEO_H263_AAC = "/sdcard/media_api/video/H263_56_AAC_24.3gp";
+ public static final String VIDEO_H263_AMR = "/sdcard/media_api/video/H263_56_AMRNB_6.3gp";
+ public static final String VIDEO_H264_AAC = "/sdcard/media_api/video/H264_320_AAC_64.3gp";
+ public static final String VIDEO_H264_AMR = "/sdcard/media_api/video/H264_320_AMRNB_6.3gp";
public static final String VIDEO_WMV = "/sdcard/media_api/video/bugs.wmv";
- public static final String VIDEO_HIGHRES_H263 = "/sdcard/media_api/video/h263_qcif_30fps.3gp";
- public static final String VIDEO_HIGHRES_MP4 = "/sdcard/media_api/video/mpeg4_qvga_24fps.3gp";
+ public static final String VIDEO_HIGHRES_H263 = "/sdcard/media_api/video/H263_500_AMRNB_12.3gp";
+ public static final String VIDEO_HIGHRES_MP4 = "/sdcard/media_api/video/H264_500_AAC_128.3gp";
//ringtone
public static final String ringtone = "/sdcard/media_api/ringtones/F1_NewVoicemail.mp3";
-
- //streaming mp3
- public static final String STREAM_LARGE_MP3 =
- "http://wms.pv.com:7070/MediaDownloadContent/mp3/BuenaVista_04_Pueblo_Nuevo.mp3";
- public static final String STREAM_SMALL_MP3 =
- "http://wms.pv.com:7070/MediaDownloadContent/mp3/ID3V2_TestFile.mp3";
- public static final String STREAM_REGULAR_MP3 =
- "http://wms.pv.com:7070/MediaDownloadContent/mp3/ElectricCosmo.mp3";
-
+
//streaming mp3
public static final String STREAM_MP3_1 =
"http://wms.pv.com:7070/MediaDownloadContent/mp3/chadthi_jawani_128kbps.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..0c0974c 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java
@@ -32,8 +32,14 @@ import android.os.Looper;
import android.os.SystemClock;
import android.util.Log;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.io.FileOutputStream;
+import java.util.Random;
/**
* Junit / Instrumentation test case for the media player api
@@ -50,8 +56,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";
@@ -78,7 +85,9 @@ public class CodecTest {
try{
mp.setDataSource(filePath);
mp.prepare();
- }catch (Exception e){}
+ }catch (Exception e){
+ Log.v(TAG, e.toString());
+ }
int duration = mp.getDuration();
Log.v(TAG, "Duration " + duration);
mp.release();
@@ -527,7 +536,6 @@ public class CodecTest {
//Verify the thumbnail
Bitmap goldenBitmap = mBitmapFactory.decodeFile(goldenPath);
-
outputWidth = outThumbnail.getWidth();
outputHeight = outThumbnail.getHeight();
goldenHeight = goldenBitmap.getHeight();
@@ -537,15 +545,18 @@ public class CodecTest {
if ((outputWidth != goldenWidth) || (outputHeight != goldenHeight))
return false;
- //Check one line of pixel
- int x = goldenHeight/2;
- for (int j=0; j<goldenWidth; j++){
- if (goldenBitmap.getPixel(x, j) != outThumbnail.getPixel(x, j)){
+ // Check half line of pixel
+ int x = goldenHeight / 2;
+ for (int j = 1; j < goldenWidth / 2; j++) {
+ if (goldenBitmap.getPixel(x, j) != outThumbnail.getPixel(x, j)) {
Log.v(TAG, "pixel = " + goldenBitmap.getPixel(x, j));
- return false;
+ return false;
}
- }
- }catch (Exception e){}
+ }
+ }catch (Exception e){
+ Log.v(TAG, e.toString());
+ return false;
+ }
return true;
}
@@ -725,8 +736,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..e01bd53 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
@@ -408,7 +410,7 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra
//Play a mid file which the duration is around 210 seconds
@LargeTest
public void testMidiResources() throws Exception {
- boolean midiResources = CodecTest.resourcesPlayback(MediaFrameworkTest.midiafd,180000);
+ boolean midiResources = CodecTest.resourcesPlayback(MediaFrameworkTest.midiafd,16000);
assertTrue("Play midi from resources", midiResources);
}
@@ -420,7 +422,7 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra
@MediumTest
public void testPrepareAsyncReset() throws Exception {
- boolean isReset = CodecTest.prepareAsyncReset(MediaNames.STREAM_LARGE_MP3);
+ boolean isReset = CodecTest.prepareAsyncReset(MediaNames.STREAM_MP3);
assertTrue("PrepareAsync Reset", isReset);
}
@@ -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);
+ }
+ }
+ }
}