Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6e809bf authored by Chong Zhang's avatar Chong Zhang Committed by Android (Google) Code Review
Browse files

Merge "MediaRecorderTest: verify capture fps meta key is set"

parents d1500d8f 699780f5
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.hardware.Camera;
import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.EncoderCapabilities;
@@ -426,6 +427,29 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra
        return validVideo;
    }

    private boolean validateMetadata(String filePath, int captureRate) {
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();

        retriever.setDataSource(filePath);

        // verify capture rate meta key is present and correct
        String captureFps = retriever.extractMetadata(
                MediaMetadataRetriever.METADATA_KEY_CAPTURE_FRAMERATE);

        if (captureFps == null) {
            Log.d(TAG, "METADATA_KEY_CAPTURE_FRAMERATE is missing");
            return false;
        }

        if (Math.abs(Float.parseFloat(captureFps) - captureRate) > 0.001) {
            Log.d(TAG, "METADATA_KEY_CAPTURE_FRAMERATE is incorrect: "
                    + captureFps + "vs. " + captureRate);
            return false;
        }

        // verify other meta keys here if necessary
        return true;
    }
    @LargeTest
    /*
     * This test case set the camera in portrait mode.
@@ -555,13 +579,16 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra

                // always set videoOnly=false, MediaRecorder should disable
                // audio automatically with time lapse/slow motion
                success = recordVideoFromSurface(frameRate,
                        k==0 ? MIN_VIDEO_FPS : HIGH_SPEED_FPS,
                        352, 288, codec,
                int captureRate = k==0 ? MIN_VIDEO_FPS : HIGH_SPEED_FPS;
                success = recordVideoFromSurface(
                        frameRate, captureRate, 352, 288, codec,
                        MediaRecorder.OutputFormat.THREE_GPP,
                        filename, false /* videoOnly */);
                if (success) {
                    success = validateVideo(filename, 352, 288);
                    if (success) {
                        success = validateMetadata(filename, captureRate);
                    }
                }
                if (!success) {
                    noOfFailure++;
@@ -569,6 +596,7 @@ public class MediaRecorderTest extends ActivityInstrumentationTestCase2<MediaFra
            }
        } catch (Exception e) {
            Log.v(TAG, e.toString());
            noOfFailure++;
        }
        assertTrue("testSurfaceRecordingTimeLapse", noOfFailure == 0);
    }