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

Commit eaffc08a authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11740859 from 0c67b62e to 24Q3-release

Change-Id: Ieef9168ad5bb2998e850f9f38ff4a28b12fb50ee
parents 5b7ad60b 0c67b62e
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;
+16 −14
Original line number Diff line number Diff line
@@ -370,11 +370,9 @@ status_t StreamHalAidl::resume(StreamDescriptor::Reply* reply) {
    if (mIsInput) {
        return sendCommand(makeHalCommand<HalCommand::Tag::burst>(0), reply);
    } else {
        if (mContext.isAsynchronous()) {
        if (const auto state = getState(); state == StreamDescriptor::State::IDLE) {
            // Handle pause-flush-resume sequence. 'flush' from PAUSED goes to
            // IDLE. We move here from IDLE to ACTIVE (same as 'start' from PAUSED).
            const auto state = getState();
            if (state == StreamDescriptor::State::IDLE) {
            StreamDescriptor::Reply localReply{};
            StreamDescriptor::Reply* innerReply = reply ?: &localReply;
            RETURN_STATUS_IF_ERROR(
@@ -385,9 +383,13 @@ status_t StreamHalAidl::resume(StreamDescriptor::Reply* reply) {
                return INVALID_OPERATION;
            }
            return OK;
            }
        }
        } else if (state == StreamDescriptor::State::PAUSED) {
            return sendCommand(makeHalCommand<HalCommand::Tag::start>(), reply);
        } else {
            ALOGE("%s: unexpected stream state: %s (expected IDLE or PAUSED)",
                        __func__, toString(state).c_str());
            return INVALID_OPERATION;
        }
    }
}

+14 −14
Original line number Diff line number Diff line
@@ -3975,6 +3975,15 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                    switch (mState) {
                        case INITIALIZING:
                        {
                            // Resource error during INITIALIZING state needs to be logged
                            // through metrics, to be able to track such occurrences.
                            if (isResourceError(err)) {
                                mediametrics_setInt32(mMetricsHandle, kCodecError, err);
                                mediametrics_setCString(mMetricsHandle, kCodecErrorState,
                                                        stateString(mState).c_str());
                                flushMediametrics();
                                initMediametrics();
                            }
                            setState(UNINITIALIZED);
                            break;
                        }
@@ -4912,8 +4921,8 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
                if (flags & CONFIGURE_FLAG_USE_CRYPTO_ASYNC) {
                    mFlags |= kFlagUseCryptoAsync;
                    if ((mFlags & kFlagUseBlockModel)) {
                        ALOGW("CrytoAsync not yet enabled for block model,\
                                falling back to normal");
                        ALOGW("CrytoAsync not yet enabled for block model, "
                                "falling back to normal");
                    }
                }
            }
@@ -4970,8 +4979,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {

            mDescrambler = static_cast<IDescrambler *>(descrambler);
            mBufferChannel->setDescrambler(mDescrambler);
            if ((mFlags & kFlagUseCryptoAsync) &&
                mCrypto  && (mDomain == DOMAIN_VIDEO)) {
            if ((mFlags & kFlagUseCryptoAsync) && mCrypto) {
                // set kFlagUseCryptoAsync but do-not use this for block model
                // this is to propagate the error in onCryptoError()
                // TODO (b/274628160): Enable Use of CONFIG_FLAG_USE_CRYPTO_ASYNC
@@ -6269,15 +6277,8 @@ status_t MediaCodec::onQueueInputBuffer(const sp<AMessage> &msg) {
        cryptoInfo->setInt32("secure", mFlags & kFlagIsSecure);
        sp<RefBase> obj;
        if (msg->findObject("cryptoInfos", &obj)) {
            sp<CryptoInfosWrapper> infos{(CryptoInfosWrapper*)obj.get()};
            sp<CryptoInfosWrapper> asyncInfos{
                    new CryptoInfosWrapper(std::vector<std::unique_ptr<CodecCryptoInfo>>())};
            for (std::unique_ptr<CodecCryptoInfo> &info : infos->value) {
                if (info) {
                    asyncInfos->value.emplace_back(new CryptoAsync::CryptoAsyncInfo(info));
                }
            }
            buffer->meta()->setObject("cryptoInfos", asyncInfos);
            // this object is a standalone object when created (no copy requied here)
            buffer->meta()->setObject("cryptoInfos", obj);
        } else {
            size_t key_len = (key != nullptr)? 16 : 0;
            size_t iv_len = (iv != nullptr)? 16 : 0;
@@ -6416,7 +6417,6 @@ status_t MediaCodec::onQueueInputBuffer(const sp<AMessage> &msg) {
            }
        }
        if (mCryptoAsync) {
            // TODO b/316565675 - enable async path for audio
            // prepare a message and enqueue
            sp<AMessage> cryptoInfo = new AMessage();
            buildCryptoInfoAMessage(cryptoInfo, CryptoAsync::kActionDecrypt);
+4 −0
Original line number Diff line number Diff line
@@ -353,6 +353,7 @@
                <Limit name="bitrate" range="1-20000000" />
            </Variant>
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="qp-bounds" />
            <Attribute name="software-codec" />
        </MediaCodec>
        <MediaCodec name="c2.android.hevc.encoder" type="video/hevc" variant="!slow-cpu">
@@ -367,6 +368,7 @@
            <Limit name="complexity" range="0-10"  default="0" />
            <Limit name="quality" range="0-100"  default="80" />
            <Feature name="bitrate-modes" value="VBR,CBR,CQ" />
            <Feature name="qp-bounds" />
            <Attribute name="software-codec" />
        </MediaCodec>
        <MediaCodec name="c2.android.vp9.encoder" type="video/x-vnd.on2.vp9" variant="!slow-cpu">
@@ -379,6 +381,7 @@
            <Limit name="block-count" range="1-3600" /> <!-- max 1280x720 -->
            <Limit name="bitrate" range="1-40000000" />
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="qp-bounds" />
            <Attribute name="software-codec" />
        </MediaCodec>
        <MediaCodec name="c2.android.av1.encoder" type="video/av01" enabled="false" minsdk="34" variant="slow-cpu,!slow-cpu">
@@ -397,6 +400,7 @@
            <Limit name="quality" range="0-100"  default="80" />
            <Limit name="complexity" range="0-5"  default="0" />
            <Feature name="bitrate-modes" value="VBR,CBR,CQ" />
            <Feature name="qp-bounds" />
            <Attribute name="software-codec" />
        </MediaCodec>
    </Encoders>
Loading