Browse Source

Record live camera FPS diagnosis and guard ownership

master
evgeny 5 days ago
parent
commit
4447f25e37
  1. 11
      doc/call_video.txt
  2. 3
      tools/chatgui/src/call_camera_rate.h

11
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.

3
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

Loading…
Cancel
Save