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

Commit 24993ca9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "CCodec: fix dataspace configured for the input surfaces" into sc-dev am: 1eeb75c8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15446955

Change-Id: Ib74f0902e555dfd115ee24675d75d44cd7ec8e83
parents 1caba321 1eeb75c8
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -1572,8 +1572,25 @@ status_t CCodec::setupInputSurface(const std::shared_ptr<InputSurfaceWrapper> &s

    // configure dataspace
    static_assert(sizeof(int32_t) == sizeof(android_dataspace), "dataspace size mismatch");
    android_dataspace dataSpace = HAL_DATASPACE_UNKNOWN;
    (void)config->mInputFormat->findInt32("android._dataspace", (int32_t*)&dataSpace);

    // The output format contains app-configured color aspects, and the input format
    // has the default color aspects. Use the default for the unspecified params.
    ColorAspects inputColorAspects, outputColorAspects;
    getColorAspectsFromFormat(config->mOutputFormat, outputColorAspects);
    getColorAspectsFromFormat(config->mInputFormat, inputColorAspects);
    if (outputColorAspects.mRange == ColorAspects::RangeUnspecified) {
        outputColorAspects.mRange = inputColorAspects.mRange;
    }
    if (outputColorAspects.mPrimaries == ColorAspects::PrimariesUnspecified) {
        outputColorAspects.mPrimaries = inputColorAspects.mPrimaries;
    }
    if (outputColorAspects.mTransfer == ColorAspects::TransferUnspecified) {
        outputColorAspects.mTransfer = inputColorAspects.mTransfer;
    }
    if (outputColorAspects.mMatrixCoeffs == ColorAspects::MatrixUnspecified) {
        outputColorAspects.mMatrixCoeffs = inputColorAspects.mMatrixCoeffs;
    }
    android_dataspace dataSpace = getDataSpaceForColorAspects(outputColorAspects, false);
    surface->setDataSpace(dataSpace);

    status_t err = mChannel->setInputSurface(surface);