Loading media/libstagefright/matroska/MatroskaExtractor.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -1137,9 +1137,11 @@ void MatroskaExtractor::getColorInformation( 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); Loading media/libstagefright/webm/WebmConstants.h +16 −16 Original line number Diff line number Diff line Loading @@ -99,23 +99,23 @@ enum Mkv { 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, Loading media/libstagefright/webm/WebmElement.cpp +19 −17 Original line number Diff line number Diff line Loading @@ -393,16 +393,16 @@ sp<WebmElement> WebmElement::VideoTrackEntry( 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 Loading @@ -420,40 +420,42 @@ sp<WebmElement> WebmElement::VideoTrackEntry( // 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)); Loading Loading
media/libstagefright/matroska/MatroskaExtractor.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -1137,9 +1137,11 @@ void MatroskaExtractor::getColorInformation( 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); Loading
media/libstagefright/webm/WebmConstants.h +16 −16 Original line number Diff line number Diff line Loading @@ -99,23 +99,23 @@ enum Mkv { 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, Loading
media/libstagefright/webm/WebmElement.cpp +19 −17 Original line number Diff line number Diff line Loading @@ -393,16 +393,16 @@ sp<WebmElement> WebmElement::VideoTrackEntry( 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 Loading @@ -420,40 +420,42 @@ sp<WebmElement> WebmElement::VideoTrackEntry( // 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)); Loading