Use CamcorderProfile to get workable resolution

If we can't get supported video sizes, we use CamcorderProfile
to get workable resolution for media encoder first instead of preview
sizes.

Test: Pass testRecordedVideoPlayback{0,90,180,270}
Bug: 124206215
Change-Id: Ia6325f3b3d6ad63e60262b37aa91f1c8b854304c
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
index 3f0cc39..5479ba4 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
@@ -24,6 +24,7 @@
 import android.graphics.Rect;
 import android.hardware.Camera;
 import android.media.AudioManager;
+import android.media.CamcorderProfile;
 import android.media.MediaCodec;
 import android.media.MediaDataSource;
 import android.media.MediaExtractor;
@@ -51,6 +52,7 @@
 import java.io.File;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.StringTokenizer;
 import java.util.UUID;
@@ -903,7 +905,14 @@
         // getSupportedVideoSizes returns null when separate video/preview size
         // is not supported.
         if (videoSizes == null) {
-            videoSizes = parameters.getSupportedPreviewSizes();
+            // If we have CamcorderProfile use it instead of Preview size.
+            if (CamcorderProfile.hasProfile(0, CamcorderProfile.QUALITY_LOW)) {
+                CamcorderProfile profile = CamcorderProfile.get(0, CamcorderProfile.QUALITY_LOW);
+                videoSizes = new ArrayList();
+                videoSizes.add(mCamera.new Size(profile.videoFrameWidth, profile.videoFrameHeight));
+            } else {
+                videoSizes = parameters.getSupportedPreviewSizes();
+            }
         }
         for (Camera.Size size : videoSizes)
         {