diff --git a/doc/call_video.txt b/doc/call_video.txt index 947cd5bc..6966c590 100644 --- a/doc/call_video.txt +++ b/doc/call_video.txt @@ -564,7 +564,8 @@ Desktop: первый RX кадр открывает отдельное изме Видео сохраняет пропорции, своя миниатюра — в углу окна видео. F11/двойной щелчок переключают fullscreen только для видео, Esc возвращает его обычную геометрию. Закрытие видеоокна не завершает звонок; «Показать видео» открывает его повторно. Новые кадры сами не отменяют закрытие. -Preview берётся из того же QVideoFrame (до 10 fps). Только при отсутствии RX своя миниатюра +Preview берётся из того же QVideoFrame при появлении нового кадра, без прежнего ограничения 10 fps. +Только при отсутствии RX своя миниатюра показывается в окне звонка; без кадров пустого видеоблока нет. После 5с без показанных кадров RX скрывается: отдельного VIDEO_OFF в протоколе пока нет. Desktop UI smoke: отдельные окна, сохранение геометрии/настроек звонка, resize видео, @@ -589,6 +590,14 @@ Samsung pulled/decoded/rendered около 30 fps, late=0. Исчезновен Теперь период KEY отсчитывается от успешной подачи нашего запроса, а не от выходного IDR; смена bitrate остаётся на границе KEY. Логи: /tmp/call-fps-sm-after.log, /tmp/call-fps-desktop-later.log. +Следующий живой звонок: RX desktop сохраняется несколько минут, около 30 fps. Остаточные 16–17 fps +desktop -> SM уже возникали в самой USB-камере: V4L2 interval=1/30, Exposure Dynamic Framerate=1. +Отключение этого флага во время звонка сразу дало capture/encode/accepted=30 fps, paced=0, audio_busy=0 +(/tmp/call-video-fixed-camera-rate.log). На Linux звонок теперь отключает этот флаг после активации +QCamera и восстанавливает его после остановки; автоэкспозиция не меняется. Неподдерживаемый control +не мешает работе камеры. Лог video local preview отдельно показывает частоту и время обновления миниатюры. +Общий check.sh: 154/154, proxy 9/9, burst/load PASS; Qt codec/clock и Android 81 unit PASS. + Подтверждённая причина фризов раз в 1–2с: коррекция capture timestamp меняла audio source_epoch, а обе платформы сбрасывали video decoder и ждали KEY. Теперь source_epoch обновляет аудиопривязку без потери video references, готовых кадров и последнего показанного PTS. diff --git a/tools/chatgui/src/call_camera_rate.h b/tools/chatgui/src/call_camera_rate.h index 0c9b4981..97e765e7 100644 --- a/tools/chatgui/src/call_camera_rate.h +++ b/tools/chatgui/src/call_camera_rate.h @@ -17,6 +17,9 @@ class CallCameraRate { int fd = -1; #endif public: + CallCameraRate() = default; + CallCameraRate(const CallCameraRate&) = delete; + CallCameraRate& operator=(const CallCameraRate&) = delete; ~CallCameraRate() { restore(); } void restore() { #ifdef Q_OS_LINUX