From 6d3980035132aa8bbb2570b5be83648cdfea83cd Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 22 Oct 2026 00:20:40 +0200 Subject: [PATCH] Record completed video fixes and validation coverage --- doc/tasks.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/tasks.md b/doc/tasks.md index bf77f88a..a5d5c596 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,17 +4,20 @@ ## Текущие задачи -[ ] **video: сохранность исходника и достоверность результата JPEG** — аудит 21.10.2026: - `video_transcode_start(src, src)` на подходящем H.264/MP4 запускает копирование с `fopen(dst, "wb")`: - временный исходник уменьшился с 1522 до 0 байтов, callback вернул ошибку уже после потери данных. - `video_extract_thumbnail` не проверяет fwrite/fclose: запись в `/dev/full` вернула 0 и лог успеха. - Короткое видео H.264 с задержанными кадрами возвращает -1 без превью: при EOF не выполняется drain - декодера; тот же файл штатный FFmpeg преобразует в JPEG. Контрольный intra-файл получает превью. - В video.h также уточнить синхронное чтение при probe, глобальный лимит одного transcode до done, - время жизни callback info, ошибки/стабы без FFmpeg и фактические условия needs_transcode. - Отдельно проверить игнорируемые ошибки финального drain/close, частичную настройку audio и обрезание путей. - Исправления реализации не вносились. Стенд /tmp/utun-video-audit.c, сборка /tmp/utun-video-audit.mk; - логи /tmp/utun-video-audit-intra.log, /tmp/utun-video-audit-full.log, /tmp/utun-video-audit-delayed.log. +[+] **video: сохранность файлов, JPEG и подготовка MP4** — исправлено 22.10.2026: + Одинаковые файлы/алиасы и недопустимые пути отклоняются без изменения исходника. + JPEG и MP4 пишутся в эксклюзивный временный файл; запись, drain, trailer и close проверяются. + Только успешный completion публикует результат; отмена до callback сохраняет старое назначение. + Превью получает задержанные B-кадры. MOV/H.264/AAC проходит remux в MP4; остальные профили + перекодируются с audio FIFO, сохранением временного смещения и хвоста ресемплера. + Атомарный global slot удерживается до completion, ошибки имеют точную фазу и контекст в логе. + Контракты описаны в src/video/video.h и doc/service_lifecycle.md. + test_video проверяет реальные кадры/сигнал, 1080p→720p, PCM/MP3/AAC, resample 12345→12000 Гц, + файловые ошибки, отмену, повтор из callback и конкурентные start; test_video_no_ffmpeg — стабы. + Оба теста, test_services и test_attachment_send прошли ASAN/UBSan с detect_leaks=1. + Отдельная конфигурация всего ядра/тестов без FFmpeg собрана, оба video-теста прошли. + Логи: /tmp/video-asan-final.log, /tmp/video-services-asan.log, /tmp/video-attachment-send-asan.log, + /tmp/video-without-ffmpeg-build-final.log; общий прогон: /tmp/video-full-check-final.log. [+] **tcp_io: владение connect-таймером и повторный FIN** — 21.10.2026: Замена таймаута сохраняет старый таймер при ошибке создания нового; <=0 отменяет таймер.