diff --git a/doc/service_lifecycle.md b/doc/service_lifecycle.md index a7e3cd6c..709537b5 100644 --- a/doc/service_lifecycle.md +++ b/doc/service_lifecycle.md @@ -117,6 +117,18 @@ Worker резервирует completion до запуска и передаёт транскодирование или распознавание речи может задержать stop; принудительного прерывания этих библиотек нет. +Подготовка файлов в `src/video/video.h` выполняет remux подходящих H.264/AAC либо +перекодирование в MP4 H.264/YUV420P и AAC. Worker пишет уникальный соседний временный +файл, завершает декодеры/ресемплер/FIFO/кодеры, проверяет trailer, закрытие и метаданные. +Конечное имя заменяется только успешным completion в uasync. При отмене, включая +отмену уже подготовленного результата до доставки completion, временный файл удаляется, +старое назначение сохраняется. Совпадающие исходник/назначение и файловые алиасы +отклоняются; исходный файл должен оставаться неизменным до done. В процессе занята +одна задача до completion; атомарный захват исключает гонку между экземплярами ядра. +Перед done занятость освобождается, поэтому callback может запустить следующую задачу. +JPEG использует те же правила файлов, но извлекается синхронно в отдельном frontend worker. +Probe также синхронен и не обещает ограниченного времени чтения. + Live media хранится в RS-кольце с общим индексом PTS; каждый локальный handle владеет отдельным cursor. Пауза player не останавливает сетевой ingest и не закрепляет старые части против вытеснения. После FIN publisher может снять своё владение, сохранив