Skip to content
English

Консоль оператора

In English

C открывает второе окно на мониторе, отличном от того, где идёт показ, чтобы вести приложение со стола, а не печатать у проектора. В нём есть список пресетов и меню настроек — пока оно открыто, ни то, ни другое больше не рисуется поверх показа — плюс полоса управления (prev, next, rotate, auto, dwell -/+, всё кликабельно), строка с тем, что автосмена возьмёт следующим, и живой предпросмотр вывода, вписанный в угол.

Она выключена по умолчанию и ничего не стоит, пока закрыта: ни второй поверхности, ни промежуточной цели рендера, ни лишней копии на кадр. Открыть её можно строкой Console в меню настроек, клавишей C или при запуске через --console / enabled = true в разделе [console] файла config.toml; все четыре пути — один и тот же код, поэтому разойтись в том, открыта она или нет, они не могут. Монитор консоль выбирает по тому же правилу «имя важнее индекса», что и сам показ — сначала [console] display_name, затем [console] display, — а если это приводит её на монитор показа, она переезжает на другой, если он есть. Закрытие консоли из её собственного меню настроек оставляет это меню на показе, поэтому вместе с окном меню не теряется.

На машине с одним монитором она открывается обычным окном на нём же — это поддерживаемый способ работы, а не ошибка.

Открытая консоль не отнимает у вывода ничего сверх шума измерения. Это измерено на пяти сочетаниях двух ключей темпа — frame_latency и present_every_n, оба описаны в Configuration — и трёх режимах времени кадра на машине разработчика проекта, поэтому значения по умолчанию можно оставить как есть — подстраивать нечего. Строка console opened: в diagnostics.log называет режим, задержку кадра после ограничения и действующий темп, а периодическая заметка console open: несёт итоги показанных / пропущенных / прореженных кадров — именно это делает замер стоимости на чужой машине правдоподобным, а не просто низким.

Как отзеркалить показ в другую программу

--preview stdout отправляет кадры, которые видит проектор, тому, кто запустил приложение, — сырыми пикселями в стандартный вывод. Так редактор смотрит на настоящий показ, а не на второй, безоконный. Зеркало — это масштабированная копия с полями фиксированного размера, 640x360, если --preview stdout@WIDTHxHEIGHT не назвал другой, поэтому изменение размера окна или полный экран никогда не меняют то, что получает читатель; а порядок каналов назван в поле format события stream, а не угадывается. Кадр по-прежнему рисуется в свою настоящую цель без изменений; копия для зеркала снимается рядом. Полное сравнение с безоконным потоком — в Headless capture and video.

Цикл отрисовки никогда его не ждёт. Промежуточная копия снимается заодно с отправкой самого кадра, а её отображение берётся на следующем кадре неблокирующим опросом, поэтому ещё не готовый кадр не стоит показу ничего. Зеркало из-за этого отстаёт от проектора на кадр — в этом вся цена того, что оно никогда не тормозит.

Оно пропускает кадры, а не тормозит. Читатель медленнее показа теряет кадры; показ идёт дальше. Это противоположность безоконному --sink stdout, который блокирует: у безоконного цикла нет срока показа кадра, который можно пропустить, а у этого есть.

Консоль ему не нужна, и закрытие консоли его не убирает: это два независимых потребителя одного промежуточного результата. Геометрия берётся у вывода и объявляется до первого кадра событием stream в стандартном потоке ошибок (при --events), поэтому читатель знает, как разбить поток на кадры.

Цена записана, а не предполагается. При выходе и при закрытии консоли в diagnostics.log добавляется заметка preview с названием режима, p50 и p99 времени кадра показа и — если зеркало было включено — сколько кадров оно записало и сколько потеряло. Счётчики кадров и делают замер замером: прогон, показавший время кадра и ноль записанных кадров, измерял зеркало, которое ничего не доставило. Цену даёт сравнение прогона с флагом и без него; заметка называет свой режим, поэтому перепутать их нельзя.

Built from f4f807a at version 0.178.0. This site tracks main and is not versioned per release.