diff options
Diffstat (limited to 'media/tests')
-rw-r--r-- | media/tests/MediaFrameworkTest/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | media/tests/MediaFrameworkTest/res/raw/testmidi.mid | bin | 38964 -> 2956 bytes | |||
-rw-r--r-- | media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 | bin | 249241 -> 306196 bytes | |||
-rwxr-xr-x | media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java | 50 | ||||
-rw-r--r-- | media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java | 106 | ||||
-rw-r--r-- | media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java | 31 |
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 Binary files differindex df84e20..d4ead53 100644 --- a/media/tests/MediaFrameworkTest/res/raw/testmidi.mid +++ b/media/tests/MediaFrameworkTest/res/raw/testmidi.mid diff --git a/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 b/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 Binary files differindex 89c44b0..b7d69f8 100644 --- a/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 +++ b/media/tests/MediaFrameworkTest/res/raw/testmp3.mp3 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); + } + } + } } |