РАЗБИЕНИЕ НА ТАЙЛЫ И ПОДИЗОБРАЖЕНИЯ
SPLITTING INTO TILES AND SUBIMAGES

Перекрестные ссылки на связанные заявки
[0001] Настоящая заявка ссылается на приоритет предварительной заявки на патент США №62/816846, которая была зарегистрирована 11 марта 2019 года и полностью включена в данный документ путем ссылки.
Область техники
[0002] Настоящее изобретение относится к набору технологий усовершенствованного видеокодирования, а именно, к структуре разбиения на тайлы и подизображения.
Предпосылки создания изобретения
[0003] В настоящее время ведется разработка нового стандарта видеокодирования, который неформально называют «универсальным видеокодированием» (Versatile Video Coding, VVC).
Сущность изобретения
[0004] В некоторых из вариантов осуществления настоящего изобретения предложены решения проблем, связанных с VVC-кодированием, а также других проблем.
[0005] В некоторых из вариантов осуществления настоящего изобретения предложен способ. Предложенный способ может выполняться по меньшей мере одним процессором для декодирования битового подпотока кодированного видеопотока, при этом кодированный видеопоток включает кодированную версию первого подизображения и второго подизображения одного изображения. Способ включает: прием битового подпотока; и декодирование первого подизображения упомянутого изображения независимо от второго подизображения с использованием разбиения на тайлы и подизображения, при этом (i) первое подизображение включает первую прямоугольную область упомянутого изображения, а второе подизображение включает вторую прямоугольную область упомянутого изображения, и вторая прямоугольная область отличается от первой прямоугольной области, (ii) каждое из первого подизображения и второго подизображения включает по меньшей мере один тайл, и (iii) первое подизображение и второе подизображение не имеют общих тайлов.
[0006] В одном из вариантов осуществления настоящего изобретения способ дополнительно включает декодирование второго подизображения заданного изображения независимо от первого подизображения с использованием разбиения на тайлы и подизображения, при этом упомянутый по меньшей мере один тайл первого подизображения представляет собой первое множество тайлов, а упомянутый по меньшей мере один тайл второго подизображения представляет собой второе множество тайлов. В одном из вариантов осуществления настоящего изобретения декодирование первого подизображения выполняют с отличающимся порядком сканирования тайлов, по сравнению с декодированием второго подизображения. В одном из вариантов осуществления настоящего изобретения декодирование первого подизображения и декодирование второго подизображения выполняют с использованием разбиения на тайлы и подизображения, при этом: первое множество тайлов первого подизображения группируют по меньшей мере в одну первую группу тайлов, второе множество тайлов второго подизображения группируют по меньшей мере в одну вторую группу тайлов, при этом ни один тайл из упомянутой по меньшей мере одной первой группы тайлов не находится в упомянутой по меньшей мере одной второй группе тайлов. В одном из вариантов осуществления настоящего изобретения одна из упомянутых одной или более групп тайлов является непрямоугольной группой тайлов. В одном из вариантов осуществления настоящего изобретения первое подизображение декодируют в соответствии с технологией декодирования, в которой управление контурной фильтрацией на уровне групп тайлов на границе между двумя группами тайлов в упомянутой по меньшей мере одной группе тайлов разрешено только в том случае, когда обе из этих двух групп тайлов являются прямоугольными.
[0007] В одном из вариантов осуществления настоящего изобретения прием битового подпотока включает прием кодированного видеопотока, при этом кодированный видеопоток включает набор параметров последовательности (sequence parameter set, SPS), который содержит информацию о том, как следует разбивать изображение на подизображения, включая первое подизображение и второе подизображение. В одном из вариантов осуществления настоящего изобретения принятый кодированный видеопоток включает набор параметров изображения (picture parameter set, PPS), который содержит информацию о том, как следует разбивать изображение на тайлы, включая по меньшей мере один тайл первого подизображения и по меньшей мере один тайл второго подизображения. В одном из вариантов осуществления настоящего изобретения принятый кодированный видеопоток включает активный набор параметров (active parameter set, APS), который сообщает коэффициенты адаптивного контурного фильтра (adaptive loop filter, ALF) для первого подизображения.
[0008] В некоторых из вариантов осуществления настоящего изобретения предложен декодер. Предложенный декодер может использоваться для декодирования битового подпотока кодированного видеопотока, при этом кодированный видеопоток включает кодированную версию первого подизображения и второго подизображения одного изображения. Декодер может включать: память, сконфигурированную для хранения компьютерного программного кода; и по меньшей мере один процессор, сконфигурированный для приема битового подпотока, для доступа к компьютерному программному коду, и для выполнения операций согласно инструкциям компьютерного программного кода. Компьютерный программный код может включать код декодирования, сконфигурированный для обеспечения декодирования, по меньшей мере одним процессором, первого подизображения упомянутого изображения независимо от второго подизображения с использованием разбиения на тайлы и подизображения, при этом (i) первое подизображение включает первую прямоугольную область упомянутого изображения, а второе подизображение включает вторую прямоугольную область упомянутого изображения, и вторая прямоугольная область отличается от первой прямоугольной области, (ii) каждое из первого подизображения и второго подизображения включает по меньшей мере один тайл, и (iii) первое подизображение и второе подизображение не имеют общих тайлов.
[0009] В одном из вариантов осуществления настоящего изобретения код декодирования дополнительно сконфигурирован для обеспечения декодирования, по меньшей мере одним процессором, второго подизображения заданного изображения независимо от первого подизображения с использованием разбиения на тайлы и подизображения, при этом упомянутый по меньшей мере один тайл первого подизображения представляет собой первое множество тайлов, а упомянутый по меньшей мере один тайл второго подизображения представляет собой второе множество тайлов. В одном из вариантов осуществления настоящего изобретения код декодирования сконфигурирован для обеспечения декодирования, по меньшей мере одним процессором, первого подизображения с отличающимся порядком сканирования тайлов, по сравнению с порядком сканирования тайлов, используемым для декодирования второго подизображения. В одном из вариантов осуществления настоящего изобретения код декодирования дополнительно сконфигурирован для обеспечения декодирования, по меньшей мере одним процессором, первого подизображения и второго подизображения с использованием разбиения на тайлы и подизображения, при этом: первое множество тайлов первого подизображения группируют по меньшей мере в одну первую группу тайлов, второе множество тайлов второго подизображения группируют по меньшей мере в одну вторую группу тайлов. при этом ни один тайл из упомянутой по меньшей мере одной первой группы тайлов не находится в упомянутой по меньшей мере одной второй группе тайлов. В одном из вариантов осуществления настоящего изобретения одна из упомянутых одной или более групп тайлов является непрямоугольной группой тайлов. В одном из вариантов осуществления настоящего изобретения код декодирования дополнительно сконфигурирован для обеспечения декодирования, по меньшей мере одним процессором, первого подизображения в соответствии с технологией декодирования, в которой управление контурной фильтрацией на уровне групп тайлов, на границе между двумя группами тайлов в упомянутой по меньшей мере одной группе тайлов, разрешено только в том случае, когда обе из этих двух групп тайлов являются прямоугольными.
[0010] В одном из вариантов осуществления настоящего изобретения декодер сконфигурирован для приема кодированного видеопотока, который включает битовый подпоток, при этом кодированный видеопоток включает набор параметров последовательности (SPS), который содержит первую информацию о том, как следует разбивать изображение на подизображения, включая первое подизображение и второе подизображение,при этом код декодирования сконфигурирован для обеспечения разбиения, по меньшей мере одним процессором, изображения на подизображения согласно первой информации. В одном из вариантов осуществления настоящего изобретения принятый кодированный видеопоток включает набор параметров изображения (PPS), который содержит вторую информацию о том, как следует разбивать изображение на тайлы, включая по меньшей мере один тайл первого подизображения и по меньшей мере один тайл второго подизображения, при этом код декодирования сконфигурирован для обеспечения разбиения, по меньшей мере одним процессором, изображения на тайлы согласно второй информации. В одном из вариантов осуществления настоящего изобретения кодированный видеопоток включает активный набор параметров (APS), который сообщает коэффициенты адаптивного контурного фильтра (ALF) для первого подизображения, при этом код декодирования сконфигурирован для обеспечения использования, по меньшей мере одним процессором, набора APS при декодировании первого подизображения.
[0011] В некоторых из вариантов осуществления настоящего изобретения предложен машиночитаемый носитель данных, на котором хранят компьютерные инструкции. Компьютерные инструкции, когда их исполняют при помощи по меньшей мере одного процессора, обеспечивают выполнение, по меньшей мере одним процессором, следующего: декодирование первого подизображения изображения из кодированного видеопотока независимо от второго подизображения того же изображения кодированного видеопотока с использованием разбиения на тайлы и подизображения, при этом (i) первое подизображение включает первую прямоугольную область упомянутого изображения, а второе подизображение включает вторую прямоугольную область упомянутого изображения, и вторая прямоугольная область отличается от первой прямоугольной области, (ii) каждое из первого подизображения и второго подизображения включает по меньшей мере один тайл, и (iii) первое подизображение и второе подизображение не имеют общих тайлов.
[0012] В одном из вариантов осуществления настоящего изобретения компьютерные инструкции, когда их исполняют при помощи по меньшей мере одного процессора, дополнительно обеспечивают декодирование, по меньшей мере одним процессором, второго подизображения заданного изображения независимо от первого подизображения с использованием разбиения на тайлы и подизображения, при этом упомянутый по меньшей мере один тайл первого подизображения представляет собой первое множество тайлов, а упомянутый по меньшей мере один тайл второго подизображения представляет собой второе множество тайлов.
Краткое описание чертежей
[0013] Дополнительные признаки, сущность и различные преимущества предложенного изобретения могут быть уяснены более детально с помощью приведенного ниже подробного описания и приложенных чертежей, где:
[0014] фиг. 1 представляет собой эскизное изображение упрощенной блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0015] фиг. 2 представляет собой изображение упрощенной блок-схемы системы потоковой передачи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0016] фиг. 3 представляет собой изображение упрощенной блок-схемы видеодекодера и дисплея, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0017] фиг. 4 представляет собой изображение упрощенной блок-схемы видеокодера и источника видеоданных, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0018] фиг. 5А представляет собой блок-схему изображения в одном из вариантов осуществления настоящего изобретения, где проиллюстрированы подизображения и тайлы;
[0019] фиг. 5В представляет собой блок-схему изображения в одном из вариантов осуществления настоящего изобретения, где проиллюстрированы подизображения и группы тайлов;
[0020] фиг. 5С представляет собой блок-схему изображения в одном из вариантов осуществления настоящего изобретения, где проиллюстрированы подизображения, группы тайлов и тайлы;
[0021] фиг. 6 представляет собой схематическую иллюстрацию системы в одном из вариантов осуществления настоящего изобретения;
[0022] фиг. 7 представляет собой схематическую иллюстрацию композитного видео в одном из вариантов осуществления настоящего изобретения;
[0023] фиг. 8 представляет собой эскизную иллюстрацию процедуры адаптивной контурной фильтрации на границах тайлов или групп тайлов;
[0024] фиг. 9 представляет собой блок-схему, иллюстрирующую способ в соответствии с одним из вариантов осуществления настоящего изобретения;
[0025] фиг. 10 представляет собой блок-схему компьютерной системы, подходящей для реализации вариантов осуществления настоящего изобретения.
Подробное описание изобретения
[0026] На фиг. 1 проиллюстрирована упрощенная блок-схема системы 100 связи в соответствии одним из примеров осуществления настоящего изобретения. Система 100 может включать по меньшей мере два терминала 110, 120, связанных друг с другом сетью 150. При однонаправленной передаче данных первый терминал 110 может кодировать видеоданные локально для передачи во второй терминал 120 по сети 150. Второй терминал 120 может принимать кодированные видеоданные от первого терминала из сети 150, декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[0027] На фиг. 1 проиллюстрирована вторая пара терминалов 130, 140, сконфигурированных для поддержки двунаправленной передачи кодированного видео, которая может требоваться, например, при видеоконференцсвязи. При двунаправленной передаче данных оба терминала 130, 140 могут кодировать локально захватываемые видеоданные для передачи в другой терминал по сети 150. Оба терминала 130, 140 могут также принимать кодированные видеоданные, переданные другим терминалом, могут декодировать кодированные данные и отображать восстановленные видеоданные на локальном дисплейном устройстве.
[0028] На фиг. 1 терминалами 110-140 могут быть, например, серверы, персональные компьютеры и смартфоны, и/или терминалы любого другого типа. К примеру, терминалы (110-140) могут быть портативными компьютерами, планшетными компьютерами, медиаплеерами и/или специальным оборудованием для видеоконференцсвязи. Сеть 150 может представлять собой любое количество сетей, передающих кодированные видеоданные между терминалами 110 140, включая, например, проводные и/или беспроводные сети связи. Сеть 150 связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или Интернет. В настоящем описании архитектура и топология сети 150 не играют никакой роли в функционировании предложенного изобретения, если на это явно не указано.
[0029] На фиг. 2 проиллюстрировано, в качестве примера применения настоящего изобретения, размещение видеокодера и декодера в окружении потоковой передачи. Предложенное изобретение может применяться и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранения сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и т.п.
[0030] В соответствии с иллюстрацией фиг. 2 система 200 потоковой передачи может включать подсистему 213 захвата, которая включает источник 201 видеоданных и кодер 203. Система 200 потоковой передачи может также включать по меньшей мере один сервер 205 потоковой передачи и/или по меньшей мере одного клиента 206 потоковой передачи.
[0031] Источник 201 видеоданных может, например, формировать несжатый поток 202 отсчетов видеосигнала. Источником 201 видеоданных может быть, например, цифровая видеокамера. Поток 202 отсчетов, показанный жирной линией, чтобы подчеркнуть больший объем данных по сравнению с кодированными видеопотоками, может обрабатываться кодером 203, связанным с камерой 201. Кодер 203 может включать аппаратное обеспечение, программное обеспечение, или их комбинацию, которые позволяют реализовать аспекты предложенного изобретения, в соответствии с последующим более подробным описанием. Кодер 203 может также формировать кодированный видеопоток 204. Кодированный видеопоток 204, показанной тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с несжатым потоком 202 отсчетов видеосигнала, может сохраняться на сервере 205 потоковой передачи для последующего использования. Один или более клиентов 206 потоковой передачи могут осуществлять доступ к серверу 205 потоковой передачи для получения битовых видеопотоков 209, которые могут быть копиями кодированного битового потока 204 видео.
[0032] Клиенты 206 потоковой передачи могут включать видеодекодер 210 и дисплей 212. Видеодекодер 210 может, например, декодировать битовый видеопоток 209, который является входной копией кодированного битового видеопотока 204, и формировать выходной поток 211 видеотсчетов, который может отображаться на дисплее 212 или другом устройстве отображения (не показано на чертеже). В некоторых системах потоковой передачи битовые видеопотоки 204, 209 могут быть кодированы в соответствии с заданными стандартами кодирования/сжатия видео. Примеры таких стандартов включают, без ограничения, Рекомендацию Н.265. ITU-T. В настоящее время ведется разработка нового стандарта видеокодирования, который неформально называют «универсальным видеокодированием» (Versatile Video Coding, VVC). Варианты осуществления настоящего изобретения могут применяться в контексте VVC-кодирования.
[0033] На фиг. 3 показан пример функциональной блок-схемы видеодекодера 210, который связан с дисплеем 212, в соответствии с одним из вариантов осуществления настоящего изобретения.
[0034] Видеодекодер 210 может включать канал 312, приемник 310, буферную память 315, энтропийный декодер/анализатор 320, блок 351 масштабирования/обратного преобразования, блок 352 внутреннего предсказания, блок 353 предсказания с компенсацией движения, агрегатор 355, блок 356 контурной фильтрации, память 357 опорных изображений и память 358 текущих изображений. По меньшей мере в одном из вариантов осуществления настоящего изобретения видеодекодер 210 может включать интегральную схему, набор интегральных схем и/или другие электронные схемы. Видеодекодер 210 может быть также, частично или полностью, реализован в виде программного обеспечения, исполняемого на одном или более процессоров с соответствующей памятью.
[0035] В данном варианте осуществления настоящего изобретения, а также в других вариантах его осуществления, приемник 310 может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера 210, поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала 312, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник 310 может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник 310 может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым джиттером между приемником 310 и энтропийным декодером/анализатором 320 (далее, «анализатор») может быть установлена буферная память 315. Когда приемник 310 принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер 315 может не применяться или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер 315 необходим, может быть сравнительно объемным и иметь при этом адаптивный размер.
[0036] Видеодекодер 310 может содержать анализатор 320 для восстановления символов 321 из энтропийно-кодированной видеопоследовательности. Типы этих символов могут включать, например, информацию, используемую для управления работой декодера 210, а также, возможно, информацию для управления устройством отображения, такого как дисплей 212, который может быт связан с декодером, в соответствии с иллюстрацией фиг.2. Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной уточняющей информации (Supplementary Enhancement Information, SEI) или фрагментов наборов параметров информации об используемости видео (Video Usability Information, VUI) (не показано на чертеже). Анализатор 320 может выполнять анализ/энтропийное декодирование принятой кодированной видеопоследовательности. Кодированная видеопоследовательность может быть закодирована в соответствии с некоторой технологией или стандартом видеокодирования, и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной кодового слова, кодирование Хаффмана, контекстно-зависимое или контекстно-независимое арифметическое кодирование и т.п. Анализатор 320 может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной подгруппы пикселей в видеодекодере, на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (Group of Pictures, GOP), изображения, тайлы, слайсы, макроблоки, кодовые пакеты (Coding Unit, CU), блоки (blocks), пакеты преобразования (Transform Unit, TU), пакеты предсказания (Prediction Unit, PU) и т.п.Анализатор 320 может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.п.
[0037] Анализатор 320 может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буфера 315, и формировать символы 321.
[0038] При восстановлении символов 321 могут использоваться различные блоки, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки), а также от других факторов. То, какие блоки будут использованы, и каким образом, может управляться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором 320. Для простоты поток такой управляющей информации подгруппы между анализатором 320 и множеством описанных ниже блоков на чертеже не показан.
[0039] Помимо уже упомянутых функциональных блоков декодер 210 может быть концептуально подразбит на набор описанных ниже функциональных блоков. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже разделение на функциональные блоки.
[0040] Одним из таких блоков может быть блок 351 масштабирования/обратного преобразования. Блок 351 масштабирования/обратного преобразования может принимать квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блока отсчетов, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов 321 из анализатора 320. Блок 351 масштабирования/обратного преобразования может выдавать блоки отсчетов, включающие значения отсчетов, которые могут быть введены в агрегатор 355.
[0041] В некоторых случаях отсчеты на выходе из блока 351 масштабирования/обратного преобразования могут относиться к внутренне кодируемому блоку отсчетов; то есть: блоку отсчетов, для которого не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком 352 внутреннего предсказания изображений. В некоторых случаях блок 352 внутреннего предсказания изображений формирует блок отсчетов тех же размеров и формы, что и восстанавливаемый блок отсчетов, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в памяти 358 текущих изображений. Агрегатор 355 может в некоторых случаях добавлять информацию предсказания, сформированную блоком 352 внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком 351 масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[0042] В других случаях отсчеты на выходе блока 351 масштабирования/обратного преобразования могут относиться к внешнему предсказанию, и потенциально, блоку отсчетов с компенсацией движения. В таких случаях блок 353 предсказания с компенсацией движения может осуществлять доступ к памяти 357 опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами 321, относящимися к этому блоку отсчетов, могут быть добавлены агрегатором 355 к выходным данным блока 351 масштабирования/обратного преобразования (в этом случае их называют остаточными отсчетами или остаточным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти 357 опорных изображений, по которым блок 353 предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения. Векторы движения могут быть доступны для блока 353 предсказания с компенсацией движения в форме символов 321, которые имеют, например, координаты X и Y, а также составляющие опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти 357 опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[0043] Отсчеты на выходе из агрегатора 355 могут обрабатываться при помощи различных методов контурной фильтрации в блоке 356 контурной фильтрации. Технологии сжатия видео могут включать технологии контурной фильтрации, которые управляются параметрами, содержащимися в кодированном битовом видеопотоке, и предоставляемыми в блок 356 контурной фильтрации в виде символов 321 из анализатора 320. Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[0044] Выходными данными блока 356 контурной фильтрации может быть поток отсчетов, который подают в устройство отображения, например, дисплей 212, а также сохраняют в памяти 357 опорных изображений для использования при будущем внутреннем предсказании изображений.
[0045] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. После полного восстановления кодированного изображения, и если оно было определено как опорное (например, анализатором 320), текущее опорное изображение, хранимое в памяти 358 текущих изображений, может быть помещено в память 357 опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделена новая память текущих изображений.
[0046] Видеодекодер 210 может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, рекомендации Н.265 ITU-T. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе или стандарте технологии сжатия видео, и, в частности, в профилях документа. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту смены кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п. Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического эталонного декодера (Hypothetical Reference Decoder (HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[0047] В одном из вариантов осуществления настоящего изобретения приемник 310 может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером 210 для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, уточняющих временных, пространственных или SNR уровней, избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[0048] На фиг. 4 показан пример функциональной блок-схемы видеокодера 203, который связан с источником 201 видео, в соответствии с одним из вариантов осуществления настоящего изобретения.
[0049] Видеокодер 203 может включать, например, кодер, который является кодером 430 источника, машину («движок») 432 кодирования, (локальный) декодер 433, память 434 опорных изображений, предиктор (устройство предсказания) 435, передатчик 440, энтропийный кодер 445, контроллер 450 и канал 460.
[0050] Кодер 203 может принимать видеоотсчеты из источника 201 видео (который не является частью кодера), захватывающего видеоизображения для кодирования при помощи кодера 203.
[0051] Источник 201 видео может подавать исходную видеопоследовательность для кодирования кодером 203 в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например: x бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Υ CrCB, RGB, …) и любую подходящую структуру отчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе медиасервиса источник 201 видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник 203 видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должно быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[0052] В соответствии с одним из вариантов осуществления настоящего изобретения кодер 203 может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность 443 в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера 450 может быть обеспечение подходящей скорости кодирования. Контроллер 450 может также управлять другими функциональными блоками, описанными ниже, и быть функционально связан с этими блоками. Эта связь для простоты на чертеже не показана. Параметры, задаваемые контроллером 450, могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение λ для методов оптимизации скорость-искажения, …), размером изображений, компоновкой групп изображений (GOP), максимальным диапазоном поиска векторов движения и т.п. Специалистам в данной области техники должны быть очевидны и другие функции контроллера 450, поскольку они могут соответствовать видеокодеру (203), оптимизированному для конструкции конкретной системы.
[0053] Некоторые из видеокодеров работают в конфигурации, которую специалисты в данной области техники называют петлей кодирования. Упрощенно, петля кодирования может состоять из машины кодирования в кодере 430 источника (отвечающей за формирование символов на основе входных кодируемых изображений, а также опорных изображений), и (локального) декодера 433, встроенного в кодер 203 и восстанавливающего символы, формируя данные отсчетов, которые бы также формировал (удаленный) декодер, когда сжатие символов в кодированный битовый видеопоток является сжатием без потерь, в некоторых технологиях сжатия видео. Этот восстановленный поток отсчетов может вводиться в память 434 опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое памяти опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, блок предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) известен специалистам в данной области техники.
[0054] Работа «локального» декодера 433 по существу идентична «удаленному» декодеру 210, которая уже была подробно описана выше в связи с фиг. 3. Однако, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером 445 и анализатором 320 может выполняться без потерь, в локальном декодере могут не быть в полной мере реализованы блоки энтропийного декодирования из состава декодера 210, включая канал 312, приемник 310, буфер 315 и анализатор 320.
[0055] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. По этой причине описание настоящего изобретения сконцентрировано на работе декодера. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[0056] В числе своих операций кодер 430 источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входные кадры кодируют с предсказанием на основе одного или более ранее кодированных кадров видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, машина 432 кодирования кодирует разности между блоками пикселей во входном кадре и блоками пикселей в опорном кадре (или кадрах), которые могут быть выбраны как опорные для предсказания входного кадра.
[0057] Локальный видеодекодер 433 может декодировать кодированные видеоданные кадров, помеченные как опорные, в зависимости от символов, формируемых кодером 430 источника. Операции машины 432 кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер 433 в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными кадрами и помещает восстановленные опорные кадры в память 434 опорных изображений. Таким образом, кодер 203 может локально хранить копии восстановленных опорных кадров, содержимое которых совпадает с восстановленными опорными кадрами, получаемыми удаленным видеодекодером (при отсутствии ошибок передачи).
[0058] Предиктор 435 может выполнять поиск предсказаний для машины 432 кодирования. То есть, для нового кодируемого кадра предиктор 435 может выполнять поиск в памяти опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданных, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предиктор 435, может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предиктором 435, опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти 434 опорных изображений.
[0059] Контроллер 450 может управлять операциями кодирования в видеокодере 430, включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[0060] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере 445. Энтропийный кодер преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хоффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[0061] Передатчик 440 может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером 445, чтобы подготовить ее к передаче по каналу 460 связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик 440 может объединять кодированные видеоданные из видеокодера 430 с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных (их источники не показаны на чертеже).
[0062] Контроллер 450 может управлять работой кодера 203. При кодировании контроллер 450 может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. К примеру, часто изображения помечают как изображения с внутренним предсказанием (Intra Picture, I-изображение), предсказываемое изображение (Predictive Picture, Р-изображение) или двунаправленно предсказываемое изображение (Bi-directionally Predictive Picture, В-изображение).
[0063] Внутренне предсказываемым изображением (I-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других кадров видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники осведомлены о подобных вариантах I-изображений, а также об их свойствах и применимости.
[0064] Предсказываемое изображение (Р-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока отсчетов.
[0065] Двунаправленно предсказываемое изображение (В-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока отсчетов. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображений и соответствующих метаданных, чтобы восстановить один блок отсчетов.
[0066] Исходные изображения обычно пространственно разбивают на множество блоков отсчетов (например, блоки размера 4×4, 8×8, 4×8 или 16×16 отсчетов в каждом) и кодируют поблочно (блок за блоком). Блоки отсчетов могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки отсчетов в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже кодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки пикселей в В-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[0067] Видеокодер 203 может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть документированы в стандарте, например, рекомендации Н.265 ITU-T. При своем функционировании видеокодер 203 может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[0068] В одном из вариантов осуществления настоящего изобретения передатчик 440 может, совместно с кодированным видео, передавать дополнительные данные. Видеокодер 430, например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные уточняющих временных, пространственных или SNR (сигнал/шум) уровней, избыточных изображений или слайсов, сообщений дополнительной уточняющей информации (SEI) или фрагментов наборов параметров информации об используемости видео (VUI) и т.п.
[0069] Кодеры и декодеры в настоящем изобретении могут кодировать и декодировать видеопоток в соответствии со структурой разбиения на тайлы и подизображения. Варианты осуществления настоящего изобретения, включая способы, в которых используют структуру разбиения на тайлы и подизображения могут использоваться как по отдельности, так и комбинироваться в любом порядке. При этом все способы, кодеры и декодеры, предложенные в вариантах осуществления настоящего изобретения, могут быть реализованы при помощи схем обработки данных (например, одного или более процессоров или одной или более интегральных схем). В вариантах осуществления настоящего изобретения один или более процессоров исполняют программу, хранимую на машиночитаемом носителе данных, для выполнения кодирования и декодирования видеопотока согласно структуре разбиения на тайлы и подизображения в соответствии с одним или более вариантами осуществления настоящего изобретения. Ниже рассмотрены некоторые из аспектов структуры разбиения на тайлы и подизображения, предложенной в настоящем изобретении.
[0070] В универсальном видеокодировании (VVC) и некоторых других стандартах сжатия видео желательно, чтобы функциональность, аналогичная ограниченным по движению наборам тайлов (motion constrained tile set, MCTS), была включена в следующие элементы: (1) битовый подпоток, включающий пакеты уровня сетевой абстракции (network abstraction layer, NAL) уровня видеокодирования (video coding layer, VCL) и не-VCL NAL-пакеты, необходимые для декодирования подмножества тайлов, которые могут быть извлечены из одного битового потока VVC, охватывающего все тайлы, составляющие изображение в целом; и (2) извлеченный битовый подпоток, независимо декодируемый в VVC-декодере, без ссылки на пакеты NAL.
[0071] Такой механизм разбиения с перечисленными выше свойствами может быть назван ограниченным по движению набором тайлов (MCTS) или подизображением. Чтобы избежать путаницы между терминами «группа тайлов» и «набор тайлов» в настоящем документе для описания рассмотренного выше механизма разбиения используется термин «подизображение».
[0072] Неограничивающий пример структуры разбиения на тайлы и подизображения в одном из вариантов осуществления настоящего изобретения рассмотрен ниже со ссылками на фиг. 5А-С. В одном из вариантов осуществления настоящего изобретения видеопоток включает множество изображений 500. Каждое изображение 500 может включать одно или боле подизображений 510, при этом каждое подизображение 510 включает один или более тайлов 530, например, в соответствии с иллюстрацией фиг.5А-В. Размер и форма подизображений 510 и тайлов 530 не ограничены фиг. 5А-В и могут быть любыми. Тайлы 510 в каждом подизображений 510 могут быть разбиты на одну или более групп 520 тайлов, например, в соответствии с иллюстрацией фиг. 5В-С. Размер и форма групп 520 тайлов не ограничены фиг. 5В-С и могут быть любыми. В одном из вариантов осуществления настоящего изобретения один или более тайлов 530 могут не входить ни в одну из групп 520 тайлов. В одном из вариантов осуществления настоящего изобретения группы 520 тайлов в одном подизображений 510 могут иметь один или более общих тайлов 530. В вариантах осуществления настоящего изобретения кодирование и декодирование видеопотока может выполняться в соответствии со структурой разбиения на тайлы и подизображения, в которой определены и применяются подизображения 510, группы 520 тайлов и тайлы 530.
[0073] Варианты структуры подизображений, предложенные в настоящем изобретении, могут включать аспекты структуры подизображений из JVET-M0261.
[0074] При этом перечисленные ниже свойства вариантов осуществления структуры подизображений, соответствующие настоящему изобретению, повышают полезность предложенной в настоящем изобретении структуры подизображений в случае иммерсивных медиа:
[0075] (1) Каждое подизображение 510 может иметь отличающийся период произвольного доступа и отличающуюся структуру внешнего предсказания. Это свойство может использоваться для получения различных периодов произвольного доступа для потоковой передачи видео 360 (градусов), зависящей от области просмотра. При потоковой передаче видео 360, зависящей от области просмотра, внимание зрителя может быть сосредоточено в центральных областях с динамичным контентом, тогда как фоновые области могут меняться медленно. Доступность различных структур GOP и различных периодов произвольного доступа помогает обеспечить быстрый доступ к заданным областям и получить общее повышение качества видео.
[0076] (2) Подизображения 510 могут иметь отличающиеся друг от друга коэффициенты повторной дискретизации. Это свойство позволяет значительно усекать качество фоновых областей (например, верх и низ в видео 360, нединамичных объектов в РСС) и повышать общую битовую эффективность.
[0077] (3) Множество подизображений 510, составляющих изображение 500, не обязательно должны быть кодированы одним кодером и декодированы одним декодером. Например, подизображение 510 может быть независимо закодировано первым кодером, тогда как другое подизображение 510 может кодироваться вторым кодером. Затем битовые подпотоки, соответствующие этим подизображениям 510, могут быть объединены в один битовый поток, декодируемый декодером. Это свойство может применяться, например, для киберспортивного контента. Например, в одном из вариантов осуществления настоящего изобретения может присутствовать набор игроков (игрок 1…игрок N), участвующих в игре (например, видеоигре), при этом могут захватываться и передаваться внутриигровое изображение и изображение от камеры каждого игрока. В зависимости от выбранных каждым зрителем игроков мультимедийный процессор может группировать соответствующие игровые видео (например, игроков, за которыми следят) и преобразовывать эту группу в единое видео.
[0078] В таком варианте осуществления настоящего изобретения могут присутствовать видеокамеры, которые захватывают изображения соответствующих игроков во время игры. К примеру, в соответствии с иллюстрацией фиг. 6, такой вариант осуществления настоящего изобретения может включать камеру или камеры, захватывающие видеоизображение 611 игрока 1, камеру или камеры 610, захватывающие видеоизображение 612 игрока 2, и т.д. В дополнение, один или более процессоров с памятью могут захватывать внутриигровые изображения, включая виды 620 для наблюдателей и виды 630 для игроков. Виды 620 для наблюдателей могут представлять собой, например, обзорный вид на игру, который не доступен игрокам во время активной фазы игры. К примеру, виды для наблюдателей могут соответствовать виду мира видеоигры, отличающегося от вида с точки зрения игроков, и/или включать полезную для зрителей игры информацию, которая не видна игрокам во время активной фазы игры. Виды 620 для наблюдателей могут включать один или более видов, включая первый вид 621 для наблюдателя. Каждый из видов 630 для игроков может представлять собой изображение, которое видит соответствующий игрок во время игры. Например, первый вид 631 для игрока может быть изображениями видеоигры, видимыми для игрока 1 во время игры, второй вид 632 для игрока может быть изображениями видеоигры, видимыми для игрока 2 во время игры и т.д.
[0079] Видеоизображения от камер 610, виды 620 для наблюдателей и виды 630 для игроков могут приниматься в компоновщике 640. В вариантах осуществления настоящего изобретения любое количество таких видеоизображений может независимо кодироваться соответствующими кодерами и/или одно или более из этих видеоизображений могут кодироваться совместно одним кодером. Компоновщик 640 может принимать видеоизображения после их кодирования одним или более кодером, до кодирования видеоизображений или после декодирования видеоизображений. Компоновщик 640 может также функционировать в качестве кодера и/или декодера. На основе входной информации, например, выбора 660 компоновки и потока, компоновщик 640 может предоставлять конкретную композицию из двух или более видеоизображений от камер 610, видов 620 для наблюдателей и видов 630 для игроков в транскодер 650, в форме композитного видео 690, показанного на фиг. 7. Транскодер 650 может перекодировать композитное видео 690 и выводить его в медиа-приемник 680, который может включать один или более дисплеев, отображающих композитное видео 690. Транскодер 650 может контролироваться сетевым монитором 670.
[0080] В соответствии с иллюстрацией фиг.7, перекодированное композитное видео 690 может включать, например, композицию из видеоизображения 611 игрока 1, видеоизображения 612 игрока 2, первого вида 631 для игрока, второго вида 632 для игрока и первого вида 621 для наблюдателя. Однако объединяться в качестве композитного видео 690 может любая комбинация из любых видеоизображений, предоставляемых в компоновщик 640.
[0081] В одном из вариантов осуществления настоящего изобретения структура подизображения включает следующие отличительные признаки и технические характеристики: (1) Подизображение 510 является прямоугольной областью. (2) Подизображение 510 может быть разбито на множество тайлов 530, однако это не обязательно. (3) При разбиении на множество тайлов 530 каждое подизображение 510 имеет собственный порядок сканирования тайлов. (4) Тайлы 530 в подизображений 510 могут быть объединены в прямоугольную или непрямоугольную группу 520 тайлов, однако тайлы 530, принадлежащие различным подизображениям 510, не могут входить в одну группу.
[0082] Ниже описаны аспекты (1)-(7) структуры подизображения, предложенной в вариантах осуществления настоящего изобретения, которые отличаются от стандарта JVET-M0261.
[0083] (1) В одном из вариантов осуществления настоящего изобретения каждое подизображение 510 может ссылаться на собственный набор SPS, PPS и APS, однако каждый набор SPS может содержать всю информацию о разбиении на подизображения.
[0084] (а) В одном из вариантов осуществления настоящего изобретения информация о разбиении на подизображения и структуре подизображений может сигнализироваться в наборе SPS. Например, могут сигнализироваться декодированное изображение и выходной размер подизображения 510. К примеру, может сигнализироваться информация списка опорных изображений (reference picture list, RPL) для подизображения 510. В одном из вариантов осуществления настоящего изобретения все подизображения 510 внутри одного изображения не обязательно должны иметь одинаковую информацию RPL. (b) В одном из вариантов осуществления настоящего изобретения информация о разбиении подизображения 510 на тайлы может сигнализироваться в наборе PPS. (с) В одном из вариантов осуществления настоящего изобретения коэффициенты ALF для подизображения 510 могут сигнализироваться в наборе APS. (d) В одном из вариантов осуществления настоящего изобретения множество подизображений 510 могут ссылаться на любой набор параметров или сообщение SEI.
[0085] (2) В одном из вариантов осуществления настоящего изобретения идентификатор (ID) подизображения может сигнализироваться в заголовке пакета NAL.
[0086] (3) В одном из вариантов осуществления настоящего изобретения могут быть запрещены любые процедуры декодирования (например, контурная фильтрация, компенсация движения) с переходом границ подизображений.
[0087] (4) В одном из вариантов осуществления настоящего изобретения границы подизображения 510 в целях компенсации движения могут расширяться и заполняться незначащей информацией. В одном из вариантов осуществления настоящего изобретения в SPS может сигнализироваться флаг, указывающий, были ли границы расширены, или нет, однако это не является обязательным.
[0088] (5) В одном из вариантов осуществления настоящего изобретения декодированное растровый размер подизображения 510 для вывода может быть изменен, однако это не является обязательным. В одном из вариантов осуществления настоящего изобретения для вычисления коэффициента изменения растрового размера может использоваться пространственное соотношение между размером декодированного подизображения и размером выходного подизображения, указанным в наборе SPS.
[0089] (6) В одном из вариантов осуществления настоящего изобретения, при извлечении битового подпотока извлекают пакеты NAL VCL, соответствующие идентификатору ID подизображения, а остальные - удаляют. Извлекают наборы параметров, на которые ссылаются пакеты NAL VCL с идентификатором ID подизображения, а остальные удаляют.
[0090] (7) В одном из вариантов осуществления настоящего изобретения, при сборке битовых подпотоков, пакеты NAL VCL с одинаковыми значениями РОС могут чередоваться одинаковыми пакетами доступа (access unit, AU). При необходимости информацию о разбиении подизображений 510 в SPS перезаписывают. Также при необходимости перезаписывают идентификатор подизображения и идентификаторы любых наборов параметров.
[0091] В таблице 1, приведенной ниже, показан синтаксис RBSP набора параметров последовательности в одном из вариантов осуществления настоящего изобретения.
[0092] Параметр "num_sub_pictures_in_pic" определяет количество подизображений 510 в каждом изображении 500, ссылающемся на данный набор SPS.
[0093] Параметр "signalled_sub__pic id_length_minus1", равный 1, определяет количество бит, используемых для представления синтаксического элемента "sub_pic_id[i]", когда он присутствует, и синтаксического элемента "tile_group_sub_pic_id[i]" в заголовках групп тайлов. Значение "signalled_sub_pic_id_length_minus1" может лежать в диапазоне от 0 до 15 включительно.
[0094] Параметр "dec_sub_pic_width-in_luma_samples[i]" определяет ширину i-го декодированного подизображения 510, измеряемую в отсчетах яркости, в кодированной видеопоследовательности. Параметр "dec_sub_pic_width_in_luma_samples[i]" не может быть равен 0 и должен быть целым кратным "MinCbSizeY".
[0095] Параметр "dec_sub_pic_height_in_luma_samples[i]" определяет высоту i-го декодированного подизображения 510, измеряемую в отсчетах яркости, в кодированной видеопоследовательности. Параметр "dec_sub_pic_height_in_lumasamples[i]" не может быть равен 0 и должен быть целым кратным "MinCbSizeY".
[0096] Параметр "output_sub_pic_width_in_luma_samples[i]" определяет ширину i-го выходного подизображения 510, измеряемую в отсчетах яркости. Параметр "output_sub_pic_width_in_luma_samples" не может быть равен 0.
[0097] Параметр "output_sub_pic_height_in_luma_samples[i]" определяет высоту i-го выходного подизображения 510, измеряемую в отсчетах яркости. Параметр "output_sub_pic_height_in_luma_samples" не может быть равен 0.
[0098] Параметр "sub_pic_id[i]" определяет идентификатор i-го подизображения 510. Длина синтаксического элемента "sub_pic_id[i]" равна "sub_pic_id_length_minus1"+1 бит. Если это значение отсутствует, "sub_pic_id[i]" назначают равным 0.
[0099] Параметр "left_top_pos_x_in_luma_samples[i]" определяет позицию столбца первого пикселя i-го подизображения 510.
[0100] Параметр "left_top_pos_у_in_luma_samples[i]" определяет позицию строки первого пикселя i-го подизображения 510.
[0101] В одном из вариантов осуществления настоящего изобретения растровый размер каждого подизображения 510 изменяют до соответствующего выходного размера подизображения после декодирования. В одном из вариантов осуществления настоящего изобретения подизображение 510 не может накладываться на область другого подизображения 510А. В одном из вариантов осуществления настоящего изобретения ширина и высота изображения, состоящего из всех выходных подизображений с соответствующими размерами и позициями, могут быть равны "pic_width_in_luma_samples" и "pic_height_in_luma_samples", однако могут быть также декодированы частичные области изображения, состоящие из подмножества подизображений.
[0102] В таблице 2, приведенной ниже, показан синтаксис заголовка группы тайлов в одном из вариантов осуществления настоящего изобретения.
[0103] Параметр "tile_group_sub_pic_id" определяет идентификатор подизображения, к которому принадлежит текущая группа тайлов.
[0104] Тайлы в стандарте HEVC предназначены для поддержки двух основных сценариев применения: (1) параллельные процессы декодирования и (2) частичная доставка и декодирование. Первый сценарий применения уже практически обеспечивался в HEVC применением оригинальных тайлов, однако сохранялась зависимость от операций внешнего предсказания. Второй сценарий применения был реализован за счет применения дополнительных сообщений SEI, названных ограниченными по движению наборами тайлов (MCTS), однако этот способ был опциональным. В стандарте VVC был наследован тот же механизм тайлов, что и в HEVC, однако для поддержки нескольких сценариев применения была введена новая схема, так называемые группы тайлов.
[0105] В данном документе предложены варианты осуществления изобретения, которые включают структуру подизображения, допускающую применение для доставки контента виртуальной реальности VR360, в зависимости от области просмотра, или иного иммерсивного контента, поддерживающего 3/6 степеней свободы. Такая функциональность представляется полезной в VVC для широкого применения в будущих сервисах, предоставляющих иммерсивный контент. Также желательно иметь стопроцентную возможность обеспечивать полностью параллельное декодирование без зависимостей между границами тайлов.
[0106] Для обеспечения расширенных возможностей параллельной обработки могут использоваться два синтаксических элемента,
"loop_filter_across_tiles_enabled_flag" и "loop_filter_across_tile_groups_enabled_flag". Эти синтаксические элементы указывают на то, что операции контурной фильтрации не должны выполняться с пересечением границ тайлов или границ групп тайлов соответственно. В одном из вариантов осуществления настоящего изобретения два упомянутых выше синтаксических элемента могут быть введены вместе в еще двумя дополнительными синтаксическими элементами. Эти два дополнительных синтаксических элемента могут указывать на то, выполняются ли операции внешнего предсказания с пересечением границ тайлов или групп тайлов, или нет, соответственно. В этой семантике операции внешнего предсказания включают, например, временную компенсацию движения, опорные изображения для текущего изображения, временное предсказание векторов движения, а также операции внешнего предсказания параметров изображений. Следовательно, в одном из вариантов осуществления настоящего изобретения, могут применяться ограниченные по движению тайлы, в отличие от ограниченных по движению наборов тайлов, применяемых, например, в таких стандартах кодирования/декодирования, как HEVC. Эта функциональность может быть взаимно совместимой со схемой, где применяют подизображения или наборы MCTS.
[0107] Описанные выше синтаксические элементы могут быть полезными по меньшей мере в двух следующих сценариях применения: (1) полностью параллельные процессы декодирования без каких-либо зависимостей через границы тайлов или групп тайлов и (2) переконфигурирование компоновки групп тайлов без перекодирования пакетов NAL VCL.
[0108] В первом сценарии применения, даже если изображение 500 разбито на две группы 520 тайлов, после его доставки, множество декодеров могут декодировать группу тайлов 520 параллельно, когда группа 520 тайлов включает множество тайлов 530. Здесь было бы полезным иметь возможность полностью параллельной обработки.
[0109] Второй сценарий применения относится к обработке данных VR360-видео, зависящего от области просмотра. Когда целевая область просмотра смещается к границе между двумя группами тайлов, то для отображения целевой области просмотра в декодере может быть необходим прием и декодирование обеих этих групп тайлов. Однако в одном из вариантов осуществления настоящего изобретения с использованием описанных выше синтаксических элементов, информация о разбиении на группы 520 тайлов в наборе PPS может обновляться, например, сервером или облачным процессором так, чтобы только одна группа 520 тайлов включала всю целевую область просмотра целиком, и эта одна группа 520 тайлов может доставляться в декодер. Мгновенное переразбиение возможно без каких-либо изменений на уровне VLC, если все тайлы кодированы как ограниченные по движению.
[0110] Ниже приведены примеры синтаксических элементов в одном из вариантов осуществления настоящего изобретения.
[0111] В таблице 3, приведенной ниже, показан синтаксис RBSP набора параметров изображения в одном из вариантов осуществления настоящего изобретения.
[0112] Флаг "full_parallel_decoding_enabled_flag", равный 1, определяет, что обработка и предсказание с пересечением границ тайлов запрещены.
[0113] Флаг "loop_filter_across_tiles_enabled _flag", равный 1, определяет, что операции контурной фильтрации выполняются с пересечением границ тайлов в изображениях, ссылающихся на данный набор PPS. Флаг "loop_filter_across_tiles_enabled_flag", равный 0, определяет, что операции контурной фильтрации с пересечением границ тайлов в изображениях, ссылающихся на данный набор PPS, не выполняются. Операции контурной фильтрации включают, например операции деблокирующего фильтра, фильтра адаптивного смещения отсчетов и/или адаптивного контурного фильтра. Если этот флаг отсутствует, значение loop_filter_across_tiles_enabled_flag может быть принято равным 0.
[0114] Флаг "loop_filter_across_tile_groups_enabled_flag", равный 1, определяет, что операции контурной фильтрации выполняются с пересечением границ групп тайлов в изображениях, ссылающихся на этот набор PPS. Флаг "loop_filter_across_tile_groups_enabled_flag", равный 0, определяет, что операции контурной фильтрации не выполняются с пересечением границ групп тайлов в изображениях, ссылающихся на этот набор PPS. Операции контурной фильтрации включают, например, операции деблокирующего фильтра, фильтра адаптивного смещения отсчетов и/или адаптивного контурного фильтра. Когда этот флаг отсутствует, значение "loop_filter_across_tile_groups_enabled_flag" может быть принято равным 0.
[0115] Флаг "inter_prediction_across_tiles_enabled_flag", равный 1, определяет, что операции внешнего предсказания выполняются с пересечением границ тайлов в изображениях, ссылающихся на этот PPS. Флаг "inter_prediction_across_tiles_enabled_flag", равный 0, определяет, что операции внешнего предсказания не выполняются с пересечением границ тайлов в изображениях, ссылающихся на этот PPS. Операции внешнего предсказания включают, например, временную компенсацию движения, опорные изображения для текущего изображения, временное предсказание векторов движения, а также операции внешнего предсказания параметров изображений. Когда этот флаг отсутствует, значение "inter_prediction_across_tiles_enabled_flag" может быть принято равным 0.
[0116] Флаг "inter_prediction_across_tile_groups_enabled_flag", равный 1, определяет, что операции внешнего предсказания выполняются с пересечением границ групп тайлов в изображениях, ссылающихся на этот PPS. Флаг "inter_prediction_across_tile_groups_enabled_flag", равный 0, определяет, что операции внешнего предсказания с пересечением границ групп тайлов в изображениях, ссылающихся на этот PPS, не выполняются. Операции внешнего предсказания включают, например, временную компенсацию движения, опорные изображения для текущего изображения, временное предсказание векторов движения, а также операции внешнего предсказания параметров изображений. Когда этот флаг отсутствует, значение "inter_ptrediction_across_tile_groups_enabled_flag" может быть принято равным 0.
[0117] В VVC конструкция тайлов аналогична HEVC, однако введена новая схема, называемая также «группой тайлов», предназначенная для поддержания множества сценариев применения, включая, без ограничения перечисленным: (1) частичную доставку и декодирование, (2) параллельные процессы декодирования и (3) размер MTU, соответствующий гранулярности тайлов.
[0118] Для параллельной обработки могут применяться два синтаксических элемента (("loop_filter_across_tiles_enabled_flag" и "loop_filter_across_tile_groups_enabled_flag"), которые позволяют, с возможностью выбора, разрешать процедуру контурной фильтрации с пересечением границ групп тайлов. Однако при использовании этих синтаксических элементов запрет контурной фильтрации с пересечением границ групп тайлов, но с разрешением фильтрации с переходом границ тайлов, может усложнять процедуру фильтрации в тех лучаях, когда группа тайлов не является прямоугольной. В соответствии с иллюстрацией фиг. 8 адаптивную контурную фильтрацию (ALF) выполняют с использованием ромбовидного фильтра 840 с пересечением границы между двумя группами 820 тайлов. Если группы 820 тайлов непрямоугольны, процедура фильтрации хаотична. Для каждого пикселя и каждого коэффициента фильтра обязательна проверка на границу, чтобы определить, какие из пикселей принадлежат текущей группе тайлов. В случае временной компенсации движения и использования текущего изображения в качестве опорного ситуация не отличается. Если к границе группы тайлов применяют расширение границы в целях компенсации движения, процедура заполнения ее незначащими данными также сложна.
[0119] В соответствии с одним из вариантов осуществления настоящего изобретения управление контурной фильтрацией на уровне групп тайлов (или любой другой операцией) на границах групп тайлов разрешают только для прямоугольных групп тайлов. Таким образом, может быть более успешно преодолена беспорядочность в процедурах фильтрации и заполнения незначащими данными.
[0120] При этом, когда флаг single tilej»er tile group flag равен 1, флаг "loop filter across tile groups enabled flag" сигнализировать не обязательно. Таким образом, один из вариантов осуществления настоящего изобретения может включать, например, синтаксис RBSP набора параметров изображения, проиллюстрированный в таблице 4.
[0121] Флаг "loop_filter_across_tile_groups_enabled_flag", равный 1, определяет, что операции контурной фильтрации выполняются с пересечением границ групп тайлов в изображениях, ссылающихся на этот набор PPS. Флаг "loop_filter_across_tile_groups_enabled_flag", равный 0, определяет, что операции контурной фильтрации не выполняются с пересечением границ групп тайлов в изображениях, ссылающихся на этот набор PPS. Операции контурной фильтрации включают, например, операции деблокирующего фильтра, фильтра адаптивного смещения отсчетов и/или адаптивного контурного фильтра. Когда этот флаг отсутствует, значение "loop filter across tile groups enabled flag" может быть принято равным значению loop filter across tiles enabled flag..
[0122] В одном из вариантов осуществления настоящего изобретения способ может выполняться по меньшей мере одним процессором, с целью декодирования битового подпотока кодированного битового потока. Кодированный битовый видеопоток может содержать закодированные версии множества подизображений 510 одного или более изображений.
[0123] В соответствии с иллюстрацией фиг. 9, способ может включать прием, по меньшей мере одним процессором, битового подпотока (шаг 850). В одном из вариантов осуществления настоящего изобретения битовый подпоток может содержать информацию для одного или более подизображений 510 одного или более изображений 500, и не может включать информацию для других подизображений 510 одного или более изображений 500. После приема битового подпотока по меньшей мере один процессор может декодировать подизображения 510, содержащиеся в битовом подпотоке. К примеру, если допустить, что битовый подпоток содержит информацию для первого подизображения и второго подизображения одного изображения, то по меньшей мере один процессор может декодировать первое подизображение независимо от второго подизображения, в соответствии с методом декодирования, в котором применяют структуру разбиения на подизображения и тайлы, предложенную в настоящем изобретении (шаг 860). Декодирование первого подизображения может включать декодирование тайлов первого подизображения. По меньшей мере один процессор может также декодировать второе подизображение того же изображения, в соответствии с методом декодирования, в котором применяют структуру разбиения на подизображения и тайлы, предложенную в настоящем изобретении (шаг 860). Декодирование второго подизображения может включать декодирование тайлов второго подизображения.
[0124] В вариантах осуществления настоящего изобретения по меньшей мере один процессор может кодировать подизображения 510 одного или более изображений в соответствии со структурой разбиения на подизображения и тайлы, предложенной в настоящем изобретении, и передавать один или более битовых подпотоков битового видеопотока, включающего одно или более закодированных подизображений 510, в один или более декодеров для декодирования в соответствии со структурой разбиения на подизображения и тайлы, предложенной в настоящем изобретении.
[0125] В вариантах осуществления настоящего изобретения, предложенные декодеры (например, видеодекодер 210) могут выполнять способы, предложенные в настоящем изобретении, выполняя доступ к компьютерному программному коду, хранимому в памяти, и работая в соответствии с инструкциями компьютерного программного кода. К примеру, в одном из вариантов осуществления настоящего изобретения, компьютерный программный код может включать код декодирования, сконфигурированный для обеспечения декодирования, декодером, первого подизображения некоторого изображения независимо от второго подизображения, в соответствии с методом декодирования, в котором применяют структуру разбиения на подизображения и тайлы, предложенную в настоящем изобретении, а также для обеспечения декодирования, декодером, второго подизображения того же изображения, независимо от первого подизображения, в соответствии с методом декодирования, в котором применяют структуру разбиения на подизображения и тайлы, предложенную в настоящем изобретении.
[0126] В вариантах осуществления настоящего изобретения, предложенные кодеры (например, кодер 203) могут выполнять способы, предложенные в настоящем изобретении, выполняя доступ к компьютерному программному коду, хранимому в памяти, и работая в соответствии с инструкциями компьютерного программного кода.
К примеру, в одном из вариантов осуществления настоящего изобретения, компьютерный программный код может включать код кодирования, сконфигурированный для обеспечения кодирования, кодером, подизображений 510 одного или более изображений 500 в соответствии со структурой разбиения на подизображения и тайлы, предложенной в настоящем изобретении. Компьютерный программный код может также включать код передачи, сконфигурированный для обеспечения передачи одного или более битовых подпотоков битового видеопотока, который включает одно или более кодированных подизображений 510, в один или более декодеров для декодирования в соответствии со структурой разбиения на подизображения и тайлы, предложенной в настоящем изобретении.
[0127] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения, где используются машиночитаемые инструкции, и которое физически хранят на одном или более машиночитаемых носителей. К примеру, на фиг.10 показана компьютерная система 900, подходящая для реализации некоторых из вариантов осуществления настоящего изобретения.
[0128] Компьютерное программное обеспечение может быть закодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации, исполнения микрокода и т.п., центральными процессорами компьютера (computer central processing unit, CPU), графическими процессорами (Graphics Processing Unit, GPU) и т.п.
[0129] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0130] Компоненты компьютерной системы 900, показанные на фиг. 10, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в неограничивающем варианте осуществления компьютерной системы 900, или комбинацией таких компонентов.
[0131] Компьютерная система 900 может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0132] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура 901, мышь 902, трекпад 903, сенсорный экран 910, киберперчатка, джойстик 905, микрофон 906, сканер 907, камера 908.
[0133] Компьютерная система 900 может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана 910, киберперчатки или джойстика 905, однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители 909, наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны 910, включая CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таки средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, голографические дым-машины (smoke tanks), а также принтеры (не показаны на чертеже).
[0134] Компьютерная система 900 может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW 920, с носителями 921 CD/DVD или аналогичными им, флэш-привод 922, съемный жесткий диск или твердотельный диск 923, применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже) и т.п.
[0135] Специалисты в данной области техники должны при этом понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие энергозависимые сигналы.
[0136] Компьютерная система 900 может также иметь интерфейс с одной или более сетями связи. Сети могут быть, например, беспроводными, проводными или оптическими. Сети также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п.Примеры сетей включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п.Некоторые сети требуют наличия внешних адаптеров сетевых интерфейсов, подключаемых к портам данных или периферийным шинам 949 общего назначения (например, USB-портам компьютерной системы 900). Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы 900 за счет подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс сети сотовой связи в компьютерной системе на базе смартфона). Применение любых из подобных сетей позволяет компьютерной системе 900 осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. Упомянутая связь может включать связь со средой 955 облачных вычислений. В любой из сетей и сетевых интерфейсов, описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[0137] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы 954 могут быть подключены к базовой внутренней структуре 940 компьютерной системы 900.
[0138] Базовая внутренняя структура 940 может включать один или более центральных процессоров (Central Processing Units, CPU) 941, графических процессоров (Graphics Processing Units, GPU) 942, специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) 943, аппаратных ускорителей 944 для определенных задач и т.п.Эти устройства, вместе с памятью 945 в режиме «только для чтения» (Read-only memory, ROM) 945, памятью 946 с произвольным доступом, внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, SSD-дисками и аналогичной памятью 947, могут быть объединены системной шиной 948. В некоторых компьютерных системах к системной шине 948 может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к базовой системной шине 948, либо к периферийной шине 949. Примерами архитектур периферийной шины могут служить шины PCI, USB и т.п. В состав базовой структуры 940 системы может входить графический адаптер 950.
[0139] CPU 941, GPU 942, FPGA 943 и ускорители 944 могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM 945 или RAM 946. Временные данные при этом могут храниться в RAM 946, тогда как постоянные данные могут храниться, например, во внутренней памяти 947 большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться за счет применения кэш-памяти, которая может быть тесно связан с одним или более CPU 941, GPU 942, памятью 947 большой емкости, ROM 945, RAM 946 и т.п.
[0140] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[0141] В качестве неограничивающего примера, компьютерная система с архитектурой 900, и в частности, базовой структурой 940, может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или запоминающими устройствами в базовой структуре 940, например, встроенным запоминающим устройством 947 большой емкости или ROM 945. Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой 940 компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой 940, и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM 946, и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе 944), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот. Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем настоящего изобретения входят все соответствующие комбинации из аппаратного и программного обеспечения.
[0142] В данном документе были описаны несколько неограничивающих примеров осуществления настоящего изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем настоящего изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел настоящего изобретения и соответственно, находятся в пределах его объема и сущности.