am 0467b0ab: Merge "Add a new public API to support recording rotated videos" into gingerbread
* commit '0467b0abfc94f959163d84eadedf6941e41c1882':
Add a new public API to support recording rotated videos
diff --git a/api/current.xml b/api/current.xml
index c9ceb2f..0ceda22 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -88931,6 +88931,19 @@
<parameter name="listener" type="android.media.MediaRecorder.OnInfoListener">
</parameter>
</method>
+<method name="setOrientationHint"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="degrees" type="int">
+</parameter>
+</method>
<method name="setOutputFile"
return="void"
abstract="false"
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index b38124e..c102de4 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -285,6 +285,31 @@
}
/**
+ * Sets the orientation hint for output video playback.
+ * This method should be called before start(). This method will not
+ * trigger the source video frame to rotate during video recording, but to
+ * add a composition matrix containing the rotation angle in the output
+ * video if the output format is OutputFormat.THREE_GPP or
+ * OutputFormat.MPEG_4 so that a video player can choose the proper
+ * orientation for playback. Note that some video players may choose
+ * to ignore the compostion matrix in a video during playback.
+ *
+ * @param degrees the angle to be rotated clockwise in degrees.
+ * The supported angles are 0, 90, 180, and 270 degrees.
+ * @throws IllegalArgumentException if the angle is not supported.
+ *
+ */
+ public void setOrientationHint(int degrees) {
+ if (degrees != 0 &&
+ degrees != 90 &&
+ degrees != 180 &&
+ degrees != 270) {
+ throw new IllegalArgumentException("Unsupported angle: " + degrees);
+ }
+ setParameter(String.format("video-param-rotation-angle-degrees=%d", degrees));
+ }
+
+ /**
* Sets the format of the output file produced during recording. Call this
* after setAudioSource()/setVideoSource() but before prepare().
*