MediaRecorderStressTestRunner.java revision 55c1ad99949a6011e82528adf0fc6fa162ab0fcd
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
1955c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lauimport android.media.EncoderCapabilities.AudioEncoderCap;
2055c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lauimport android.media.EncoderCapabilities.VideoEncoderCap;
2148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lauimport android.media.MediaRecorder;
2248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lauimport android.os.Bundle;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.InstrumentationTestRunner;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.InstrumentationTestSuite;
255d386a1ae28084626f2e207add4be6912db033ceYu Shan Emily Lauimport com.android.mediaframeworktest.stress.MediaRecorderStressTest;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2755c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lauimport java.util.List;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestSuite;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class MediaRecorderStressTestRunner extends InstrumentationTestRunner {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3255c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static List<VideoEncoderCap> videoEncoders = MediaProfileReader.getVideoEncoders();
3355c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static  List<AudioEncoderCap> audioEncoders = MediaProfileReader.getAudioEncoders();
3455c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau
3555c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    //Get the first capability as the default
3655c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static VideoEncoderCap videoEncoder = videoEncoders.get(0);
3755c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static AudioEncoderCap audioEncoder = audioEncoders.get(0);
3855c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau
3948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau    public static int mIterations = 100;
4055c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mVideoEncoder = videoEncoder.mCodec;
4155c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mAudioEncdoer = audioEncoder.mCodec;
4255c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mFrameRate = videoEncoder.mMaxFrameRate;
4355c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mVideoWidth = videoEncoder.mMaxFrameWidth;
4455c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mVideoHeight = videoEncoder.mMaxFrameHeight;
4555c1ad99949a6011e82528adf0fc6fa162ab0fcdYu Shan Emily Lau    public static int mBitRate = audioEncoder.mMaxBitRate;
4648584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau    public static boolean mRemoveVideo = true;
4748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau    public static int mDuration = 10000;
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");
6548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String video_encoder = (String) icicle.get("video_encoder");
6648584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String audio_encoder = (String) icicle.get("audio_encoder");
6748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String frame_rate = (String) icicle.get("frame_rate");
6848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String video_width = (String) icicle.get("video_width");
6948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String video_height = (String) icicle.get("video_height");
7048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String bit_rate = (String) icicle.get("bit_rate");
7148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String record_duration = (String) icicle.get("record_duration");
7248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        String remove_videos = (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        }
7748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if ( video_encoder != null) {
7848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mVideoEncoder = Integer.parseInt(video_encoder);
7948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
8048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if ( audio_encoder != null) {
8148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mAudioEncdoer = Integer.parseInt(audio_encoder);
8248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
8348584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (frame_rate != null) {
8448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mFrameRate = Integer.parseInt(frame_rate);
8548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
8648584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (video_width != null) {
8748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mVideoWidth = Integer.parseInt(video_width);
8848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
8948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (video_height != null) {
9048584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mVideoHeight = Integer.parseInt(video_height);
9148584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
9248584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (bit_rate != null) {
9348584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mBitRate = Integer.parseInt(bit_rate);
9448584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
9548584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (record_duration != null) {
9648584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            mDuration = Integer.parseInt(record_duration);
9748584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        }
9848584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau        if (remove_videos != null) {
9948584d7b8f5e56b73bb13180bf6546b2647c1b28Yu Shan Emily Lau            if (remove_videos.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