СПОСОБ СИГНАЛИЗИРОВАНИЯ НАБОРА ВЫХОДНЫХ СЛОЕВ В МАСШТАБИРУЕМОМ ВИДЕО ПОТОКЕ
METHOD FOR SIGNALING OF SET OF OUTPUT LAYERS IN SCALABLE VIDEO STREAM

Перекрестная ссылка на родственную заявку
[1] Эта заявка испрашивает приоритет предварительной заявки на патент США №62/912 275, поданной 8 октября 2019 г., и заявки на патент США №17/030 950, поданной 24 сентября 2020 г., которые полностью включены в настоящий документ.
Область техники, к которой относится изобретение
[2] Раскрытый предмет изобретения относится к кодированию и декодированию видео, а конкретнее, к механизму сигнализирования набора выходных слоев для масштабируемого потока видео.
Уровень техники
[3] ITU-T VCEG (Q6 / 16) и ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) опубликовали стандарт H.265 / HEVC (высокоэффективное кодирование видео) в 2013 г. (версия 1) 2014 г. (версия 2) 2015 г. (версия 3) и 2016 (версия 4). В 2015 году эти две организации по стандартизации совместно сформировали JVET (Joint Video Exploration Team), чтобы изучить потенциал разработки следующего стандарта кодирования видео помимо HEVC. В октябре 2017 года они объявили совместный конкурс предложений по сжатию видео с возможностями, выходящими за рамки HEVC (CfP). К 15 февраля 2018 г. было подано в общей сложности 22 ответа CfP по стандартному динамическому диапазону (SDR), 12 ответов CfP по расширенному динамическому диапазону (HDR) и 12 ответов CfP по категориям видео 360 градусов, соответственно. В апреле 2018 года все полученные ответы CfP были оценены на 122-м MPEG/10-м JVET заседании. В результате этой встречи JVET официально запустил процесс стандартизации кодирования видео следующего поколения за пределами HEVC. Новый стандарт получил название Versatile Video Coding (VVC), a JVET был переименован в Joint Video Expert Team.
Раскрытие сущности изобретения
[4] В одном из вариантов осуществления предложен способ декодирования кодированного битового потока видео с использованием по меньшей мере одного процессора, включающий в себя получение кодированной видеопоследовательности, включающей в себя множество наборов выходных слоев, из кодированного битового потока видео; получение первого флага, указывающего, включает ли каждый набор выходных слоев из множества наборов выходных слоев более одного слоя; на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя более одного слоя, получение первого элемента синтаксиса, указывающего режим набора выходных слоев; выбирание по меньшей мере одного слоя из числа слоев, включенных во множество наборов выходных слоев, в качестве по меньшей мере одного выходного слоя на основе по меньшей мере одного из первого флага и первого элемента синтаксиса; и выведение по меньшей мере одного выходного слоя.
[5] В одном из вариантов осуществления предложено устройство для декодирования кодированного битового потока видео, содержащее по меньшей мере один элемент памяти, сконфигурированный для хранения программного кода; и по меньшей мере один процессор, конфигурированный для считывания программного кода и работы в соответствии с инструкциями программного кода, причем программный код включает в себя: первый код получения, сконфигурированный так, чтобы предписывать по меньшей мере одному процессору получать кодированную видеопоследовательность, включающую в себя множество наборов выходных слоев, из кодированного битового потока видео; второй код получения, сконфигурированный так, чтобы предписывать по меньшей мере одному процессору получать первый флаг, указывающий, включает ли каждый набор выходных слоев из множества наборов выходных слоев более одного слоя; третий код получения, сконфигурированный так, чтобы предписывать по меньшей мере одному процессору, на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя более одного слоя, получать первый элемент синтаксиса, указывающий режим набора выходных слоев; код выбирания, сконфигурированный так, чтобы предписывать по меньшей мере одному процессору выбирать слой из числа слоев, включенных во множество наборов выходных слоев, в качестве по меньшей мере одного выходного слоя на основе по меньшей мере одного из первого флага и первого элемента синтаксиса; и код выведения, сконфигурированный так, чтобы предписывать по меньшей мере одному процессору выводить по меньшей мере один выходной слой.
[6] В одном из вариантов осуществления предлагается невременный машиночитаемый носитель, хранящий инструкции, содержащие одну или более инструкций, которые при исполнении одним или более процессорами устройства для декодирования кодированного битового потока видео предписывают одному или более процессорам: получать кодированную видеопоследовательность, включающую в себя множество наборов выходных слоев, из кодированного битового потока видео; получать первый флаг, указывающий, включает ли каждый набор выходных слоев из множества наборов выходных слоев более одного слоя; на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя более одного слоя, получать первый элемент синтаксиса, указывающий режим набора выходных слоев; выбирать по меньшей мере один слой из числа слоев, включенных во множество наборов выходных слоев, в качестве по меньшей мере одного выходного слоя, на основе по меньшей мере одного из первого флага и первого элемента синтаксиса; выводить по меньшей мере один выходной слой.
Краткое описание чертежей
[7] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более понятны из следующего подробного описания и прилагаемых чертежей, на которых:
[8] На фиг. 1 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[9] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[10] На фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[11] На фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[12] На фиг. 5 показана схематическая иллюстрация примеров таблицы синтаксиса в соответствии с вариантом осуществления.
[13] На фиг. 6 показана блок-схема примерного процесса декодирования кодированного битового потока видео в соответствии с вариантом осуществления.
[14] На фиг. 7 показана схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления.
Осуществление изобретения
[15] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего раскрытия. Система (100) может включать в себя по меньшей мере два терминала (110 и 120), соединенных между собой через сеть (150). Для однонаправленной передачи данных первый терминал (110) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (120) через сеть (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[16] На фиг. 1 показана вторая пара терминалов (130, 140), обеспечивающая поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных каждый терминал (130, 140) может кодировать видеоданные, захваченные в локальном местоположении, для передачи другому терминалу через сеть (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[17] На фиг. 1 терминалы (110-140) могут быть изображены как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (150) представляет собой любое количество сетей, которые передают кодированные видеоданные между терминалами (110-140), включая, например, сети проводной и/или беспроводной связи. Сеть (150) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.
[18] На фиг. 2 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[19] Система потоковой передачи может включать в себя подсистему (213) захвата, которая может включать в себя источник (201) видео, например цифровую камеру, создающую, например, поток (202) отсчетов несжатого видео. Данный поток (202) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми видеопотоками, может быть обработан кодером (203), подключенным к камере (201). Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированный битовый поток (204) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может храниться на сервере (205) потоковой передачи для будущего использования. Один или более клиентов (206, 208) потоковой передачи могут получить доступ к серверу (205) потоковой передачи для извлечения копий (207, 209) кодированного битового видеопотока (204). Клиент (206) может включать в себя видеодекодер (210), который декодирует входящую копию кодированного битового видеопотока (207) и создает исходящий поток (211) отсчетов видео, который может отображаться на дисплее (212) или другом устройстве визуализации (не изображено). В некоторых системах потоковой передачи битовые видеопотоки (204, 207, 209) могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T Н.265. В стадии разработки находится стандарт кодирования видео, неофициально известный как универсальное кодирование видео или VVC. Раскрытый объект изобретения может использоваться в контексте VVC.
[20] Фиг. 3 может быть функциональной блок-схемой видеодекодера (210) согласно варианту осуществления настоящего раскрытия.
[21] Приемник (310) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы декодером (210); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (312), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (310) и энтропийным декодером/парсером (320) (далее «парсер») может быть подключена буферная память (315). Когда приемник (310) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (315) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буфер (315), который может быть сравнительно большим и может быть предпочтительно адаптивного размера.
[22] Видеодекодер (210) может включать в себя синтаксический анализатор (320) для восстановления символов (321) из энтропийной кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (210), и потенциально информацию для управления устройством визуализации, таким как дисплей (212), который не является неотъемлемой частью декодера, но может быть подключен к нему, как это было показано на фиг. 3. Управляющая информация для устройства (устройств) визуализации может быть в форме информации дополнительного улучшения (сообщения SEI) или фрагментов набора параметров информации о пригодности видео (VUI) (не изображены). Парсер (320) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать принципам, хорошо известным специалистам в уровне техники, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Субгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, кирпичики, макроблоки, единицы дерева кодирования (CTU), единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Тайл может указывать прямоугольную область CU/CTU в конкретном столбце и ряде тайлов в изображении. Кирпичик может указывать на прямоугольную область рядов CU/CTU в пределах конкретного тайла. Слайс может указывать на один или более кирпичиков изображения, которые содержатся в единице NAL. Субизображение может указывать на прямоугольную область одного или более слайсов в изображении. Энтропийный декодер/парсер также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[23] Парсер (320) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буфера (315), чтобы создавать символы (321).
[24] Восстановление символов (321) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: внешнее и внутреннее изображение, внешний и внутренний блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (320). Поток такой управляющей информации подгруппы между парсером (320) и множеством модулей ниже не показан для ясности.
[25] Помимо уже упомянутых функциональных блоков, декодер 210 может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[26] Первым модулем является модуль (351) масштабирования/обратного преобразования. Модуль (351) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (321) от парсера (320). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (355).
[27] В некоторых случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интракодированием; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (352) внутрикадрового предсказания. В некоторых случаях модуль (352) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (358). Агрегатор (355), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (352) интрапредсказания, к информации выходных отсчетов, предоставляемой модулем (351) масштабирования/обратного преобразования.
[28] В других случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интеркодированием и потенциально с компенсацией движения. В таком случае модуль (353) предсказания с компенсацией движения может обращаться к памяти (357) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (321), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (355) к выходу модуля масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда модуль предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.
[29] Выходные отсчеты агрегатора (355) могут подвергаться различным методам петлевой фильтрации в модуле (356) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в битовый поток кодированного видео и предоставляются модулю (356) петлевой фильтрации как символы (321) из парсера (320), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные посредством петлевой фильтрации значения отсчетов.
[30] Выходной сигнал модуля (356) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (212) визуализации, а также сохранен в памяти опорных изображений для использования в будущем межкадровом предсказании.
[31] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, парсером (320)), текущее опорное изображение (358) может стать частью буфера (357) опорных изображений, и свежая память текущих изображений может быть перераспределена перед началом восстановления следующего кодированного изображения.
[32] Видеодекодер 210 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть задокументирована в стандарте, таком как ITU-T Rec. H.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в их документе профилей. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях слои ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные слоями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического опорного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[33] В варианте осуществления приемник (310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[34] Фиг. 4 может быть функциональной блок-схемой видеокодера (203) согласно варианту осуществления настоящего раскрытия.
[35] Кодер (203) может принимать отсчеты видео от источника (201) видео (который не является частью кодера), который может захватывать видеоизображение(я) для кодирования кодером (203).
[36] Источник (201) видео может предоставить исходную видеопоследовательность для кодирования кодером (203) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (201) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (203) видео может быть камерой, которая захватывает информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[37] Согласно варианту осуществления кодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (450). Контроллер управляет другими функциональными модулями, как описано ниже, и функционально связан с этими модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером, могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Специалист в данной области техники может легко определить другие функции контроллера (450), поскольку они могут относиться к видеокодеру (203), оптимизированному для определенной конструкции системы.
[38] Некоторые видеокодеры работают в том, что специалист в данной области легко распознает как «петля кодирования». В качестве упрощенного описания петля кодирования может состоять из кодирующей части кодера (430) (далее «кодер источника») (ответственной за создание символов на основе входного изображения, которое должно быть кодировано, и опорного изображения(й)), и (локального) декодера (433), встроенного в кодер (203), который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также может создать (поскольку любое сжатие между символами и кодированным битовым видеопотоком не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте). Этот восстановленный поток отсчетов вводится в память (434) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое буфера опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видел» бы при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области техники.
[39] Работа «локального» декодера (433) может быть такой же, как у «удаленного» декодера (210), который уже был подробно описан выше в описании к фиг. 3. Кратко ссылаясь также на фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и парсером (320) может осуществляться без потерь, части энтропийного декодирования декодера (210), включая канал (312), приемник (310), буфер (315) и парсер (320), не могут быть полностью реализованы в локальном декодере (433).
[40] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсинга/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[41] В качестве части своей работы кодер (430) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее кодированных кадров из видеопоследовательности, которые были обозначены как «опорные кадры». Таким образом, подсистема (432) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(ов), которые могут быть выбраны в качестве эталона(ов) предсказания для входного кадра.
[42] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (430) источника. Операции подсистемы (432) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, в качестве восстановленных опорных кадров, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[43] Предиктор (435) может выполнять поиски с предсказанием для подсистемы (432) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (435) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (435), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (434) опорных изображений.
[44] Контроллер (450) может управлять операциями кодирования видеокодера (430), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[45] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно технологиям, известным специалистам в данной области техники, как, например, кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.
[46] Передатчик (440) может буферизовать кодированную видеопоследовательность(и), созданную энтропийным кодером (445), чтобы подготовить ее к передаче через канал (460) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить кодированные видеоданные. Передатчик (440) может обеспечивать слияние кодированных видеоданных из видеокодера (430) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[47] Контроллер (450) может управлять работой кодера (203). Во время кодирования контроллер (450) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов кадров:
[48] Внутреннее изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы внутренних изображений, включая, например, изображения с независимым обновлением декодера. Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.
[49] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[50] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[51] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[52] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как Рекомендация МСЭ-Т Н.265. В своей работе видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[53] В варианте осуществления передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать в себя такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения информации дополнительного улучшения (SEI), фрагменты набора параметров информации о пригодности видео (VUI) и так далее.
[54] Варианты осуществления могут относиться к механизму сигнализирования набора выходных слоев для масштабируемого видеопотока. Варианты осуществления могут относиться к способу получения соответствующих (напрямую зависимых/независимых) слоев каждого набора выходных слоев из информации слоя прямой опоры, когда выходные слои сигнализируют для каждого набора выходных слоев.
[55] В вариантах осуществления выходной слой может относиться к слою из набора выходных слоев, который является выходным. В вариантах осуществления набор выходных слоев может относиться к заданному набору слоев, где один или более слоев в наборе слоев указаны в качестве выходных слоев. В вариантах осуществления, индекс слоя в наборе выходных слоев может относиться к индексу слоя в OUTPUTLAYERSET, к списку слоев в OUTPUTLAYERSET.
[56] На фиг. 5 показан пример таблицы синтаксиса, относящейся к синтаксису полезной нагрузки необработанной последовательности байтов (RBSP) набора параметров видео (VPS), в соответствии с вариантом осуществления.
[57] В вариантах осуществления, RBSP VPS может быть доступной для процесса декодирования до того, как быть опорной, включенной по меньшей мере в одну единицу доступа с TemporalId, равным 0, или предоставленным через внешние средства, а единица NAL VPS, содержащая RBSP VPS, может иметь nuh_layer_id равный vps_layer_id[0].
[58] Все единицы NAL VPS с определенным значением vps_video_parameter_set_id в CVS могут иметь одинаковое содержимое.
[59] vps_video_parameter_set_id предоставляет идентификатор VPS для ссылки другими элементами синтаксиса.
[60] Значение vps_max_layers_minus1 плюс 1 может указывает максимально допустимое количество слоев в каждом CVS, ссылающемся на VPS.
[61] Значение vps_all_independent_layers_flag, равное 1, может указывать, что все слои в CVS независимо кодируются без использования межслойного предсказания. Значение vps_all_independent_layers_flag, равное 0, может указывать, что один или более слоев в CVS могут использовать межслойное предсказание. При отсутствии, значение vps_all_independent_layers_flag может быть выведено равным 1. Когда vps_all_independent_layers_flag равно 1, значение vps_independent_layer_flag [i] может быть выведено равным 1.
[62] vps_layer_id [i] может указывать значение nuh_layer_id i-го слоя. Для любых двух неотрицательных целочисленных значений m и n, когда m меньше n, значение vps_layer_id [m] может быть меньше vps_layer_id [n].
[63] При этом vps_independent_layer_flag [i], равный 1, может указывать на то, что слой с индексом i не использует межслойное предсказание. При этом vps_independent_layer_flag [i], равный 0, может указывать, что слой с индексом i может использовать межслойное предсказание, а в VPS присутствует vps_layer_dependency_flag [i]. При отсутствии, значение vps_independent_layer_flag [i] может быть выведено равным 1.
[64] vps_direct_ref_layer_flag [i] [j], равное 0, может указывать, что слой с индексом j не является слоем прямой опоры для слоя с индексом i. При этом vps_direct_ref_layer_flag [i] [j], равное 1, может указывать, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда vps_direct_ref_layer_flag [i] [j] не присутствует для i и j в диапазоне от 0 до vps_max_layers_minus 1 включительно, он может быть выведено равным 0.
[65] Переменные NumDirectRefLayers [i], DirectRefLayerIdx [i] [d], NumRefLayers [i] и RefLayerIdx [i] [г] могут быть получены следующим образом:
[66] Переменная GeneralLayerIdx [i], определяющая индекс слоя для слоя с nuh_layer_id, равным vps_layer_id [i], может быть получена следующим образом:
[67] each_layer_is_an_outputLayerSet_flag, равный 1, может указывать, что каждый набор выходных слоев содержит только один слой, и каждый слой в потоке битов сам по себе является набором выходных слоев с единственным включенным слоем, являющимся выходным слоем. При этом each_layer_is_an_outputLayerSet_flag равно 0 может указывать, что набор выходных слоев может содержать более одного слоя. Если vps_max_layers_minus1 равно 0, значение vlaue для each_layer_is_an_outputLayerSet_flag может быть выведено равным 1. В противном случае, когда vps_all_independent_layers_flag равно 0, значение each_layer_is_an_outputLayerSet_flag может быть выведено равным 0.
[68] outputLayerSet_mode_idc, равный 0, может указывать, что общее количество OUTPUTLAYERSET, заданное VPS, равно vps_max_layers_minus1+1, i-й OUTPUTLAYERSET включает слои с индексами слоев от 0 до i включительно, и для каждого OUTPUTLAYERSET выводят только самый высокий слой OUTPUTLAYERSET.
[69] outputLayerSet_mode_idc, равный 1, может указывать, что общее количество OUTPUTLAYERSET, заданное VPS, равно vps_max_layers_minus1+1, i-й OUTPUTLAYERSET включает слои с индексами слоев от 0 до i включительно, и для каждого OUTPUTLAYERSETUTLAYERSET выводятся все слои в OUTPUTLAYERSETLAYERSET.
[70] outputLayerSet_mode_idc, равный 2, может указывать, что общее количество OUTPUTLAYERSET, заданное VPS, явно сигнализируется, и для каждого OUTPUTLAYERSET явно сигнализируются выходные слои, а другие слои являются слоями, которые являются слоями прямой или косвенной опоры выходных слоев OUTPUTLAYERSET.
[71] Значение outputLayerSet_mode_idc может находиться в диапазоне от 0 до 2 включительно. Значение 3 outputLayerSet_mode_idc зарезервировано для будущего использования ITU-T | ISO/IEC.
[72] Когда vps_all_independent_layers_flag равен 1 и each_layer_is_an_outputLayerSet_flag равен 0, значение outputLayerSet_mode_idc может быть выведено равным 2.
[73] num_output_layer_sets_minus1 плюс 1 может указывать общее количество OUTPUTLAYERSET, указанных VPS, когда outputLayer_Set_mode_idc равно 2.
[74] Переменная TotalNumOutputLayerSets, определяющая общее количество OUTPUTLAYERSET, заданных VPS, может быть получена следующим образом:
[75] outputLayerSet_output_layer_flag [i] [j], равный 1, может указывать, что слой с nuh_layer_id, равным vps_layer_id [j], является выходным слоем i-го OUTPUTLAYERSET, когда outputLayerSet_mode_idc равен 2. При этом outputLayerSet_output_layer_flag[i][j] равный 0 может указывать, что слой с nuh_layer_id, равным vps_layer_id [j], не является выходным слоем i-го OUTPUTLAYERSET, когда outputLayerSet_mode_idc равно 2.
[76] Переменная NumOutputLayersInOutputLayerSet [i], указывающая количество выходных слоев в i-м OUTPUTLAYERSET, и переменная OutputLayerldlnOutputLayerSet [i] [j], определяющая значение nuh_layer_id для j-го выходного слоя в i-м OUTPUTLAYERSET, получается следующим образом:
[77] Переменная NumLayersInOutputLayerSet [i], указывающая количество слоев в i-м OUTPUTLAYERSET, и переменная LayerIdInOutputLayerSet [i] [j], определяющая значение nuh_layer_id для j-го слоя в i-м OUTPUTLAYERSET, получается следующим образом:
[78] Переменная OutputLayerSetLayeIdx [i] [j], указывающая индекс слоя OUTPUTLAYERSET слоя с nuh_layer_id, равным LayerIdInOutputLayerSet[i][j], может быть получена следующим образом:
[79] Самый нижний слой в каждой OUTPUTLAYERSET может быть независимым слоем. Другими словами, для каждого i в диапазоне от 0 до TotalNumOutputLayerSets-1 включительно значение vps_independent_layer_flag [GeneralLayerIdx [LayerIdInOutputLayerSet [i] [0]]] может быть равно 1.
[80] Каждый слой может быть включен по крайней мере в один OUTPUTLAYERSET, указанный VPS. Другими словами, для каждого слоя с конкретным значением nuh_layer_id_nuhLayerId, равным одному из vps_layer_id [k] для k в диапазоне от 0 до vps_max_layers_minus1 включительно, может быть по крайней мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOutputLayerSets - 1 включительно, a j находится в диапазоне NumLayersInOutputLayerSet [i] - 1 включительно, так что значение LayerIdInOutputLayerSet [i] [j] равно nuhLayerId.
[81] vps_constraint_info_present_flag, равный 1, может указывать, что структура синтаксиса general_constraint_info () присутствует в VPS. При этом vps_constraint_info_present_flag, равный 0, может указывать, что структура синтаксиса general_constraint_info () отсутствует в VPS.
[82] vps_reserved_zero_7bits может быть равно 0 в битовых потоках, соответствующих этой версии данной спецификации. Другие значения vps_reserved_zero_7bits зарезервированы для будущего использования ITU-T | ISO/IEC. Декодеры могут игнорировать значение vps_reserved_zero_7bits.
[83] vps_extension_flag, равный 0, может указывать, что в структуре синтаксиса RBSP VPS нет элементов синтаксиса vps_extension_data_flag. При этом vps_extension_flag, равный 1, может указывать, что в структуре синтаксиса RBSP VPS присутствуют элементы синтаксиса vps_extension_data_flag.
[84] vps_extension_data_flag может иметь любое значение. Его наличие и значение не влияют на соответствие декодера профилям, указанным в этой версии данной Спецификации. Декодеры, соответствующие этой версии данной спецификации, могут игнорировать все элементы синтаксиса vps_extension_data_flag.
[85] На фиг. 6 показана примерная блок-схема процесса 600 декодирования кодированного битового потока видео. В некоторых реализациях один или более блоков процессов с фиг. 6 могут выполняться декодером 210. В некоторых реализациях один или более блоков процессов с фиг. 6 могут выполняться другим устройством или группой устройств, отдельной от декодера 210 или включающего в себя его, например кодером 203.
[86] Как показано на фиг. 6, процесс 600 может включать в себя получение кодированной видеопоследовательности, включающей в себя множество наборов выходных слоев, из кодированного битового потока видеоданных (блок 601).
[87] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя получение первого флага (блок 602).
[88] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя определение по первому флагу, включает ли каждый набор выходных слоев из множества наборов выходных слоев более одного слоя (блок 603).
[89] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя, на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя только один слой (НЕТ на блоке 603), выбирание одного слоя каждого набора выходных слоев в качестве по меньшей мере одного выходного слоя (блок 604) и выведение по меньшей мере одного выходного слоя (блок 608).
[90] Как дополнительно показано на фиг. 6, на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя более одного слоя (ДА на блоке 603), процесс 600 может перейти к блоку 605, блоку 606, блоку 607 и блоку 608.
[91] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя получение первого элемента синтаксиса, указывающего режим набора выходных слоев (блок 605).
[92] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя определение режима установки выходного слоя на основе первого элемента синтаксиса (блок 606).
[93] Как дополнительно показано на фиг. 6, процесс 600 может включать в себя выбирание по меньшей мере одного слоя из числа слоев, включенных во множество наборов выходных слоев, в качестве по меньшей мере одного выходного слоя на основе режима набора выходных слоев (блок 607).
[94] Как дополнительно показано на фиг. 6, процесс 600 может включать выведение по меньшей мере одного выходного слоя (блок 608).
[95] В варианте осуществления первый флаг и первый элемент синтаксиса могут сигнализироваться в наборе параметров видео (VPS).
[96] В варианте осуществления один слой может выбираться в качестве по меньшей мере одного выходного слоя на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя только один слой.
[97] В варианте осуществления в качестве по меньшей мере одного выходного слоя может быть выбран самый верхний слой каждого набора выходных слоев на основе первого элемента синтаксиса, указывающего, что режим набора выходных слоев является первым режимом.
[98] В варианте осуществления, в качестве по меньшей мере одного выходного слоя могут быть выбраны все слои, включенные во множество наборов выходных слоев, на основе первого элемента синтаксиса, указывающего, что режим набора выходных слоев является вторым режимом.
[99] В варианте осуществления, на основе первого элемента синтаксиса, указывающего, что режим набора выходных слоев является третьим режимом, из числа слоев, включенных во множество наборов выходных слоев, может быть выбран по меньшей мере один выходной слой на основе второго элемента синтаксиса, который сигнализируется в кодированном битовом потоке видео.
[100] В варианте осуществления, на основе первого элемента синтаксиса, указывающего, что режим набора выходных слоев является третьим режимом, невыбранные слои из числа слоев, включенных во множество наборов выходных слоев, могут использоваться в качестве опорных слоев для по меньшей мере одного выходного слоя.
[101] В варианте осуществления, режим набора выходных слоев может выведен как третий режим, на основе первого флага, указывающего, что каждый набор выходных слоев включает в себя более одного слоя, и второго флага, указывающего, что все слои, включенные во множество наборов выходных слоев, кодируются независимо.
[102] Хотя на фиг. 6 показаны примерные блоки процесса 600, в некоторых реализациях процесс 600 может включать в себя дополнительные блоки, меньшее количество блоков, разные блоки или блоки, расположенные иначе, чем те, которые изображены на фиг. 6. Дополнительно или альтернативно, два или более блока процесса 600 могут выполняться параллельно.
[103] Кроме того, предложенные способы могут быть реализованы схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе, для осуществления одного или более из предложенных способов.
[104] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 7 показана компьютерная система 700, подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[105] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т.п., центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.
[106] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[107] Компоненты, показанные на фиг. 7 для компьютерной системы 700, являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы 700.
[108] Компьютерная система 700 может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[109] Устройства ввода с человеческо-машинным интерфейсом могут включать в себя одно или более из (только одно из каждого изображенного): клавиатура 701, мышь 702, трекпад 703, сенсорный экран 710 и связанный графический адаптер 750, управляющая перчатка, джойстик 705, микрофон 706, сканер 707, камера 708.
[110] Компьютерная система 700 также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана 710, управляющей перчатки 704 или джойстика 705, но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики 709, наушники (не изображены)), устройства вывода изображения (например, экраны 710, включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[111] Компьютерная система 700 также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW 720 с CD/DVD или подобными носителями 721, флэш-накопитель 722, съемный жесткий диск или твердотельный накопитель 723, ранее разработанные магнитные носители, такие как лента и дискета (не изображены), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не изображены) и т.п.
[112] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[113] Компьютерная система 700 также может включать в себя интерфейс(ы) к одной или более коммуникационным сетям (1155). Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные локальные вычислительные сети (LAN), сотовые сети, включая глобальные системы мобильной связи (GSM), третьего поколения (3G), четвертого поколения (4G), пятого поколения (5G), сети стандарта "Долгосрочное развитие" (LTE) и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное широковещательное телевидение, автомобильные и промышленные, включая CAN-шину, и так далее. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры (1154), которые подключены к определенным портам данных общего назначения или периферийным шинам (1149) (например, к портам универсальной последовательной шины (USB) компьютерной системы 700); другие обычно интегрированы в ядро компьютерной системы 700 путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Например, сеть 755 может быть подключена к периферийной шине 749 с использованием сетевого интерфейса 754. Используя любую из этих сетей, компьютерная система 700 может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов (1154) могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[114] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру 740 компьютерной системы 700.
[115] Ядро 740 может включать в себя один или более центральных процессоров (ЦП) 741, графических процессоров (ГП) 742, специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) 743, аппаратных ускорителей 744 для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ROM) 745, оперативным запоминающим устройством (RAM) 746, внутренним ЗУ большой емкости, таким как внутренние жесткие диски, недоступные пользователю, твердотельные накопители (SSD) и т.п. 747, могут быть подключены через системную шину 748. В некоторых компьютерных системах системная шина 748 может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине 748 ядра, либо через периферийную шину 749. Архитектура периферийной шины включает соединение периферийных компонентов (PCI), USB и т.п.
[116] ЦП 741, ГП 742, ППВМ 743 и ускорители 744 могут выполнять определенные инструкции, которые в комбинации могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ 745 или ОЗУ 746. Переходные данные также могут храниться в ОЗУ 746, тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости 747. Быстрое хранение и извлечение на любое из запоминающих устройств могут быть доступны посредством использования кэш-памяти, которая может быть тесно связана с одним или более ЦП 741, ГП 742, ЗУ 747 большой емкости, ПЗУ 745, ОЗУ 746 и т.п.
[117] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[118] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру 700 и, в частности, ядро 740, может обеспечивать функциональность в результате наличия процессора(ов) (включая ЦП, ГП, ППВМ, ускорители и т.п.), выполняющего программное обеспечение, воплощенное на одном или более материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенными запоминающими устройствами ядра 740, которые имеют невременную природу, такими как внутреннее ЗУ 747 большой емкости или ПЗУ 745. Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром 740. Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро 740 и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ 746 и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель 744), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
[119] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы раскрытия и, таким образом, находятся в пределах его сущности и объема правовой охраны.