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

Commit ebb89834 authored by Ray Essick's avatar Ray Essick Committed by Automerger Merge Worker
Browse files

Codec2 pass standard QP bounding keys am: b8865c10

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1651747

Change-Id: If67fec1aa02066b45407eeea9772d64ff73ada2c
parents 0d824def b8865c10
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -187,6 +187,8 @@ enum C2ParamIndexKind : C2Param::type_index_t {
    kParamIndexPictureType,
    kParamIndexHdr10PlusMetadata,

    kParamIndexQuantization,

    /* ------------------------------------ video components ------------------------------------ */

    kParamIndexFrameRate = C2_PARAM_INDEX_VIDEO_PARAM_START,
@@ -708,6 +710,38 @@ typedef C2StreamParam<C2Info, C2ProfileLevelStruct, kParamIndexProfileLevel>
        C2StreamProfileLevelInfo;
constexpr char C2_PARAMKEY_PROFILE_LEVEL[] = "coded.pl";

struct C2QuantizationStruct {
    int32_t iMax;  ///< max/min for I frames
    int32_t iMin;
    int32_t pMax;  ///< max/min for P frames
    int32_t pMin;
    int32_t bMax;  ///< max/min for B frames
    int32_t bMin;

    C2QuantizationStruct(
            int32_t iMax_ = INT32_MAX,
            int32_t iMin_ = INT32_MIN,
            int32_t pMax_ = INT32_MAX,
            int32_t pMin_ = INT32_MIN,
            int32_t bMax_ = INT32_MAX,
            int32_t bMin_ = INT32_MIN)
        : iMax(iMax_), iMin(iMin_),
          pMax(pMax_), pMin(pMin_),
          bMax(bMax_), bMin(bMin_) { }

    DEFINE_AND_DESCRIBE_C2STRUCT(Quantization)          // reference?
    C2FIELD(iMax, "i-max")
    C2FIELD(iMin, "i-min")
    C2FIELD(pMax, "p-max")
    C2FIELD(pMin, "p-min")
    C2FIELD(bMax, "b-max")
    C2FIELD(bMin, "b-min")
};

typedef C2StreamParam<C2Info, C2QuantizationStruct, kParamIndexQuantization>
        C2StreamQuantizationInfo;
constexpr char C2_PARAMKEY_QUANTIZATION[] = "coded.qp";

/**
 * Codec-specific initialization data.
 *
+13 −0
Original line number Diff line number Diff line
@@ -730,6 +730,19 @@ void CCodecConfig::initializeStandardParams() {
            return C2Value();
        }));

    add(ConfigMapper(KEY_VIDEO_QP_I_MAX, C2_PARAMKEY_QUANTIZATION, "i-max")
        .limitTo(D::VIDEO & D::ENCODER));
    add(ConfigMapper(KEY_VIDEO_QP_I_MIN, C2_PARAMKEY_QUANTIZATION, "i-min")
        .limitTo(D::VIDEO & D::ENCODER));
    add(ConfigMapper(KEY_VIDEO_QP_P_MAX, C2_PARAMKEY_QUANTIZATION, "p-max")
        .limitTo(D::VIDEO & D::ENCODER));
    add(ConfigMapper(KEY_VIDEO_QP_P_MIN, C2_PARAMKEY_QUANTIZATION, "p-min")
        .limitTo(D::VIDEO & D::ENCODER));
    add(ConfigMapper(KEY_VIDEO_QP_B_MAX, C2_PARAMKEY_QUANTIZATION, "b-max")
        .limitTo(D::VIDEO & D::ENCODER));
    add(ConfigMapper(KEY_VIDEO_QP_B_MIN, C2_PARAMKEY_QUANTIZATION, "b-min")
        .limitTo(D::VIDEO & D::ENCODER));

    // convert to dBFS and add default
    add(ConfigMapper(KEY_AAC_DRC_TARGET_REFERENCE_LEVEL, C2_PARAMKEY_DRC_TARGET_REFERENCE_LEVEL, "value")
        .limitTo(D::AUDIO & D::DECODER & (D::CONFIG | D::PARAM | D::READ))