Merge "stagefright: fix some issues with mkv HDR info conversions" into nyc-dev
diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp
index 383a0ad..0f9430e 100644
--- a/media/libstagefright/matroska/MatroskaExtractor.cpp
+++ b/media/libstagefright/matroska/MatroskaExtractor.cpp
@@ -1137,9 +1137,11 @@
                 info.sType1.mMaxDisplayLuminance = (uint16_t)(mastering->luminance_max + 0.5);
             }
             if (mastering->luminance_min >= 0.00005 && mastering->luminance_min < 6.55355) {
+                // HDRStaticInfo Type1 stores min luminance scaled 10000:1
                 info.sType1.mMinDisplayLuminance =
                     (uint16_t)(10000 * mastering->luminance_min + 0.5);
             }
+            // HDRStaticInfo Type1 stores primaries scaled 50000:1
             if (isValidPrimary(mastering->white_point)) {
                 info.sType1.mW.x = (uint16_t)(50000 * mastering->white_point->x + 0.5);
                 info.sType1.mW.y = (uint16_t)(50000 * mastering->white_point->y + 0.5);
diff --git a/media/libstagefright/webm/WebmConstants.h b/media/libstagefright/webm/WebmConstants.h
index cf6404f..3111559 100644
--- a/media/libstagefright/webm/WebmConstants.h
+++ b/media/libstagefright/webm/WebmConstants.h
@@ -99,23 +99,23 @@
     kMkvDisplayUnit = 0x54B2,
     kMkvAspectRatioType = 0x54B3,
     kMkvColour = 0x55B0,
-    kMkvColourMatrixCoefficients = 0x55B1,
-    kMkvColourRange = 0x55B9,
-    kMkvColourTransferCharacteristics = 0x55BA,
-    kMkvColourPrimaries = 0x55BB,
-    kMkvColourMaxCll = 0x55BC,
-    kMkvColourMaxFall = 0x55BD,
+    kMkvMatrixCoefficients = 0x55B1,
+    kMkvRange = 0x55B9,
+    kMkvTransferCharacteristics = 0x55BA,
+    kMkvPrimaries = 0x55BB,
+    kMkvMaxCLL = 0x55BC,
+    kMkvMaxFALL = 0x55BD,
     kMkvMasteringMetadata = 0x55D0,
-    kMkvMasteringPrimaryRChromaticityX = 0x55D1,
-    kMkvMasteringPrimaryRChromaticityY = 0x55D2,
-    kMkvMasteringPrimaryGChromaticityX = 0x55D3,
-    kMkvMasteringPrimaryGChromaticityY = 0x55D4,
-    kMkvMasteringPrimaryBChromaticityX = 0x55D5,
-    kMkvMasteringPrimaryBChromaticityY = 0x55D6,
-    kMkvMasteringWhitePointChromaticityX = 0x55D7,
-    kMkvMasteringWhitePointChromaticityY = 0x55D8,
-    kMkvMasteringLuminanceMax = 0x55D9,
-    kMkvMasteringLuminanceMin = 0x55DA,
+    kMkvPrimaryRChromaticityX = 0x55D1,
+    kMkvPrimaryRChromaticityY = 0x55D2,
+    kMkvPrimaryGChromaticityX = 0x55D3,
+    kMkvPrimaryGChromaticityY = 0x55D4,
+    kMkvPrimaryBChromaticityX = 0x55D5,
+    kMkvPrimaryBChromaticityY = 0x55D6,
+    kMkvWhitePointChromaticityX = 0x55D7,
+    kMkvWhitePointChromaticityY = 0x55D8,
+    kMkvLuminanceMax = 0x55D9,
+    kMkvLuminanceMin = 0x55DA,
     kMkvFrameRate = 0x2383E3,
     kMkvAudio = 0xE1,
     kMkvSamplingFrequency = 0xB5,
diff --git a/media/libstagefright/webm/WebmElement.cpp b/media/libstagefright/webm/WebmElement.cpp
index 17fae06..a5120b9 100644
--- a/media/libstagefright/webm/WebmElement.cpp
+++ b/media/libstagefright/webm/WebmElement.cpp
@@ -393,16 +393,16 @@
         ColorUtils::convertCodecColorAspectsToIsoAspects(
                 aspects, &primaries, &transfer, &coeffs, &fullRange);
         if (havePrimaries) {
-            colorInfo.push_back(new WebmUnsigned(kMkvColourPrimaries, primaries));
+            colorInfo.push_back(new WebmUnsigned(kMkvPrimaries, primaries));
         }
         if (haveTransfer) {
-            colorInfo.push_back(new WebmUnsigned(kMkvColourTransferCharacteristics, transfer));
+            colorInfo.push_back(new WebmUnsigned(kMkvTransferCharacteristics, transfer));
         }
         if (haveCoeffs) {
-            colorInfo.push_back(new WebmUnsigned(kMkvColourMatrixCoefficients, coeffs));
+            colorInfo.push_back(new WebmUnsigned(kMkvMatrixCoefficients, coeffs));
         }
         if (haveRange) {
-            colorInfo.push_back(new WebmUnsigned(kMkvColourRange, fullRange ? 2 : 1));
+            colorInfo.push_back(new WebmUnsigned(kMkvRange, fullRange ? 2 : 1));
         }
 
         // Also add HDR static info, some of which goes to MasteringMetadata element
@@ -420,40 +420,42 @@
                 // convert HDRStaticInfo values to matroska equivalent values for each non-0 group
                 if (info->sType1.mMaxFrameAverageLightLevel) {
                     colorInfo.push_back(new WebmUnsigned(
-                            kMkvColourMaxFall, info->sType1.mMaxFrameAverageLightLevel));
+                            kMkvMaxFALL, info->sType1.mMaxFrameAverageLightLevel));
                 }
                 if (info->sType1.mMaxContentLightLevel) {
                     colorInfo.push_back(new WebmUnsigned(
-                            kMkvColourMaxCll, info->sType1.mMaxContentLightLevel));
+                            kMkvMaxCLL, info->sType1.mMaxContentLightLevel));
                 }
                 if (info->sType1.mMinDisplayLuminance) {
+                    // HDRStaticInfo Type1 stores min luminance scaled 10000:1
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringLuminanceMin, info->sType1.mMinDisplayLuminance * 0.0001));
+                            kMkvLuminanceMin, info->sType1.mMinDisplayLuminance * 0.0001));
                 }
                 if (info->sType1.mMaxDisplayLuminance) {
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringLuminanceMax, (float)info->sType1.mMaxDisplayLuminance));
+                            kMkvLuminanceMax, (float)info->sType1.mMaxDisplayLuminance));
                 }
+                // HDRStaticInfo Type1 stores primaries scaled 50000:1
                 if (info->sType1.mW.x || info->sType1.mW.y) {
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringWhitePointChromaticityX, info->sType1.mW.x * 0.00002));
+                            kMkvWhitePointChromaticityX, info->sType1.mW.x * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringWhitePointChromaticityY, info->sType1.mW.y * 0.00002));
+                            kMkvWhitePointChromaticityY, info->sType1.mW.y * 0.00002));
                 }
-                if (info->sType1.mR.x || info->sType1.mR.x || info->sType1.mG.x
+                if (info->sType1.mR.x || info->sType1.mR.y || info->sType1.mG.x
                         || info->sType1.mG.y || info->sType1.mB.x || info->sType1.mB.y) {
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryRChromaticityX, info->sType1.mR.x * 0.00002));
+                            kMkvPrimaryRChromaticityX, info->sType1.mR.x * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryRChromaticityY, info->sType1.mR.y * 0.00002));
+                            kMkvPrimaryRChromaticityY, info->sType1.mR.y * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryGChromaticityX, info->sType1.mG.x * 0.00002));
+                            kMkvPrimaryGChromaticityX, info->sType1.mG.x * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryGChromaticityY, info->sType1.mG.y * 0.00002));
+                            kMkvPrimaryGChromaticityY, info->sType1.mG.y * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryBChromaticityX, info->sType1.mB.x * 0.00002));
+                            kMkvPrimaryBChromaticityX, info->sType1.mB.x * 0.00002));
                     masteringInfo.push_back(new WebmFloat(
-                            kMkvMasteringPrimaryBChromaticityY, info->sType1.mB.y * 0.00002));
+                            kMkvPrimaryBChromaticityY, info->sType1.mB.y * 0.00002));
                 }
                 if (masteringInfo.size()) {
                     colorInfo.push_back(new WebmMaster(kMkvMasteringMetadata, masteringInfo));