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

Commit 60af20cf authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "C2SoftFlacEnc: Update max input buffer size calculation" into main

parents 74656ddd 155481c2
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include <audio_utils/primitives.h>
#include <media/stagefright/foundation/MediaDefs.h>

#include <C2Debug.h>
#include <C2PlatformSupport.h>
#include <SimpleC2Interface.h>

@@ -81,10 +82,6 @@ public:
                    FLAC_COMPRESSION_LEVEL_MIN, FLAC_COMPRESSION_LEVEL_MAX)})
                .withSetter(Setter<decltype(*mComplexity)>::NonStrictValueWithNoDeps)
                .build());
        addParameter(
                DefineParam(mInputMaxBufSize, C2_PARAMKEY_INPUT_MAX_BUFFER_SIZE)
                .withConstValue(new C2StreamMaxBufferSizeInfo::input(0u, 4608))
                .build());

        addParameter(
                DefineParam(mPcmEncodingInfo, C2_PARAMKEY_PCM_ENCODING)
@@ -96,6 +93,26 @@ public:
                })
                .withSetter((Setter<decltype(*mPcmEncodingInfo)>::StrictValueWithNoDeps))
                .build());

        addParameter(
                DefineParam(mInputMaxBufSize, C2_PARAMKEY_INPUT_MAX_BUFFER_SIZE)
                .withDefault(new C2StreamMaxBufferSizeInfo::input(0u, kMaxBlockSize))
                .withFields({
                    C2F(mInputMaxBufSize, value).any(),
                })
                .withSetter(MaxInputSizeSetter, mChannelCount, mPcmEncodingInfo)
                .build());
    }

    static C2R MaxInputSizeSetter(bool mayBlock,
            C2P<C2StreamMaxBufferSizeInfo::input> &me,
            const C2P<C2StreamChannelCountInfo::input> &channelCount,
            const C2P<C2StreamPcmEncodingInfo::input> &pcmEncoding) {
        (void)mayBlock;
        C2R res = C2R::Ok();
        int bytesPerSample = pcmEncoding.v.value == C2Config::PCM_FLOAT ? 4 : 2;
        me.set().value = kMaxBlockSize * bytesPerSample * channelCount.v.value;
        return res;
    }

    uint32_t getSampleRate() const { return mSampleRate->value; }
@@ -446,6 +463,9 @@ status_t C2SoftFlacEnc::configureEncoder() {

    mBlockSize = FLAC__stream_encoder_get_blocksize(mFlacStreamEncoder);

    // Update kMaxBlockSize to match maximum size used by the encoder
    CHECK(mBlockSize <= kMaxBlockSize);

    ALOGV("encoder successfully configured");
    return OK;
}
+2 −1
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ private:

    std::shared_ptr<IntfImpl> mIntf;
    const unsigned int kInBlockSize = 1152;
    const unsigned int kMaxNumChannels = 2;
    static constexpr unsigned int kMaxNumChannels = 2;
    static constexpr unsigned int kMaxBlockSize = 4608;
    FLAC__StreamEncoder* mFlacStreamEncoder;
    FLAC__int32* mInputBufferPcm32;
    std::shared_ptr<C2LinearBlock> mOutputBlock;