C2SoftOpusEnc: Fix higher bitrate encoding at lower sample rates
Output buffer allocated was not large enough to hold higher bitrate
outputs for lower sample rates (eg: 512kbps at 8000 Hz)
Also pass remaining bytes in the allocated output buffer correctly
to encoder.
Bug: 134087860
Test: Apply CTS cl mentioned in the bug
Test: atest android.media.cts.EncoderTest#testOpusEncoders
Change-Id: I01a75cb76d15b733690e35fa107ec973668d19bb
diff --git a/media/codec2/components/opus/C2SoftOpusEnc.h b/media/codec2/components/opus/C2SoftOpusEnc.h
index 69e5240..2b4d8f2 100644
--- a/media/codec2/components/opus/C2SoftOpusEnc.h
+++ b/media/codec2/components/opus/C2SoftOpusEnc.h
@@ -47,7 +47,9 @@
private:
/* OPUS_FRAMESIZE_20_MS */
const int kFrameSize = 960;
- const int kMaxPayload = 4000;
+ const int kMaxSampleRate = 48000;
+ const int kMinSampleRate = 8000;
+ const int kMaxPayload = (4000 * kMaxSampleRate) / kMinSampleRate;
const int kMaxNumChannels = 8;
std::shared_ptr<IntfImpl> mIntf;