CCodecConfig: Fix mapping to bitrate-mode
bitrate-mode was not mapped from c2 params to sdk params
Also fix typecast of bitrate mode while checking config params
for quality/bitrate. It was wrongly typecast to c2 enum
Test: Manual using a test application using AMediaCodec api
Bug: 133241887
Change-Id: I2544a7cbb4001152197b9ec164fe94b1a6da40d3
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 85c783b..400b02f 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -745,11 +745,8 @@
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) {
+ int32_t mode = BITRATE_MODE_VBR;
+ if (msg->findInt32(KEY_BITRATE_MODE, &mode) && 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;
diff --git a/media/codec2/sfplugin/CCodecConfig.cpp b/media/codec2/sfplugin/CCodecConfig.cpp
index 428f032..4c3fff7 100644
--- a/media/codec2/sfplugin/CCodecConfig.cpp
+++ b/media/codec2/sfplugin/CCodecConfig.cpp
@@ -358,14 +358,7 @@
.limitTo(D::ENCODER & D::VIDEO & D::PARAM));
add(ConfigMapper(KEY_BITRATE_MODE, C2_PARAMKEY_BITRATE_MODE, "value")
.limitTo(D::ENCODER & D::CODED)
- .withMapper([](C2Value v) -> C2Value {
- int32_t value;
- C2Config::bitrate_mode_t mode;
- if (v.get(&value) && C2Mapper::map(value, &mode)) {
- return mode;
- }
- return C2Value();
- }));
+ .withC2Mappers<C2Config::bitrate_mode_t>());
// remove when codecs switch to PARAMKEY and new modes
deprecated(ConfigMapper(KEY_BITRATE_MODE, "coded.bitrate-mode", "value")
.limitTo(D::ENCODER));