fix: voice message display, playback, recording UI, audio settings

- messagelist: parse content_type from JSON when DB column is empty
- messagelist: recording indicator (red dot + timer + cancel button)
- messagedelegate: editorEvent for play/pause toggle + progress bar
- messagedelegate: VoicePlayState tracking with QTimer
- InputBar: proper recordingContext (mediaDir + channelId)
- DbManager: dbPath() for media directory resolution
- AudioRecorder: peakLevel() for mic level meter
- VoiceEncoder: codec quality presets (Low/Standard/High)
- audiodevicesettingspage: Default device option first
- audiodevicesettingspage: mic level meter + test microphone
- audiodevicesettingspage: test speaker button
- audiodevicesettingspage: codec preset combo (Low/Standard/High)
- mainwindow: load opus_codec_preset from ui_state on startup
This commit is contained in:
Evgeny committed 2026-07-26 21:19:29 +03:00
1 parent 4fde0b0325
commit 850a260aac
14 files changed
+483 -57

No files matched your search

+13
View File
@@ -19,6 +19,13 @@ void audioCaptureCallback(ma_device* pDevice, void* pOutput, const void* pInput,
size_t add = (size_t)frameCount * (size_t)self->m_channels;
self->m_pcmBuffer.resize(cur + add);
std::memcpy(self->m_pcmBuffer.data() + cur, src, add * sizeof(int16_t));
float maxAbs = 0.0f;
for (unsigned int i = 0; i < frameCount * (unsigned int)self->m_channels; i++) {
float v = (float)abs(src[i]) / 32768.0f;
if (v > maxAbs) maxAbs = v;
}
self->m_peakLevel = maxAbs;
}
AudioRecorder::AudioRecorder(QObject* parent)
@@ -127,3 +134,9 @@ void AudioRecorder::stopRecording() {
int AudioRecorder::durationMs() const {
return m_elapsedMs;
}
float AudioRecorder::peakLevel() const {
float v = m_peakLevel;
m_peakLevel = 0.0f;
return v;
}