Merge "Add HEVC decoder support ot MediaCodec bug: 14571712"
diff --git a/api/current.txt b/api/current.txt
index eda087d..29ca03d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -14065,6 +14065,34 @@
     field public static final int H263ProfileISWV3 = 16; // 0x10
     field public static final int H263ProfileInterlace = 128; // 0x80
     field public static final int H263ProfileInternet = 64; // 0x40
+    field public static final int HEVCHighTierLevel1 = 2; // 0x2
+    field public static final int HEVCHighTierLevel2 = 8; // 0x8
+    field public static final int HEVCHighTierLevel21 = 32; // 0x20
+    field public static final int HEVCHighTierLevel3 = 128; // 0x80
+    field public static final int HEVCHighTierLevel31 = 512; // 0x200
+    field public static final int HEVCHighTierLevel4 = 2048; // 0x800
+    field public static final int HEVCHighTierLevel41 = 8192; // 0x2000
+    field public static final int HEVCHighTierLevel5 = 32768; // 0x8000
+    field public static final int HEVCHighTierLevel51 = 131072; // 0x20000
+    field public static final int HEVCHighTierLevel52 = 524288; // 0x80000
+    field public static final int HEVCHighTierLevel6 = 2097152; // 0x200000
+    field public static final int HEVCHighTierLevel61 = 8388608; // 0x800000
+    field public static final int HEVCHighTierLevel62 = 33554432; // 0x2000000
+    field public static final int HEVCMainTierLevel1 = 1; // 0x1
+    field public static final int HEVCMainTierLevel2 = 4; // 0x4
+    field public static final int HEVCMainTierLevel21 = 16; // 0x10
+    field public static final int HEVCMainTierLevel3 = 64; // 0x40
+    field public static final int HEVCMainTierLevel31 = 256; // 0x100
+    field public static final int HEVCMainTierLevel4 = 1024; // 0x400
+    field public static final int HEVCMainTierLevel41 = 4096; // 0x1000
+    field public static final int HEVCMainTierLevel5 = 16384; // 0x4000
+    field public static final int HEVCMainTierLevel51 = 65536; // 0x10000
+    field public static final int HEVCMainTierLevel52 = 262144; // 0x40000
+    field public static final int HEVCMainTierLevel6 = 1048576; // 0x100000
+    field public static final int HEVCMainTierLevel61 = 4194304; // 0x400000
+    field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
+    field public static final int HEVCProfileMain = 1; // 0x1
+    field public static final int HEVCProfileMain10 = 2; // 0x2
     field public static final int MPEG4Level0 = 1; // 0x1
     field public static final int MPEG4Level0b = 2; // 0x2
     field public static final int MPEG4Level1 = 4; // 0x4
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 34c55202..c7b3fc9 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -212,6 +212,7 @@
      * <li>"video/x-vnd.on2.vp8" - VP8 video (i.e. video in .webm)
      * <li>"video/x-vnd.on2.vp9" - VP9 video (i.e. video in .webm)
      * <li>"video/avc" - H.264/AVC video
+     * <li>"video/hevc" - H.265/HEVC video
      * <li>"video/mp4v-es" - MPEG4 video
      * <li>"video/3gpp" - H.263 video
      * <li>"audio/3gpp" - AMR narrowband audio
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 90c12c6..b5d0a57 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -264,6 +264,37 @@
         // from OMX_VIDEO_VP8PROFILETYPE
         public static final int VP8ProfileMain = 0x01;
 
+        // from OMX_VIDEO_HEVCPROFILETYPE
+        public static final int HEVCProfileMain   = 0x01;
+        public static final int HEVCProfileMain10 = 0x02;
+
+        // from OMX_VIDEO_HEVCLEVELTYPE
+        public static final int HEVCMainTierLevel1  = 0x1;
+        public static final int HEVCHighTierLevel1  = 0x2;
+        public static final int HEVCMainTierLevel2  = 0x4;
+        public static final int HEVCHighTierLevel2  = 0x8;
+        public static final int HEVCMainTierLevel21 = 0x10;
+        public static final int HEVCHighTierLevel21 = 0x20;
+        public static final int HEVCMainTierLevel3  = 0x40;
+        public static final int HEVCHighTierLevel3  = 0x80;
+        public static final int HEVCMainTierLevel31 = 0x100;
+        public static final int HEVCHighTierLevel31 = 0x200;
+        public static final int HEVCMainTierLevel4  = 0x400;
+        public static final int HEVCHighTierLevel4  = 0x800;
+        public static final int HEVCMainTierLevel41 = 0x1000;
+        public static final int HEVCHighTierLevel41 = 0x2000;
+        public static final int HEVCMainTierLevel5  = 0x4000;
+        public static final int HEVCHighTierLevel5  = 0x8000;
+        public static final int HEVCMainTierLevel51 = 0x10000;
+        public static final int HEVCHighTierLevel51 = 0x20000;
+        public static final int HEVCMainTierLevel52 = 0x40000;
+        public static final int HEVCHighTierLevel52 = 0x80000;
+        public static final int HEVCMainTierLevel6  = 0x100000;
+        public static final int HEVCHighTierLevel6  = 0x200000;
+        public static final int HEVCMainTierLevel61 = 0x400000;
+        public static final int HEVCHighTierLevel61 = 0x800000;
+        public static final int HEVCMainTierLevel62 = 0x1000000;
+        public static final int HEVCHighTierLevel62 = 0x2000000;
 
         /**
          * Defined in the OpenMAX IL specs, depending on the type of media