Технологии
Никита Лихачёв

Facebook изобрела новую единицу времени — «щелчок»

Он составляет чуть больше одной миллиардной секунды и нужен, чтобы лучше синхронизировать кадры видео или аудиосэмплы.

Проект Facebook Open Source объявил о введении новой единицы исчисления времени в C++ под названием flick. Современный англо-русский словарь переводит это слово как «щелчок» или «быстрое движение», но, как поясняется в описании нововведения на GitHub, понятие эквивалентно смене кадра (frame-tick).

Один щелчок составляет ровно 1/705 600 000 секунды, или примерно 1,41723356 наносекунды. В процессе работы над синхронизацией кадров видео при помощи C++ разработчики обычно используют десятичные доли секунды для синхронизации кадров, однако это приводит к тому, что не для всех частот отображения видео и аудио получаются синхронизированы одинаково.

Например, у видео есть свои популярные частоты смены кадров (24, 25, 30, 48, 50, 60, 90, 100, 120 кадров в секунду или герц), а у аудио — свои (8, 16, 22,05, 24, 32, 44,1, 48, 88, 96 и 192 килогерц). В случае с щелчками временные промежутки между всеми этими частотами можно исчислять при помощи целых чисел, а не десятичных дробей, и синхронизировать одинаково. Например, 1/24 секунды в этом случае будет составлять 29 400 000 щелчков, а 1/192 000 — 3675.

При работе над созданием визуальных эффектов для кино, ТВ и других медиа обычно проводятся симуляции или другие процессы с использованием временных отрезков, при которых один кадр разбивается на фиксированное, целое число делений. По ряду причин удобно иметь возможность исчислять эти деления так, чтобы в сумме они давали точно один кадр и односекундный интервал.

Поскольку для временных симуляций никогда-никогда нельзя использовать десятичные дроби (иначе их точность падает со временем), инструменты std::chrono в C++ подходят идеально. Тем не менее самое высокое из доступных разрешений времени, наносекунды, не одинаково делят популярные в кино и других медиа частоты смены кадров. В этом и была задумка этой единицы.

проект Facebook Open Source

Слово для обозначения единицы ввёл ещё в 2016 году бывший сотрудник Oculus Story Studio Кристофер Хорват. По его словам, само придумывание единицы и работа над ней заняли у него несколько недель, но процесс прохождения инициативы через Facebook Open Source потребовал более года.

#технологии #facebook