Exposing specific profile levels + hasProfile().

- Exposing the specific resolution profile levels
  QUALITY_{QCIF,CIF,480P,720P,1080P} and the new time lapse profiles
  QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,CIF,480P,720P,1080P}
- Unhiding the hasProfile() function used to test if a given profile exists.

Change-Id: I5d8b9e1ba61718f304235e76d85244e428e68643
diff --git a/api/current.xml b/api/current.xml
index f65226e..4adb185 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -98314,6 +98314,78 @@
 <parameter name="quality" type="int">
 </parameter>
 </method>
+<method name="hasProfile"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="quality" type="int">
+</parameter>
+</method>
+<method name="hasProfile"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cameraId" type="int">
+</parameter>
+<parameter name="quality" type="int">
+</parameter>
+</method>
+<field name="QUALITY_1080P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_480P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_720P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_CIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="QUALITY_HIGH"
  type="int"
  transient="false"
@@ -98336,6 +98408,94 @@
  visibility="public"
 >
 </field>
+<field name="QUALITY_QCIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_1080P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1006"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_480P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1004"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_720P"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1005"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_CIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_HIGH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_LOW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1000"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUALITY_TIME_LAPSE_QCIF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1002"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="audioBitRate"
  type="int"
  transient="false"
diff --git a/include/media/MediaProfiles.h b/include/media/MediaProfiles.h
index 183bb1e..0ec7eec 100644
--- a/include/media/MediaProfiles.h
+++ b/include/media/MediaProfiles.h
@@ -27,16 +27,18 @@
     CAMCORDER_QUALITY_LOW  = 0,
     CAMCORDER_QUALITY_HIGH = 1,
     CAMCORDER_QUALITY_QCIF = 2,
-    CAMCORDER_QUALITY_480P = 3,
-    CAMCORDER_QUALITY_720P = 4,
-    CAMCORDER_QUALITY_1080P = 5,
+    CAMCORDER_QUALITY_CIF = 3,
+    CAMCORDER_QUALITY_480P = 4,
+    CAMCORDER_QUALITY_720P = 5,
+    CAMCORDER_QUALITY_1080P = 6,
 
     CAMCORDER_QUALITY_TIME_LAPSE_LOW  = 1000,
     CAMCORDER_QUALITY_TIME_LAPSE_HIGH = 1001,
     CAMCORDER_QUALITY_TIME_LAPSE_QCIF = 1002,
-    CAMCORDER_QUALITY_TIME_LAPSE_480P = 1003,
-    CAMCORDER_QUALITY_TIME_LAPSE_720P = 1004,
-    CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1005
+    CAMCORDER_QUALITY_TIME_LAPSE_CIF = 1003,
+    CAMCORDER_QUALITY_TIME_LAPSE_480P = 1004,
+    CAMCORDER_QUALITY_TIME_LAPSE_720P = 1005,
+    CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1006
 };
 
 enum video_decoder {
diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java
index e9ad8ee..daa976f 100644
--- a/media/java/android/media/CamcorderProfile.java
+++ b/media/java/android/media/CamcorderProfile.java
@@ -53,54 +53,64 @@
     public static final int QUALITY_HIGH = 1;
 
     /**
-     * Quality level corresponding to the qcif (176 × 144) resolution.
+     * Quality level corresponding to the qcif (176 x 144) resolution.
      */
-    private static final int QUALITY_QCIF = 2;
+    public static final int QUALITY_QCIF = 2;
+
+    /**
+     * Quality level corresponding to the cif (352 x 288) resolution.
+     */
+    public static final int QUALITY_CIF = 3;
 
     /**
      * Quality level corresponding to the 480p (720 x 480) resolution.
      */
-    private static final int QUALITY_480P = 3;
+    public static final int QUALITY_480P = 4;
 
     /**
      * Quality level corresponding to the 720p (1280 x 720) resolution.
      */
-    private static final int QUALITY_720P = 4;
+    public static final int QUALITY_720P = 5;
 
     /**
      * Quality level corresponding to the 1080p (1920 x 1088) resolution.
      */
-    private static final int QUALITY_1080P = 5;
+    public static final int QUALITY_1080P = 6;
 
     /**
      * Time lapse quality level corresponding to the lowest available resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_LOW  = 1000;
+    public static final int QUALITY_TIME_LAPSE_LOW  = 1000;
 
     /**
      * Time lapse quality level corresponding to the highest available resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_HIGH = 1001;
+    public static final int QUALITY_TIME_LAPSE_HIGH = 1001;
 
     /**
-     * Time lapse quality level corresponding to the qcif (176 × 144) resolution.
+     * Time lapse quality level corresponding to the qcif (176 x 144) resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_QCIF = 1002;
+    public static final int QUALITY_TIME_LAPSE_QCIF = 1002;
+
+    /**
+     * Time lapse quality level corresponding to the cif (352 x 288) resolution.
+     */
+    public static final int QUALITY_TIME_LAPSE_CIF = 1003;
 
     /**
      * Time lapse quality level corresponding to the 480p (720 x 480) resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_480P = 1003;
+    public static final int QUALITY_TIME_LAPSE_480P = 1004;
 
     /**
      * Time lapse quality level corresponding to the 720p (1280 x 720) resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_720P = 1004;
+    public static final int QUALITY_TIME_LAPSE_720P = 1005;
 
     /**
      * Time lapse quality level corresponding to the 1080p (1920 x 1088) resolution.
      */
-    private static final int QUALITY_TIME_LAPSE_1080P = 1005;
+    public static final int QUALITY_TIME_LAPSE_1080P = 1006;
 
     /**
      * Default recording duration in seconds before the session is terminated.
@@ -181,10 +191,11 @@
      * quality level.
      *
      * Quality levels QUALITY_LOW, QUALITY_HIGH are guaranteed to be supported, while
-     * other levels may or may not be supported.
+     * other levels may or may not be supported. The supported levels can be checked using
+     * {@link #hasProfile(int, int)}.
      * QUALITY_LOW refers to the lowest quality available, while QUALITY_HIGH refers to
      * the highest quality available.
-     * QUALITY_LOW/QUALITY_HIGH have to match one of qcif, 480p, 720p, or 1080p.
+     * QUALITY_LOW/QUALITY_HIGH have to match one of qcif, cif, 480p, 720p, or 1080p.
      * E.g. if the device supports 480p, 720p, and 1080p, then low is 480p and high is
      * 1080p.
      *
@@ -195,6 +206,20 @@
      *
      * @param cameraId the id for the camera
      * @param quality the target quality level for the camcorder profile.
+     * @see #QUALITY_LOW
+     * @see #QUALITY_HIGH
+     * @see #QUALITY_QCIF
+     * @see #QUALITY_CIF
+     * @see #QUALITY_480P
+     * @see #QUALITY_720P
+     * @see #QUALITY_1080P
+     * @see #QUALITY_TIME_LAPSE_LOW
+     * @see #QUALITY_TIME_LAPSE_HIGH
+     * @see #QUALITY_TIME_LAPSE_QCIF
+     * @see #QUALITY_TIME_LAPSE_CIF
+     * @see #QUALITY_TIME_LAPSE_480P
+     * @see #QUALITY_TIME_LAPSE_720P
+     * @see #QUALITY_TIME_LAPSE_1080P
      */
     public static CamcorderProfile get(int cameraId, int quality) {
         if (!((quality >= QUALITY_LOW && quality <= QUALITY_1080P) ||
@@ -209,7 +234,6 @@
      * Returns true if camcorder profile exists for the default camera at
      * the given quality level.
      * @param quality the target quality level for the camcorder profile
-     * @hide
      */
     public static boolean hasProfile(int quality) {
         return hasProfile(android.hardware.Camera.CAMERA_ID_DEFAULT, quality);
@@ -220,7 +244,6 @@
      * the given quality level.
      * @param cameraId the id for the camera
      * @param quality the target quality level for the camcorder profile
-     * @hide
      */
     public static boolean hasProfile(int cameraId, int quality) {
         return native_has_camcorder_profile(cameraId, quality);
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index 81647e0..645c163 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -62,6 +62,7 @@
     {"low", CAMCORDER_QUALITY_LOW},
     {"high", CAMCORDER_QUALITY_HIGH},
     {"qcif", CAMCORDER_QUALITY_QCIF},
+    {"cif", CAMCORDER_QUALITY_CIF},
     {"480p", CAMCORDER_QUALITY_480P},
     {"720p", CAMCORDER_QUALITY_720P},
     {"1080p", CAMCORDER_QUALITY_1080P},
@@ -69,6 +70,7 @@
     {"timelapselow",  CAMCORDER_QUALITY_TIME_LAPSE_LOW},
     {"timelapsehigh", CAMCORDER_QUALITY_TIME_LAPSE_HIGH},
     {"timelapseqcif", CAMCORDER_QUALITY_TIME_LAPSE_QCIF},
+    {"timelapsecif", CAMCORDER_QUALITY_TIME_LAPSE_CIF},
     {"timelapse480p", CAMCORDER_QUALITY_TIME_LAPSE_480P},
     {"timelapse720p", CAMCORDER_QUALITY_TIME_LAPSE_720P},
     {"timelapse1080p", CAMCORDER_QUALITY_TIME_LAPSE_1080P}