madVR: как выжать максимум качества из видео
В первый раз я познакомился с madVR, когда обнаружил новый чекбокс в настройках MPC Home Cinema. Как оказалось, качество видео получаемое на выходе madVR видео рендерер просто не сравнимо ни с чем, что я использовал раньше (EVR, Overlay, VMR 7, 9 и Haali). madVR создавался с целью выводить видео максимально возможного качества. В чем особенности madVR и каким образом у него получается видео такого высокого качества?
К основным фишкам madVR можно отнести:
- плавное отображение движения в кадре (smooth motion rendering)
- высокое качество дискретизация цвета (chroma upsampling)
- высокое качество преобразования YCbCr -> RGB,
- высококачественные алгоритмы маштабирования видео (bicubic, mitchell, lanczos, spline etc)
- коррекция спектра и контрастности для разных видов мониторов (gamut & gamma correction)
- обработка видео GPU в 16 битном режиме без потерь
Как я уже упоминал, MPC HC поддерживает madVR довольно давно, также как и KmPlayer и Zoom Player.
Все, что нужно, чтобы попробовать в деле этот видео рендерер — распаковать скачанный zip файл (ссылка на закачку последней версии) в отдельную папку и установить, кликнув на install.bat.
После этого в настройках (Настройки-Воспроизведение-Вывод) выбрать madVR.
Настройки самого madVR доступны после запуска видео и правого клика Фильтры-madVRRenderer. У меня все отлично работает с настройками по умолчанию, но при желании, там достаточно много опций, чтобы подстроить под свой вкус и мощность видеокарты.
Обсуждение madVR, пожелания к разработчику и баг репорты можно оставить в специальной ветке на форуме Doom9. Там же на первой странице можно посмотреть сравнение по качеству с конкурентами.
Источник
Секреты качественного воспроизведения видео на компьютере. Часть 3: Настройка плавного воспроизведения в рендере madVR
Здравствуйте уважаемые читатели блога www.ithabits.ru. В предыдущих статьях мы выяснили, что если нет проблем с быстродействием компьютера, то основное влияние на плавность воспроизведения видео оказывают временные (ударение на последнем слоге) характеристики. В первую очередь это несоответствие частоты обновления экрана монитора частоте кадров воспроизводимого видеоконтента.
В прошлый раз мы рассмотрели способ улучшения качества демонстрации фильмов путем соответствующего изменения частоты обновления дисплея.
К сожалению, этот очень простой и эффективный способ в полной мере доступен только тогда, когда видеомонитор: дисплей компьютера, телевизор, проектор — имеет необходимый набор кадровых частот.
Как быть, если в списке доступных отсутствует режим 24р или дисплей и вовсе поддерживает одну единственную частоту обновления равную 60 Гц?
Ожидать от мировой киноиндустрии отказа от стандарта съемки 24 кадра в секунду в самое ближайшее время не приходится.
Однако, как мы уже говорили, решение есть. Как гласит древняя восточная мудрость: “Если гора не идет к Магомету, то Магомет идет к горе”.
В нашем случае это означает, что если нельзя изменить частоту обновления экрана монитора, то нужно поменять частоту кадров проигрываемого видео.
Возможно ли это? Не только возможно, но уже широко используется, например, во многих современных телевизорах.
Эту технологию обобщенно можно назвать “Smooth motion” (плавное движение). У разных производителей видеоаппаратуры она имеет различные названия. Например, в телевизорах Sony — Motionflow, у Samsung — Clear Motion Rate, у других производителей как-то еще, но суть от этого не меняется. Заключается она в добавлении недостающих промежуточных кадров методом интерполяции соседних кадров исходного видео непосредственно в процессе его вывода на экран.
Учитывая тот факт, что сегодня далеко не у всех есть телевизор с поддержкой такой технологии, посмотрим как можно реализовать ее с помощью компьютера.
Сразу же необходимо отметить, что отнюдь не все зрители воспринимают изменение частоты кадров фильмов с 24 до 60, 100 и более в секунду как однозначное благо. Некоторые отмечают, что при этом совершенно меняется характер восприятия и теряется привычное ощущение кино. Иногда это даже называют эффектом мыльной оперы (soap opera effect).
И действительно, такое мнение не лишено оснований. Не знаю как вы, а мне с детства достаточно было одного взгляда на экран телевизора, чтобы мгновенно определить, что показывают – художественный фильм или телевизионную постановку. А всего-то разница была в два раза – 25р против 50i (о демонстрации фильмов 24р в телевизионных системах PAL/SECAM смотрим в предыдущей части).
В любом случае имеет смысл попробовать и лишь после этого принимать решение о том, как лучше смотреть фильмы. Ну а если устройство видео вывода не поддерживает режим 24р, то думать особо и не о чем.
Далее мы рассмотрим три возможных варианта реализации Smooth motion:
- Smooth motion в рендере madVR;
- SmoothVideo Project(SVP);
- МедиаплеерSplash PRO EX.
Из-за большого объема материала в данной статье будет представлено описание лишь первого из них, а именно настройки рендера madVR. Два других – в следующей части.
Настройка рендера madVR
В прошлый раз мы уже начали знакомиться с программным обеспечением madVR.
Напомню, что MadVR — это проект, нацеленный на улучшение качества обработки и визуализации видео путем использования в процессе вывода точного преобразования цветового пространства и качественного масштабирования изображения с использованием возможностей видеоадаптера.
Рассмотрим основные настройки рендера madVR. (Загрузка и установка данного ПО была разобрана здесь).
Данный модуль имеет большое количество настроек. При этом необходимо иметь в виду, что чем выше желаемое качество обработки изображения, тем больше будет нагрузка на графический процессор. В конечном счете изменение тех или иных настроек процесса может привести к тому, что GPU перестанет справляться с обработкой видеопотока, что является недопустимым. При этом реальное улучшение картинки может оказаться крайне незначительным.
В целом можно рекомендовать такой подход к настройкам данного фильтра.
Запасаемся несколькими видеофайлами с различным разрешением по горизонтали: 720, 1280, 1440, 1920 px и частотой кадров: 23,976, 24, 29,97, 50, 59,94 fps.
Не обязательно должен присутствовать весь перечисленный набор, но одного “предельного” 1080р60 будет недостаточно. Так, в моем случае самыми “тяжелыми”, кто бы мог подумать, оказались файлы MPEG 1440х1080i50 с видеокамеры. Почему, вскоре станет понятно.
Для более-менее объективной настройки вывода потребуется контролировать загрузку графического процессора.
Владельцы видеокарт AMD, правда не все, могут использовать для этой цели вкладку AMD OverDrive в Catalyst Control Center.
Всем остальным можно порекомендовать утилиту TechPowerUp GPU-Z. Ее можно скачать непосредственно с сайта разработчика.
На вкладке “Sensor” представлена информация о состоянии видеоадаптера в интересующий момент времени. В первую очередь нас будет интересовать загрузка процессора (GPU Load). Информация об использовании видеопамяти (Memory Used) поможет определиться с количеством видео буферов.
Ниже представлены оптимальные с точки зрения качество/производительность настройки madVR применительно к компьютеру с процессором i7-950 (3,06 GHz) и видеокартой NVIDIA GeForce GTS 450.
Они ни в коем случае не являются догмой или чем-то обязательным к исполнению. В зависимости от производительности вашего видеоадаптера их следует менять в ту или иную сторону руководствуясь при этом информацией о загрузке GPU в процессе воспроизведения видео различных форматов.
Напомню, что войти в настройки madVR можно только непосредственно во время воспроизведения видео медиаплеером, поддерживающим данный тип DirectShow вывода, с помощью соответствующего значка в трее или через меню “Воспроизведение –> Фильтры –> MadVR” (для MPC-HC). Настройки madVR можно открыть и из меню по правому клику мышью в любом месте экрана плеера.
В контексте сегодняшней темы нас интересует одна единственная настройка, но пропустить все остальные было бы как-то неправильно. Поэтому начнем по порядку сверху вниз.
- Devices (устройства вывода)
Для каждого подключенного к видеокарте компьютера монитора указываем его тип.
Calibration (калибровка)
На вкладке “Calibration” имеет смысл выбрать “this display is already calibrated” (дисплей уже откалиброван). MadVR позволяет задавать расширенные калибровочные характеристики, однако в подавляющем большинстве случаев лучше указать все так, как показано. Задание этих параметров нужно рендеру для правильного преобразования цветовых пространств.
Display modes (Режимы дисплея)
Данную вкладку мы уже разобрали в прошлый раз. В поле “list all display modes…” нужно вписать режимы, поддерживаемые дисплеем и выбрать в какой момент — при старте воспроизведения или при переходе на полный экран, переключать частоту его обновления.
Возможность обработки видео 25р как 24р пропускаем (для реализации данной опции необходима установка дополнительного ПО).
- Processing (обработка)
Decoding (декодирование видео)
Считаем, что все вопросы с декодированием видео к этому моменту уже решены и поэтому вкладку “decoding”, на которой для MPEG2, VC1 и h264 можно отдельно включить декодирование с помощью ffmpeg/libav, пропускаем.
Большое количество свободных медиаплееров, в том числе MPC, перешли на использование декодера LAV. Сегодня это представляется оправданным и целесообразным.
Если есть проблемы с производительностью центрального процессора компьютера, то для его разгрузки, если позволяют возможности видеоадаптера, в настройках декодера LAV можно включить аппаратное декодирование видео с помощью GPU.
Deinterlacing (деинтерлейсинг)
В самой первой публикации темы интерлейсному видео уже было уделено достаточно много внимания.
Определения для вариантов переключателя “automatically activate deinterlacing when needed (автоматически активировать деинтерлейсинг если нужно)” могут показаться несколько неожиданными: “if in doubt, activate deinterlacing (если есть сомнения, то активировать деинтерлейсинг)” и “if in doubt, deactivate deinterlacing (если есть сомнения, то выключить деинтерлейсинг)”. О каком сомнении или неопределенности может идти речь?
Дело в том, что декодеры далеко не всегда правильно распознают тип видео. И LAV в данном случае не является исключением. Например, вот с такими настройками неожиданно возникла проблема с деинтерлейсингом обычного PAL DV видео.
С чем это связано сказать трудно, как и невозможно дать единую рекомендацию для всех типов видео с полями. В целом можно рекомендовать такой подход – включить деинтерлейсинг в настройках кодека, программный или аппаратный, а в рендере madVR сделать “подстраховку”, как это показано на рисунке.
Узнать активен ли деинтерлейсинг в рендере madVR можно из информации, выводимой по комбинации клавиш “Ctrl+J”, а переключать режимы обработки чересстрочного видео на ходу с помощью “Ctrl+Alt+Shift+T”.
Artifact removal (удаление артифактов)
Речь идет о таком неприятном явлении при просмотре видео, как дебандинг. Проявляется он в виде ступенчатого градиента на однородных поверхностях. Если позволяет быстродействие видеокарты, то безусловно данную возможность уменьшения артефактов такого типа имеет смысл включить.
- Scaling algorithms (алгоритмы масштабирования)
Очень высокое качество масштабирования изображения в рендере madVR является одной из главных причин, по которой его стоит использовать.
Chroma upscaling (масштабирование цвета)
Большинство цифровых видеофильмов кодируются в формате субдискретизации цветности 4:2:0. Это означает, что черно-белое изображение (luma — яркость) сохраняется в видео с полным разрешением, а цветовая картинка (chroma — цветность) имеет разрешение в два раза меньшее как по горизонтали, так и по вертикали. В данном представлении четыре соседних пикселя (квадрат 2х2) имеют одинаковый цвет.
По сравнению с представлением без субдискретизации (4:4:4), 4:2:0 позволяет уменьшить скорость потока (битрейт) и, соответственно, конечный размер видеофайла примерно в два раза.
В некоторых форматах видео используется субдискретизация цветности 4:1:1, которая также позволяет уменьшить скорость потока в два раза, но при этом одинаковый цвет приобретают четыре пикселя в строке по горизонтали.
Такое возможно благодаря тому, что детали черно-белого изображения в значительной степени маскируют низкое разрешение цветного. Тем не менее границы объектов получают неравномерную ступенчатую окраску.
В этой связи вспомнился некогда легендарный домашний компьютер ZX Spectrum. Возможно старшее поколение читателей его помнит. Графическое разрешение создаваемой им картинки составляло 256х192 точек, а вот цветовые атрибуты задавались по знакоместам размером 8х8 пикселей. Благодаря такому решению получилось занять под видеопамять всего около 7 Кб. Хотя, конечно, возникли определенные сложности с рисованием цветных изображений и сами они выглядели порой весьма забавно.
По причине, отмеченной выше, цветная картинка всегда масштабируется в madVR в сторону увеличения (Chroma upscaling) до разрешения видео. Это позволяет заметно улучшить качество ее визуального восприятия.
Интерфейс секции “Scaling algorithms” выполнен в дружественном пользователю стиле. Слева представлены доступные алгоритмы масштабирования. Общий порядок такой – качество увеличивается сверху вниз по списку. Разумеется, одновременно с этим повышаются и требования к производительности компьютера.
Так, самый примитивный, но одновременно и самый быстрый и легкий алгоритм “Nearest Neighbor (Ближайший сосед)” расположен в самом верху.
Зато внизу можно увидеть появившийся не так давно в madVR OpenCL алгоритм масштабирования цветности NNEDI3, являющийся на сегодняшний момент времени одним из лучших. Однако позволить себе его смогут только владельцы достаточно продвинутых видеокарт.
В моей конфигурации компьютера со старенькой NVIDIA GeForce GTS 450, равно как и с ее одноклассницей AMD Radeon HD 5770, выбор алгоритма масштабирования NNEDI3 мгновенно загружает GPU до уровня, близкого к 100%, со всеми вытекающими из этого последствиями в виде заикающегося видео.
Это как раз тот случай, когда лучшее может стать врагом хорошего. Если видео компьютером не воспроизводится плавно, то разговоры о качестве масштабирования картинки становятся бессмысленными. Плавность воспроизведения однозначно имеет абсолютный приоритет.
В конце концов я остановился на методе Jinc, но при этом для уменьшения нагрузки на GPU пришлось отключить в настройках LAV аппаратное декодирование (примерно –10% для 1080р50/60, соответственно, +10…15% увеличение загрузки CPU).
Идеальных алгоритмов масштабирования не существует. Каждый из них имеет свои сильные и слабые стороны.
Для того, чтобы облегчить пользователю выбор, в правой верхней части окна показаны их основные характеристики в форме цветных полос. Чем больше будет площадь зеленых столбиков, тем лучше, чем больше красных, тем хуже.
В категории положительных (зеленых) характеристик присутствуют:
Sharpness – резкость. Очевидно, в комментариях не нуждается.
Hide source artifacts – способность алгоритма скрывать дефекты (артифакты) исходной картинки.
В категории отрицательных (красных) свойств представлены:
Aliasing – широкий класс нежелательных визуальных эффектов (артефактов), проявляющихся в компьютерной графике в простейшем случае как зубчатость, неровность, ступенчатость линий, расположенных не параллельно краям экрана.
В более широком смысле aliasing означает неправильное или искаженное представление реального объекта его цифровой моделью, обусловленное недостаточной частотой выборок. В нашем случае частота выборок определяется разрешением изображения и частотой кадров видео.
Классическими примерами такого проявления алиасинга являются причудливые фигуры, получаемые вместо горизонтальных жалюзей на окнах домов или видеосъемка быстро вращающихся лопастей воздушного винта самолета.
Rinding — «звон» — переходный процесс в виде затухающих колебаний. Получил свое название по аналогии со звучанием колокола после удара по нему. При цифровой обработке изображений rinding приводит к появлению артефактов, представляющих собой ложные сигналы вблизи резких переходов. Визуально они проявляются в виде полос или «призраков» у краев объектов.
Other artifacts – другие искажения.
Image upscaling (увеличение изображения)
Для того, чтобы правильно выбрать подходящий для вашей конфигурации оборудования алгоритм масштабирования, как раз и потребуются видеофайлы разного формата и утилита TechPowerUp GPU-Z, о которых мы упомянули выше.
Подбор будем проводить по критерию качество/производительность.
Для видеокарт средней категории имеет смысл сразу начать с метода “Bicubic”. По многочисленным оценкам он дает вполне приемлемое для большинства случаев качество при увеличении разрешения — Image upscaling.
Проверяем загрузку GPU при воспроизведении выбранных видеофайлов. Если она невелика, то можно попробовать другие варианты, расположенные ниже по списку, или включить дополнительные опции. Например, активировать anti-ringing фильтр, как показано на иллюстрации.
Необходимо иметь в виду, что при воспроизведении видео с разрешением 1920х1080 на дисплее с таким же разрешением Image upscaling задействован не будет. Поэтому, как я уже говорил выше, одного “предельного” файла 1080р60 для настройки madVR недостаточно.
Image downscaling (уменьшение изображения)
Поступаем аналогично двум предыдущим настройкам, но начать лучше сразу с метода “Lanczos”, который лучше справляется с задачей Image downscaling — масштабирование изображения в сторону уменьшения размерности.
Для активизации фильтра разрешение окна или экрана монитора должно быть меньше, чем разрешение видео. Если дисплей имеет разрешение 1920х1080, то запустить Image downscaling получится только в оконном режиме видеоплеера. Об этом нужно помнить в процессе настройки.
В целом настройка madVR на максимально возможное качество обработки изображения при сохранении необходимой для плавного воспроизведения производительности является задачей весьма увлекательной.
- Rendering (построение изображения, воспроизведение)
Некоторые настройки madVR из раздела Rendering способны оказывать заметное влияние на производительность.
General settings – основные настройки
Если не вдаваться в детали, то можно сказать, что включение режимов “windowed overlay (оконное наложение)” и “automatic fullscreen exclusive mode (автоматическое включение эксклюзивного режима при полноэкранном воспроизведении)” потенциально должно улучшать производительность. Попробуйте. Лично я не нашел в этих режимах для себя ничего полезного. Кроме того, fullscreen exclusive mode запрещает вывод на экран любых окон других приложений, не будет работать и “Print Screen”.
В разделе General settings есть настройка длинны очередей на обработку в СPU (decoder queue) и GPU (upload/render queue). Если есть проблема с плавностью воспроизведения, то теоретически увеличение очередей должно помочь ее решению. Однако при этом нужно помнить, что чем больше длинна, тем больше памяти нужно madVR.
Проконтролировать доступный объем видеопамяти можно с помощью утилиты TechPowerUp GPU-Z.
Windowed mode settings – настройки оконного режима
Как следует из названия, эти параметры применяются когда madVR работает в оконном режиме. При отключенном fullscreen exclusive mode эти настройки будут использоваться как при работе в окне, так и в при переходе к полноэкранному представлению.
Данная настройка определяет количество буферизированных кадров и потенциально может повлиять на плавность воспроизведения. По умолчанию в память предварительно загружаются 3 кадра. При обычном воспроизведении этого вполне достаточно. Однако, если планируется включить опцию Smootch motion, то имеет смысл увеличить размер буфера, например, до 8-ми кадров.
Нужно помнить, что при этом будет использовано больше памяти.
Exclusive mode settings – настройки режима эксклюзивного полноэкранного воспроизведения
Аналогично Windowed mode settings.
Smooth motion – плавное воспроизведение
Наконец мы подошли к главной цели сегодняшней публикации – к опции Smooth motion.
Smooth motion в madVR – это не совсем то, о чем мы говорили в начале статьи. Она не является системой безусловной интерполяции кадров, которая используется в телевизорах, или в системе SVP, о которой пойдет речь в следующей части.
В рендере madVR Smooth motion предназначена для организации плавного воспроизведения в тех случаях, когда частота кадров исходного видео не соответствует ни одной из частот обновления экрана монитора.
Так как для согласования частот используется смешивание кадров (frame blending), то иногда можно увидеть ореол вокруг движущихся объектов. Однако такое случается достаточно редко и точно не может перечеркнуть ценность улучшения плавности воспроизведения.
Если сделать настройки так, как показано на иллюстрации, — “Enable smootch motion frame rate conversion only if there would be motion judder without it” (включить преобразование частоты кадров только тогда, когда без него будет дрожание изображения), то функция будет активироваться только в тех случаях, когда это действительно нужно. Например, при воспроизведении видео с частотой кадров 23/24/25/50 на мониторе с частотой 60 Гц. А вот для NTSC частот 30/60 кадров в секунду в этом случае smootch motion останется неактивной.
Если экран вашего устройства вывода имеет возможность обновляться с частотой 50 Гц, эту возможность нужно обязательно использовать. В этом случае smootch motion будет включаться в работу только для фильмов 23/24 fps.
В общем случае такую настройку можно считать оптимальной.
Могу сказать, что фильмы с наиболее распространенной частотой кадров 29,976 fps с включенной в madVR функцией smootch motion смотрятся на мониторе 60 Гц очень даже неплохо.
Еще одним положительным аспектом реализации технологии smootch motion в madVR является ее низкая ресурсоемкость. Общее правило такое – если вам удалось настроить и запустить madVR в принципе, то smootch motion также будет работать.
Dithering (сглаживание)
Выбор метода сглаживания в данной секции настроек может оказать решающее влияние на производительность. В последних версиях madVR появилась реализация очень высококачественного алгоритма сглаживания, известного как Error Diffusion. К сожалению, это как раз то, что, как и NNEDI3, может мгновенно поставить на колени вашу видеокарту. Кстати, для работы Error Diffusion нужна поддержка DX11 со стороны GPU видеоадаптера.
Как следует из комментариев к представленным алгоритмам, быстрой альтернативой Error Diffusion является Ordered Dithering.
Включение дополнительных опций use colored noise (использовать цветной шум) и change dither for every frame (менять сглаживание для каждого кадра) не оказывают заметного влияния на нагрузку GPU. Но при этом их влияние неоднозначно. Выбирайте в данном случае то, что вам больше понравилось, или оставьте их первоначальные установки.
Trade quality for perfomance (улучшить производительность за счет качества)
Если все еще остались проблемы с производительностью, то можно попробовать решить их за счет незначительного ухудшения качества обработки изображения.
Отмечать перечисленные опции нужно последовательно сверху вниз до тех пор, пока не будет достигнута необходимая плавность воспроизведения видео.
- User interface (интерфейс пользователя)
Keyboard shortcuts (клавиатурные комбинации)
Здесь можно посмотреть используемые в madVR для быстрого доступа к некоторым настройкам клавиатурные комбинации.
Желаю всем приятного просмотра фильмов, например в плеере MPC-HC, с использованием рендера madVR.
В следующий раз мы займемся изменением частоты кадров исходного видео с помощью программного обеспечения SmoothVideo Project (SVP). Не пропустите самое интересное.
Источник