Kinoteca Icon

Kinoteca

Локальный медиацентр на Rust с аппаратным рендерингом WGPU

Студийное качество видео и звука, работающее напрямую с вашей видеокартой. Без интернета. Без подписок. Без Electron.

ПОДРОБНЕЕ
Kinoteca Catalog Kinoteca Settings Kinoteca Player

Тономаппинг и Цвет

Математически выверенный конвейер. Перевод PQ в линейное пространство, гамут-маппинг из BT.2020 в BT.709 с защитой телесных оттенков и устранением цветовых сдвигов в светах.

Color Swatches

Настройка яркости, насыщенности, сочности, контрастности, гаммы

3D LUT

Встроенная поддержка 3D LUT таблиц

SDR Video
HDR Video
‹›
SDR (Washed)
HDR Tonemapped
Исходный HDR
Tonemap / LUT
SDR-вывод
Video Frame

Резкость

⋮⋮

Размытие

⋮⋮

Зернистость

⋮⋮

Chroma

⋮⋮

Генеративный видеопроцессинг

Управляйте картинкой на уровне GPU.
Высокоточный апскейл, эмуляция пленки и детерминированное зерно.

Вы можете перетаскивать блоки шейдеров мышкой за иконку справа, меняя порядок обработки, и крутить слайдеры. Картинка слева мгновенно перерисовывается. Эффекты реальны.

У вас есть возможность написать свои собственные шейдеры!

Аудио-движок студийного класса

Обработка звука не должна создавать задержек. Встроенный DSP использует сатурацию и эквализацию, работающие в реальном времени. Включите видео справа и настройте звук ползунками ниже.

Эквалайзер (Real-time EQ)

Сатация (Distortion)

00:00 / 00:00

Приобрести программу

Медиацентр поставляется в виде одного портативного исполняемого файла, не требует установки и привязки к интернету.

Лицензия навсегда за 590 руб.

Частые вопросы

Архитектура и Видео-движок

Каким образом реализован видеоплеер и как достигается плавная частота кадров?
Видео-движок написан на системном языке Rust с использованием низкоуровневых биндингов ffmpeg-next и полностью изолирован от графического потока интерфейса. Декодирование видеокадров и аудиопакетов выполняется в параллельных фоновых потоках. Декодированные кадры передаются в безблокирующую очередь без аллокаций памяти в цикле рендеринга, а их вывод на экран синхронизируется по высокоточному системному таймеру аудиокарты (Audio-driven sync). Это исключает задержки интерфейса и гарантирует абсолютно плавные 60 или 144 FPS без пропуска кадров и дрожания (micro-stuttering).
Как устроена система тономаппинга и работы с HDR/SDR?
Медиацентр имеет собственный конвейер тономаппинга в линейном пространстве. Видеокадр в формате YUV420P16LE преобразуется в RGB с учетом цветового пространства источника (BT.709, BT.601, BT.2020). При воспроизведении HDR на SDR-экране, пиксели переводятся из PQ-кривой в линейное пространство, проходят десатурацию чрезмерно ярких оттенков, защиту телесных тонов (skin tones) и мягкое сжатие светов (Knee/Roll-off) по алгоритму Uncharted 2, после чего переводятся в sRGB OETF для вывода на экран.

Графика и Шейдеры (WGPU)

Почему для графического интерфейса выбран WGPU вместо Electron или WebView?
Использование WGPU позволяет отрисовывать весь интерфейс приложения непосредственно через Vulkan, DirectX 12 или Metal с аппаратным ускорением, минуя тяжелые браузерные движки вроде Chromium. Программа компилируется в один легковесный бинарный файл, потребляет менее 100 МБ оперативной памяти и работает с минимальной нагрузкой на центральный процессор, оставляя все ресурсы системы под декодирование видеопотока и обработку шейдеров.
Как работают пользовательские видео-шейдеры и 3D LUT?
Вся постобработка изображения происходит на GPU с помощью шейдеров на языке WGSL. 3D LUT таблицы (формат .cube) преобразуются в трехмерные текстуры Rgba32Float на видеокарте. Цветоориентация выполняется методом тетраэдральной интерполяции в фрагментном шейдере, что обеспечивает кинематографическое качество цветовых переходов без ступенчатых артефактов и с минимальной нагрузкой на видеопамять.

Аудиосистема и DSP

Каким образом устроена обработка звука в реальном времени?
Аудиоконвейер работает в 32-bit Float режиме с частотой дискретизации 48 кГц на базе кроссплатформенной библиотеки SDL2. Декодированный звук поступает в кольцевой буфер ringbuf без блокировок. Тракт включает 8-полосный параметрический эквалайзер на биквадратных фильтрах и модуль Soundgoodizer, который разделяет сигнал на 3 полосы (кроссовер с фильтрами Линквица-Райли) и применяет независимую компрессию и нелинейный сатуратор.
Зачем в аудио-процессоре используется ассемблерный код SSE?
Для достижения ультранизкой задержки и предотвращения цифрового клиппинга (перегрузки) при экстремальных настройках лимитера. Алгоритм ограничения амплитуды сигнала оптимизирован вручную на уровне процессорных инструкций SSE с помощью встроенного ассемблера Rust (asm!). Это гарантирует, что пики сигнала мягко сглаживаются по функции гиперболического тангенса за минимальное количество тактов процессора, полностью исключая заикания звука.