СПОСОБ ССЫЛКИ НА НАБОР ПАРАМЕТРОВ В БИТОВОМ ПОТОКЕ КОДИРОВАННОГО ВИДЕО
METHOD FOR REFERENCING A SET OF PARAMETERS IN THE BITSTREAM OF AN ENCODED VIDEO

Перекрестные ссылки на связанные заявки
[1] Настоящая заявка ссылается на приоритет предварительной заявки на патент США №62/954099, зарегистрированной 27 декабря 2019 года, и заявки на патент США №17/063060, зарегистрированной 5 октября 2020 года, при этом обе упомянутые заявки полностью включены в настоящий документ путем ссылки.
Область техники
[2] Настоящее изобретение относится к видеокодированию и видеодекодированию, а именно, к ссылкам на наборы параметров и к их областям действия в битовом потоке кодированного видео.
Предпосылки создания изобретения
[3] Существуют методы видеокодирования и видеодекодирования с использованием внешнего предсказания изображений с компенсацией движения. Несжатое цифровое видео может содержать последовательность изображений, каждое из которых имеет заданный пространственный размер, например, 1920 × 1080 отсчетов яркости и соответствующих отсчетов цветности. Такая последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), равную, например, 60 изображениям в секунду, или 60 Гц. Несжатое видео предъявляет высокие требования к битовой скорости передачи данных. К примеру, видео формата 1080р60 4:2:0 с 8-битной глубиной отсчета (разрешение в 1920×1080 отсчетов яркости с частотой кадров 60 Гц) требует полосы пропускания около 1,5 Гбит/с. Час такого видео требует более 600 Гбайт памяти для хранения.
[4] Одной из задач видеокодирования и видеодекодирования является снижение избыточности во входном видеосигнале путем сжатия. Сжатие позволяет сократить требования к полосе пропускания или объему памяти для хранения в некоторых случаях до двух порядков величины или более. Может применяться как сжатие без потерь, так и с потерями, а также их комбинации. Под сжатием без потерь понимают методы, в которых из сжатого сигнала может быть восстановлена точная копия исходного сигнала. Когда используют сжатие с потерями восстановленный сигнал может не быть идентичным исходному, однако расхождение между исходным и восстановленным сигналами достаточно мало, чтобы восстановленный сигнал был пригоден для целевого применения. Сжатие с потерями широко применяется для видео. Величина допустимых искажений зависит от конкретного применения; например, пользователи коммерческих приложений потоковой передачи могут быть терпимее к искажениям, чем пользователи приложений телевещания. Степень сжатия подчиняется следующей закономерности: чем больше допустимые искажения, тем больше достижимая степень сжатия.
[5] В видеокодере и видеодекодере может применяться ряд методов, относящихся к различным категориям, включая, например, компенсацию движения, преобразования, квантование и энтропийное кодирование, некоторые из которых будут рассмотрены ниже.
[6] Исторически сложилось, что видеокодеры и видеодекодеры работали с заданным размером изображений, который в большинстве случаев был известен и оставался неизменным на протяжении всей кодированной видеопоследовательности (coded video sequence, CVS), группы изображений (Group of Pictures, GOP) или внутри аналогичных временных рамок, включающих множество изображений. К примеру, в стандарте MPEG-2 его структура позволяет изменять горизонтальное разрешение (и следовательно, размер изображения) в зависимости от определенных факторов, например, активности в видеосцене, однако только в 1-изображениях, а значит, как правило, только для группы GOP. В Приложении Р Рекомендации Н.263 ITU-T (ITU-T Rec. Н.263 Annex Р) было определено изменение разрешения (передискретизация) опорных изображений для возможности использования различных разрешений внутри последовательности CVS. Однако в этом случае менялся лишь размер опорных изображений, а размер собственно изображений не менялся, что в результате давало возможность использовать лишь части всего холста изображения (при понижении разрешения) или захватывать лишь часть сцены (при повышении разрешения). Также, Приложение Q Н.263 (Н.263 Annex Q) допускает повышающую и понижающую передискретизацию отдельных макроблоков с коэффициентом, равным степени двойки (по любой оси). Однако снова, размер изображения остается неизменным. Размер макроблока в Н.263 фиксирован, и следовательно, не должен сигнализироваться.
[7] В современном видеокодировании изменения размера предсказываемых изображений встречаются более часто. К примеру, стандарт VP9 допускает передискретизацию опорных изображений и изменение разрешения изображения в целом. Аналогично, были внесены соответствующие предложения для стандарта VVC (включая, например, документ Объединенной группы экспертов по видео JVET-M0135-v1, «Об адаптивном изменении разрешения (adaptive resolution change, ARC) для VVC, 9 19 января 2019 года, Hendry и соавт., полностью включенный в настоящий документ путем ссылки), допускающие передискретизацию опорных изображений целиком, до отличающихся, повышенных или пониженных, разрешений. В упомянутом документе предлагается кодирование различных кандидатных (возможных) разрешений в наборе параметров последовательности и осуществление ссылок на них в синтаксических элементах, для каждого изображения, в наборе параметров изображения.
Сущность изобретения
[8] В одном из вариантов осуществления настоящего изобретения предложен способ декодирования битового потока кодированного видео с помощью по меньшей мере одного процессора, включающий получение кодированной видеопоследовательности из битового потока кодированного видео; получение блока изображения из кодированной видеопоследовательности; получение блока уровня сетевой абстракции (network abstraction layer, NAL) заголовка изображения (picture header, PH), содержащегося в упомянутом блоке изображения; получение по меньшей мере одного блока NAL кодированного слайса, содержащегося в упомянутом блоке изображения; декодирование кодированного изображения на основе упомянутых блока NAL РН, по меньшей мере одного блока NAL кодированного слайса, набора параметров изображения (picture parameter set, PPS), содержащегося в блоке NAL PPS, полученном из кодированной видеопоследовательности, и набора параметров последовательности (sequence parameter set, SPS), содержащегося в блоке NAL SPS, полученном из кодированной видеопоследовательности; и вывод декодированного изображения, при этом упомянутый блок NAL SPS доступен упомянутому по меньшей мере одному процессору до упомянутого блока NAL PPS, и упомянутый блок NAL PPS доступен упомянутому по меньшей мере одному процессору до упомянутых блока NAL РН и по меньшей мере одного блока NAL кодированного слайса.
[9] В одном из вариантов осуществления настоящего изобретения предложено устройство для декодирования битового потока кодированного видео, включающее по меньшей мере одну память, сконфигурированную для хранения программного кода; по меньшей мере один процессор, сконфигурированный для считывания компьютерного кода, и для выполнения операций согласно инструкциям программного кода, при этом программный код включает: первый код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, кодированной видеопоследовательности из битового потока кодированного видео; второй код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, блока изображения из кодированной видеопоследовательности; третий код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, блока уровня сетевой абстракции (NAL) заголовка изображения (РН), содержащегося в упомянутом блоке изображения; четвертый код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, блока NAL кодированного слайса, содержащегося в упомянутом блоке изображения; код декодирования, сконфигурированный для обеспечения декодирования, упомянутым по меньшей мере одним процессором, кодированного изображения на основе упомянутых блока NAL РН, по меньшей мере одного блока NAL кодированного слайса, набора параметров изображения (PPS), содержащегося в блоке NAL PPS, полученном из кодированной видеопоследовательности, и набора параметров последовательности (SPS), содержащегося в блоке NAL SPS, полученном из кодированной видеопоследовательности; и код вывода, сконфигурированный для обеспечения вывода, упомянутым по меньшей мере одним процессором, декодированного изображения, при этом упомянутый блок NAL SPS доступен упомянутому по меньшей мере одному процессору до упомянутого блока NAL PPS, и упомянутый блок NAL PPS доступен упомянутому по меньшей мере одному процессору до упомянутых блока NAL РН и по меньшей мере одного блока NAL кодированного слайса.
[10] В одном из вариантов осуществления настоящего изобретения предложен машиночитаемый носитель, на котором хранят инструкции, включающие: одну или более инструкций, которые при исполнении одним или более процессорами устройства декодирования битового потока кодированного видео, обеспечивают выполнение, упомянутыми одним или более процессорами, следующего: получение кодированной видеопоследовательности из битового потока кодированного видео; получение блока изображения из кодированной видеопоследовательности; получение блока уровня сетевой абстракции (NAL) заголовка изображения (РН), содержащегося в упомянутом блоке изображения; получение по меньшей мере одного блока NAL кодированного слайса, содержащегося в упомянутом блоке изображения; декодирование кодированного изображения на основе упомянутых блока NAL РН, по меньшей мере одного блока NAL кодированного слайса, набора параметров изображения (PPS), содержащегося в блоке NAL PPS, полученном из кодированной видеопоследовательности, и набора параметров последовательности (SPS), содержащегося в блоке NAL SPS, полученном из кодированной видеопоследовательности; и вывод декодированного изображения, при этом упомянутый блок NAL SPS доступен упомянутым одному или более процессорам до упомянутого блока NAL PPS, и упомянутый блок NAL PPS доступен упомянутым одному или более процессорам до упомянутых блока NAL РН и по меньшей мере одного блока NAL кодированного слайса.
Краткое описание чертежей
[11] Дополнительные признаки, сущность и различные преимущества предложенного изобретения могут быть уяснены более детально с помощью приведенного ниже подробного описания и приложенных чертежей, где:
[12] на фиг. 1 эскизно показана упрощенная блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[13] на фиг. 2 эскизно показана упрощенная блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[14] на фиг. 3 эскизно показана упрощенная блок-схема декодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[15] на фиг. 4 эскизно показана упрощенная блок-схема кодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[16] фиг. 5А-5Е эскизно иллюстрируют варианты сигнализации параметров ARC в соответствии с одним из вариантов осуществления настоящего изобретения;
[17] фиг. 6А-6В эскизно иллюстрируют примеры синтаксических таблиц в соответствии с одним из вариантов осуществления настоящего изобретения;
[18] на фиг. 7 представлен пример структуры предсказания для масштабирования с адаптивным изменением разрешения в соответствии с одним из вариантов осуществления настоящего изобретения;
[19] на фиг. 8 показан пример синтаксической таблицы в соответствии с одним из вариантов осуществления настоящего изобретения;
[20] на фиг. 9 эскизно показана упрощенная блок-схема анализа и декодирования цикла РОС для каждого блока доступа и каждого значения порядкового номера блока доступа, в соответствии с одним из вариантов осуществления настоящего изобретения;
[21] на фиг. 10 эскизно проиллюстрирована структура битового потока видео, включающая многоуровневые субизображения, в соответствии с одним из вариантов осуществления настоящего изобретения;
[22] На фиг. 11 эскизно проиллюстрировано отображение выбранного субизображения с повышенным разрешением в соответствии с одним из вариантов осуществления настоящего изобретения;
[23] на фиг. 12 показана блок-схема процедуры декодирования и отображения битового потока видео, включающего многоуровневые субизображения, в соответствии с одним из вариантов осуществления настоящего изобретения;
[24] на фиг. 13 эскизно проиллюстрировано отображение 360-градусного видео с улучшающим уровнем субизображения в соответствии с одним из вариантов осуществления настоящего изобретения;
[25] на фиг. 14 показан пример информации о компоновке субизображений и соответствующей ей структуры предсказания уровней и изображений в соответствии с одним из вариантов осуществления настоящего изобретения;
[26] на фиг. 15 показан пример информации о компоновке субизображений и соответствующей ей структуры предсказания уровней и изображений, с возможностью пространственного масштабирования локальной области, в соответствии с одним из вариантов осуществления настоящего изобретения;
[27] на фиг. 16А- 16В показаны примеры синтаксических таблиц для информации о компоновке субизображений, в соответствии с одним из вариантов осуществления настоящего изобретения;
[28] на фиг. 17 показаны примеры синтаксических таблиц сообщения SEI для информации о компоновке субизображений, в соответствии с одним из вариантов осуществления настоящего изобретения;
[29] на фиг. 18 показан пример синтаксической таблицы для указания выводимых уровней и информации о профиле/ярусе/уровне стандарта для каждого набора выводимых уровней, в соответствии с одним из вариантов осуществления настоящего изобретения;
[30] на фиг. 19 показан пример синтаксической таблицы для указания на активацию режима выводимого уровня для каждого набора выводимых уровней, в соответствии с одним из вариантов осуществления настоящего изобретения;
[31] на фиг. 20 показан пример синтаксической таблицы для указания на присутствие субизображения для каждого уровня, для каждого набора выводимых уровней, в соответствии с одним из вариантов осуществления настоящего изобретения;
[32] на фиг. 21 показана блок-схема примера процедуры декодирования битового потока кодированного видео в соответствии с одним из вариантов осуществления настоящего изобретения;
[33] на фиг. 22 эскизно проиллюстрирована компьютерная система в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание изобретения
[34] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи в соответствии одним из примеров осуществления настоящего изобретения. Система (100) может включать по меньшей мере два терминала (110-120), связанных друг с другом сетью (150). При однонаправленной передаче данных первый терминал (110) может кодировать видеоданные локально для передачи во второй терминал (120) по сети (150). Второй терминал (120) может принимать кодированные видеоданные от первого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[35] На фиг. 1 проиллюстрирована вторая пара терминалов (130, 140), сконфигурированных для поддержки двунаправленной передачи кодированного видео, которая может требоваться, например, при видеоконференцсвязи. При двунаправленной передаче данных оба терминала (130, 140) могут кодировать локально захватываемые видеоданные для передачи в другой терминал по сети (150). Оба терминала (130, 140) могут также принимать кодированные видеоданные, переданные другим терминалом, могут декодировать кодированные данные и отображать восстановленные видеоданные на локальном дисплейном устройстве.
[36] В примере фиг. 1 терминалы (110 140) могут быть серверами, персональными компьютерами или смартфонами, однако без ограничения ими замысла настоящего изобретения. Варианты осуществления настоящего изобретения могут применяться в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (150) может представлять собой любое количество сетей, передающих кодированные видеоданные между терминалами (110 140), включая, например, проводные и/или беспроводные сети связи. Сеть (150) связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или Интернет. В настоящем описании архитектура и топология сети (150) не играют никакой роли в функционировании предложенного изобретения, если на это явно не указано.
[37] На фиг. 2 проиллюстрировано, в качестве примера применения настоящего изобретения, размещение видеокодера и декодера в окружении потоковой передачи. Предложенное изобретение может применяться с равной эффективностью и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранения сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и т.п.
[38] Система потоковой передачи может включать подсистему (213) захвата, которая может включать источник (201) видео, например, видеокамеру, которая формирует поток (202) несжатых отсчетов. Поток (202) отсчетов, показанный жирной линией, чтобы подчеркнуть больший объем данных по сравнению с кодированными видеопотоками, может обрабатываться кодером (203), связанным с камерой (201). Кодер (203) может включать аппаратное обеспечение, программное обеспечение, или их комбинацию, которые позволяют реализовать аспекты предложенного изобретения, в соответствии с последующим более подробным описанием. Битовый поток (204) кодированного видео, показанной тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с несжатым потоком видеоотсчетов, может сохраняться на сервере (205) потоковой передачи для последующего использования. Один или более клиентов (206, 208) потоковой передачи могут осуществлять доступ к серверу (205) потоковой передачи для получения копий (207, 209) битового потока (204) кодированного видео. Клиентское устройство (206) может включать видеодекодер (210), который декодирует принятую копию битового потока (207) кодированного видео и формировать выходной поток (211) видеотсчетов, который может отображаться на дисплее (212) или другом устройстве отображения (не показано на чертеже). В некоторых системах потоковой передачи битовые видеопотоки (204, 207, 209) могут быть кодированы в соответствии с заданными стандартами видеокодирования/видеосжатия. Примером таких стандартов может быть Рекомендация Н.265 ITU-T. В настоящее время ведется разработка стандарта видеокодирования, который неформально называют «универсальным видеокодированием» (Versatile Video Coding, VVC). Описанное в данном документе изобретение может применяться в контексте стандарта VVC.
[39] На фиг. 3 показана функциональная блок-схема видеодекодера (210) в соответствии с одним из вариантов осуществления настоящего изобретения.
[40] Приемник (310) может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера (210). В этом же варианте осуществления или в альтернативных вариантах осуществления настоящего изобретения прием видеопоследовательностей может выполняться поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (312), который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник (310) может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым джиттером между приемником (310) и энтропийным декодером/анализатором (320) (далее «анализатор») может быть установлена буферная память (315). Когда приемник (310) принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер (315) может не применяться или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер (315) необходим, может быть сравнительно объемным и, предпочтительно, иметь при этом адаптивный размер.
[41] Видеодекодер (210) может иметь в своем составе анализатор (320) для восстановления символов (321) из энтропийно-кодированной видеопоследовательности. Типы этих символов могут включать, например, информацию, используемую для управления работой декодера (210), а также, возможно, информацию для управления устройством отображения, такого как дисплей (212), который может быть связан с декодером, но не являться его неотъемлемой частью, как это показано на фиг. 3. Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной улучшающей информации (Supplementary Enhancement Information, SEI) или фрагментов наборов параметров информации об используемости видео (Video Usability Information, VUI) (не показано на чертеже). Анализатор (320) может выполнять анализ/энтропийное декодирование принятой кодированной видеопоследовательности. Кодированная видеопоследовательность может быть кодирована в соответствии с некоторой технологией или стандартом видеокодирования, и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной кодового слова, кодирование Хаффмана, контекстно-зависимое или контекстно-независимое арифметическое кодирование и т.п.Анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной подгруппы пикселей в видеодекодере, на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (Groups of Pictures, GOP), изображения, субизображения, тайлы, слайсы, макроблоки, кодовые блоки (Coding Units, CU), блоки (blocks), «кирпичи» (bricks), блоки преобразования (Transform Units, TU), блоки предсказания (Prediction Units, PU) и т.п.Тайл может представлять собой прямоугольную область блока CU/CTU в заданном столбце и заданной строке тайлов в изображении. "Кирпич" может представлять собой прямоугольную область из строк CU/CTU внутри тайла. Слайс может представлять собой один или более кирпичей изображения, содержащихся в блоке NAL. Субизображение может представлять собой прямоугольную область из одного или более слайсов в изображении. Анализатор может также извлекать из кодированной видеопоследовательности такую информацию как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.п.
[42] Анализатор (320) может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буфера (315), и формировать символы (321).
[43] При восстановлении символов (321) могут использоваться различные блоки устройства, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки), а также от других факторов. То, какие блоки устройства будут использованы, и каким образом, может определяться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором (320). Для простоты поток такой управляющей информации подгруппы между анализатором (320) и множеством описанных ниже блоков устройства на чертеже не показан.
[44] Помимо уже упомянутых функциональных блоков декодер 210 может быть концептуально подразбит на набор описанных ниже функциональных блоков. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже подразделение на функциональные блоки.
[45] Первым из таких блоков может быть блок (351) масштабирования/обратного преобразования. Блок (351) масштабирования/обратного преобразования принимает квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блоков, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов (321) из анализатора (320). Он выдает блоки, включающие значения отсчетов, которые могут быть введены в агрегатор (355).
[46] В некоторых случаях отсчеты на выходе из блока (351) масштабирования / обратного преобразования могут относиться к типу внутренне кодированных блоков; то есть, блоков, для которых не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком (352) внутреннего предсказания изображений. В некоторых случаях блок (352) внутреннего предсказания изображений может формировать блоки тех же размеров и формы, что и восстанавливаемый блок, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в памяти (358) текущих изображений. Агрегатор (355) может в некоторых случаях добавлять информацию предсказания, сформированную блоком (352) внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком (351) масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[47] В других случаях отсчеты на выходе блока (351) масштабирования/обратного преобразования могут относиться к внешнему предсказанию, возможно с компенсацией движения. В таких случаях блок (353) предсказания с компенсацией движения может осуществлять доступ к памяти (357) опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами (321), относящимися к этому блоку, могут быть добавлены агрегатором (355) к выходным данным блока масштабирования/обратного преобразования (в этом случае их называют разностными отсчетами или разностным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти опорных изображений, по которым блок предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения, доступными для блока предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, Х-компоненту, Y-компоненту и компоненту опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти (457) опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[48] Отсчеты на выходе из агрегатора (355) могут обрабатываться при помощи различных методов контурной фильтрации в блоке (356) контурной фильтрации. Технологии сжатия видео могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, содержащимися в кодированном битовом видеопотоке, и предоставляемыми в блок (356) контурной фильтрации в виде символов (321) из анализатора (320). Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[49] Выходными данными блока (356) контурной фильтрации может быть поток отсчетов, который подают в устройство (212) отображения, а также сохраняют в памяти опорных изображений для использования при будущем внешнем предсказании изображений.
[50] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. После полного восстановления кодированного изображения, и если оно было определено как опорное (например, анализатором (320)), текущее опорное изображение (358) может быть помещено в буфер (357) опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделена новая память текущих изображений.
[51] Видеодекодер 210 может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, Рекомендации Н.265 ITU-T. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе, или стандарте, технологии сжатия видео, и в частности, синтаксису специфицированных профилей стандарта. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту смены кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п. Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического эталонного декодера (Hypothetical Reference Decoder, HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[52] В одном из вариантов осуществления настоящего изобретения приемник (310) может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером (210) для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, улучшающих временных, пространственных или SNR уровней, избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[53] На фиг. 4 показана функциональная блок-схема видеокодера (203) в соответствии с одним из вариантов осуществления настоящего изобретения.
[54] Кодер (203) может принимать видеоотсчеты от источника (201) видео (который не является частью кодера), захватывающего видеоизображения для кодирования при помощи кодера (203).
[55] Источник (201) видео может подавать исходную видеопоследовательность для кодирования видеокодером (203) в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например, 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отчетов (например, Y CrCB 4:2:0, Y CrCB 4:4:4). В системе медиасервиса источник (201) видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник (203) видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должна быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[56] В соответствии с одним из вариантов осуществления настоящего изобретения видеокодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера (450) может быть обеспечение подходящей скорости кодирования. Контроллер управляет остальными функциональными блоками, описанными ниже, и быть функционально связан с этими блоками. Эта связь для простоты на чертеже не показана. Параметры, задаваемые контроллером, могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение X для методов оптимизации скорость-искажения, …), размером изображений, компоновкой групп изображений (GOP), максимальным диапазоном поиска векторов движения и т.п. Специалистам в данной области техники должны быть очевидны и другие функции контроллера (450), поскольку они могут соответствовать видеокодеру (203), оптимизированному для конструкции конкретной системы.
[57] Некоторые из видеокодеров работают в конфигурации, которую специалисты в данной области техники называют «петлей кодирования». Крайне упрощенно, петля кодирования может состоять из машины кодирования в кодере (430) (далее «кодер источника»), отвечающей за формирование символов на основе входных кодируемых изображений, а также опорных изображений, и (локального) декодера (433), встроенного в кодер (203) и восстанавливающего символы, с формированием данных отсчетов, которые бы идентичным образом формировал (удаленный) декодер (поскольку сжатие символов в кодированный битовый видеопоток является сжатием без потерь, в технологиях сжатия видео, рассматриваемых в настоящем изобретении). Этот восстановленный поток отсчетов вводят в память (434) опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое буфера опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, подсистема предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) должен быть хорошо известен специалистам в данной области техники.
[58] Работа «локального» декодера (433) по существу идентична «удаленному» декодеру (210), которая уже была подробно описана выше в связи с фиг. 3. Однако, возвращаясь к фиг. 4, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и анализатором (320) может выполняться без потерь, в локальном декодере (433) могут не быть в полной мере реализованы подсистемы энтропийного декодирования из состава декодера (210), включая канал (312), приемник (310), буфер (315) и анализатор (320).
[59] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. По этой причине описание настоящего изобретения сконцентрировано на работе декодера. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[60] В числе своих операций кодер (430) источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входные кадры кодируют с предсказанием на основе одного или более ранее кодированных кадров видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, машина (432) кодирования кодирует разности между блоками пикселей во входном кадре и блоками пикселей в опорном кадре (или кадрах), которые могут быть выбраны как опорные для предсказания входного кадра.
[61] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, помеченные как опорные, в зависимости от символов, формируемых кодером (430) источника. Операции машины (432) кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными кадрами и помещает восстановленные опорные кадры в кэш (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, содержимое которых совпадает с восстановленными опорными кадрами, получаемыми удаленным видеодекодером (при отсутствии ошибок передачи).
[62] Предсказатель (435) может выполнять поиск предсказаний для машины (432) кодирования. То есть, для нового кодируемого кадра предсказатель (435) может выполнять поиск в памяти (434) опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданных, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предсказатель (435), может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (435), опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти (434) опорных изображений.
[63] Контроллер (450) может управлять операциями кодирования в видеокодере (430), включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[64] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хаффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[65] Передатчик (440) может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером (445), чтобы подготовить ее к передаче по каналу (460), связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные из видеокодера (430) с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных (их источники не показаны на чертеже).
[66] Контроллер (450) может управлять работой кодера (203). При кодировании контроллер (450) может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. Например, изображениям может быть присвоен один из описанных ниже типов кадров.
[67] Внутренне предсказываемым изображением (I-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других кадров видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники должны быть осведомлены о подобных вариантах I-изображений, а также об их свойствах и применимости.
[68] Предсказываемое изображение (Р-изображение) это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока.
[69] Двунаправленно предсказываемое изображение (В-изображение) это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображения и соответствующих метаданных, чтобы восстановить один блок.
[70] Исходные изображения обычно пространственно разбивают на множество блоков (например, блоки размера 4×4, 8×8, 4×8 или 16×16 отсчетов в каждом) и кодируют поблочно. Блоки могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже кодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки в В-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[71] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть задокументированы в стандарте, например, в Рекомендации Н.265 ITU-T. При своем функционировании видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[72] В одном из вариантов осуществления настоящего изобретения передатчик (440) может, совместно с кодированным видео, передавать дополнительные данные. Видеокодер (430), например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные улучшающих временных, пространственных или SNR-уровней, избыточных изображений или слайсов, сообщений дополнительной улучшающей информации (SEI) или фрагментов наборов параметров информации об используемости видео (VUI) и т.п.
[73] В последнее время больше внимания стало уделяться агрегации или экстракции множества семантически независимых частей изображения в сжатой форме в единое видеоизображение. В частности, в контексте, например, 360-градусного кодирования для некоторых применений, связанных с видеонаблюдением, множество семантически независимых исходных изображений (например, шесть поверхностей куба при кубической проекции сцены 360-градусного видео, или входы от отдельных камер в многокамерной системе видеонаблюдения) могут требовать независимых адаптивных параметров разрешения для адаптации к различной активности в сценах в каждый заданный момент времени. Другими словами, кодеры, в каждый заданный момент времени, должны иметь возможность использовать различные коэффициенты передискретизации для различных семантически независимых изображений, составляющих сцену 360-градусного видео или видеонаблюдения в целом. Для комбинирования в единое изображение, в свою очередь, требуется выполнение передискретизации опорных изображений, и наличие сигнализации кодирования с адаптивным разрешением для частей кодированного изображения.
[74] Ниже будут введены несколько терминов, используемых ниже в настоящем описании.
[75] Субизображение, в некоторых случаях, можно понимать как прямоугольную структуру из отсчетов, блоков, макроблоков, блоков кодирования, или аналогичных элементов, сгруппированных семантически, которые могут быть кодированы независимо с различным разрешением. Одно или более субизображений могут формировать изображение. Одно или более кодированных субизображений могут формировать кодированное изображение. Одно или более субизображений могут быть объединены в изображение, и одно или более субизображений могут быть извлечены из изображения. В некоторых из вариантов осуществления настоящего изобретения одно или более субизображений могут быть объединены в сжатом виде, без перекодирования на уровне отсчетов, в единое кодированное изображение, и в этом случае, а также в других случаях, одно или более кодированных субизображений могут быть извлечены из кодированного изображения в сжатом виде.
[76] Под адаптивным изменением разрешения (Adaptive Resolution Change, ARC) понимают механизм, который позволяет изменять разрешение изображения или субизображения внутри кодированной видеопоследовательности, например, при помощи передискретизации опорных изображений. Параметрами ARC далее будем называть управляющую информацию, необходимую для выполнения адаптивного изменения разрешения, которая может включать, например, параметры фильтрации, коэффициенты масштабирования, разрешения выводимых и/или опорных изображений, различные флаги управления и т.п.
[77] В одном из вариантов осуществления настоящего изобретения, кодирование и декодирование могут выполняться над отдельным семантически независимым кодированным видеоизображением. Перед описанием сущности кодирования/декодирования множества субизображений с независимыми параметрами ARC, и вносимыми ими дополнительными усложнениями, рассмотрим варианты сигнализации параметров ARC.
[78] На примере фиг. 5А-5Е проиллюстрированы несколько вариантов осуществления сигнализации параметров ARC. Как отмечается в каждом из вариантов, они имеют свои преимущества и недостатки в отношении эффективности и сложности кодирования, а также с точки зрения архитектуры. В стандарте или технологии видеокодирования могут быть выбраны один или более из предложенных вариантов осуществления сигнализации ARC параметров, а также варианты, известные на существующем уровне техники. Эти варианты не обязательно взаимно исключают друг друга, и могут быть взаимозаменяемы в зависимости от требований применения, применяемых технологий и стандартов, а также выбора, выполняемого кодером.
[79] Классы параметров ARC могут включать следующее:
[80] - коэффициенты повышающей или понижающей передискретизации, отдельно по осям X и Y, или в комбинации;
[81] - коэффициенты повышающей или понижающей передискретизации, с добавлением временного измерения, указывающего на постоянную скорость увеличения/уменьшения масштаба для заданного количества изображений;
[82] - любое из двух предыдущих может включать кодирование одного или более по возможности коротких синтаксических элементов, которые могут указывать на таблицу, содержащую упомянутые коэффициенты;
[83] - разрешение, по оси X или Y, измеряемое в отсчетах, блоках, макроблоках, блоках кодирования (CU), или с любой другой подходящей точностью, для входного изображения, выводимого изображения, опорного изображения, кодированного изображения, в комбинации, или по отдельности; Если присутствует более одного разрешения (например, одно для входного изображения и одно для опорного изображения), то в некоторых случаях один набор значений может вычисляться на основе другого набора значений. Это может управляться, например, при помощи специальных флагов. Более подробный пример будет рассмотрен ниже.
[84] - координаты деформации (warping), подобные применяемым в Приложении Р стандарта Н.263 (Н.263 Annex Р), снова, как упоминалось выше, с подходящей точностью. В Приложении Р стандарта Н.263 определен один эффективный метод кодирования координат деформации, однако, потенциально можно предложить и более эффективные методы. К примеру, реверсивное кодирование, типа кодирования Хаффмана, с кодовым словом переменной длины, координат деформации в приложении Р может быть заменено на двоичное кодирование с кодовым словом соответствующей длины, которая, например, может вычисляться на основе максимального размера изображения, возможно, умноженного на коэффициент и смещенного на заданное значение, чтобы разрешить «деформацию» вне границ, заданных максимальным размером изображения.
[85] - параметры фильтра повышающей или понижающей передискретизации. В вариантах осуществления настоящего изобретения может присутствовать только один фильтр для повышающей и/или понижающей передискретизации. Однако в вариантах осуществления настоящего изобретения желательно обеспечить большую гибкость конструирования фильтров, а это может требовать сигнализации параметров фильтрации. Такие параметры могут выбираться с помощью указателя в списке возможных конструкций фильтра, фильтр может быть полностью определен (например, при помощи списка коэффициентов фильтрации, с использованием подходящих методов энтропийного кодирования), фильтр может быть неявно выбран при помощи коэффициентов повышающей или понижающей передискретизации, которые, в свою очередь сигнализируют в соответствии с описанными выше механизмами, и т.п.
[86] В дальнейшем описании предполагается кодирование конечного набора коэффициентов повышающей или понижающей пере дискретизации (один и тот же коэффициент применяют для оси X и для оси Y), указываемого при помощи кодового слова. Такое кодовое слово может иметь переменную длину, например, с помощью экспоненциального кодирования Голомба (Ext-Golomb) для соответствующих синтаксических элементов, в таких стандартах видеокодирования, как Н.264 и Н.265. Одна из возможных таблиц соответствия значений коэффициентам повышающей или понижающей передискретизации проиллюстрирована в виде таблицы 1.
[87] Могут быть предложены множество аналогичных таблиц соответствий, согласно требованиям применения и возможностям механизмов повышающей или понижающей передискретизации, доступных в стандарте или технологии видеокодирования. Таблица может быть расширена большим количеством значений. Значения могут быть также представлены и с помощью других механизмов кодирования, а не кодами Ext-Golomb, например, с помощью двоичного кодирования. Это может давать определенные преимущества, когда коэффициенты передискретизации задействуют вне собственно подсистем обработки видео (в первую очередь, в кодере и декодере), например, в MANE. Следует отметить, что в случае, когда изменения разрешения не требуется, может быть выбран короткий код Ext-Golomb, например, в показанной выше таблице, имеющий длину только в один бит. Это позволяет получить преимущество в эффективности кодирования, в общем случае, по сравнению с использованием двоичных кодов.
[88] Количество записей в таблице, как и их семантика, могут быть конфигурируемыми, частично или полностью. К примеру, основной каркас таблицы может передаваться в наборе параметров высокого уровня, например, в наборе параметров последовательности или наборе параметров декодера. В вариантах осуществления настоящего изобретения в технологии или стандарте видеокодирования могут быть определены несколько подобных таблиц, выбор которых выполняют, например, при помощи набора параметров декодера или последовательности.
[89] Ниже будет рассмотрено, каким образом коэффициенты повышающей или понижающей передискретизации (информация ARC), кодированные в соответствии с описанным выше, могут быть включены в синтаксис технологии или стандарта видеокодирования. Сходные рассуждения могут быть применимы для одного или нескольких кодовых слов, управляющих фильтрами повышающей или понижающей передискретизации. Случай, когда для фильтров или других структур данных необходимы сравнительно большие объемы данных, будет рассмотрен ниже.
[90] В соответствии с иллюстрацией фиг. 5А приложение Р спецификации Н.263 (Н.263 Annex Р) включает информацию (502) ARC в форме четырех координат деформации в заголовке (501) изображения, а именно, в расширении заголовка PLUSPTYPE (503) стандарта Н.263. Это представляется рациональным решением для случаев, когда а) заголовок изображения доступен, и Ь) ожидаются частные изменения информации ARC. Однако объем служебной информации при применении сигнализации типа предложенной в Н.263, может быть довольно высок, при этом коэффициенты масштабирования между границами изображений могут быть несогласованными, поскольку заголовки изображений не обязательно хранят длительно.
[91] В соответствии с иллюстрацией фиг. 5В, спецификация JVCET-M135-v1 включает ссылочную информацию (505) ARC (указатель), расположенную в наборе (504), параметров последовательности, которая указывает на таблицу (506), включающую целевые разрешения, которая, в свою очередь, расположена внутри набора (507) параметров последовательности. Помещение доступных разрешений в таблицу (506) в наборе (507) параметров последовательности (507), по словам авторов, быть обусловлено применением набора SPS в качестве точки соглашения о совместимости при обмене информацией о возможностях. Разрешение может меняться в пределах, заданных значениями таблицы (506), от изображения к изображению, путем ссылки на подходящий набор (504) параметров изображения.
[92] На фиг. 5С-5Е показаны возможные варианты передачи информации ARC в битовом потоке кодированного видео, предложенные в настоящем изобретении. Каждый из этих вариантов обладает преимуществами по сравнению с рассмотренными выше вариантами реализации. Предложенные варианты могут присутствовать в технологии или стандарте видеокодирования одновременно.
[93] В вариантах осуществления настоящего изобретения, например, в варианте, показанном на фиг. 5С, информация ARC (509), к примеру, коэффициент передискретизации (масштабирования), может присутствовать в заголовке слайса, заголовке GOP, заголовке тайла или заголовке группы тайлов. На фиг. 5С проиллюстрирован вариант осуществления настоящего изобретения, в котором используют заголовок (508) группы тайлов. Это может быть адекватным решением, если информация ARC имеет малый объем, например, одиночного значения ue(v) переменной длины или кодового слова фиксированной длины в несколько бит, как, например, это показано выше. Размещение информации ARC непосредственно в заголовке группы тайлов имеет то дополнительное преимущество, что информация ARC может применяться для субизображения, представленного, например, этой группой тайлов, а не только к целому изображению. Более подробно это будет описано ниже. Кроме того, даже если технология или стандарт видеокодирования подразумевают адаптивное изменение разрешения только для изображений в целом (в отличие, например, от адаптивного изменения разрешения на уровне группы тайлов), помещение информации ARC в заголовок группы тайлов, по сравнению с ее помещением в заголовок изображения, подобно Н.263, позволяет получить определенные преимущества с точки зрения устойчивости к ошибкам.
[94] В вариантах осуществления настоящего изобретения, например, в варианте, показанном на фиг. 5D информация (512) ARC может быть непосредственно представлена в соответствующем наборе параметров, к примеру, в наборе параметров изображения, наборе параметров заголовка, наборе параметров тайла, наборе параметров адаптации и т.д. На фиг. 5D показан вариант осуществления настоящего изобретения, в котором используют набор (511) параметров адаптации. Область действия этого параметра наборов, предпочтительно, может быть не больше, чем изображение, например, может быть группой тайлов. Использование информации ARC задают неявно, при помощи активации соответствующего набора параметров. К примеру, если в технологии или стандарте видеокодирования определено только ARC на уровне изображений, то подходящим может быть набор параметров изображения или эквивалентный набор.
[95] В вариантах осуществления настоящего изобретения, например, в варианте, показанном на фиг. 5Е ссылочная информация (513) ARC может присутствовать с заголовке (514) группы тайлов или в аналогичной структуре данных. Такая ссылочная информация (513) может ссылаться на подмножество информации (515) ARC, доступной в наборе (516) параметров, с областью действия, превосходящей отдельное изображение, например, в наборе параметров последовательности или наборе параметров декодера.
[96] Дополнительный уровень неявной активации набора PPS из заголовка группы тайлов, PPS, SPS, применяемой в JVET-M0135-v1 представляется излишним, поскольку наборы параметры изображений, как и наборы параметров последовательности, могут (и должны в некоторых стандартах, например, RFC3984) использоваться для соглашений, или объявлений, о совместимости. Однако если информация ARC должна также применяться к субизображению, например, представленному группой тайлов, лучшим выбором может быть набор параметров с областью действия, ограниченной группой тайлов, например, набор параметров адаптации или набор параметров заголовка. Также, если информация ARC имеет не пренебрежимо малый объем, например, содержит информацию управления фильтрацией, то есть множество коэффициентов фильтрации, то с точки зрения эффективности кодирования параметр может быть лучшим решением, чем использование непосредственно заголовка (508), поскольку эти установки могут использоваться повторно для будущих изображений или субизображений путем ссылки на тот же набор параметров.
[97] При использовании набора параметров последовательности или более высокоуровневых наборов параметров с областью действия, охватывающей множество изображений, могут быть актуальными следующие соображения:
[98] 1. Набором параметров для хранения таблицы (516) с информацией ARC в некоторых случаях может быть набор параметров последовательности, однако в других случаях, предпочтительно, набор параметров декодера. Область действия набора параметров декодера может охватывать несколько CVS, а именно, кодированный видеопоток, т.е. все биты кодированного видео, от начала до завершения сеанса. Такая область действия может быть более подходящей, поскольку коэффициенты ARC могут быть запрограммированы в декодере, и возможно, реализованы аппаратно, поэтому аппаратные параметры в основном остаются постоянными в одной CVS (которая, по меньшей мере в некоторых мультимедийных системах, представляет собой группу изображений длиной в одну секунду или менее). При этом помещение таблицы в набор параметров последовательности явно перечислено среди вариантов размещения, рассмотренных в настоящем документе, а именно, в связи с приведенным ниже пунктом 2.
[99] 2. Ссылочная информация (513) ARC, предпочтительно, может быть помещена непосредственно в заголовок изображения/слайса/тайла/GOP/ группы тайлов, например, в заголовок (514) группы тайлов, вместо набора параметров изображения, как в JVCET-M0135-v1. К примеру, когда кодеру необходимо изменить одно значение в наборе параметров изображения, например, ссылочную информацию ARC, ему нужно создать новый набор PPS и сослаться на этот новый набор PPS. Допустим, что изменяется только ссылочная информация ARC, а остальная информация, то есть, например, информация матрицы квантования, в наборе PPS остается неизменной. Эта информация может иметь значительный объем, и чтобы новый PPS был полным, ее нужно будет передать повторно. Поскольку ссылочная информация (513) ARC может быть одиночным кодовым словом, например, указателем на таблицу, и это единственное значение, которое меняется, то повторно передавать всю информацию матрицы квантования представляется неудобным и нерациональным. В такой мере, с точки зрения эффективности кодирования было бы значительно лучше исключить непрямое указание через набор PPS, предложенное в JVET-M0135-v1. Также, помещение ссылочной информации ARC в набор PPS имеет дополнительное неудобство, связанное с тем, что информация ARC, на которую ссылается ссылочная информация (513) ARC, может применяться для всего изображения, а не для субизображений, поскольку областью действия набора параметров изображения является изображение в целом.
[100] В этом же, или в альтернативном, варианте осуществления настоящего изобретения, сигнализация параметров ARC может соответствовать подробному примеру, показанному на фиг. 6А-6В.
На фиг. 6А-6В показаны синтаксические деревья, представленные с использованием нотации, приблизительной соответствующей языку программирования С, которую, например, используют в стандартах видекодирования по меньшей мере с 1993 года. Выделенные жирным шрифтом строки указывают на синтаксические элементы, присутствующие в битовом потоке. Строки без выделения жирным в основном указывают на команды управления или на присвоение значений переменных.
[101] В соответствии с иллюстрацией фиг. 6А, заголовок (601) группы тайлов, как пример синтаксической структуры заголовка, применимого для (возможно, прямоугольной) части изображения, может условно содержать имеющий переменную длину и кодированный кодом Exp-Golomb синтаксический элемент dec_pic_size_idx (602) (выделен жирным). Присутствие этого синтаксического элемента в заголовке группе тайлов может управляться в зависимости от использования адаптивного разрешения (603). В данном примере значение флага не выделено жирным, это означает, что флаг присутствует в битовом потоке на момент, когда он встречается в синтаксической диаграмме. Применяется ли адаптивное разрешение для данного изображения, или его части, может быть сигнализировано в любой высокоуровневой синтаксической структуре внутри или вне битового потока. В рассмотренном примере это сигнализировано в наборе параметров последовательности, как это будет показано ниже.
[102] На фиг. 6В показан фрагмент набора (610) параметров последовательности. Первый показанный синтаксический элемент -это флаг (611) adaptive_pic_resolution_change_flag. Когда он имеет значение «ИСТИНА», флаг указывает на использование адаптивного разрешения, что, в свою очередь, может требовать соответствующей информации управления. В данном примере такую информацию управления включают условно в зависимости от значения флага, с помощью выражения if() в наборе (612) параметров и в заголовке (601) группы тайлов.
[103] Когда применяют адаптивное разрешение, в данном примере, кодируют выходное разрешение, измеряемое в отсчетах (613). Позиция 613 относится одновременно к outputjpic_width_in_lumasamples и outputj_ic_width_in_lumasamples, которые совместно определяют разрешение выводимого изображения. В конкретной технологии или стандарте видеокодирования, в других местах, могут быть определены некоторые ограничения на любое из этих значений. К примеру, разрешение уровня стандарта может ограничивать общее количество выходных отсчетов, которое может быть равно произведению значений этих двух синтаксических элементов. Также, в конкретных технологиях или стандартах видеокодирования, или во внешних технологиях или стандартах, например, стандартах системы, может быть ограничен числовой диапазон (например, одно или оба измерения должны быть кратны степени двойки), или соотношение сторон (например, высота и ширина должны иметь заданное отношение, например, 4:3 или 16:9). Такие ограничения могут накладываться из-за аппаратной реализации, или по другим причинам, и должны быть известны специалистам в данной области техники.
[104] В некоторых применениях желательно, чтобы кодер инструктировал декодер об использовании конкретного размера изображения, вместо неявного указания на размер выводимого изображения. В данном примере флаг reference_pic_size_presentflag (614) определяет условное присутствие размеров (615) опорного изображения (снова, показанные обозначения относятся одновременно к ширине и к высоте).
[105] Наконец, показана таблица возможных значений ширины и высоты декодированного изображения. Такая таблица может быть указана, например, с помощью указателя (616) на таблицу, (num_dec_pic_size_in_luma_samples_minusl). "minus 1" может указывать на интерпретацию значения этого синтаксического элемента. К примеру, если кодированное значение равно нулю, присутствует только одна запись таблицы. Если значение равно пяти, имеются шесть записей таблицы. Для каждой «строки» таблицы ширину и высоту декодированного изображения затем включают в синтаксическую структуру (617).
[106] На записи таблицы, обозначенные (617), может указывать синтаксический элемент (602) dec_pic_size_idx в заголовке группы тайлов, что позволяет иметь различные размеры декодированного изображения, то есть, по сути, эффект масштабирования, в каждой отдельной группе тайлов.
[107] Некоторые технологии или стандарты видеокодирования, например, VP9, для обеспечения возможности пространственного масштабирования поддерживают пространственное масштабирование с выполнением некоторого вида пере дискретизации опорных изображений (соответствующая сигнализация значительно отличается от предложенной в настоящем изобретении) в комбинации с временным масштабированием. В частности, может выполняться повышающая передискретизация отдельных опорных изображений, с использованием методов типа ARC, до более высокого разрешения, в результате чего формируют основу пространственного улучшающего уровня. Изображения с повышенным разрешением могут уточняться с использованием стандартных механизмов предсказания в высоком разрешении, что позволяет повысить детализацию.
[108] Предложенные варианты осуществления настоящего изобретения могут применяться в подобном окружении. В некоторых случаях, в этом же, или в альтернативном варианте осуществления настоящего изобретения, значение в заголовке блока NAL, например, поле Temporal ID может использоваться для указания не только на временной, но и на пространственный уровень. Это позволяет получить преимущество в некоторых системах; к примеру, для окружений, где применяется масштабирование, могут, без изменений, применяться существующие выбираемые блоки пересылки (Selected Forwarding Units, SFU), созданные и оптимизированные для избирательной пересылки временных уровней в зависимости от значения Temporal ID в заголовке блока NAL. Для возможности применения этой функциональности может быть необходимо соответствие между размером кодированного изображения и временным уровнем, на который ссылается поле Temporal ID в заголовке блока NAL.
[109] В некоторых технологиях видеокодирования блок доступа (Access Unit, AU) может ссылаться на кодированные изображения, слайсы, тайлы, блоки NAL и т.п., которые были захвачены и скомпонованы в соответствующий битовый поток изображений/слайсов/тайлов/блоков NAL, в заданный момент времени. Таким моментом времени может быть, например, время композиции.
[ПО] В стандарте HEVC и в некоторых других технологиях видеокодирования значение порядкового номера изображения (picture order count, РОС) может использоваться для указания на выбранное опорное изображение среди множества опорных изображений, хранимых в буфере декодированных изображений (DPB). Когда блок доступа (AU) содержит одно или более изображений, слайсов или тайлов, то каждое изображение, слайс или тайл, принадлежащие одному блоку доступа, могут иметь одно и то же значение РОС, по которому может быть сделан вывод о том, что они были сформированы на основе контента с одинаковым временем композиции. Другими словами, в случае, когда два изображения/слайса/тайла содержат одно и то же заданное значение РОС, эти два изображения/слайса/тайла принадлежат одному блоку доступа, AU, и имеют одинаковое время композиции. И наоборот, два изображения/слайса/тайла с различными значениями РОС указывают на то, что эти изображения/слайсы/тайлы принадлежат разным блокам доступа и имеют различные времена композиции.
[111] В вариантах осуществления настоящего изобретения это жесткое требование может быть ослаблено, то есть блок доступа может включать изображения, слайсы или тайлы с различными значениями РОС. За счет допущения различных значений РОС в одном блоке доступа можно использовать значение РОС для идентификации потенциальных независимо декодируемых изображений/слайсов/тайлов с одинаковым временем отображения. А это, в свою очередь, позволяет обеспечить поддержку множества уровней масштабирования без изменения сигнализации о выборе опорных изображений, например, сигнализации набора опорных изображений или списка опорных изображений, описанной более подробно ниже.
[112] Однако, все же желательно иметь возможность идентифицировать блок доступа, к которому принадлежит изображение/слайс/тайл, среди остальных изображений/слайсов/тайлов с отличающимися значениями РОС, на основе исключительно значения РОС. Это может быть достигнуто в соответствии с приведенным ниже описанием.
[113] В вариантах осуществления настоящего изобретения порядковый номер блока доступа (access unit count, AUC) может сигнализироваться в высокоуровневой синтаксической структуре, например, в заголовке блока NAL, заголовке слайса, заголовке группы тайлов, в сообщении SEI, в наборе параметров или в разделителе блоков доступа. Значение AUC может использоваться для определения, какие блоки NAL, изображения, слайсы или тайлы принадлежат к заданному блоку доступа. Значение AUC может соответствовать конкретному моменту времени композиции. Значение AUC может быть кратно значению РОС. Значение AUC может вычисляться делением значения РОС на целочисленное значение. В некоторых вариантах реализации операции деления могут быть значительной нагрузкой для декодера. В таких случаях небольшое ограничение пространства номеров для значений AUC позволяет заменить операцию деления операцией сдвига. К примеру, значение AUC может быть равно значению старшего бита (Most Significant Bit, MSB) в диапазоне значений РОС.
[114] В вариантах осуществления настоящего изобретения, значение цикла РОС для блока доступа (рос cycle au) может сигнализироваться в синтаксической структуре верхнего уровня, например, в заголовке блока NAL, заголовке слайса, заголовке группы тайлов, в сообщении SEI, в наборе параметров или в разделителе блока доступа. Значение poc_cycle_au может указывать, сколько последовательных отличающихся значений РОС могут быть связаны с одним блоком доступа.
Например, если значение poc_cycle_au равно 4, изображения, слайсы или тайлы со значением РОС, равным 0 3, включительно, могут относиться к блоку доступа со значением AUC, равным 0, а изображения, слайсы или тайлы со значением РОС, равным 4-7, включительно, могут относиться к блоку доступа со значением AUC, равным 1. Следовательно, значение AUC может быть вычислено делением значения РОС на значение poc_cycle_au.
[115] В вариантах осуществления настоящего изобретения значение рос cyle au может быть вычислено на основе информации, располагающейся, например, в наборе параметров видео (VPS), которая определяет количество пространственных или SNR-уровней в кодированной видеопоследовательности. Один из примеров такого потенциального соответствия кратко описан ниже. Описанные выше вычисления позволяют сэкономить несколько битов в наборе VPS, и следовательно, повысить эффективность кодирования, однако в некоторых из вариантов осуществления настоящего изобретения рос cycle au может быть явно кодировано в соответствующей синтаксической структуре верхнего уровня, иерархически подчиненной набору параметров видео, что позволяет минимизировать poc_cycle_au для заданной малой части битового потока, например, для изображения. Такая оптимизация позволяет сэкономить больше битов, чем путем описанной выше процедуры вычисления, поскольку значения РОС и/или значения синтаксических элементов, опосредованно опирающихся на РОС, могут кодироваться в синтаксических структурах нижнего уровня.
[116] На фиг. 8 показан пример синтаксических таблиц, в соответствии с вариантами осуществления настоящего изобретения, для сигнализации синтаксического элемента vpsjtoc cycle au в наборе VPS (или SPS), в котором указывают значение рос cycle au, используемое для всех изображений/слайсов в кодированной видеопоследовательности, в заголовке слайса. Если значение РОС увеличивается в каждом блоке доступа равномерно, vps_contant_poc_cycle_per_au в наборе VPS может быть задано равным 1, a vps_poc_cycle_au может сигнализироваться в наборе VPS. В этом случае slice j»oc cycle au может не сигнализироваться явно, а значение AUC для каждого блока доступа может вычисляться делением значения РОС на vps_poc_cycle_au. Если значение РОС в каждом блоке доступа не увеличивается равномерно, то vps_contantjpoc_cycle_per_au в наборе VPS может быть задано равным 0. В этом случае vps access unit cnt может не сигнализироваться, тогда как sliceaccessunitcnt может сигнализироваться в заголовке слайса для каждого слайса изображения. Каждый слайс изображения может иметь отличающееся значение slice access unit cnt. Значение AUC для каждого блока доступа может вычисляться делением значения РОС на slice_poc_cycle_au.
[117] На фиг. 9 показана блок-схема, иллюстрирующая пример рассмотренной выше процедуры. Например, в операции S910, может быть выполнен анализ VPS (или SPS), и в операции S920 может быть определено, является ли цикл РОС в каждом блоке доступа постоянным внутри кодированной видеопоследовательности. Если цикл РОС в каждом блоке доступа постоянен (Да, в операции S920), то затем в операции S930 может быть вычислено значение порядкового номера блока доступа для конкретного блока доступа на основе poc_cycle_au, сигнализированного для кодированной видеопоследовательности, и значения РОС этого конкретного блока доступа. Если цикл РОС в каждом блоке доступа не постоянен (Нет, в операции S920), то затем в операции S940 может быть вычислено значение порядкового номера блока доступа для конкретного блока доступа на основе poc_cycle_au, сигнализированного на уровне изображения, и значения РОС этого конкретного блока доступа. В операции S950 может выполняться анализ нового набора VPS (или SPS)
[118] В вариантах осуществления настоящего изобретения, несмотря на то, что значения РОС в изображениях, слайсах или тайлах могут быть различными, эти изображения, слайсы или тайлы, соответствующие блоку доступа с одинаковыми значениями AUC, могут относиться к одному моменту времени декодирования или вывода. Следовательно, при отсутствии каких-либо зависимостей анализа иди декодирования между изображениями, слайсами или тайлами в одном блоке доступа, все изображения, слайсы или тайлы, относящиеся к одному блоку доступа, или их подмножество, могут декодироваться параллельно и могут выводиться в один момент времени.
[119] В вариантах осуществления настоящего изобретения несмотря на то, что значения РОС в изображениях, слайсах или тайлах могут быть различными, эти изображения, слайсы или тайлы, соответствующие блоку доступа с одинаковыми значениями AUC, могут относиться к одному моменту времени композиции/отображения. Когда время композиции содержится в контейнерном формате, даже если изображения соответствуют различным блокам доступа, но имеют одинаковое время композиции, эти изображения могут отображаться в один момент времени.
[120] В вариантах осуществления настоящего изобретения каждое изображение, слайс или тайл могут иметь одинаковые временные идентификаторы (temporal_id) в одном блоке доступа. Все изображения, слайсы или тайлы, соответствующие одному моменту времени, или их подмножество, могут соответствовать одному временному подуровню. В вариантах осуществления настоящего изобретения все изображения, слайсы или тайлы могут иметь одинаковые или отличающиеся идентификаторы пространственного уровня (layer_id) в одном пакте доступа. Все изображения, слайсы или тайлы, соответствующие одному моменту времени, или их подмножество, могут соответствовать одному или различным пространственным уровням.
[121] На фиг. 7 показан пример структуры видеопоследовательности с комбинацией значений temporal_id, layer_id, РОС и AUC при адаптивном изменении разрешения. В данном примере изображение, слайс или тайл в первом блоке доступа с AUC=0 может иметь tempora_lid=0, и layer_id=0 или 1, тогда как изображение, слайс или тайл во втором блоке доступа с AUC=1 может иметь temporal_id=1 и layer_id=0 или 1, соответственно. Значение РОС увеличивают на 1 в каждом изображении независимо от значений temporal_id и layer_id. В данном примере значение poc_cycle_au может быть равно 2. В вариантах осуществления настоящего изобретения значение рос cycle au может быть задано равным количеству уровней (пространственного масштабирования). В данном примере, соответственно, значение РОС увеличивают на 2, тогда как значение AUC увеличивают на 1.
[122] В рассмотренных выше вариантах осуществления настоящего изобретения может быть поддержана вся структура межуровневого предсказания и указания опорных изображений, или ее подмножество, с использованием существующей сигнализации набора опорных изображений (reference picture set, RPS) в HEVC или с использованием сигнализации списка опорных изображений (reference picture list, RPL). В RPS или RPL указание на выбранное опорное изображение может выполняться путем сигнализации значения РОС или значения разности РОС между текущим изображением и выбранным опорным изображением. В одном из примеров осуществления настоящего изобретения RPS и RPL могут использоваться для указания на структуру внешнего предсказания изображений или межуровневого предсказания без изменения сигнализации, однако с описанными ниже ограничениями. Если значение temporal_id опорного изображения больше, чем значение temporal_id текущего изображения, то для компенсации движения в текущем изображении, или иного предсказания, это опорное изображение использоваться не может.Если значение layer_id опорного изображения больше, чем значение layer_id текущего изображения, то для компенсации движения в текущем изображении, или иного предсказания, это опорное изображение использоваться не может.
[123] В вариантах осуществления настоящего изобретения масштабирование векторов движения на основе разности РОС, для временного предсказания векторов движения, может быть запрещено между различными изображениями внутри блока доступа. Поэтому, несмотря на то, что каждое значение может иметь различные значения РОС внутри блока доступа, вектор движения не масштабируют и не используют для временного предсказания векторов движения внутри блока доступа. Это необходимо, поскольку опорное изображение с отличающимся РОС в том же блоке доступа, рассматривают как опорное изображение, имеющее тот же момент времени. Соответственно, в данном варианте осуществления настоящего изобретения, функция масштабирования вектора движения может возвращать 1, когда опорное изображение принадлежит блоку доступа, к которому относится текущее изображение.
[124] В вариантах осуществления настоящего изобретения масштабирование векторов движения на основе разности РОС, для временного предсказания векторов движения, может, опционально, деактивироваться на протяжении нескольких изображений, когда пространственное разрешение опорного изображения отличается от пространственного разрешения текущего изображения. Когда масштабирование векторов движения разрешено, его выполняют на основе одновременно разности РОС и соотношения пространственных разрешений между текущим изображением и опорным изображением.
[125] В вариантах осуществления настоящего изобретения масштабирование вектора движения может выполняться на основе разности AUC, вместо разности РОС, для временного предсказания векторов движения, в частности, когда poc_cycle_au имеет неравномерные значения (например, когда vps_contant_poc_cycle_per_au=0). В противном случае (например, когда vps_contantjtoc cycle_per_au=1), масштабирование векторов движения на основе разности AUC может быть идентично масштабированию векторов движения на основе разности РОС.
[126] В вариантах осуществления настоящего изобретения, когда вектор движения масштабируют на основе разности AUC, опорный вектор движения в том же блоке доступа (с тем же значением AUC), что и текущее изображение, не масштабируют на основе разности AUC и используют для предсказания векторов движения без масштабирования или с масштабированием на основе отношения пространственного разрешения между текущим изображением и опорным изображением.
[127] В вариантах осуществления настоящего изобретения, значение AUC может использоваться для определения границ блока доступа, а также для работы гипотетического эталонного декодера (HRD), которому необходимы значения времени ввода и вывода с точностью до блока доступа. В вариантах осуществления настоящего изобретения декодированное изображение в верхнем уровне в блоке доступа может выводиться для отображения. Значение AUC и значение layer_id могут использоваться для идентификации выводимого изображения.
[128] В вариантах осуществления настоящего изобретения, изображение может включать одно или более субизображений. Каждое субизображение может покрывать локальную область или всю область изображения. Область, занимаемая субизображением, может как перекрываться, так и не перекрываться с областями других субизображений. Область, покрываемая одним или более субизображениями, может покрывать как всю область изображения, так и ее часть. Если изображение включает субизображение, область, занимаемая субизображением, может быть идентична области, занимаемой изображением.
[129] В вариантах осуществления настоящего изобретения субизображение может кодироваться при помощи метода кодирования, аналогичного методу кодирования, используемому для кодированного изображения. Субизображение может кодироваться независимо или кодироваться в зависимости от другого субизображения или кодированного изображения. Субизображение может быть как зависимо, в отношении его синтаксического анализа, от другого субизображения или кодированного изображения, так и независимо.
[130] В вариантах осуществления настоящего изобретения, кодированное субизображение может содержаться в одном или более уровнях. Кодированные субизображения в различных уровнях могут иметь различное пространственное разрешение. Может выполняться пространственная передискретизация исходного субизображения (например, повышающая или понижающая), оно может быть кодировано с использованием отличающихся параметров пространственного разрешения и включено в битовый поток, соответствующий одному из уровней.
w
k,
h,k
w
k,
h,k
w,k
h,k
w,k
h,k
[131] В вариантах осуществления настоящего изобретения субизображение с параметрами (W, Н), где W ширина изображения, а Н высота субизображения, соответственно, может быть кодировано и включено в кодированный битовый поток, соответствующий уровню 0, тогда как субизображение с повышенным (или пониженным) разрешением, полученное на основе субизображения с исходным пространственным разрешением, с параметрами (W*S, Н* S), может быть кодировано и включено в кодированный битовый поток, соответствующий уровню к, где S, S - коэффициенты передискретизации по горизонтали и вертикали. Если значение S, S больше 1, передискретизация будет повышающей. Тогда как если значения S, S меньше 1, передискретизация будет понижающей.
i,n
j m
[132] В вариантах осуществления настоящего изобретения, кодированное изображение в одном из уровней может иметь отличающееся визуальное качество от кодированного субизображения в другом уровне для того же субизображения или отличающегося субизображения. Например, субизображение i в уровне n может быть кодировано с параметром Q квантования, тогда как субизображение] в уровне m может быть кодировано с параметром Q квантования.
[133] В вариантах осуществления настоящего изобретения кодированное субизображение в одном из уровней может быть декодировано независимо, без какой-либо зависимости анализа или декодирования от кодированных субизображений в других уровнях для той же локальной области. Уровень субизображения, который может быть независимо декодирован без ссылок на другие уровни субизображения той же локальной области, может называться независимым уровнем субизображения. Кодированное субизображение в независимом уровне субизображения может как иметь, так и не иметь зависимости декодирования или анализа от ранее кодированных субизображений в том же уровне субизображения, однако кодированное субизображение не может иметь каких-либо зависимостей от кодированных изображений в другом уровне субизображения.
[134] В вариантах осуществления настоящего изобретения, кодированное субизображение в одном из уровней может декодироваться зависимо, с любыми зависимостями, анализа или декодирования, от кодированных субизображений в других уровнях для той же локальной области. Уровень субизображения, который может быть декодирован зависимо, со ссылками на другие уровни субизображения той же локальной области, может называться зависимым уровнем субизображения. Кодированное субизображение в зависимом субизображении может ссылаться на кодированное субизображение, принадлежащее тому же субизображению, ранее кодированному субизображению в том же уровне субизображения, или на оба этих опорных субизображения.
[135] В вариантах осуществления настоящего изобретения кодированное субизображение может включать один или более независимых уровней субизображения и один или более зависимых уровней субизображения. Однако по меньшей мере один независимый уровень субизображения должен присутствовать в каждом кодированном субизображении. Значение идентификатора уровня (layer_id), которое может находиться в заголовке блока NAL или иной высокоуровневой синтаксической структуре, для независимого уровня субизображения может быть равно 0. Уровень субизображения с layer_id равным 0 может быть базовым уровнем субизображения.
[136] В вариантах осуществления настоящего изобретения, изображение может включать одно или более субизображений заднего плана и одно субизображение переднего плана. Область, охватываемая субизображением заднего плана может быть равна области изображения. Область, занимаемая субизображением переднего плана может перекрываться с областью, охватываемой субизображением заднего плана. Субизображение заднего плана может быть базовым уровнем субизображения, тогда как субизображение переднего плана может быть небазовым (улучшающим) уровнем субизображения. Один или более небазовых уровней субизображения могут ссылаться на один и тот же базовый уровень для декодирования. Каждый небазовый уровень субизображения с layer_id, равным а, может ссылаться на небазовый уровень субизображения, с layer_id, равным b, где а больше Ь.
[137] В вариантах осуществления настоящего изобретения изображение может включать одно или более субизображений переднего плана, с субизображениями заднего плана или без них. Каждое субизображение может иметь собственный базовый уровень субизображения и один или более небазовых (улучшающих) уровней. На каждый базовый уровень субизображения могут ссылаться один или более небазовых уровней субизображения. Каждый небазовый уровень субизображения с layer_id, равным а, может ссылаться на небазовый уровень субизображения, с layer_id, равным b, где а больше Ь.
[138] В вариантах осуществления настоящего изобретения изображение может включать одно или более субизображений переднего плана, с субизображениями заднего плана или без них. На каждое кодированное субизображение в (базовом или небазовом) уровне субизображения могут ссылаться один или более небазовых уровней субизображения, принадлежащих тому же субизображению, и один или более небазовых уровней субизображения, не принадлежащих тому же субизображению.
[139] В вариантах осуществления настоящего изобретения, изображение может включать одно или более субизображений переднего плана, с субизображениями заднего плана или без них. Субизображение в одном из уровней может быть дополнительно разбито на множество субизображений в том же уровне. Одно или более кодированных субизображений в уровне b могут ссылаться на разбитое субизображение в уровне а.
[140] В вариантах осуществления настоящего изобретения кодированная видеопоследовательность (CVS) может представлять собой группу кодированных изображений. CVS может включать одну или более последовательностей кодированных субизображений (coded sub-picture sequence, CSPS), при этом CSPS может быть группой кодированных субизображений, охватывающих одну и ту же локальную область изображения. CSPS может иметь такое же временное разрешение, что и кодированная видеопоследовательность, или отличающееся от нее.
[141] В вариантах осуществления настоящего изобретения CSPS может быть кодирована и включена в один или более уровней. CSPS может включать один или более уровней CSPS. Декодирование одного или более уровней CSPS, соответствующих CSPS, позволяет восстановить последовательность субизображений, соответствующих одной и той же локальной области.
[142] В вариантах осуществления настоящего изобретения количество уровней CSPS, соответствующих CSPS, может быть как равно количеству уровней CSPS, соответствующих другой CSPS, так и отличаться.
[143] В вариантах осуществления настоящего изобретения уровень CSPS может иметь временное разрешение (например, частоту кадров), отличающееся от другого уровня CSPS. Может выполняться временная пере дискретизация исходной (несжатой) последовательности субизображений (например, повышающая или понижающая), она может быть кодирована с использованием отличающихся параметров временного разрешения и включена в битовый поток, соответствующий одному из уровней.
t,k
t,k
t,k
t,k
[144] В вариантах осуществления настоящего изобретения, последовательность субизображений с частотой F кадров может быть кодирована и включена в кодированный битовый поток, соответствующий уровню 0, тогда как последовательность субизображений с повышенным (или пониженным) временным разрешением, по сравнению с исходной последовательностью субизображений, с F*S, может быть кодирована и включена в кодированный битовый поток, соответствующий уровню k, где S - коэффициент временной передискретизации для уровня k. Если значение S больше 1, процедура временной передискретизации может быть преобразованием с повышением частоты кадров. Тогда как если значение S меньше 1, процедура временной пере дискретизации может быть преобразованием с понижением частоты смены кадров.
[145] В вариантах осуществления настоящего изобретения, когда на субизображение в уровне CSPS ссылается субизображение из уровня b, для компенсации движения или любого межуровневого предсказания, если пространственное разрешение этого уровня CSPS отличается от пространственного разрешения уровня b CSPS, то выполняют передискретизацию декодированных пикселей в уровне CSPS и используют их в качестве опорных. В процедуре передискретизации может использоваться фильтрация с повышающей или понижающей передискретизацией.
[146] На фиг. 10 показан пример видеопотока, включающего CSPS видео заднего плана с layer_id, равным 0, и множеством уровней CSPS переднего плана. Тогда как кодированное субизображение может включать один или более уровней CSPS, область заднего плана, которая не принадлежит ни одному из уровней CSPS переднего плана, может включать базовый уровень. Базовый уровень может включать область заднего плана и области переднего плана, тогда как улучшающий уровень CSPS может включать область переднего плана. Улучшающий уровень CSPS может иметь более высокое визуальное качество, по сравнению с базовым уровнем, в той же области. Улучшающий уровень CSPS может ссылаться на восстановленные пиксели и на векторы движения базового уровня, соответствующего той же области.
[147] В вариантах осуществления настоящего изобретения битовый поток видео, соответствующий базовому уровню, содержится в одном треке в видеофайле, тогда как уровни CSPS, соответствующие каждому субизображению, содержатся в отдельном треке.
[148] В вариантах осуществления настоящего изобретения битовый поток видео, соответствующий уровню, содержится в одном треке, тогда как уровни CSPS с тем же layer_id содержатся в отдельном треке. В данном примере трек, соответствующий уровню к, включает только уровни CSPS, соответствующие уровню k.
[149] В вариантах осуществления настоящего изобретения каждый уровень CSPS каждого субизображения хранят в отдельном треке. Каждый трек может как иметь, так и не иметь зависимость анализа или декодирования от одного или более других треков.
[150] В вариантах осуществления настоящего изобретения каждый трек может содержать битовые потоки, соответствующие уровням от i до j уровней CSPS всех субизображений, или их подмножества, где 0<i=<j=<k, a k - верхний уровень CSPS.
[151] В вариантах осуществления настоящего изобретения изображение содержит соответствующие медиаданные, включая одно или более из следующего: карту глубины, карту значений альфа-канала, данные 3D-геометрии, карту занятости и т.п. Эти снабженные временными метками медиаданные могут быть разделены на один или более подпотоков данных, каждый из которых соответствует одному субизображению.
[152] На фиг. 11 показан пример видеоконференцсвязи на основе метода многоуровневых субизображений. В видеопотоке содержатся один битовый поток видео базового уровня, соответствующий изображению заднего плана, и один или более битовых потоков видео улучшающих уровней, соответствующих субизображениям переднего плана. Каждый битовый поток видео улучшающего уровня может соответствовать уровню CSPS. На дисплее по умолчанию отображается изображение, соответствующее базовому уровню. Оно содержит изображения одного или более пользователей, помещенных внутри изображения, методом «картинка в картинке» (picture in a picture, PIP). Когда клиент осуществляет выбор конкретного пользователя, может быть декодирован и отображен улучшающий уровень CSPS, соответствующий выбранному пользователю и имеющий повышенное качество или пространственное разрешение.
[153] На фиг. 12 показана блок-схема, иллюстрирующая пример рассмотренной выше процедуры. Например, в операции S1210 может быть декодирован битовый поток видео с множеством уровней. В операции S1220 могут быть определены область заднего плана и одно или более субизображений заднего плана. В операции S1230 может быть определено, выбрана ли конкретная область субизображения, например, одно из субизображений переднего плана. Если конкретная область субизображения выбрана (Да, в операции S1240), может быть декодировано и отображено улучшенное субизображение. Если конкретная область субизображения не выбрана (Нет, в операции S1240), может быть декодирована и отображена область заднего плана.
[154] В одном из примеров осуществления настоящего изобретения сетевое промежуточное оборудование (например, маршрутизатор) может выбирать подмножество уровней для передачи пользователю в зависимости от его полосы пропускания. Для адаптации к полосе пропускания может применяться разбиение изображений на субизображения. К примеру, если пользователю не хватает полосы пропускания, маршрутизатор может отбрасывать уровни или выбирать субизображения по их важности, или на основе применяемой конфигурации, причем это может выполняться динамически для адаптации к полосе пропускания.
[155] На фиг. 13 показан вариант осуществления настоящего изобретения, относящийся к сценарию применения в случае 360-градусного видео. Когда сферическое 360-градусное изображение, например, изображение 1310 проецируют на плоское изображение, проекционное 360-градусное изображение может быть разбито на множество субизображений, в качестве базового уровня. К примеру, это множество субизображений могут включать заднее субизображение, верхнее субизображение, правое субизображение, левое субизображение, переднее субизображение и нижнее субизображение. Улучшающий уровень для конкретного субизображения, например, переднего субизображения, может быть кодирован и передан клиенту. Декодер может быть способен декодировать как базовый уровень, включающий все субизображения, так и улучшающий уровень выбранного субизображения. Когда текущее окно просмотра идентично выбранному субизображению, отображаемое изображение может иметь более высокое качество за счет декодированного субизображения в улучшающем уровне. В противном случае может быть отображено декодированное изображение базового уровня с худшим качеством.
[156] В вариантах осуществления настоящего изобретения информация о компоновке для отображения может присутствовать в файле в виде вспомогательной информации (например, сообщения SEI или метаданных). Одно или более декодированных субизображений могут быть перемещены и отображаться в зависимости от сигнализируемой информации о компоновке. Информация о компоновке может сигнализироваться сервером потоковой передачи, или вещательной станцией, или может формироваться повторно сетевым объектом или облачными сервером, или может определяться с использованием выбираемых пользователем настроек.
[157] В вариантах осуществления настоящего изобретения, когда входное изображение разбито на одну или более (прямоугольных) подобластей, каждая такая подобласть может быть кодирована в виде независимого уровня. Каждый независимый уровень, соответствующий локальной области, может иметь уникальное значение layer_id. Для каждого независимого уровня могут сигнализироваться размер субизображения и информация о местоположении субизображения. К примеру, размер изображения (ширина, высота), информация о смещении относительно верхнего левого угла (x_offset, y_offset). На фиг. 14 показан пример компоновки субизображений, соответствующей информации о размере и позиции субизображений, а также соответствующая структура предсказания изображений. Информация о компоновке, включающая размеры и позиции субизображений, может сигнализироваться в высокоуровневой синтаксической структуре, например, наборах параметров, заголовке слайса или группы тайлов, или в сообщении SEI.
[158] В вариантах осуществления настоящего изобретения каждое субизображение, соответствующее независимому уровню, может иметь уникальное значение РОС внутри блока доступа. Когда на опорное изображение среди изображений, хранимых в буфере DPB, указывают с помощью синтаксического элемента (или элементов) в структуре RPS или RPL, может использоваться значение (или значения) РОС каждого субизображения, соответствующего одному из уровней.
[159] В вариантах осуществления настоящего изобретения для указания на структуру (межуровневого) предсказания, layer_id использоваться не может, а может использоваться значение (разности) РОС.
[160] В вариантах осуществления настоящего изобретения субизображение со значением РОС, равным N, соответствующе уровню (или локальной области), может (но не обязательно) использоваться в качестве опорного изображения для субизображения с РОС, равным N+K, соответствующим тому же уровню (или той же локальной области), для предсказания с компенсацией движения. В большинстве случаев значение числа К может быть равно максимальному количеству (независимых) уровней, которое может совпадать с количеством подобластей.
[161] На фиг. 15 более подробно рассмотрен случай фиг. 14, в соответствии с вариантами осуществления настоящего изобретения. Когда входное изображение разделено на множество подобластей (например, четыре), каждая локальная область может кодироваться с использованием одного или более уровней. В таком случае количество независимых уровней может быть равно количеству подобластей, и каждой подобласти будет соответствовать один или более уровней. Таким образом, каждая подобласть может быть кодирована с использованием одного или более независимых уровней и нуля или более зависимых уровней.
[162] В вариантах осуществления настоящего изобретения, в соответствии с фиг. 15, входное изображение может быть разделено на четыре подобласти. В качестве примера, правая верхняя подобласть может быть кодирована в виде двух уровней, уровня 1 и уровня 4, тогда как правая нижняя подобласть может быть кодирована в виде двух уровней, уровня 3 и уровня 5. В таком случае уровень 4 может ссылаться на уровень 1 для предсказания с компенсацией движения, тогда как уровень 5 может ссылаться на уровень 3 для предсказания с компенсацией движения.
[163] В вариантах осуществления настоящего изобретения внутриконтурная фильтрация (например, деблокирующая фильтрация, адаптивная внутриконтурная фильтрация, восстановление формы, двусторонняя фильтрация или любая фильтрация на основе глубокого обучения) с пересечением границ уровней может быть (опционально) запрещена.
[164] В вариантах осуществления настоящего изобретения предсказание с компенсацией движения или внутреннее копирование блоков с пересечением границ блоков может быть (опционально) запрещено.
[165] В вариантах осуществления настоящего изобретения заполнение границы незначащей информацией (boundary padding) или внутриконтурная фильтрация на границах субизображений могут выполняться опционально. Флаг, указывающий, следует ли выполнять граничное заполнение или нет, может сигнализироваться в высокоуровневой синтаксической структуре, например, наборе (или наборах) параметров (VPS, SPS, PPS или APS), заголовке слайса или группы тайлов или в сообщении SEI.
[166] В вариантах осуществления настоящего изобретения информация о компоновке подобластей (или субизображений) может сигнализироваться в наборе VPS или SPS. На фиг. 16А показан пример синтаксических элементов в VPS, а на фиг. 16В показан пример синтаксических элементов в SPS. В данном примере в VPS сигнализируют флаг vps_sub_picture_dividing_flag. Этот флаг может указывать, разделено ли входное изображение (или изображения) на множество подобластей или нет.Когда значение флага vps_sub_picture_dividing_flag равно 0, входное изображение (или изображения) в кодированной видеопоследовательности (или последовательностях), соответствующей текущему набору VPS, не может быть разделено на множество подобластей. В этом случае размер входного изображения может быть равен размеру кодированного изображения, (picwidthinlumasamples, picheightinlumasamples), которое сигнализируют в наборе SPS. Когда значение флага vps_sub_picture_dividing_flag равно 1, входное изображение (или изображения может быть разделено на множество подобластей. В этом случае синтаксические элементы vps_full_pic_width_in_luma_samples и vps_full_pic_height_in_luma_samples сигнализируют в наборе VPS. Значения vps_full_pic_width_in_luma_samples и vps_full_pic_height_in_luma_samples могут быть равны ширине и высоте входного изображения (или изображений) соответственно.
[167] В вариантах осуществления настоящего изобретения значения vps_full_pic_width_in_luma_samples и vps_full_pic_height_in_luma_samples не могут использоваться для декодирования, однако могут использоваться для компоновки и отображения.
[168] В вариантах осуществления настоящего изобретения, когда значение флага vps_sub_pic_ture_dividing_flag равно 1, синтаксические элементы pic_offset_x и pic_offset_y могут сигнализироваться в наборе SPS, соответствующем конкретному уровню (или уровням). В этом случае размер кодированного изображения (pic_width_in_luma_samples, pic_height_in_luma_samples), сигнализируемый в SPS, может быть равен ширине и высоте подобласти, соответствующей заданному уровню. Также в SPS может сигнализироваться позиция (pic_offset_x, pic_offset_y) левого верхнего угла подобласти.
[169] В вариантах осуществления настоящего изобретения, информация (pic_offset_x, pic_offset_y) о позиции левого верхнего угла подобласти не может использоваться для декодирования, однако может использоваться для компоновки и отображения.
[170] В вариантах осуществления настоящего изобретения информация о компоновке (размере и позиции) всех подобластей или подмножества подобластей входного изображения (или изображений) и информация о зависимостях между уровнями может сигнализироваться в наборе параметров или в сообщении SEI. На фиг. 17 показаны примеры синтаксических элементов для указания информации о компоновке подобластей, о зависимостях между уровнями и о соотношении между подобластями и одним или более уровнями. В данном примере синтаксический элемент num sub_region_указывает на количество (прямоугольных) подобластей в текущей кодированной видеопоследовательности. Синтаксический элемент num layers указывает на количество уровней в текущей кодированной видеопоследовательности. Значение num layers моет быть больше или равно значению numsubregion. Когда все подобласти кодируют в качестве одиночных уровней, значение num layers может быть равно значению num sub region. Когда одну или более подобластей кодируют в виде множества уровней, значение num layers должно быть больше значения num sub region. Синтаксический элемент direct_dependency_flag[i][j] указывает на зависимость i-го уровня от j-го уровня. Значение num_layers_for_region[i] указывает на количество уровней, относящихся к i-ой подобласти. Значение sub_region_layer_id[i][j] указывает layer_id j-го уровня, относящегося к i-ой подобласти. Значения sub_region_offset_x[i] и sub_region_offset yf i] указывают на горизонтальное и вертикальное расположение левого верхнего угла i-ой подобласти соответственно. Значения sub_region_width [i] и sub_region_height[i] указывают на ширину и высоту i-ой подобласти соответственно.
[171] В вариантах осуществления настоящего изобретения один или более синтаксических элементов, которые определяют набор выводимых уровней для указания одного или более уровней для вывода, с информацией об уровне, ярусе и профиле стандарта, или без такой информации, могут сигнализироваться в высокоуровневой синтаксической структуре, например, наборе VPS, DPS, SPS, PPS, APS или в сообщении SEI. В соответствии с иллюстрацией фиг. 18, синтаксический элемент num output_layer_sets, указывающий на номер набора выводимых уровней (output_layer_set, OLS) в кодированной видеопоследовательности, ссылающейся на набор VPS, может сигнализироваться в VPS. Для каждого набора выводимых уровней может сигнализироваться флаг output_layer_flag, столько раз, сколько имеется выводимых уровней.
[172] В вариантах осуществления настоящего изобретения флаг output_layer_flag[i], равный 1, определяет что i-ый уровень должен быть выведен. Флаг vps output_layer_flag[i], равный 0, определяет что i-ый уровень не должен быть выведен.
[173] В вариантах осуществления настоящего изобретения, один или более синтаксических элементов, которые определяют информацию об уровне, ярусе и профиле стандарта для каждого набора выводимых уровней, могут сигнализироваться в высокоуровневой синтаксической структуре, например, наборе VPS, DPS, SPS, PPS, APS или в сообщении SEI. Также, в соответствии с иллюстрацией фиг. 18, синтаксический элемент num_profile_tile_level, указывающий на номер информации об уровне, ярусе и профиле стандарта для каждого OLS в кодированной видеопоследовательности, ссылающейся на набор VPS, может сигнализироваться в VPS. Для каждого набора выводимых уровней, может сигнализироваться (столько раз, сколько имеется выводимых уровней) набор синтаксических элементов для информации об уровне, ярусе и профиле стандарта или указатель, указывающий на информацию об уровне, ярусе и профиле стандарта среди записей в информации об уровне, ярусе и профиле стандарта.
[174] В вариантах осуществления настоящего изобретения значение profile_tier_level_id_x[i][j] определяет указатель, в списке синтаксических структур profile_tier_level() в наборе VPS, на синтаксическую структуру profile_tier_level(), применимую для j-го уровня i-го набора OLS.
[175] В вариантах осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 19, синтаксический элемент num_profile_tile_level и/или num_out_put_layer_sets могут сигнализироваться, когда максимальное количество уровней больше 1 (vps_max_layers_minus 1>0).
[176] В вариантах осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 19, синтаксический элемент vps_output_layers_mode[i], указывающий на режим сигнализации выводимого уровня для i-го выводимого уровня, может присутствовать в наборе VPS.
[177] В одном из примеров осуществления настоящего изобретения значение vpsoutputlayersmode [i], равное 0, определяет, что выводят только верхний уровень с использованием i-го набора выводимых уровней. Значение vps_output_layer_mode[i], равное 1, определяет, что выводят все уровни с использованием i-го набора выводимых уровней. Значение vps_output_layer_mode[i], равное 2, определяет, что выводимыми уровнями являются уровни с флагом vps_output_layer_flag[i] [j], равным 1, с использованием i-го набора выводимых уровней. Может быть зарезервировано большее количество значений.
[178] В вариантах осуществления настоящего изобретения output_layer_flag[i][j] может сигнализироваться или не сигнализироваться в зависимости от значения vps_output_layers_mode [i] для i-го набора выводимых уровней.
[179] В вариантах осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 19, флаг vps_ptl_signal_flag [i] может присутствовать для i-го набора выводимых уровней. В зависимости от значения vps_ptl_signal_flag[i] может сигнализироваться или не сигнализироваться информация об уровне, ярусе и профиле стандарта для i-го набора выводимых уровней.
[180] В вариантах осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 20, количество субизображений, max_sub_pics_minusl, в текущей CVS может сигнализироваться в высокоуровневой синтаксической структуре, например, наборе VPS, DPS, SPS, PPS, APS или в сообщении SEI.
[181] В вариантах осуществления настоящего изобретения, в соответствии с иллюстрацией фиг. 20, идентификатор субизображения, sub_pic_id[i], для i-го субизображения может сигнализироваться, когда количество субизображений больше 1 (max_subpics_minus 1>0).
[182] В вариантах осуществления настоящего изобретения один или более синтаксических элементов, указывающих на идентификатор субизображения, принадлежащего каждому уровню каждого набора выводимых уровней, может сигнализироваться в наборе VPS. В соответствии с иллюстрацией фиг. 20, значение sub_pic_id_layer[i][j][k] указывает на то, что k-ое субизображение присутствует в j-ом уровне i-го набора выводимых уровней. С помощью этой информации декодер может распознавать, какое из субизображений может быть декодировано и выведено для каждого уровня заданного набора выводимых уровней.
[183] В вариантах осуществления настоящего изобретения заголовок изображения (РН) является синтаксической структурой, которая содержит синтаксические элементы, применимые ко всем слайсам кодированного изображения. Блок изображения (picture unit, PU) представляет собой набор блоков NAL, которые связаны друг с другом согласно определенному правилу классификации, следуют друг за другом в порядке декодирования и содержат в точности одно кодированное изображение. Блок изображения может содержать заголовок изображения и один или более блоков NAL кодированных слайсов или блоков NAL VCL, составляющих кодированное изображение.
[184] В вариантах осуществления настоящего изобретения набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным 0, или предоставлен с помощью внешних средств.
[185] В вариантах осуществления настоящего изобретения набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным 0, в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[186] В вариантах осуществления настоящего изобретения набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с nuhlayerid, равным наименьшему значению nuhlayerid среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[187] В вариантах осуществления настоящего изобретения набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с TemporalId, равным 0, и nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[188] В вариантах осуществления настоящего изобретения набор SPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более наборов PPS, он может быть включен по меньшей мере в один блок изображения с TemporalId, равным 0, и с nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL PPS, ссылающихся на блок NAL SPS в CVS, которая содержит один или более наборов PPS, ссылающихся на этот SPS, или предоставлен с помощью внешних средств.
[189] В вариантах осуществления настоящего изобретения значение pps seq_parameter set id определяет значение sps_seqparameter set id для набора SPS, на который ссылаются. Значение pps_seq_parameter_set_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
q p
[190] В вариантах осуществления настоящего изобретения все блоки NAL SPS, имеющие одинаковое значение sps_searameter_set_id в CVS, могут иметь одинаковый контент.
[191] В вариантах осуществления настоящего изобретения, независимо от значений nuh_layer_id, блоки NALSPS могут иметь общее пространство значений sps_seq_parameters_et_id.
[192] В вариантах осуществления настоящего изобретения значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL PPS, который ссылается на данный блок NAL SPS.
[193] В вариантах осуществления настоящего изобретения, когда на набор SPS с nuh_layer_id, равным m, ссылаются в одном или более наборов PPS с nuh_layer_id, равным n, уровень со значением nuh_layer_id, равным m, может быть тем же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[194] В вариантах осуществления настоящего изобретения набор PPS (RBSP) доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS, или предоставлен с помощью внешних средств.
[195] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[196] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированного слайса), он может быть включен по меньшей мере в один блок изображения с nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[197] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированного слайса), он может быть включен по меньшей мере в один блок изображения с TemporalId, равным TemporalId блока NAL PPS, и nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[198] В вариантах осуществления настоящего изобретения значение ph_pic_parameter_set_id в заголовке изображения, РН, определяет значение pps_pic_parameter_set_id для используемого PPS, на который ссылаются. Значение pps_seq_parameter_set_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
[199] В вариантах осуществления настоящего изобретения все блоки NAL PPS с одним значением pps_pic_parameter_set_id внутри блока изображения должны иметь одинаковый контент.
[200] В вариантах осуществления настоящего изобретения, независимо от значений nuh_layer_id, блоки NAL PPS могут иметь общее пространство значений pps_seq_parameterset_id.
[201] В вариантах осуществления настоящего изобретения значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на данный блок NAL PPS.
[202] В вариантах осуществления настоящего изобретения, когда на набор PPS с nuh_layer_id, равным m, ссылаются в одном или более блоков NAL кодированного слайса с nuh_layer_id, равным n, уровень со значением nuh_layer_id, равным т, может те же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[203] В вариантах осуществления настоящего изобретения набор PPS (RBSP) доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS, или предоставлен с помощью внешних средств.
[204] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, равным TemporalId блока NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[205] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированного слайса), он может быть включен по меньшей мере в один блок изображения с nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[206] В вариантах осуществления настоящего изобретения набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него в одном или более заголовков изображения, РН (или блоков NAL кодированного слайса), он может быть включен по меньшей мере в один блок изображения с TemporalId, равным TemporalId блока NAL PPS, и nuh_layer_id, равным наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на блок NAL PPS в CVS, которая содержит один или более наборов заголовков изображения, РН (или блоков NAL кодированного слайса), ссылающихся на этот PPS, или предоставлен с помощью внешних средств.
[207] В вариантах осуществления настоящего изобретения значение ph_pic_parameter_set_id в заголовке изображения, РН, определяет значение pps_pic_parameter_set_id для используемого PPS, на который ссылаются. Значение pps_seq_parameter_set_id может быть одинаковым во всех наборах PPS, на которые ссылаются кодированные изображения в CLVS.
[208] В вариантах осуществления настоящего изобретения все блоки NAL PPS с одним значением pps_pic_parameter_set_id внутри блока изображения должны иметь одинаковый контент.
[209] В вариантах осуществления настоящего изобретения, независимо от значений nuh_layer_id, блоки NAL PPS могут иметь общее пространство значений pps_seq_parameter_set_id.
[210] В вариантах осуществления настоящего изобретения значение nuh_layer_id в блоке NAL SPS может быть равно наименьшему значению nuh_layer_id среди блоков NAL кодированного слайса, ссылающихся на данный блок NAL PPS.
[211] В вариантах осуществления настоящего изобретения, когда на набор PPS с nuh_layer_id, равным m, ссылаются в одном или более блоков NAL кодированного слайса с nuh_layer_id, равным п, уровень со значением nuh_layer_id, равным m, может быть тем же, что и уровень с nuh_layer_id, равным n, или (прямым или косвенным) опорным уровнем для уровня с nuh_layer_id, равным m.
[212] В вариантах осуществления настоящего изобретения, когда флаг no temporal_sublayer_switching_flag сигнализируют в наборе DPS, VPS или SPS, значение TemporalId набора PPS, ссылающегося на набор параметров, содержащий этот флаг, равный 1, может быть равно 0, тогда как значение TemporalId набора PPS, ссылающегося на набор параметров, содержащий этот флаг, равный 1, может быть равно больше или равно значению TemporalId набора параметров.
[213] В вариантах осуществления настоящего изобретения каждый набор PPS (RBSP) может быть доступен в процедуре декодирования до ссылки на него, он может быть включен по меньшей мере в один блок доступа с TemporalId, меньшим или равным TemporalId блока NAL кодированного слайса (или блока NAL РН), который ссылается на него, или предоставлен с помощью внешних средств. Когда блок NAL PPS включен в блок доступа перед блоком доступа, содержащим блок NAL кодированного слайса, ссылающийся на упомянутый набор NAL PPS, блок NAL VCL, обеспечивающий повышающее переключение временных уровней, или блок NAL VCL с nal unit type, равным STSA NUT, означающим, что изображение в этом блоке NAL VCL может быть изображением пошагового доступа к временным подуровням (STSA), не может присутствовать после упомянутого блока NAL PPS и до блока NAL кодированного слайса, ссылающегося на этот набор PPS.
[214] В вариантах осуществления настоящего изобретения блок NAL PPS и блок NAL кодированного слайса (а также его блок NAL РН), ссылающиеся на один набор PPS, могут содержаться в одном блоке доступа, AU.
[215] В вариантах осуществления настоящего изобретения блок NAL PPS и блок NAL STSA, ссылающиеся на один набор PPS, могут содержаться в одном блоке доступа, AU, который предшествует блоку NAL кодированного слайса (и его блоку NAL РН), ссылающемуся на упомянутый набор PPS.
[216] В вариантах осуществления настоящего изобретения блок NAL STSA, блок NAL PPS и блок NAL кодированного слайса (а также его блок NAL РН) могут присутствовать в одном блоке доступа, AU.
[217] В том же варианте осуществления настоящего изобретения значение TemporalId блока NAL VCL, содержащегося в PPS, может быть равно значению TemporalId предшествующего блока NAL STSA.
[218] В том же варианте осуществления настоящего изобретения значение порядкового номера изображения (РОС) в блоке NAL PPS может быть больше или равно значению РОС в блоке NAL STSA.
[219] В том же варианте осуществления настоящего изобретения значение порядкового номера изображения (РОС) в блоке NAL кодированного слайса или в блоке NAL РН, который ссылается на блок NAL PPS, может быть больше или равно значению РОС в блоке NAL PPS, на который ссылаются.
[220] На фиг. 21 показана блок-схема примера процедуры 2100 декодирования битового потока кодированного видео. В некоторых реализациях один или более блоков процедуры, показанной на фиг. 21, могут выполняться декодером 210. В некоторых реализациях один или более блоков процедуры, показанной на фиг. 21, могут выполняться другим устройством или группой устройств, отдельных от декодера 210 или включающих декодер 210, например, кодером 203.
[221] В соответствии с иллюстрацией фиг. 21, процедура 2100 может включать получение кодированной видеопоследовательности из битового потока кодированного видео (блок 2110).
[222] Также, в соответствии с иллюстрацией фиг. 21, процедура 2100 может включать получение блока изображения из кодированной видеопоследовательности (блок 2120).
[223] Также, в соответствии с иллюстрацией фиг. 21, процедура 2100 может включать получение блока NAL РН, содержащегося в упомянутом блоке изображения (блок 2130).
[224] Также, в соответствии с иллюстрацией фиг. 21, процедура 2100 может включать получение по меньшей мере одного блока NAL кодированного слайса, содержащегося в упомянутом блоке изображения (блок 2140).
[225] Также, в соответствии с иллюстрацией фиг. 21, процедура 2100 может включать декодирование кодированного изображения на основе упомянутых блока NAL РН, по меньшей мере одного блока NAL кодированного слайса, набора PPS, содержащегося в блоке NAL PPS, полученном из кодированной видеопоследовательности, и набора SPS, содержащегося в блоке NAL SPS, полученном из кодированной видеопоследовательности, при этом упомянутый блок NAL SPS доступен по меньшей мере для одного процессора, исполняющего процедуру 2100, до упомянутого блока NAL PPS, и блок NAL PPS доступен для упомянутого по меньшей мере одного процессора до упомянутого блока NAL ЗР и упомянутого по меньшей мере одного блока NAL кодированного слайса (блок 2150).
[226] Также, в соответствии с иллюстрацией фиг. 21, процедура 2100 может включать вывод декодированного изображения (блок 2160).
[227] В вариантах осуществления настоящего изобретения временной идентификатор упомянутого блока NAL SPS может быть равен нулю.
[228] В вариантах осуществления настоящего изобретения идентификатор уровня в блоке NAL PPS больше или равен идентификатору уровня в блоке NAL SPS.
[229] В вариантах осуществления настоящего изобретения идентификатор упомянутого по меньшей мере одного блока NAL кодированного слайса может быть больше или равен идентификатору уровня в блоке NAL PPS.
[230] В вариантах осуществления настоящего изобретения упомянутые блок NAL РН, по меньшей мере один блок NAL кодированного слайса и блок NAL PPS могут содержаться в одном блоке доступа.
[231] В вариантах осуществления настоящего изобретения кодированная видеопоследовательность может также включать блок NAL пошагового доступа к временным подуровням (STSA), соответствующий изображению STSA, при этом блок NAL STSA не находится между упомянутыми блоком NAL PPS и по меньшей мере одним блоком NAL кодированного слайса.
[232] В вариантах осуществления настоящего изобретения упомянутые по меньшей мере один блок NAL кодированного слайса, блок NAL PPS и блок NAL STSA могут содержаться в одном блоке доступа.
[233] В вариантах осуществления настоящего изобретения временной идентификатор упомянутого блока NAL PPS может быть равен временному идентификатору упомянутого блока NAL STSA.
[234] В вариантах осуществления настоящего изобретения значение порядкового номера изображения (РОС) упомянутого блока NAL PPS больше или равно значению РОС упомянутого блока NAL STSA.
[235] На фиг. 21 показаны примеры блоков процедуры (2100), однако в некоторых реализациях процедура 2100 может включать большее количество блоков, меньшее количество блоков, отличающиеся блоки или блоки в отличающемся порядке, по сравнению с иллюстрацией фиг. 21. При этом, в дополнение или альтернативно, два или более блоков процедуры (2100) могут выполняться параллельно.
[236] При этом предложенные способы могут быть реализованы при помощи схем обработки данных (например, одного или более процессоров или одной или более интегральных схем). В одном из примеров один или более процессоров для выполнения одного или более из предложенных способов могут исполнять программу, хранящуюся на машиночитаемом носителе.
[237] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения, где используются машиночитаемые инструкции, и которое физически хранят на одном или более машиночитаемых носителей. К примеру, на фиг. 22 показана компьютерная система 2200 подходящая для реализации некоторых из вариантов осуществления настоящего изобретения.
[238] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации, исполнения микрокода и т.п., центральными процессорами компьютера (computer central processing units, CPUs), графическими процессорами (Graphics Processing Units, GPU) и т.п.
[239] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[240] Компоненты компьютерной системы 2200, показанные на фиг. 22, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в примере осуществления компьютерной системы 2300, или комбинацией таких компонентов.
[241] Компьютерная система 2200 может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[242] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура 2201, мышь 2202, трекпад 2203, сенсорный экран 2210 и связанный с ним графический адаптер 2250, кибер-перчатка, джойстик 2205, микрофон 2206, сканер 2207, камера 2208.
[243] Компьютерная система 2200 может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана 2210, киберперчатки (не показана на чертеже) или джойстика 2205), однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители 2209, наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны 2210, включая экраны на катодно-лучевых трубках (cathode ray tube, CRT), экраны на жидких кристаллах (liquid-crystal display, LCD), плазменные экраны, экраны на органических светодиодах (organic light-emitting diode, OLED), как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таки средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, дым-машины, а также принтеры (не показаны на чертеже).
[244] Компьютерная система 2200 может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW 2220, с носителями 2221 CD/DVD или аналогичными им, флэш-привод 2222, съемный жесткий диск или твердотельный диск 2223, применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже), и т.п.
[245] Специалисты в данной области техники должны при этом понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие кратковременные сигналы.
[246] Компьютерная система 2200 может также иметь интерфейс (или интерфейсы) с одной или более сетями (955) связи. Сети могут быть, например, беспроводными, проводными или оптическими. Сети также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п.Примеры сетей включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая глобальную систему мобильной связи (global system for mobile communications, GSM), сети третьего поколения (3G), четвертого поколения (4G), пятого поколения (5G), долгосрочной эволюции (Long-Term Evolution, LTE) и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п.Некоторые сети требуют наличия внешних адаптеров (954) сетевых интерфейсов, подключаемых к портам данных или периферийным шинам (949) общего назначения (например, портам универсальной последовательной шины (universal serial bus, USB) компьютерной системы 2200. Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы 2200 путем подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс сети сотовой связи в компьютерной системе на базе смартфона). Например, сеть 2255 может быть подключена к периферийной шине 2249 при помощи сетевого интерфейса 2254. Применение любых из подобных сетей позволяет компьютерной системе 2200 осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. В любой из сетей и сетевых интерфейсов (954), описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[247] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы могут быть подключены к базовой внутренней структуре 2240 компьютерной системы 2200.
[248] Базовая внутренняя структура 2240 может включать один или более центральных процессоров (Central Processing Units, CPU) 2241, графических процессоров (Graphics Processing Units, GPU) 2242, специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) 2243, аппаратных ускорителей 2244 для определенных задач и т.п.Эти устройства, вместе с памятью 2245 «только для чтения» (Read-only memory, ROM) 945, памятью 2246 с произвольным доступом, внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, твердотельными дисками (solid-state drive, SSD) и аналогичной памятью 2247, могут быть объединены системной шиной 2248. В некоторых компьютерных системах к системной шине 2248 может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к базовой системной шине 2248, либо к периферийной шине 2249. Примерами архитектур периферийной шины могут служить шины взаимодействия периферийных компонентов (peripheral component interconnect, PCI), USB и т.п.
[249] CPU 2241, GPU 2242, FPGA 2243 и ускорители 2244 могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM 2245 или RAM 2246. Временные данные при этом могут храниться в RAM 2246, тогда как постоянные данные могут храниться, например, во внутренней памяти 2247 большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться путем применения кэш-памяти, которая может быть тесно связан с одним или более CPU 2241, GPU 2242, памятью 2247 большой емкости, ROM 2245, RAM 2246 и т.п.
[250] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[251] В качестве неограничивающего примера, компьютерная система с архитектурой 2200, и в частности, базовой структурой 2240, может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или энергонезависимыми запоминающими устройствами в базовой структуре 2240, например, встроенным запоминающим устройством 2247 большой емкости или ROM 2245. Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой 2240 компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой 2240, и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM 2246, и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе 2244), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот.Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем настоящего изобретения входят все соответствующие комбинации из аппаратного и программного обеспечения.
[252] В данном документе были описаны несколько примеров осуществления настоящего изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем настоящего изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел настоящего изобретения и соответственно, находятся в пределах его объема и сущности.