mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-16 16:41:31 +00:00
Modify upstream webrtc NetEq to pass bounds information to speex
Just in case Closes #6334 // FREEBIE
This commit is contained in:
@@ -102,12 +102,14 @@ int AudioCodec::encode(short *rawData, char* encodedData, int maxEncodedDataLen)
|
||||
return speex_bits_write(&enc_bits, encodedData, maxEncodedDataLen);
|
||||
}
|
||||
|
||||
int AudioCodec::decode(char* encodedData, int encodedDataLen, short *rawData) {
|
||||
int rawDataOffset = 0;
|
||||
int AudioCodec::decode(char* encodedData, int encodedDataLen, short *rawData, size_t decodeMaxSize) {
|
||||
uint32_t rawDataOffset = 0;
|
||||
|
||||
speex_bits_read_from(&dec_bits, encodedData, encodedDataLen);
|
||||
|
||||
while (speex_decode_int(dec, &dec_bits, rawData + rawDataOffset) == 0) { // TODO bounds?
|
||||
while ((rawDataOffset + dec_frame_size <= decodeMaxSize) &&
|
||||
(speex_decode_int(dec, &dec_bits, rawData + rawDataOffset) == 0))
|
||||
{
|
||||
WebRtcAecm_BufferFarend(aecm, rawData + rawDataOffset, dec_frame_size);
|
||||
rawDataOffset += dec_frame_size;
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ public:
|
||||
|
||||
int init();
|
||||
int encode(short *rawData, char* encodedData, int encodedDataLen);
|
||||
int decode(char* encodedData, int encodedDataLen, short* rawData);
|
||||
int decode(char* encodedData, int encodedDataLen, short* rawData, size_t decodeMaxSize);
|
||||
int conceal(int frames, short *rawData);
|
||||
|
||||
};
|
||||
|
@@ -17,10 +17,11 @@ public:
|
||||
{}
|
||||
|
||||
int Decode(const uint8_t* encoded, size_t encoded_len,
|
||||
int16_t* decoded, SpeechType* speech_type)
|
||||
int16_t* decoded, size_t decodedMaxSize,
|
||||
SpeechType* speech_type)
|
||||
{
|
||||
*speech_type = kSpeech;
|
||||
return codec.decode((char*)encoded, encoded_len, decoded);
|
||||
return codec.decode((char*)encoded, encoded_len, decoded, decodedMaxSize);
|
||||
}
|
||||
|
||||
bool HasDecodePlc() const {
|
||||
|
Reference in New Issue
Block a user