Loading media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java +55 −7 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.Typeface; import android.hardware.Camera; import android.hardware.Camera; import android.media.MediaCodec; import android.media.MediaMetadataRetriever; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.media.MediaRecorder; Loading Loading @@ -225,10 +226,12 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra private boolean recordVideoFromSurface( private boolean recordVideoFromSurface( int frameRate, int captureRate, int width, int height, int frameRate, int captureRate, int width, int height, int videoFormat, int outFormat, String outFile, boolean videoOnly) { int videoFormat, int outFormat, String outFile, boolean videoOnly, Surface persistentSurface) { Log.v(TAG,"recordVideoFromSurface"); Log.v(TAG,"recordVideoFromSurface"); MediaRecorder recorder = new MediaRecorder(); MediaRecorder recorder = new MediaRecorder(); int sleepTime = 33; // normal capture at 33ms / frame int sleepTime = 33; // normal capture at 33ms / frame Surface surface = null; try { try { if (!videoOnly) { if (!videoOnly) { recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); Loading @@ -246,8 +249,15 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra if (!videoOnly) { if (!videoOnly) { recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); } } if (persistentSurface != null) { Log.v(TAG, "using persistent surface"); surface = persistentSurface; recorder.usePersistentSurface(surface); } recorder.prepare(); recorder.prepare(); Surface surface = recorder.getSurface(); if (persistentSurface == null) { surface = recorder.getSurface(); } Paint paint = new Paint(); Paint paint = new Paint(); paint.setTextSize(16); paint.setTextSize(16); Loading Loading @@ -283,11 +293,15 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra Log.v(TAG, "stop"); Log.v(TAG, "stop"); recorder.stop(); recorder.stop(); recorder.release(); } catch (Exception e) { } catch (Exception e) { Log.v("record video failed ", e.toString()); Log.v(TAG, "record video failed: " + e.toString()); recorder.release(); return false; return false; } finally { recorder.release(); // release surface if not using persistent surface if (persistentSurface == null && surface != null) { surface.release(); } } } return true; return true; } } Loading Loading @@ -550,7 +564,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, filename, MediaRecorder.OutputFormat.THREE_GPP, filename, k == 0 ? true : false /* videoOnly */); k == 0 ? true : false /* videoOnly */, null); if (success) { if (success) { success = validateVideo(filename, 352, 288); success = validateVideo(filename, 352, 288); } } Loading @@ -564,6 +578,40 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra assertTrue("testSurfaceRecording", noOfFailure == 0); assertTrue("testSurfaceRecording", noOfFailure == 0); } } public void testPersistentSurfaceRecording() { boolean success = false; int noOfFailure = 0; Surface surface = null; try { int codec = MediaRecorder.VideoEncoder.H264; int frameRate = MediaProfileReader.getMaxFrameRateForCodec(codec); surface = MediaCodec.createPersistentInputSurface(); for (int k = 0; k < 2; k++) { String filename = "/sdcard/surface_persistent" + k + ".3gp"; Log.v(TAG, "test persistent surface - round " + k); success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, filename, true /* videoOnly */, surface); if (success) { success = validateVideo(filename, 352, 288); } if (!success) { noOfFailure++; } } } catch (Exception e) { Log.v(TAG, e.toString()); } finally { if (surface != null) { Log.v(TAG, "releasing persistent surface"); surface.release(); surface = null; } } assertTrue("testPersistentSurfaceRecording", noOfFailure == 0); } // Test recording from surface source with/without audio // Test recording from surface source with/without audio public void testSurfaceRecordingTimeLapse() { public void testSurfaceRecordingTimeLapse() { boolean success = false; boolean success = false; Loading @@ -583,7 +631,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra success = recordVideoFromSurface( success = recordVideoFromSurface( frameRate, captureRate, 352, 288, codec, frameRate, captureRate, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, MediaRecorder.OutputFormat.THREE_GPP, filename, false /* videoOnly */); filename, false /* videoOnly */, null); if (success) { if (success) { success = validateVideo(filename, 352, 288); success = validateVideo(filename, 352, 288); if (success) { if (success) { Loading Loading
media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/mediarecorder/MediaRecorderTest.java +55 −7 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.Typeface; import android.hardware.Camera; import android.hardware.Camera; import android.media.MediaCodec; import android.media.MediaMetadataRetriever; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.media.MediaRecorder; Loading Loading @@ -225,10 +226,12 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra private boolean recordVideoFromSurface( private boolean recordVideoFromSurface( int frameRate, int captureRate, int width, int height, int frameRate, int captureRate, int width, int height, int videoFormat, int outFormat, String outFile, boolean videoOnly) { int videoFormat, int outFormat, String outFile, boolean videoOnly, Surface persistentSurface) { Log.v(TAG,"recordVideoFromSurface"); Log.v(TAG,"recordVideoFromSurface"); MediaRecorder recorder = new MediaRecorder(); MediaRecorder recorder = new MediaRecorder(); int sleepTime = 33; // normal capture at 33ms / frame int sleepTime = 33; // normal capture at 33ms / frame Surface surface = null; try { try { if (!videoOnly) { if (!videoOnly) { recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); Loading @@ -246,8 +249,15 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra if (!videoOnly) { if (!videoOnly) { recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); } } if (persistentSurface != null) { Log.v(TAG, "using persistent surface"); surface = persistentSurface; recorder.usePersistentSurface(surface); } recorder.prepare(); recorder.prepare(); Surface surface = recorder.getSurface(); if (persistentSurface == null) { surface = recorder.getSurface(); } Paint paint = new Paint(); Paint paint = new Paint(); paint.setTextSize(16); paint.setTextSize(16); Loading Loading @@ -283,11 +293,15 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra Log.v(TAG, "stop"); Log.v(TAG, "stop"); recorder.stop(); recorder.stop(); recorder.release(); } catch (Exception e) { } catch (Exception e) { Log.v("record video failed ", e.toString()); Log.v(TAG, "record video failed: " + e.toString()); recorder.release(); return false; return false; } finally { recorder.release(); // release surface if not using persistent surface if (persistentSurface == null && surface != null) { surface.release(); } } } return true; return true; } } Loading Loading @@ -550,7 +564,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, filename, MediaRecorder.OutputFormat.THREE_GPP, filename, k == 0 ? true : false /* videoOnly */); k == 0 ? true : false /* videoOnly */, null); if (success) { if (success) { success = validateVideo(filename, 352, 288); success = validateVideo(filename, 352, 288); } } Loading @@ -564,6 +578,40 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra assertTrue("testSurfaceRecording", noOfFailure == 0); assertTrue("testSurfaceRecording", noOfFailure == 0); } } public void testPersistentSurfaceRecording() { boolean success = false; int noOfFailure = 0; Surface surface = null; try { int codec = MediaRecorder.VideoEncoder.H264; int frameRate = MediaProfileReader.getMaxFrameRateForCodec(codec); surface = MediaCodec.createPersistentInputSurface(); for (int k = 0; k < 2; k++) { String filename = "/sdcard/surface_persistent" + k + ".3gp"; Log.v(TAG, "test persistent surface - round " + k); success = recordVideoFromSurface(frameRate, 0, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, filename, true /* videoOnly */, surface); if (success) { success = validateVideo(filename, 352, 288); } if (!success) { noOfFailure++; } } } catch (Exception e) { Log.v(TAG, e.toString()); } finally { if (surface != null) { Log.v(TAG, "releasing persistent surface"); surface.release(); surface = null; } } assertTrue("testPersistentSurfaceRecording", noOfFailure == 0); } // Test recording from surface source with/without audio // Test recording from surface source with/without audio public void testSurfaceRecordingTimeLapse() { public void testSurfaceRecordingTimeLapse() { boolean success = false; boolean success = false; Loading @@ -583,7 +631,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra success = recordVideoFromSurface( success = recordVideoFromSurface( frameRate, captureRate, 352, 288, codec, frameRate, captureRate, 352, 288, codec, MediaRecorder.OutputFormat.THREE_GPP, MediaRecorder.OutputFormat.THREE_GPP, filename, false /* videoOnly */); filename, false /* videoOnly */, null); if (success) { if (success) { success = validateVideo(filename, 352, 288); success = validateVideo(filename, 352, 288); if (success) { if (success) { Loading