[0001] По данной заявке испрашивается приоритет Предварительной Заявки США №61/707,759, поданной 28 сентября 2012 г., которая во всей своей полноте включена в настоящее описание посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие, в общем, относится к обработке видео данных, и в частности, методикам, которые могут быть применены к одному или более стандартам кодирования видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового непосредственного вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), компьютеры класса лэптоп или настольные, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые устройства записи, цифровые мультимедийные проигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радио телефоны, так называемые «интеллектуальные телефоны», устройства для видео телеконференций, устройства потоковой передачи видео, транскодеры, маршрутизаторы или другие сетевые устройства, и подобное. Цифровые видео устройства реализуют методики сжатия видео, такие как те, что описываются в стандартах, которые формулируются MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Усовершенствованным Кодированием Видео (AVC), разрабатываемым в настоящее время стандартом Высокоэффективного Кодирования Видео (HEVC), собственными стандартами, открытыми форматами сжатия видео, такими как VP8, и расширениями таких стандартов, методик или форматов. Видео устройства могут передавать, принимать, кодировать, декодировать, и/или сохранять цифровую видео информацию более эффективно посредством реализации таких методик сжатия видео.
[0004] Методики сжатия видео выполняют пространственное (внутри изображения (intra-picture)) предсказание и/или временное (между изображениями (inter-picture)) предсказание для сокращения или удаления избыточности, присущей видео последовательностям. Применительно к основанному на блоках кодированию видео, видео слайс (т.е., видео кадр или участок видео кадра) может быть разбит на видео блоки, которые также могут именоваться древовидными блоками, единицами кодирования (CU) и/или узлами кодирования. Видео блоки в (I) слайсе с внутренним кодированием (intra-coded) изображения кодируются при помощи пространственного предсказания по отношению к опорным элементам дискретизации (отсчетам) в соседних блоках в том же самом изображении. Видео блоки в (P или B) слайсе с внешним кодированием (inter-coded) изображения могут использовать пространственное предсказание в отношении опорных элементов дискретизации в соседних блоках в том же самом изображении или временное предсказание в отношении опорных элементов дискретизации в других опорных изображениях. Изображения могут именоваться кадрами, а опорные изображения могут именоваться опорными кадрами.
[0005] Пространственное или временное предсказание имеет результатом предсказывающий блок для блока, который должен быть закодирован. Остаточные данные представляют собой пиксельные разности между исходным блоком, который должен быть закодирован, и предсказывающим блоком. Блок с внешним кодированием кодируется в соответствии с вектором движения, который указывает на блок опорных элементов дискретизации, формирующий предсказывающий блок, и остаточными данными, указывающими разность между кодированным блоком и предсказывающим блоком. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что имеет результатом остаточные коэффициенты преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, изначально скомпонованные в двумерный массив, могут быть просканированы с тем, чтобы создать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено для достижения еще большего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В общем, данное раскрытие описывает методики для обработки единиц декодирования в единице доступа. Единица доступа относится к видео данным одного или более изображений в одном и том же экземпляре времени. Например, декодирование единиц доступа имеет результатом одно или более декодированных изображений, где все из декодированных изображений относятся к одному и тому же экземпляру времени.
[0007] Единица доступа включает в себя одну или более единицы декодирования. Как описывается более подробно, в некоторых примерах, методики, описываемые в данном раскрытии, уникально идентифицируют каждую из единиц декодирования в единице доступа. В некоторых примерах, методики обеспечивают возможность вставки одной или более копий сообщения в единицу доступа.
[0008] В одном примере, раскрытие описывает способ для декодирования видео данных. Способ, содержащий декодирование уникального идентификатора для каждой единицы декодирования в единице доступа. В данном примере, идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Способ также включает в себя определение того, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования на основании уникального идентификатора для каждой единицы декодирования в единице доступа, и декодирование единиц NAL каждой из единиц декодирования в единице доступа, на основании упомянутого определения, для воссоздания по меньшей мере одного изображения.
[0009] В другом примере раскрытие описывает способ для кодирования видео данных. Способ, содержащий определение уникального идентификатора для каждой единицы декодирования в единице доступа. В данном примере, идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Способ также включает в себя определение того, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования единицы доступа, и генерирование для вывода каждого уникального идентификатора в соответствующих единицах декодирования для указания того, какие единицы NAL ассоциированы с какими единицами декодирования единицы доступа.
[0010] В другом примере раскрытие описывает устройство для декодирования видео данных. Устройство содержит декодер видео, выполненный с возможностью декодирования уникального идентификатора для каждой единицы декодирования в единице доступа. В данном примере, идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Декодер видео выполнен с возможностью определения того, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования на основании уникального идентификатора для каждой единицы декодирования в единице доступа, и декодирования единиц NAL каждой из единиц декодирования в единице доступа, на основании упомянутого определения, для воссоздания по меньшей мере одного изображения.
[0011] В другом примере раскрытие описывает устройство для кодирования видео данных. Устройство содержит кодер видео, выполненный с возможностью определения уникального идентификатора для каждой единицы декодирования в единице доступа. В данном примере, идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Кодер видео выполнен с возможностью определения того, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования единицы доступа, и генерирования для вывода каждого уникального идентификатора в соответствующих единицах декодирования для указания того, какие единицы NAL ассоциированы с какими единицами декодирования единицы доступа.
[0012] В другом примере раскрытие описывает считываемый компьютером носитель данных с хранящимися на нем инструкциями, которые при исполнении, побуждают один или более процессоров устройства для декодирования видео данных: декодировать уникальный идентификатор для каждой единицы декодирования в единице доступа, при этом идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа; определить, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования на основании уникального идентификатора для каждой единицы декодирования в единице доступа; и декодировать единицы NAL каждой из единиц декодирования в единице доступа, на основании упомянутого определения, для воссоздания по меньшей мере одного изображения.
[0013] В другом примере раскрытие описывает устройство для декодирования видео данных, причем устройство, содержащее: средство для декодирования уникального идентификатора для каждой единицы декодирования в единице доступа, при этом идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа; средство для определения того, какие единицы уровня сетевого доступа (NAL) ассоциированы с какими единицами декодирования на основании уникального идентификатора для каждой единицы декодирования в единице доступа; и средство для декодирования единиц NAL каждой из единиц декодирования в единице доступа, на основании упомянутого определения, для воссоздания по меньшей мере одного изображения.
[0014] В другом примере раскрытие описывает способ для кодирования (/декодирования) видео данных, при этом способ содержит кодирование сообщения информации дополнительного улучшения (SEI) в единице доступа. В данном примере, единица доступа включает в себя видео данные для воссоздания по меньшей мере одного изображения, а сообщение SEI задает характеристику видео данных. Способ также включает в себя кодирование копии сообщения SEI в единице доступа.
[0015] В другом примере раскрытие описывает устройство для кодирования видео данных, при этом устройство содержит модуль кодирования видео, выполненный с возможностью кодирования сообщения информации дополнительного улучшения (SEI) в единице доступа. В данном примере, единица доступа включает в себя видео данные для воссоздания по меньшей мере одного изображения, а сообщение SEI задает характеристику видео данных. Модуль кодирования видео также выполнен с возможностью кодирования копии сообщения SEI в единице доступа.
[0016] В другом примере раскрытие описывает считываемый компьютером носитель данных с хранящимися на нем инструкциями, которые при исполнении одним или более процессорами устройства для кодирования видео, побуждают один или более процессоров кодировать сообщение информации дополнительного улучшения (SEI) в единице доступа. В данном примере, единица доступа включает в себя видео данные для воссоздания по меньшей мере одного изображения, а сообщение SEI задает характеристику видео данных. Инструкции также побуждают один или более процессоров кодировать копию сообщения SEI в единице доступа.
[0017] В другом примере раскрытие описывает устройство для кодирования видео данных, при этом устройство содержит средство для кодирования сообщения информации дополнительного улучшения (SEI) в единице доступа. В данном примере, единица доступа включает в себя видео данные для воссоздания по меньшей мере одного изображения, а сообщение SEI задает характеристику видео данных. Устройство также включает в себя средство для кодирования копии сообщения SEI в единице доступа.
[0018] Подробности одного или более примеров излагаются в сопроводительных чертежах и описании ниже. Прочие признаки, цели, и преимущества станут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0019] Фиг. 1 является структурной схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать описываемые в данном раскрытии методики.
[0020] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примеры единиц доступа, которые включают в себя идентификаторы единиц декодирования в соответствии с описываемыми в данном раскрытии методиками.
[0021] Фиг. 3 является структурной схемой, иллюстрирующей примерный кодер видео, который может реализовать описываемые в данном раскрытии методики.
[0022] Фиг. 4 является структурной схемой, иллюстрирующей примерный декодер видео, который может реализовать описываемые в данном раскрытии методики.
[0023] Фиг. 5 является блок-схемой, иллюстрирующей пример кодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами.
[0024] Фиг. 6 является блок-схемой, иллюстрирующей пример декодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами.
[0025] Фиг. 7 является блок-схемой, иллюстрирующей пример кодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами.
ПОДРОБНОЕ ОПИСАНИЕ
[0026] Данное раскрытие описывает различные способы для устойчивой к ошибкам сигнализации и ассоциации единицы декодирования при кодировании видео. При многовидовом (multi-view) кодировании или масштабируемом кодировании видео, несколько изображений или уровней может быть закодировано для заданного экземпляра времени. Изображения одного и того же экземпляра времени кодируются в одной единице доступа (AU). Например, декодирование единицы доступа имеет результатом одно изображение для случая, когда многовидовое кодирование не используется, или множество изображений одного и того же экземпляра времени применительно к многовидовому кодированию.
[0027] Единица декодирования (DU), в общем, относится к подмножеству единицы доступа или целой единице доступа. Например, если разрешена работа на уровне суб-изображения, тогда единица декодирования является подмножеством единицы доступа, и единица доступа включает в себя множество единиц декодирования. Так как единица доступа включает в себя видео данные для одного или более изображений, работа на уровне единицы декодирования может быть рассмотрена в качестве работы на уровне суб-изображения. Если работа на уровне суб-изображения не разрешена, тогда единица декодирования является всей единицей доступа.
[0028] Единица декодирования включает в себя одну или более единицы уровня сетевой абстракции (NAL). Например, единица кодирования включает в себя одну или более единицы NAL уровня кодирования видео (VCL) и ассоциированные единицы NAL не-VCL. Одним примером единицы NAL является слайс изображения (например, данные, инкапсулированные в единице NAL, включают в себя видео данные, требуемые для декодирования слайса изображения). Другим примером единицы NAL является набор параметров. Например, единица NAL может включать в себя видео данные набора параметров изображения, набора параметров последовательности, и другие примеры набора параметров. В качестве еще одного другого примера, единица NAL может включать в себя дополнительную информацию, такую как сообщения информации дополнительного улучшения (SEI), используемые в целях определения промежутков времени обработки и удаления единиц декодирования из буфера (например, буфера кодированных изображений).
[0029] В некоторых примерах, описываемых в данном раскрытии, кодер видео генерирует для вывода и выводит (например, сигнализирует), в кодированном битовом потоке, идентификатор для каждой единицы декодирования в единице доступа. Каждый идентификатор (именуемый идентификаторами DU) уникально идентифицирует единицу декодирования в единице доступа. Декодер видео принимает, из кодированного битового потока, идентификаторы для единиц декодирования в единице доступа. Декодер видео определяет то, какие единицы NAL ассоциированы с какими единицами декодирования на основании идентификаторов единицы декодирования.
[0030] Таким образом, методики, описываемые в данном раскрытии могут гарантировать то, что единицы NAL ассоциированы с корректными единицами декодирования. Например, для кодера видео существует возможность просигнализировать информацию (например, вывести информацию), которая указывает количество единиц NAL, которое включает в себя каждая единица декодирования. Вместо использования идентификаторов единицы декодирования, декодер видео, может определять ассоциацию единиц NAL с единицами декодирования на основании очередности, в которой декодер видео принимает единицы NAL, и сигнализируемой информации, указывающей количество единиц NAL, которое включает в себя каждая единица декодирования.
[0031] Тем не менее, в данном случае, гарантия того, что единицы NAL ассоциированы с правильными единицами декодирования, не является устойчивой к ошибкам. Например, если единица NAL потеряна во время передачи (например, от кодера видео к декодеру видео, от кодера видео к промежуточному устройству хранения, или от промежуточного устройства хранения к декодеру видео), декодер видео может не иметь возможности определения того, какие единицы NAL ассоциированы с какими единицами декодирования.
[0032] В качестве другого примера возможных проблем с гарантией того, что единицы NAL ассоциированы с корректными единицами декодирования, является то, что у декодера видео может быть возможность сигнализации единиц NAL, ассоциированных с единицей декодирования, между двумя типами сообщений. Например, кодер видео может сигнализировать первый экземпляр конкретного типа сообщения информации дополнительного улучшения (SEI), за которым следует одна или более единицы NAL для первой единицы декодирования, за которыми следуют второй экземпляр конкретного типа сообщения SEI, за которым следует одна или более единицы NAL второй единицы декодирования, и так далее. Декодер видео может определять, что каждая единица NAL, принятая после первого экземпляра данного типа сообщения SEI и перед вторым экземпляром данного типа сообщения SEI, ассоциируется с первой единицей декодирования, каждая единица NAL, принятая после второго экземпляра данного типа сообщения SEI и перед третьим экземпляром данного типа сообщения SEI, ассоциируется со второй единицей декодирования, и так далее.
[0033] Данный тип сообщения SEI может включать в себя дополнительную информацию, имеющую отношение к правильному тактированию кодирования и декодирования. Тем не менее, так как позиции данного типа сообщений SEI, указывают на то, какие единицы NAL ассоциируются с какими единицами декодирования, кодер видео может не иметь возможности включения нескольких копий данного типа сообщения SEI в единицу декодирования. Вследствие этого, даже если одно из этих сообщений SEI теряется при передаче, декодер видео может не иметь возможности определения того, какие единицы NAL ассоциированы с какой единицей декодирования, и может не иметь возможности определения дополнительной информации, переносимой потерянным сообщением SEI.
[0034] В методиках, описываемых в данном раскрытии, кодер видео может генерировать для вывода и выводить информацию (например, с помощью идентификаторов единицы декодирования в сообщении SEI или заголовке слайса), которая указывает на то, какие единицы NAL ассоциированы с какими единицами декодирования. Таким образом, даже если единица NAL потеряна при передаче, декодер видео может иметь возможность определения того, какие единицы NAL ассоциированы с какими единицами декодирования. Также, так как декодеру видео может не требоваться полагаться на позиции сообщений SEI для определения того, какие единицы NAL ассоциированы с какими единицами декодирования, кодер видео может генерировать для вывода и выводить одну или более копии сообщения SEI в единице декодирования. Такие методики могут обеспечивать сравнительно более устойчивый к ошибкам способ, посредством которого декодер видео определяет то, какие единицы NAL ассоциированы с какими единицами декодирования, в сравнении с некоторыми другими методиками, описанными выше.
[0035] Более того, в некоторых из других описанных выше методиках, запрещен повтор сообщений SEI определенного типа (проблема, которую описываемые в данном раскрытии методики могут решить). В некоторых случаях, в этих других методиках, запрещен повтор не только определенных типов сообщения SEI, а, в общем, ограничивается повтор сообщений SEI в единице доступа после первой единицы NAL VCL в единице доступа и перед последней единицей NAL в единице доступа.
[0036] Например, в некоторых этих других методиках, декодер видео будет определять начало единицы доступа на основании местоположения сообщений SEI. Например, сообщения SEI будут располагаться в начале единицы доступа, и после определения того, что декодер видео обрабатывает сообщение SEI, декодер видео будет определять, что декодер видео обрабатывает новую единицу доступа. Соответственно, существует ограничение включения нескольких копий сообщений SEI в одну и ту же единицу доступа.
[0037] В подверженной ошибкам среде, может быть выгодно включать копии сообщений SEI так, что если сообщение SEI теряется, доступны другие копии сообщения SEI. В некоторых примерах, методики обеспечивают возможность повтора различных типов сообщений SEI в единице доступа, что в дальнейшем обеспечивает устойчивость к ошибкам. В качестве одного примера, методики могут указывать следующее для всех сообщений SEI: (1) объем применения, к которому применяется информация, переносимая в сообщение SEI; (2) где может присутствовать сообщение SEI; и (3) ограничение в отношении содержимого нескольких экземпляров конкретного типа сообщения SEI.
[0038] Например, единица доступа может быть пакетирована во множество пакетов (например, пакет транспортного протокола реального времени (RTP)). Каждый пакет, как правило, включает в себя одну или более единицы NAL, но в некоторых случаях, пакет может включать в себя подмножество единицы NAL. В подверженной ошибкам среде, один или более пакеты могут быть потеряны, и, если потерянные пакеты включают в себя сообщение SEI, сообщение SEI может быть потеряно. В методиках, описываемых в данном раскрытии, кодер видео может генерировать для вывода и выводить (например, сигнализировать) одну или более копии сообщения SEI в единице доступа. Таким образом, даже если пакет, который включает в себя, одно из сообщений SEI, теряется, сообщение SEI может быть все еще доступным как копия в пакете, который не потерян.
[0039] В качестве другого примера, кодер видео может кодировать битовый поток видео с несколькими уровнями, как при многослойном расширении стандарта высокоэффективного кодирования видео (HEVC). Несколько уровней включают в себя базовый уровень и один или более не базовые уровни. Не базовый уровень может быть уровнем пространственного или качественного улучшения, текстурой другого вида, глубиной другого вида, и другими такими примерами. Кодер видео может транспортировать разные уровни в разных каналах (например, используя многосеансовую передачу (MST), подобным образом сформулированную в документе IETF RFC 6190 (публично доступен по адресу http://tools.ietf.org/rfc/rfc6190.txt). В методиках, описываемых в данном раскрытии, кодер видео может включать единицу NAL SEI в две единицы NAL VCL в единице доступа, где единица NAL SEI включает в себя сообщения SEI, и после первой единицы NAL VCL единицы доступа. Другими словами, методики, описываемые в данном раскрытии для включения сообщения SEI после первой единицы NAL VCL в единице доступа также применимы к примерам многосеансовой передачи.
[0040] В методиках, описываемых в данном раскрытии, декодер видео не обязательно должен полагаться на местоположение сообщений SEI для определения того, что декодер видео обрабатывает новую единицу доступа. Например, декодер видео может полагаться на некоторую другую информацию заголовка для определения того, что обрабатывается новая единица доступа. Соответственно, в методиках, описываемых в данном раскрытии, кодер видео может генерировать для вывода и выводить сообщение SEI в единице доступа и одну или более копии сообщения SEI в единице доступа, и декодер видео может принимать сообщение SEI и одну или более копии сообщения SEI. Так как декодеру видео не требуется полагаться на сообщение SEI для определения того, когда обрабатывается новая единица доступа, декодер видео может быть выполнен с возможностью обработки нескольких копий сообщений SEI в одной и той же единице доступа без определения того, что обрабатывается новая, другая единица доступа.
[0041] Фиг. 1, является структурной схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать описываемые в данном раскрытии методики. Как показано на Фиг. 1, система 10 включает в себя устройство-источник 12, которое генерирует закодированные видео данные, которые должны быть декодированы позже устройством-получателем 14. Устройство-источник 12 и устройство-получатель 14 могут быть выполнены в виде любого из широкого диапазона устройств, включая настольные компьютеры, компьютеры класса ноутбук (т.е., лэптоп), планшетные компьютеры, абонентские телевизионные приставки, телефонные трубки, такие как так называемые «интеллектуальные» телефоны, так называемые «интеллектуальные» планшеты, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео, или подобные. В некоторых случаях, устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи.
[0042] Устройство-получатель 14 может принимать закодированные видео данные, которые должны быть декодированы, через линию 16 связи. Линия 16 связи содержит любой тип носителя информации или устройство, выполненное с возможностью перемещения закодированных видео данных от устройства-источника 12 к устройству-получателю 14. В одном примере, линия 16 связи может содержать средство связи, чтобы позволить устройству-источнику 12 передавать закодированные видео данные непосредственно устройству-получателю 14 в режиме реального времени. Закодированные видео данные могут быть подвергнуты модуляции в соответствии со стандартом связи, таким как протокол беспроводной связи, и переданы устройству-получателю 14. Средство связи может быть выполнено в виде любого беспроводного или проводного средства связи, такого как радиочастотный (RF) спектр или одна или более физические линии передачи. Средство связи может формировать часть основанной на пакетах сети, такой как локальная сеть, широкомасштабная сеть, или глобальная сеть, такая как Интернет. Средство связи может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезно для обеспечения связи от устройства-источника 12 к устройству-получателю 14.
[0043] В качестве альтернативы, закодированные данные могут быть выведены через интерфейс 22 вывода на устройство 32 хранения. Аналогичным образом, к закодированным данным на устройстве 32 хранения может быть получен доступ посредством интерфейса ввода. Устройство 32 хранения может включать в себя любое из многообразия распределенных или доступ, к которым получают локально, носителей информации для хранения данных, таких как жесткий диск, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любых других подходящих цифровых носителей данных для хранения закодированных видео данных. В дополнительном примере, устройство 32 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может удерживать закодированное видео, сгенерированное устройством-источником 12. Устройство-получатель 14 может получать доступ к сохраненным видео данным от устройства 32 хранения через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, выполненным с возможностью хранения закодированных видео данных и передачи закодированных видео данных устройству-получателю 14. Примерные файловые серверы включают в себя web-сервер (например, применительно к web-сайту), FTP сервер, устройство подключаемого к сети хранилища (NAS), или локальный дисковый накопитель. Устройство-получатель 14 может получать доступ к закодированным видео данным посредством любого стандартного соединения передачи данных, включая Интернет соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или сочетание обоих, которое применимо для получения доступа к закодированным видео данным на файловом сервере. Передача закодированных видео данных от устройства 32 хранения может быть потоковой передачей, передачей загрузки, или сочетанием обоих.
[0044] Методики данного раскрытия не обязательно ограничиваются беспроводными применениями или установками. Методики могут быть применены к кодированию видео при поддержке любого из многообразия мультимедийных применений, таких как эфирные телевизионные вещательные передачи, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе информации для хранения данных, декодирование цифрового видео, хранящегося на носителе информации для хранения данных, или другие применения. В некоторых примерах, система 10 может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видео для поддержки применений, таких как потоковая передача видео, воспроизведение видео, широковещательная передача видео, и/или видео телефония.
[0045] В примере на Фиг. 1, устройство-источник 12 включает в себя источник 18 видео, кодер 20 видео и интерфейс 22 вывода. В некоторых случаях, интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12, источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видео камеру, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от поставщика видео контента, и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве исходного видео, или сочетание таких источников. В качестве одного примера, если источником 18 видео является видео камера, устройство-источник 12 и устройство-получатель 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, методики, описываемые в данном раскрытии, могут быть применены к кодированию видео в целом, и могут быть применены к проводным и/или беспроводным применениям.
[0046] Захваченное, предварительно захваченное, или сгенерированное компьютером видео может быть закодировано посредством кодера 20 видео. Закодированные видео данные могут быть переданы непосредственно устройству-получателю 14 через интерфейс 22 вывода устройства-источника 12. Закодированные видео данные также (или альтернативно) могут быть сохранены на устройстве 32 хранения для получения доступа к ним позже со стороны устройства-получателя 14 или других устройств, для декодирования и/или воспроизведения.
[0047] Устройство-получатель 14 включает в себя интерфейс 28 ввода, декодер 30 видео, и устройство 31 отображения. В некоторых случаях, интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода устройства-получателя 14 принимает закодированные видео данные через линию 16 связи. Закодированные видео данные, передаваемые через линию 16 связи, или предоставляемые на устройстве 32 хранения, могут включать в себя разнообразные элементы синтаксиса, сгенерированные кодером 20 видео для использования декодером видео, таким как декодер 30 видео, при декодировании видео данных. Такие элементы синтаксиса могут быть включены с закодированными видео данными, передаваемыми по средству связи, хранящимися на носителе данных, или хранящимися на файловом сервере.
[0048] Устройство 31 отображения может быть интегрировано с, или быть внешним по отношению к, устройством-получателем 14. В некоторых примерах, устройство-получатель 14 может включать в себя интегрированное устройство отображения и также быть выполнено для взаимодействия с внешним устройством отображения. В других примерах, устройство-получатель 14 может быть устройством отображения. В целом, устройство 31 отображения отображает декодированные видео данные пользователю, и может быть выполнено в виде любого из многообразия устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED), или другого типа устройства отображения.
[0049] Кодер 20 видео и декодер 30 видео могут быть сформированы в качестве индивидуальных микропроцессоров или интегральных микросхем (IC) или могут быть частью более больших микропроцессоров или IC. В некоторых примерах, кодер 20 видео и декодер 30 видео могут быть частью устройства беспроводной связи.
[0050] Кодер 20 видео и декодер 30 видео могут работать в соответствии со стандартом сжатия видео. Примеры стандартов кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Визуальный, ITU-T H.262 или ISO/IEC MPEG-2 Визуальный, ITU-T H.263, ISO/IEC MPEG-4 Визуальный и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC) включая его расширения применительно к масштабируемому кодированию видео (SVC) и многовидовому кодированию видео (MVC).
[0051] В дополнение, существует новый стандарт кодирования видео в соответствии с которым могут работать кодер 20 видео и декодер 30 видео, а именно стандарт Высокоэффективного Кодирования Видео (HEVC), разрабатываемый Объединенной Командой по Кодированию Видео (JCT-VC) из ITU-T Группы Экспертов по Кодированию Видео (VCEG) и ISO/IEC Экспертной Группы по Кинематографии (MPEG). Кодер 20 видео и декодер 30 видео могут соответствовать Тестовой Модели HEVC (HM). Последний проект стандарта HEVC, именуемый «Рабочий Проект HEVC 8» или «WD8», описывается в документе JCTVC-H1003, под авторством Бросса и др. «High efficiency video coding (HEVC) text specification draft 8,» Joint Collaborative Team on Video Coding (JCT-VC) из ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10-ое Заседание: Стокгольм, Швеция, 11-20 июля 2012 г., который, по состоянию на 02 апреля 2013г., может быть загружен по адресу http://phenix.intevry.fr/jct/doc_end_user/documents/10_Stockholm/wgl1/JCTVC-J1003-v8.zip, и который во всей своей полноте включен в настоящее описание посредством ссылки. Самый последний рабочий проект HEVC, и именуемый «Рабочий Проект HEVC 9» или «WD9» далее, доступен, по состоянию на 02 апреля 2013 г., по адресу http://phenix.intevry.fr/jct/doc_end_user/documents/1 l_Shanghai/wgll/JCTVC-K1003-vl0.zip.
[0052] В качестве альтернативы, кодер 20 видео и декодер 30 видео могут работать в соответствии с другими собственными или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно именуемый как MPEG-4, Часть 10, Усовершенствованное Кодирование Видео (AVC), или расширения таких стандартов. Тем не менее, методики данного раскрытия не ограничиваются каким-либо конкретным стандартом кодирования. Прочие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263, как, впрочем, и открытые форматы, такие как VP8.
[0053] Тем не менее, методики данного раскрытия не ограничиваются каким-либо конкретным стандартом кодирования. Например, кодер 20 видео и декодер 30 видео не обязательно должны соответствовать какому-либо конкретному стандарту кодирования видео. Более того, даже если методики, описываемые в данном раскрытии, не обязательно соответствуют конкретному стандарту, методики, описываемые в данном раскрытии, могут в дальнейшем оказывать влияние на эффективность кодирования применительно к различным стандартам. Также, методики, описываемые в данном раскрытии, могут быть частью будущих стандартов. Для простоты понимания, методики описываются в отношении разрабатываемого стандарта HEVC, однако методики не ограничиваются стандартом HEVC, и могут быть расширены на другие стандарты кодирования видео или методики кодирования видео, которые не формулируются конкретным стандартом.
[0054] Несмотря на то, что не показано на Фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео каждый может быть интегрирован с кодером и декодером аудио, и может включать в себя соответствующие модули MUX-DEMUX, или другое аппаратное и программное обеспечение, для обработки кодирования как аудио, так и видео в общий поток данных или отдельные потоки данных. Если применимо, в некоторых примерах, модуль MUX-DEMUX может соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, такому как протокол пользовательских дейтаграмм (UDP).
[0055] Кодер 20 видео и декодер 30 видео каждый может быть реализован в качестве любой из многообразия подходящей схемы кодера, такой как один или более микропроцессоры, цифровые сигнальные процессоры (DSP), проблемно-ориентированные интегральные микросхемы (ASIC), программируемые вентильные матрицы (FPGA), дискретная логика, индивидуальная или часть интегральной микросхемы (IC), программное обеспечение, аппаратное обеспечение, встроенное программное обеспечение или любое их сочетание. Когда методики частично реализуются в программном обеспечении, устройство может хранить инструкции для программного обеспечения на походящем, не временном считываемом компьютером носителе данных и исполнять инструкции в аппаратном обеспечении, используя один или более процессоры для выполнения методик данного раскрытия. Другими словами, при реализации частично в программном обеспечении, программное обеспечение исполняется на лежащих в основе компонентах аппаратного обеспечения, что побуждает компоненты аппаратного обеспечения реализовать определенные функции. Каждый из кодера 20 видео и декодера 30 видео могут быть включены в один или более кодеры или декодеры, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве.
[0056] Например, кодер 20 видео и декодер 30 видео могут быть включены в беспроводное устройство, такое как устройство-источник 12 и устройство-получатель 14, соответственно. В качестве другого примера, устройство может включать в себя микропроцессор или интегральную микросхему. В некоторых примерах, устройство, такое как микропроцессор или интегральная микросхема, может включать в себя декодер 30 видео, а другое устройство может включать в себя кодер 20 видео.
[0057] JCT-VC продолжает работать над разработкой стандарта HEVC. Усилия по стандартизации HEVC основаны на развитие модели устройства кодирования видео, именуемой Тестовой Моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео по отношению к существующим устройствам в соответствии с, например, ITU-T H.264/AVC.
[0058] В общем, рабочая модель HM описывает то, что видео кадр или изображение может быть разделен на последовательность древовидных блоков или наибольшие единицы кодирования (LCU), которые включают в себя элементы дискретизации как яркости, так и цветности. Древовидный блок может служить для некоторых целей аналогичных тем, которым служит макроблок в стандарте H.264, несмотря на то, что древовидный блок обладает многими отличиями по отношению к макроблоку. Слайс включает в себя некоторое количество последовательных древовидных блоков в очередности кодирования. Видео кадр или изображение могут быть разбиты на один или более слайсы. Каждый древовидный блок может быть расщеплен на единицы кодирования (CU) в соответствии с квадро-деревом. Например, древовидный блок, как корневой узел квадро-дерева, может быть расщеплен на четыре узла-потомка, и каждый узел-потомок в свою очередь может быть родительским узлом и быть расщеплен на другие четыре узла-потомка. Итоговый, не расщепленный узел-потомок, в качестве концевого узла квадро-дерева, содержит узел кодирования, т.е., кодированный видео блок. Данные синтаксиса, ассоциированные с кодированным битовым потоком, могут формулировать максимальное количество раз, которое может быть расщеплен древовидный блок, и также могут формулировать минимальный размер узлов кодирования.
[0059] CU включает в себя узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может находится в диапазоне от 8х8 пикселей вплоть до размера древовидного блока максимум с 64х64 пикселями или больше. Каждая CU может содержать одну или более PU и одну или более TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться в зависимости от того, кодируется ли CU в режиме пропуска или непосредственном режиме, кодируется ли в режиме внутреннего предсказания, или кодируется в режиме внешнего предсказания. PU могут быть разбиты таким образом, что быть не квадратными по форме. Данные синтаксиса, ассоциированные с CU, также могут описывать, например, разбиение CU на одну или более TU в соответствии с квадро-деревом. TU может быть квадратной или не квадратной по форме.
[0060] Стандарт HEVC обеспечивает преобразования в соответствии с TU, которые могут быть разными для разных CU. Размер TU, как правило, устанавливается на основании размера PU в заданной CU, сформулированной для разбитой LCU, несмотря на то, что это не всегда может иметь место. Как правило, TU имеют точно такой же размер или меньше чем PU. В некоторых примерах, остаточные элементы дискретизации, соответствующие CU, могут быть подразделены на меньшие единицы, используя структуру квадро-дерева, известную как «остаточное квадро-дерево» (RQT). Концевые узлы RQT могут именоваться единицами преобразования (TU). Значения пиксельной разности, ассоциированные с TU, могут быть преобразованы для создания коэффициентов преобразования, которые могут быть квантованы.
[0061] В общем, PU включает в себя данные, которые относятся к процессу предсказания. Например, когда PU является закодированной во внутреннем режиме (т.е. закодированной с внутренним предсказанием), PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU является закодированной во внешнем режиме (т.е., закодированной с внешним предсказанием), PU может включать в себя данные, формулирующие вектор движения для PU. Данные, формулирующие вектор движения для PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четвертую пикселя или точность в одну восьмую пикселя), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, RefPicList0 или RefPicList1) для вектора движения.
[0062] В общем, TU используется для процессов преобразования и квантования. Заданная CU с одной или более PU также может включать в себя одну или более единицы преобразования (TU). Вслед за предсказанием, кодер 20 видео может вычислять остаточные значения, соответствующие PU. Остаточные значения содержат значения пиксельной разности, которые могут быть преобразованы в коэффициенты преобразования, квантованы, и просканированы при помощи TU для создания преобразованных в последовательную форму коэффициентов преобразования для энтропийного кодирования. Данное раскрытие, как правило, использует понятие «видео блок» для обращения к узлу кодирования CU. В некоторых конкретных случаях, данное раскрытие также может использовать понятие «видео блок» для обращения к древовидному блоку, т.е., LCU или CU, который включает в себя узел кодирования и PU и TU.
[0063] Видео последовательность, как правило, включает в себя ряд видео кадров или изображений. Группа изображений (GOP), как правило, содержит ряд из одной или более видео изображений. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одного или более изображений, или где-либо еще, которые описывают количество изображений, включенных в GOP. Каждый слайс изображения может включать в себя данные синтаксиса слайса, которые описывают режим кодирования для соответствующего слайса. Кодер 20 видео, как правило, оперирует над видео блоками в индивидуальных видео слайсах для того, чтобы закодировать видео данные. Видео блок может соответствовать узлу кодирования в CU. Видео блоки могут иметь фиксированные или меняющиеся размеры, и могут отличаться по размеру в соответствии с указанным стандартом кодирования.
[0064] В качестве примера, HM поддерживает предсказание в различных размерах PU. Предполагая, что размер конкретной CU составляет 2N×2N, HM поддерживает внутренне предсказание в размерах PU равных 2N×2N или N×N, и внешнее предсказание в симметричных размерах PU равных 2N×2N, 2N×N, N×2N или N×N. HM также поддерживает ассиметричное разбиение для внешнего предсказания в размерах PU равных 2N×nU, 2N×nD, nL×2N, и nR×2N. При ассиметричном разбиении, одно направление CU не разбивается, тогда как другое направление разбивается на 25% и 75%. Участок CU соответствующий 25% участку указывается посредством «n», за которым следует указание «Верх», «Низ», «Лево» или «Право». Таким образом, например, «2N×nU» относится к 2N×2N CU, которая разбивается горизонтально на 2N×0.5N PU сверху и 2N×1.5N PU снизу.
[0065] В данном раскрытии, обозначение «N×N» и «N на N» может быть взаимозаменяемо использовано, чтобы относится к размерностям в пикселях видео блока по вертикальной и горизонтальной размерностям, например, 16×16 пикселей или 16 на 16 пикселей. В общем, 16×16 блок будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Подобно, N×N блок, в общем, имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет собой не отрицательное целочисленное значение. Пиксели в блоке могут быть скомпонованы в строках и столбцах. Более того, блоки не обязательно имеют количество пикселей в горизонтальном направлении точно такое же как в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где M не обязательно равно N.
[0066] Вслед за кодированием с внутренним предсказанием или внешним предсказанием при помощи PU CU, кодер 20 видео может вычислять остаточные данные для TU CU. PU могут содержать данные пикселя в пространственной области (также именуемой пиксельной областью), а TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет преобразования, или концептуально подобного преобразования к остаточным видео данным. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированного изображения и значениями предсказания, соответствующими PU. Кодер 20 видео может формировать TU, включающие в себя остаточные данные для CU, и затем преобразовывать TU для создания коэффициентов преобразования для CU.
[0067] Вслед за любыми преобразованиями для создания коэффициентов преобразования, кодер 20 видео может выполнять квантование коэффициентов преобразования. Квантование, в общем, относится к процессу, при котором коэффициенты преобразования квантуются для возможного сокращения объема данных, используемых для представления коэффициентов, обеспечивая дополнительное сжатие. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, n-битное значение может быть округлено вниз до m-битного значения во время квантования, где n больше m.
[0068] В некоторых примерах, кодер 20 видео может использовать предварительно сформулированную очередность сканирования для сканирования квантованных коэффициентов преобразования для создания преобразованного в последовательную форму вектора, который может быть энтропийно закодирован. В других примерах, кодер 20 видео может выполнять адаптивное сканирование или может выбирать сканирование из множества возможных сканирований. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 20 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-зависимым адаптивным кодированием с переменной длиной (CAVLC), контекстно-зависимым адаптивным бинарным арифметическим кодированием (CABAC), основанным на синтаксисе контекстно-зависимым адаптивным бинарным арифметическим кодированием (SBAC), Энтропийным кодированием с Разбиением на Интервал Вероятности (PIPE) или другой методологией энтропийного кодирования. Кодер 20 видео также может энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными, для использования декодером 30 видео при декодировании видео данных.
[0069] Для выполнения CABAC, кодер 20 видео может присваивать контекст в рамках модели контекста символу, который будет передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Для выполнения CAVLC, кодер 20 видео может выбирать код переменной длины для символа, который будет передан. Кодовые слова в VCL могут быть сконструированы таким образом, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигать экономии битов в сравнении, например, с использованием кодовых слов равной длины для каждого символа, который будет передан. Определение вероятности может быть основано на контексте, присвоенном символу.
[0070] Кодер 20 видео генерирует видео данные, которые формулируют способ, посредством которого изображения должны быть воссозданы декодером 30 видео, кодирует видео данные (например, генерирует вывод), и выводит (например, сигнализирует) видео данные на декодер 30 видео в кодированном битовом потоке. Декодер 30 видео принимает закодированные видео данные из кодированного битового потока, декодирует видео данные, и обрабатывает видео данные для воссоздания изображений. В общем, декодер 30 видео реализует противоположность методикам кодера 20 видео, реализованным для кодирования и генерирования видео данных.
[0071] Например, декодер 30 видео декодирует видео данные, используя методику, противоположную способу, посредством которого кодер 20 видео кодирует видео данные. Также, декодер 30 видео декодирует с внутренним предсказанием или декодирует с внешним предсказанием изображения для воссоздания изображений. Например, декодер 30 видео обрабатывает видео данные для определения ранее декодированного изображения, которое используется для декодирования с внешним предсказанием, и для определения остатка между ранее декодированным изображением и текущим изображением применительно к декодированию с внешним предсказанием. Декодер 30 видео складывает остаток с ранее декодированным изображением для воссоздания текущего изображения. Аналогичным образом, декодер 30 видео обрабатывает видео данные для определения ранее декодированного блока в текущем изображении, и для определения остатка между ранее декодированным блоком в текущем изображении и текущим блоком в текущем изображении применительно к декодированию с внутренним предсказанием. Декодер 30 видео складывает остаток с ранее декодированным блоком для воссоздания текущего блока текущего изображения.
[0072] Таким образом, кодер 20 видео выводит видео данные, которые декодер 30 видео использует для воссоздания изображений. В некоторых примерах, кодер 20 видео выводит видео данные в единицы доступа. Единица доступа является концептуальной единицей, которая включает в себя видео данные для одного или более изображений в одном и том же экземпляре времени. Например, при масштабируемом кодировании видео, кодер 20 видео генерирует видео данные на нескольких уровнях для изображения. В данном примере, единица доступа для изображения включает в себя видео данные для всех из нескольких уровней.
[0073] В качестве другого примера, при многовидовом кодировании видео, кодер 20 видео генерирует видео данные для нескольких видов, где каждый вид включает в себя несколько изображений. При многовидовом кодировании видео, одно изображение в каждом виде отображается в один и тот же экземпляр времени. Например, первое изображение в первом виде отображается в тот же самый экземпляр времени, что и первое изображение во втором виде, первое изображение в третьем виде, и т.д. В данном примере, одна единица доступа включает в себя видео данные для всех изображений, которые отображаются в один и тот же экземпляр времени. В примерах, в которых не используются масштабируемое кодирование видео или многовидовое кодирование видео, одна единица доступа включает в себя видео данные для одного изображения.
[0074] Соответственно, в общем, декодирование и обработка одной единицы доступа декодером 30 видео имеет результатом одно или более изображений. Если декодирование и обработка одной единицы доступа декодером видео имеет результатом одно изображение, тогда видео данные единицы доступа могут включать в себя информацию для всех уровней изображения, если используется масштабируемое кодирование видео, или включать в себя информацию только для одного уровня, если масштабируемое кодирование видео не используется. Если декодирование и обработка одной единицы доступа декодером 30 видео имеет результатом несколько изображений, видео данные единицы доступа могут включать в себя информацию для всех изображений в один и тот же экземпляр времени применительно к многовидовому кодированию видео.
[0075] Единица доступа включает в себя одну или более единицы декодирования. Например, как описано выше, единица доступа может включать в себя видео данные применительно ко всему изображению. Если не разрешена работа на уровне суб-изображения, тогда единица доступа включает в себя только одну единицу декодирования. Если разрешена работа на уровне суб-изображения, тогда единица доступа включает в себя одну или более единицы декодирования.
[0076] Например, декодер 30 видео включает в себя буфер кодированных изображений (CPB) и буфер декодированных изображений (DPB). CPB хранит видео данные, принятые из кодированного битового потока, а DPB хранит воссозданные изображения. Как описано более подробно, кодер 20 видео генерирует и выводит информацию, которая описывает поведение CPB, такую как информация, которая указывает на то, когда единицы декодирования или единицы доступа должны быть удалены из CPB. В некоторых примерах, кодер 20 видео кодирует и выводит элемент синтаксиса (например, флаг, именуемый SubPicCpbFlag), который указывает на то, разрешена ли работа на уровне суб-изображения применительно к единицам доступа (например, для каждой из единиц декодирования в единице доступа).
[0077] Если декодер 30 видео определяет, что SubPicCpbFlag равен 0, тогда декодер 30 видео может определять, что работа единицы доступа не разрешена на уровне суб-изображения, и также может определять, что единица доступа включает в себя одну единицу декодирования. Другими словами, когда SubPicCpbFlag равен 0, единица декодирования и единица доступа одинаковые. Если декодер 30 видео определяет, что SubPicCpbFlag равен 1, тогда декодер 30 видео может определять, что работа единицы доступа разрешена на уровне суб-изображения, и также может определять, что единица доступа включает в себя одну или более единицы декодирования.
[0078] Единица декодирования включает в себя одну или более единицы уровня сетевой абстракции (NAL). Единица NAL является структурой синтаксиса, которая содержит указание типа видео данных для следования и байты, содержащие эти видео данные. Примеры единицы NAL включают в себя единицу NAL уровня кодирования видео (VCL) и единицу NAL не-VCL. В качестве примера, единицы NAL VCL могут включать в себя видео данные для слайсов в изображении (например, информацию, такую как индексы списков опорных изображений, векторы движения, режимы внутреннего предсказания, и т.д., требуемую для предсказания слайсов) или единицы NAL конкретного типа единицы NAL. В качестве примера, единицы NAL не-VCL могут включать в себя видео данные, такие как информацию набора параметров (например, набор параметров изображения, набор параметров последовательности, и т.д.) или дополнительную информацию для содействия кодированию видео или декодированию видео.
[0079] В данном раскрытии, единица декодирования, включающая в себя одну или более единицы NAL, может считаться как если бы одна или более единицы NAL были ассоциированы с или присвоены единице декодирования. Другими словами, одна или более единицы NAL, ассоциированные с или присвоенные единице декодирования, могут считаться как то же самое, что и единица декодирования, включающая в себя эти одну и более единицы NAL.
[0080] Соответственно, методики, описываемые в данном раскрытии, могут использовать следующие понятия с нижеследующими формулировками.
[0081] единица декодирования: Единица доступа, когда SubPicCpbFlag равен 0 или подмножество единицы доступа, когда SubPicCpbFlag равен 1, состоящая из одной или более единиц NAL VCL в единице доступа и ассоциированных единиц NAL не-VCL.
[0082] ассоциированная единица NAL не-VCL: Ассоциированная единица NAL не-VCL единицы NAL VCL является одной из единиц NAL не-VCL, для которой единица NAL VCL является их ассоциированной единицей NAL VCL. Другими словами, единица NAL не-VCL является ассоциированной с единицей NAL VCL, и эта единица NAL VCL может считаться ассоциированной с единицей NAL не-VCL (например, ассоциация между единицей NAL VCL и единицей NAL не-VCL работает в обоих направлениях).
[0083] ассоциированная единица NAL VCL: Самая последняя предшествующая единица NAL VCL в очередности декодирования для единиц NAL не-VCL с nal_unit_type равным UNSPEC0, EOS_NUT, EOB_NUT, FD_NUT, в диапазоне RSV_NVCL44..RSV_NVCL47, или
в диапазоне UNSPEC48..UNSPEC63, или первая последующая единица NAL VCL в очередности декодирования для единиц NAL не-VCL с nal_unit_type, равным другим значениям.
[0084] Как описано выше, в некоторых примерах, кодер 20 видео кодирует и выводит единицы NAL, которые включают в себя дополнительную информацию для содействия кодированию видео или декодированию видео. Данная дополнительная информация не является обязательной для кодера 20 видео и декодера 30 видео для соответствия требованиям стандарта кодирования видео, такого как стандарт кодирования видео HEVC. Соответственно, включение дополнительной информации является опциональным, но может быть предпочтительным, раз такая информация содействует увеличению эффективности кодирования видео и декодирования видео.
[0085] Одним примером единиц NAL, которые включают в себя такую дополнительную информацию, являются единицы NAL информации дополнительного улучшения (SEI). Использование единиц NAL SEI позволяет кодеру 20 видео включать такие метаданные в кодированный битовый поток, которые не требуются для корректного декодирования выходных изображений, но которые могут быть использованы для различных других назначений, таких как для тактирования вывода изображения, отображения, как, впрочем, и для обнаружения потери и сокрытия (например, чтобы способствовать кодированию и декодированию). Кодер 20 видео может быть выполнен с возможностью включения любого числа единиц NAL SEI в единицу доступа, и каждая единица NAL SEI может включать в себя одно или более сообщения SEI.
[0086] Стандарт HEVC включает в себя синтаксис и семантику для нескольких сообщений SEI, однако обработка сообщений SEI не указывается, так как эти сообщения SEI, в общем, не оказывают влияние на нормативный процесс декодирования. Одной из причин включения сообщений SEI в стандарт HEVC является потребность в гарантии того, чтобы различные типы декодеров видео (одним примером которого является декодер 30 видео) интерпретировали сообщения SEI идентично в разных системах, которые соответствуют стандарту HEVC. Соответственно, технические описания или системы, которые соответствуют стандарту HEVC, могут требовать того, чтобы кодеры видео (такой как кодер 20 видео) генерировали определенные сообщения SEI или могли формулировать конкретную обработку декодерами видео (таким как декодер 30 видео) конкретных типов принятых сообщений SEI.
[0087] Следующая Таблица 1 перечисляет сообщения SEI, указанные в HEVC, и кратко описывает их назначение. Следует понимать, что сообщения SEI описываются в отношении стандарта HEVC лишь в целях иллюстрации. Другие стандарты кодирования видео, включая собственные стандарты кодирования видео, могут включать в себя сообщения SEI аналогичные или отличные от тех, что описываются в Таблице 1 или иным образом описываются ниже. Кроме того, даже методики кодирования видео, основанные не на стандартах, могут основываться на сообщениях SEI подобных или отличных от тех, что описываются в Таблице 1 или иным образом описываются ниже. Описываемые в данном раскрытии методики могут быть применены во всех таких случаях.
[0088] В общем, сообщения SEI могут быть рассмотрены в качестве формулирующих характеристики видео данных. Например, сообщения SEI о периоде буферизации и тактировании изображения формулируют характеристики видео данных, такие как изначальная задержка и время вывода изображения или время удаления изображения/суб-изображения. В качестве дополнительных примеров, назначение сообщений SEI в Таблице 1 предоставляет примеры характеристик видео данных, которые формулируются соответствующими сообщениями SEI.
Обзор сообщений SEI
Не зарегистрированные данные пользователя
[0089] В некоторых примерах, кодер 20 видео может быть выполнен с возможностью ограничения того, где сообщения SEI располагаются в единице доступа. Например, из числа сообщений SEI, сообщение SEI о тактировании суб-изображения может следовать, в очередности декодирования, за первой единицей NAL VCL в единице доступа, содержащей сообщение SEI, но не может следовать, в очередности декодирования, за последней единицей NAL VCL в единице доступа. Все другие сообщения SEI могут предшествовать первой единице NAL VCL в единице доступа, когда nuh_reserved_zero_6bits равен 0 для единицы NAL SEI, содержащей сообщение SEI.
[0090] Элемент синтаксиса nuh_reserved_zero_6bits идентифицирует уровень при масштабируемом кодировании видео или вид при многовидовом кодировании видео. Например, элемент синтаксиса nuh_reserved_zero_6bits равен 0 для базового уровня при масштабируемом кодировании видео, или 0 для базового вида при многовидовом кодировании видео. Элемент синтаксиса nuh_reserved_zero_6bits для других уровней и видов является положительным целочисленным значением для идентификации уровня или вида. В случаях, где масштабируемое кодирование видео или многовидовое кодирование видео не используется, nuh_reserved_zero_6bits предполагается равным 0.
[0091] Как указано в Таблице 1, различные сообщения SEI, такие как сообщение SEI о периоде буферизации, сообщение SEI o тактировании изображения, и сообщение SEI о тактировании суб-изображения, формулируют задержки и времена удаления в гипотетическом эталонном декодере (HRD). HRD является моделью, используемой для формулировки характеристик буфера кодированных изображений (CPB) и буфера декодированных изображений (DPB). Как описано выше, CPB хранит видео данные из битового потока, такие как закодированные изображения, до декодирования, а DPB хранит декодированные видео данные, включенные в декодированные изображения.
[0092] В общем, каждый стандарт кодирования видео включает в себя техническое описание для модели буферизации видео. В AVC и HEVC, модель буферизации именуется гипотетическим эталонным декодером (HRD), который включает в себя модель буферизации как для буфера кодированных изображений (CPB), так и для буфера декодированных изображений (DPB), и поведения CPB и DPB указаны математически. HRD может непосредственно накладывать ограничения на различные тактирование, размеры буфера и скорость передачи битов, и опосредованно накладывать ограничения на характеристики и статистики битового потока. Полный набор параметров HRD включает в себя пять основных параметров: изначальная задержка удаления из CPB, размер CPB, скорость передачи битов, изначальная задержка вывода DPB, и размер DPB.
[0093] В AVC и HEVC, соответствие битового потока и соответствие декодера указываются как части технического описания HRD. Следует понимать, что несмотря на то, что HRD помечен как тип декодера, HRD, как правило, требуется на стороне кодера 20 видео, чтобы гарантировать соответствие битового потока. HRD может не требоваться на стороне декодера 30 видео. Например, кодер 20 видео может сигнализировать информацию тактирования и прочие характеристики CPB и DPB в качестве сообщений SEI, а декодер 30 видео может определять тактирование и характеристики CPB и DPB на основании сигнализируемых сообщений SEI. Например, сообщения SEI могут указывать два типа соответствия битового потока или HRD, а именно Тип I и Тип II. Также, сообщения SEI могут указывать два типа соответствия декодера 30 видео: соответствие декодера по тактированию вывода и соответствие декодера по очередности вывода.
[0094] В описываемых в данном раскрытии методиках, кодер 20 видео может указывать на то, может ли CPB декодера 30 видео работать либо на уровне единицы доступа, либо на уровне суб-единицы доступа (также именуемый уровень суб-изображения). Как описано выше, кодер 20 видео кодирует и выводит (например, сигнализирует) элемент синтаксиса (например, SubPicCpbFlag). Если значение SubPicCpbFlag равно 0, тогда работа CPB на уровне суб-изображения не разрешена. Если значение SubPicCpbFlag равно 1, тогда разрешена работа CPB на уровне суб-изображения.
[0095] Сообщения SEI могут предоставлять информацию, которая касается единиц декодирования в единице доступа. Например, сообщение SEI о тактировании изображения (сообщение SEI PT) включает в себя элементы синтаксиса num_nalus_in_du_minus1[i] . Элемент синтаксиса num_nalus_in_du_minus1[i] плюс один указывает количество единиц NAL в i-ой единице декодирования.
[0096] В некоторых случаях, декодер 30 видео может использовать информацию из элементов синтаксиса num_nalus_in_du_minus1[i] , выводимую кодером 20 видео, для определения того, какие единицы NAL ассоциированы с/присвоены каким единицам декодирования. В качестве иллюстративного примера, предположим, что элементы синтаксиса num_nalus_in_du_minus1[i] указывают на то, что первая единица декодирования, единицы доступа, ассоциирована с тремя единицами NAL, вторая единица декодирования, единицы доступа, ассоциирована с двумя единицами NAL, а третья единица декодирования, единицы доступа, ассоциирована с двумя единицами NAL.
[0097] В данном примере, декодер 30 видео определяет то, какие единицы NAL ассоциированы с какими единицами декодирования на основании очередности, в которой CPB принимает единицы NAL. Например, декодер 30 видео определяет, что первые три единицы NAL, которые принимает CPB, ассоциированы с первой единицей декодирования, следующие две единицы NAL, которые принимает CPB, ассоциированы со второй единицей декодирования, и следующие две единицы NAL, которые принимает CPB, ассоциированы с третьей единицей декодирования.
[0098] Тем не менее, определение декодером 30 видео того, какие единицы NAL ассоциированы с какими единицами декодирования на основании элементов синтаксиса, указывающих количество единиц NAL, которые ассоциированы с каждой единицей декодирования, не является устойчивым к ошибкам. В подверженной ошибкам или с потерями линии связи, одна или более из единиц NAL могут быть потеряны. Например, если линия 16 связи является подверженной ошибкам или с потерями, тогда одна или более единицы NAL могут быть потеряны. В качестве другого примера, если линия связи от интерфейса 22 вывода к устройству 32 хранения или линия связи от интерфейса 22 вывода к интерфейсу 28 ввода является подверженной ошибкам или с потерями, тогда одна или более из единиц NAL может быть потеряна.
[0099] Когда единица NAL потеряна, декодер 30 видео может не иметь возможности корректно определить то, какие единицы NAL ассоциированы с какими единицами декодирования, до тех пор, пока не известны точная позиция и количество потерь последовательных единиц NAL (что декодер 30 видео может не иметь возможности определить). Например, предположим, что в предыдущем примере, потеряна вторая единица NAL. В данном случае, декодер 30 видео определяет, что первые три принятые единицы NAL относятся к первой единице декодирования так как элемент синтаксиса num_nalus_in_du_minus1[i] указывает на то, что первая единица декодирования включает в себя три единицы NAL. Тем не менее, кодер 20 видео ассоциировал третью принятую единицу NAL, в данном случае, со второй единицей декодирования (вновь, вторая единица NAL потеряна). Вследствие этого, декодер 30 видео некорректно ассоциирует третью принятую единицу NAL с первой единицей декодирования, когда декодер 30 видео должен ассоциировать третью принятую единицу NAL со второй единицей декодирования.
[0100] В некоторых примерах, в дополнение к или вместо, элементов синтаксиса num_nalus_in_du_minus1[i] , декодер 30 видео может определять то, какие единицы NAL ассоциированы с какими единицами декодирования, на основании позиций сообщений SEI. В качестве одного примера, кодер 20 видео может использовать позиции сообщений SEI о тактировании суб-изображения (SPT), в единице доступа, для указания того, какие единицы NAL ассоциированы с какими единицами декодирования, а декодер 30 видео может использовать позиции сообщения SEI о тактировании суб-изображения SPT, в единице доступа, для определения того, какие единицы NAL ассоциированы с какими единицами декодирования.
[0101] Например, сообщение SEI SPT является частью единицы NAL SEI, которая ассоциирована с единицей декодирования. Сообщение SEI SPT может предоставлять информацию, указывающую на то, когда единица декодирования должна быть удалена из CPB. В некоторых примерах, все единицы NAL, которые следуют за единицей NAL SEI, которые не включают в себя сообщение SEI SPT до следующего сообщения SEI SPT, считаются ассоциированными с единицей декодирования. Другими словами, единицы NAL зажатые между первым сообщением SEI SPT и вторым сообщением SEI SPT, и единица NAL SEI, которая включает в себя первое сообщение SEI SPT, все считаются ассоциированными с единицей декодирования.
[0102] Таким образом, после того как CPB декодера 30 видео принимает первую единицу NAL SEI с первым сообщением SEI SPT, декодер 30 видео может определять, что первая единица NAL SEI и все единицы NAL до следующей единицы NAL SEI со следующим сообщением SEI SPT (т.е., второй единицы NAL SEI со вторым сообщением SEI SPT) ассоциированы с первой единицей декодирования. Декодер 30 видео также может определять, что вторая единица NAL SEI и все единицы NAL до следующей единицы NAL SEI со следующим сообщением SEI SPT (т.е., третьей единицы NAL SEI с третьим сообщением SEI SPT) ассоциированы со второй единицей декодирования, и т.д.
[0103] В некоторых случаях, подход, при котором полагаются на позиции сообщений SEI SPT для определения того, какие единицы NAL ассоциированы с какими единицами декодирования, также может быть не устойчивым к ошибкам. В качестве одного примера, так как позиции сообщения SEI SPT формулируют то, какие единицы NAL ассоциированы с единицей декодирования, сообщение SEI SPT не может быть повторено в единице декодирования (т.е., после единицы NAL непосредственно следующей за сообщением SEI SPT и перед последней NAL в единице декодирования, в очередности декодирования). Например, предположим, что единица декодирования включает в себя четыре единицы NAL. В данном примере, первое сообщение SEI SPT будет предшествовать четырем единицам NAL, а второе сообщение SEI SPT будет следовать за четырьмя единицами NAL. Если сообщение SEI SPT было вставлено в середине двух сообщений SEI SPT, тогда декодер 30 видео будет некорректно определять то, что первые две единицы NAL относятся к первой единице декодирования, а вторые две единицы NAL относятся к второй, другой единице декодирования.
[0104] Тем не менее, может быть полезным включать одну или более копии сообщения SEI SPT в единицу декодирования с тем, чтобы имеющие отношение видео данные могли быть восстановлены из одной из копий, если другая потеряна. Как описано выше, сообщение SEI SPT может включать в себя информацию, указывающую на то, когда единица декодирования должна быть удалена из CBP. Например, в подверженной ошибкам или с потерями среде, сообщение SEI SPT может быть потеряно, и информация в сообщении SEI SPT, которая указывает на то, когда должна быть удалена единица декодирования, может быть потеряна.
[0105] Например, как описано выше, единица доступа включает в себя видео данные для изображения, а единица декодирования является подмножеством единицы доступа (предполагая SubPicCpbFlag равный 1). Соответственно, единица декодирования может, в некоторых примерах, включать в себя видео данные для одного или более слайсов изображения (т.е., суб-участков изображения). Устройство-источник 12 может выводить один или более слайсы единицы декодирования в пакеты (например, пакеты транспортного протокола в реальном времени (RTP)). Если пакет, который включает в себя сообщение SEI SPT, потерян, декодер 30 видео может не иметь возможности точно определять информацию тактирования суб-изображения для других пакетов единицы декодирования (например, время удаления из CPB).
[0106] Если каждый пакет должен был включать сообщение SEI SPT, тогда потеря одного пакета не будет оказывать влияние на процесс декодирования, поскольку декодер 30 видео может определить информацию тактирования суб-изображения сообщения SEI SPT из копии сообщения SEI SPT в другом одном из пакетов. Тем не менее, в некоторых других методиках, сообщение SEI SPT не может быть повторено поскольку декодер 30 видео использует позицию сообщения SEI для определения того, какие единицы NAL были ассоциированы с какими единицами декодирования. Другими словами, запрет на повтор сообщения SEI SPT в единицах декодирования имеет результатом менее устойчивую к ошибкам схему для определения того, какие единицы NAL ассоциированы с какими единицами декодирования. В некоторых примерах, методики раскрытия могут снимать запреты на повтор сообщений SEI SPT в единицах декодирования.
[0107] Как более подробно описывается ниже, данное раскрытие описывает примеры методик, которые позволяют декодеру 30 видео определять то, какие единицы NAL ассоциированы с какими единицами декодирования, устойчивым к ошибкам способом. Например, кодер 20 видео может генерировать для вывода и выводить идентификатор для единиц декодирования. Декодер 30 видео может использовать данный идентификатор для определения того, какие единицы NAL ассоциированы с какими единицами декодирования, вместо того, чтобы полагаться на информацию, указывающую количество единиц NAL ассоциированных с единицей декодирования, и очередность, в которой принимаются единицы NAL, или вместо того, чтобы полагаться на позицию сообщения SEI SPT. Вывод и прием идентификатора единицы декодирования также может обеспечить несколько копий сообщения SEI SPT, что дополнительно увеличивает устойчивость к ошибкам способности декодера 30 видео по определению промежутков времени удаления единиц декодирования из CPB.
[0108] Вышеприведенное описывает пример, где не разрешен повтор сообщения SEI SPT в единице декодирования. В некоторых случаях, так же может быть запрещен повтор различных других типов сообщений SEI в единице декодирования. Например, в отношении любого сообщения SEI, которое не является сообщением SEI SPT и для которого nuh_reserved_zero_6bits для единицы NAL SEI, которая включает в себя сообщение SEI, равен 0, может быть не разрешен повтор в единице доступа, которая включает в себя сообщение SEI после первой единицы NAL VCL и перед последней единицей NAL в очередности декодирования.
[0109] Например, в некоторых других методиках, сообщения SEI используются для определения того, что декодер 30 видео обрабатывает новую единицу доступа. Другими словами, местоположение сообщения SEI в кодированном битовом потоке является указывающим на начало единицы доступа. Если сообщение SEI повторяется в единице доступа, тогда декодер 30 видео может неправильно определять то, что обрабатывается новая единица доступа. Поскольку сообщения SEI указывают новую единицу доступа, копии сообщений SEI могут быть запрещены в этих других методиках.
[0110] Аналогично вышеприведенному, если единица доступа включает в себя несколько слайсов, которые передаются в подверженной ошибкам среде, может быть полезным включать копии сообщений SEI в каждый пакет с тем, чтобы если пакет потерян, сообщения SEI могли быть восстановлены из одного или более других пакетов единицы доступа. Как описывается более подробно, методики, описываемые в данном раскрытии, могут разрешать повтор нескольких копий различных сообщений SEI в единице доступа.
[0111] Например, декодеру 30 видео не требуется полагаться на сообщение SEI для определения того, что обрабатывается новая единица доступа. Предпочтительнее, декодер 30 видео может полагаться на некоторую другую информацию заголовка для определения того, когда обрабатывается новая единица доступа. Поскольку существование сообщения SEI отделено от указания того, что обрабатывается новая единица доступа, кодер 20 видео может включать несколько копий сообщения SEI в единицу доступа, а декодер 30 видео может обрабатывать несколько копий сообщений SEI в одной и той же единице доступа, без определения того, что обрабатывается новая единица доступа.
[0112] В описываемых в данном раскрытии методиках, кодер 20 видео может сигнализировать идентификатор в каждой единице декодирования (именуемый идентификатором единицы декодирования, идентификатором DU, или ID DU). Идентификатор DU может быть идентификатором, который уникально идентифицирует единицу декодирования. Например, идентификатор DU для первой единицы декодирования, в очередности декодирования, в единице доступа может быть равен 0, идентификатор DU для второй единицы декодирования, в очередности декодирования, в единице доступа может быть равен 1, и так далее (т.е., идентификатор DU для первой единицы декодирования равен 0, и значение идентификатора DU увеличивается на единицу для каждой последующей единицы декодирования). Возможны другие способы уникальной идентификации единиц декодирования с помощью идентификаторов единиц декодирования, и методики не должны рассматриваться, как ограниченные возрастающими идентификаторами DU для каждой единицы декодирования в очередности декодирования.
[0113] Могут существовать различные способы, посредством которых кодер 20 видео сигнализирует идентификатор DU. Например, кодер 20 видео может сигнализировать идентификатор DU в заголовке слайса слайса единицы декодирования и/или в сообщении SEI (например, сообщении SEI SPT), или любым другим способом. В данном случае, ассоциация единиц NAL с единицами декодирования основана на сигнализируемых идентификаторах DU. Так же может существовать возможность включения идентификатора DU в другие местоположения, такое как заголовок единицы NAL.
[0114] Если единица NAL относится к одному или более слайсам, декодер 30 видео может определять, с какой единицей декодирования ассоциирована единица NAL из идентификатора DU в заголовке слайса. Соответственно, даже если присутствуют потери в единицах NAL, декодер 30 видео может иметь возможность определения того, какая единица NAL ассоциирована с какой единицей декодирования на основании идентификатора DU.
[0115] В примерах, где сообщение SEI включает в себя идентификатор DU, может существовать возможность того, что сообщение SEI (например, сообщение SEI SPT) потеряно, и в этом случае, может быть потерян идентификатор DU. В некоторых примерах, кодер 20 видео может включать копии сообщения SEI SPT в единицу декодирования для минимизации шансов того, что идентификатор DU потерян. Например, как описывается выше, в некоторых случаях позиция сообщения SEI SPT в единице декодирования может указывать на то, какие единицы NAL ассоциированы с единицами декодирования, что означало, что не может быть несколько копий сообщений SEI SPT. В описываемых в данном раскрытии методиках, декодер 30 видео может использовать идентификатор DU для определения того, какие единицы NAL ассоциированы с какими единицами декодирования. Соответственно, декодеру 30 видео не требуется полагаться на позицию сообщений SEI SPT для определения того, какие единицы NAL ассоциированы с какими единицами декодирования. Это разрешает кодеру 20 видео включать несколько копий сообщения SEI SPT в единицу декодирования в кодированном битовом потоке, что в свою очередь уменьшает вероятность того, что идентификатор DU будет потерян, если каждая копия сообщения SEI SPT включает в себя идентификатор DU.
[0116] Как описано выше, в некоторых примерах, сообщениям SEI не разрешено следовать за первой единицей NAL VCL в очередности декодирования, в единице доступа, содержащей сообщение SEI. В некоторых примерах, кодер 20 видео может разрешать всем сообщениям SEI следовать за первой единицей NAL VCL в очередности декодирования, в единице доступа, содержащей сообщение SEI. Тем не менее, сообщение SEI не может быть позиционировано после последней единицы NAL VCL, в очередности декодирования, в единице доступа.
[0117] В качестве одного примера, кодер 20 видео может включать сообщение SEI перед первой единицей NAL VCL в очередности декодирования. Кодер 20 видео может включать копию сообщения SEI после первой единицы NAL VCL в очередности декодирования в единицу доступа. В данном примере, кодер 20 видео не должен включать копию сообщения SEI после последней единицы NAL VCL в очередности декодирования в единицу доступа.
[0118] В примерах, где кодер 20 видео разрешает повтор различных типов сообщений SEI в единице декодирования или единице доступа, кодер 20 видео может указывать дополнительную информацию, касающуюся сообщений SEI. В качестве одного примера, кодер 20 видео может указывать объем применения, к которому применяется информация, переносимая в сообщении SEI. В качестве другого примера, кодер 20 видео может указывать, где сообщение SEI может присутствовать в единице доступа и/или единице декодирования. В качестве еще одного другого примера, кодер 20 видео может устанавливать ограничение на содержимое нескольких экземпляров конкретных типов сообщений SEI.
[0119] Декодер 30 видео использует такую информацию применительно к сообщениям SEI для декодирования данных в единицах NAL. В некоторых примерах, декодер 30 видео может быть предварительно сконфигурирован с помощью информации сообщений SEI, такой как информация, указывающая ограничение на содержимое нескольких экземпляров конкретных типов сообщений SEI, или предварительно сконфигурирован с помощью информации о том, где сообщения SEI могут быть расположены в единице доступа и/или единице декодирования. В этих случаях, для кодера 20 видео может отсутствовать необходимость в указании того, где сообщение SEI может присутствовать, или сигнализации информации, указывающей на какие-либо ограничения в отношении содержимого нескольких экземпляров конкретных типов сообщений SEI.
[0120] Как описано выше, единица доступа включает в себя видео данные для по меньшей мере одного изображения. В некоторых примерах, единица доступа может включать в себя видео данные для нескольких уровней, и кодер 20 видео может кодировать битовый видеопоток с несколькими уровнями, как например, при многослойном расширении стандарта высокоэффективного кодирования видео (HEVC).
[0121] Несколько уровней включают в себя базовый уровень и один или более не базовые уровни. В некоторых примерах, базовый уровень может включать в себя видео данные для создания изображения, а не базовый уровень может быть уровнем пространственного или качественного улучшения, который включает в себя видео данные для улучшения качества изображения в базовом уровне. В некоторых примерах, как например для многовидового кодирования видео, базовый уровень может включать в себя видео данные для изображений конкретного вида (например, базового вида, для которого не требуются какой-либо другой вид внешнего предсказания), а не базовый уровень может включать в себя текстуру другого вида, глубину другого вида, и другие такие примеры.
[0122] В методиках, описываемых в данном раскрытии, кодер 20 видео может транспортировать разные уровни в разных каналах (например, используя многосеансовую передачу (MST) аналогичную сформулированной в документе IETF RFC 6190 (публично доступен по адресу http://tools.ietf.org/rfc/rfc6190.txt). Методики, описываемые в данном раскрытии, являются расширяемыми до примеров, в которых многосеансовая передача используется для кодирования нескольких уровней. Например, методики, описанные в данном раскрытии применительно к включению сообщения SEI после первой единицы NAL VCL в единице доступа, также применимы к примерам многосеансовой передачи. В качестве одного примера, кодер 20 видео может включать единицы NAL SEI между двумя последовательными единицами NAL VCL в единице доступа без необходимости перемещения единиц NAL SEI перед первой единицей NAL VCL единицы доступа.
[0123] Так как единица NAL SEI включает в себя сообщения SEI применительно к методикам многосеансовой передачи, декодер 30 видео может иметь возможность реализации процесса депакетизации более простым образом. Например, декодер 30 видео может иметь возможность декодирования сообщений SEI применительно к методикам многосеансовой передачи из единицы доступа, вместо всего из начала единицы доступа. Так как несколько копий сообщения SEI доступны на всем протяжении единицы доступа, декодер 30 видео может иметь возможность депакетизации принятых пакетов более эффективным образом.
[0124] Методики данного раскрытия могут быть применены совместно друг с другом или по отдельности. Например, если кодер 20 видео включает идентификатор DU, тогда кодер 20 видео не обязательно должен включать несколько копий сообщения SEI SPT во всех примерах, но может включать несколько копий сообщения SEI SPT в некоторых примерах. В качестве другого примера, кодер 20 видео может включать несколько копий различных типов сообщений SEI даже если кодер 20 видео не включает идентификаторы DU. В качестве еще одного другого примера, в примерах, где кодер 20 видео включает идентификаторы DU, кодер 20 видео не обязательно должен включать несколько копий сообщений SEI отличных от сообщения SEI SPT. В общем, методики, описываемые в данном раскрытии, могут быть преимущественными при обеспечении устойчивых к ошибкам схем для подверженной ошибкам среды, в которой информация может быть потеряна при сигнализации.
[0125] Как описано выше, в одном примере, кодер 20 видео включает идентификатор DU в заголовок слайса. Таблица 2 ниже предоставляет пример псевдокода для способа, посредством которого кодер 20 видео может включать идентификатор DU в заголовок слайса, и способа, посредством которого декодер 30 видео может анализировать заголовок слайса для определения идентификатора DU.
[0126] В данном примере, decoding_unit_id относится к идентификатору DU и указывает идентификатор единицы декодирования к которой принадлежит слайс. Значение decoding_unit_id может находится в диапазоне от 0 до PicSizeInCtbsY - 1, включительно. PicSizeInCtbsY может указывать количество единиц дерева кодирования (CTU) в изображении, которое равно количеству древовидных блоков кодирования (CTB) в составляющей яркости изображения.
[0127] В примере, где кодер 20 видео включает идентификатор единицы декодирования в заголовок слайса, единица декодирования, идентифицируемая конкретным значением идентификатора DU (например, ID DU или duID), может включать в себя и может только включать в себя все кодированные единицы NAL слайсов с decoding_unit_id равным идентификатору DU, и их ассоциированные единицы NAL не-VCL в единице доступа. В одной единице доступа, для любых двух единиц декодирования (например, единицы A декодирования и единицы B декодирования) с decoding_unit_id равным duIDa и duIDb, соответственно, где duIDa меньше duIDb, единица A декодирования может предшествовать единице B декодирования в очередности декодирования. Другими словами, единица декодирования с меньшим идентификатором DU предшествует единице декодирования с большим идентификатором DU в очередности декодирования. Более того, единица NAL одной единицы декодирования не может находиться, в очередности декодирования, между двумя единицами NAL другой единицы декодирования. Другими словами, в вышеприведенном примере, единицы NAL для единицы декодирования являются смежными.
[0128] Как описано выше, в некоторых примерах, кодер 20 видео может включать идентификатор DU в сообщение SEI (например, сообщение SEI SPT), и сообщение SEI SPT включает в себя информацию, которая указывает на то, когда единица декодирования должна быть удалена. Нижеследующее описывает некоторые примерные методики, посредством которых кодер 20 видео включает идентификатор DU в сообщение SEI. Чтобы избежать путаницы, в нижеследующем имя сообщения SEI о тактировании суб-изображения (SPT) изменено на сообщение SEI информации единицы декодирования. Другими словами, в некоторых примерах, кодер 20 видео выводит, а декодер 30 видео принимает идентификатор DU в сообщении SEI, которое также включает в себя информацию, указывающую время удаления единицы декодирования из CPB.
[0129] Таблица 3 ниже предоставляет пример псевдокода для способа, посредством которого кодер 20 видео может включать идентификатор DU в сообщение SEI, и способа, посредством которого декодер 30 видео может анализировать сообщение SEI для определения идентификатора DU. В нижеследующем, имя сообщения SEI о тактировании суб-изображения (SPT) изменено на сообщение SEI информации единицы декодирования, а синтаксис и семантика могут быть следующими. Прочие части точно такие же как в HEVC WD8, при этом «сообщение SEI о тактировании суб-изображения» заменено на «сообщение SEI информации единицы декодирования». Сообщение SEI информации единицы декодирования может предоставлять время удаления из CPB (например, информацию о задержке удаления из CPB) для единицы декодирования, ассоциированной с сообщением SEI.
[0130] В HEVC WD8, сообщение SEI о тактировании суб-изображения (SPT) может быть аналогичным Таблице 3. Тем не менее, сообщение SEI SPT в HEVC WD8 не включает в себя элемент синтаксиса decoding_unit_id, а включает в себя только элемент синтаксиса du_cpb_removal_delay. В некоторых из примерных методик, описываемых в данном раскрытии, так как сообщение SEI также включает в себя decoding_unit_id, сообщение SEI SPT переименовано в сообщение SEI информации единицы декодирования.
[0131] В некоторых примерах, кодер 20 видео генерирует для вывода и выводит элементы синтаксиса, а декодер 30 видео принимает элементы синтаксиса, которые указывают на присутствие сообщения SEI информации единицы декодирования в битовом потоке. В качестве одного примера, кодер 20 видео выводит CpbDpbDelaysPresentFlag и sub_pic_cpb_params_present_flag. Если CpbDpbDelaysPresentFlag равна 1 и sub_pic_cpb_params_present_flag равен 1, декодер 30 видео может определять, что одно или более чем одно сообщение SEI информации единицы декодирования присутствует в каждой единицы декодирования в кодированной видео последовательности (т.е., одно или более сообщения SEI информации единицы декодирования). Если CpbDpbDelaysPresentFlag равна 0 или sub_pic_cpb_params_present_flag равен 0, декодер 30 видео может определять, что не присутствуют сообщения SEI информации единицы декодирования ни в одной единице доступа кодированной видео последовательности.
[0132] В соответствии с одним или более примерами, описываемыми в данном раскрытии, единицы NAL, к которым применяется сообщение SEI информации единицы декодирования, также именуемые единицами NAL ассоциированными с сообщением SEI информации единицы декодирования, состоят, в очередности декодирования, из единицы NAL SEI, содержащей сообщение SEI информации единицы декодирования, и всех последующих единиц NAL в единице доступа вплоть до, но не включая, любой последующей единицы NAL SEI, содержащей сообщение SEI информации единицы декодирования с другим значением decoding_unit_id. В этих примерах, формулировка decoding_unit_id может быть точно такой же как формулировка decoding_unit_id, описанная выше в отношении Таблицы 2, но включенного в сообщение SEI (например, сообщение SEI информации единицы декодирования). Например, единица декодирования, идентифицируемая конкретным значением идентификатора DU (например, ID DU или duID), может включать в себя и может только включать в себя все единицы NAL ассоциированные со всеми сообщениями SEI информации единицы декодирования с decoding_unit_id равным идентификатору DU в единице доступа. Как и выше, единица декодирования с меньшим идентификатором единицы декодирования находится раньше в очередности декодирования, чем единица декодирования с большим идентификатором единицы декодирования. Как и выше, единица NAL одной единицы декодирования не может находиться, в очередности декодирования, между двумя единицами NAL другой единицы декодирования.
[0133] du_cpb_removal_delay может указывать на то, как много тактов синхронизации суб-изображения должен ждать декодер 30 видео после удаления из CPB первой единицы декодирования в единице доступа, ассоциированной с самым последним сообщением SEI о периоде буферизации в предсуществующей единице доступа, перед тем как декодер 30 видео удаляет из CPB единицу декодирования, ассоциированную с сообщением SEI информации единицы декодирования. Данное значение также может быть использовано для вычисления наиболее раннего возможного времени поступления данных единицы декодирования в CPB для гипотетического планировщика потока (HSS), как указано в Приложении C HEVC WD 8.
[0134] Элемент синтаксиса может быть представлен посредством кода фиксированной длины, чья длина в битах задается посредством cpb_removal_delay_length_minus1+1. du_cpb_removal_delay может быть остатком счетчика по модулю 2(cpb_removal_delay_length_minus1+1).
[0135] В некоторых примерах, значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента синтаксиса du_cpb_removal_delay, может быть значением cpb_removal_delay_length_minus1 кодированным в наборе параметров последовательности, который активен для кодированного изображения, ассоциированного с сообщением SEI информации единицы декодирования. Тем не менее, du_cpb_removal_delay указывает количество тактов синхронизации суб-изображения относительно времени удаления первой единицы декодирования в предшествующей единице доступа, содержащей сообщение SEI о периоде буферизации, которая может быть единицей доступа другой кодированной видео последовательности.
[0136] Таблица 3 предоставляла примерный псевдокод для одного примера сообщения SEI информации единицы декодирования, в которой имя сообщения SEI SPT было изменено на сообщение SEI информации единицы декодирования, так как сообщение SEI информации единицы декодирования включало информацию, которая ранее была частью сообщения SEI SPT, и дополнительно включало идентификатор DU для единицы декодирования, ассоциированной с сообщением. В некоторых примерах, потенциально могут существовать другие модификации в отношении сообщения SEI о тактировании суб-изображения (SPT).
[0137] Например, Предварительная Заявка США №61/705,119 (далее заявка '119), поданная 24 сентября 2012 г., и Предварительная Заявка США №61/708,475 (далее заявка '475), поданная 01 октября 2012 г., которые во всей своей полноте включены в настоящее описание посредством ссылки, описывают некоторые возможные модификации сообщения SEI SPT по отношению к сообщению SEI SPT, описываемому в HEVC WD8. Заявка '119 и заявка '475 описывают включение структуры синтаксиса рабочих точек применения в сообщение SEI SPT, и изменение элемента синтаксиса du_cpb_removal_delay на du_spt_cpb_removal_delay, который формулируется ниже.
[0138] Методики, описываемые в данном раскрытие, также применимы к примерам, где сообщение SEI SPT изменено по отношению к представленному в HEVC WD8 на сообщение SEI SPT в заявке '119 и заявке '475. Таблица 4 ниже предоставляет примерный псевдокод для способа, посредством которого кодер 20 видео может сигнализировать идентификатор DU в альтернативном примере сообщения SEI, и способ, посредством которого декодер 30 видео может анализировать сообщение SEI для определения идентификатора DU. Как и в Таблице 3, чтобы избежать путаницы, имя сообщения SEI SPT изменено на сообщение SEI информации единицы декодирования, так как сообщение SEI информации единицы декодирования включает в себя идентификатор DU в дополнение к информации в сообщении SEI SPT, как описывается в заявке '119 и заявке '475.
[0139] sub_pic_cpb_params_in_pic_timing_sei_flag равный 1 указывает на то, что параметры задержки удаления из CPB уровня суб-изображения присутствуют в сообщениях SEI о тактировании изображения, и не присутствует сообщение SEI о тактировании суб-изображения. sub_pic_cpb_params_in_pic_timing_sei_flag равный 0 указывает на то, что параметры задержки удаления из CPB уровня суб-изображения присутствуют в сообщениях SEI о тактировании суб-изображения и сообщения SEI о тактировании изображения не включают в себя параметры задержки удаления из CPB уровня суб- изображения.
[0140] Как и выше в отношении Таблицы 3, сообщение SEI информации единицы декодирования предоставляет информацию задержки удаления из CPB для единицы декодирования, ассоциированной с сообщением SEI. Нижеследующее может применяться к синтаксису и семантике сообщения SEI информации единицы декодирования.
[0141] Элементы синтаксиса sub_pic_cpb_params_present_flag, sub_pic_cpb_params_in_pic_timing_sei_flag, и cpb_removal_delay_length_minus1, и переменная CpbDpbDelaysPresentFlag могут быть найдены или отделены из элементов синтаксиса, находящихся в структуре синтаксиса hrd_parameters() и структуре синтаксиса sub_layer_hdr_parameters(), которые применяются к любой из рабочих точек, к которым применяется сообщение SEI информации единицы декодирования. Битовый поток (или его часть) относится к подмножеству битового потока (или его части), ассоциированному с любой из рабочих точек, к которым применяется сообщение SEI информации единицы декодирования.
[0142] Подобно вышеприведенному в отношении Таблицы 3, кодер 20 видео выводит CpbDpbDelaysPresentFlag и sub_pic_cpb_params_present_flag, которые декодер 30 видео использует для определения присутствия сообщения SEI информации единицы декодирования в битовом потоке. В примере Таблицы 4, если CpbDpbDelaysPresentFlag равна 1 и sub_pic_cpb_params_present_flag равен 1, декодер 30 видео может определять, что одно сообщение SEI информации единицы декодирования применимое к конкретным рабочим точкам присутствует в каждой единице декодирования в кодированной видео последовательности. В противном случае (например, либо CpbDpbDelaysPresentFlag равна 0, либо sub_pic_cpb_params_present_flag равен 0), декодер 30 видео может определять, что не присутствуют сообщения SEI информации единицы декодирования применимые к конкретным рабочим точкам в кодированной видео последовательности.
[0143] Подобно описанию в отношении Таблицы 3, единицы NAL, к которым применяется сообщение SEI информации единицы декодирования, также именуемые единицами NAL, ассоциированными с сообщением SEI информации единицы декодирования, состоят, в очередности декодирования, из единицы NAL SEI, содержащей сообщение SEI информации единицы декодирования, и всех последующих единиц NAL в единице доступа вплоть до, но не включая, любой последующей единицы NAL SEI, содержащей сообщение SEI информации единицы декодирования с другим значением decoding_unit_id. Формулировка decoding_unit_id может быть точно такой же, как та, что описывается выше в отношении Таблицы 3, и единица декодирования с меньшим идентификатором DU находится раньше в очередности декодирования, чем единица декодирования с большим идентификатором DU. В примере Таблицы 4, du_spt_cpb_removal_delay может указывать продолжительность, в единицах тактов синхронизации суб-изображения (смотри подпункт E.2.1 HEVC WD8), между удалением из CPB последней единицы декодирования в очередности декодирования в текущей единице доступа, содержащей сообщение SEI информации единицы декодирования, и единицей декодирования, ассоциированной с сообщением SEI информации единицы декодирования. Данное значение также может быть использовано для вычисления наиболее раннего возможного времени поступления данных единицы декодирования в CPB для гипотетического планировщика потока (HSS), как указано в Приложении C HEVC WD 8. Элемент синтаксиса может быть представлен кодом фиксированной длины, чья длина в битах задается du_cpb_removal_delay_length_minus1+1. Когда единица декодирования, ассоциированная с сообщением SEI информации единицы декодирования, является последней единицей декодирования в текущей единице доступа значение du_spt_cpb_removal_delay может быть равно 0.
[0144] В качестве альтернативы, du_spt_cpb_removal_delay может указывать продолжительность, в единицах тактов синхронизации суб-изображения (смотри подпункт E.2.1), между удалением из CPB следующей единицы декодирования в очередности декодирования в текущей единице доступа, содержащей сообщение SEI информации единицы декодирования, и единицей декодирования, ассоциированной с сообщением SEI информации единицы декодирования. Данное значение также может быть использовано для вычисления наиболее раннего возможного времени поступления данных единицы декодирования в CPB для HSS, как указано в Приложении C HEVC WD 8. Элемент синтаксиса представлен кодом фиксированной длины, чья длина в битах задается du_cpb_removal_delay_length_minus1+1. Когда единица декодирования, ассоциированная с сообщением SEI информации единицы декодирования, является последней единицей декодирования в текущей единице доступа, значение du_spt_cpb_removal_delay может быть равно 0. В качестве альтернативы, сообщение SEI информации единицы декодирования не может быть ассоциировано с последней единицей декодирования в каждой единице доступа.
[0145] Вышеприведенные примеры описывали методики для сигнализации идентификатора единицы декодирования, который декодер 30 видео использует для определения того, какие единицы NAL ассоциированы с какими единицами декодирования. Например, если заголовок слайса указывает идентификатор единицы декодирования, тогда декодер 30 видео может определять, что единица NAL, которая включает в себя слайс, ассоциирована с единицей декодирования, указываемой в заголовке слайса. В качестве другого примера, если сообщение SEI (например, сообщение SEI информации единицы декодирования) указывает идентификатор единицы декодирования, тогда декодер 30 видео определяет, что все единицы NAL, которые следуют за сообщением SEI до следующей единицы NAL SEI, которая включает в себя сообщение SEI информации единицы декодирования с идентификатором единицы декодирования, отличным от идентификатора единицы декодирования предыдущего сообщения SEI. Это позволяет кодеру 20 видео включать несколько копий сообщения SEI информации единицы декодирования, что в свою очередь позволяет декодеру 30 видео определять время удаления единицы декодирования из CPB из одного из множества сообщений SEI информации единицы декодирования в случае, когда одно из другого сообщения SEI информации единицы декодирования потеряно при передаче.
[0146] В некоторых примерах, кодер 20 видео может генерировать для вывода и выводить, а декодер 30 видео может принимать несколько копий различных типов сообщений SEI. Как описано выше, следующие аспекты указываются для всех сообщений SEI: a) объем применения, к которому применяется информация, переносимая в сообщении SEI; b) где может присутствовать сообщение SEI; и c) ограничение в отношении содержимого нескольких экземпляров конкретного типа сообщения SEI.
[0147] Следующие условности предполагаются для описания объема применения, где могут присутствовать сообщения, и ограничений в отношении содержимого нескольких экземпляров сообщений SEI. Сообщение SEI считается ассоциированным со значением nuh_reserved_zero_6bits в заголовке единицы NAL единицы NAL SEI, содержащей сообщение SEI. В нижеследующем, «ID уровня» используется взаимозаменяемо с «nuh_reserved_zero_6bits», так как nuh_reserved_zero_6bits идентифицирует уровень при масштабируемом кодировании видео.
[0148] Как и выше, сокращение AU расшифровывается как единица доступа. Применимые рабочие точки для каждого из сообщений: сообщения SEI о периоде буферизации, сообщения SEI о тактировании изображения или сообщения SEI о тактировании суб-изображения, соответствуют тем, что указаны в заявке '119 и заявке '475. Рабочая точка идентифицируется набором значений nuh_reserved_zero_6bits, обозначаемым OpLayerIdSet, и значением временной идентификации (TemporalId), обозначенным OpTid, и ассоциированное подмножество битового потока получается в качестве выходных данных процесса извлечения суб-битового потока, как указывается в подпункте 10.1 HEVC WD8 с OpTid и OpLayerIdSet в качестве входных данных, которые могут быть декодированы независимо.
[0149] Значение TemporalId изображений указывает на то, могут ли изображения быть использованы для внешнего предсказания других изображений. Например, первое изображение не может быть использовано для внешнего предсказания второго изображения, если значение TemporalId первого изображения выше значения TemporalId второго изображения. Таким образом, изображения с наибольшими значениями TemporalId могут быть удалены (извлечены), не оказывая какого-либо влияния на декодирование видео, поскольку изображения не могут быть использованы для внешнего предсказания любого из оставшихся изображений. Подобным образом, изображения с наибольшим и следующим наибольшим значениями TemporalId могут быть удалены, не оказывая какого-либо влияния на декодирование видео, поскольку эти изображения не могут быть использованы для внешнего предсказания любого из оставшихся изображений, и т.д. Несмотря на то, что удаление таких изображений на основании значений TemporalId, может не оказывать влияние на декодирование видео и улучшать использование полосы пропускания (например, из-за удаления изображений), может присутствовать негативное воздействие на качестве видео, если такие изображения удалены.
[0150] Процесс извлечения суб-битового потока, указанный в подпункте 10.1, описывает определенные требования для соответствия. В качестве одного примера, любой суб-битовый поток, извлеченный из битового потока процессом с любым целевым наивысшим значением TemporalId в диапазоне от 0 до 6, включительно, и целевым списком идентификаторов уровня, который включает в себя только значение nuh_reserved_zero_6bits равное нулю, считается соответствующим битовым потоком.
[0151] Период сцены может включать в себя и может включать в себя только все AU, начинающиеся с AU, содержащей сообщение SEI информации о сцене до следующей AU, в очередности декодирования, содержащей сообщение SEI информации о сцене, или конца кодированной видео последовательности, что наступит раньше, в очередности декодирования. Период постфильтра может включать в себя и может включать в себя только все AU, начинающиеся с AU, содержащей сообщение SEI с указанием посфильтру, до следующей AU, в очередности декодирования, содержащей сообщение SEI с указанием постфильтру, или конца кодированной видео последовательности, что наступит раньше, в очередности декодирования.
[0152] Если сообщение SEI о тактировании суб-изображения не включает в себя ID единицы декодирования, единица декодирования может включать в себя и может включать в себя только набор единиц NAL в AU от единицы NAL SEI, которая содержит сообщение SEI о тактировании суб-изображения, до следующей единицы NAL SEI, которая содержит сообщение SEI о тактировании суб-изображения, или конца AU, что наступит раньше, в очередности декодирования. В противоположном случае, единица декодирования может включать в себя и может включать в себя только набор единиц NAL в AU от единицы NAL SEI, которая содержит сообщение SEI о тактировании суб-изображения, до следующей единицы NAL SEI, которая содержит сообщение SEI о тактировании суб-изображения с другим значение ID единицы декодирования, или конца AU, что наступит раньше, в очередности декодирования.
Ассоциация, присутствие и ограничение для сообщений SEI
[0153] Таблица 5 иллюстрирует разные типы сообщений SEI, и иллюстрирует взаимосвязь между разными типами сообщений SEI, значением временной идентификации единицы доступа, и тем, присутствуют ли какие-либо ограничения и типы ограничений в отношении сообщения SEI. Например, кодер 20 видео может определять тип сообщения SEI и может определять значение временной идентификации единицы доступа. На основании значения временной идентификации и типа сообщения SEI, кодер 20 видео может определять, разрешено ли присутствие сообщения SEI.
[0154] В качестве одного примера, предположим, что типом сообщения SEI является сообщение SEI о периоде буферизации. В данном примере, если значение временной идентификации не равно 0, кодер 20 видео может определять, что присутствие сообщения SEI о периоде буферизации не разрешено. В качестве другого примера, предположим, что типом сообщения SEI является сообщение SEI о тактировании изображения. В данном примере, независимо от значения временной идентификации, кодер 20 видео может определять, что присутствие сообщения SEI о тактировании изображения разрешено.
[0155] В соответствии с методиками, описываемыми в данном раскрытии, кодер 20 видео и декодер 30 видео являются примерами модуля кодирования видео, выполненного с возможностью реализации одной или более примерных методик, описываемых в данном раскрытии. Например, кодер 20 видео может сигнализировать идентификаторы для единиц декодирования (например, кодировать и сигнализировать идентификаторы для единиц декодирования), а декодер 30 видео может принимать идентификаторы для единиц декодирования (например, принимать и декодировать идентификаторы для единиц декодирования). В этом смысле, модуль кодирования видео, такой как кодер 20 видео и декодер 30 видео, может быть выполнен с возможностью кодирования (например, кодирования или декодирования) идентификаторов для единиц декодирования.
[0156] Модуль кодирования видео может быть выполнен с возможностью кодирования уникального идентификатора для каждой единицы декодирования в единице доступа, так что идентификатор для одной единицы декодирования в единице доступа отличается от идентификатора для любой другой единицы декодирования в единице доступа. В некоторых примерах, модуль кодирования видео может ассоциировать единицы уровня сетевой абстракции (NAL) с единицами декодирования в единице доступа на основании уникального идентификатора для каждой из единиц декодирования. Также, в некоторых примерах, модуль кодирования видео может повторять сообщения информации дополнительного улучшения (SEI) в единице декодирования или единице доступа.
[0157] Для кодирования каждой DU, модуль кодирования видео может кодировать первый идентификатор для первой DU, и кодировать второй, другой идентификатор для второй, другой DU. В данном примере, второй идентификатор может быть первым идентификатором увеличенным на единицу.
[0158] В некоторых примерах, модуль кодирования видео может кодировать уникальный идентификатор для каждой единицы декодирования в заголовке слайса. В этих примерах, уникальный идентификатор может идентифицировать единицу декодирования, к которой принадлежит слайс, и модуль кодирования видео может определять, что единица NAL, которая включает в себя слайс, ассоциирована с единицей декодирования, идентифицируемой идентификатором единицы декодирования в заголовке слайса. В некоторых примерах, модуль кодирования видео может кодировать уникальный идентификатор для единицы декодирования в сообщении SEI. Например, модуль кодирования видео может кодировать уникальный идентификатор в сообщении SEI (например, сообщении SEI информации единицы декодирования), которое также включает в себя информацию о том, когда единица декодирования должна быть удалена из буфера кодированных изображений (CPB). Уникальный идентификатор для единицы декодирования может идентифицировать единицу декодирования, которая содержит сообщение SEI информации единицы декодирования.
[0159] В одной или более примерных методиках, модуль кодирования видео может кодировать первый идентификатор для первой единицы декодирования в единице доступа, и кодировать второй, другой идентификатор для второй, другой единицы декодирования в единице доступа. В некоторых примерах, когда значение первого идентификатора меньше значения второго идентификатора, первая единица декодирования может предшествовать второй единице декодирования в очередности декодирования. В некоторых примерах, модуль кодирования видео может кодировать уникальный идентификатор для каждой единицы декодирования как индекс единицы декодирования в списке всех единиц декодирования в единице доступа в очередности декодирования.
[0160] В некоторых случаях, модуль кодирования видео может кодировать первую единицу уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в единице доступа (AU). Модуль кодирования видео также может кодировать сообщение информации дополнительного улучшения (SEI), которое следует за первой единицей NAL VLC в очередности декодирования. В некоторых примерах, модуль кодирования видео может также кодировать сообщение SEI так, что сообщение SEI предшествует последней единице NAL VLC в AU в очередности декодирования.
[0161] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примеры единиц доступа, которые включают в себя идентификаторы единиц декодирования в соответствии с описываемыми в данном раскрытии методиками. Фиг. 2A иллюстрирует единицу 34 доступа, а Фиг. 2B иллюстрирует единицу 50 доступа. Единица 34 доступа и единица 50 доступа включают в себя видео данные, необходимые для декодирования по меньшей мере одного изображения (например, один или более уровни для декодирования изображения или нескольких изображений разных видов применительно к одному и тому же экземпляру времени). Кодер 20 видео выводит единицу 34 доступа или единицу 50 доступа как часть кодированного битового потока, который декодер 30 видео принимает через линию 16 связи или устройство 32 хранения.
[0162] На Фиг. 2A и 2B, единица 34 доступа и единица 50 доступа включают в себя множество единиц декодирования, что означает, что кодер 20 видео выводит SubPicCpbFlag для единицы 34 доступа и единицы 50 доступа в качестве 1 для указания декодеру 30 видео того, что для единицы 34 доступа и единицы 50 доступа разрешена работа на уровне суб-изображения.
[0163] На Фиг. 2A, единица 34 доступа включает в себя единицы 36A-36C декодирования (собирательно именуемые «единицы 36 декодирования»). Единица 36A декодирования включает в себя первую единицу 38A NAL SEI и вторую единицу 38B NAL SEI. Обе единицы 38A и 38B NAL SEI включают в себя сообщение SEI (например, сообщение SEI информации единицы декодирования), которое указывает информацию, касающуюся времени удаления единицы 36A декодирования, а также включает в себя идентификатор единицы декодирования для единицы 36A декодирования. Единица 36A декодирования также включает в себя единицы 40A-40D NAL.
[0164] Единица 36B декодирования включает в себя третью единицу 42 NAL SEI, которая включает в себя сообщение SEI, которое указывает информацию, касающуюся времени удаления единицы 36B декодирования, а также включает в себя идентификатор единицы декодирования для единицы 36B декодирования. Идентификатор единицы декодирования для единицы 36B декодирования отличается от идентификатора единицы декодирования для единицы 36A декодирования (например, на единицу больше чем идентификатор единицы декодирования для единицы 36A декодирования). Единица 36B декодирования также включает в себя единицы 44A и 44B NAL.
[0165] Единица 36C декодирования включает в себя четвертую единицу 46A NAL SEI и пятую единицу 46B NAL SEI. Обе единицы 46A и 46B NAL SEI включают в себя сообщение SEI (например, сообщение SEI информации единицы декодирования), которое указывает информацию, касающуюся времени удаления единицы 36C декодирования, а также включает в себя идентификатор единицы декодирования для единицы 36C декодирования. Единица 36C декодирования также включает в себя единицы 48A и 48B NAL.
[0166] Декодер 30 видео может определять то, какие единицы NAL ассоциированы с какими единицами декодирования на основании сообщения SEI информации единицы декодирования. Например, декодер 30 видео может определять, что единица 38A NAL SEI и единицы NAL (например, единицы 40A и 40B NAL), которые следуют за единицей 38A NAL SEI, ассоциированы с единицей 36A декодирования, поскольку сообщение SEI информации единицы декодирования единицы 38A NAL SEI включало идентификатор единицы декодирования для единицы 36A декодирования. Затем, декодер 30 видео может определять, что единица 38B NAL SEI также является частью единицы 36A декодирования, поскольку сообщение SEI информации единицы декодирования единицы 38B NAL SEI является копией сообщения SEI информации единицы декодирования единицы 38A NAL SEI (например, включает в себя точно такую же информацию о времени удаления и точно такой же идентификатор единицы декодирования). В данном примере, декодер 30 видео может определять, что единицы 40C и 40D NAL также ассоциированы с единицей 36A декодирования, поскольку эти единицы NAL следуют за единицей 38B NAL SEI и предшествуют другой единице NAL SEI с сообщением SEI информации единицы декодирования.
[0167] Декодер 30 видео может определять, что единица 42 NAL SEI не принадлежит к единице 36A декодирования, поскольку идентификатор единицы декодирования в сообщении SEI информации единицы декодирования единицы 42 NAL SEI отличается от идентификатора единицы декодирования в сообщении SEI информации единицы декодирования для единиц 38A и 38B NAL SEI. В данном случае, декодер 30 видео может определять, что единица 42 NAL SEI ассоциирована с другой единицей декодирования (например, единицей 36B декодирования), и единицы 44A и 44B NAL также ассоциированы с единицей 36B декодирования, поскольку эти единицы NAL следуют за единицей 42 NAL SEI и предшествуют другой единице NAL SEI с сообщением SEI информации единицы декодирования, которое включает в себя другой идентификатор единицы декодирования.
[0168] Декодер 30 видео может определять, что единица 46A NAL SEI ассоциирована с другой единицей декодирования (например, единицей 36C декодирования), поскольку идентификатор единицы декодирования в сообщении SEI информации единицы декодирования единицы 46A NAL SEI отличается от предыдущих идентификаторов единицы декодирования (например, на один больше чем предыдущий). Декодер 30 видео определяет, что единица 48A NAL ассоциирована с единицей 36C декодирования, поскольку единица 48A NAL следует за единицей 46A NAL SEI и предшествует единице 46B NAL SEI, которая включает в себя сообщение SEI информации единицы декодирования.
[0169] В данном примере, единица 46B NAL SEI включает в себя сообщение SEI информации единицы декодирования, которое включает в себя точно такой же идентификатор единицы декодирования, что и сообщение SEI информации единицы декодирования единицы 46A NAL SEI (например, сообщения SEI информации единицы декодирования являются копиями). Декодер 30 видео затем может определять, что единица 48A NAL ассоциирована с единицей 36C декодирования, поскольку единица 48B NAL является последней единицей NAL в единице 34 доступа.
[0170] На Фиг. 2A, примеры сообщения SEI информации единицы декодирования включают в себя примеры, описанные выше в отношении Таблиц 3 и 4. Также, на Фиг. 2A, единицы NAL, которые принадлежат к единице декодирования, являются смежными (т.е., единицы NAL для других единиц декодирования не перемежаются с единицами NAL единицы декодирования).
[0171] На Фиг. 2A, кодер 20 видео может генерировать для вывода и выводить идентификаторы единицы декодирования для каждой единице декодирования в соответствующих единицах декодирования. Например, кодер 20 видео включает идентификаторы единицы декодирования в сообщения SEI информации единицы декодирования единицы 38A NAL SEI и единицы 38B NAL SEI в соответствующей единице 36A декодирования, и выводит идентификаторы единицы декодирования как часть сообщений SEI информации единицы декодирования единиц 38A и 38B NAL SEI. Кодер 20 видео включает идентификаторы единицы декодирования в сообщение SEI информации единицы декодирования единицы 42 NAL SEI в соответствующей единице 36B декодирования, и включает идентификаторы единицы декодирования в сообщения SEI информации единицы декодирования единицы 46A NAL SEI и единицы 46B NAL SEI в соответствующей единице 36C декодирования. В этих примерах, кодер 20 видео выводит идентификаторы единицы декодирования как часть соответствующих сообщений SEI информации единицы декодирования единиц 42, 46A, и 46B NAL SEI.
[0172] Включение сообщений SEI информации единицы декодирования позволяет декодеру 30 видео определять то, какие единицы NAL ассоциированы с какими единицами декодирования на основании идентификаторов единицы декодирования так, что даже если единица NAL потеряна, декодер 30 все еще может определить, то, какие единицы NAL ассоциированы с какими единицами декодирования. Например, предположим, что потеряна единица 40C NAL. В данном примере, декодер 30 видео все еще может определить, что единица 40D NAL ассоциирована с единицей 36A декодирования, поскольку единица 40D NAL является последующей по отношению к единице 38B NAL SEI, чье сообщение SEI информации единицы декодирования указывало идентификатор единицы декодирования для единицы 36A декодирования, и предшествует единице 42 NAL SEI, чье сообщение SEI информации единицы декодирования указывало идентификатор единицы декодирования для единицы 36B декодирования. Более того, вместе с сообщением SEI информации единицы декодирования, указывающим идентификаторы единицы декодирования, кодер 20 видео может включать несколько копий сообщения SEI информации единицы декодирования в единицу декодирования.
[0173] Как иллюстрируется на Фиг. 2B, единица 50 доступа включает в себя единицы 52A-52C декодирования (собирательно именуемые «единицы 52 декодирования»). Единица 52A декодирования включает в себя единицы 54A и 54B NAL слайса, единица 52B декодирования включает в себя единицы 64A-64C NAL слайса, а единица 52C декодирования включает в себя единицы 78A и 78B NAL слайса. Каждая из единиц NAL слайса включает в себя заголовок слайса и тело слайса. Заголовок слайса включает в себя информацию заголовка, включающую идентификатор единицы декодирования, а тело слайса включает в себя видео данные для декодирования слайса.
[0174] Например, единица 54A NAL слайса включает в себя заголовок 56 слайса и тело 58 слайса, а единица 54B NAL слайса включает в себя заголовок 60 слайса и тело 62 слайса. В данном примере, заголовок 56 слайса единицы 54A NAL слайса и заголовок 60 слайса единицы 54B NAL слайса, каждый включает в себя один и тот же идентификатор единицы декодирования, который декодер 30 видео использует для определения того, что единица 54A NAL и единица 54B NAL ассоциированы с одной и той же единицей декодирования (например, единицей 52A декодирования).
[0175] Единица 64A NAL слайса включает в себя заголовок 66 слайса и тело 68 слайса, единица 64B NAL слайса включает в себя заголовок 70 слайса и тело 72 слайса, а единица 64C NAL слайса включает в себя заголовок 74 слайса и тело 76 слайса. В данном примере, заголовок 66 слайса единицы 64A NAL слайса, заголовок 70 слайса единицы 64B NAL слайса, и заголовок 74 слайса единицы 64C NAL слайса, каждый включает в себя один и тот же идентификатор единицы декодирования, который декодер 30 видео использует для определения того, что единица 64A NAL, единица 64B NAL, и единица 64C NAL, ассоциированы с одной и той же единицей декодирования (например, единицей 52B декодирования).
[0176] Единица 78A NAL слайса включает в себя заголовок 80 слайса и тело 82 слайса, а единица 78B NAL слайса включает в себя заголовок 84 слайса и тело 86 слайса. В данном примере, заголовок 80 слайса единицы 78A NAL слайса и заголовок 84 слайса единицы 78B NAL слайса каждый включает в себя один и тот же идентификатор единицы декодирования, который декодер 30 видео использует для определения того, что единица 78A NAL и единица 78B NAL ассоциированы с одной и той же единицей декодирования (например, единицей 52C декодирования).
[0177] На Фиг. 2B, примеры сообщения SEI информации единицы декодирования включают в себя примеры, описанные выше в отношении Таблицы 2. Подобно Фиг. 2A, на Фиг. 2B, единицы NAL, которые принадлежат к единице декодирования, являются смежными (т.е., единицы NAL для других единиц декодирования не перемежаются с единицами NAL единицы декодирования).
[0178] Как иллюстрируется, кодер 20 видео включает идентификатор единицы декодирования в заголовки 56 и 60 слайса для соответствующей единицы 52A декодирования, и выводит идентификатор единицы декодирования как часть заголовков 56 и 60 слайсов. Также, кодер 20 видео включает идентификатор единицы декодирования в заголовки 66, 70, и 74 слайса для соответствующей единицы 52B декодирования, и выводит идентификатор единицы декодирования как часть заголовков 66, 70, и 74 слайса. Подобным образом, кодер 20 видео включает идентификатор единицы декодирования в заголовки 80 и 84 слайса для соответствующей единицы 52C декодирования, и выводит идентификатор единицы декодирования как часть заголовков 80 и 84 слайса.
[0179] В примере, иллюстрируемом на Фиг. 2B, декодеру 30 видео не нужно полагаться на позиции сообщений SEI SPT для определения того, какая единица NAL слайса ассоциирована с какой единицей декодирования. Наоборот, декодер 30 видео использует идентификатор единицы декодирования, указываемый в заголовках слайса единицы NAL слайса, для определения того, какая единица NAL слайса ассоциирована с какой единицей декодирования. В данном случае, даже если потеряна единица NAL слайса (например, единица 56B NAL слайса), декодер 30 видео все еще может иметь возможность определения того, какая единица NAL ассоциирована с какими единицами декодирования на основании заголовка слайса.
[0180] Фиг. 3 является структурной схемой, иллюстрирующей примерный кодер 20 видео, который может реализовать описываемые в данном раскрытии методики. Кодер 20 видео может выполнять внутреннее и внешнее кодирование (кодирование или декодирование с внутренним предсказанием и кодирование или декодирование с внешним предсказанием) видео блоков в видео слайсах. Внутреннее кодирование полагается на пространственное предсказание для сокращения или удаления пространственной избыточности в видео в пределах заданного видео кадра или изображения. Внешнее кодирование полагается на временное предсказание для сокращения или удаления временной избыточности в видео в пределах смежных кадров или изображений видео последовательности. Внутренний режим (I режим) может относиться к любому из нескольких основанных на пространстве режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (P режим) или двунаправленное предсказание (B режим), могут относится к любому из нескольких основанных на времени режимов сжатия.
[0181] В примере Фиг. 3, кодер 20 видео включает в себя модуль 135 разбиения, модуль 141 обработки предсказания, модуль 163 фильтра, память 164 опорных изображений (иногда именуемую буфером декодированных изображений), сумматор 150, модуль 152 обработки преобразования, модуль 154 обработки квантования, и модуль 156 энтропийного кодирования. Модуль 141 обработки предсказания включает в себя модуль 142 оценки движения, модуль 144 компенсации движения, и модуль 146 внутреннего предсказания. Для воссоздания видео блока, кодер 20 видео также включает в себя модуль 158 обработки обратного квантования, модуль 160 обработки обратного преобразования, и сумматор 162. Модуль 163 фильтра может, в общем, представлять собой один или более петлевые фильтры, такие как фильтр устранения блочности, адаптивный петлевой фильтр (ALF), и фильтр адаптивного смещения элементов дискретизации (SAO). Несмотря на то, что модуль 163 фильтра показан на Фиг. 3 как являющийся внутри-петлевым фильтром, в других конфигурациях, модуль 163 фильтра может быть реализован в качестве пост-петлевого фильтра, и в этом случае в цикле кодирования могут быть использованы не отфильтрованные данные.
[0182] Как показано на Фиг. 3, кодер 20 видео принимает видео данные, и модуль 135 разбиения разбивает данные на видео блоки. Данное разбиение также может включать в себя разбиение на слайсы, тайлы (tile), или другие большие единицы, как, впрочем, и разбиение видео блока, например, в соответствии со структурой квадро-дерева из LCU и CU. Кодер 20 видео, в общем, иллюстрирует компоненты, которые кодируют видео блоки в пределах видео слайса, который должен быть закодирован. Слайс может быть разделен на несколько видео блоков (и возможно на наборы видео блоков, именуемых тайлами). Модуль 141 обработки предсказания может выбирать один из множества возможных режимов кодирования, такой как один из множества режимов внутреннего кодирования или один из множества режимов внешнего кодирования, для текущего видео блока на основании результатов ошибки (например, скорости кодирования и уровня искажения). Модуль 141 обработки предсказания может предоставлять результирующий блок с внутренним или внешним кодированием сумматору 150 для генерирования данных остаточного блока и сумматору 162 для воссоздания закодированного блока для использования в качестве опорного изображения.
[0183] Модуль 146 внутреннего предсказания в модуле 141 обработки предсказания может выполнять кодирование с внутренним предсказанием текущего видео блока относительно одного или более соседних блоков в том же самом кадре или слайсе, что и текущий блок, который должен быть кодирован, для обеспечения пространственного сжатия. Модуль 142 оценки движения и модуль 144 компенсации движения в модуле 141 обработки предсказания выполняют кодирование с внешним предсказанием текущего видео блока относительно одного или более предсказывающих блоков в одной или более опорных изображениях, для обеспечения временного сжатия.
[0184] Модуль 142 оценки движения может быть выполнен с возможностью определения режима внешнего предсказания для видео слайса в соответствии с предварительно определенным шаблоном для видео последовательности. Предварительно определенный шаблон может назначать видео слайсы в последовательности в качестве P слайсов, B слайсов или GPB слайсов. Модуль 142 оценки движения и модуль 144 компенсации движения могут быть высоко интегрированными, но иллюстрируются отдельно в концептуальных целях. Оценка движения, выполняемая модулем 142 оценки движения, является процессом генерирования векторов движения, который оценивает движение для видео блоков. Вектор движения, например, может указывать перемещение PU видео блока в текущем видео кадре или изображении по отношению к предсказывающему блоку в опорном изображении.
[0185] Предсказывающий блок является блоком, который найден как наиболее близко совпадающий с PU видео блока, который должен быть закодирован, в показателях пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратных разностей (SSD), или других метрик разности. В некоторых примерах, кодер 20 видео может вычислять значения для суб-целочисленных позиций пикселя опорных изображений, хранящихся в памяти 164 опорных изображений. Например, кодер 20 видео может интерполировать значения одной четвертой позиций пикселя, одной восьмой позиций пикселя, или других дробных позиций пикселя опорного изображения. Вследствие этого, модуль 142 оценки движения может выполнять поиск движения относительно полных позиций пикселя и дробных позиций пикселя и выводить вектор движения с дробной пиксельной точностью.
[0186] Модуль 142 оценки движения вычисляет вектор движения для PU видео блока в слайсе с внешним кодированием посредством сравнения позиции PU с позицией предсказывающего блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (Список 0) или второго списка опорных изображений (Список 1), каждое из которых идентифицирует одно или более опорных изображений, хранящихся в памяти 164 опорных изображений. Модуль 142 оценки движения отправляет вычисленный вектор движения модулю 156 энтропийного кодирования и модулю 144 компенсации движения.
[0187] Компенсация движения, выполняемая модулем 144 компенсации движения, может вызывать выборку или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения, возможно выполняя интерполяции до суб-пиксельной точности. По приему вектора движения для PU текущего видео блока, модуль 144 компенсации движения может определять местоположение предсказывающего блока, на который указывает вектор движения, в одном из списков опорных изображений. Кодер 20 видео формирует значения пикселя текущего кодируемого видео блока, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока, и могут включать в себя составляющие разности как яркости, так и цветности. Сумматор 150 представляет собой компонент или компоненты, которые выполняют данную операцию вычитания. Модуль 144 компенсации движения также может генерировать элементы синтаксиса, ассоциированные с видео блоками и видео слайсом для использования декодером 30 видео при декодировании видео блоков видео слайса.
[0188] Модуль 146 внутреннего предсказания может осуществлять внутреннее предсказание текущего блока, в качестве альтернативы внешнему предсказанию, выполняемому модулем 142 оценки движения и модулем 144 компенсации движения, как описано выше. В частности, модуль 146 внутреннего предсказания может определять режим внутреннего предсказания для использования для кодирования текущего блока. В некоторых примерах, модуль 146 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 146 внутреннего предсказания (или модуль выбора режима (не проиллюстрирован), в некоторых примерах) может выбирать соответствующий режим внутреннего предсказания для использования из протестированных режимов. Например, модуль 146 внутреннего предсказания может вычислять значения скорости-к-искажению, используя анализ скорости-к-искажению для различных тестируемых режимов внутреннего предсказания, и выбирать режим внутреннего предсказания с наилучшими характеристиками скорости-к-искажению из числа протестированных режимов. Анализ скорости-к-искажению, в общем, определяет величину искажения (или ошибки) между закодированным блоком и исходным, незакодированным блоком, который был закодирован для создания закодированного блока, как, впрочем, и скорость передачи битов (т.е., количество битов), использованную для создания закодированного блока. Модуль 146 внутреннего предсказания может вычислять соотношения из искажений и скоростей для различных закодированных блоков для определения того, какой режим внутреннего предсказания показывает наилучшее значение скорости-к-искажению для блока.
[0189] В любом случае, после выбора режима внутреннего предсказания для блока, модуль 146 внутреннего предсказания может предоставлять информацию, указывающую выбранный режим внутреннего предсказания для блока, модулю 156 энтропийного кодирования. Модуль 156 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания, в соответствии с методиками данного раскрытия. Кодер 20 видео может включать в передаваемый битовый поток данные конфигурации, которые могу включать в себя множество из таблиц индексов режима внутреннего предсказания и множество модифицированных таблиц индексов режима внутреннего предсказания (также именуемых таблицами совмещения кодовых слов), формулировки контекстов кодирования для различных блоков, и указания наиболее вероятного режима внутреннего предсказания, таблицу индексов режима внутреннего предсказания, и модифицированную таблицу индексов режима внутреннего предсказания для использования для каждого из контекстов.
[0190] После того, как модуль 141 обработки предсказания генерирует предсказывающий блок для текущего видео блока посредством либо внешнего предсказания, либо внутреннего предсказания, кодер 20 видео формирует остаточный видео блок посредством вычитания предсказывающего блока из текущего видео блока. Остаточные видео данные в остаточном блоке могут быть включены в одну или более TU и использованы модулем 152 обработки преобразования. Модуль 152 обработки преобразования преобразует остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Блок 152 обработки преобразования может конвертировать остаточные видео данные из пиксельной области в область преобразования, такую как частотная область.
[0191] Модуль 152 обработки преобразования может отправлять результирующие коэффициенты преобразования модулю 154 обработки квантования. Модуль 154 обработки квантования квантует коэффициенты преобразования с тем, чтобы дополнительно уменьшить скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Степень квантования может быть модифицирована посредством регулировки параметра квантования. В некоторых примерах, модуль 154 обработки квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, модуль 156 энтропийного кодирования может выполнять сканирование.
[0192] Вслед за квантованием, модуль 156 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 156 энтропийного кодирования может выполнять контекстно-зависимое адаптивное кодирование с переменной длиной (CAVLC), контекстно-зависимое адаптивное бинарное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-зависимое адаптивное бинарное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервал вероятности (PIPE) или другую методологию или методику энтропийного кодирования. Вслед за энтропийным кодированием посредством модуля 156 энтропийного кодирования, закодированный битовый поток может быть передан декодеру 30 видео, или заархивирован для передачи или извлечения позже декодером 30 видео. Модуль 156 энтропийного кодирования также энтропийно кодирует векторы движения и другие элементы синтаксиса для текущего кодируемого видео слайса.
[0193] Модуль 158 обработки обратного квантования и модуль 169 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для воссоздания остаточного блока в пиксельной области для использования позже в качестве опорного блока опорного изображения. Модуль 144 компенсации движения может вычислять опорный блок посредством сложения остаточного блока с предсказывающим блоком одного из опорных изображений в одном из списков опорных изображений. Модуль 144 компенсации движения также может применять один или более фильтры интерполяции для воссоздания остаточного блока для вычисления суб-целочисленных значений пикселя для использования при оценке движения. Сумматор 162 складывает воссозданный остаточный блок с блоком предсказания после компенсации движения, созданным модулем 144 компенсации движения, для создания опорного блока для сохранения в памяти 164 опорных изображений. Опорный блок может быть использован модулем 142 оценки движения и модулем 144 компенсации движения в качестве опорного блока для внешнего предсказания блока в последующем видео кадре или изображении.
[0194] Кодер 20 видео с Фиг. 3 представляет собой пример кодера видео, выполненного с возможностью реализации одной или более из описываемых в данном документе методик. Например, модуль 141 обработки предсказания представляет собой один примерный модуль для выполнения примерных функций, описанных выше. Модуль 141 обработки предсказания может генерировать единицы NAL и ассоциировать единицы NAL с единицами декодирования единицы доступа. Модуль 141 обработки предсказания может генерировать идентификаторы единицы декодирования и включать идентификаторы единицы декодирования в сообщение SEI информации единицы декодирования единицы NAL SEI и/или включать идентификаторы единицы декодирования в заголовки слайса слайсов единиц NAL слайса. Модуль 156 энтропийного кодирования может энтропийно кодировать единицы декодирования (например, единицы NAL в единицах декодирования).
[0195] В некоторых примерах, модуль отличный от модуля 141 обработки предсказания может реализовать описанные выше примеры. В некоторых примерах, модуль 141 обработки предсказания совместно с одним или более модулями кодера 20 видео может реализовать описанные выше примеры. В некоторых примерах, процессор или модуль кодера 20 видео (не показан на Фиг. 3) может, в одиночку или совместно с другими модулями кодера 20 видео, реализовать описанные выше примеры.
[0196] Фиг. 4 является структурной схемой, иллюстрирующей примерный декодер 30 видео, который может реализовать методики данного раскрытия. В примере на Фиг. 4, декодер 30 видео включает в себя модуль 180 энтропийного декодирования, модуль 181 обработки предсказания, модуль 186 обработки обратного квантования, модуль 188 обработки обратного преобразования, сумматор 190, модуль 191 фильтра, память 192 опорных изображений (иногда именуемую буфером декодированных изображений (DBP)), и буфер 194 кодированных изображений (CPB). Модуль 181 обработки предсказания включает в себя модуль 182 компенсации движения и модуль 184 внутреннего предсказания. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования, в общем, противоположно проходу кодирования, описанному в отношении кодера 20 видео с Фиг. 3.
[0197] Во время процесса декодирования, декодер 30 видео принимает закодированный битовый видеопоток, который представляет собой видео блоки закодированного видео слайса и ассоциированные элементы синтаксиса от кодера 20 видео. Декодер 30 видео может принимать закодированный битовый видеопоток от сетевого объекта 29. Сетевой объект 29 может, например, быть сервером, сетевым элементом с ориентацией на мультимедиа (MANE), устройством монтажа/склейки видео, или другим таким устройством, выполненным с возможностью реализации одной или более описываемых выше методик. Как описано выше, некоторые из описываемых в данном раскрытии методик могут быть реализованы посредством сетевого объекта 29 до того, как сетевой объект 29 передает закодированный битовый видеопоток декодеру 30 видео. В некоторых системах декодирования видео, сетевой объект 29 и декодер 30 видео могут быть частями отдельных устройств, тогда как в других экземплярах, функциональные возможности, описываемые в отношении сетевого объекта 29, могут быть выполнены посредством того же устройства, которое содержит декодер 30 видео.
[0198] Буфер 194 кодированных изображений принимает кодированные изображения от сетевого объекта 29. Как описывается в данном раскрытии, часть элементов синтаксиса в закодированном битовом потоке указывает на то, разрешен ли доступ уровня суб-изображения к CPB 194. Также, закодированный битовый поток может включать в себя сообщения SEI, которые формулируют информацию для обработки изображений в CPB 194 (например, времена удаления единиц декодирования единицы доступа).
[0199] Модуль 180 энтропийного декодирования декодера 30 видео энтропийно декодирует битовый поток, чтобы сгенерировать квантованные коэффициенты, векторы движения, и прочие элементы синтаксиса. Модуль 180 энтропийного декодирования переадресует векторы движения и прочие элементы синтаксиса модулю 181 обработки предсказания. Декодер 30 видео может принимать элементы синтаксиса на уровне видео слайса и/или уровне видео блока.
[0200] Когда видео слайс является кодированным в качестве слайса с внутренним кодированием (I), модуль 184 внутреннего предсказания модуля 181 обработки предсказания может генерировать данные предсказания для видео блока текущего видео слайса на основании сигнализируемого режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видео кадр является кодированным в качестве слайса с внешним кодированием (т.е., B, P или GPB), модуль 182 компенсации движения модуля 181 обработки предсказания создает предсказывающие блоки для видео блока текущего видео слайса на основании векторов движения и прочих элементов синтаксиса, принятых от модуля 180 энтропийного декодирования. Предсказывающие блоки могут быть созданы из одной из опорных изображений в одном из списков опорных изображений. Декодер 30 видео может строить списки опорных кадров (изображений), Список 0 и Список 1, используя методику построения по умолчанию на основании опорных изображений, хранящихся в памяти 192 опорных изображений.
[0201] Модуль 182 компенсации движения определяет информацию предсказания для видео блока текущего видео слайса посредством анализа векторов движения и прочих элементов синтаксиса, и использует информацию предсказания для создания предсказывающих блоков для текущего декодируемого видео блока. Например, модуль 182 компенсации движения использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннего или внешнего предсказания), использованного для кодирования видео блоков видео слайса, типа слайса внешнего предсказания (например, B слайс, P слайс, или GPB слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого видео блока с внешним кодированием слайса, статуса внешнего предсказания для каждого видео блока с внешним кодированием слайса, и другой информации для декодирования видео блоков в текущем видео слайсе.
[0202] Модуль 182 компенсации движения также может выполнять интерполяцию на основании фильтров интерполяции. Модуль 182 компенсации движения может использовать фильтры интерполяции как те, что используются кодером 20 видео во время кодирования видео блоков для вычисления интерполированных значений для суб-целочисленных пикселей опорных блоков. В данном случае, модуль 182 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, из принятых элементов синтаксиса и использовать фильтры интерполяции для создания предсказывающих блоков.
[0203] Модуль 186 обработки обратного квантования обратно квантует, т.е., де-квантует, квантованные коэффициенты преобразования, предоставленные в битовом потоке и декодированные модулем 180 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного кодером 20 видео для каждого видео блока в видео слайсе для определения степени квантования и, подобным образом, степени обратного квантования, которая должна быть применена. Модуль 188 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для того, чтобы создать остаточные блоки в пиксельной области.
[0204] После того, как модуль 182 компенсации движения генерирует предсказывающий блок для текущего видео блока на основании векторов движения и прочих элементов синтаксиса, декодер 30 видео формирует декодированный видео блок посредством суммирования остаточных блоков от модуля 188 обработки обратного преобразования с соответствующими предсказывающими блоками, сгенерированными модулем 182 компенсации движения. Сумматор 190 представляет собой компонент или компоненты, которые выполняют данную операцию суммирования. При желании, петлевые фильтры (либо внутри цикла кодирования, либо после цикла кодирования) также могут быть использованы для сглаживания пиксельных переходов, или иного улучшения качества видео. Модуль 191 фильтра может представлять собой один или более петлевые фильтры, такой как фильтр устранения блочности, адаптивный петлевой фильтр (ALF), и фильтр адаптивного смещения элементов дискретизации (SAO). Несмотря на то, что модуль 191 фильтра показан на Фиг. 4 как являющийся внутри-петлевым фильтром, в других конфигурациях, модуль 191 фильтра может быть реализован в качестве пост-петлевого фильтра. Декодированные видео блоки в заданном кадре или изображении затем сохраняются в памяти 192 опорных изображений, которая хранит опорные изображения, используемые для последующей компенсации движения. Память 192 опорных изображений также хранит декодированное видео для представления позже на устройстве отображения, таком как устройство 31 отображения с Фиг. 1.
[0205] Декодер 30 видео с Фиг. 4 представляет собой пример декодера видео, выполненного с возможностью реализации одной или более описываемых в данном документе методик. Например, модуль 181 обработки предсказания представляет собой один пример модуля для выполнения примерных функций, описываемых выше. Например, модуль 181 обработки предсказания может определять, указывает ли SubPicCpbFlag на то, что разрешена работа на уровне суб-изображения в CPB 194. Если разрешена работа на уровне суб-изображения, модуль 181 обработки предсказания может определять то, какие единицы NAL ассоциированы с какими единицами декодирования единицы доступа.
[0206] Например, модуль 181 обработки предсказания может определять, что единица NAL SEI включает в себя сообщение SEI информации единицы декодирования. Из сообщения SEI информации единицы декодирования, модуль 181 обработки предсказания может определять время удаления из CPB 194 единицы декодирования, и идентификатор единицы декодирования. Модуль 181 обработки предсказания может определять, что единица NAL SEI и все единицы NAL, которые следуют за единицей NAL SEI до другой единицы NAL SEI, которая включает в себя сообщение SEI информации единицы декодирования с другим идентификатором единицы декодирования, ассоциируются с единицей декодирования, идентифицируемой сообщением SEI информации единицы декодирования единицы декодирования.
[0207] В качестве другого примера, модуль 181 обработки предсказания может определять, что заголовок слайса у слайса включает в себя идентификатор единицы декодирования. Модуль 181 обработки предсказания может определять, с какой единицей декодирования ассоциирована единица NAL слайса, которая включает в себя слайс и его заголовок слайса, на основании идентификатора единицы декодирования.
[0208] Таким образом, даже если единица NAL теряется при передаче, модуль 181 обработки предсказания может иметь возможность определения того, с какими единицами декодирования другие (т.е., принятые и не потерянные) единицы NAL ассоциированы. В некоторых примерах, модуль 181 обработки предсказания может быть выполнен с возможностью определения времени, когда единица декодирования должна быть удалена из CPB 194, поскольку может присутствовать несколько копий сообщения SEI информации единицы декодирования в единице декодирования.
[0209] В некоторых примерах, модуль отличный от модуля 181 обработки предсказания может реализовать описанные выше примеры. В некоторых примерах, модуль 181 обработки предсказания совместно с одним или более другими модулями декодера 30 видео может реализовать описанные выше примеры. В некоторых примерах, процессор или модуль декодера 30 видео (не показан на Фиг. 4) может в одиночку или совместно с другими модулями декодера 30 видео реализовать описанные выше примеры.
[0210] Фиг. 5 является блок-схемой, иллюстрирующей пример кодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами. В целях иллюстрации, пример на Фиг. 5 описывается в отношении кодера 20 видео.
[0211] Кодер 20 видео определяет (200) уникальный идентификатор для каждой единицы декодирования в единице доступа. Идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Например, кодер 20 видео определяет первый идентификатор для первой единицы декодирования в единицах доступа, и определяет второй, другой идентификатор для второй, другой единицы декодирования в единице доступа. В данном примере, если значение первого идентификатора меньше значения второго идентификатора, то первая единица декодирования предшествует второй единице декодирования в очередности декодирования.
[0212] Кодер 20 видео определяет (202) то, какие единицы NAL ассоциированы с какими единицами декодирования единицы доступа. Например, каждая единица декодирования может представлять собой видео данные для части изображения, а единицы NAL могут представлять собой часть единицы декодирования. Кодер 20 видео может определять то, какие части видео данных единицы декодирования представлены какими единицами NAL, и определять, что единицы NAL, которые представляют собой видео данные единицы декодирования, ассоциированы с единицей декодирования.
[0213] Кодер 20 видео генерирует (204) для вывода каждый уникальный идентификатор в соответствующих единицах декодирования для указания того, какие единицы NAL ассоциированы с какими единицами декодирования единицы доступа. Например, кодер 20 видео может энтропийного кодировать уникальные идентификаторы для каждой из единиц декодирования посредством модуля 156 энтропийного кодирования. В этих примерах, кодирование может считаться в качестве генерирования для вывода. Более того, кодер 20 видео может выводить (например, сигнализировать) каждый уникальный идентификатор в соответствующих единицах декодирования для указания того, какие единицы NAL ассоциированы с какими единицами декодирования единиц доступа, как части кодированного битового потока.
[0214] Например, кодер 20 видео может включать первый уникальный идентификатор для первой единицы декодирования в первое сообщение SEI информации единицы декодирования, и выводить все единицы NAL, которые ассоциированы с первой единицей декодирования после вывода первого уникального идентификатора как части первого сообщения SEI информации единицы декодирования. Кодер 20 видео может включать второй идентификатор единицы декодирования для второй единицы декодирования во второе сообщение SEI единицы декодирования. После вывода всех единиц NAL, которые ассоциированы с первой единицей декодирования, кодер 20 видео может выводить второй идентификатор единицы декодирования во втором сообщении SEI единицы декодирования как части вывода второй единицы декодирования. В качестве другого примера, кодер 20 видео может включать и выводить каждый уникальный идентификатор в заголовках слайса единиц NAL слайса.
[0215] В некоторых примерах, кодер 20 видео может выводить, как часть единицы декодирования, первое сообщение SEI единицы декодирования, которое указывает информацию для времени удаления единицы декодирования. Кодер 20 видео также может выводить, как часть единицы декодирования, второе сообщение SEI единицы декодирования, которое указывает информацию для времени удаления единицы декодирования. В некоторых случаях, второе сообщение SEI единицы декодирования является копией первого сообщения SEI единицы декодирования. В некоторых примерах, кодер 20 видео может включать сообщение SEI в единицу доступа, и включать копию сообщения SEI в единицу доступа. Кодер 20 видео может выводить единицу доступа, которая включает в себя сообщение SEI и копию сообщения SEI.
[0216] Фиг. 6 является блок-схемой, иллюстрирующей пример декодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами. В целях иллюстрации, пример на Фиг. 6 описывается со ссылкой на декодер 30 видео.
[0217] Декодер 30 видео может декодировать (206) уникальный идентификатор для каждой единицы декодирования в единице доступа. В данном примере, идентификатор для одной единицы декодирования отличается от идентификатора для любой другой единицы декодирования в единице доступа. Например, декодер 30 видео может декодировать первый идентификатор для первой единицы декодирования в единице доступа, и декодировать второй, другой идентификатор для второй, другой единицы декодирования в единице доступа. В данном примере, если значение первого идентификатора меньше значения второго идентификатора, то первая единица декодирования предшествует второй единице декодирования в очередности декодирования.
[0218] Декодер 30 видео может определять (208) то, какие единицы NAL ассоциированы с какими единицами декодирования на основании уникального идентификатора для каждой единицы декодирования в единице доступа. Например, декодер 30 видео может декодировать первый уникальный идентификатор из первого сообщения SEI информации единицы декодирования для первой единицы декодирования и декодировать второй уникальный идентификатор из второго сообщения SEI единицы декодирования для второй единицы декодирования. Декодер 30 видео может определять, что первая единица NAL SEI, которая включает в себя первое сообщение SEI информации единицы декодирования, и все единицы NAL, которые следуют за первой единицей NAL SEI вплоть до второй единицы NAL SEI, которая включает в себя второе сообщение SEI информации единицы декодирования, ассоциированы с первой единицей декодирования. В качестве другого примера, декодер 30 видео может декодировать уникальный идентификатор в заголовке слайса единицы NAL слайса, и определять с какой единицей декодирования ассоциирована единица NAL слайса на основании уникального идентификатора в заголовке слайса.
[0219] Декодер 30 видео может декодировать (210) единицы NAL на основании определения для воссоздания по меньшей мере одного изображения. Например, результатом декодирования всех единиц NAL, ассоциированных со всеми единицами декодирования, может быть декодированная единица доступа. Как описано выше, декодирование единицы доступа имеет результатом по меньшей мере одно изображение (например, одно изображение, когда не используется многовидовое кодирование видео, и несколько изображений, когда используется многовидовое кодирование видео).
[0220] В некоторых примерах, декодер 30 видео может декодировать первое сообщение SEI информации единицы декодирования, которое указывает информацию для времени удаления единицы декодирования. Декодер 30 видео также декодирует второе сообщение SEI информации единицы декодирования, которое располагается между двумя единицами NAL, ассоциированными с единицей декодирования. В данном примере, второе сообщение SEI информации единицы декодирования является копией первого сообщения SEI информации единицы декодирования. В некоторых примерах, декодер 30 видео может декодировать сообщение SEI в единице доступа и декодировать копию сообщения SEI в единице доступа.
[0221] Фиг. 7 является блок-схемой, иллюстрирующей пример кодирования видео данных в соответствии с одним или более описываемыми в данном раскрытии примерами. В целях иллюстрации, методики описываются в отношении модуля кодирования видео. Примеры модуля кодирования видео включают в себя кодер 20 видео и декодер 30 видео. Например, при кодировании видео, примером модуля кодирования видео является кодер 20 видео. При декодировании видео, примером модуля кодирования видео является декодер 30 видео.
[0222] Как иллюстрируется на Фиг. 7, модуль кодирования видео выполнен с возможностью кодирования (212) сообщения информации дополнительного улучшения (SEI) в единице доступа. Как описывается выше, единица доступа включает в себя видео данные для воссоздания по меньшей мере одного изображения, а сообщение SEI задает характеристику видео данных (например, характеристики, такие как те, что описаны выше в Таблицах 1 и 5). В некоторых примерах, модуль кодирования видео может кодировать сообщение SEI в единице доступа для многосеансовой передачи. Модуль кодирования видео выполнен с возможностью кодирования (214) копии сообщения SEI в единице доступа. В некоторых примерах, модуль кодирования видео может кодировать копию сообщения SEI в единице доступа для многосеансовой передачи.
[0223] Например, кодер 20 видео может включать сообщение SEI перед первой единицей уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в очередности декодирования в единицу доступа. Кодер 20 видео может включать копию сообщения SEI после первой единицы NAL VCL в очередности декодирования и перед последней единице NAL VCL в очередности декодирования. В данном примере, кодер 20 видео может кодировать сообщение SEI, которое включается перед первой единицей NAL VCL, и кодировать копию сообщения SEI, которая включается после первой единицы NAL VCL и перед последней единицей NAL VCL.
[0224] В качестве другого примера, декодер 30 видео может декодировать первую единицу NAL VCL в очередности декодирования в единице доступа и декодировать последнюю единицу NAL VCL в очередности декодирования в единице доступа. В данном примере, декодер 30 видео может декодировать сообщение SEI до декодирования первой единицы NAL VCL, и декодировать копию сообщения SEI после декодирования первой единицы NAL VCL и до декодирования последней единицы NAL VCL.
[0225] В некоторых примерах, модуль кодирования видео может определять тип сообщения SEI. Модуль кодирования видео также может определять значение временной идентификации единицы доступа. Модуль кодирования видео может определять, разрешено ли присутствие сообщения SEI на основании значения временной идентификации единицы доступа и типа сообщения SEI. В этих примерах, модуль кодирования видео может кодировать сообщение SEI на основании определения того, разрешено ли присутствие сообщения SEI.
[0226] В одном или более примерах, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении, или любом их сочетании. При реализации в программном обеспечении, функции могут быть сохранены на или переданы через, в качестве одной или более инструкций или кода, считываемый компьютером носитель информации и исполнены основанным на аппаратном обеспечении модуле обработки. Считываемые компьютером носители информации могут включать в себя считываемые компьютером носители данных, которые соответствуют вещественному носителю информации, таким как носители информации для хранения данных, или средства связи, включающие в себя любой носитель информации, который способствует переносу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители информации, в общем, могут соответствовать (1) вещественным считываемым компьютером носители данных, которые не временные, или (2) средствам связи, таким как сигнал или несущая волна. Носители информации для хранения данных могут быть любыми доступными носителями информации, доступ к которым может быть получен посредством одного или более компьютеров или одного или более процессов для извлечения инструкций, кода и/или структур данных для реализации описываемых в данном раскрытии методик. Компьютерный программный продукт может включать в себя считываемый компьютером носитель информации.
[0227] В еще одних других примерах, данное раскрытие рассматривает считываемый компьютером носитель информации, содержащий хранящуюся на нем структуру данных, при этом структура данных включает в себя/содержит закодированный битовый поток, который кодирован в соответствии с данным раскрытием.
[0228] В качестве примера, а не ограничения, такие считываемые компьютером носители данных могут быть выполнены в виде RAM, ROM, EEPROM, CD-ROM или другого запоминающего устройства на оптическом диске, запоминающего устройства на магнитном диске, или других магнитных устройств хранения, флэш памяти, или любого другого носителя информации, который может быть использован для хранения требуемого программного кода в форме инструкций или структур данных, и доступ к которому может быть получен посредством компьютера. Также, любое соединение надлежащим образом определяется в качестве считываемого компьютером носителя информации. Например, если инструкции передаются от web-сайта, сервера, или другого удаленного источника, при помощи коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL), или беспроводных технологий, таких как инфракрасные, радио, и микроволновые, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL, или беспроводные технологии, такие как инфракрасная, радио, и микроволновая включаются в формулировку носителя информации. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители информации для хранения данных не включают в себя соединения, несущие волны, сигналы, или другие временные носители информации, а вместо этого относятся к не временным, вещественным носителям данных. Используемый в данном документе магнитный и оптический диск включают в себя компакт диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, где магнитные диски обычно воспроизводят данные магнитным образом, тогда как оптические диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеприведенного также должны быть включены в объем считываемых компьютером носителей информации.
[0229] Инструкции могут быть исполнены одним или более процессорами, такими как один или более цифровые сигнальные процессоры (DSP), микропроцессоры общего назначения, проблемно-ориентированные интегральные микросхемы (ASIC), программируемые вентильные матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, используемое в данном документе понятие «процессор» может относиться к любой вышеупомянутой структуре или любой другой структуре, подходящей для реализации описываемых в данном документе методик. В дополнение, в некоторых аспектах, описанные в данном документе функциональные возможности могут быть предоставлены в рамках выделенного аппаратного обеспечения и/или модулей программного обеспечения, выполненных с возможностью кодирования и декодирования, или объединенных в комбинированный кодек. Также, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
[0230] Методики данного раскрытия могут быть реализованы в широком многообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную микросхему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули, или единицы описаны в данном раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрываемых методик, но не обязательно требует реализации посредством разных модулей аппаратного обеспечения. Наоборот, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены совокупностью взаимодействующих модулей аппаратного обеспечения, включая один или более процессоры, как описано выше, совместно с подходящим программным обеспечением и/или встроенным программным обеспечением.
[0231] Были описаны различные примеры. Эти и прочие примеры находятся в рамках объема нижеследующей формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
УСТОЙЧИВАЯ К ОШИБКАМ АССОЦИАЦИЯ ЕДИНИЦЫ ДЕКОДИРОВАНИЯ | 2013 |
|
RU2628250C2 |
ТЕСТИРОВАНИЕ НА СООТВЕТСТВИЕ БИТОВОГО ПОТОКА | 2013 |
|
RU2613737C2 |
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ | 2020 |
|
RU2821048C1 |
СООБЩЕНИЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ РАСШИРЕНИЯ ТОЧКИ ВОССТАНОВЛЕНИЯ И ПЕРИОДА БУФЕРИЗАЦИИ | 2013 |
|
RU2628215C2 |
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ | 2020 |
|
RU2824781C1 |
РАСШИРЕННОЕ ОПРЕДЕЛЕНИЕ ЕДИНИЦЫ ДЕКОДИРОВАНИЯ | 2013 |
|
RU2646378C2 |
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ | 2020 |
|
RU2822533C1 |
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ | 2020 |
|
RU2825440C1 |
ФЛАГ УРОВНЯ ПОСЛЕДОВАТЕЛЬНОСТИ ДЛЯ ПАРАМЕТРОВ БУФЕРА КОДИРОВАННЫХ НА УРОВНЕ СУБ-КАРТИНОК КАРТИНОК | 2013 |
|
RU2641475C2 |
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS | 2020 |
|
RU2820076C1 |
Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении устойчивости к ошибкам. Способ для декодирования видеоданных содержит декодирование, из битового потока, первой единицы уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения; декодирование, из битового потока, второй единицы NAL VCL в порядке декодирования в единице доступа; декодирование, из битового потока, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа в единице доступа перед декодированием, из битового потока, упомянутой первой единицы NAL VCL, при этом сообщения с SEI содержат информацию, связанную с обработкой видеоданных; и декодирование, из битового потока, копии сообщения с SEI конкретного типа в единице доступа после декодирования, из битового потока, первой единицы NAL VCL и перед декодированием, из битового потока, второй единицы NAL VCL, при этом контент этой копии сообщения с SEI конкретного типа в битовом потоке ограничивается, чтобы быть идентичным контенту декодированного сообщения с SEI конкретного типа. 6 н. и 14 з.п. ф-лы, 8 ил., 5 табл.
1. Способ для декодирования видеоданных, причем способ содержит:
декодирование, из битового потока, первой единицы уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения;
декодирование, из битового потока, второй единицы NAL VCL в порядке декодирования в единице доступа;
декодирование, из битового потока, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа в единице доступа перед декодированием, из битового потока, упомянутой первой единицы NAL VCL, при этом сообщения с SEI содержат информацию, связанную с обработкой видеоданных; и
декодирование, из битового потока, копии сообщения с SEI упомянутого конкретного типа в единице доступа после декодирования, из битового потока, упомянутой первой единицы NAL VCL и перед декодированием, из битового потока, упомянутой второй единицы NAL VCL, при этом контент этой копии сообщения с SEI упомянутого конкретного типа в битовом потоке ограничивается, чтобы быть идентичным контенту декодированного сообщения с SEI упомянутого конкретного типа.
2. Способ по п. 1, дополнительно содержащий:
определение конкретного типа сообщения с SEI;
определение значения временной идентификации единицы доступа; и
определение, разрешено ли присутствие сообщения с SEI, на основании значения временной идентификации единицы доступа и конкретного типа сообщения с SEI,
при этом декодирование сообщения с SEI содержит декодирование сообщения с SEI на основании определения того, что присутствие сообщения с SEI разрешено.
3. Способ по п. 1, при этом сообщение SEI конкретного типа содержит одно из:
сообщения с SEI о периоде буферизации;
сообщения с SEI о синхронизации изображений;
сообщения с SEI о прямоугольнике автопанорамирования;
сообщения с SEI о полезной нагрузке заполнителя;
сообщения с SEI о зарегистрированных данных пользователя;
сообщения с SEI о незарегистрированных данных пользователя;
сообщения с SEI о точке восстановления;
сообщения с SEI об информации о сцене;
сообщения с SEI о моментальном снимке всего кадра;
сообщения с SEI о начале сегмента прогрессивного уточнения;
сообщения с SEI о конце сегмента прогрессивного уточнения;
сообщения с SEI о характеристиках зернистости пленки;
сообщения с SEI о предпочтении отображения с фильтром устранения блочности;
сообщения с SEI с указанием постфильтру;
сообщения с SEI об информации тонального отображения;
сообщения с SEI о компоновке пакетирования кадра;
сообщения с SEI об ориентации отображения;
сообщения с SEI с описанием структуры изображений;
сообщения с SEI с указанием поля;
сообщения с SEI с хэшем декодированного изображения;
сообщения с SEI с активными наборами параметров; или
сообщения с SEI о синхронизации суб-изображений.
4. Способ по п. 1, в котором декодирование сообщения с SEI содержит декодирование сообщения с SEI в единице доступа для многосеансовой передачи, и при этом декодирование копии сообщения с SEI содержит декодирование копии сообщения с SEI в единице доступа для многосеансовой передачи.
5. Устройство для декодирования видеоданных, причем устройство содержит:
блок памяти, выполненный с возможностью хранения видеоданных; и
видеодекодер, выполненный с возможностью:
декодирования, из битового потока, первой единицы уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения;
декодирования, из битового потока, второй единицы NAL VCL в порядке декодирования в единице доступа;
декодирования, из битового потока, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа в единице доступа перед декодированием, из битового потока, упомянутой первой единицы NAL VCL, при этом сообщения с SEI содержат информацию, связанную с обработкой видеоданных; и
декодирования, из битового потока, копии сообщения с SEI упомянутого конкретного типа в единице доступа после декодирования, из битового потока, упомянутой первой единицы NAL VCL и перед декодированием, из битового потока, упомянутой второй единицы NAL VCL, при этом контент этой копии сообщения с SEI упомянутого конкретного типа в битовом потоке ограничивается, чтобы быть идентичным контенту декодированного сообщения с SEI упомянутого конкретного типа.
6. Устройство по п. 5, в котором видеодекодер выполнен с возможностью:
определения конкретного типа сообщения с SEI;
определения значения временной идентификации единицы доступа; и
определения, разрешено ли присутствие сообщения с SEI, на основании значения временной идентификации единицы доступа и конкретного типа сообщения с SEI,
при этом видеодекодер выполнен с возможностью декодирования сообщения с SET на основании определения того, что присутствие сообщения с SEI разрешено.
7. Устройство по п. 5, при этом сообщение SEI конкретного типа содержит одно из:
сообщения с SEI о периоде буферизации;
сообщения с SEI о синхронизации изображений;
сообщения с SEI о прямоугольнике автопанорамирования;
сообщения с SEI о полезной нагрузке заполнителя;
сообщения с SEI о зарегистрированных данных пользователя;
сообщения с SEI о незарегистрированных данных пользователя;
сообщения с SEI о точке восстановления;
сообщения с SEI об информации о сцене;
сообщения с SEI о моментальном снимке всего кадра;
сообщения с SEI о начале сегмента прогрессивного уточнения;
сообщения с SEI о конце сегмента прогрессивного уточнения;
сообщения с SEI о характеристиках зернистости пленки;
сообщения с SEI о предпочтении отображения с фильтром устранения блочности;
сообщения с SEI с указанием постфильтру;
сообщения с SEI об информации тонального отображения;
сообщения с SEI о компоновке пакетирования кадра;
сообщения с SEI об ориентации отображения;
сообщения с SEI с описанием структуры изображений;
сообщения с SEI с указанием поля;
сообщения с SEI с хэшем декодированного изображения;
сообщения с SEI с активными наборами параметров; или
сообщения с SEI о синхронизации суб-изображений.
8. Устройство по п. 5, в котором видеодекодер выполнен с возможностью декодирования сообщения с SEI в единице доступа для многосеансовой передачи, и при этом видеодекодер выполнен с возможностью декодирования копии сообщения с SEI в единице доступа для многосеансовой передачи.
9. Устройство по п. 5, при этом устройство представляет собой по меньшей мере одно из:
микропроцессора, интегральной схемы, цифрового процессора сигналов (DSP), программируемой пользователем вентильной матрицы (FPGA), настольного компьютера, переносного компьютера, планшетного компьютера, устройства беспроводной связи, телефона, телевизора, камеры, устройства отображения, цифрового мультимедийного проигрывателя, видеоигровой консоли, видеоигрового устройства или устройства потоковой передачи видео.
10. Устройство по п. 5, дополнительно содержащее:
дисплей, выполненный с возможностью отображения по меньшей мере одного изображения.
11. Устройство по п. 5, дополнительно содержащее:
приемник, при этом приемник выполнен с возможностью приема видеоданных через проводную связь или беспроводную связь.
12. Долговременный считываемый компьютером носитель, хранящий исполняемые компьютером инструкции, которые при исполнении одним или более процессорами устройства для декодирования видеоданных побуждают один или более процессоров:
декодировать, из битового потока, первую единицу уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения;
декодировать, из битового потока, вторую единицу NAL VCL в порядке декодирования в единице доступа;
декодировать, из битового потока, сообщение с информацией дополнительного улучшения (SEI) некоторого конкретного типа в единице доступа перед декодированием, из битового потока, упомянутой первой единицы NAL VCL, при этом сообщения с SEI содержат информацию, связанную с обработкой видеоданных; и
декодировать, из битового потока, копию сообщения с SEI упомянутого конкретного типа в единице доступа после декодирования, из битового потока, упомянутой первой единицы NAL VCL и перед декодированием, из битового потока, упомянутой второй единицы NAL VCL, при этом контент этой копии сообщения с SEI упомянутого конкретного типа в битовом потоке ограничивается, чтобы быть идентичным контенту декодированного сообщения с SEI упомянутого конкретного типа.
13. Долговременный считываемый компьютером носитель по п. 12, дополнительно содержащий инструкции, которые побуждают один или более процессоров:
определять конкретный тип сообщения с SEI;
определять значение временной идентификации единицы доступа; и
определять, разрешено ли присутствие сообщения с SEI, на основании значения временной идентификации единицы доступа и упомянутого типа сообщения с SEI,
при этом инструкции, которые побуждают один или более процессоров декодировать сообщение с SEI, содержат инструкции, которые побуждают один или более процессоров декодировать сообщение с SEI на основании определения того, что присутствие сообщения с SEI разрешено.
14. Долговременный считываемый компьютером носитель по п. 12, при этом сообщение SEI конкретного типа содержит одно из:
сообщения с SEI о периоде буферизации;
сообщения с SEI о синхронизации изображений;
сообщения с SEI о прямоугольнике автопанорамирования;
сообщения с SEI о полезной нагрузке заполнителя;
сообщения с SEI о зарегистрированных данных пользователя;
сообщения с SEI о незарегистрированных данных пользователя;
сообщения с SEI о точке восстановления;
сообщения с SEI об информации о сцене;
сообщения с SEI о моментальном снимке всего кадра;
сообщения с SEI о начале сегмента прогрессивного уточнения;
сообщения с SEI о конце сегмента прогрессивного уточнения;
сообщения с SEI о характеристиках зернистости пленки;
сообщения с SEI о предпочтении отображения с фильтром устранения блочности;
сообщения с SEI с указанием постфильтру;
сообщения с SEI об информации тонального отображения;
сообщения с SEI о компоновке пакетирования кадра;
сообщения с SEI об ориентации отображения;
сообщения с SEI с описанием структуры изображений;
сообщения с SEI с указанием поля;
сообщения с SEI с хэшем декодированного изображения;
сообщения с SEI с активными наборами параметров; или
сообщения с SEI о синхронизации суб-изображений.
15. Долговременный считываемый компьютером носитель по п. 12, в котором инструкции, которые побуждают один или более процессоров декодировать сообщение с SEI, содержат инструкции, которые побуждают один или более процессоров декодировать сообщение с SEI в единице доступа для многосеансовой передачи, и при этом инструкции, которые побуждают один или более процессоров декодировать копию сообщения с SEI, содержат инструкции, которые побуждают один или более процессоров декодировать копию сообщения с SEI в единице доступа для многосеансовой передачи.
16. Устройство для декодирования видеоданных, причем устройство содержит:
средство для декодирования, из битового потока, первой единицы уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения;
средство для декодирования, из битового потока, второй единицы NAL VCL в порядке декодирования в единице доступа;
средство для декодирования, из битового потока, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа в единице доступа перед декодированием, из битового потока, упомянутой первой единицы NAL VCL, при этом сообщения с SEI содержат информацию, связанную с обработкой видеоданных; и
средство для декодирования, из битового потока, копии сообщения с SEI упомянутого конкретного типа в единице доступа после декодирования, из битового потока, упомянутой первой единицы NAL VCL и перед декодированием, из битового потока, упомянутой второй единицы NAL VCL, при этом контент этой копии сообщения с SEI упомянутого конкретного типа в битовом потоке ограничивается, чтобы быть идентичным контенту декодированного сообщения с SEI упомянутого конкретного типа.
17. Способ для кодирования видеоданных, при этом способ содержит:
кодирование, в единице доступа, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения, а сообщения с SEI содержат информацию, связанную с обработкой этих видеоданных;
включение сообщения с SEI упомянутого конкретного типа перед первой единицей уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа;
кодирование, на основании ограничения контента многочисленных экземпляров сообщения с SEI упомянутого конкретного типа в единице доступа, копии сообщения с SEI упомянутого конкретного типа в единице доступа, причем упомянутое ограничение заключается в том, что контент кодируемой копии сообщения с SEI упомянутого конкретного типа должен быть идентичен контенту кодированного сообщения с SEI упомянутого конкретного типа; и
включение копии сообщения с SEI после упомянутой первой единицы NAL VCL в порядке декодирования и перед второй единицей NAL VCL в порядке декодирования в единице доступа.
18. Устройство для кодирования видеоданных, при этом устройство содержит:
блок памяти, выполненный с возможностью хранения видеоданных; и
видеодекодер, выполненный с возможностью:
кодирования, в единице доступа, сообщения с информацией дополнительного улучшения (SEI) некоторого конкретного типа, при этом единица доступа включает в себя видеоданные для восстановления по меньшей мере одного изображения, а сообщения с SEI содержат информацию, связанную с обработкой этих видеоданных;
включения сообщения с SEI упомянутого конкретного типа перед первой единицей уровня сетевой абстракции (NAL) уровня кодирования видео (VCL) в порядке декодирования в единице доступа;
кодирования, на основании ограничения контента многочисленных экземпляров сообщения с SEI упомянутого конкретного типа в единице доступа, копии сообщения с SEI упомянутого конкретного типа в единице доступа, причем упомянутое ограничение заключается в том, что контент кодируемой копии сообщения с SEI упомянутого конкретного типа должен быть идентичен контенту кодированного сообщения с SEI упомянутого конкретного типа; и
включения копии сообщения с SEI после упомянутой первой единицы NAL VCL в порядке декодирования и перед второй единицей NAL VCL в порядке декодирования в единице доступа.
19. Устройство по п. 18, при этом устройство представляет собой по меньшей мере одно из:
микропроцессора, интегральной схемы, цифрового процессора сигналов (DSP), программируемой пользователем вентильной матрицы (FPGA), настольного компьютера, переносного компьютера, планшетного компьютера, устройства беспроводной связи, телефона, телевизора, камеры, устройства отображения, цифрового мультимедийного проигрывателя, видеоигровой консоли, видеоигрового устройства или устройства потоковой передачи видео.
20. Устройство по п. 18, дополнительно содержащее:
камеру, выполненную с возможностью захвата по меньшей мере одного изображения.
ПЕРЕДАЧА СООБЩЕНИЙ ДОПОЛНИТЕЛЬНОЙ РАСШИРЕННОЙ ИНФОРМАЦИИ В ФОРМАТЕ ПОЛЕЗНОЙ НАГРУЗКИ ТРАНСПОРТНОГО ПРОТОКОЛА РЕАЛЬНОГО ВРЕМЕНИ | 2008 |
|
RU2430483C2 |
T | |||
SCHIERL et al | |||
"Slice Prefix for sub-picture and slice level HLS signalling", JCTVC-J0255 (version 2), опубл | |||
Устройство для электрической сигнализации | 1918 |
|
SU16A1 |
Колосоуборка | 1923 |
|
SU2009A1 |
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Авторы
Даты
2017-05-11—Публикация
2013-08-20—Подача