unify compressor: remove C++ duplicate audiocompressor, use lib/audio_compressor.c in chatgui

This commit is contained in:
evgeny committed 2026-07-29 00:52:05 +03:00
1 parent 00afc5c80a
commit 1dac0b8c81
12 files changed
+66 -257

No files matched your search

+6 -7
View File
@@ -28,15 +28,15 @@ void VoiceEncoder::setPreset(int preset) {
int VoiceEncoder::preset() { return s_preset; }
int VoiceEncoder::encodeToFile(const std::vector<int16_t>& pcm, int sampleRate, int channels,
int VoiceEncoder::encodeToFile(const int16_t* pcm, size_t pcmCount, int sampleRate, int channels,
const QString& filePath, float& outDurationSec) {
if (pcm.empty() || sampleRate <= 0 || channels <= 0) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "VoiceEncoder: invalid input (pcm=%zu rate=%d ch=%d)", pcm.size(), sampleRate, channels);
if (!pcm || pcmCount == 0 || sampleRate <= 0 || channels <= 0) {
DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "VoiceEncoder: invalid input (pcm=%zu rate=%d ch=%d)", pcmCount, sampleRate, channels);
return -1;
}
int frameSamples = sampleRate * FRAME_MS / 1000;
size_t totalSamples = pcm.size() / channels;
size_t totalSamples = pcmCount / (size_t)channels;
if (totalSamples < (size_t)frameSamples) return -1;
opus_codec_encoder_t* enc = opus_codec_encoder_create(sampleRate, channels);
@@ -54,7 +54,7 @@ int VoiceEncoder::encodeToFile(const std::vector<int16_t>& pcm, int sampleRate,
return -1;
}
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "VoiceEncoder::encodeToFile: writing to %s pcm=%zu samples preset=%d",
qPrintable(filePath), pcm.size(), s_preset);
qPrintable(filePath), pcmCount, s_preset);
/* write header */
uint32_t magic = OPUS_MAGIC;
@@ -68,11 +68,10 @@ int VoiceEncoder::encodeToFile(const std::vector<int16_t>& pcm, int sampleRate,
int frameCount = 0;
uint8_t packet[MAX_PACKET];
const int16_t* pcmData = pcm.data();
size_t pcmOff = 0;
while (pcmOff + (size_t)frameSamples * channels <= totalSamples) {
int len = opus_codec_encode(enc, pcmData + pcmOff, frameSamples, packet, MAX_PACKET);
int len = opus_codec_encode(enc, pcm + pcmOff, frameSamples, packet, MAX_PACKET);
pcmOff += (size_t)frameSamples * channels;
if (len > 0) {