Add the presentation rotation support

bug:7991013

Change-Id: I10cb034b432876c724baa4974efcb3d67b8a99b6
diff --git a/cmds/stagefright/muxer.cpp b/cmds/stagefright/muxer.cpp
index fac2acc..cca33e0 100644
--- a/cmds/stagefright/muxer.cpp
+++ b/cmds/stagefright/muxer.cpp
@@ -55,7 +55,8 @@
         const char *outputFileName,
         bool enableTrim,
         int trimStartTimeMs,
-        int trimEndTimeMs) {
+        int trimEndTimeMs,
+        int rotationDegrees) {
     sp<NuMediaExtractor> extractor = new NuMediaExtractor;
     if (extractor->setDataSource(path) != OK) {
         fprintf(stderr, "unable to instantiate extractor. %s\n", path);
@@ -141,6 +142,7 @@
     size_t trackIndex = -1;
     sp<ABuffer> newBuffer = new ABuffer(bufferSize);
 
+    muxer->setOrientationHint(rotationDegrees);
     muxer->start();
 
     while (!sawInputEOS) {
@@ -210,12 +212,13 @@
     char *outputFileName = NULL;
     int trimStartTimeMs = -1;
     int trimEndTimeMs = -1;
+    int rotationDegrees = 0;
     // When trimStartTimeMs and trimEndTimeMs seems valid, we turn this switch
     // to true.
     bool enableTrim = false;
 
     int res;
-    while ((res = getopt(argc, argv, "h?avo:s:e:")) >= 0) {
+    while ((res = getopt(argc, argv, "h?avo:s:e:r:")) >= 0) {
         switch (res) {
             case 'a':
             {
@@ -247,6 +250,12 @@
                 break;
             }
 
+            case 'r':
+            {
+                rotationDegrees = atoi(optarg);
+                break;
+            }
+
             case '?':
             case 'h':
             default:
@@ -288,7 +297,7 @@
     looper->start();
 
     int result = muxing(looper, argv[0], useAudio, useVideo, outputFileName,
-                        enableTrim, trimStartTimeMs, trimEndTimeMs);
+                        enableTrim, trimStartTimeMs, trimEndTimeMs, rotationDegrees);
 
     looper->stop();