Способ сигнализации заголовка изображения в потоке кодированных видеоданных
METHOD FOR SIGNALLING A PICTURE HEADER IN A STREAM OF ENCODED VIDEO DATA

Перекрестная ссылка на родственную заявку
[1] По настоящей заявке испрашивается приоритет согласно предварительной заявке на выдачу патента США №63/005,640, поданной 6 апреля 2020 года, и заявке на выдачу патента США №17/096,168, поданной 12 ноября 2020 года, содержание которых полностью включено в настоящее описание посредством ссылки.
Область техники
[2] Изобретение относится к кодированию и декодированию видеоданных, а более конкретно, к сигнализации заголовка изображения в потоке кодированных видеоданных.
Уровень техники
[3] Организации ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) опубликовали стандарт H.265/HEVC (High Efficiency Video Coding, высокоэффективное кодирование видеоданных) в 2013 году (версия 1), 2014 году (версия 2), 2015 году (версия 3) и 2016 году (версия 4). В 2015 году эти две организации по стандартизации совместно сформировали JVET (Joint Video Exploration Team, объединенная группа исследования видео), чтобы изучить возможности разработки следующего стандарта кодирования видеоданных после HEVC. В октябре 2017 года они объявили совместный конкурс предложений по сжатию видеоданных с возможностями, выходящими за рамки HEVC (CfP, Call for Proposals). К 15 февраля 2018 года было отправлено 22 ответа CfP по стандартному динамическому диапазону (SDR, standard dynamic range), 12 ответов CfP по расширенному динамическому диапазону (HDR, high dynamic range) и 12 ответов CfP по категориям видео с охватом 360 градусов. В апреле 2018 года все полученные ответы CfP были оценены на 122-м MPEG / 10-м заседании JVET. В результате этого заседания JVET официально запустила процесс стандартизации кодирования видеоданных следующего поколения после HEVC. Новый стандарт получил название VVC (Versatile Video Coding, универсальное кодирование видеоданных), a JVET была переименована в объединенную группу экспертов по видео (Joint Video Expert Team).
Сущность изобретения
[4] В варианте осуществления изобретения предоставляется способ декодирования битового потока кодированных видеоданных с использованием по меньшей мере одного процессора, включающий получение блока уровня сетевой абстракции (NAL, network abstraction layer) уровня кодирования видеоданных (VCL, video coding layer); определение, является ли блок VCL NAL первым блоком VCL NAL блока изображения (PU, picture unit), содержащего блок VCL NAL; на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого PU, определение того, является ли блок VCL NAL первым блоком VCL NAL блока доступа (AU, access unit), содержащего PU; и на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого AU, декодирование AU на основе блока VCL NAL.
[5] В варианте осуществления изобретения предоставляется устройство для декодирования битового потока кодированных видеоданных, содержащее по меньшей мере одну память, сконфигурированную для хранения программного кода, и по меньшей мере один процессор, сконфигурированный для считывания программного кода и работы в соответствии с инструкциями программного кода, при этом программный код включает: первый код получения, сконфигурированный для обеспечения, по меньшей мере одним процессором, получения блока уровня сетевой абстракции (NAL) уровня кодирования видеоданных (VCL); первый код определения, сконфигурированный для обеспечения, по меньшей мере одним процессором, определения, является ли блок VCL NAL первым блоком VCL NAL блока изображения (PU), содержащего блок VCL NAL; второй код определения, сконфигурированный для обеспечения, по меньшей мере одним процессором, на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого PU, определения, является ли блок VCL NAL первым блоком VCL NAL блока доступа (AU), содержащего PU; и код декодирования, сконфигурированный для обеспечения, по меньшей мере одним процессором, на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого AU, декодирования AU на основе блока VCL NAL.
[6] В одном варианте осуществления изобретения предоставляется машиночитаемый носитель, на котором хранятся инструкции, включающие одну или более инструкций, которые при их исполнении одним или более процессорами устройства для декодирования битового потока кодированных видеоданных обеспечивают выполнение одним или более процессорами: получения блока уровня сетевой абстракции (NAL) уровня кодирования видеоданных (VCL); определения, является ли блок VCL NAL первым блоком VCL NAL блока изображения (PU), содержащего блок VCL NAL; на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого PU, определения, является ли блок VCL NAL первым блоком VCL NAL блока доступа (AU), содержащего PU; и на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого AU, декодирования AU на основе блока VCL NAL.
Краткое описание чертежей
[7] Дополнительные особенности, характер и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.
[8] Фиг. 1 представляет собой схематическую иллюстрацию упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.
[9] Фиг. 2 представляет собой схематическую иллюстрацию упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.
[10] Фиг. 3 представляет собой схематическую иллюстрацию упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.
[11] Фиг. 4 представляет собой схематическую иллюстрацию упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.
[12] Фиг. 5 представляет собой схематическую иллюстрацию примеров таблицы синтаксиса в соответствии с вариантом осуществления изобретения.
[13] Фиг. 6А-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) видеоданных могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. В стадии разработки находится стандарт кодирования видеоданных, неофициально известный как Универсальное кодирование видеоданных или VVC (Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.
[20] На фиг. 3 показана функциональная схема видеодекодера (210) согласно варианту осуществления настоящего изобретения.
[21] Приемник (310) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (210), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, при этом декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (312), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети между приемником (310) и энтропийным декодером / анализатором (320) (далее "анализатором") может быть подключена буферная память (315). Когда приемник (310) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (315) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, таких как интернет, может потребоваться буфер (315), который может быть сравнительно большим и может предпочтительно иметь адаптивный размер.
[22] Видеодекодер (210) может включать анализатор (320) для реконструкции символов (321) из энтропийно-кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой декодера (210), и, возможно, информацию для управления устройством визуализации, например дисплеем (212), который не является неотъемлемой частью декодера, но может быть подключен к нему, как показано на фиг. 3. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (320) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать принципам, известным специалисту в данной области техники, включая кодирование с переменной длиной серии, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и т.д. Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Groups of Pictures), изображения, субизображения, тайлы, слайсы, модули, макроблоки, единицы дерева кодирования (CTU, Coding Tree Unit), единицы кодирования (CU, Coding Unit), блоки, единицы преобразования (TU, Transform Unit), единицы предсказания (PU, Prediction Unit) и т.д. Тайл может указывать на прямоугольную область 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) визуализации, а также сохраняться в памяти 557 опорных изображений для использования в будущем внешнем предсказании изображения.
[31] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (320)), текущее опорное изображение (358) может становиться частью буферной памяти (357) опорных изображений, и может повторно выделяться свежая память для текущего изображения до начала реконструкции следующего кодированного изображения.
[32] Видеодекодер 210 может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных, задокументированной в стандарте, таком как Рекомендация МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться синтаксиса технологии или стандарта сжатия видеоданных, указанного в документе технологии сжатия видеоданных или в стандарте и, в частности, в документе, касающемся профилей. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемыми в кодированной видеопоследовательности.
[33] Согласно варианту осуществления изобретения, приемник (310) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения "сигнал/шум" (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[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, group of pictures), максимальную зону поиска вектора движения и т.д. Специалисту в данной области техники понятно, что контроллер (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-изображение), которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[49] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[50] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.
[51] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[52] Видеокодер (203) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту кодирования видеоданных, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (203) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или используемым стандартом кодирования видеоданных.
[53] Согласно варианту осуществления изобретения, передатчик (440) может передавать дополнительные данные с кодированными видеоданными. Видеокодер (430) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения дополнительной информации улучшения (SEI), фрагменты набора параметров информации о возможности использования видео (VUI) и т.д.
[54] Варианты осуществления изобретения могут относиться к модификациям синтаксиса и семантики, относящихся к заголовкам изображений. По меньшей мере один вариант осуществления изобретения может относиться к сигнализации all_pic_coding_info_present_in_ph_flag в наборе параметров изображения (PPS, picture parameter set) в качестве флага шлюза для сохранения некоторых битов, чтобы указать, присутствует ли информация инструмента кодирования уровня изображения в заголовке изображения (РН, picture header) или заголовке слайса (SH, slice header). По меньшей мере один вариант осуществления изобретения может относиться к корректировке идентификации первого блока VCL NAL блока PU или AU. По меньшей мере один вариант осуществления изобретения может относиться к модификациям семантики gdr_or_irap_pic_flag, чтобы справиться со случаем, когда значение mixed_nalu_types_flag равно 1.
[55] В вариантах осуществления изобретения набор параметров изображения (PPS) может относиться к синтаксической структуре, содержащей синтаксические элементы, которые не применяются или применяются к полным кодированным изображениям, как определено синтаксическим элементом, находящимся в каждом заголовке слайса.
[56] В вариантах осуществления изобретения заголовок изображения (РН) может относиться к синтаксической структуре, содержащей синтаксические элементы, которые применяются ко всем слайсам кодированного изображения.
[57] В вариантах осуществления изобретения заголовок слайса (SH) может относиться к части кодированного слайса, содержащего элементы данных, относящиеся ко всем тайлам или строкам единицы дерева кодирования (CTU, coding tree unit) в тайле, представленном в слайсе.
[58] Варианты осуществления изобретения могут относиться к уровню кодирования видеоданных (VCL, Video Coding Layer).
[59] В вариантах осуществления изобретения блок уровня сетевой абстракции (NAL) может относиться к синтаксической структуре, содержащей указание типа данных, которые далее следуют, и байты, содержащие эти данные в виде полезной нагрузки необработанной последовательности байтов (RBSP, raw byte sequence payload), перемежающихся при необходимости с байтами предотвращения эмуляции.
[60] В вариантах осуществления изобретения блок VCL NAL может относиться к собирающему термину для блоков NAL кодированных слайсов и подмножества блоков NAL, которые имеют зарезервированные значения nal_unit_type и классифицированы в данном описании как блоки VCL NAL.
[61] В вариантах осуществления изобретения блок изображения (PU) может относиться к набору блоков NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно одно кодированное изображение.
[62] В вариантах осуществления изобретения блок доступа (AU) может относиться к набору блоков PU, которые принадлежат разным уровням и содержат кодированные изображения, связанные с одним и тем же временем вывода из буфера декодированных изображений (DPB, decoded picture buffer).
[63] Варианты осуществления изобретения могут относиться к адаптивному смещению отсчетов (SAO, sample adaptive offset).
[64] В вариантах осуществления изобретения адаптивный контурный фильтр (ALF, adaptive loop filter) может относиться к процессу фильтрации, который применяется как часть процесса декодирования и управляется параметрами, передаваемыми в наборе параметров адаптации (APS, adaptation parameter set).
[65] Варианты осуществления изобретения могут относиться к параметру квантования (QP, quantization parameter).
[66] Варианты осуществления изобретения могут относиться к внутренней точке произвольного доступа (IRAP, intra random access point).
[67] Варианты осуществления изобретения могут относиться к постепенному обновлению декодирования (GDR, gradual decoding refresh).
[68] В вариантах осуществления изобретения изображение GDR может относиться к изображению, для которого каждый блок VCL NAL имеет значение nal_unit_type, равное GDR NUT.
[69] Согласно последней версии проекта VVC (JVET-Q2001-vE), может использоваться шесть флагов для указания, присутствует ли информация кодирования уровня изображения в заголовке изображения или заголовке слайса в синтаксической структуре PPS. Например, rpl_info_in_ph_flag, dbf_info_in_ph_flag, sao_info_in_ph_flag и т.д. В большинстве случаев эти значения могут иметь одно и то же значение - 0 или 1. Маловероятно, что для каждого флага ххх_info_in_p>h будет другое значение.
[70] Следовательно, в вариантах осуществления изобретения флаг шлюза all_pic__coding_info_present_in_ph_flag может указывать на присутствие этих флагов в PPS для сохранения битов в PPS. Если значение all_pic_coding_info_present_in_ph_flag равно 1, эти флаги ххх_info_in_ph не сигнализируются, и может быть сделан вывод, что значения этих флагов равны 1, потому что сигнализация информации кодирования уровня изображения в заголовке изображения может происходить чаще, чем сигнализация информации в заголовке слайса для управления на уровне слайса. Пример таблицы синтаксиса, соответствующей вариантам осуществления изобретения, показан на фиг. 5.
[71] В вариантах осуществления изобретения значение all_pic_coding_info_present_in_ph_flag, равное 1, может указывать на то, что rpl_info_in_ph_flag, dbf_info_in_ph_flag, sao_info_in_ph_flag, alf_info_in_ph_flag, wp_info_in_ph_flag и qp_ delta_info_in_ph_flag не присутствуют в PPS, значение all_pic_ coding_info_present_in_ph_flag, равное 0, может указывать на то, что rpl_info_in_ph_flag, dbf__info_in_ph_flag, sao_info_in_ph_flag, alf_info_in_ph_flag, wp_info_in_ph_flag и qp_delta_info_in_ph_flag присутствуют в PPS.
[72] В вариантах осуществления изобретения значение rpl_info_ in_ph_flag, равное 1, может указывать на то, что информация списка опорных изображений присутствует в синтаксической структуре РН и не присутствует в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение rpl_info_in_ph_flag, равное 0, может указывать на то, что информация списка опорных изображений не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение rpl_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[73] В вариантах осуществления изобретения значение dbf_info_ in_ph_flag, равное 1, может указывать на то, что информация фильтра для устранения блочности присутствует в синтаксической структуре РН и не присутствует в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение dbf_info_in_ph_flag, равное 0, может указывать на то, что информация фильтра для устранения блочности не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение dbf_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 0. Когда значение dbf_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[74] Значение sao_info_in_ph_flag, равное 1, может указывать на то, что информация фильтра SAO присутствует в синтаксической структуре РН и не присутствует в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение sao_info_in_ph_flag, равное 0, может указывать на то, что информация фильтра SAO не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение sao_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[75] Значение alf_info_in_ph_flag, равное 1, может указывать на то, что информация ALF присутствует в синтаксической структуре РН и не присутствует в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение alf_info_in_ph_flag, равное 0, может указывать на то, что информация ALF не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение alf_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[76] Значение wp_info_in_ph_flag, равное 1, может указывать на то, что информация взвешенного предсказания может присутствовать в синтаксической структуре РН и не присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение wp_info_in_ph_flag, равное 0, может указывать на то, что информация взвешенного предсказания не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение wp_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 0. Когда значение wp_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[77] Значение qp_delta_info_in_ph_flag, равное 1, может указывать на то, что информация о дельта QP присутствует в синтаксической структуре РН и не присутствует в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Значение qp_delta_info_in_ph_flag, равное 0, может указывать на то, что информация о дельта QP не присутствует в синтаксической структуре РН и может присутствовать в заголовках слайсов, относящихся к PPS, которые не содержат синтаксическую структуру РН. Когда значение qp_delta_info_in_ph_flag отсутствует, может быть сделан вывод, что оно равно 1.
[78] Из последнего проекта спецификации VVC не ясно, как идентифицировать первый блок VCL NAL блока PU или AU. Варианты осуществления изобретения могут относиться к следующей модификации описания порядка блоков NAL.
[79] В вариантах осуществления изобретения блок VCL NAL является первым блоком VCL NAL блока AU (и, следовательно, PU, содержащий блок VCL NAL, является первым PU упомянутого AU), когда блок VCL NAL является первым блоком VCL NAL, который следует за блоком NAL заголовка РН или имеет значение picture_header_in_slice_header_flag, равное 1, и выполняется одно или более из следующих условий:
- Значение nuh_layer_id блока VCL NAL меньше nuh_layer_id предыдущего изображения в порядке декодирования.
- Значение ph_pic_order_cnt_lsb блока VCL NAL отличается от ph_pic_order_cnt_lsb предыдущего изображения в порядке декодирования.
- Значение PicOrderCntVal, полученное для блока VCL NAL, отличается от значения PicOrderCntVal предыдущего изображения в порядке декодирования.
[80] В вариантах осуществления изобретения флаг gdr_or_irap_pic_flag в заголовке изображения указывает, является ли текущее изображение изображением IRAP или GDR. Когда значение gdr_or_irap_pic_flag равно 1, флаг no_output_of_prior_pics_flag также может присутствовать в заголовке изображения. При объединении битовых потоков субизображений значение no_output_of_prior_pics_flag субизображения IRAP необходимо сохранить для извлечения субизображения. Чтобы решить эту проблему, варианты осуществления изобретения могут относиться к следующей модификации семантики gdr_or_irap_pic_flag:
[81] В вариантах осуществления изобретения значение gdr_or_irap_pic_flag, равное 1, может указывать на то, что текущее изображение является изображением GDR или IRAP или изображением с блоком VCL NAL, равным IDR_W_RADL, IDR_N_LP или CRA_NUT и значением mixed_nalu_types_in_pic_flag, равным 1. Значение gdr_or_irap_pic_flag, равное 0, может указывать на то, что текущее изображение может или не может быть изображением GDR или IRAP.
[82] В вариантах осуществления изобретения значение gdr_or_irap_pic_flag, равное 1, может указывать на то, что текущее изображение является изображением GDR или IRAP, или изображением, содержащим субизображение IRAP со значением mixed_nalu_types_in_pic_flag, равным 1. Значение gdr_or_irap_pic_flag, равное 0, может указывать на то, что текущее изображение может или не может быть изображением GDR или IRAP.
[83] В вариантах осуществления изобретения значение gdr_or_irap_pic_flag, равное 1, может указывать на то, что текущее изображение является изображением GDR или IRAP. Значение gdr_or_irap_pic_flag, равное 0, может указывать на то, что текущее изображение может или не может быть изображением GDR или IRAP.
[84] Может использоваться требование соответствия битового потока, которое заключается в том, что значение gdr_or_irap_pic_flag равно 0, когда значение mix_nalu_types_in_pic_flag равно 1.
[85] Фиг. 6А-6С представляют блок-схемы примеров способов 600А, 600В и 600С декодирования битового потока кодированных видеоданных. В некоторых реализациях один или более этапов способов, показанных на фиг. 6А-6С, могут выполняться декодером 210. В некоторых реализациях один или более этапов способов, показанных на фиг. 6А-6С, могут выполняться другим устройством или группой устройств, отдельных от декодера 210 или включающих декодер 210, например кодером 203.
[86] В вариантах осуществления изобретения один или более этапов, показанных на фиг. 6А, могут соответствовать одному или более этапам, показанным на фиг. 6В и 6С, или могут выполняться совместно с ними.
[87] Как показано на фиг. 6А, способ 600А может включать получение блока уровня сетевой абстракции (NAL) уровня кодирования видеоданных (VCL) (этап 611).
[88] Как также показано на фиг. 6А, способ 600А может включать определение того, что блок VCL NAL является первым блоком VCL NAL блока изображения (PU), содержащего блок VCL NAL (этап 612).
[89] Как также показано на фиг. 6А, способ 600А может включать, на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого PU, определение того, что блок VCL NAL является первым блоком VCL NAL блока доступа (AU), содержащего PU (этап 613).
[90] Как также показано на фиг. 6А, способ 600А может включать, на основе определения того, что блок VCL NAL является первым блоком VCL NAL упомянутого AU, декодирование AU на основе блока VCL NAL (этап 614).
[91] В вариантах осуществления изобретения один или более этапов, показанных на фиг. 6В, могут соответствовать одному или более этапам, показанным на фиг. 6А и 6В, или могут выполняться совместно с ними.
[92] Как показано на фиг. 6В, способ 600 В может включать получение блока VCL NAL (этап 621).
[93] Как также показано на фиг. 6В, способ 600 В может включать определение того, является ли блок VCL NAL первым блоком NAL VCL, следующим за блоком NAL заголовка изображения (этап 622).
[94] Как также показано на фиг. 6В, способ 600 В может включать, на основе определения того, что блок VCL NAL является первым блоком NAL VCL, следующим за блоком NAL заголовка изображения ("Да" на этапе 622), переход к этапу 623.
[95] Как также показано на фиг. 6В, способ 600 В может включать, на основе определения того, что блок VCL NAL не является первым блоком VCL NAL, следующим за блоком NAL заголовка изображения ("Нет" на этапе 623), переход к этапу 624. В вариантах осуществления изобретения способ 600 В может вместо этого перейти к этапу 625.
[96] Как также показано на фиг. 6В, способ 600 В может включать определение того, установлен ли в блоке VCL NAL флаг для указания на то, что заголовок изображения включен в заголовок слайса, включенный в блок VCL NAL (этап 624). В вариантах осуществления изобретения флаг может соответствовать picture_header_in_slice_header_flag.
[97] Как также показано на фиг. 6В, способ 600 В может включать, на основе определения того, что в блоке VCL NAL установлен флаг для указания на то, что заголовок изображения включен в заголовок слайса, включенный в блок VCL NAL ("Да" на этапе 624), переход к этапу 623.
[98] Как также показано на фиг. 6В, способ 600 В может включать, на основе определения того, что флаг в блоке VCL NAL не установлен для указания на то, что заголовок изображения включен в заголовок слайса, включенный в блок VCL NAL ("Нет" на этапе 624), переход к этапу 625.
[99] Как также показано на фиг. 6В, способ 600 В может включать определение того, что блок VCL NAL является первым блоком VCL NAL упомянутого PU, содержащего блок VCL NAL (этап 623).
[100] Как также показано на фиг. 6В, способ 600 В может включать определение того, что блок VCL NAL не является первым блоком VCL NAL упомянутого PU, содержащего блок VCL NAL (этап 625).
[101] В вариантах осуществления изобретения один или более этапов, показанных на фиг. 6С, могут соответствовать одному или более этапам, показанным на фиг. 6А и 6С, или могут выполняться совместно с ними.
[102] Как показано на фиг. 6С, способ 600С может включать определение того, что блок VCL NAL является первым блоком VCL NAL блока PU (этап 631).
[103] Как также показано на фиг. 6С, способ 600С может включать определение того, меньше ли идентификатор уровня блока VCL NAL, чем идентификатор уровня предыдущего изображения (этап 632).
[104] Как также показано на фиг. 6С, способ 600С может включать, на основе определения того, что идентификатор уровня блока VCL NAL меньше идентификатора уровня предыдущего изображения ("Да" на этапе 632), переход к этапу 633.
[105] Как также показано на фиг. 6С, способ 600С может включать, на основе определения того, что идентификатор уровня блока VCL NAL не меньше идентификатора уровня предыдущего изображения ("Нет" на этапе 633), переход к этапу 634. В вариантах осуществления изобретения способ 600С может вместо этого перейти к этапу 635.
[106] Как также показано на фиг. 6С, способ 600С может включать определение того, отличается ли счетчик последовательности изображений блока VCL NAL от счетчика последовательности изображений для предыдущего изображения (этап 634). В вариантах осуществления изобретения это может быть определено на основе младших значащих битов (LSB, least significant bit) счетчиков последовательности изображений.
[107] Как также показано на фиг. 6С, способ 600С может включать, на основе определения того, что счетчик последовательности изображений блока VCL NAL отличается от счетчика последовательности изображений для предыдущего изображения ("Да" на этапе 634), переход к этапу 633.
[108] Как также показано на фиг. 6С, способ 600С может включать, на основе определения того, что счетчик последовательности изображений блока VCL NAL не отличается от счетчика последовательности изображений для предыдущего изображения ("Нет" на этапе 634), переход к этапу 635.
[109] Как также показано на фиг. 6С, способ 600С может включать определение того, что блок VCL NAL является первым блоком VCL NAL упомянутого AU, содержащего блок VCL NAL (этап 633).
[110] Как также показано на фиг. 6С, способ 600С может включать определение того, что блок VCL NAL не является первым блоком VCL NAL упомянутого AU, содержащего блок VCL NAL (этап 635).
[111] В вариантах осуществления изобретения на основе флага, указывающего на то, что вся информация кодирования изображения присутствует в заголовке изображения, множество флагов, соответствующих информации кодирования изображения, может не сигнализироваться. В вариантах осуществления изобретения флаг может соответствовать all_pic_coding_info_present_in_ph_flag.
[112] Хотя на фиг. 6А-6С показаны примеры этапов способов 600А-600С, в некоторых реализациях способы 600А-600С могут включать дополнительные этапы, меньшее количество этапов, различные этапы или этапы, расположенные иначе, чем показано на фиг. 6А-6С. Дополнительно или альтернативно, два или более этапов способов 600А-600С могут выполняться параллельно.
[113] Кроме того, предлагаемые способы могут быть реализованы с помощью схем обработки (например, одного или более процессоров или одной или более интегральных схем). В одном из примеров один или более процессоров выполняют программу, которая хранится на машиночитаемом носителе, для осуществления одного или более предлагаемых способов.
[114] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 7 показана компьютерная система 700, пригодная для осуществления некоторых вариантов осуществления изобретения.
[115] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[116] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[117] Компоненты компьютерной системы 700, показанные на фиг. 7, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы 700.
[118] Компьютерная система 700 может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[119] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура 701, мышь 702, сенсорная панель 703, сенсорный экран 710 и связанный с ним графический адаптер 750, информационная перчатка, джойстик 705, микрофон 706, сканер 707 и камера 708.
[120] Компьютерная система 700 также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана 710, информационной перчатки или джойстика 705, а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики 709, наушники (не показаны)), устройства визуального вывода (например, экраны 710, в том числе экраны на электронно-лучевых трубках (CRT, cathode ray tube), жидкокристаллические экраны (LCD, liquid-crystal display), плазменные экраны, экраны на органических светодиодах (OLED, organic light-emitting diode), каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голо графические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).
[121] Компьютерная система 700 также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW 720 с носителями 721 CD/DVD и т.п., карты 722 флэш-памяти, сменный жесткий диск или твердотельный диск 723, традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[122] Специалисты в данной области техники также должны понимать, что термин "машиночитаемые носители", используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[123] Компьютерная система 700 также может включать интерфейс(ы) к одной или более сетям (1155) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе глобальные системы мобильной связи (GSM, global systems for mobile communications), сети поколений 3G, 4G и 5G, сети технологии долгосрочного развития (LTE, Long-Term Evolution) и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров (1154) сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1149) (например, порты универсальной последовательной шины (USB, universal serial bus) компьютерной системы 700); другие обычно встраиваются в ядро компьютерной системы 700 путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Например, сеть 755 может быть подключена к периферийной шине 749 с использованием сетевого интерфейса 754. Используя любую из этих сетей, компьютерная система 700 может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов (1154).
[124] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру 740 компьютерной системы 700.
[125] Ядро 740 может включать один или более центральных процессоров (CPU) 741, графические процессоры (GPU) 742, специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) 743, аппаратные ускорители 744 для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) 745, оперативной памятью 746 (RAM), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, твердотельными накопителями (SSD, solid-state drives) и т.п.747, могут соединяться посредством системной шины 748. В некоторых компьютерных системах системная шина 748 может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п.Периферийные устройства могут подключаться либо напрямую к системной шине 748 ядра, либо через периферийную шину 749. Архитектуры периферийной шины включают шину соединения периферийных компонентов (PCI, peripheral component interconnect), USB и т.п.
[126] Устройства CPU 741, GPU 742, FPGA 743 и ускорители 744 могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM 745 или RAM 746. Временные данные также могут храниться в памяти RAM 746, тогда как постоянные данные могут храниться, например, во внутреннем хранилище 747 данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU 741, GPU 742, хранилищем 747 данных большой емкости, памятью ROM 745, RAM 746 и т.п.
[127] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[128] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру 700, и, в частности, ядро 740 может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра 740, например, внутренним хранилищем 747 данных большой емкости или ROM 745. Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 740. Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру 740 и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные способы или конкретные части описанных здесь конкретных способов, включая задание структур данных, хранящихся в памяти RAM 746, и модификацию таких структур данных согласно способам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель 744), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных способов или конкретных частей описанных здесь конкретных способов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[129] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.