voice playback: miniaudio cursor ground truth + EMA smooth decay
- SoundManager: add currentPcmCursor()/isCurrentPcmPlaying() via ma_sound_get_cursor_in_pcm_frames / ma_sound_is_playing - messagedelegate: replace wall-clock position tracking with real miniaudio cursor, remove 200ms hardcoded delay - messagedelegate: end-of-playback detection via isCurrentPcmPlaying() instead of wall-clock comparison (was killing audio ~200ms early) - messagedelegate: EMA smoothing of displayFrac/displayElapsed (0.15 factor, 16ms timer) - messagedelegate: timer continues after audio stops to animate EMA decay to 0 (not mouse-move dependent) - media_delivery: download progress callback, Ed25519 sig verify, author fallback, content hash check - conn_mgr: already-connected returns OK with callback instead of error - chatgui: voice download-pending auto-play, file download progress bar, media bar colors
This commit is contained in:
1 parent
641c9f574f
commit
51d6c782ac
23 files changed
+1165
-162
No files matched your search
@@ -257,12 +257,15 @@ void MainWindow::setupBridgeCallbacks() {
|
||||
}
|
||||
});
|
||||
gui_bridge_set_attachment_downloaded_cb([](const char* ch_id, int ch_id_len, int64_t msg_id) {
|
||||
(void)msg_id;
|
||||
if (!s_mainWindow) return;
|
||||
QString chId = QString::fromUtf8(ch_id, ch_id_len);
|
||||
s_mainWindow->m_channelList->loadChannels();
|
||||
if (chId == s_mainWindow->m_currentChannelId)
|
||||
s_mainWindow->m_messageList->refresh();
|
||||
s_mainWindow->m_messageList->onAttachmentDownloaded(chId, msg_id);
|
||||
});
|
||||
gui_bridge_set_download_progress_cb([](const char* ch_id, int ch_id_len, int64_t msg_id, int blocks_done, int num_blocks) {
|
||||
if (!s_mainWindow) return;
|
||||
QString chId = QString::fromUtf8(ch_id, ch_id_len);
|
||||
s_mainWindow->m_messageList->updateMessageProgress(chId, msg_id, blocks_done, num_blocks);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user