OSDN Git Service

Rotate fallback size
authorAndy McFadden <fadden@android.com>
Thu, 19 Sep 2013 18:08:33 +0000 (11:08 -0700)
committerAndy McFadden <fadden@android.com>
Thu, 19 Sep 2013 18:08:33 +0000 (11:08 -0700)
If configuring the encoder for display-size recording fails, we drop
back to 720p.  This was done a bit too literally, and didn't look
good in portrait mode.  Rotate the fallback size as needed.

Bug 10826876

Change-Id: Id3130471fc1467afa8bf91d75c9d4a49245253c3

cmds/screenrecord/screenrecord.cpp

index 68289a5..49999b5 100644 (file)
@@ -464,12 +464,16 @@ static status_t recordScreen(const char* fileName) {
     err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
 
     if (err != NO_ERROR && !gSizeSpecified) {
-        if (gVideoWidth != kFallbackWidth && gVideoHeight != kFallbackHeight) {
+        // fallback is defined for landscape; swap if we're in portrait
+        bool needSwap = gVideoWidth < gVideoHeight;
+        uint32_t newWidth = needSwap ? kFallbackHeight : kFallbackWidth;
+        uint32_t newHeight = needSwap ? kFallbackWidth : kFallbackHeight;
+        if (gVideoWidth != newWidth && gVideoHeight != newHeight) {
             ALOGV("Retrying with 720p");
-            fprintf(stderr, "WARNING: failed at %dx%d, retrying at 720p\n",
-                    gVideoWidth, gVideoHeight);
-            gVideoWidth = kFallbackWidth;
-            gVideoHeight = kFallbackHeight;
+            fprintf(stderr, "WARNING: failed at %dx%d, retrying at %dx%d\n",
+                    gVideoWidth, gVideoHeight, newWidth, newHeight);
+            gVideoWidth = newWidth;
+            gVideoHeight = newHeight;
             err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
         }
     }