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

Commit 817d3182 authored by Harish Mahendrakar's avatar Harish Mahendrakar Committed by Wonsik Kim
Browse files

CCodec: Allow bitrate to be not set in CQ mode for video encoders

In constant quality mode, bitrate field is optional for video encoders.
Update the check to look for quality for CQ Mode and bitrate for other
modes.

Bug: 125010575
Test: Manual with HEIF encoding application
Change-Id: Icb294e1becaf47c8fdabb6839d1aa57178e17737
parent 57d7cc9e
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -742,11 +742,22 @@ void CCodec::configure(const sp<AMessage> &msg) {
                return BAD_VALUE;
            }
            if ((config->mDomain & Config::IS_ENCODER) && (config->mDomain & Config::IS_VIDEO)) {
                C2Config::bitrate_mode_t mode = C2Config::BITRATE_VARIABLE;
                if (msg->findInt32(KEY_BITRATE_MODE, &i32)) {
                    mode = (C2Config::bitrate_mode_t) i32;
                }
                if (mode == BITRATE_MODE_CQ) {
                    if (!msg->findInt32(KEY_QUALITY, &i32)) {
                        ALOGD("quality is missing, which is required for video encoders in CQ.");
                        return BAD_VALUE;
                    }
                } else {
                    if (!msg->findInt32(KEY_BIT_RATE, &i32)
                            && !msg->findFloat(KEY_BIT_RATE, &flt)) {
                        ALOGD("bitrate is missing, which is required for video encoders.");
                        return BAD_VALUE;
                    }
                }
                if (!msg->findInt32(KEY_I_FRAME_INTERVAL, &i32)
                        && !msg->findFloat(KEY_I_FRAME_INTERVAL, &flt)) {
                    ALOGD("I frame interval is missing, which is required for video encoders.");