MediaRecorderTest.java revision 1619367ab823150fa8856d419abe02ceb75886f1
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 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.functional; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.mediaframeworktest.MediaFrameworkTest; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.mediaframeworktest.MediaNames; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.*; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 252071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lauimport android.hardware.Camera; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaPlayer; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaRecorder; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.ActivityInstrumentationTestCase; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.SurfaceHolder; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.SurfaceView; 321619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lauimport com.android.mediaframeworktest.MediaProfileReader; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.LargeTest; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.Suppress; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Junit / Instrumentation test case for the media recorder api 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class MediaRecorderTest extends ActivityInstrumentationTestCase<MediaFrameworkTest> { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String TAG = "MediaRecorderTest"; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mOutputDuration =0; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mOutputVideoWidth = 0; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mOutputVideoHeight= 0 ; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private SurfaceHolder mSurfaceHolder = null; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private MediaRecorder mRecorder; 491619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 501619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau private int MIN_VIDEO_FPS = 5; 511619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Context mContext; 532071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau Camera mCamera; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MediaRecorderTest() { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super("com.android.mediaframeworktest", MediaFrameworkTest.class); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void setUp() throws Exception { 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setUp(); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,"create the media recorder"); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder = new MediaRecorder(); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void recordVideo(int frameRate, int width, int height, 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int videoFormat, int outFormat, String outFile, boolean videoOnly) { 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG,"startPreviewAndPrepareRecording"); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!videoOnly) { 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setAudioSource"); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFormat(outFormat); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "output format " + outFormat); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFile(outFile); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoFrameRate(frameRate); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoSize(width, height); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setEncoder"); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoEncoder(videoFormat); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!videoOnly) { 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSurfaceHolder = MediaFrameworkTest.mSurfaceView.getHolder(); 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setPreview"); 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "prepare"); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.prepare(); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start"); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.start(); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.RECORDED_TIME); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "stop"); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.stop(); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.release(); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (Exception e) { 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v("record video failed ", e.toString()); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.release(); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1021619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau private boolean recordVideoWithPara(String encoder, String audio, String quality){ 1031619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau boolean recordSuccess = false; 1041619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int videoEncoder = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(encoder); 1051619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int audioEncoder = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(audio); 1061619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int videoWidth = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(encoder + ".width_" + quality); 1071619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int videoHeight = 1081619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaProfileReader.OUTPUT_FORMAT_TABLE.get(encoder + ".height_" + quality); 1091619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int videoFps = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(encoder + ".fps_" + quality); 1101619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int videoBitrate = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(encoder + ".bps_" + quality); 1111619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int audioBitrate = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(audio + ".bps_" + quality); 1121619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int audioChannels = MediaProfileReader.OUTPUT_FORMAT_TABLE.get(audio + ".ch_" + quality); 1131619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau int audioSamplingRate = 1141619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaProfileReader.OUTPUT_FORMAT_TABLE.get(audio + ".hz_" + quality); 1151619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 1161619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau if (videoFps < MIN_VIDEO_FPS) { 1171619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau videoFps = MIN_VIDEO_FPS; 1181619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 1191619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mSurfaceHolder = MediaFrameworkTest.mSurfaceView.getHolder(); 1201619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String filename = ("/sdcard/" + encoder + "_" + audio + "_" + quality + ".3gp"); 1211619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau try { 1221619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "video encoder :" + videoEncoder); 1231619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "audio encoder :" + audioEncoder); 1241619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "quality : " + quality); 1251619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "encoder : " + encoder); 1261619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "audio : " + audio); 1271619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "videoWidth : " + videoWidth); 1281619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "videoHeight : " + videoHeight); 1291619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "videoFPS : " + videoFps); 1301619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "videobitrate : " + videoBitrate); 1311619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "audioBitrate : " + audioBitrate); 1321619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "audioChannel : " + audioChannels); 1331619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "AudioSampleRate : " + audioSamplingRate); 1341619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 1351619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaRecorder mMediaRecorder = new MediaRecorder(); 1361619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 1371619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 1381619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 1391619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setOutputFile(filename); 1401619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setVideoFrameRate(videoFps); 1411619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setVideoSize(videoWidth, videoHeight); 1421619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setParameters(String.format("video-param-encoding-bitrate=%d", 1431619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau videoBitrate)); 1441619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setParameters(String.format("audio-param-encoding-bitrate=%d", 1451619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau audioBitrate)); 1461619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setParameters(String.format("audio-param-number-of-channels=%d", 1471619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau audioChannels)); 1481619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setParameters(String.format("audio-param-sampling-rate=%d", 1491619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau audioSamplingRate)); 1501619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setVideoEncoder(videoEncoder); 1511619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setAudioEncoder(audioEncoder); 1521619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 1531619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.prepare(); 1541619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.start(); 1551619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Thread.sleep(MediaNames.RECORDED_TIME); 1561619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.stop(); 1571619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau mMediaRecorder.release(); 1581619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau recordSuccess = validateVideo(filename, videoWidth, videoHeight); 1591619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } catch (Exception e) { 1601619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, e.toString()); 1611619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau return false; 1621619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 1631619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau return recordSuccess; 1641619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 1651619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean invalidRecordSetting(int frameRate, int width, int height, 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int videoFormat, int outFormat, String outFile, boolean videoOnly) { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!videoOnly) { 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setAudioSource"); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFormat(outFormat); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "output format " + outFormat); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setOutputFile(outFile); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoFrameRate(frameRate); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoSize(width, height); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setEncoder"); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setVideoEncoder(videoFormat); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!videoOnly) { 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mSurfaceHolder = MediaFrameworkTest.mSurfaceView.getHolder(); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "setPreview"); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "prepare"); 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.prepare(); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "start"); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.start(); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(MediaNames.RECORDED_TIME); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "stop"); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.stop(); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.release(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (Exception e) { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v("record video failed ", e.toString()); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRecorder.release(); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "reset and release"); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void getOutputVideoProperty(String outputFilePath) { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaPlayer mediaPlayer = new MediaPlayer(); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mediaPlayer.setDataSource(outputFilePath); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "file Path = " + outputFilePath); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mediaPlayer.setDisplay(MediaFrameworkTest.mSurfaceView.getHolder()); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "before player prepare"); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mediaPlayer.prepare(); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "before getduration"); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOutputDuration = mediaPlayer.getDuration(); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "get video dimension"); 217c1b80cb7e30102b304d62beb9649f84c798e00e9Yu Shan Emily Lau mOutputVideoHeight = CodecTest.videoHeight(outputFilePath); 218c1b80cb7e30102b304d62beb9649f84c798e00e9Yu Shan Emily Lau mOutputVideoWidth = CodecTest.videoWidth(outputFilePath); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mediaPlayer.release(); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (Exception e) { 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, e.toString()); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mediaPlayer.release(); 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void removeFile(String filePath) { 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project File fileRemove = new File(filePath); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileRemove.delete(); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean validateVideo(String filePath, int width, int height) { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean validVideo = false; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getOutputVideoProperty(filePath); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mOutputVideoWidth == width && mOutputVideoHeight == height && 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOutputDuration > MediaNames.VALID_VIDEO_DURATION ) { 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project validVideo = true; 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.v(TAG, "width = " + mOutputVideoWidth + " height = " + mOutputVideoHeight + " Duration = " + mOutputDuration); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project removeFile(filePath); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return validVideo; 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: HVGA h263 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Suppress 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testHVGAH263() throws Exception { 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 480, 320, MediaRecorder.VideoEncoder.H263, 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_HVGA_H263, false); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_HVGA_H263, 480, 320); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("HVGAH263", videoRecordedResult); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: QVGA h263 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testQVGAH263() throws Exception { 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 320, 240, MediaRecorder.VideoEncoder.H263, 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_QVGA_H263, false); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_QVGA_H263, 320, 240); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QVGAH263", videoRecordedResult); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: SQVGA h263 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testSQVGAH263() throws Exception { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 240, 160, MediaRecorder.VideoEncoder.H263, 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_SQVGA_H263, false); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_SQVGA_H263, 240, 160); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("SQVGAH263", videoRecordedResult); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: QCIF h263 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testQCIFH263() throws Exception { 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 176, 144, MediaRecorder.VideoEncoder.H263, 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_QCIF_H263, false); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_QCIF_H263, 176, 144); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QCIFH263", videoRecordedResult); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: CIF h263 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testCIFH263() throws Exception { 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 352, 288, MediaRecorder.VideoEncoder.H263, 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_CIF_H263, false); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_CIF_H263, 352, 288); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("CIFH263", videoRecordedResult); 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testVideoOnly() throws Exception { 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 176, 144, MediaRecorder.VideoEncoder.H263, 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_VIDEO_3GP, true); 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_VIDEO_3GP, 176, 144); 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QCIFH263 Video Only", videoRecordedResult); 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3052071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau @LargeTest 3062071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau /* 3072071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau * This test case set the camera in portrait mode. 3082071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau * Verification: validate the video dimension and the duration. 3092071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau */ 3102071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau public void testPortraitH263() throws Exception { 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3122071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau try { 3132071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mCamera = Camera.open(); 3142071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau Camera.Parameters parameters = mCamera.getParameters(); 3152071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau parameters.setPreviewSize(352, 288); 3162071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau parameters.set("orientation", "portrait"); 3172071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mCamera.setParameters(parameters); 3182071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mCamera.unlock(); 3192071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mRecorder.setCamera(mCamera); 3202071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau Thread.sleep(1000); 3212071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau recordVideo(15, 352, 288, MediaRecorder.VideoEncoder.H263, 3222071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau MediaRecorder.OutputFormat.THREE_GPP, 3232071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau MediaNames.RECORDED_PORTRAIT_H263, true); 3242071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau videoRecordedResult = 3252071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau validateVideo(MediaNames.RECORDED_PORTRAIT_H263, 352, 288); 3262071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mCamera.lock(); 3272071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau mCamera.release(); 3282071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau } catch (Exception e) { 3292071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau Log.v(TAG, e.toString()); 3302071043512fc9ceba5d06fe6ea23eeda499c8e02Yu Shan Emily Lau } 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("PortraitH263", videoRecordedResult); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Suppress 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testHVGAMP4() throws Exception { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 480, 320, MediaRecorder.VideoEncoder.MPEG_4_SP, 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_HVGA_MP4, false); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_HVGA_MP4, 480, 320); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("HVGAMP4", videoRecordedResult); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testQVGAMP4() throws Exception { 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 320, 240, MediaRecorder.VideoEncoder.MPEG_4_SP, 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_QVGA_MP4, false); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_QVGA_MP4, 320, 240); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QVGAMP4", videoRecordedResult); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testSQVGAMP4() throws Exception { 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 240, 160, MediaRecorder.VideoEncoder.MPEG_4_SP, 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_SQVGA_MP4, false); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_SQVGA_MP4, 240, 160); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("SQVGAMP4", videoRecordedResult); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: QCIF MP4 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testQCIFMP4() throws Exception { 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 176, 144, MediaRecorder.VideoEncoder.MPEG_4_SP, 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_QCIF_MP4, false); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_QCIF_MP4, 176, 144); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QCIFMP4", videoRecordedResult); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: CIF MP4 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testCIFMP4() throws Exception { 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 352, 288, MediaRecorder.VideoEncoder.MPEG_4_SP, 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.MPEG_4, MediaNames.RECORDED_CIF_MP4, false); 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_CIF_MP4, 352, 288); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("CIFMP4", videoRecordedResult); 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Format: CIF MP4 output format 3gpp 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testCIFMP43GPP() throws Exception { 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 352, 288, MediaRecorder.VideoEncoder.MPEG_4_SP, 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_VIDEO_3GP, false); 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_VIDEO_3GP, 352, 288); 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("CIFMP4 3GPP", videoRecordedResult); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testQCIFH2633GPP() throws Exception { 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean videoRecordedResult = false; 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordVideo(15, 176, 144, MediaRecorder.VideoEncoder.H263, 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_VIDEO_3GP, false); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project videoRecordedResult = validateVideo(MediaNames.RECORDED_VIDEO_3GP, 176, 144); 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("QCIFH263 3GPP", videoRecordedResult); 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testInvalidVideoPath() throws Exception { 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isTestInvalidVideoPathSuccessful = false; 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isTestInvalidVideoPathSuccessful = invalidRecordSetting(15, 176, 144, MediaRecorder.VideoEncoder.H263, 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.INVALD_VIDEO_PATH, false); 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("Invalid outputFile Path", isTestInvalidVideoPathSuccessful); 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Suppress 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testInvalidVideoSize() throws Exception { 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isTestInvalidVideoSizeSuccessful = false; 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isTestInvalidVideoSizeSuccessful = invalidRecordSetting(15, 800, 600, MediaRecorder.VideoEncoder.H263, 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_VIDEO_3GP, false); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("Invalid video Size", isTestInvalidVideoSizeSuccessful); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @LargeTest 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testInvalidFrameRate() throws Exception { 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isTestInvalidFrameRateSuccessful = false; 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isTestInvalidFrameRateSuccessful = invalidRecordSetting(50, 176, 144, MediaRecorder.VideoEncoder.H263, 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaRecorder.OutputFormat.THREE_GPP, MediaNames.RECORDED_VIDEO_3GP, false); 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue("Invalid FrameRate", isTestInvalidFrameRateSuccessful); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4251619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau 4261619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau @LargeTest 4271619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau //est cases for the new codec 4281619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau public void testDeviceSpecificCodec() throws Exception { 4291619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau boolean recordSuccess = false; 4301619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String deviceType = MediaProfileReader.getDeviceType(); 4311619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau Log.v(TAG, "deviceType = " + deviceType); 4321619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau if (deviceType.compareTo("voles") == 0) { 4331619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau // Test cases are device specified 4341619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaProfileReader.createVideoProfileTable(); 4351619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaProfileReader.createAudioProfileTable(); 4361619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau MediaProfileReader.createEncoderTable(); 4371619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String encoderType = MediaProfileReader.getVideoCodecProperty(); 4381619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String encoder[] = encoderType.split(","); 4391619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String audioType = MediaProfileReader.getAudioCodecProperty(); 4401619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau String audio[] = audioType.split(","); 4411619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau for (int k = 0; k < 2; k++) { 4421619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau for (int i = 0; i < encoder.length; i++) { 4431619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau for (int j = 0; j < audio.length; j++) { 4441619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau if (k == 0) { 4451619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau recordSuccess = recordVideoWithPara(encoder[i], audio[j], "high"); 4461619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } else { 4471619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau recordSuccess = recordVideoWithPara(encoder[i], audio[j], "low"); 4481619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4491619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau assertTrue((encoder[i] + audio[j]), recordSuccess); 4501619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4511619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4521619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4531619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4541619367ab823150fa8856d419abe02ceb75886f1Yu Shan Emily Lau } 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 457