Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a1672b6e authored by Sally Qi's avatar Sally Qi
Browse files

Fix HDR colorspace crash during tonemapping

Bug: 266056645
Test: build and test tonemap apps
Change-Id: Icddb827be4dcfdfdf7de12c75d35ca1bfd65570a
parent a2acce86
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -155,24 +155,13 @@ android_dataspace ColorSpaceToADataSpace(SkColorSpace* colorSpace, SkColorType c

    skcms_TransferFunction fn;
    if (!colorSpace->isNumericalTransferFn(&fn)) {
        // pq with the default white point
        auto rec2020PQ = SkColorSpace::MakeRGB(GetPQSkTransferFunction(), SkNamedGamut::kRec2020);
        if (SkColorSpace::Equals(colorSpace, rec2020PQ.get())) {
        auto res = skcms_TransferFunction_getType(&fn);
        if (res == skcms_TFType_PQish) {
            return HAL_DATASPACE_BT2020_PQ;
        }
        // standard PQ
        rec2020PQ = SkColorSpace::MakeRGB(SkNamedTransferFn::kPQ, SkNamedGamut::kRec2020);
        if (SkColorSpace::Equals(colorSpace, rec2020PQ.get())) {
            return HAL_DATASPACE_BT2020_PQ;
        }
        // HLG
        const auto hlgFn = GetHLGScaleTransferFunction();
        if (hlgFn.has_value()) {
            auto rec2020HLG = SkColorSpace::MakeRGB(hlgFn.value(), SkNamedGamut::kRec2020);
            if (SkColorSpace::Equals(colorSpace, rec2020HLG.get())) {
        if (res == skcms_TFType_HLGish) {
            return static_cast<android_dataspace>(HAL_DATASPACE_BT2020_HLG);
        }
        }
        LOG_ALWAYS_FATAL("Only select non-numerical transfer functions are supported");
    }