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

Commit 8045d592 authored by Harish Mahendrakar's avatar Harish Mahendrakar Committed by Wonsik Kim
Browse files

C2SoftHevcEnc: Add support for dynamic bitrate change

Test: Manual with a application based on AMediaCodec api
Bug: 125938526

Change-Id: Idefe6291d8d7185400d20a7c95c9ea5070a0b196
parent 7d44121e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -865,6 +865,22 @@ void C2SoftHevcEnc::process(const std::unique_ptr<C2Work>& work,
            return;
        }
    }

    // handle dynamic config parameters
    {
        IntfImpl::Lock lock = mIntf->lock();
        std::shared_ptr<C2StreamBitrateInfo::output> bitrate = mIntf->getBitrate_l();
        lock.unlock();

        if (bitrate != mBitrate) {
            mBitrate = bitrate;
            mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_tgt_bitrate[0] =
                mBitrate->value;
            mEncParams.s_tgt_lyr_prms.as_tgt_params[0].ai4_peak_bitrate[0] =
                mBitrate->value << 1;
        }
    }

    ihevce_inp_buf_t s_encode_ip{};
    ihevce_out_buf_t s_encode_op{};
    uint64_t workIndex = work->input.ordinal.frameIndex.peekull();