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

Commit 48ab6ef1 authored by Wei Jia's avatar Wei Jia
Browse files

CCodecConfig: support low latency config and set paramters

Test: cts
Bug: 134971304
Change-Id: Iabd7df79b530ce3af7bd2723dfcb2aa5488f5e75
parent d373b0ef
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -243,6 +243,9 @@ enum C2ParamIndexKind : C2Param::type_index_t {
    kParamIndexTimestampGapAdjustment, // input-surface, struct

    kParamIndexSurfaceAllocator, // u32

    // low latency mode for decoders
    kParamIndexLowLatencyMode, // bool
};

}
@@ -803,6 +806,15 @@ typedef C2GlobalParam<C2Tuning, C2Uint32Value, kParamIndexDelay> C2PipelineDelay
typedef C2PipelineDelayTuning C2ActualPipelineDelayTuning; // deprecated
constexpr char C2_PARAMKEY_PIPELINE_DELAY[] = "algo.delay";

/**
 * Enable/disable low latency decoding mode.
 * If true, low latency decoding mode is enabled, and the decoder doesn't hold input and output
 * data more than required by the codec standards.
 */
typedef C2GlobalParam<C2Tuning, C2EasyBoolValue, kParamIndexLowLatencyMode>
        C2GlobalLowLatencyModeTuning;
constexpr char C2_PARAMKEY_LOW_LATENCY_MODE[] = "algo.low-latency";

/**
 * Reference characteristics.
 *
+8 −0
Original line number Diff line number Diff line
@@ -823,6 +823,14 @@ void CCodecConfig::initializeStandardParams() {

    add(ConfigMapper(C2_PARAMKEY_INPUT_TIME_STRETCH, C2_PARAMKEY_INPUT_TIME_STRETCH, "value"));

    add(ConfigMapper(KEY_LOW_LATENCY, C2_PARAMKEY_LOW_LATENCY_MODE, "value")
        .limitTo(D::DECODER & (D::CONFIG | D::PARAM))
        .withMapper([](C2Value v) -> C2Value {
            int32_t value = 0;
            (void)v.get(&value);
            return value == 0 ? C2_FALSE : C2_TRUE;
        }));

    /* still to do
    constexpr char KEY_PUSH_BLANK_BUFFERS_ON_STOP[] = "push-blank-buffers-on-shutdown";

+1 −0
Original line number Diff line number Diff line
@@ -774,6 +774,7 @@ constexpr char KEY_IS_TIMED_TEXT[] = "is-timed-text";
constexpr char KEY_LANGUAGE[] = "language";
constexpr char KEY_LATENCY[] = "latency";
constexpr char KEY_LEVEL[] = "level";
constexpr char KEY_LOW_LATENCY[] = "low-latency";
constexpr char KEY_MAX_B_FRAMES[] = "max-bframes";
constexpr char KEY_MAX_BIT_RATE[] = "max-bitrate";
constexpr char KEY_MAX_FPS_TO_ENCODER[] = "max-fps-to-encoder";