Microsoft патентует GPU-ускорение кодирования видео
Еще один, к счастью, неудавшийся пример патентования слишком общих идей.
Сейчас использование мощностей графических процессоров для операций с видео стало обыденностью. Многие владельцы современных видеокарт на базе NVIDIA воспользовались продуктами от Badaboom или MotionDSP с данной функциональностью. Тем удивительнее стало обнаружение факта, что на подобные технологии кем-то получен патент, и этот кто-то — Microsoft. Буквально на днях Бюро по регистрации патентов и торговых марок США утвердило за компанией патент за номером 7,813,570 под многообещающим заголовком «Accelerated video encoding using a graphics processing unit».
Первые реакции на выдачу такого патента были ожидаемы — попытка компании-монополиста наложить лапу на перспективный рынок, шаг против прогресса, заговор против производителей GPU… Однако, изучение содержания патента позволяет существенно снизить накал страстей.
Прежде всего, заявка на патент была отправлена в Бюро… 22 октября 2004 года. В ту пору возможность использования графических процессоров для общих вычислительных задач еще была предметом научных исследований. К примеру, в 2004 году университетом Стэнфорда была выпущена программа GPUBench, как иллюстрация к обсуждению перспектив GPGPU перед выставкой SIGGRAPH 2004 (обсуждавшиеся тогда вопросы сегодня могут вызвать лёгкую улыбку).
Во-вторых, указанный патент покрывает лишь случай использования GPU для выполнения операции определения движения — нахождения движущихся объектов в кадре и расчёта векторов движения и информации, необходимой для последующего восстановления видео при воспроизведении, как это определено в стандартах MPEG-1/2. Все остальные операции выполняет центральный процессор. Современные программы кодирования с применением GPGPU-технологий не выделяют какие-то этапы кодирования, используя GPU как математический сопроцессор для всех или почти всех операций с видеопотоком. Ну и, согласно тексту патента, работа с видео должна была осуществляться путём помещения кадров в текстуры, обработке их с помощью пиксельных и вершинных шейдеров образца Direct3D 9.0 и использованием Z-буфера для хранения промежуточных результатов операции. Нынешнее программное обеспечение видеокодирования с функциями GPGPU использует высокоуровневые интерфейсы вроде CUDA или ATI Stream.
В целом, заявка на пресловутый патент, вероятно, была подана в рамках разработки следующих версий приложений Windows Movie Maker/Movie Encoder для будущей операционной системы Longhorn, но проект умер вместе с самим Longhorn. К настоящему моменту Microsoft пришла к собственному GPGPU API DirectCompute в составе DirectX 11 и врядли нуждается в патентовании схемы использования аппаратного ускорения шестилетней давности. Так что история с патентом за номером 7,813,570 является лишь иллюстрацией неповоротливости и ограниченности патентной системы, с непоправимым опозданием «защитившей» права на давно потерявшую актуальность разработку.