Merge "Fix HEVC profile idc parsing in HevcParameterSets" into pi-dev
diff --git a/media/libstagefright/HevcUtils.cpp b/media/libstagefright/HevcUtils.cpp
index 91deca5..f152a38 100644
--- a/media/libstagefright/HevcUtils.cpp
+++ b/media/libstagefright/HevcUtils.cpp
@@ -162,6 +162,8 @@
reader.skipBits(1);
// Skip vps_max_layers_minus_1
reader.skipBits(6);
+ // Skip vps_max_sub_layers_minus1
+ reader.skipBits(3);
// Skip vps_temporal_id_nesting_flags
reader.skipBits(1);
// Skip reserved
@@ -422,7 +424,7 @@
uint8_t *header = hvcc;
header[0] = 1;
- header[1] = (kGeneralProfileSpace << 6) | (kGeneralTierFlag << 5) | kGeneralProfileIdc;
+ header[1] = (generalProfileSpace << 6) | (generalTierFlag << 5) | generalProfileIdc;
header[2] = (compatibilityFlags >> 24) & 0xff;
header[3] = (compatibilityFlags >> 16) & 0xff;
header[4] = (compatibilityFlags >> 8) & 0xff;
diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
index 0c6e988..c61f4b5 100644
--- a/media/libstagefright/Utils.cpp
+++ b/media/libstagefright/Utils.cpp
@@ -303,6 +303,8 @@
const static ALookup<uint8_t, OMX_VIDEO_HEVCPROFILETYPE> profiles {
{ 1, OMX_VIDEO_HEVCProfileMain },
{ 2, OMX_VIDEO_HEVCProfileMain10 },
+ // use Main for Main Still Picture decoding
+ { 3, OMX_VIDEO_HEVCProfileMain },
};
// set profile & level if they are recognized
@@ -310,6 +312,7 @@
OMX_VIDEO_HEVCLEVELTYPE codecLevel;
if (!profiles.map(profile, &codecProfile)) {
if (ptr[2] & 0x40 /* general compatibility flag 1 */) {
+ // Note that this case covers Main Still Picture too
codecProfile = OMX_VIDEO_HEVCProfileMain;
} else if (ptr[2] & 0x20 /* general compatibility flag 2 */) {
codecProfile = OMX_VIDEO_HEVCProfileMain10;
diff --git a/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp b/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
index 103fc22..bb7d361 100644
--- a/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
+++ b/media/libstagefright/codecs/hevcdec/SoftHEVC.cpp
@@ -48,7 +48,8 @@
(IVD_CONTROL_API_COMMAND_TYPE_T)IHEVCD_CXA_CMD_CTL_SET_NUM_CORES
static const CodecProfileLevel kProfileLevels[] = {
- { OMX_VIDEO_HEVCProfileMain, OMX_VIDEO_HEVCMainTierLevel51 },
+ { OMX_VIDEO_HEVCProfileMain, OMX_VIDEO_HEVCMainTierLevel51 },
+ { OMX_VIDEO_HEVCProfileMainStill, OMX_VIDEO_HEVCMainTierLevel51 },
};
SoftHEVC::SoftHEVC(