3232import android .test .suitebuilder .annotation .LargeTest ;
3333import android .util .Log ;
3434import android .view .SurfaceHolder ;
35+ import com .android .mediaframeworktest .MediaRecorderStressTestRunner ;
3536
3637/**
3738 * Junit / Instrumentation test case for the media player api
@@ -310,20 +311,51 @@ public void testStressCameraSwitchRecorder() throws Exception {
310311 output .close ();
311312 }
312313
314+ public void validateRecordedVideo (String recorded_file ) {
315+ try {
316+ MediaPlayer mp = new MediaPlayer ();
317+ mp .setDataSource (recorded_file );
318+ mp .prepare ();
319+ int duration = mp .getDuration ();
320+ if (duration <= 0 ){
321+ assertTrue ("stressRecordAndPlayback" , false );
322+ }
323+ } catch (Exception e ) {
324+ assertTrue ("stressRecordAndPlayback" , false );
325+ }
326+ }
327+
328+ public void removeRecodedVideo (String filename ){
329+ File video = new File (filename );
330+ Log .v (TAG , "remove recorded video " + filename );
331+ video .delete ();
332+ }
333+
313334 //Stress test case for record a video and play right away.
314335 @ LargeTest
315336 public void testStressRecordVideoAndPlayback () throws Exception {
337+ int iterations = MediaRecorderStressTestRunner .mIterations ;
338+ int video_encoder = MediaRecorderStressTestRunner .mVideoEncoder ;
339+ int audio_encoder = MediaRecorderStressTestRunner .mAudioEncdoer ;
340+ int frame_rate = MediaRecorderStressTestRunner .mFrameRate ;
341+ int video_width = MediaRecorderStressTestRunner .mVideoWidth ;
342+ int video_height = MediaRecorderStressTestRunner .mVideoHeight ;
343+ int bit_rate = MediaRecorderStressTestRunner .mBitRate ;
344+ boolean remove_video = MediaRecorderStressTestRunner .mRemoveVideo ;
345+ int record_duration = MediaRecorderStressTestRunner .mDuration ;
346+
316347 String filename ;
317348 SurfaceHolder mSurfaceHolder ;
318349 mSurfaceHolder = MediaFrameworkTest .mSurfaceView .getHolder ();
319350 File stressOutFile = new File (MEDIA_STRESS_OUTPUT );
320- Writer output = new BufferedWriter (new FileWriter (stressOutFile , true ));
351+ Writer output = new BufferedWriter (
352+ new FileWriter (stressOutFile , true ));
321353 output .write ("Video record and play back stress test:\n " );
322354 output .write ("Total number of loops:"
323355 + NUMBER_OF_RECORDERANDPLAY_STRESS_LOOPS + "\n " );
324356 try {
325357 output .write ("No of loop: " );
326- for (int i = 0 ; i < NUMBER_OF_RECORDERANDPLAY_STRESS_LOOPS ; i ++){
358+ for (int i = 0 ; i < iterations ; i ++){
327359 filename = OUTPUT_FILE + i + OUTPUT_FILE_EXT ;
328360 Log .v (TAG , filename );
329361 synchronized (recorderlock ) {
@@ -334,20 +366,29 @@ public void testStressRecordVideoAndPlayback() throws Exception {
334366 Log .v (TAG , "wait was interrupted." );
335367 }
336368 }
369+ Log .v (TAG , "iterations : " + iterations );
370+ Log .v (TAG , "video_encoder : " + video_encoder );
371+ Log .v (TAG , "audio_encoder : " + audio_encoder );
372+ Log .v (TAG , "frame_rate : " + frame_rate );
373+ Log .v (TAG , "video_width : " + video_width );
374+ Log .v (TAG , "video_height : " + video_height );
375+ Log .v (TAG , "bit rate : " + bit_rate );
376+ Log .v (TAG , "record_duration : " + record_duration );
377+
337378 mRecorder .setOnErrorListener (mRecorderErrorCallback );
338379 mRecorder .setVideoSource (MediaRecorder .VideoSource .CAMERA );
339380 mRecorder .setAudioSource (MediaRecorder .AudioSource .MIC );
340381 mRecorder .setOutputFormat (MediaRecorder .OutputFormat .THREE_GPP );
341382 mRecorder .setOutputFile (filename );
342- mRecorder .setVideoFrameRate (20 );
343- mRecorder .setVideoSize (352 , 288 );
344- mRecorder .setVideoEncoder (MediaRecorder . VideoEncoder . H263 );
345- mRecorder .setAudioEncoder (MediaRecorder . AudioEncoder . AMR_NB );
383+ mRecorder .setVideoFrameRate (frame_rate );
384+ mRecorder .setVideoSize (video_width , video_height );
385+ mRecorder .setVideoEncoder (video_encoder );
386+ mRecorder .setAudioEncoder (audio_encoder );
346387 Log .v (TAG , "mediaRecorder setPreview" );
347388 mRecorder .setPreviewDisplay (mSurfaceHolder .getSurface ());
348389 mRecorder .prepare ();
349390 mRecorder .start ();
350- Thread .sleep (WAIT_TIME_RECORD );
391+ Thread .sleep (record_duration );
351392 Log .v (TAG , "Before stop" );
352393 mRecorder .stop ();
353394 terminateRecorderMessageLooper ();
@@ -357,8 +398,12 @@ public void testStressRecordVideoAndPlayback() throws Exception {
357398 mp .setDisplay (MediaFrameworkTest .mSurfaceView .getHolder ());
358399 mp .prepare ();
359400 mp .start ();
360- Thread .sleep (WAIT_TIME_PLAYBACK );
401+ Thread .sleep (record_duration );
361402 mp .release ();
403+ validateRecordedVideo (filename );
404+ if (remove_video ) {
405+ removeRecodedVideo (filename );
406+ }
362407 output .write (", " + i );
363408 }
364409 } catch (Exception e ) {
0 commit comments