diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-09 11:52:12 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-09 11:52:12 -0700 |
commit | b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54 (patch) | |
tree | e167affc928677f3dd70e173150a77e3943e97a9 /media/tests | |
parent | f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2 (diff) | |
download | frameworks_base-b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54.zip frameworks_base-b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54.tar.gz frameworks_base-b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54.tar.bz2 |
auto import from //branches/cupcake/...@137197
Diffstat (limited to 'media/tests')
3 files changed, 125 insertions, 3 deletions
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java index 5e9c488..07b43bb 100755 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java @@ -494,4 +494,18 @@ public class MediaNames { "/sdcard/media_api/video_stress/h263/mpeg4_QVGA.3gp", "/sdcard/media_api/video_stress/h263/mpeg4_SQVGA.mp4" }; + + //Streaming test files + public static final String STREAM_H264_480_360_1411k = + "http://sridharg.googlejunta.com/yslau/stress_media/h264_regular.mp4"; + public static final String STREAM_WMV = + "http://sridharg.googlejunta.com/yslau/stress_media/bugs.wmv"; + public static final String STREAM_H263_176x144_325k = + "http://sridharg.googlejunta.com/yslau/stress_media/h263_regular.3gp"; + public static final String STREAM_H264_352x288_1536k = + "http://sridharg.googlejunta.com/yslau/stress_media/h264_highBitRate.mp4"; + public static final String STREAM_MP3= + "http://sridharg.googlejunta.com/yslau/stress_media/mp3_regular.mp3"; + public static final String STREAM_MPEG4_QVGA_128k = + "http://sridharg.googlejunta.com/yslau/stress_media/mpeg4_qvga_24fps.3gp"; } 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 0e88719..caba47c 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/CodecTest.java @@ -28,6 +28,7 @@ import android.graphics.BitmapFactory; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.media.MediaRecorder; +import android.os.Looper; import android.os.SystemClock; import android.util.Log; @@ -39,6 +40,16 @@ import java.io.InputStream; */ public class CodecTest { private static String TAG = "MediaPlayerApiTest"; + private static MediaPlayer mMediaPlayer; + private MediaPlayer.OnPreparedListener mOnPreparedListener; + + private static int WAIT_FOR_COMMAND_TO_COMPLETE = 10000; //10 seconds max. + private static boolean mInitialized = false; + private static Looper mLooper = null; + private static final Object lock = new Object(); + private static final Object prepareDone = new Object(); + private static boolean onPrepareSuccess = false; + public static String printCpuInfo(){ String cm = "dumpsys cpuinfo"; @@ -573,5 +584,89 @@ public class CodecTest { return true; } + + /* + * Initializes the message looper so that the mediaPlayer object can + * receive the callback messages. + */ + private static void initializeMessageLooper() { + Log.v(TAG, "start looper"); + new Thread() { + @Override + public void run() { + // Set up a looper to be used by camera. + Looper.prepare(); + Log.v(TAG, "start loopRun"); + // Save the looper so that we can terminate this thread + // after we are done with it. + mLooper = Looper.myLooper(); + mMediaPlayer = new MediaPlayer(); + synchronized (lock) { + mInitialized = true; + lock.notify(); + } + Looper.loop(); // Blocks forever until Looper.quit() is called. + Log.v(TAG, "initializeMessageLooper: quit."); + } + }.start(); + } + + /* + * Terminates the message looper thread. + */ + private static void terminateMessageLooper() { + mLooper.quit(); + mMediaPlayer.release(); + } + + static MediaPlayer.OnPreparedListener mPreparedListener = new MediaPlayer.OnPreparedListener() { + public void onPrepared(MediaPlayer mp) { + synchronized (prepareDone) { + Log.v(TAG, "notify the prepare callback"); + prepareDone.notify(); + onPrepareSuccess = true; + } + } + }; + + public static boolean prepareAsyncCallback(String filePath) throws Exception { + int videoWidth = 0; + int videoHeight = 0; + boolean checkVideoDimension = false; + + initializeMessageLooper(); + synchronized (lock) { + try { + lock.wait(WAIT_FOR_COMMAND_TO_COMPLETE); + } catch(Exception e) { + Log.v(TAG, "looper was interrupted."); + return false; + } + } + try{ + mMediaPlayer.setOnPreparedListener(mPreparedListener); + mMediaPlayer.setDataSource(filePath); + mMediaPlayer.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); + mMediaPlayer.prepareAsync(); + synchronized (prepareDone) { + try { + prepareDone.wait(WAIT_FOR_COMMAND_TO_COMPLETE); + Log.v(TAG, "setPreview done"); + } catch (Exception e) { + Log.v(TAG, "wait was interrupted."); + } + } + videoWidth = mMediaPlayer.getVideoWidth(); + videoHeight = mMediaPlayer.getVideoHeight(); + + terminateMessageLooper(); + }catch (Exception e){ + Log.v(TAG,e.getMessage()); + } + return onPrepareSuccess; + } + + + } 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 dd94164..ee6a727 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java @@ -52,7 +52,8 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra return true; } - + + //Audio //Wait for PV bugs for MP3 duration @MediumTest @@ -410,8 +411,6 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra assertTrue("Play mp3 from resources", mp3Resources); } - //Bug# 1422662 - @Suppress @MediumTest public void testPrepareAsyncReset() throws Exception { boolean isReset = CodecTest.prepareAsyncReset(MediaNames.STREAM_LARGE_MP3); @@ -429,5 +428,19 @@ public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFra boolean isLooping = CodecTest.isLoopingAfterReset(MediaNames.AMR); assertTrue("isLooping after reset", isLooping); } + + @LargeTest + public void testLocalMp3PrepareAsyncCallback() throws Exception { + boolean onPrepareSuccess = + CodecTest.prepareAsyncCallback(MediaNames.VIDEO_H263_AMR); + assertTrue("LocalMp3prepareAsyncCallback", onPrepareSuccess); + } + + @LargeTest + public void testStreamPrepareAsyncCallback() throws Exception { + boolean onPrepareSuccess = + CodecTest.prepareAsyncCallback(MediaNames.STREAM_H264_480_360_1411k); + assertTrue("StreamH264PrepareAsyncCallback", onPrepareSuccess); + } } |