Сигнализация передискретизации опорного изображения с указанием размера передискретизированного изображения в битовом потоке видео
SIGNALLING OF OVERSAMPLING OF THE REFERENCE IMAGE INDICATING THE SIZE OF THE OVERSAMPLED IMAGE IN A VIDEO BITSTREAM

Перекрестная ссылка на родственные заявки
[1] Настоящее изобретение испрашивает приоритет патентной заявки США №62/903,639, поданной 20 сентября 2019 г., и предварительной заявки США№62/905,319, поданной 24 сентября 2019 г., а также патентной заявки США №17/010,163, поданной 2 сентября 2020 г. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.
Область техники, к которой относится изобретение
[2] Предмет изобретения относится к кодированию и декодированию видео и, более конкретно, к сигнализации передискретизации опорного изображения с указанием размера передискретизированного изображения.
Уровень техники
[3] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920 × 1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[4] Одной из целей кодирования и декодирования видеосигнала может являться снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. При достижимой степени сжатия более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[5] Кодер и декодер видеосигнала могут использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование, некоторые из которых будут представлены ниже.
[6] Исторически сложилось так, что видеокодеры и декодеры, как правило, работали с заданным размером изображения, который в большинстве случаев был определен и оставался постоянным для кодированной видеопоследовательности (CVS), группы изображений (GOP) или аналогичного временного интервала с несколькими изображениями. Например, в MPEG-2 известно, что системные конструкции изменяют разрешение по горизонтали (и, следовательно, размер изображения) в зависимости от таких факторов, как активность в кадре, но только на I изображениях, следовательно, обычно для GOP. Передискретизация опорных изображений для использования различных разрешений в CVS известна, например, из ITU-T Rec. Н.263 Прил. Р. Однако здесь размер изображения не меняется, передискретизируются только опорные изображения, в результате чего потенциально могут использоваться только части холста изображения (в случае понижающей дискретизации) или только части снимаемого кадра (в случае повышающей дискретизации). Кроме того, приложение Q Н.263 позволяет производить передискретизацию отдельного макроблока в два раза (в каждом измерении), вверх или вниз. Опять же, размер изображения остается прежним. Размер макроблока в Н.263 фиксирован, и поэтому его не нужно передавать.
[7] Изменение размера изображения в предсказанных изображениях получило широко распространено в современном кодировании видео. Например, VP9 позволяет выполнять передискретизацию опорного изображения и изменять разрешение для всего изображения. Аналогичным образом, некоторые предложения, сделанные в отношении VVC (в том числе, например, Хендри и др., "Об адаптивном изменении разрешения (ARC) для VVC", документ Joint Video Team JVET-M0135-vl, 9 19 января 2019 г., полностью включенный в настоящий документ), позволяют выполнять передискретизацию целых опорных изображений с различными - более высокими или более низкими - разрешениями. В этом документе предлагается кодировать различные возможные разрешения в наборе параметров последовательности и ссылаться на элементы синтаксиса для каждого изображения в наборе параметров изображения.
Сущность изобретения
[8] В одном из вариантов осуществления представлен метод декодирования кодированного видеопотока с помощью по меньшей мере одного процессора, включающий получение первого флага, указывающего на наличие окна соответствия (conformance window) в текущем изображении; на основе первого флага, указывающего на наличие окна соответствия, получение второго флага, указывающего, используется ли окно соответствия для пере дискретизации опорного изображения; на основе второго флага, указывающего, что окно соответствия используется для передискретизации опорного изображения, определение коэффициента передискретизации между текущим изображением и опорным изображением на основе размера окна соответствия окна соответствия; на основе второго флага, указывающего, что окно соответствия не используется для передискретизации опорного изображения, определение коэффициента передискретизации на основе размера передискретизированного изображения; и выполнение пере дискретизации опорного изображения в текущем изображении с использованием коэффициента передискретизации.
[9] В одном из вариантов осуществления изобретения предусмотрено устройство для декодирования кодированного битового потока видео, включающее по меньшей мере по меньшей мере одно запоминающее устройство, сконфигурированное для хранения программного кода; и по меньшей мере один процессор, выполненный с возможностью считывания программного кода и работы в соответствии с инструкциями программного кода, включающего: первый код получения, конфигурированный так, чтобы заставлять по меньшей мере один процессор получать первый флаг, указывающий, что окно соответствия присутствует в текущем изображении; второй код получения, конфигурированный так, чтобы заставлять по меньшей мере один процессор, на основе первого флага, указывающего, что окно соответствия присутствует, получать второй флаг, указывающий, используется ли окно соответствия для пере дискретизации опорного изображения; первый код определения, конфигурированный так, чтобы заставлять по меньшей мере один процессор, на основе второго флага, указывающего, что окно соответствия используется для передискретизации опорного изображения, определять коэффициент передискретизации между текущим изображением и опорным изображением на основе размера окна соответствия; второй код определения, конфигурированный так, чтобы заставлять по меньшей мере один процессор, на основе второго флага, указывающего на то, что окно соответствия не используется для передискретизации опорного изображения, определять коэффициент передискретизации на основе размера передискретизированного изображения; и код выполнения, конфигурированный так, чтобы заставлять по меньшей мере один процессор выполнять передискретизацию опорного изображения в текущем изображении с использованием коэффициента передискретизации.
[10] В одном из вариантов осуществления представлен машиночитаемый носитель, где хранятся инструкции, которые при выполнении одним или более процессорами устройства для декодирования кодированного битового потока видео заставляют один или более процессоров: получать первый флаг, указывающий, что окно соответствия присутствует в текущем изображении; на основе первого флага, указывающего на присутствие окна соответствия, получать второй флаг, указывающий, используется ли окно соответствия для пере дискретизации опорного изображения; на основе второго флага, указывающего, что окно соответствия используется для передискретизации опорного изображения, определять коэффициент передискретизации между текущим изображением и опорным изображением на основе размера окна соответствия; на основе второго флага, указывающего, что окно соответствия не используется для передискретизации опорного изображения, определять коэффициент передискретизации на основе размера передискретизированного изображения; и выполнять передискретизацию опорного изображения в текущем изображении с использованием коэффициента передискретизации.
Краткое описание чертежей
[11] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[12] Фиг. 1 представляет собой схематическую иллюстрацию упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[13] Фиг. 2 представляет собой схематическую иллюстрацию упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[14] Фиг. 3 представляет собой схематическую иллюстрацию упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[15] Фиг. 4 представляет собой схематическую иллюстрацию упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[16] Фиг. 5 представляет собой схематическую иллюстрацию вариантов передачи параметров ARC в соответствии с вариантом осуществления.
[17] Фиг. 6А - 6В представляют собой схематические иллюстрации примеров синтаксических таблиц в соответствии с вариантом осуществления.
[18] Фиг. 7 представляет собой схематическую иллюстрацию размера передаваемого изображения и окна соответствия в SPS в соответствии с вариантом осуществления.
[19] Фиг. 8А-8В представляют собой схематические иллюстрации размера передаваемого изображения и окна соответствия в PPS в соответствии с вариантами осуществления.
[20] Фиг. 9 представляет собой схематическую иллюстрацию процесса передачи размера передискретизированного изображения в PPS в соответствии с вариантом осуществления.
[21] На фиг. 10 представлена блок-схема примера процесса декодирования кодированного битового потока видео в соответствии с вариантом осуществления.
[22] На фиг. 11 представлена схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
Подробное описание
[23] На фиг. 1 показана упрощенная блок-схема системы связи (100) согласно варианту осуществления настоящего изобретения. Система (100) может включать по меньшей мере два оконечных устройства (110-120), соединенных между собой через сеть (150). Для однонаправленной передачи данных первое оконечное устройство (110) может кодировать видеоданные в локальном местоположении для передачи на другое оконечное устройство (120) через сеть (150). Второе оконечное устройство (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[24] Фиг. 1 иллюстрирует вторую пару терминалов (130, 140), предназначенных для поддержки двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференций. Для двунаправленной передачи данных каждое оконечное устройство (130, 140) может кодировать видеоданные, снятые в локальном местоположении, для передачи другому оконечному устройству по сети (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[25] В примере, приведенном на фиг. 1, оконечные устройства (110-140) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (150) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (110-140), включая, например, проводные и/или беспроводные сети связи. Сеть связи (150) позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (150) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[26] На фиг. 2 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п., и т.д.
[27] Система потоковой передачи может включать в себя подсистему захвата (213), которая может включать в себя источник видео (201), например цифровую камеру, создающую, например, поток несжатых отсчетов видео (202). Этот поток отсчетов (202), изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может быть обработан кодером (203), соединенным с камерой (201). Кодер (303) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированный битовый поток видео (204), изображенный в виде тонкой линии, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может быть сохранен на сервере потоковой передачи (205) для дальнейшего использования. Один или более потоковых клиентов (206, 208) могут получить доступ к потоковому серверу (205) для извлечения копий (207, 209) кодированного битового потока видео (204). Клиент (206) может включать в себя видеодекодер (210), который декодирует входящую копию кодированного битового потока видео (207) и создает исходящий поток видеоизображения (211), который может быть отображен на дисплее (212) или другом устройстве визуализации (не изображено). В некоторых потоковых системах битовые потоки видео (204, 207, 209) могут быть кодированы в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-T Recommendation Н.265. В стадии разработки находится стандарт кодирования видео, неофициально известный как Универсальное кодирование видео или VVC. Раскрытое изобретение может использоваться в контексте VVC.
[28] На фиг. 3 показана блок-схема видеодекодера (210) согласно варианту осуществления настоящего изобретения.
[29] Приемник (310) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (210); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (312), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети буферная память (315) может быть подключена между приемником (310) и энтропийным декодером / анализатором (320) (далее "анализатором"). Когда приемник (310) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (315) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буфер (315), который может быть сравнительно большим и может преимущественно иметь адаптивный размер.
[30] Видеодекодер (210) может включать в себя анализатор (320) для реконструкции символов (321) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (210), и возможно информацию для управления устройством визуализации, например, дисплеем (212), которое не является неотъемлемой частью декодера, но может быть подключено к нему, как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (320) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, известным специалисту в данной области, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, субизображения, тайлы, слайсы, модули, макроблоки, единицы дерева кодирования (CTU, Coding Tree Units), единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Тайл может указывать прямоугольную область CU/CTU в определенном столбце и строке тайла на рисунке. Модуль может указывать на прямоугольную область рядов CU/CTU внутри определенного тайла. Слайс может указывать на один или более модулей изображения, которые содержатся в блоке NAL. Субизображение может указывать на прямоугольную область одного или нескольких слайсов на изображении. Энтропийный декодер / анализатор также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[31] Анализатор (320) может выполнять операцию энтропийного декодирования/синтаксического анализа видеопоследовательности, полученной из буфера (315), для создания символов (321).
[32] Для реконструкции символов (321) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (320). Поток такой информации управления подгруппами между анализатором (320) и множественными модулями для простоты в дальнейшем не показан.
[33] Помимо ранее упомянутых функциональных блоков декодер (210) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.
[34] Первым модулем является модуль (351) масштабирования / обратного преобразования. Модуль (351) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (321) от анализатора (320). Он может выводить блоки, содержащие выборочные значения, которые могут быть введены в агрегатор (355).
[35] В ряде случаев выходные отсчеты блока (351) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (352) предсказания внутри изображения. В ряде случаев модуль (352) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из текущего (частично реконструированного) (358) изображения. Агрегатор (355) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (352) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (351) масштабирования / обратного преобразования.
[36] В других случаях выходные отсчеты модуля (351) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае модуль (353) предсказания с компенсацией движения может осуществлять доступ к памяти (357) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (321), относящимися к блоку, эти отсчеты могут добавляться агрегатором (355) к выходному сигналу модуля (351) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти опорных изображений, откуда модуль предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю предсказания с компенсацией движения, в форме символов (321), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[37] К выходным отсчетам агрегатора (355) можно применять различные методы контурной фильтрации в модуле (356) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (битовый поток) и становиться доступными модулю (356) контурного фильтра в качестве символов (321) от анализатора (320), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[38] Модуль (356) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (312) визуализации, а также сохраняться в памяти опорных изображений для использования в будущем предсказании между изображениями.
[39] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Как только кодированное изображение будет полностью реконструировано и кодированное изображение идентифицировано как опорное изображение (например, анализатором (320)), текущее опорное изображение может становиться частью буфера (357) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[40] Видеодекодер (210) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, которая может быть документирована, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, определяемому используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в документе профилей. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[41] Согласно варианту осуществления, приемник (310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, уровни улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[42] На фиг. 4 показана блок-схема видеокодера (203) согласно варианту осуществления настоящего изобретения.
[43] Кодер (203) может принимать видеоизображения от источника (201) видео (который не является частью кодера), который может захватывать видеоизображения, подлежащие кодированию кодером (203).
[44] Источник (201) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию кодером (203) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (201) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (203) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание касается отсчетов.
[45] Согласно варианту осуществления, видеокодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Обеспечение надлежащей скорости кодирования является одной из функций контроллера (450). Контроллер управляет другими функциональными блоками, как описано ниже, и функционально связан с этими блоками. Подключение для простоты не показано. Параметры, установленные контроллером, могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизации скорости-искажения, …), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Специалист в данной области может легко определить другие функции контроллера (450), поскольку они могут относиться к видеокодеру (203), оптимизированному для определенной конструкции системы.
[46] Некоторые видеокодеры работают по принципу, который специалистам в данной области хорошо известен как "петля кодирования". В качестве упрощенного описания, петля кодирования может состоять из кодирующей части кодера (430) (далее "кодер источника") (ответственного за создание символов на основе входного изображения, подлежащего кодированию, и опорного изображения (изображений)) и (локального) декодера (433), встроенного в кодер (203), который реконструирует символы для создания данных отсчетов, которые также будет создавать (удаленный) декодер (как любое сжатие между символами и кодированным битовым потоком видео без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Этот реконструированный поток отсчетов поступает в память (434) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое буфера опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказывающая часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, какие "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронности опорного изображения (и возникающего в результате дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области.
[47] "Локальный" декодер (433) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (210), подробно вышеописанный со ссылкой на фиг. 3. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и анализатором (320) может осуществляться без потерь, части энтропийного декодирования видеодекодера (210), включающие в себя канал (312, приемник (310) и анализатор (320), могут быть не полностью реализованы в локальном декодере (433).
[48] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по существу, в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[49] В рамках своей работы кодер (430) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входной кадр кодируется с предсказанием на основании одного или более ранее кодированных кадров из видеопоследовательности, указанных как "опорные кадры". Таким образом, машина (432) кодирования кодирует различия между пиксельными блоками входного кадра и пиксельными блоками опорного кадра(ов), который(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входной кадр.
[50] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть указаны как опорные кадры, на основе символов, созданных кодером (430). Операции машины (432) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 4), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных кадрах, и может предписывать сохранение реконструированных опорных кадров в кэш-памяти (434) опорных изображений. Таким образом, видеокодер (203) может локально сохранять копии реконструированных опорных кадров, имеющие такое же содержимое, как реконструированные опорные кадры, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[51] Предсказатель (435) может осуществлять поиски предсказания для машины (432) кодирования. Таким образом, для нового кадра, подлежащего кодированию, предсказатель (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (435) может работать на основе "блоки отсчетов х пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (435), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (434) опорных изображений.
[52] Контроллер (450) может управлять операциями кодирования видеокодера (430), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[53] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, известным специалисту в этой области, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[54] Передатчик (440) может буферизовать кодированную видеопоследовательность, созданную энтропийным кодером (445), для подготовки к передаче через канал (460) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные от видеокодера (430) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[55] Контроллер (450) может управлять работой кодера (203). В ходе кодирования контроллер (450) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы кадров:
[56] Интра-изображение (1-изображение), которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности 1-изображений и их соответствующие варианты применения и особенности.
[57] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[58] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[59] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки 1-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[60] Видеокодер (203) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (203) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[61] Согласно варианту осуществления, передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать такие данные, как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[62] В последнее время некоторое внимание привлекает объединение сжатых областей или извлечение нескольких семантически независимых частей изображения в одно видеоизображение. В частности, в контексте, например, 360-градусного кодирования или определенных приложений видеонаблюдения, несколько семантически независимых исходных изображений (например, поверхность из шести граней 360-градусного изображения, спроецированного на куб, или отдельные входы камеры в случае установки наблюдения с несколькими камерами) могут потребовать отдельных настроек адаптивного разрешения, чтобы справиться с различной активностью для каждого изображения в данный момент времени. Другими словами, кодеры в данный момент времени могут использовать разные коэффициенты передискретизации для разных семантически независимых изображений, составляющих все 360-градусное изображение или наблюдение. При объединении в одно изображение это, в свою очередь, требует выполнения передискретизации опорного изображения и сигнализации кодирования с адаптивным разрешением для частей кодированного изображения.
[63] Ниже будет введено несколько терминов, которые будут упомянуты в остальной части этого описания.
[64] Субизображение может относиться, в некоторых случаях, к прямоугольному расположению отсчетов, блоков, макроблоков, единиц кодирования или аналогичных объектов, которые семантически сгруппированы и которые могут быть независимо кодированы в измененном разрешении. Одно или более субизображений могут образовывать изображение. Одно или более кодированных субизображений могут образовывать кодированное изображение. Одно или более субизображений могут быть собраны в изображение, и одно или более субизображений могут быть извлечены из изображения. В определенных средах одно или более кодированных субизображений могут быть собраны в сжатой области без перекодирования на уровне отсчетов в кодированное изображение, и в том же или других случаях одно или более кодированных субизображений могут быть извлечены из кодированного изображения в сжатой области.
[65] Передискретизация опорного изображения (Reference Picture Resampling, RPR) или адаптивное изменение разрешения (Adaptive Resolution Change, ARC) могут относиться к механизмам, которые позволяют изменять разрешение изображения или субизображения в кодированной видеопоследовательности, например, посредством передискретизации опорного изображения. Параметры RPR/ARC в дальнейшем относятся к управляющей информации, необходимой для выполнения адаптивного изменения разрешения, которая может включать, например, параметры фильтра, коэффициенты масштабирования, разрешения выходных и/или опорных изображений, различные флаги управления и так далее.
[66] В вариантах осуществления кодирование и декодирование могут выполняться на одном семантически независимом кодированном видеоизображении. Перед описанием последствий кодирования/декодирования нескольких вспомогательных изображений с независимыми параметрами RPR/ARC и их предполагаемой дополнительной сложностью должны быть описаны варианты передачи параметров RPR/ARC.
[67] На фиг. 5 А-5Е показаны несколько вариантов осуществления для передачи параметров RPR/ARC. Как отмечалось в каждом из вариантов осуществления, они могут иметь определенные преимущества и определенные недостатки с точки зрения эффективности кодирования, сложности и архитектуры. Стандарт или технология кодирования видео может выбрать один или более из этих вариантов осуществления или вариантов, известных из соответствующего уровня техники, для передачи параметров RPR/ARC. Варианты осуществления могут не быть взаимоисключающими и, возможно, могут быть взаимозаменяемыми в зависимости от потребностей области применения, используемой технологии стандартов или выбора кодера.
[68] Классы параметров RPR/ARC могут включать:
[69] - коэффициенты увеличения / уменьшения разрешения, отдельные или объединенные для измерений X и Y
[70] - коэффициенты увеличения / уменьшения разрешения с добавлением временного измерения, указывающие на увеличение/ уменьшение с постоянной скоростью для заданного количества изображений
[71] - любой из вышеперечисленных двух классов может включать кодирование одного или нескольких предположительно коротких синтаксических элементов, которые могут указывать на таблицу, содержащую коэффициенты).
[72] - разрешение, по оси X или Y, в единицах отсчетов, блоков, макроблоков, единицах кодирования (CU) или любой другой подходящей детализации входного изображения, выходного изображения, опорного изображения, кодированного изображения, комбинированного или раздельного. Если существует более одного разрешения (например, одно для входного изображения, одно для опорного изображения), то в некоторых случаях один набор значений может быть получен из другого набора значений. Они могут переключаться, например, с помощью флагов. Более подробный пример см. ниже.
[73] - координаты "деформации" аналогичны координатам, используемым в Приложении Р Н.263, опять же с подходящей степенью детализации, как описано выше. В Приложении Р Н.263 определен один эффективный способ кодирования таких координат деформации, но, возможно, могут быть разработаны и другие, потенциально более эффективные способы. Например, обратимое кодирование переменной длины типа кодирования Хаффмана для координат деформации согласно Приложению Р может быть заменено двоичным кодированием подходящей длины, где длина слова двоичного кода может быть, например, получена из максимального размера изображения, возможно, умноженного на определенный коэффициент и смещенного на определенное значение, чтобы позволить "деформацию" за пределами границ максимального размера изображения.
[74] - параметры фильтра увеличения или уменьшения разрешения. В вариантах осуществления может присутствовать только один фильтр для увеличения и/или уменьшения разрешения. Однако в вариантах осуществления может быть желательно обеспечить большую гибкость в конструкции фильтра, и для этого может потребоваться сигнализация параметров фильтра. Такие параметры могут быть выбраны с помощью индекса в списке возможных конструкций фильтров, фильтр может быть полностью определен (например, с помощью списка коэффициентов фильтра, с использованием подходящих методов энтропийного кодирования), фильтр может быть неявно выбран с помощью коэффициентов увеличения / уменьшения разрешения, в соответствии с которыми, в свою очередь, передаются в соответствии с любым из механизмов, упомянутых выше, и так далее.
[75] Отныне описание предполагает кодирование конечного набора коэффициентов увеличения / уменьшения разрешения (один и тот же фактор, который будет использоваться как в измерении X, так и в измерении Y), обозначенных кодовым словом. Это кодовое слово может быть кодировано с переменной длиной, например, с использованием экспоненциального кода Голомба, распространенного для определенных элементов синтаксиса в спецификациях кодирования видео, таких как Н.264 и Н.265. Одно подходящее отображение значений на коэффициенты увеличения / уменьшения разрешения может быть, например, в соответствии с таблицей 1:
[76] Многие подобные отображения могут быть разработаны в соответствии с потребностями приложения и возможностями механизмов увеличения и уменьшения масштаба, доступных в технологии или стандарте сжатия видео. Таблицу можно было бы расширить до большего количества значений. Значения также могут быть представлены механизмами энтропийного кодирования, отличными от экспоненциальных кодов Голомба, например, с использованием двоичного кодирования. Это может иметь определенные преимущества, когда коэффициенты передискретизации представляют интерес за пределами самих механизмов обработки видео (в первую очередь кодера и декодера), например, MANE. Следует отметить, что в ситуациях, когда изменение разрешения не требуется, можно выбрать короткий экспоненциальный код Голомба; в приведенной выше таблице это только один бит.Это может давать преимущество в эффективности кодирования по сравнению с использованием двоичных кодов в наиболее распространенном случае.
[77] Количество записей в таблице, а также их семантика могут быть полностью или частично настраиваемыми. Например, основные данные таблицы может быть переданы в "высоком" наборе параметров, таком как набор параметров последовательности или декодера. В некоторых вариантах осуществления одна или более таких таблиц могут быть определены в технологии или стандарте кодирования видео и могут быть выбраны, например, с помощью набора параметров декодера или последовательности.
[78] Ниже описано, как коэффициент увеличения / уменьшения разрешения (информация ARC), кодированный, как описано выше, может быть включен в технологию кодирования видео или стандартный синтаксис. Аналогичные соображения могут быть применимы к одному или нескольким кодовым словам, управляющим фильтрами увеличения / уменьшения разрешения. Ниже приведено обсуждение случая, когда для фильтра или других структур данных требуются сравнительно большие объемы данных.
[79] Как показано на фиг. 5, приложение Н.263 Р включает информацию ARC (502) в виде четырех координат деформации в заголовок изображения (501), а именно в расширение заголовка Н.263 PLUSPTYPE (503). Это может быть разумным выбором при проектировании, если а) имеется заголовок изображения, и b) ожидается частая смена информации ARC. Однако накладные расходы при передаче сигнализации в соответствии с Н.263 могут быть довольно высокими, а коэффициенты масштабирования могут не относиться к границам изображения, поскольку заголовок изображения может иметь временный характер.
[80] В том же или другом варианте осуществления сигнализация параметров ARC может следовать подробному примеру, описанному на фиг. 6А-6 В. На фиг. 6А-6 В изображены синтаксические диаграммы в виде представления с использованием нотации, которая примерно соответствует программированию в стиле С, которое, например, используется в стандартах кодирования видео по крайней мере с 1993 года. Линии, выделенные жирным шрифтом, указывают на элементы синтаксиса, присутствующие в битовом потоке, линии без жирного шрифта часто указывают на поток управления или установку переменных.
[81] Как показано на фиг. 6А, заголовок группы тайлов (601) в качестве примера синтаксической структуры заголовка, применимого к (возможно, прямоугольной) части изображения, может условно содержать синтаксический элемент dec_pic_size_idx (602) (выделен жирным шрифтом) переменной длины, кодированный экспоненциальным кодом Голомба. Наличие этого синтаксического элемента в заголовке группы тайлов может быть обусловлено использованием адаптивного разрешения (603) - здесь значение флага не выделено жирным шрифтом, что означает, что флаг присутствует в битовом потоке в том месте, где он встречается в синтаксической диаграмме. О том, используется ли адаптивное разрешение для данного изображения или его части, может быть сообщено в любой синтаксической структуре высокого уровня внутри или вне битового потока. В показанном примере он передается в наборе параметров последовательности, как показано ниже.
[82] На фиг. 6 В также показан фрагмент набора параметров последовательности (610). Первый показанный элемент синтаксиса - adaptive_pic_resolution_change_flag (611). В случае значения true этот флаг может указывать на использование адаптивного разрешения, что, в свою очередь, может потребовать определенной управляющей информации. В примере такая управляющая информация условно присутствует на основе значения флага, основанного на утверждении if() в наборе параметров (612) и заголовке группы тайлов (601).
[83] При использовании адаптивного разрешения в данном примере кодируется выходное разрешение в единицах отсчетов (613). Цифра 613 относится как к output_pic_width_in_luma_samples, так и к output_pic_height_in_luma_samples, которые вместе могут определять разрешение выходного изображения. В других местах технологии или стандарта видеокодирования могут быть определены некоторые ограничения для любого из этих значений. Например, определение уровня может ограничить количество общих выходных отсчетов, которое может быть произведением значения этих двух синтаксических элементов. Кроме того, определенные технологии или стандарты кодирования видео или внешние технологии или стандарты, такие как, например, системные стандарты, могут ограничивать диапазон нумерации (например, одно или оба измерения должны быть кратны степени числа 2) или соотношение сторон (например, соотношение ширины и высоты 4:3 или 16:9). Такие ограничения могут быть введены для облегчения аппаратных реализаций или по другим причинам и хорошо известны в данной области.
[84] В некоторых приложениях может быть целесообразно, чтобы кодер инструктировал декодер использовать определенный размер опорного изображения, а не неявно принимать этот размер за размер выходного изображения. В этом примере синтаксический элемент reference_pic_size_present_flag (614) определяет условное наличие размеров опорного изображения (615) (опять же, цифра относится как к ширине, так и к высоте).
[85] Наконец, показана таблица возможной ширины и высоты изображения при декодировании. Такая таблица может быть выражена, например, указанием таблицы (num_dec_pic_size_in_luma_samples_minus1) (616). "Минус 1" может относиться к интерпретации значения этого синтаксического элемента. Например, если кодированное значение равно нулю, то присутствует одна запись таблицы. Если значение равно пяти, то в таблице присутствует шесть записей. Для каждой "строки" в таблице ширина и высота декодированного изображения затем включаются в синтаксис (617).
[86] Представленные записи таблицы (617) могут быть проиндексированы с использованием синтаксического элемента dec_pic_size_idx (602) в заголовке группы листов, что позволяет использовать различные декодированные размеры - по сути, коэффициенты масштабирования - для каждой группы листов.
[87] Некоторые технологии или стандарты кодирования видео, например VP9, поддерживают пространственную масштабируемость путем реализации определенных форм передискретизации опорного изображения (передаваемых совершенно иначе, чем в раскрытом изобретении) в сочетании с временной масштабируемостью, чтобы обеспечить пространственную масштабируемость. В частности, к некоторым опорным изображениям может быть применена повышающая дискретизация с использованием технологий ARC до более высокого разрешения, чтобы сформировать основу уровня пространственного улучшения. Эти изображения после повышающей дискретизации могут быть уточнены с помощью обычных механизмов предсказания при высоком разрешении, чтобы добавить детали.
[88] Варианты осуществления, обсуждаемые здесь, могут быть использованы в такой среде. В некоторых случаях, в том же или другом варианте реализации, значение в заголовке блока NAL, например, поле Temporal ID, может использоваться для указания не только временного, но и пространственного уровня. Это может иметь определенные преимущества для некоторых системных конструкций; например, существующие выбранные единицы пересылки (Selected Forwarding Units (SFU)), созданные и оптимизированные для выбранной пересылки на временном уровне на основе значения Temporal ID заголовка блока NAL, могут быть использованы без модификации для масштабируемых сред. Для этого может потребоваться сопоставление между размером кодированного изображения и временным уровнем, на который указывает поле временного идентификатора в заголовке блока NAL.
[89] В последнее время некоторое внимание привлекает объединение сжатых областей или извлечение нескольких семантически независимых частей изображения в одно видеоизображение. В частности, в контексте, например, 360-градусного кодирования или определенных приложений наблюдения, несколько семантически независимых исходных изображений (например, поверхность из шести граней 360-градусного изображения, спроецированного на куб, или отдельные входы камеры в случае установки наблюдения с несколькими камерами) могут потребовать отдельных настроек адаптивного разрешения, чтобы справиться с различной активностью для каждого изображения в данный момент времени. Другими словами, кодеры в данный момент времени могут использовать разные коэффициенты передискретизации для разных семантически независимых изображений, составляющих все 360-градусное изображение или наблюдение. При объединении в одно изображение это, в свою очередь, требует выполнения передискретизации опорного изображения и передачи кодирования с адаптивным разрешением для частей кодированного изображения.
[90] В некоторых вариантах осуществления окно соответствия (conformance window) может быть прямоугольной частью изображения, для которой кодер указал, что отсчеты этой части выводятся декодером, в то время как отсчеты за пределами окна могут быть исключены из вывода декодером.
[91] Одна из проблем, рассматриваемых здесь, заключается в том, что окно соответствия может служить двум целям. Одна из целей состоит в том, чтобы определить размер вывода, как описано выше. Размер вывода может зависеть от области применения и может сильно отличаться от размера кодированного изображения, например, в стереоскопических приложениях или 360-градусной кубической текстуре. Вторая цель может заключаться в том, что окно соответствия также вводится для передискретизации опорного изображения, описанной выше.
[92] При определенных комбинациях размера окна соответствия и размера изображения как для кодированного, так и для передискретизированного изображения, возможна ссылка на отсчеты за пределами области заполнения. Хотя эта проблема может быть решена путем ограничения битового потока в соответствии с размером окна соответствия, это решение будет иметь тот недостаток, что окно соответствия больше не может быть свободно выбрано приложением. Разделение этих двух функций может быть полезным в некоторых приложениях.
[93] В одном из вариантов осуществления размер окна соответствия может быть указан в PPS. Параметры окна соответствия могут использоваться для вычисления коэффициента передискретизации, когда размер окна соответствия опорного изображения отличается от размера окна соответствия текущего изображения. Декодеру может потребоваться распознать размер окна соответствия каждого изображения, чтобы определить необходимость процесса передискретизации.
[94] В одном из вариантов реализации масштабный коэффициент для передискретизации опорного изображения (RPR) может быть рассчитан на основе ширины и высоты выходного сигнала, которые могут быть получены из параметров окна соответствия, между текущим изображением и опорным изображением. Это может позволить более точно рассчитать коэффициент масштабирования по сравнению с использованием размера декодированного изображения. Такой подход может хорошо работать для большинства видеопоследовательностей, размер выходного изображения которых почти идентичен размеру декодированного изображения, с небольшими заполненными областями.
[95] Однако это также может вызвать различные проблемы. Например, когда размер окна соответствия сильно отличается от размера декодированного изображения с большими значениями смещения, для иммерсивных медиа приложений (например, 360-градусная кубическая текстура, стереоскопические, облако точек), расчет коэффициента масштабирования на основе размера окна соответствия может не гарантировать качество внешнего предсказания с различными разрешениями. В крайних случаях совмещенная область текущей CU на опорном изображении может отсутствовать. Когда RPR используется для масштабируемости с несколькими уровнями, смещения окна соответствия могут не использоваться для расчета ссылочной области между уровнями. Обратим внимание, что ссылочная область каждого непосредственно зависимого уровня может быть явно передана в PPS-расширении, в HEVC Scalability Extension (SHVC). Когда из всего битового потока извлекается суббитовый поток, нацеленный на определенную область (субизображение), размер окна соответствия совсем не совпадает с размером изображения. Обратим внимание, что параметры окна соответствия не могут быть обновлены, пока они используются для вычисления масштабирования после кодирования битового потока.
[96] Исходя из вышеуказанных потенциальных проблем, расчет коэффициентов масштабирования на основе размера окна соответствия может иметь краевые случаи, для которых требуются альтернативные параметры. В качестве запасного варианта, когда параметры окна соответствия не могут быть использованы для расчета коэффициентов масштабирования, предлагается передавать параметры опорной области, которые могут быть использованы для расчета масштабирования для RPR и Scalability.
[97] В одном из вариантов осуществления, показанном на фиг. 7, флаг conformance_window_flag может передаваться в PPS. Флаг conformance_window_flag, равный 1, может указывать на то, что параметры смещения окна обрезки следуют далее в PPS. Флаг conformance_window_flag, равный 0, может указывать на то, что параметры смещения окна обрезки отсутствуют.
[98] В варианте осуществления, показанном на фиг. 7, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset определяют отсчеты изображений, ссылающихся на PPS, которые выводятся в процессе декодирования, в терминах прямоугольной области, указанной в координатах изображения для вывода. Когда параметр conformance_window_flag равен 0, значения conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset могут быть выведены равными 0.
[99] В одном из вариантов осуществления окно обрезки может содержать отсчеты яркости с горизонтальными координатами изображения от
и вертикальные координаты изображения из  включительно.
[100] Значение  может быть меньше а значение
может быть меньше
[101] Переменные PicOutputWidthL и PicOutputHeightL могут быть получены, как показано в уравнении 1 и уравнении 2 ниже:
[102] Когда значение ChromaArrayType не равно 0, соответствующие указанные отсчеты двух массивов цветности могут являться отсчетами, имеющими координаты изображения (х / SubWidthC, у / SubHeightC), где (х, у) - координаты изображения указанных отсчетов яркости.
[103] В одном из вариантов осуществления флаг может присутствовать в PPS или другом наборе параметров и может указывать на то, передаются ли явным образом в PPS или другом наборе параметров размеры передискретизированного изображения (ширина и высота) или нет. Если параметры размера изображения для передискретизации передаются явно, коэффициент передискретизации между текущим изображением и опорным изображением может быть рассчитан на основе размеров передискретизированного изображения.
[104] В одном из вариантов осуществления, показанном на фиг. 8А, use_conf_win_for_rpr_flag, равный 0, может указывать на то, что отсчеты resampled_pic_width_in_luma_samples и отсчеты resampled_pic_height_in_luma_samples следуют в подходящем месте, например, далее в PPS.
[105] В одном из вариантов осуществления use_conf_win_for_rpr_flag, равный 1, может указывать на то, что отсчеты resampling_pic_width_in_lumasamples и resampling_pic_height_in_luma_samples отсутствуют.
[106] В одном из вариантов осуществления resampling_pic_width_in_luma_samples может означать ширину каждого опорного изображения, относящегося к PPS, в единицах отсчетов яркости для передискретизации. Значение параметра resampling_pic_width_in_luma_samples может быть не равно 0, может быть целым числом, кратным Мах(8, MinCbSizeY), и может быть меньше или равно значению pic_width_max_in_lumas_amples.
[107] В одном из вариантов осуществления resampling_pic_height_in_luma_samples может означать высоту каждого опорного изображения, относящегося к PPS в единицах отсчетов яркости, для передискретизации. Значение параметра resampling_pic_height_in_luma_samples может быть не равно 0 и может быть целым числом, кратным Мах(8, MinCbSizeY), и может быть меньше или равно значению pic_height_max_in_luma_samples.
[108] Если элемент синтаксиса resampling_pic_width_in_luma_samples отсутствует, значение resampling_pic_width_in_luma_samples может быть получено равным PicOutputWidthL.
[109] Если элемент синтаксиса resampling_pic_height_in_luma_samples отсутствует, значение resampling_pic_height_in_luma_samples может быть получено равным PicOutputHeightL.
[110] В одном из вариантов осуществления пример процесса дробной интерполяции с передискретизацией опорного изображения может быть обработан следующим образом:
[111] Входными данными для этого процесса могут быть: расположение яркости (xSb, ySb), определяющее левый верхний отсчет текущего субблока кодирования относительно левого-верхнего отсчета яркости текущего изображения, переменная sbWidth, определяющая ширину текущего субблока кодирования, переменная sbHeight, определяющая высоту текущего субблока кодирования, смещение вектора движения mvOffset, уточненный вектор движения refMvLX, выбранный массив отсчетов опорного изображения refPicLX, индекс фильтра интерполяции половинного отсчета hpelIfIdx, флаг двунаправленного оптического потока bdofFlag, и переменная cldx, указывающая индекс цветового компонента текущего блока.
[112] Выходными данными этого процесса могут быть:
массив значений отсчетов предсказания predSamplesLX.
[113] Размер расширения границы блока предсказания brdExtSize может быть получен в соответствии с уравнением 3 следующим образом:
[114] Переменная fRefWidth может быть задана равной значению resampling_pic_width_in_luma_samples опорного изображения в отсчетах яркости.
[115] Переменная fReffleight может быть задана равной resampling_pic_height_in_luma samples опорного изображения в отсчетах яркости.
[116] Вектор движения mvLX может быть задан равным (refMvLX - mvOffset).
[117] Если значение cIdx равно 0, коэффициенты масштабирования и их представления с фиксированной точкой могут быть определены в соответствии с уравнением 4 и уравнением 5 ниже:
[118] Пусть (xIntL, yIntL) - местоположение яркости, заданное в единицах целых отсчетов, и (xFracL, yFracL) - смещение, заданное в единицах 1/16 отсчетов. Эти переменные могут использоваться для указания местоположений дробных отсчетов внутри массивов опорных отсчетов refPicLX.
[119] Левая верхняя координата ограничивающего блока для заполнения опорного отсчета (xSbmtL, ySbmtL) может быть установлена равной (xSb+(mvLX[0] >> 4), ySb+(mvLX[1] >> 4)).
[120] Для каждого местоположения отсчета яркости (xL=0..sbWidth - 1+brdExtSize, yL=0..sbHeight - 1+brdExtSize) в составе массива отсчетов для предсказания яркости predSamplesLX соответствующее значение отсчетов для предсказания яркости predSamplesLX[xL][yL] может быть получено следующим образом:
L
L
L
L
L
L
L
L
- Пусть (refxSb, refySb) and (refx, refy) являются местоположениями яркости, на которые указывает вектор движения (refMvLX, refMvLX), заданный в единицах измерения 1/16. Переменные refxSb, refx, refySb и refy могут быть получены, как показано в уравнении 6 через уравнение 9, как показано ниже:
L
L
L
L
- Переменные xInt, yInt, xFrac и yFrac могут быть получены, как показано в уравнении 10 через уравнение 13, как показано ниже:
[121] Если значение bdofflag равно TRUE или (sps_affine_prof_enabled_flag равно TRUE и inter_affine_flag[XSB][YSB] равно TRUE), и одно или более из следующих условий являются истинными, значение отсчетов предсказания яркости predSamplesLX[xL][yL] можно получить, вызвав процесс извлечения целочисленных отсчетов яркости с помощью функции (xIntL+(xFracL >> 3) - 1), yIntL+(yFracL >> 3) - 1) и refPicLX в качестве входных данных.
- xL равно 0.
- xL равно sb Width+1.
- yL равно 0.
- yL равно sbHeight+1.
[122] В противном случае предсказанное значение отсчетов яркости predSamplesLX[XL] [YL] определяется путем вызова процесса фильтрации отсчетов яркости интерполяционным фильтром с 8 отводами с помощью (xIntL - (brdExtSize>0 ? 1:0), yIntL - (brdExtSize>0 ? 1:0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbwidth, sbHeight и (xSb, ySb) в качестве входных данных.
[123] В противном случае (cIdx не равно 0) может применяться следующее:
[124] Пусть (xIntC, yIntC) местоположение цветности, заданное в единицах целых отсчетов, и (xFracC, yFracC) - смещение, заданное в единицах 1/32 отсчета. Эти переменные могут использоваться для указания местоположений дробных отсчетов внутри массивов опорных отсчетов refPicLX.
[125] Левая верхняя координата ограничивающего блока для заполнения опорного отсчета (xSbIntC, ySbIntC) может быть установлена равной ((xSb / SubWidthC)+(mvLX[0] >> 5), (ySb / SubHeightC)+(mvLX[1] >> 5)).
[126] Для каждого местоположения отсчета цветности (хС=0..sbWidth 1, уС=0.. sbHeight 1) в составе массива отсчетов для предсказания цветности predSamplesLX, соответствующее значение отсчета для предсказания цветности predSamplesLX[хС][уС] может быть получено следующим образом:
C
C
C
C
C
C
C
C
- Пусть (refxSb, refySb) и (refx, refy) являются местоположениями цветности, на которые указывает вектор движения (mvLX[0], mvLX[1]), заданный в единицах измерения 1/32. Переменные refxSb, refySb, refx и refy могут быть получены, как показано в уравнении 14 через уравнение 17, как показано ниже:
C
C
C
C
- Переменные xInt, yInt, xFrac и yFrac могут быть получены, как показано в уравнении 18, через уравнение 21, как показано ниже:
[127] Значение отсчета предсказания predSamplesLX[хС][уС] может быть получено путем вызова процесса с (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight и refPicLX в качестве входных данных.
[128] В варианте осуществления, показанном на фиг. 8 В, флаг use_conf_win_for_rpr_flag, равный 0, может указывать, что resampled_pic_width_in_luma samples и resampled_pic_height_in_luma_samples следуют далее в PPS. Значение use_conf_wid_for_rpr_flag, равное 1, указывает, что значения параметров resampling_pic_width_in_luma samples и resampling_pic_height_in_luma_samples отсутствуют.
14
14
[129] В одном из вариантов осуществления ref_region_left_offset может задавать горизонтальное смещение между левым верхним отсчетом яркости опорной области в декодированном изображении. Значение ref_region_left_offset должно находиться в диапазоне от -2 до 2 - 1 включительно. Если значение ref_region_left_offset отсутствует, можно считать, что оно равно conf_win_left_offset.
14
14
[130] В одном из вариантов осуществления ref_region_top_offset может задавать вертикальное смещение между левым верхним отсчетом яркости опорной области в декодированном изображении. Значение ref_region_top_offset должно находиться в диапазоне от -2 до 2 - 1 включительно. Если значение ref_region_top_offset отсутствует, можно считать, что оно равно conf_win_right_offset.
14
14
[131] В одном из вариантов осуществления ref_region_right_offset может задавать горизонтальное смещение между нижним правым отсчетом яркости опорной области в декодированном изображении. Значение ref_layer-right_offset должно находиться в диапазоне от -2 до 2 - 1 включительно. Если значение ref_region_right_offset отсутствует, можно считать, что оно равно conf_win_top_offset.
14
14
[132] В одном из вариантов осуществления ref_region_bottom_offset может задавать вертикальное смещение между нижним правым отсчетом яркости опорной области в декодированном изображении. Значение ref_layer_bottom_offset должно находиться в диапазоне от -2 до 2 - 1 включительно. Если значение ref_region_bottom_offset[ref_loc_offset_layer_id[i]] отсутствует, можно считать, что оно равно с onf_win_bottom_offs_et.
[133] Переменные PicRefWidthL и PicRefHeightL могут быть получены, как показано в уравнении 22 и уравнении 23, как показано ниже:
[134] Переменная fRefWidth может быть задана равной значению PicRefWidthL опорного изображения в отсчетах яркости.
[135] Переменная fRefHeight может быть задана равной значению PicRefHeightL опорного изображения в отсчетах яркости.
[136] Вектор движения mvLX может быть задан равным (refMvLX mvOffset).
[137] Если cIdx равно 0, коэффициенты масштабирования и их представления с фиксированной точкой могут быть определены, как показано в уравнении 24 и уравнении 25, как показано ниже:
L
L
[138] Левая верхняя координата ограничивающего блока для заполнения опорного отсчета (xSbInt, ySbint) может быть задана равной (xSb+(mvLX[0] >> 4), ySb+(mvLX[1] >> 4)).
[139] Для каждого местоположения отсчета яркости
L
L
L
L
(x=0..sbWidth - 1+brdExtSize, y=0..sbHeight 1+brdExtSize) в составе массива отсчетов для предсказания яркости predSamplesLX соответствующее значение отсчетов для предсказания яркости predSamplesLX[x][y] может быть получено следующим образом:
L
L
L
L
L
L
L
L
- Пусть (refxSb, refySb) and (refx, refy) являются местоположениями яркости, на которые указывает вектор движения (refMvLX, refMvLX), заданный в единицах измерения 1/16. Переменные refxSb, refx, refySb и refy могут быть получены, как показано в уравнении 26, через уравнение 29, как показано ниже:
[140] В варианте осуществления, показанном на фиг. 9, когда коэффициент передискретизации для передискретизации опорного изображения рассчитывается на основе размера окна соответствия, декодер, выполняющий процесс декодирования текущего блока с межпиксельным предсказанием с компенсацией движения, может получить доступ к одному или нескольким пикселям из числа декодированных пикселей опорного изображения. В некоторых случаях процесс декодирования может использовать недоступные декодированные изображения в DPB, что может привести к сбою декодера или нежелательному поведению при декодировании.
[141] Например, как показано на фиг. 9, на основе декодированного изображения, имеющего размер декодированного изображения 903 и размер окна соответствия 904, и опорного изображения, имеющего размер декодированного изображения 901 и размер окна соответствия 902, процесс декодирования для текущего блока 906 может использовать опорный блок 905, который отсутствует.
[142] Для решения этой проблемы в некоторых случаях для расчета коэффициента передискретизации при передискретизации опорного изображения может использоваться явная сигнализация размера передискретизированного изображения.
[143] В одном из вариантов осуществления размер окна соответствия может не подходить для использования при расчете коэффициента передискретизации для передискретизации опорного изображения, когда размер окна соответствия не соответствует фактическому коэффициенту передискретизации. Например, размер окна соответствия может отличаться от желаемого коэффициента дискретизации, когда текущее изображение состоит из стереоскопических субизображений (левого и правого) или нескольких граней 360-градусного изображения (например, шесть граней проекции кубической текстуры). В некоторых случаях размер окна соответствия может охватывать подобласть декодированного изображения. В этих случаях для расчета коэффициента передискретизации можно альтернативно использовать размер передискретизированного изображения.
[144] На фиг. 10 представлена блок-схема, представляющая собой пример процесса 1000 для декодирования кодированного битового потока видео. В некоторых вариантах осуществления один или более технологических блоков на фиг. 10 могут быть выполнены в виде декодера 210. В некоторых вариантах осуществления один или более технологических блоков на фиг. 10 могут быть выполнены в виде другого устройства или группы устройств, отдельных от декодера 210 или включающих в себя декодер 210, такой как кодер 203.
[145] Как показано на фиг. 10, процесс 1000 может включать в себя получение первого флага, указывающего, что окно соответствия присутствует в текущем изображении (блок 1010).
[146] Как далее показано на фиг. 10, процесс 1000 может включать в себя, на основе первого флага, указывающего, что окно соответствия присутствует, получение второго флага, указывающего, используется ли окно соответствия для передискретизации опорного изображения (блок 1020).
[147] Как далее показано на фиг. 10, процесс 1000 может включать в себя определение того, указывает ли второй флаг, что окно соответствия используется для передискретизации опорного изображения (блок 1030). Если второй флаг определен как указывающий, что окно соответствия используется для передискретизации опорного изображения (ДА, в блоке 1030), процесс 1000 может перейти к блоку 1040, а затем к блоку 1060. В блоке 1040 процесс 1000 может включать определение коэффициента передискретизации между текущим изображением и опорным изображением на основе размера окна соответствия.
[148] Если второй флаг определен как не указывающий, что окно соответствия используется для передискретизации опорного изображения (НЕТ, в блоке 1030), процесс 1000 может перейти к блоку 1050, а затем к блоку 1060. В блоке 1050 процесс 1000 может включать определение коэффициента передискретизации на основе размера передискретизированного изображения.
[149] Как показано далее на фиг. 10, процесс 1000 может включать выполнение передискретизации опорного изображения в текущем изображении с использованием коэффициента передискретизации (блок 1060).
[150] В одном из вариантов осуществления первый флаг и второй флаг могут передаваться в наборе параметров изображения.
[151] В одном из вариантов осуществления размер окна соответствия может быть определен на основе по меньшей мере одного расстояния смещения от границы текущего изображения.
[152] В одном из вариантов осуществления по меньшей мере одно расстояние смещения может быть указано в наборе параметров изображения.
[153] В одном из вариантов осуществления размер передискретизированного изображения может быть указан в кодированном видеобитовом потоке как по меньшей мере одно из значений ширины передискретизированного изображения и высоты передискретизированного изображения.
[154] В одном из вариантов осуществления по меньшей мере одно из значений ширины и высоты может передаваться в наборе параметров изображения.
[155] В одном из вариантов осуществления по меньшей мере одно из значений ширины и высоты может быть выражено в виде количества отсчетов яркости, включенных по меньшей мере в одно из ширины и высоты.
[156] В одном из вариантов осуществления размер передискретизированного изображения может быть определен на основе по меньшей мере одного расстояния смещения от левого верхнего отсчета яркости опорной области текущего изображения.
[157] В одном из вариантов осуществления по меньшей мере одно расстояние смещения может передаваться в наборе параметров изображения.
[158] Хотя на фиг. 10 показаны примеры блоков процесса 1000, в некоторых вариантах осуществления процесс 1000 может включать дополнительные блоки, меньшее количество блоков, другие блоки или блоки, расположенные по-другому, чем те, которые изображены на фиг. 10. Дополнительно или альтернативно, два или более блоков процесса 1000 могут выполняться параллельно.
[159] Кроме того, предлагаемые способы могут быть реализованы с помощью схем обработки (например, одного или нескольких процессоров или одной или нескольких интегральных схем). В одном из примеров один или более процессоров выполняют программу, которая хранится на нестационарном машиночитаемом носителе, для выполнения одного или нескольких предложенных способов.
[160] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 11 показана компьютерная система 1100, пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[161] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[162] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[163] Компоненты компьютерной системы 1100, показанные на фиг. 11, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы 1100.
[164] Компьютерная система 1100 может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[165] Устройства ввода человеческого интерфейса могут включать одно или более из перечисленных (изображено только одно из них): клавиатуру 1101, мышь 1102, трекпад 1103, сенсорный экран 1110 и соответствующий графический адаптер 1150, информационную перчатку, джойстик 1105, микрофон 1106, сканер 1107, камеру 1108.
[166] Компьютерная система 1100 также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана 1110, информационной перчатки (не показана) или джойстика 1105, но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители 1109, наушники (не показаны)), устройства визуального вывода (например, экраны 1110, в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голо графических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[167] Компьютерная система 1100 также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW 1120 с носителями 1121 CD/DVD и т.п., карты 1122 флэш-памяти, сменный жесткий диск или твердотельный диск 1123, традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[168] Специалисты в данной области техники также должны понимать, что термин "машиночитаемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[169] Компьютерная система 1100 также может включать интерфейс(ы) к одной или нескольким сетям связи 1155. Сети могут, например, быть беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные локальные сети, сотовые сети, включающие глобальные системы мобильной связи (GSM), системы третьего поколения (3G), четвертого поколения (4G), пятого поколения (5G), стандарта LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса (1154), которые подключены к некоторым портам данных общего назначения или периферийным шинам (1149) (например, USB-порты компьютерной системы 1100); другие обычно встраиваются в ядро компьютерной системы 1100 путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). В качестве примера, сеть 1155 может быть подключена к периферийной шине 1149 с использованием сетевого интерфейса 1154. Используя любую из этих сетей, компьютерная система 1100 может взаимодействовать с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов (1154).
[170] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру 1140 компьютерной системы 1100.
[171] Ядро 1140 может включать один или более центральных процессоров (CPU) 1141, графические процессоры (GPU) 1142, специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) 1143, аппаратные ускорители 1144 для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) 1145, оперативной памятью 1146, внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. 1147, могут соединяться посредством системной шины 1148. В некоторых компьютерных системах системная шина 1148 может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине 1148 ядра, либо через периферийную шину 1149. Архитектуры периферийной шины включают в себя PCI, USBht. п.
[172] CPU 1141, GPU 1142, FPGA 1143 и ускорители 1144 могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM 1145 или RAM 1146. Переходные данные также могут храниться в оперативной памяти 1146, тогда как постоянные данные могут храниться, например, во внутреннем накопителе 1147. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU 1141, GPU 1142, хранилищем 1147 данных большой емкости, ROM 1145, RAM 1146 и т.п.
[173] На машиночитаемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[174] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру 1100, и, в частности, ядро 1140 может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра 1140, носящим долговременный характер, например, внутренним хранилищем 1147 данных большой емкости или ROM 1145. Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 1140. Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру 1140 и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM 1146, и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель 1144), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, где это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IС, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
[175] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.