19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.mediaframeworktest; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dongimport android.media.CamcorderProfile; 2048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lauimport android.media.MediaRecorder; 2148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lauimport android.os.Bundle; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.InstrumentationTestRunner; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.InstrumentationTestSuite; 245d386a1ae28084626f2e207add4be6912db033ceYu Shan Emily Lauimport com.android.mediaframeworktest.stress.MediaRecorderStressTest; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2655c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lauimport java.util.List; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestSuite; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class MediaRecorderStressTestRunner extends InstrumentationTestRunner { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong // MediaRecorder stress test sets one of the cameras as the video source. As 32c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong // a result, we should make sure that the encoding parameters as input to 33c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong // the test must be supported by the corresponding camera. 34c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mCameraId = 0; 35c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mProfileQuality = CamcorderProfile.QUALITY_HIGH; 36ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi public static CamcorderProfile profile = CamcorderProfile.get(mCameraId, mProfileQuality); 37ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi public static int mIterations = 15; 38c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mVideoEncoder = profile.videoCodec; 39ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi public static int mAudioEncoder = profile.audioCodec; 40c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mFrameRate = profile.videoFrameRate; 41c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mVideoWidth = profile.videoFrameWidth; 42c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mVideoHeight = profile.videoFrameHeight; 43c9b9cbc76e22615886bf91596badef7f4a3d32a5James Dong public static int mBitRate = profile.videoBitRate; 4448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau public static boolean mRemoveVideo = true; 45ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi public static int mDuration = 60 * 1000; // 60 seconds 46984505d8168713469fb36bb50da50a2638751122Yu Shan Emily Lau public static int mTimeLapseDuration = 15 * 60 * 1000; // 15 minutes 4727c8d9ba169aa85127fac65d6df25e4335ee2fcaJason Noguchi public static double mCaptureRate = 0.5; // 2 sec timelapse interval 4848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TestSuite getAllTests() { 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TestSuite suite = new InstrumentationTestSuite(this); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project suite.addTestSuite(MediaRecorderStressTest.class); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return suite; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ClassLoader getLoader() { 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return MediaRecorderStressTestRunner.class.getClassLoader(); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau 6148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau @Override 6248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau public void onCreate(Bundle icicle) { 6348584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau super.onCreate(icicle); 6448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau String iterations = (String) icicle.get("iterations"); 65ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String videoEncoder = (String) icicle.get("video_encoder"); 66ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String audioEncoder = (String) icicle.get("audio_encoder"); 67ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String frameRate = (String) icicle.get("frame_rate"); 68ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String videoWidth = (String) icicle.get("video_width"); 69ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String videoHeight = (String) icicle.get("video_height"); 70ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String bitRate = (String) icicle.get("bit_rate"); 71ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String recordDuration = (String) icicle.get("record_duration"); 72ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi String removeVideos = (String) icicle.get("remove_videos"); 7348584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau 7448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau if (iterations != null ) { 7548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau mIterations = Integer.parseInt(iterations); 7648584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 77ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (videoEncoder != null) { 78ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mVideoEncoder = Integer.parseInt(videoEncoder); 7948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 80ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (audioEncoder != null) { 81ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mAudioEncoder = Integer.parseInt(audioEncoder); 8248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 83ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (frameRate != null) { 84ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mFrameRate = Integer.parseInt(frameRate); 8548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 86ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (videoWidth != null) { 87ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mVideoWidth = Integer.parseInt(videoWidth); 8848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 89ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (videoHeight != null) { 90ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mVideoHeight = Integer.parseInt(videoHeight); 9148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 92ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (bitRate != null) { 93ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mBitRate = Integer.parseInt(bitRate); 9448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 95ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (recordDuration != null) { 96ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi mDuration = Integer.parseInt(recordDuration); 9748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 98ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (removeVideos != null) { 99ca6a5eee8f72742298d28d8a4b8e1bd32020a237Jason Noguchi if (removeVideos.compareTo("true") == 0) { 10048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau mRemoveVideo = true; 10148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } else { 10248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau mRemoveVideo = false; 10348584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 10448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 10548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 107