СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕНДЕРИНГА И ВЫДАЧИ ПОДСКАЗОК КОДЕРУ НА ОСНОВАНИИ ОЦЕНКИ ПРЕДВАРИТЕЛЬНО КОДИРОВАННОЙ НАГРУЗКИ Российский патент 2021 года по МПК H04N19/17 H04N19/46 

Описание патента на изобретение RU2752723C2

Родственные заявки

[1] Настоящая заявка испрашивает приоритет согласно следующим предварительным заявкам на выдачу патента США: №62/488526, поданной 21 апреля 2017 года; №62/647180, поданной 23 марта 2018 года; и №62/655901, поданной 11 апреля 2018 года.

Область техники, к которой относится настоящее изобретение

[2] В сфере удаленных игр, где игрой на стороне сервера управляет игрок на стороне клиента, предпринимаются попытки кодирования выходного видеосигнала акселератора трехмерной графики (3D-графики) в реальном масштабе времени с использованием существующих или оптимизированных под требования пользователей кодирующих устройств. Однако интерактивный характер видеоигр, в особенности, контур обратной связи для игрока между выходными видеоданными и вводными данными игрока делает потоковое игровое видео намного более чувствительным к задержке в сравнении со стандартным потоковым видео. Существующие способы кодирования видеосигналов могут жертвовать вычислительной мощностью и кое-какими иными параметрами ради уменьшения времени кодирования. Новые способы интеграции процесса кодирования в процесс рендеринга видеоданных могут обеспечить существенное уменьшение времени кодирования с сохранением вычислительной мощности, что повышает качество кодированного видео и сохраняет первоначальный формат битового потока данных, обеспечивая при этом взаимосовместимость существующих аппаратных устройств.

[3] В первом проходе процесса многопроходного кодирования вычисляется стоимость кодирования или размер каждого кодированного видеокадра перед тем, как данные будут эффективно упакованы, с целью приведения их в соответствие с ограничением по скорости передачи битового потока в последующих проходах. Многопроходное кодирование дает существенные преимущества, обеспечивая максимально возможное качество для заданного ограничения по скорости передачи битового потока, но традиционное многопроходное кодирование требует доступа ко всему видеофайлу, что делает его непригодным для использования в сферах применения потокового вещания.

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

[5] Видео, рендерируемое в реальном масштабе времени, получает все более широкое распространение в сферах применения потокового вещания, таких как передача игрового потокового видео, где большое значение имеет высокое качество изображения и ограничение полосы пропускания. Отрендеренное видео, в отличие от записанного видео, имеет доступ к дополнительной информации о каждом кадре, которая может быть повторно использована для оценки стоимости кодирования кадра. Таким образом, результаты первого прохода при многопроходном кодировании могут быть аппроксимированы для получения кодированной видеоинформации максимально высокого качества в рамках ограничений по скорости передачи битового потока. Многие движки рендеринга обладают частичной информацией об изображениях, подлежащих визуализации, и могут заранее генерировать уставки качества кодера, которые могут быть использованы во время прогона. Таким образом, преимущества режима многопроходного кодирования могут быть обеспечены в среде потокового вещания в реальном масштабе времени. Однако, что будет в подробностях описано ниже, существующая автоматизированная технология остается не лишенной недостатков при оценке качества кодирования в достаточной степени для выполнения рендеринга видеоданных высокого качества в реальном масштабе времени с компенсацией всплесков трафика вследствие повышенной энтропии. Более того, в настоящее время не существует технологии кодирования, которая могла бы осуществлять пространственное кодирование, а не временное, воспроизводя многопроходное кодирование и оставаясь при этом в режиме реального времени.

[6] Патент США №7844002 В2 («Патент '002») раскрывает системы и способы для осуществления кодирования видео в формате MPEG с опережающим просмотром информации с целью достижения постоянной скорости передачи битового потока. Система состоит из двух видеокодеров, один из которых задерживает ввод данных на определенную величину времени относительно окна предварительного просмотра другого кодера. В системе согласно патенту '002 один из двух видеокодеров выполняет функцию буферного (упреждающего) устройства, задерживающего входные видеокадры с тем, чтобы второй видеокодер, выполняющий функцию сборщика/обработчика информации, имел время, необходимое для извлечения релевантных данных и определения стратегии кодирования видеокадров. После определения стратегии параметры кодирования передаются в кодер для приведения в исполнение. Технология согласно патенту '002 не лишена недостатков в сравнении с настоящим изобретением, по меньшей мере, потому, что она не раскрывает методы расчета стоимости кодирования кадров рендерируемого видео при потоковом вещании, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, или методы использования видеоданных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока. Настоящее изобретение лучше также потому, что оно собирает и сохраняет уставки кодера, которые могут повторно использоваться бесконечное число раз.

[7] Заявка США № US 2016/0198166 А1 («Заявка '166») раскрывает системы и способы для методов псевдо-многопроходного кодирования, предлагающие решение по кодированию в реальном масштабе времени. В раскрытой системе входные видеокадры субдискретизируются и кодируются в первом проходе с формированием подгруппы картинок. Затем эти подгруппы используются для генерирования статистики кодирования, которая используется для получения совокупности кодированных кадров второго прохода. Методы, описанные в заявке'166, уступают настоящему изобретения, по меньшей мере, потому, что настоящее изобретение обучает методикам расчета конкретной стоимости кодирования кадров рендерируемого видео при потоковом вещании и использования таких данных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока без какой-либо субдискретизации.

[8] Патент США №9697280 («Патент '280») раскрывает системы и способы для создания массива мобильных медиа-данных на основе нормализованной информации, анализа массива мобильных медиа-данных для определения схемы расчетов и предоставления, по меньшей мере, некоторым участникам из массива мобильных медиа-данных релевантной информации на основе схемы расчетов. Эти системы и способы выполнены с возможностью проведения многопроходного кодирования, где выходы предшествующего кодера последовательно соединены с входами следующего кодера, что обуславливает временную задержку перед тем, как кодированный файл будет доступен для использования. Для уменьшения временной задержки, обусловленной последовательным кодированием с сохранением при этом эквивалентно высокого качества последовательные стадии кодирования могут быть сконфигурированы в конвейере рендеринга таким образом, чтобы выходные данные первого кодера передавались на вход второго кодера с тем расчетом, чтобы кодирование, выполняемое в каждом кодере, было смещено на небольшой промежуток времени, позволяя кодированию по большей части выполняться параллельно. Общая временная задержка может затем аппроксимировать сумму временных задержек каждого кодера из первого введенного блока к первому выведенному блоку. Общая временная задержка может действительно облегчить многопроходное кодирование в реальном масштабе времени. Однако аналогично другим технологиям, описанным в этом разделе, патент '280 не раскрывает методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания и использования таких данных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, которые раскрыты в настоящем изобретении.

[9] Заявка США №20170155910 А1 («Заявка '910») раскрывает системы и способы для разбивки аудиоданных медиа-контента на отдельные контент-файлы без введения граничных артефактов. Заявка '910 раскрывает систему, где кодер сегментирует исходный контент-файл с его разбивкой на небольшие исходные потоки и выполняет двухпроходное кодирование множества копий (например, потоков) по каждому соответствующему необработанному небольшому потоку, например, не дожидаясь окончания телепередачи. Таким образом, веб-сервер может приступить к потоковой передаче небольших потоков через Интернет сразу после того, как система генерирования небольших потоков начнет захват исходного контент-файла. Задержка по времени между прямой передачей, транслируемой издателем, и доступностью контента зависит от вычислительной мощности хост-узлов. Однако в заявке '910 не раскрыты методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, и использования видеоданных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, которые раскрыты в настоящем изобретении.

[10] Патент США №9774848 («Патент '848») раскрывает системы и способы для усовершенствования компонента видеокодера стандарта MPEG с целью повышения, как эффективности, так и качества отображения видео на дисплее. Описанная технология обучает методике сжатия видео за счет адаптивного распределения битов с помощью упреждающей обработки данных. При сжатии MPEG-видео происходит группирование заданного числа видеокадров (15, 30, 60 и т.д.) с формированием группы изображений (GoP). Изображения в GoP кодируются в виде I-, Р- или В-изображений (кадров). Количество битов, распределенных для каждой GoP, устанавливается пропорциональным числу содержащихся в ней кадров. Система выполняет упреждающий просмотр в реальном масштабе времени для сбора статистических данных, что обеспечивает возможность адаптивного распределения битов. В этом патенте также раскрыты способы оценки параметров движения, в которых полезная нагрузка шейдеров модифицированного 3D-конвейера способна обрабатывать множество патчей в случае с шейдерами областей; или множество примитивов, когда число примитивных объектов превышает один, в случае с геометрическими шейдерами; или множество треугольников в случае с пиксельными шейдерами. Движок оценки параметров движения используется компонентами графического процессора для поддержки функций декодирования и обработки видео, которые чувствительны или адаптивны к направлению или величине движения в пределах видеоданных. Однако в патенте '848 не раскрыты методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, и использования видеоданных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, раскрытые в настоящем изобретении. Более того, технология согласно патенту '848 выполняет не более чем вспомогательную функцию, и она не выполняет предварительное кодирование пространственно, как это описано в настоящем изобретении. Таким образом, она не способна воспроизводить эффективное многопроходное кодирование в таком же режиме реального времени, что и настоящее изобретение.

[11] Патент США №9749642 («Патент '642») раскрывает системы и способы, в которых видеокодер определяет точность векторов движения (MV) для единицы видеоизображения из числа множества оценок точности MV, которое включает в себя одну или несколько оценок точности векторов движения дробного отсчета и оценок точности векторов движения целого отсчета. Видеокодер может идентифицировать ряд значений MV с точностью MV дробного отсчета, а затем выбрать для единицы видеоизображения точность MV, исходя по меньшей мере, частично из распространенности значений MV (в пределах множества) с нулевой дробной частью. В альтернативном варианте видеокодер может выполнить анализ зависимости искажений от скорости передачи, причем при анализе зависимости искажений от скорости передачи предпочтение отдается точности MV целого отсчета. Однако, как и в предыдущем случае, в патенте '642 не раскрыты методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, и использования видеоданных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, которые раскрыты в настоящем изобретении.

[12] Европейский патент № ЕР 1820281 В1 («Патент '281») раскрывает системы и способы для двухпроходного кодирования. Описанные способы включают в себя следующие стадии: а) прием изображения; (b) расчет первой степени наполнения буфера кодированного изображения в течение первого времени; (с) оперирование с первой степенью наполнения для возврата второй степени наполнения буфера кодированного изображения в течение второго времени; (d) сохранение изображения в течение определенного промежутка времени; (е) измерение на этом промежутке времени первой степени сложности изображения; (f) оперирование с первой степенью сложности изображения и второй степенью наполнения для возврата предпочтительного желаемого размера изображения; и (g), как следствие стадии d, передача изображения и предпочтительного желаемого размера в многопроцессорный видеокодер, где первое время соответствует самому последнему времени, когда может быть рассчитана точная степень наполнения буфера кодированного изображения, а второе время наступает после первого времени. Однако, как и в предыдущем случае, в патенте '281 не раскрыты методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, и использования видеоданных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, которые раскрыты в настоящем изобретении.

[13] Патент Японии № JP 06121518 B2 («Патент '518») раскрывает системы и способы для кодирования выборочной пространственной части исходного потока видеоданных в качестве отдельного потока видеоданных, причем один из способов включает в себя получение информации об элементе отображения, относящегося к выбранной пространственной части; получение подсказок для кодирования, извлекаемых из дополняющей пространственной части указанного исходного потока видеоданных, которая не относится к выбранной пространственной части; и кодирование выбранной пространственной части с использованием подсказок для кодирования. Однако, как и в предыдущем случае, в патенте '518 не раскрыты методы расчета стоимости кодирования кадров рендерируемого видео в сферах применения потокового вещания, обеспечивающие достаточно малую временную задержку при потоковой передаче видеоданных в реальном масштабе времени в игровых приложениях, и использования таких данных для максимальной развертки кодированного видео в пределах ограничений по скорости передачи битового потока, которые раскрыты в настоящем изобретении.

[14] Заявка США №2006/0230428 («Заявка '428») раскрывает системы и способы в отношении сетевой системы видеоигр, обеспечивающей возможность одновременного участия множества игроков. В заявке '428 описан сервер, способный хранить предварительно кодированные блоки, которые поддаются сжатию и соответствуют подразделам игрового видеокадра. Система также способна генерировать игровой контент с использованием предварительно кодированных блоков в ответ на действия пользователя в ходе игры. Затем этот контент может передаваться пользователю. Как и в предыдущем случае, эта технология не выполняет предварительное кодирование пространственно, как это описано в настоящем документе, и не способна воспроизводить эффективное многопроходное кодирование в режиме реального времени. Более того, в отличие от технологии, раскрытой в заявке '428, настоящее изобретение позволяет системе изменять параметры по всем участкам кадров во временной последовательности (такие как разрешение) во время прогона и обеспечивает достаточно малую временную задержку для потокового вещания в игровых приложениях.

[15] Патент США № 8154553 («Патент '553») раскрывает системы и способы, относящиеся к игровому стрим-серверу с механизмом перехвата команд рендеринга и механизмом опережающего управления, основанному на обработке команд движка рендеринга, на модуле предварительной фильтрации и на визуальном кодере. Технология согласно патенту '553 использует графический API (прикладной программный интерфейс) для извлечения массива данных на уровне объектов, относящихся к визуальной сложности и движению объектов в сцене. Эта информация используется для управления ренедерингом на уровне GPU (графического ускорителя), на уровне фильтрации в препроцессоре видеосигналов и на уровне квантования в видеокодере. Система также вычисляет оценку компенсации движения для каждого макроблока в целевом кодированном кадре в видеокодере. Аналогично другим технологиям, описанным в настоящем документе, система, раскрытая в патенте '553, не выполняет предварительное кодирование во времени или пространстве, как это раскрыто в заявленном изобретении, и не способна воспроизводить эффективное многопроходное кодирование в режиме реального времени, поскольку она, по сути, пропускает кадры, реагируя таким образом на пиковые значения скорости передачи битового потока. Более того, в отличие от технологии, раскрытой в публикации '428, настоящее изобретение позволяет системе обеспечивать достаточно малую временную задержку для потокового вещания в игровых приложениях.

[16] Таим образом, как следует из описания уровня техники, представленного выше, в этой области техники до сих пор существует потребность в усовершенствовании компьютерной технологии предшествующего уровня техники, относящейся к кодированию игровой среды в реальном масштабе времени.

Краткое раскрытие настоящего изобретения

[17] Следовательно, одна из целей заявленного изобретения заключается в том, чтобы предложить системы и способы для поддержания постоянной скорости передачи битового потока за счет выдачи подсказок кодеру. В одном из примеров осуществления настоящего изобретения сервер отслеживает информацию, связанную с изменениями кодирования кадров; рассчитывает границы допуска, скользящее среднее время кадра и краткосрочные тренды в пределах времени кадра; и использует эти расчеты для идентификации пика времени кадра. Затем сервер выдает кодеру подсказки для модулирования уставок качества (параметров качества) развертки кадра пропорционально размеру пика времени кадра.

[18] Другая цель настоящего изобретения состоит в том, чтобы предложить системы и способы для поддержания постоянной скорости передачи битового потока за счет выдачи подсказок кодеру, в которых расчеты границ допуска, скользящего среднего времени кадра и краткосрочных трендов в пределах времени кадра используются для идентификации высокоэнтропийных кадров.

[19] Еще одна из целей настоящего изобретения состоит в том, чтобы предложить системы и способы для поддержания постоянной скорости передачи битового потока за счет выдачи подсказок кодеру, в которых сервер рассчитывает масштабное значение качества для времени кадра за пределами границ допуска и использует этот расчет для идентификации пика времени кадра.

[20] Еще одна из целей настоящего изобретения состоит в том, чтобы предложить системы и способы для кодирования, в которых рендерер фиксирует одно или несколько прохождений в игровой среде, упорядочивает множество кадров из одного или нескольких прохождений игры по множеству ячеек в карте кликов и формирует список упорядоченных кадров. Затем кодер может закодировать один или несколько кадров из списка упорядоченных кадров для расчета среднего размера кодированного кадра для каждой ячейки в карте кликов, и привязать средний размер каждого кодированного кадра к нормализованной уставке качества кодера по каждой ячейке. Затем кодер рассчитывает средние размеры кадров для карты кликов по среднему размеру кодированного кадра для каждой ячейки и использует их во время игры в качестве подсказок для кодирования последовательности видеокадров.

[21] Еще одна из целей настоящего изобретения состоит в том, чтобы предложить системы и способы для кодирования, в которых рендерер фиксирует последовательность видеокадров, состоящую из множества кадров, а кодер кодирует эту последовательность видеокадров в многопроходном режиме, оптимизируя уставки качества кодера по первому кадру последовательности видеокадров. Затем кодер может зафиксировать уставку качества кодера. После этого рендерер может нормализовать уставки качества кодера, приведя их к первому кадру последовательности видеокадров и использовать их для выдачи кодеру подсказок по кодированию последовательности видеокадров во время воспроизведения.

[22] Еще одна из целей настоящего изобретения состоит в том, чтобы предложить системы и способы для кодирования, в которых один или несколько кадров кодируются в один проход.

[23] А еще одна из целей настоящего изобретения состоит в том, чтобы предложить системы и способы для кодирования, в которых данные, извлеченный из одного или нескольких прохождений игры, включают в себя множество кадров и местоположение игрока в привязке к каждому кадру.

Краткое описание фигур

[24] В полной мере оценить настоящее изобретение и многие его сопутствующие преимущества можно без труда, если глубже вникнуть в них, ознакомившись с последующим подробным описанием, которое рассматривается в привязке к прилагаемым чертежам, где:

[25] На фиг. 1 представлена схема, иллюстрирующая один из примеров осуществления среды, в которой рендерируемое в реальном масштабе времени видео транслируется потоком удаленному зрителю;

[26] На фиг. 2 представлена блок-схема алгоритма, иллюстрирующая стадии выдачи подсказок кодеру на основании оценки нагрузки;

[27] На фиг. 3 показана схема одного из примеров осуществления, где детектируются максимумы и минимумы времени кадров, а затем уставки кодера изменяются соответствующим образом;

[28] На фиг. 4 представлена иллюстративная блок-схема алгоритма, раскрывающая использование предварительно сгенерированных уставок качества кодера во время прогона активного рендерера;

[29] На фиг. 5 представлена иллюстративная блок-схема алгоритма, раскрывающая стадии предварительного генерирования уставок качества кодера для рендерируемой в реальном масштабе времени последовательности согласно одному из вариантов осуществления настоящего изобретения;

[30] На фиг. 6 представлена схема данных, сгенерированных во время иллюстративной предварительной генерации уставок качества кодера для видеовставки заданной длины внутри движка в реальном масштабе времени согласно одному из вариантов осуществления настоящего изобретения;

[31] На фиг. 7 показана схема, иллюстрирующая один из примеров предварительного генерирования уставок качества кодера для пространственно соотносимой последовательности согласно одному из вариантов осуществления настоящего изобретения; и

[32] На фиг. 8 приведен пример карты кликов, из которой могут быть извлечены нормализованные уставки качества кодера согласно одному из вариантов осуществления настоящего изобретения.

Подробное раскрытие предпочтительных вариантов осуществления настоящего изобретения

[33] При описании предпочтительных вариантов осуществления настоящего изобретения, проиллюстрированных на чертежах, во избежание двусмысленного толкования используется особая терминология. Однако предполагается, что настоящее изобретение не ограничено выбранными конкретными терминами, причем следует понимать, что каждый конкретный термин включает в себя все технические эквиваленты, которые действуют аналогичным образом для достижения аналогичной цели. Некоторые предпочтительные варианты осуществления настоящего изобретения описаны исключительно в иллюстративных целях, причем следует понимать, что заявленное изобретение может быть реализовано в иных формах, специально не показанных на чертежах.

[34] Обычно в ходе видеоигры, передаваемой потоком в реальном масштабе времени со скоростью 60 кадров в секунду, кодер рассчитывает векторы движения и остатки. Когда видеокадр существенно отличается от предыдущего кадра, что обусловлено новой видеоинформацией, рассчитываемые кодером остатки могут превышать норму, вызывая всплеск сетевого трафика. Кодер адаптирует свои кодирующие уставки во время потокового вещания, реагируя на такие факторы, как всплески скорости передачи битового потока, но корректировать уставки он может лишь в качестве ответной меры.

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

[36] На фиг. 1 представлена схема, иллюстрирующая один из примеров осуществления среды, в которой рендерируемое в реальном масштабе времени видео транслируется потоком для удаленного зрителя. Сервер 100 может состоять из любых аппаратных средств, выполненных с возможностью одновременного выполнения процесса 102 рендеринга в реальном масштабе времени (также именуемых в настоящем документе рендерером), и потокового кодека 104 (также именуемого в настоящем документе кодером). Сервер 100 может включать в себя одно или несколько аппаратных устройств, включая один или несколько серверов 105 телеметрии, которые выполняют телеметрические измерения, что будет описано ниже. Сервер 100 и сервер 105 телеметрии могут располагаться локально или удаленно относительно места выполнения процесса 102 рендеринга или кодека 104. Кодек 104 может быть также выполнен с возможностью передачи уставок качества кодера обратно в процесс 102 рендеринга с использованием процесса прямой передачи отчетов или иного процесса отслеживания, известного в данной области техники. Поток кодированных видеоданных передается по сети на клиентское устройство 106. Клиент 106 может включать в себя любые аппаратные средства, выполненные с возможностью декодирования и отображения потока видеоданных.

[37] На фиг. 2 представлена блок-схема алгоритма, иллюстрирующая стадии выдачи подсказок кодеру на основании оценки нагрузки. Когда рендерер генерирует видео, процесс рендеринга или какой-либо иной процесс на стороне сервера должен отслеживать информацию, которая могла бы изменить необходимый способ кодирования кадра, что осуществляется на стадии 200 «Отслеживание события». Эта информация может включать в себя такие сведения, как количество вызовов отрисовки, направленных рендереру во время этого кадра; попытку вычисления размера кодированных остатков на основании количества пикселей, появляющихся впервые в кадре; или какие-либо иные данные, которые пытаются соотнести характеристики рендеринга с производительностью кодера. Отслеживаемая информация может включать в себя любое сообщение, рассчитанный результат, конечный показатель или иное дискретно измеряемое значение, которое появляется во время выполнения процесса рендеринга. Когда считанная информация указывает на то, что размер кодированного кадра будет существенно отличаться от размера предыдущего кодированного кадра, эта информация называется событием.

[38] Событие может возникнуть в рендерере, как это показано на фиг. 3, где в одном из примеров реализации отслеживания для выявления пиков в процессе рендеринга осуществляется мониторинг времени рендеринга каждого кадра с целью выявления необычно длительного или необычно короткого времени кадра. В этом случае необычное время рендеринга кадра считается событием.

[39] При получении рендерером какого-либо события может потребоваться проведение рендерером некоторых дополнительных вычислений для генерирования уставок качества кодера с целью выдачи подсказок кодеру, что осуществляется на стадии 202 «Подготовка уставок качества кодера для текущего кадра». Эти вычисления могут включать в себя модифицирование информации, измеренной во время отслеживания событий на предыдущих стадиях. Эти вычисления могут также включать в себя модифицирование уставки качества кодера при прогоне, которые передаются кодером на рендерер по каждому кадру, и доступность которых должна быть обеспечена по мере необходимости, что осуществляется на стадии 204 «Передача уставок кодера для каждого кодированного кадра». Сгенерированные уставки качества кодера передаются из рендерера на кодер на стадии 206 «Выдача кодеру подсказок с подготовленными уставками кодера». Рендерер продолжит отслеживание событий по последующим кадрам.

[40] В примере, приведенном на фиг. 3, когда рендеринг кадра отнимает необычно много времени, рендерер выдаст кодеру подсказку об уменьшении уставки качества пропорционально размеру пика времени этого кадра. Для подготовки значения уставки качества кодера рендерер может использовать измеренное время текущего кадра, измеренное время ряда предыдущих кадров и рабочие уставки качества кодера, переданные кодером. Эти вычисления подробнее описаны в привязке к фиг. 3.

[41] Доступ к информации о кадрах, которая может быть использована для выдачи подсказок по уставкам кодера, могут также иметь и другие процессы, выполняемые на сервере. Например, игровой движок, содержащий рендерер, может использовать измеренное влияние визуальных эффектов, инициированных игрой, на полосу пропускания кодированного видеосигнала с тем, чтобы уменьшить уставку качества кодера. Для сбора информации по дополнительным издержкам на кодирование заданного визуального эффекта разработчику может потребоваться наложение этого эффекта и измерение увеличения скорости передачи битового потока во время кодирования при различных уставках качества кодера. Результаты измерений могут быть использованы для выбора качества, при котором размер кодированного кадра, содержащего визуальный эффект, примерно соответствует размеру предыдущего кодированного кадра без визуального эффекта. Разница между уставкой качества, выбранной для визуального эффекта, и уставкой качества по умолчанию называется дельтой уставок. Кодеру может быть выдана подсказка о необходимости использования выбранного качества или снижения текущего качества в зависимости от измеренной дельты уставок. Результаты должны быть сохранены в формате, который может без труда преобразовать событие наложения визуального эффекта в соответствующую подсказку кодеру, такую как таблица подстановки или индексный массив иного типа.

[42] На фиг. 3 представлен один из примеров осуществления, где детектируются максимумы и минимумы времени кадров с соответствующим последующим изменением уставок кодера. Этот пример использует корреляцию между временем рендеринга и энтропией изображения для оценки влияния эффекта на скорость передачи битового потока видеоданных. Если кадр содержит большой объем новой визуальной информации, т.е. дополнительные элементы, которые вносятся в кадр в первый раз, то скорее всего на рендеринг этого кадра потребуется больше времени в сравнении с предыдущими кадрами. Например, если рендеринг кадра осуществляется примерно с таким же временем кадра, что и предыдущий кадр, то скорее всего среда существенно не изменилась. Эта неявная корреляция особенно четко проявляется в игре/движке от первого лица. Если время кадра при рендеринге неожиданно увеличивается, это значит, что в среду было добавлено нечто новое. Кодер также попытается справиться с любой новой видеоинформацией, такой как неожиданные взрывные эффекты на весь экран или неожиданные новые геометрические формы на экране. Аналогичным образом большой объем новой информации в кадре увеличит размер остатков, рассчитанный кодером. Следовательно, отслеживание пиков при рендеринге времени может идентифицировать кадры, которые с большой долей вероятности содержат высокоэнтропийные изображения, еще до того, как они могут вызвать всплеск в скорости передачи битового потока видеоданных.

[43] При обработке сигналов и статистическом анализе применяется скользящее среднее, которое используется для идентификации кратковременных выбросов с учетом долгосрочных трендов. Скользящее среднее рассчитывается путем нахождения среднего арифметического для определенного числа предыдущих точек данных; при этом массив предыдущих точек данных, используемый для расчета скользящего среднего, называется скользящим окном. В случае рендеринга в реальном масштабе времени идентификация значений времени кадра, которые отклоняются от скользящего среднего времени кадра, может быть использована для идентификации высокоэнтропийных кадров. Скользящее среднее время 300 кадра в этом примере представляет собой среднее время кадра для предыдущего скользящего окна. Иначе говоря, значения времени кадра суммируется для каждого кадра в скользящем окне, после чего полученная сумма делится на количество кадров в скользящем окне. Размеры скользящего окна могут быть скорректированы с учетом типичной частоты долгосрочных трендов времени кадра, замеряемой во время профилирования прогона с целью проверки типичных трендов данных. В примере скользящего окна с десятью кадрами среднее время кадра будет рассчитано, исходя из предыдущих десяти значений времени кадра. Если скользящее окно слишком мало, то в качестве побочного эффекта, возникающего при использовании любого фильтра «размытие границ», могут наблюдаться лишние ложноположительные срабатывания при выявлении пиков. При этом кадр может быть классифицирован как «крайне занятый», тогда как в действительности более длительное время кадра объясняется определенной долговременной моделью поведения, которая часто возникает в рендерере. Скользящее среднее время 300 кадра сопровождается верхней границей 302 допуска и нижней границей 304 допуска. Допуск может быть скорректирован для идентификации типичных кратковременных трендов времени кадра. Для рендерера, работающего в реальном масштабе времени с частотой 60 кадров в секунду, может оказаться достаточным допуск ±1 мс или около 6,25%. Значения времени кадра могут варьироваться в пределах допуска скользящего среднего времени кадра, не инициируя выдачу подсказок кодеру. Определение подходящего размера окна и значений допуска может потребовать определенного профилирования прогона с целью выявления типичных трендов во времени кадра. Например, игра, в которой кадры меняются с частотой 100 кадров в секунду, может обновлять тени только через кадр, обуславливая обычное дрожание изображения длительностью 1 мс, что требует допуска свыше 10%. В то же время игра может без проблем выполняться с частотой 30 кадров в секунду при высокой стабильности времени кадров в 33 мс, причем на наиболее требовательные визуальные эффекты затрачивается всего 0,5 мс, и поэтому допуск может составлять всего 1,5%.

[44] Время текущего кадра сравнивается со скользящим средним временем кадра. Если время текущего кадра выходит за границы допуска, то на кодере осуществляется коррекция качества. Границы допуска могут быть рассчитаны путем измерения значений времени кадра с использованием процесса, называемого профилированием, с целью проверки типовых изменений во времени кадра между соседними или близкими кадрами (кратковременные тренды) и изменений во времени кадра по определенным окнами (таким как периодически повторяющиеся шаблоны или долговременные тренды). Затем размер скользящего окна и допуск могут корректироваться до тех пор, пока выдача подсказок кодеру не будет инициироваться только в моменты высокой энтропии/занятости, но не в те моменты, когда игрок перемещается и исследует игровое окружение. Если время кадра превышает верхнюю границу 302 допуска, как в приведенном примере 306 «Кадр 2», то качество кодирования будет уменьшено. Если время кадра меньше нижней границы 304 допуска, как в приведенном примере 308 «Кадр 5», то качество кодера будет повышено. В некоторых вариантах осуществления настоящего изобретения качество кодирования может повышаться обратно до полного объема всякий раз, когда время кадра падает ниже уровня допуска. В зависимости от конкретного варианта осуществления система может также выбрать более медленный вариант обратного масштабирования качества с использованием метода масштабирования, аналогичного тому, который используется для снижения качества.

[45] Один из примеров осуществления способа выдачи подсказок может масштабировать качество в пределах между верхней уставкой качества 310 и нижней уставкой 312 качества. Например, верхней границей могут служить уставки качества по умолчанию, а нижняя граница может составлять определенную процентную долю например, 50% от качества по умолчанию. Если максимум времени кадра превышает уровень допуска, то уставки качества могут быть линейно масштабированы в пределах между верхней границей и нижней границей, исходя из того, насколько максимум времени кадра превышает уровень допуска. Если время кадра опускается ниже уровня допуска, то уставки качества могут вернуться к значению верхней границы.

[46] Для расчета масштабного значения качества для времени кадра, выходящего за пределами допуска, время кадра сначала должно быть нормализовано по отношению к скользящему среднему времени кадра, как это представлено для примера в приведенном ниже уравнении (1).

Вычитание единицы из нормализованного времени дает отклонение кадра от скользящего среднего времени кадра. Деление этого отклонения на допуск с последующим вычитанием единицы дает масштабное значение. Это масштабное значение должно быть зафиксировано таким образом, чтобы оно оставалось в пределах между 0 и 1; все отрицательные масштабные значения должны быть зафиксированы на нуле; а все значения свыше 1 должны быть зафиксированы на 1, как это представлено для примера в приведенном ниже уравнении (2).

[47] Зафиксированное масштабное значение может быть использовано для интерполяции между верхней уставкой качества и нижней уставкой качества. Зафиксированное масштабное значение, равное нулю, отображает верхнюю границу качества, а зафиксированное масштабное значение, равное единице, отображает нижнюю границу качества, как это представлено для примера в приведенном ниже уравнении (3).

[48] Если «Кадр 2» 306 в этом примере занимает 16 мс, когда скользящее среднее составляет 15 мс, то результирующее зафиксированное масштабное значение будет равно 0,025 или составит 2,5%. Если верхним граничным значением качества служат уставки качества по умолчанию, а нижняя граница составляет 50% от уставки качества по умолчанию, то приведенная к масштабу уставка качества для этого кадра составит 98,75% от уставки качества по умолчанию.

[49] Если «Кадр 5» 308 занимает 14,25 мс, когда скользящее среднее составляет 15,25 мс, то время кадра будет ниже уровня допуска, и масштабное значение будет зафиксировано на нуле. Приведенная к масштабу уставка качества станет равной верхним уставкам качества.

[50] Множество способов выдачи подсказок кодеру может быть многоуровневым за счет объединения подготовленных уставок качества кодера, что осуществляется на подготовительной стадии 400, показанной на фиг. 4, перед передачей на кодер агрегированного значения уставок качества кодера для выдачи подсказок, что проиллюстрировано на стадии 406, показанной на фиг. 4. В одном из вариантов осуществления настоящего изобретения может быть установлено среднее арифметическое подготовленных уставок качества кодера с целью генерирования отдельного значения, в равной мере объединяющего пропорциональные доли, вносимые всеми источниками. В другом варианте осуществления настоящего изобретения может быть рассчитано взвешенное среднее арифметическое путем приписывания каждому источнику определенного весового значения, которое может обеспечить значение уставок качества кодера для выдачи подсказок кодеру. Приписанные весовые значения могут быть использованы для более строго оценивания одного содействующего источника относительно другого. Например, пропорциональные доли, вносимые событием в виде пика времени кадра, могут характеризоваться более сильной корреляцией по изменениям кодированной скорости передачи битового потока в сравнении с пропорциональными долями, вносимыми событием в виде одиночного визуального эффекта, и поэтому может оказаться целесообразным более высоко оценивать пропорциональные доли, вносимые событием в виде пика времени кадра. Взвешенное среднее арифметическое может быть рассчитано с использованием стандартного определения, как это представлено для примера в приведенном ниже уравнении (4), где i=1 обозначает первое число в наборе из n-ого количества уставок качества. Следует отметить, что индексы в математических множествах начинаются с единицы, отличаясь от индексов программирования, которые начинаются с нуля.

[51] На фиг. 4 представлена иллюстративная блок-схема алгоритма, раскрывающая использование предварительно сгенерированных уставок качества кодера во время прогона активного рендерера. Рендерер должен отслеживать последовательности, которые содержат набор предварительно сгенерированных уставок качества кодера, что осуществляется на стадии 400 «Отслеживание игровых последовательностей». Эти последовательности могут включать в себя прогнозируемые во времени последовательности кадров, такие как кат-сцены реального времени внутри движка, или прогнозируемые во времени или пространстве последовательности, которые могут быть преобразованы во временные ряды во время прогона, когда известно местоположение игрока. Прогнозируемые во времени последовательности представляют собой последовательности кадров, в которых каждый кадр находится в определенной известной взаимосвязи с соседним кадром. Иначе говоря, последовательность кадров является прогнозируемой во времени, если она характеризуется постоянной длиной и устойчивым порядком, а любые два соседних кадра характеризуются устойчивой взаимосвязью по данным об элементе изображения и данным о движении. Пространственно прогнозируемые последовательности предусматривают определенную взаимосвязь между двумя соседними виртуальными местоположениями, которая может быть использована для того, чтобы делать выводы в отношении временной последовательности, которая формируется при прохождении через виртуальное пространство во время прогона рендерера. Иначе говоря, два местоположения в виртуальном пространстве соотносятся в пространственном отношении, если они создают прогнозируемую во времени последовательность, когда виртуальная камера перемещается между двумя виртуальными местоположениями. Например, в видеоигре два соседних местоположения соотносятся во времени, если перемещение между двумя местоположениями создает видеоизображение, в котором данные об элементе изображения и данные о движении являются отчасти взаимоувязанными. Как правило, это характерно для большинства 3D-уровней в видеоиграх, поскольку среда и фон, окружающие игрока, обычно рендерируются в фиксированных точках по мере прохождения игроком этого уровня.

[52] Предварительное генерирование уставок качества кодера подробнее описано в привязке к фиг. 5. Предварительно сгенерированные уставки качества кодера сохраняются на диск сервера в формате, который может считываться во время прогона, например, в виде таблицы подстановки или карты кликов. После выявления начала последовательности выполняется считывание и подготовка предварительно сгенерированных уставок качества кодера для выявленной игровой последовательности, что осуществляется на стадии 602 «Нахождение предварительно сгенерированных уставок кодера для игровой последовательности». Подготовка уставок качества кодера может потребоваться, если перед сохранением они были нормализованы. Подготовка может включать в себя умножение нормализованных уставок качества кодера на рабочую уставку качества кодера, целевую уставку качества кодера или уставку качества кодера, полученную из какого-либо иного источника. В некоторых вариантах осуществления настоящего изобретения детектирование события может проводиться для предварительно сгенерированных уставок качества кодера каждой последовательности. В других вариантах осуществления настоящего изобретения предусмотрено проведение проверки во время прогона, когда каждая кат-сцена начинает определять, входит ли она в список последовательностей, для которых предусмотрены уставки. Если перед сохранением предварительно сгенерированных уставок качества кодера они были нормализованы, то будет выполнена стадия умножения с целью подготовки уставок качества кодера. В примере, раскрытом в привязке к фиг. 6, уставки качества кодера генерируются для кадров в кат-сцене реального времени внутри движка и приводятся к первому кадру последовательности. Для нормализованного временного ряда, такого как этот, уставки качества кодера должны быть подготовлены путем умножения нормализованных значений на рабочую уставку качества кодера для первого кадра в последовательности. Уставки качества кодера сообщаются кодером по каждому кадру, а их доступность должна быть обеспечена по мере необходимости, что осуществляется на стадии 604 «Передача уставок кодера для каждого кодированного кадра». В примере, раскрытом в привязке к фиг. 7, уставки качества кодера генерируются для каждого местоположения на карте и приводятся к средней уставке качества кодера по всей карте. Для нормализованного пространственного ряда, такого как этот, уставки качества кодера потребуют подготовки путем умножения нормализованных значений на рабочую уставку качества кодера для первого кадра в последовательности.

[53] Уставки качества кодера будут переданы на кодер по каждому кадру в последовательности на стадии 606 «Выдача кодеру подсказок с предварительно сгенерированными уставками кодера». Кодер использует уставки качества кодера, переданные рендерером, для кодирования следующего кадра. Рендерер продолжит подготовку предварительно сгенерированных уставок качества кодера и выдачу кодеру подсказок по каждому кадру до тех пор, пока последовательность не будет завершена. По завершении последовательности рендерер продолжит отслеживание, перейдя к следующей последовательности. В примере с кат-сценой реального времени внутри движка, который описан в привязке к фиг. 6, кодеру будут выдаваться подсказки для каждого кадра до тех пор, пока кат-сцена не будет завершена. В примере реализации способа с использованием карты кликов, который описан в привязке к фиг. 5, кодеру будут выдаваться подсказки на протяжении всего того времени, когда игрок находится в границах области, заданной картой кликов.

[54] На фиг. 5 представлена блок-схема алгоритма, иллюстрирующая стадии предварительного генерирования уставок качества кодера для рендерируемой в реальном масштабе времени последовательности. Уставки качества кодера могут быть предварительно сгенерированы для любой последовательности, которая содержит прогнозируемый и измеряемый временной или пространственный компонент. Последовательность может содержать непрогнозируемые отрезки, такие как кат-сцена реального времени внутри движка, которая будет отрисовывать броню, носимую в данное время персонажем игры, или кат-сцена реальной сложности, которая позволяет игроку перемещаться или оглядываться во время воспроизведения событий. Последовательность, содержащая непрогнозируемые отрезки, должна быть идентифицирована путем поиска взаимосвязей между соседними кадрами в последовательностях временного ряда, таких как кат-сцены реального времени внутри движка, или взаимосвязей между соседними местоположениями в виртуальном пространстве, которые будут использованы во время прогона для создания последовательностей кадров, таких как проходимые участки в уровнях видеоигры. Одна такая последовательность должна быть идентифицирована на стадии 500 «Выбор последовательности».

[55] Уставки качества кодера для определенной последовательности должны генерироваться в кодере с целью поддержания постоянной скорости передачи битового потока, что осуществляется на стадии 502 «Генерирование уставок кодера для последовательности». Уставки качества кодера для кат-сцены реального времени внутри движка могут быть рассчитаны путем записи видео кат-сцены и кодирования этого видео в режиме многопроходного кодирования. Многопроходное кодирование закодирует первый кадр и использует размер кодированного первого кадра для наложения ограничения на все последующие кадры. По мере кодирования каждого из последующих кадров их кодированные размеры сравниваются с кодированным размером первого кадра, и уставки качества для текущего кадра корректируются до тех пор, пока кодированные размеры кадров не приблизятся друг к другу. В некоторых вариантах осуществления настоящего изобретения последовательность кадров может кодироваться в режиме многопроходного кодирования с фиксированным числом проходов. В других вариантах осуществления настоящего изобретения эта последовательность может последовательно прогоняться в режиме многопроходного кодирования множество раз до тех пор, пока покадровые размеры не установятся на определенном значении и не будут изменяться в промежутке между последним проходом кодирования и предпоследним проходом кодирования. Уставки качества кодера могут фиксироваться по мере их генерирования или извлечения из результирующей кодированной видеоинформации. Сгенерированные уставки качества кодера будут использованы во время прогона для уравновешивания полосы пропускания на протяжении заданной последовательности во избежание резкого увеличения или спада скорости передачи битового потока. В отличие от предварительного кодирования видео предварительно отрендеренной кат-сцены и его сохранения для воспроизведения, генерирование уставок качества кодера описанным способом позволит включить в кат-сцены реального времени внутри движка контент на основе контекста, такой как выбираемая на усмотрение игрока броня, оружие или иные косметические элементы, с сохранением при этом преимуществ уравновешивания полосы пропускания, которое обеспечивается предварительно сгенерированными уставками качества.

[56] Аналогичный процесс может быть повторен множество раз с целью генерирования уставок кодера для пространственно соотносимой последовательности. Этот процесс подробнее описан на примере потока данных, раскрытого в привязке к фиг. 7.

[57] Для кат-сцен реального времени внутри движка уставки качества кодера для каждого кадра должны быть нормализованы путем из деления на значение уставки качества кодера для первого кадра в последовательности. Это позволяет динамическим элементам последовательности, таким как броня игрока или косметические элементы, быть представленными в окончательных уставках качества кодера, подготовленных во время прогона. Для пространственно соотносимых последовательностей, которые сохраняются в карте кликов, каждая уставка качества кодера должна быть нормализована с ее приведением к средней уставке качества кодера по всей области, заданной картой кликов, путем деления каждой уставки качества кодера на среднюю в масштабе всей карты уставку качества кодера. Пример карты кликов приведен на фиг. 8. Нормализованные значения кодера, сгенерированные в процессе рендеринга, должны быть сведены в соответствующий считываемый во время прогона формат, такой как список уставок качества кодера для каждого кадра во временном ряду или карта кликов, которая задает уставку качества кодера для каждого местоположения в карте, и сохранены на стадии 504 «Нормализация и сохранение уставок качества кодера для каждого кадра в последовательности».

[58] На фиг. 6 показано, как генерируются данные во время иллюстративной предварительной генерации уставок качества кодера для кат-сцены заданной длины в реальном масштабе времени внутри движка. Кат-сцены реального времени внутри движка, в отличие от предварительно отрендеренных кат-сцен, генерируются во время прогона с использованием того же движка рендеринга, что используется для получения остальных рендерируемых в реальном масштабе времени выходных видеоданных. Кат-сцена реального времени внутри движка может также включать в себя контекстную информацию о состоянии игры, например, о носимых игроком косметических элементах, неигровых персонажах в группе игрока или об ином состоянии игры, которое управляется по желанию игрока. Хотя кат-сцены реального времени внутри движка традиционно характеризуются более низким качеством в сравнении с предварительно отрендеренными кат-сценами, они получают все более широкое распространение по мере того, как рендерируемая в реальном масштабе времени точность имитации визуальной обстановки приближается к предварительно отрендеренной точности имитации визуальной обстановки. Кат-сцены реального времени внутри движка также широко используются в тех случаях, когда несколько опций, таких как варианты выбора языка, варианты выбора разрешения и варианты выбора индивидуализации персонажа, могли бы повлиять на выходные видеоданные кат-сцены с тем, чтобы не было необходимости включать в игровой диск множество версий предварительно отрендеренной кат-сцены.

[59] В этом примере выбрана кат-сцена реального времени внутри движка длиной в 480 кадров и продолжительностью около 8 секунд для игры, выполняемой с частотой 60 кадров в секунду. Эта кат-сцена будет воспроизводить одну и ту же серию событий для всех игроков. Видео кат-сцены записывается в рендерере, формируя серию из 480 кадров в записанной последовательности 600. Записанная последовательность 600 кодируется в режиме многопроходного кодирования. При кодировании каждого кадра в записанной последовательности процесс многопроходного кодирования будет изменять уставки качества кодера с тем, что размер кодированного кадра приближался к кодированному размеру первого кадра. Первый кадр в последовательности используется в качестве эталона размера кадра, обеспечивая устойчивую скорость передачи битового потока по всей кодированной последовательности.

[60] Уставки 602 качества многопроходного кодера или записываются в процессе кодирования в кодере, или извлекаются из кодированных результатов, сгенерированных кодером. Уставки качества кодера представляют собой упорядоченный список чисел с плавающей точкой. При 4 байтах в расчете на число с плавающей точкой, весь упорядоченный список из 480 чисел с плавающей точкой использует всего 1920 байт данных. Малый размер файла позволяет активному рендереру сохранять в памяти множество наборов предварительно сгенерированных уставок кодера во время прогона, и может дать благоприятный результат выполнения процесса, описанного в настоящем документе, для каждой игровой последовательности, не упираясь в ограничения памяти.

[61] В рендерере уставки качества кодера нормализуются с их приведением к первому кадру, как это представлено для примера в приведенном ниже уравнении (5).

Нормализованные уставки 604 качества кодера сохраняются в виде упорядоченного списка чисел с плавающей точкой, предпочтительно в кодере.

[62] Упорядоченный список нормализованных уставок 604 качества считывается в начале воспроизведения кат-сцены во время прогона. Нормализованные уставки качества умножаются на рабочую уставку качества кодера для первого кадра в последовательности в соответствии с данными кодера, переданными в движок рендеринга, а затем используются для выдачи подсказок кодеру по каждому последующему кадру в кат-сцене. В некоторых вариантах осуществления настоящего изобретения библиотека ffmpeg, совместимая со стандартом Н.264, которая прогоняется в режиме CRF (постоянное значение оценки как метод однопроходного сжатия видео), примет переопределенное значение параметра квантизации на командной строке с использованием -crf переключателя.

[63] Нормализация уставок качества кодера позволяет использовать предварительно сгенерированные уставки качества кодера во время воспроизведения кат-сцены во время прогона в самых разных контекстах. Например, умножение нормализованных уставок 604 кодера на рабочую уставку качества кодера, переданную кодером для первого кадра в последовательности, дает устойчивую скорость передачи битового потока для всей кат-сцены вне зависимости от того, какую броню для ношения выбрал игрок. Аналогичным образом этот способ учитывает разные уставки рендеринга, такие как разрешение экрана, при которых может воспроизводиться кат-сцена реального времени внутри движка.

[64] На фиг. 7 показана схема, иллюстрирующая один из примеров предварительного генерирования уставок качества кодера для пространственно соотносимой последовательности, такой как последовательность, генерируемая во время прогона, когда игрок проходит виртуальное пространство в видеоигре. Положение игрока в видеоигре может, в общем, коррелировать с энтропией изображения выдаваемого видео, поскольку взгляд игрока имеет непропорционально большое влияние на скорость передачи битового потока кодированного видео. Эта корреляция лучше всего видна, если сравнить скорость передачи битового потока кодированного видео между видеоизображениями, захваченными в открытых зонах, и видеоизображениями, захваченными в ограниченных зонах. Открытые зоны, такие как участки на открытом пространстве, дают видео с более высокой средней скоростью передачи битового потока, тогда как ограниченные зоны, такие как коридоры, дают видео с более низкой средней скоростью передачи битового потока. Такое соотношение имеет место потому, что открытые зоны чаще всего представляют собой неоднородные обширные пространства с множеством конкурирующих движений, например, вследствие оживления окружающей среды через растительность, тогда как зоны внутри помещений по большей части состоят из статических геометрических объектов архитектуры, которые создают связанные векторы движения и меньше остатков.

[65] Карта может быть сегментирована сеткой, и для каждой ячейки в этой карте может быть предварительно сгенерирована уставка качества кодера с формированием карты кликов, показанной на фиг. 5, для нормализованных уставок качества кодера. Типичная скорость передачи битового потока для данного местоположения игрока может быть зафиксирована или с использованием множества реальных прохождений игры или через процедурно-генерируемые прохождения игры. Поскольку реальные игроки непредсказуемы, часто невозможно процедурно сгенерировать прохождения игры, точно фиксирующие пути, по которым игроки будут проходить виртуальное пространство. Процедурное прохождение игры может быть сгенерировано для любого предполагаемого пути прохождения с целью быстрого покрытия всей карты, но при этом могут быть пропущены некоторые возможные пути прохождения, которые могут быть обнаружены реальными игроками. Каждый подход имеет свои недостатки: отслеживание телеметрии в реальном масштабе времени занимает слишком много времени, а процедурно-генерируемые данные могут неточно отражать процесс реальной игры. В некоторых вариантах осуществления настоящего изобретения для обеспечения более точной карты кликов может быть использовано сочетание обеих записей.

[66] Записанное видео должно не только содержать видеокадры, как в записанной последовательности 600, показанной на фиг. 6, но также и устанавливать местоположение игрока для каждого кадра. Местоположение игрока может находиться в 3D-пространстве, или же оно может быть упрощено до 2D-плоскости, отображаемой в виде нисходящей карты. В примере осуществления способа, который описан в привязке к фиг. 7, представлены части двух примеров зафиксированного прохождения игры, а именно первого прохождения игры, обозначенного позицией «Первое зафиксированное прохождение игры» на стадии 700, и второго прохождения игры, обозначенного позицией «Второе зафиксированное прохождение игры» на стадии 702. Видеокадры захватываются вместе с местоположениями игрока. Каждый видеокадр в захваченном видео прохождения игры отсортировывается по местоположению в соответствующую ячейку. В этом примере кадр 4 из первого зафиксированного прохождения игры показан на стадии 700 «Первое зафиксированное прохождение игры», а второй кадр 2 из второго зафиксированного прохождения игры показан на стадии 702 «Второе зафиксированное прохождение игры». На стадии 704 «Карта кликов» они оба отсортировываются в ячейку В6 на стадии 706 «Ячейка В6». Поскольку пример осуществления этой ячейки является довольно большим, то иллюстративная карта кликов, показанная на фиг. 8, отображает карту кликов с намного более мелкими ячейками для увеличения разрешения.

[67] Как процедурно-генерируемые, так и реальные прохождения игры, могут генерироваться и фиксироваться в рендерере. Результирующие записи прохождений игры могут собираться в централизованном месте сбора в рендерере. По мере сбора множества прохождений игры каждая ячейка в карте кликов может включать в себя множество кадров, записываемых в одном месте в пределах ячейки. На этапе разработки для сбора этих данных может быть использован сервер 105 телеметрии. После этого движок рендеринга/игровой движок может генерировать телеметрию и передавать ее в централизованное место сбора. Сервер 105 телеметрии может располагаться локально или удаленно относительно рендерера. Генерируемая телеметрия может также собираться вручную путем ручного сбора создаваемых файлов телеметрии, получаемых из локальной рендер-машины, и передаваться в централизованное хранилище. Пример, приведенный на фиг. 7, показывает начало списка кадров, относящихся к ячейке В6, обозначенного как «Кадры ячейки В6» на стадии 708. Этот список пространственно-соотносимых кадров будет расти по мере сбора или генерирования все большего числа записей о прохождениях игры.

[68] Собранная совокупность кадров, относящихся к определенной ячейке, может кодироваться с использованием режима однопроходного кодирования, используемого во время передачи потокового видео с целевой уставкой качества кодера, что осуществляется на стадии 710 «Кодирование заданного качества». Размер кодированного кадра будет сгенерирован для каждого кадра, относящегося к ячейке. Пример, приведенный на фиг. 7, показывает начало списка размеров кодированных кадров, относящихся к ячейке В6, обозначенного как «Размер кодированных кадров в ячейке В6» на стадии 712. Эти размеры кодированных кадров могут быть усреднены с целью нахождения среднего размера кодированного кадра в ячейке. Пример, приведенный на фиг. 7, показывает средний размер кодированного кадра в отношении ячейки В6, обозначенный как «Средний размер кодированного кадра для ячейки В6» на стадии 714. Этот процесс должен быть повторен для всех ячеек в карте кликов с целью нахождения среднего размера кодированного кадра для каждой ячейки. Средние размеры кодированных кадров представлены для ячейки В6 с определением «Средний размер кодированного кадра для ячейки В6» на стадии 714 и для ячейки В7 с определением «Средний размер кодированного кадра для ячейки В7» на стадии 714, отображая список усредненных размеров кодированных кадров для всех ячеек в карте кликов.

[69] Все средние размеры кодированного кадра для каждой ячейки должны быть усреднены для нахождения среднего размера кадра для всей карты, что осуществляется на стадии 718 «Средний размер кодированного кадра для всех ячеек». Этот средний размер кодированного кадра для всей карты может быть использован в качестве целевой полосы пропускания. Ячейки со средними размерами кодированного кадра, превышающими среднее значение для всей карты, будут повторно кодироваться с уменьшенной уставкой качества кодера до тех пор, пока средний размер кадра в ячейках почти не сравняется со средним значением для всей карты. Аналогичным образом ячейки со средними размерами кодированного кадра, которые меньше среднего значения для всей карты, будут повторно кодироваться с увеличенной уставкой качества кодера до тех пор, пока средний размер кадра в ячейках почти не сравняется со средним значением для всей карты. В некоторых вариантах осуществления настоящего изобретения последовательность кадров для заданной ячейки может кодироваться в режиме многопроходного кодирования с фиксированным числом проходов. В других вариантах осуществления настоящего изобретения эта последовательность может последовательно прогоняться в режиме многопроходного кодирования множество раз до тех пор, пока покадровые размеры не установятся на определенном значении и не будут изменяться в промежутке между последним проходом кодирования и предпоследним проходом кодирования. В примере, приведенном на фиг. 7, средний размер кодированного кадра для ячейки В6 на стадии 714 превышает средний размер кодированного кадра для всех ячеек на стадии 718 «Средний размер кодированного кадра для всех ячеек». Пространственно-соотнесенные кадры, относящиеся к ячейке В6 на стадии 708 «Кадры для ячейки В6», повторно кодируются в кодере в рамках их исходной последовательности для прохождения игры с использованием режима многопроходного кодирования и целевого размера кадра на стадии 720 «Кодирование более низкого качества» до тех пор, пока средний размер кодированного кадра для ячейки В6 на стадии 724 «Уменьшенный средний размер кодированного кадра для ячейки В6» не приблизится к среднему размеру кодированного кадра для всех ячеек на стадии 718 «Средний размер кодированного кадра для всех ячеек». По завершении процесса в отношении всех ячеек все средние размеры кадра для ячеек должны быть примерно одинаковыми.

[70] Каждая ячейка должна характеризоваться наличием соотнесенной уставки качества кодера, которая была использована для генерирования среднего размера кодированного кадра для ячейки, сопоставимого со средним размером кодированного кадра для всей карты в целом. Уставки качества кодера в расчете на ячейку могут быть нормализованы по средней уставке кодированного кадра для всей карты, например, с использованием уравнения (6), представленного ниже.

[71] Во время потоковой передачи видеоданных игра может извлечь из ячейки карты кликов нормализованную уставку качества кодера, соответствующую текущему положению игрока, и использовать ее для выдачи подсказки кодеру путем передачи переопределенной уставки качества. Как было указано выше, в некоторых вариантах осуществления настоящего изобретения библиотека ffmpeg, совместимая со стандартом Н.264, которая прогоняется в режиме CRF (постоянное значение оценки как метод однопроходного сжатия видео), примет переопределенное значение параметра квантизации на командной строке с использованием -crf переключателя для выдачи подсказок кодеру. Пример карты кликов, из которой могут извлекаться нормализованные уставки качества кодера, приведен на фиг. 8.

[72] По мере нормализации уставок качества кодера может выполняться объединение этих уставок из множества источников, таких как пространственно-соотносимая последовательность и последовательность во времени, что осуществляется на подготовительной стадии 402 «Нахождение предварительно сгенерированных уставок кодера для игровой последовательности», проиллюстрированной на фиг. 4. Перед выполнением этой стадии нормализованные значения могут быть помножены друг на друга для генерирования уставки качества кодера, которая в неявной форме учитывает влияние, оказываемое на скорость передачи битового потока кодированного видео каждой исходной последовательностью. Например, местоположение игрока используется для считывания с карты кликов предварительно сгенерированной нормализованной уставки качества кодера, а оружие игрока выдает серию выстрелов, которая характеризуется предварительно сгенерированной нормализованной уставкой качества кодера временного ряда. Эти два нормализованных значения перемножаются друг на друга на стадии подготовки для учета влияния местоположения игрока и выбора оружия на скорость передачи битового потока кодированного видео.

[73] Предшествующее описание и чертежи должны рассматриваться исключительно как иллюстративно раскрывающие принципы заявленного изобретения. Предполагается, что настоящее изобретение не ограничено предпочтительным вариантом своего осуществления, и оно может быть реализовано самыми разными способами, которые будут понятны любому специалисту в данной области техники. Многочисленные сферы применения настоящего изобретения будут очевидны для специалистов в данной области техники. Следовательно, представляется нецелесообразным ограничивать заявленное изобретение конкретными раскрытыми примерами его осуществления или конкретной конструкцией и режимом работы, показанными и описанными в настоящем документе. Соответственно, все подходящие модификации и эквиваленты могут рассматриваться как входящие в объем заявленного изобретения.

Похожие патенты RU2752723C2

название год авторы номер документа
СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕНДЕРИНГА И ВЫДАЧИ ПОДСКАЗОК КОДЕРУ НА ОСНОВАНИИ ОЦЕНКИ ПРЕДВАРИТЕЛЬНО КОДИРОВАННОЙ НАГРУЗКИ 2018
  • Копьец, Майкл
RU2720067C1
СИСТЕМЫ И СПОСОБЫ ВЫДАЧИ ПОДСКАЗОК КОДЕРУ НА ОСНОВАНИИ ОЦЕНКИ ПРЕДВАРИТЕЛЬНО КОДИРОВАННОЙ НАГРУЗКИ 2018
  • Копьец, Майкл
RU2753157C2
СИСТЕМЫ И СПОСОБЫ ДЛЯ ОТЛОЖЕННЫХ ПРОЦЕССОВ ПОСТОБРАБОТКИ ПРИ КОДИРОВАНИИ ВИДЕОИНФОРМАЦИИ 2018
  • Копьец, Майкл
RU2728812C1
СИСТЕМЫ И СПОСОБЫ ДЛЯ ОТЛОЖЕННЫХ ПРОЦЕССОВ ПОСТОБРАБОТКИ ПРИ КОДИРОВАНИИ ВИДЕОИНФОРМАЦИИ 2021
  • Копьец, Майкл
RU2825728C2
СИСТЕМЫ И СПОСОБЫ ДЛЯ ОТЛОЖЕННЫХ ПРОЦЕССОВ ПОСТОБРАБОТКИ ПРИ КОДИРОВАНИИ ВИДЕОИНФОРМАЦИИ 2018
  • Копьец, Майкл
RU2744982C2
СИСТЕМЫ И СПОСОБЫ ДЛЯ ВЕКТОРОВ ДВИЖЕНИЯ, ГЕНЕРИРУЕМЫХ ВО ВРЕМЯ ИГРЫ 2018
  • Копьец, Микаэль
RU2735241C1
СИСТЕМЫ И СПОСОБЫ РЕНДЕРИНГА С АДАПТИРУЕМЫМ КАЧЕСТВОМ ПОД УПРАВЛЕНИЕМ КОДИРОВЩИКА 2018
  • Копьец, Майкл
RU2759505C2
СИСТЕМЫ И СПОСОБЫ РЕНДЕРИНГА С АДАПТИРУЕМЫМ КАЧЕСТВОМ ПОД УПРАВЛЕНИЕМ КОДИРОВЩИКА 2018
  • Копьец, Майкл
RU2730435C1
СИСТЕМЫ И СПОСОБЫ ДЛЯ ВЕКТОРОВ ДВИЖЕНИЯ, ГЕНЕРИРУЕМЫХ ВО ВРЕМЯ ИГРЫ 2018
  • Копьец, Микаэль
RU2760974C2
СИСТЕМЫ И СПОСОБЫ КОМПЕНСАЦИИ ДВИЖЕНИЯ НА ОСНОВАНИИ ВВОДА ИГРОКА 2020
  • Копьец, Майкл
RU2813614C2

Иллюстрации к изобретению RU 2 752 723 C2

Реферат патента 2021 года СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕНДЕРИНГА И ВЫДАЧИ ПОДСКАЗОК КОДЕРУ НА ОСНОВАНИИ ОЦЕНКИ ПРЕДВАРИТЕЛЬНО КОДИРОВАННОЙ НАГРУЗКИ

Изобретение относится к области вычислительной технике. Технический результат заключается в поддержании постоянной скорости передачи битового потока. Настоящее изобретение раскрывает системы и способы для выдачи подсказок кодеру, в которых сервер отслеживает информацию, связанную с изменениями рендеринга кадров, и рассчитывает границы допуска, скользящее среднее время кадра и/или краткосрочные тренды в пределах времени кадра, используя эти расчеты для идентификации пика времени кадра. Затем сервер выдает кодеку подсказки для модулирования уставок качества развертки кадра пропорционально размеру пика времени кадра. В некоторых вариантах осуществления рендерер записывает одно или несколько прохождений игры в игровой среде, выполняет отсортировку множества кадров из одного или нескольких прохождений игры во множество ячеек на карте кликов и собирает список отсортированных кадров, далее кодек может выполнить кодирование одного или нескольких кадров из списка отсортированных кадров для расчета среднего размера кодированного кадра для каждой ячейки в карте кликов и соотнести каждый средний размер кодированного кадра с нормализованной для каждой ячейки уставкой качества кодера. 4 н. и 26 з.п. ф-лы, 8 ил.

Формула изобретения RU 2 752 723 C2

1. Система кодирования данных, содержащая:

рендерер, причем рендерер записывает последовательность видеокадров, состоящую из множества кадров; и

кодер, который записывает уставки качества кодера;

при этом рендерер нормализует уставки качества кодера; и

при этом нормализованные уставки качества кодера используются для выдачи подсказки кодеру по кодированию последовательности видеокадров.

2. Система по п. 1, в которой кодер кодирует последовательность видеокадров в режиме, который оптимизирует уставки качества кодера.

3. Система по п. 2, в которой используемый режим представляет собой многопроходной режим.

4. Система по п. 1, в которой уставки качества кодера нормализуются с их приведением к первому кадру последовательности видеокадров.

5. Система по п. 1, в которой уставки качества кодера нормализуются с их приведением к средней уставке качества кодера для кадров последовательности видеокадров.

6. Система по п. 1, в которой кодеру выдается подсказка по каждому из кадров в последовательности видеокадров.

7. Система по п. 1, в которой уставки качества кодера записываются в виде карты кликов или таблицы подстановки.

8. Система по п. 1, в которой последовательность видеокадров представляет собой пространственно-соотносимую последовательность.

9. Система по п. 1, в которой нормализованные уставки качества кодера выдают подсказку кодеру по уравновешиванию полосы пропускания последовательности видеокадров.

10. Система по п. 1, в которой последовательность видеокадров представляет собой кат-сцену реального времени или предварительно отрендеренную кат-сцену.

11. Выполняемый на компьютере способ кодирования данных, включающий в себя следующие стадии:

запись последовательности видеокадров, состоящей из множества кадров;

запись уставок качества кодера; и

нормализацию уставок качества кодера, причем нормализованные уставки качества кодера используются для выдачи подсказки кодеру по кодированию последовательности видеокадров.

12. Способ по п. 11, дополнительно включающий в себя стадию кодирования последовательности видеокадров в режиме, который оптимизирует уставки качества кодера.

13. Способ по п. 12, в котором используемый режим представляет собой многопроходной режим.

14. Способ по п. 11, в котором уставки качества кодера нормализуются с их приведением к средней уставке качества кодера для кадров последовательности видеокадров.

15. Способ по п. 11, в котором уставки качества кодера нормализуются с их приведением к первому кадру последовательности видеокадров.

16. Способ по п. 11, в котором кодеру выдается подсказка по каждому из кадров в последовательности видеокадров.

17. Способ по п. 11, в котором уставки качества кодера записываются в виде карты кликов или таблицы подстановки.

18. Способ по п. 11, в котором последовательность видеокадров представляет собой пространственно-соотносимую последовательность.

19. Способ по п. 11, в котором нормализованные уставки качества кодера выдают подсказку кодеру по уравновешиванию полосы пропускания последовательности видеокадров.

20. Способ по п. 11, в котором последовательность видеокадров представляет собой кат-сцену реального времени или предварительно отрендеренную кат-сцену.

21. Система кодирования данных, содержащая

сервер, причем сервер:

регистрирует одно или несколько прохождений игры;

отсортировывает множество кадров из одного или нескольких прохождений игры во множество ячеек;

получает список отсортированных кадров;

рассчитывает средний размер кодированного кадра для отсортированного множества ячеек; и

кодирует один или несколько кадров из списка отсортированных кадров для расчета нормализованной для каждой ячейки уставки качества кодера для каждой из множества ячеек;

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

22. Система по п. 21, в которой множество ячеек отображено на карте кликов.

23. Система по п. 21, в которой каждый средний размер кодированного кадра соотносится с одной из нормализованных для каждой ячейки уставок качества кодера.

24. Система по п. 22, в которой отсортированные кадры соотносятся с картой кликов.

25. Система по п. 21, в которой каждый средний размер кадра соотносится с одной из нормализованных для каждой ячейки уставок качества кодера.

26. Выполняемый на компьютере способ кодирования данных, включающий в себя следующие стадии:

запись одного или нескольких прохождений игры;

отсортировку множества кадров из одного или нескольких прохождений игры во множество ячеек;

сбор списка отсортированных кадров;

расчет среднего размера кодированного кадра для отсортированного множества ячеек;

кодирование одного или нескольких кадров из списка отсортированных кадров для расчета нормализованной для каждой ячейки уставки качества кодера для каждой из множества ячеек; и

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

27. Способ по п. 26, в котором множество ячеек отображено на карте кликов.

28. Способ по п. 26, в котором каждый средний размер кодированного кадра соотносится с одной из нормализованных для каждой ячейки уставок качества кодера.

29. Способ по п. 27, в котором отсортированные кадры соотносятся с картой кликов.

30. Способ по п. 26, в котором каждый средний размер кадра соотносится с одной из нормализованных для каждой ячейки уставок качества кодера.

Документы, цитированные в отчете о поиске Патент 2021 года RU2752723C2

US 2009278842 A1, 2009.11.12
US 2015082345 A1, 2015.03.19
US 2016088299 A1, 2016.03.24
US 2013314501 A1, 2013.11.28
US 2015092856 A1, 2015.04.02
US 2016295216 A1, 2016.10.06
US 2017105004 A1, 2017.04.13
RU 2013110285 A, 2014.09.20.

RU 2 752 723 C2

Авторы

Копьец, Майкл

Даты

2021-07-30Публикация

2018-04-20Подача