До появления HD процессоры могли легко обрабатывать видео. Когда 8 лет назад HD стал популярным, производители графических процессоров начали внедрять ускоренное декодирование видео в своих чипах. Вы можете легко найти видеокарты, продающиеся как поддерживающие HD-видео и некоторые другие лозунги. Сегодня любой графический процессор поддерживает ускоренное видео, даже интегрированные графические процессоры, такие как Intel HD Graphics или их предшественники Intel GMA. Без этого вашему процессору будет трудно переваривать видео 1080p с приемлемой частотой кадров, не говоря уже о повышенном энергопотреблении. Таким образом, вы уже используете ускоренное видео каждый день.
Теперь, когда графические процессоры все более широко используют вычислительную мощность, они также широко используются для ускорения обработки видео. Эта тенденция началась примерно в то же время, когда было введено ускоренное декодирование. Такие программы, как Badaboom, начали набирать популярность, поскольку оказалось, что графические процессоры гораздо лучше (ре) кодируют видео, чем процессоры. Однако этого нельзя было сделать раньше, потому что графическим процессорам не хватало общих вычислительных возможностей.
Но графические процессоры уже могли масштабировать, вращать и преобразовывать изображения со средних лет, так почему же мы не смогли использовать эти функции для обработки видео? Ну, эти функции никогда не были реализованы для использования таким образом, поэтому они были неоптимальными по разным причинам.
Когда вы программируете игру, вы сначала загружаете всю графику, эффекты и т.д. В графический процессор, а затем просто визуализируете полигоны и сопоставляете с ними соответствующие объекты. Вам не нужно отправлять текстуры каждый раз, когда они необходимы, вы можете загрузить их и использовать их повторно. Когда дело доходит до обработки видео, вы должны постоянно передавать кадры в GPU, обрабатывать их и извлекать их обратно, чтобы перекодировать их на CPU (помните, мы говорим о времени до вычисления на GPU). Это не то, как должны работать графические процессоры, поэтому производительность не была отличной.
Другое дело, что графические процессоры не ориентированы на качество при преобразовании изображений. Когда вы играете в игру со скоростью 40+ кадров в секунду, вы действительно не заметите небольшое искажение пикселей. Даже если бы вы, игровая графика была недостаточно детализированной, чтобы люди могли о ней заботиться. Существуют различные приемы и приемы, используемые для ускорения рендеринга, которые могут немного повлиять на качество. Видео также воспроизводится с довольно высокой частотой кадров, поэтому динамическое масштабирование при воспроизведении приемлемо, но перекодирование или рендеринг должны давать результаты с идеальным качеством пикселей или, по крайней мере, как можно ближе к ним при разумной цене. Этого нельзя добиться без надлежащих функций, реализованных непосредственно в графическом процессоре.
В настоящее время использование графических процессоров для обработки видео является довольно распространенным явлением, потому что нам нужна технология на месте. Почему это не выбор по умолчанию, это скорее вопрос к издателю программы, а не к нам - это их выбор. Возможно, они считают, что их клиенты ориентированы на аппаратное обеспечение для обработки видео на процессоре, поэтому переключение на графический процессор отрицательно скажется на производительности, но это только мое предположение. Другая возможность состоит в том, что они по-прежнему рассматривают рендеринг с помощью графического процессора как экспериментальную функцию, которая недостаточно стабильна, чтобы установить ее по умолчанию. Вы не хотите тратить часы на рендеринг своего видео, просто чтобы понять, что что-то испорчено из-за ошибки рендеринга на GPU. Если вы все равно решите использовать его, то вы не сможете обвинить издателя программного обеспечения - это было ваше решение.