From 7dd67518b11462049851ca5ef6a857212013ab83 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Thu, 4 Jun 2020 11:02:19 +0300 Subject: [PATCH] Fix for not enough audio buffer space --- components/audio/src/software_encoder.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/audio/src/software_encoder.cpp b/components/audio/src/software_encoder.cpp index 4a135e821..9a5da23a0 100644 --- a/components/audio/src/software_encoder.cpp +++ b/components/audio/src/software_encoder.cpp @@ -91,16 +91,20 @@ bool SoftwareEncoder::_encodeOpus(const std::vector<short> &in, ftl::codecs::Pac int channels = (cur_stereo_) ? 2 : 1; - pkt.data.resize(MAX_PACKET_SIZE); + int frame_est = (in.size() / (channels*FRAME_SIZE))+1; + pkt.data.resize(MAX_PACKET_SIZE*frame_est); int count = 0; int frames = 0; unsigned char *outptr = pkt.data.data(); + //LOG(INFO) << "Encode " << (in.size() / (channels*FRAME_SIZE)) << " audio frames"; + for (unsigned int i=0; i<in.size(); i+=channels*FRAME_SIZE) { short *len = (short*)outptr; outptr += 2; int nbBytes = opus_multistream_encode(opus_encoder_, &in.data()[i], FRAME_SIZE, outptr, MAX_PACKET_SIZE); + //LOG(INFO) << "Opus encode: " << nbBytes << ", " << (in.size()-i); if (nbBytes <= 0) return false; //if (nbBytes > 32000) LOG(WARNING) << "Packet exceeds size limit"; -- GitLab