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

Commit 764e7656 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "C2SoftVpxDec: Add dynamic color aspects support" into main am: 02e64af2 am: b9820721

parents facc94ef b9820721
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -446,6 +446,7 @@ status_t C2SoftVpxDec::initDecoder() {
    {
        IntfImpl::Lock lock = mIntf->lock();
        mPixelFormatInfo = mIntf->getPixelFormat_l();
        mColorAspects = mIntf->getDefaultColorAspects_l();
    }

    mWidth = 320;
@@ -591,6 +592,41 @@ void C2SoftVpxDec::process(
        return;
    }

    // handle dynamic config parameters
    {
        IntfImpl::Lock lock = mIntf->lock();
        std::shared_ptr<C2StreamColorAspectsTuning::output> defaultColorAspects =
            mIntf->getDefaultColorAspects_l();
        lock.unlock();

        if (mColorAspects->range != defaultColorAspects->range ||
            mColorAspects->primaries != defaultColorAspects->primaries ||
            mColorAspects->matrix != defaultColorAspects->matrix ||
            mColorAspects->transfer != defaultColorAspects->transfer) {

            mColorAspects->range = defaultColorAspects->range;
            mColorAspects->primaries = defaultColorAspects->primaries;
            mColorAspects->matrix = defaultColorAspects->matrix;
            mColorAspects->transfer = defaultColorAspects->transfer;

            C2StreamColorAspectsTuning::output colorAspect(0u, defaultColorAspects->range,
                defaultColorAspects->primaries, defaultColorAspects->transfer,
                defaultColorAspects->matrix);
            std::vector<std::unique_ptr<C2SettingResult>> failures;
            c2_status_t err = mIntf->config({&colorAspect}, C2_MAY_BLOCK, &failures);
            if (err == C2_OK) {
                work->worklets.front()->output.configUpdate.push_back(
                    C2Param::Copy(colorAspect));
            } else {
                ALOGE("Config update colorAspect failed");
                mSignalledError = true;
                work->workletsProcessed = 1u;
                work->result = C2_CORRUPTED;
                return;
            }
        }
    }

    size_t inOffset = 0u;
    size_t inSize = 0u;
    C2ReadView rView = mDummyReadView;
+1 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ struct C2SoftVpxDec : public SimpleC2Component {
    // configurations used by component in process
    // (TODO: keep this in intf but make them internal only)
    std::shared_ptr<C2StreamPixelFormatInfo::output> mPixelFormatInfo;
    std::shared_ptr<C2StreamColorAspectsTuning::output> mColorAspects;

    std::shared_ptr<IntfImpl> mIntf;
    vpx_codec_ctx_t *mCodecCtx;