C2SoftAomEnc: Configure level in the encoder
Bug: 283552732
Test: atest CtsMediaV2TestCases:EncoderLevelTest
Change-Id: I95ec23f87fa4714c9019007ac78a74098224e248
diff --git a/media/codec2/components/aom/C2SoftAomEnc.cpp b/media/codec2/components/aom/C2SoftAomEnc.cpp
index e08bf43..9f55d9e 100644
--- a/media/codec2/components/aom/C2SoftAomEnc.cpp
+++ b/media/codec2/components/aom/C2SoftAomEnc.cpp
@@ -107,7 +107,7 @@
addParameter(DefineParam(mProfileLevel, C2_PARAMKEY_PROFILE_LEVEL)
.withDefault(new C2StreamProfileLevelInfo::output(0u, PROFILE_AV1_0,
- LEVEL_AV1_4_1))
+ LEVEL_AV1_2))
.withFields({
C2F(mProfileLevel, profile).equalTo(PROFILE_AV1_0),
C2F(mProfileLevel, level)
@@ -248,6 +248,10 @@
return C2R::Ok();
}
+uint32_t C2SoftAomEnc::IntfImpl::getLevel_l() const {
+ return mProfileLevel->level - LEVEL_AV1_2;
+}
+
C2SoftAomEnc::C2SoftAomEnc(const char* name, c2_node_id_t id,
const std::shared_ptr<IntfImpl>& intfImpl)
: SimpleC2Component(std::make_shared<SimpleInterface<IntfImpl>>(name, id, intfImpl)),
@@ -324,6 +328,9 @@
aom_codec_err_t C2SoftAomEnc::setupCodecParameters() {
aom_codec_err_t codec_return = AOM_CODEC_OK;
+ codec_return = aom_codec_control(mCodecContext, AV1E_SET_TARGET_SEQ_LEVEL_IDX, mAV1EncLevel);
+ if (codec_return != AOM_CODEC_OK) goto BailOut;
+
codec_return = aom_codec_control(mCodecContext, AOME_SET_CPUUSED,
MapC2ComplexityToAOMSpeed(mComplexity->value));
if (codec_return != AOM_CODEC_OK) goto BailOut;
@@ -478,6 +485,7 @@
mColorAspects = mIntf->getCodedColorAspects_l();
mQuality = mIntf->getQuality_l();
mComplexity = mIntf->getComplexity_l();
+ mAV1EncLevel = mIntf->getLevel_l();
}
diff --git a/media/codec2/components/aom/C2SoftAomEnc.h b/media/codec2/components/aom/C2SoftAomEnc.h
index 3067735..043d485 100644
--- a/media/codec2/components/aom/C2SoftAomEnc.h
+++ b/media/codec2/components/aom/C2SoftAomEnc.h
@@ -98,6 +98,8 @@
bool mIs10Bit;
+ uint32_t mAV1EncLevel;
+
std::shared_ptr<C2StreamPictureSizeInfo::input> mSize;
std::shared_ptr<C2StreamIntraRefreshTuning::output> mIntraRefresh;
std::shared_ptr<C2StreamFrameRateInfo::output> mFrameRate;
@@ -149,6 +151,7 @@
static C2R ColorAspectsSetter(bool mayBlock, C2P<C2StreamColorAspectsInfo::input>& me);
static C2R CodedColorAspectsSetter(bool mayBlock, C2P<C2StreamColorAspectsInfo::output>& me,
const C2P<C2StreamColorAspectsInfo::input>& coded);
+ uint32_t getLevel_l() const;
private:
std::shared_ptr<C2StreamUsageTuning::input> mUsage;