КОДИРОВАНИЕ ВИДЕО С УЛУЧШЕННЫМИ ПОВЕДЕНИЯМИ КАРТИНОК ТОЧКИ ПРОИЗВОЛЬНОГО ДОСТУПА
VIDEO ENCODING WITH IMPROVED RANDOM ACCESS POINT PICTURES BEHAVIORS

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США Номер 61/703,695, поданной 20 сентября 2012, все содержимое которой включено в настоящее описание по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие в целом относится к обработке видео данных и, более подробно, картинкам произвольного доступа, используемым в видео данных.
ОПИСАНИЕ УРОВНЯ ТЕХНИКИ
[0003] Цифровые видео способности могут быть включены в широкий диапазон устройств, включающий в себя цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDAs), ноутбуки или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, устройства видео игр, пульты видеоигр, сотовые или спутниковые радио-телефоны, так называемые «смартфоны», устройства организации видео телеконференций, устройства потоковой передачи видео, и т.п.. Цифровые видео устройства реализуют способы кодирования видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), развивающийся стандарт высокоэффективного кодирования видео (HEVC), и расширениях таких стандартов. Видео устройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую видео информацию более эффективно, реализовывая такие способы кодирования видео.
[0004] Способы кодирования видео включают в себя пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоке кодирования видео вырезка видео (например, видео кадр или часть видео кадра) может быть разделена в блоки видео, которые могут также упоминаться как блоки дерева, единицы кодирования (CUs) и/или узлы кодирования. Блоки видео во внутренне кодированной (I) вырезке картинки закодированы, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок закодирован согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок закодирован согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено, чтобы достигнуть даже большей величины сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом настоящее раскрытие описывает способы, чтобы обеспечить улучшенную поддержку картинок точки произвольного доступа (RAP), включая картинки чистого произвольного доступа (CRA) и картинки с доступом с разорванной ссылкой (BLA), при кодировании видео. В некоторых случаях картинки RAP могут альтернативно упоминаться как внутренние картинки точки произвольного доступа (IRAP). В частности, настоящее раскрытие описывает способы для выбора параметров буфера закодированных картинок (CPB), использованных для определения CPB для устройства кодирования видео для картинок CRA или картинок BLA в потоке битов видео. Или набор по умолчанию или альтернативный набор параметров CPB могут быть использованы для определения CPB. Если используется набор по умолчанию, когда альтернативный набор должен был быть выбран, CPB может переполниться.
[0007] В одном примере раскрытие направлено на способ обработки видео данных, содержащий прием потока битов, представляющего множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и прием сообщения, указывающего, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA. Способ далее содержит установку переменной, определенной, чтобы указывать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании принятого сообщения, и выбор набора параметров CPB для этой одной из картинок CRA или картинок BLA на основании переменной для картинки.
[0008] В другом примере раскрытие направлено на устройство кодирования видео для обработки данных видео, устройство содержит CPB, сконфигурированный, чтобы хранить видео данные, и один или более процессоров, сконфигурированных, чтобы принять поток битов, представляющий множество картинок, включающих в себя одну или более картинок CRA или картинок BLA, принять сообщение, указывающее, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA, устанавливать переменную, определенную, чтобы указывать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании принятого сообщения, и выбирать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании переменной для картинки.
[0009] В другом примере раскрытие направлено на устройство кодирования видео для обработки данных видео, устройство содержит средство для приема потока битов, представляющего множество картинок, включающих в себя одну или более картинок CRA или картинок BLA, средство для приема сообщения, указывающего, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA, средство для установки переменной, определенной, чтобы указывать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании принятого сообщения, и средство для выбора набора параметров CPB для этой одной из картинок CRA или картинок BLA на основании переменной для картинки.
[0010] В дополнительном примере раскрытие направлено на считываемый компьютером носитель, содержащий инструкции для обработки данных видео, причем инструкции, когда выполняются, заставляют один или более процессоров принимать поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, принимать сообщение, указывающее, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA, установить переменную, определенную, чтобы указывать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании принятого сообщения, и выбрать набор параметров CPB для этой одной из картинок CRA или картинок BLA на основании переменной для картинки.
[0011] Подробности одного или более примеров сформулированы в сопроводительных чертежах и описании ниже. Другие признаки, объекты, и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии.
[0013] ФИГ. 2 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0014] ФИГ. 3 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0015] ФИГ. 4 является блок-схемой, иллюстрирующей примерное устройство назначения, сконфигурированное, чтобы работать согласно гипотетическому опорному декодеру (HRD).
[0016] ФИГ. 5 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров буфера закодированных картинок (CPB) на основании переменной, которая указывает набор параметров CPB для конкретной картинки точки произвольного доступа (RAP) в потоке битов.
[0017] ФИГ. 6 является последовательностью операций, иллюстрирующей примерную операцию установки типа единицы уровня абстракции сети (NAL) для конкретной картинки RAP на основании переменной, которая указывает набор параметров CPB для картинки.
[0018] ФИГ. 7 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров CPB для конкретной картинки RAP на основании типа единицы NAL для картинки и переменной, которая указывает набор параметров CPB для картинки.
[0019] ФИГ. 8 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров CPB на основании переменной, определенной, чтобы указывать тип единицы уровня абстракции сети (NAL) для конкретной картинки RAP в потоке битов.
[0020] ФИГ. 9 является блок-схемой, иллюстрирующей примерный набор устройств, которые являются частью сети.
ПОДРОБНОЕ ОПИСАНИЕ
[0021] Настоящее раскрытие описывает способы, чтобы оказать улучшенную поддержку картинок точки произвольного доступа (RAP), включая картинки чистого произвольного доступа (CRA) и картинки с доступом с разорванной ссылкой (BLA), при кодировании видео. В некоторых случаях картинки RAP могут альтернативно упоминаться как внутренние картинки точки произвольного доступа (IRAP). В частности, настоящее раскрытие описывает способы для выбора параметров буфера закодированных картинок (CPB), использованных для определения CPB для устройства кодирования видео для картинок CRA или картинок BLA в потоке битов видео. Гипотетический опорный декодер (HRD) полагается на параметры HRD, которые включают в себя информацию периода буферизации и информацию тактирования картинки. Информация периода буферизации определяет параметры CPB, а именно, начальные задержки удаления CPB и начальные смещения задержки удаления CPB. Или набор по умолчанию или альтернативный набор параметров CPB могут быть использованы для определения CPB на основании типа картинки, использованной для инициализации HRD. Если используется набор по умолчанию, когда альтернативный набор должен был быть выбран, CPB в устройстве кодирования видео, которое соответствует HRD, может переполниться.
[0022] Согласно способам, устройство кодирования видео принимает поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и также принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для каждой из картинок CRA или картинок BLA. Сообщение может быть принято от внешнего средства, такого как средство обработки, включенное в сервер потоковой передачи, промежуточный элемент сети, или другой объект сети.
[0023] Устройство кодирования видео устанавливает переменную, определенную, чтобы указывать набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Устройство кодирования видео затем выбирает набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании переменной для картинки. Выбранный набор параметров CPB применяют к CPB, включенному в видео кодер или видео декодер, чтобы гарантировать, что CPB не будет переполняться во время кодирования видео. В некоторых случаях устройство кодирования видео может установить тип единицы уровня абстракции сети (NAL) для заданной одной из картинок CRA или картинок BLA. Устройство кодирования видео может установить тип единицы NAL для картинки как сигнализировано, или устройство кодирования видео может установить тип единицы NAL на основании переменной для картинки. Устройство кодирования видео может выбрать набор параметров CPB для заданной картинки на основании типа единицы NAL и переменной для этой картинки.
[0024] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, который обеспечивает закодированные видео данные, которые должны быть декодированы в более позднее время устройством 14 назначения. В частности, исходное устройство 12 выдает видео данные устройству 14 назначения с помощью считываемого компьютером носителя 16. Исходное устройство 12 и устройство 14 назначения могут содержать любое из широкого диапазона устройств, включающего в себя настольные компьютеры, портативные компьютеры (то есть, ноутбуки), планшетные компьютеры, телевизионные приставки, телефонные телефонные трубки, такие как так называемые «смарт» телефоны, так называемые «смарт» клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, устройство потоковой передачи видео, или подобное. В некоторых случаях исходное устройство 12 и устройство 14 назначения может быть оборудовано для беспроводной связи.
[0025] Устройство 14 назначения может принять закодированные видео данные, которые должны быть декодированы с помощью считываемого компьютером носителя 16. Считываемый компьютером носитель 16 может содержать любой тип носителя или устройства, способного к перемещению закодированных видео данных от исходного устройства 12 к устройству 14 назначения. В одном примере считываемый компьютером носитель 16 может содержать коммуникационный носитель, чтобы разрешить исходному устройству 12 передать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. Закодированные видео данные могут быть модулированными согласно стандарту связи, такому как протокол беспроводной связи, и переданы к устройству 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационный носитель может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0026] В некоторых примерах закодированные данные могут быть выведены из интерфейса 22 вывода на устройство хранения. Аналогично, к закодированным данным может получить доступ из устройства хранения интерфейс ввода. Устройство хранения может включать в себя любой из множества распределенных или локально доступных запоминающих носителей данных, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые запоминающие носители для того, чтобы хранить закодированные видео данные. В другом примере устройство хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может сохранить закодированное видео, генерируемое исходным устройством 12. Устройство 14 назначения может получить доступ к сохраненным видео данным из устройства хранения с помощью потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти закодированные видео данные к устройству 14 назначения. Файловые серверы примера включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства подсоединенных к сети запоминающих устройств (NAS), или локальный дисковод. Устройство 14 назначения может получить доступ к закодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Это может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных видео данных из устройства хранения может быть потоковой передачей, передачей загрузки, или их комбинацией.
[0027] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, потоковой передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложений. В некоторых примерах система 10 может конфигурироваться, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0028] В примере на ФИГ. 1, исходное устройство 12 включает в себя видео источник 18, видео кодер 20, и интерфейс 22 вывода. Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30, и устройство 32 отображения. В других примерах исходное устройство и устройство назначения могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принять видео данные из внешнего видео источника 18, такого как внешняя камера. Аналогично, устройство 14 назначения может осуществлять взаимодействие с внешним устройством отображения, вместо включения интегрированного устройства отображения.
[0029] Иллюстрированная система 10 на фиг. 1 является просто одним примером. Способы настоящего раскрытия могут быть выполнены любым цифровым устройством кодирования и/или декодирования видео. Хотя в целом способы выполнены видео устройством кодирования, способы могут также быть выполнены видео кодером/декодером, типично называемым "кодек". Кроме того, способы настоящего раскрытия могут также быть выполнены видео препроцессором. Исходное устройство 12 и устройство 14 назначения являются просто примерами таких устройств кодирования, в которых исходное устройство 12 генерирует закодированные видео данные для передачи к устройству 14 назначения. В некоторых примерах устройства 12, 14 могут работать по существу симметричным способе таким образом, что каждое из устройств 12, 14 включают в себя видео компоненты кодирования и декодирования. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видео устройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, вещания видео, или видео телефонии.
[0030] Видео источник 18 из исходного устройства 12 может включать в себя устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, и/или интерфейс подачи видео, чтобы принять видео от поставщика видео контента. В качестве еще одной альтернативы, видео источник 18 может генерировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию живого видео, заархивированного видео, и машинно-генерируемого видео. В некоторых случаях, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения может сформировать так называемые камерофоны или видео телефоны. Как упомянуто выше, однако, способы, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное, или машинно-генерируемое видео может быть закодировано видео кодером 20. Закодированная видео информация может затем быть выведена интерфейсом 22 вывода на считываемый компьютером носитель 16.
[0031] Считываемый компьютером носитель 16 может включать в себя временный носитель, такой как беспроводное вещание или передача по проводной сети, или запоминающие носители (то есть, невременные запоминающие носители), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видео диск, диск Blu-ray, или другой считываемый компьютером носитель. В некоторых примерах сетевой сервер (не показан) может принять закодированные видео данные от исходного устройства 12 и выдать закодированные видео данные устройству 14 назначения, например, через передачу по сети. Аналогично, вычислительное устройство фабрики по производству носителей, такой фабрики штамповки дисков, может принять закодированные видео данные от исходного устройства 12 и произвести диск, содержащий закодированные видео данные. Поэтому, считываемый компьютером носитель 16, как можно понимать, включает в себя один или более считываемых компьютером носителей различных форм, в различных примерах.
[0032] Интерфейс 28 ввода из устройства 14 назначения принимает информацию из считываемого компьютером носителя 16. Информация считываемого компьютером носителя 16 может включать в себя информацию синтаксиса, определенную видео кодером 20, которая также используется видео декодером 30, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку блоков и других закодированных блоков, например, GOPs. Устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED), или другой тип устройства отображения.
[0033] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту кодирования видео, такому как развивающийся стандарт высокоэффективного кодирования видео (HEVC), и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как Стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширения таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263. Хотя не показано на фиг. 1, в некоторых аспектах, видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексора-демультиплексора), или другое аппаратное обеспечение и программное обеспечение, чтобы обрабатывать кодирование и аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0034] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован Группой Экспертов по Кодированию видео ITU-T (VCEG) вместе с ISO/IEC Группой экспертов по движущимся изображениям (MPEG) как продукт коллективного товарищества, известного как Объединенная Видео Команда (JVT). В некоторых аспектах, способы, описанные в настоящем раскрытии, могут быть применены к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендации H.264 ITU-T, Усовершенствованное видео кодировании для общих аудиовизуальных услуг, Группой по изучению ITU-T, и датирован мартом 2005, который может быть упомянут здесь как стандарт H.264 или спецификация H.264, или стандарт H.264/AVC или спецификация. Объединенная Видео Команда (JVT) продолжает работать над расширениями к H.264/MPEG-4 AVC.
[0035] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Когда способы реализованы частично в программном обеспечении, устройство может сохранить инструкции для программного обеспечения в подходящем, невременном считываемом компьютером носителе и выполнить инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0036] JCT-VC работает над развитием стандарта HEVC. Усилия по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой тестовой моделью HEVC (HM). HM предполагает несколько дополнительных способностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM может обеспечить целых тридцать три режима кодирования с внутренним предсказанием.
[0037] Вообще, рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркость так и цветности. Данные синтаксиса в пределах потока битов могут определить размер для LCU, которая является наибольшей единицей кодирования в терминах количества пикселей. Вырезка включает в себя множество последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CUs) согласно квадродереву. Вообще, структура данных квадродерева включает в себя один узел в CU, с корневым узлом, соответствующим блоку дерева. Если CU разделена на четыре суб-единицы CU, узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной из суб-единиц CU.
[0038] Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывая, разделена ли CU, соответствующий узлу, в суб-единицы CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU в суб-единицы CU. Если CU не разделена далее, она называется как листовая CU. В настоящем раскрытии четыре суб-единицы CU листовой CU будут также упоминаться как листовые CU, даже если не будет никакого явного разделения первоначальной листовой CU. Например, если CU с размером 16x16 не будет разделена далее, то четыре 8x8 суб-единицы CU будут также упоминаться как листовые CU, хотя 16x16 CU никогда не разделялась.
[0039] CU имеют цель, подобную макроблоку стандарта H.264, за исключением того, что CU не имеет различия в размерах. Например, блок дерева может быть разделен на четыре дочерних узла (также называемый суб-единицы CU), и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен еще на четыре дочерних узла. Заключительный, неразделенный дочерний узел, называемый листовой узел квадродерева, содержит узел кодирования, также называемый листовой CU. Данные синтаксиса, ассоциированные с закодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, называемое максимальной глубиной CU, и может также определить минимальный размер узлов кодирования. Соответственно, поток битов может также определить наименьшую единицу кодирования (SCU). Настоящее раскрытие использует термин «блок», чтобы ссылаться на любую из CU, PU, или TU, в контексте HEVC, или подобные структуры данных в контексте других стандартов (например, макроблоки и его суб-блоки в H.264/AVC).
[0040] CU включает в себя узел кодирования и единицы предсказания (PUs), и единицы преобразования (TUs), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может ранжироваться от 8x8 пикселей до размера блока дерева с максимумом 64x64 пикселей или более. Каждая CU может содержать одну или более единиц PU и одну или более единиц TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU в одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU закодированной в режиме пропуска или прямом режиме, закодированной в режиме внутреннего предсказания или режиме внешнего предсказания. Единицы PU могут быть разделены, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU в одну или более единиц TU согласно квадродереву. TU может быть квадратной или неквадратной (например, прямоугольной) по форме.
[0041] Стандарт HEVC обеспечивает преобразования согласно единицам TU, которые могут быть различными для различных единиц CU. Единицы TU типично имеют размеры на основании размера единиц PU в пределах заданной CU, определенного для разделенной LCU, хотя это может не всегда иметь место. Единицы TU типично имеют тот же размер или меньший, чем единицы PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие блоки, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листовые узлы RQT могут упоминаться как единицы преобразования (TUs). Значения пиксельной разности, ассоциированные с единицами TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.
[0042] Листовая CU может включать в себя одну или более единиц предсказания (единиц PU). Вообще, PU представляет пространственную область, соответствующую всем или части соответствующей CU, и может включать в себя данные для того, чтобы извлечь опорную выборку для PU. Кроме того, PU включает в себя данные, относящиеся к предсказанию. Например, когда PU является закодированной во внутреннем режиме, данные для PU могут быть включены в остаточное квадродерево (RQT), которое может включать в себя данные, описывающие режим внутреннего предсказания для TU, соответствующей PU. В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие один или более векторов движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешения для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0, Список 1, или Список C) для вектора движения.
[0043] Листовая CU, имеющая одну или более единиц PU, может также включать в себя один или более единиц преобразования (TUs). Единицы преобразования могут быть определены, используя RQT (также называемой структурой квадродерева TU), как описано выше. Например, флаг разделения может указывать, разделена ли листовая CU на четыре единицы преобразования. Затем, каждая единица преобразования может быть разделена далее в дополнительные суб-единицы TU. Когда TU не разделена далее, она может упоминаться как листовая TU. Вообще, для внутреннего кодирования, все листовые единицы TU, принадлежащие листовой CU, совместно использую один и тот же режим внутреннего предсказания. Таким образом, один и тот же режим внутреннего предсказания в целом применяется, чтобы вычислить предсказанные значения для всех единиц TU листовой CU. Для внутреннего кодирования видео кодер может вычислить остаточное значение для каждой листовой TU, используя режим внутреннего предсказания, как разность между частью CU, соответствующей TU, и первоначальным блоком. TU не обязательно ограничена размером PU. Таким образом, Единицы TU могут быть больше или меньше, чем PU. Для внутреннего кодирования PU может быть совместно расположенной с соответствующей листовой TU для одной и той же CU. В некоторых примерах максимальный размер листовой TU может соответствовать размеру соответствующей листовой CU.
[0044] Кроме того, единицы TU листовых CU могут также быть ассоциированы с соответствующими структурами данных квадродерева, называемых остаточными квадродеревьями (RQTs). Таким образом, листовая CU может включать в себя квадродерево, указывающее, как листовая CU разделена на единицы TU. Корневой узел квадродерева TU вообще соответствует листовой CU, в то время как корневой узел квадродерева CU вообще соответствует блоку дерева (или LCU). Единицы TU в RQT, которые не разделены, упоминается как листовые TU. В целом настоящее раскрытие использует термины CU и TU, чтобы ссылаться на листовые CU и листовые TU, соответственно, если не отмечено иначе.
[0045] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) обычно содержит последовательность из одной или более видео картинок. GOP может включать данные синтаксиса в заголовок GOP, заголовок одной или более картинок или в другое место, которое описывает множество картинок, включенные в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над блоками видео в пределах индивидуальных видео вырезок, чтобы закодировать видео данные. Блок видео может соответствовать узлу кодирования в пределах CU. Блоки видео могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования.
[0046] В качестве примера, HM поддерживает предсказание в PU различных размеров. Предполагая, что размер конкретной CU равен 2Nx2N, HM поддерживает внутреннее предсказание в размерах PU 2Nx2N или NxN, и внешнее предсказание в симметричных размерах PU 2Nx2N, 2NxN, Nx2N, или NxN. HM также поддерживает асимметричное разделение для внешнего предсказания в размерах PU 2NxnU, 2NxnD, nLx2N, и nRx2N. При асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, обозначена «n», с последующей индикацией «верхний» «нижний», «левый, или «правый». Таким образом, например, «2NxnU» относится к 2Nx2N CU, которая разделена горизонтально с 2Nx0.5N PU сверху и 2Nx1.5N PU внизу.
[0047] В настоящем раскрытии «NxN» и «N на N» может использоваться взаимозаменяемо, чтобы ссылаться на пиксельные измерения блока видео в терминах вертикальных и горизонтальных измерений, например, 16x16 пикселей или 16 на 16 пикселей. Вообще, блок 16x16 имеет 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в рядах и колонках. Кроме того, блоки не обязательно должны иметь то же самое количество пикселей в горизонтальном направлении как в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где М не обязательно равно N.
[0048] После кодирования с внутренним предсказанием или внешним предсказанием, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные для единиц TU в CU. Единицы PU могут содержать данные синтаксиса, описывающие способ, или режим генерирования предсказывающих пиксельных данных в пространственной области (также называемой пиксельной областью), и единицы TU могут содержать коэффициенты в области преобразования после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально подобное преобразование остаточным видео данным. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания, соответствующих единицам PU. Видео кодер 20 может сформировать единицы TU, включающие в себя остаточные данные для CU, и затем преобразовать единицы TU, чтобы сформировать коэффициенты преобразования для CU.
[0049] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование вообще относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону к m-битовому значению во время квантования, где n больше чем m.
[0050] После квантования видео кодер может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть разработано, чтобы поместить коэффициенты более высокой энергии (и поэтому более низкой частоты) впереди массива и поместить коэффициенты более низкой энергии (и поэтому более высокой частоты) позади массива. В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например. Согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), Энропийному кодированию с разделением интервала вероятности (PIPE) или другой методологии энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными для использования видео декодером 30 при декодировании видео данных.
[0051] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относиться к тому, например, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0052] Видео кодер 20 может также послать данные синтаксиса, такие как основанные на блоке данные синтаксиса, основанные на кадре данные синтаксиса, и основанные на GOP данные синтаксиса, к видео декодеру 30, например, в заголовке кадра, заголовке блока, заголовке вырезки, или заголовке GOP. Данные синтаксиса GOP могут описывать множество кадров в соответствующей GOP, и данные синтаксиса кадра могут указывать режим кодирования/предсказания, использованный для соответствующего кадра.
[0053] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера или декодера, когда применимо, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логическая схема, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного видео кодера/декодера (кодек). Устройство, включающее в себя видео кодер 20 и/или видео декодер 30 может содержать интегральную схему, микропроцессор, и/или устройство беспроводной связи, такое как сотовый телефон.
[0054] Стандарты кодирования видео могут включать в себя спецификацию модели буферизации видео. В AVC и HEVC модель буферизации упоминается как гипотетический опорный декодер (HRD), который включает в себя модель буферизации как буфера закодированных картинок (CPB) так и буфера декодированных картинок (DPB), включенных в видео кодер 20 и/или видео декодер 30, и Поведения CPB и DPB математически определены. HRD непосредственно налагает ограничения на различное тактирование, размеры буфера и частоты следования битов, и косвенно налагает ограничения на характеристики потока битов и статистику. Полный набор параметров HRD включает в себя пять основных параметров: начальная задержка удаления CPB, размер CPB, частота следования битов, начальная задержка вывода DPB, и размер DPB. В AVC и HEVC, соответствие потока битов и соответствие декодера определены как части спецификации HRD. Хотя это называют как тип декодера, HRD типично необходим на стороне кодера, чтобы гарантировать соответствие потока битов, то есть, соответствие потока битов, генерируемого кодером, к требованиям декодера, в то время как типично не является необходимым на стороне декодера.
[0055] В моделях HRD в AVC и HEVC декодирование или удаление CPB является основанным на единице доступа, и предполагается, что декодирование картинки является мгновенным. В практических применениях, если соответствующий декодер строго следует сигнализированным временам декодирования, например, в сообщениях дополнительной информации расширения (SEI) тактирования картинки, чтобы начать декодировать единицы доступа, то самое раннее время, чтобы вывести конкретную декодированную картинку, равно времени декодирования этой конкретной картинки плюс время, необходимое для того, чтобы декодировать эту конкретную картинку. В отличие от модели HRD в AVC и HEVC, время, необходимое для того, чтобы декодировать картинку в реальном мире, не равно нулю термины «мгновенный» и «мгновенно», как используются в настоящем раскрытии, могут относиться к любой продолжительности времени, которое может предполагаться является мгновенным в одной или более моделях кодирования или идеализированном аспекта любой из одной или более моделей кодирования, с пониманием, что это может отличаться от того, чтобы быть "мгновенным" в физическом или буквальном смысле. Например, в целях настоящего раскрытия, функция или процесс могут рассматриваться как номинально "мгновенные", если это имеет место в или в пределах практических границ гипотетического или идеализированного самого раннего времени для этих функции или процесса, которые должны быть выполнены. Синтаксис и имена переменной, как используются здесь, могут в некоторых примерах быть поняты в соответствии с их значением в пределах модели HEVC.
[0056] Нижеследующие описания примерной работы гипотетического опорного декодера (HRD), примерной работы буфера закодированных картинок, примерного тактирования прихода потока битов, примерного тактирования удаления единицы декодирования, примерного декодирования единицы декодирования, примерной работы буфера декодированных картинок, примерного удаления картинок из буфера декодированных картинок, примерного вывода картинок, и примерного маркирования текущей декодированной картинки и запоминающее устройство предоставлены, чтобы иллюстрировать примеры видео кодера 20 и/или видео декодера 30, который может конфигурироваться, чтобы сохранить одну или более единиц декодирования видео данных в буфере картинок, получить соответствующее время удаления буфера для одной или более единиц декодирования, удалить единицы декодирования из буфера картинок в соответствии с полученным временим удаления буфера для каждой из единиц декодирования, и закодировать видео данные, соответствующие удаленным единицам декодирования, среди других функций. Операции могут быть определены или выполнены по иному, в других примерах. В этом способе видео кодер 20 и/или видео декодер 30 могут конфигурироваться, чтобы работать согласно различным примерам операций HRD, описанных ниже.
[0057] HRD может инициализироваться при любом из сообщений дополнительной информации расширения (SEI) периода буферизации. До инициализации CPB может быть пустым. После инициализации HRD может не инициализироваться снова последующим сообщением SEI периода буферизации. Единица доступа, которая ассоциирована с сообщением SEI периода буферизации, которое инициализирует CPB, может упоминаться как единица доступа 0. Буфер декодированных картинок может содержать буферы хранения картинок. Каждый из буферов хранения картинок может содержать декодированную картинку, которая маркирована как «используется для ссылки» или хранится для будущего вывода. До инициализации DPB может быть пустым.
[0058] HRD (например, видео кодер 20 и/или видео декодер 30) может работать следующим образом. Данные, ассоциированные с единицами декодирования, которые поступают в CPB согласно заданному списку прихода, могут быть доставлены гипотетическим планировщиком потока (HSS). В одном примере данные, ассоциированные с каждой единицей декодирования, могут быть удалены и декодированы мгновенно процессом мгновенного декодирования в моменты времени удаления CPB. Каждая декодированная картинка может быть помещена в DPB. Декодированная картинка может быть удалена из DPB в последнее из времени вывода DPB или времени, когда она становится больше не необходимой для ссылки внешнего предсказания.
[0059] HRD полагается на параметры HRD, включая параметры CPB начальной задержки удаления CPB и начального смещения задержки удаления CPB. В некоторых случаях параметры HRD могут быть определены на основании типа картинки, использованной для инициализации HRD. В случае произвольного доступа HRD может инициализироваться картинкой точки произвольного доступа (RAP), такой как картинка чистого произвольного доступа (CRA) или картинка доступа с разорванной ссылкой (BLA). В некоторых случаях картинки RAP могут альтернативно упоминаться как внутренние картинки точки произвольного доступа (IRAP). Например, альтернативный набор параметров CPB может использоваться, когда HRD инициализируется картинкой BLA, которая не имеет ассоциированных недекодируемых начальных картинок, также названных тегированных для отбрасывания (TFD) картинками или начальными картинками с пропущенным произвольным доступом (RASL), в потоке битов. Иначе, набор по умолчанию параметров CPB используется для HRD. Если используется набор по умолчанию параметров CPB, когда альтернативный набор должен был быть выбран, CPB может переполниться.
[0060] В некоторых примерах заданная картинка картинка CRA или BLA могут иметь ассоциированные картинки TFD в первоначальном потоке битов и эти картинки TFD могут быть удалены из первоначального потока битов внешними средствами. Внешнее средство может содержать средство обработки, включенное в сервер потоковой передачи, промежуточный элемент сети, или другой объект сети. Внешнее средство, однако, может быть неспособно изменить сигнализированный тип заданной картинки CRA или картинки BLA, чтобы отразить удаление ассоциированных картинок TFD. В этом случае набор по умолчанию параметров CPB может быть выбран на основании сигнализированного типа картинки CRA или картинки BLA в первоначальном потоке битов. Это может привести к переполнению CPB, потому что картинки TFD были удалены внешним средством таким образом, что картинка больше не имеет ассоциированных картинок TFD, и альтернативный набор параметров CPB должен использоваться для HRD.
[0061] Настоящее раскрытие описывает способы для выбора параметров CPB, использованных для определения CPB для видео кодера 20 и/или видео декодера 30 для картинок CRA или картинок BLA в потоке битов видео. Согласно способам, видео декодер 30 принимает поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и также принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA. Сообщение может быть принято от внешнего средства, такого как средство обработки, включенное в сервер потоковой передачи, промежуточный элемент сети, или другой объект сети.
[0062] Видео декодер 30 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Видео декодер 30 затем выбирает набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании переменной для картинки. В некоторых случаях видео декодер 30 может установить тип единицы уровня абстракции сети (NAL) для заданной одной из картинок CRA или картинок BLA, и может выбрать набор параметров CPB для заданной картинки на основании типа единицы NAL и переменной для этой картинки.
[0063] Выбранный набор параметров CPB применяют к CPB, включенному в видео декодер 30, чтобы гарантировать, что CPB не будет переполняться во время декодирования видео. Видео кодер 20 может быть сконфигурирован, чтобы выполнить аналогичную операцию и применить выбранный набор параметров CPB к CPB, включенному в видео кодер 20, чтобы гарантировать, что CPB, включенный в видео кодер 20, не будет переполняться во время кодирования видео, и что CPB, включенный в видео декодер 30, не будет переполняться после приема закодированного потока битов, генерируемого видео кодером 20.
[0064] ФИГ. 2 является блок-схемой, иллюстрирующей пример видео кодера 20, который может реализовать способы, описанные в настоящем раскрытии. Видео кодер 20 может выполнить внутреннее и внешнее кодирование блоков видео в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (I режим) может относиться к любому из нескольких пространственно основанных режимов кодирования. Внешние режимы, такие как однонаправленное предсказание (P режим) или bi-предсказание (B режим), могут относиться к любому из нескольких временно основанных режимов кодирования.
[0065] Как показано на фиг. 2, видео кодер 20 принимает текущий блок видео в пределах видео кадра, который должен быть закодирован. В примере на ФИГ. 2, видео кодер 20 включает в себя модуль 40 выбора режима, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования, буфер 64 декодированных картинок (DPB) и буфер 66 закодированных картинок (CPB). Модуль 40 выбора режима, в свою очередь, включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 обработки внутреннего предсказания, и модуль 48 разделения. Для реконструкции блока видео видео кодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, и сумматор 62. Фильтр удаления блочности (не показанный на фиг. 2) может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично может фильтровать выходной сигнал сумматора 62. Дополнительные фильтры (в контуре или после контура) могут также использоваться в дополнение к фильтру удаления блочности. Такие фильтры не показаны для краткости, но если желательно, могут фильтровать выходной сигнал сумматора 50 (как фильтр в контуре).
[0066] Во время процесса кодирования видео кодер 20 принимает видео кадр или вырезку, которая должны быть закодирована. Кадр или вырезка могут быть разделены на множественные блоки видео. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого блока видео относительно одного или более блоков в одном или более опорных кадров, чтобы обеспечить временное предсказание. Модуль 46 обработки внутреннего предсказания может альтернативно выполнить кодирование с внутренним предсказанием принятого блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке в качестве блока, который должен быть закодирован, чтобы обеспечить пространственное предсказание. Видео кодер 20 может выполнить множественные проходы кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видео данных.
[0067] Кроме того, модуль 48 разделения может разделить блоки видео данных в суб-блоки, на основании оценки предыдущих схем разделения в предыдущих проходах кодирования. Например, модуль 48 разделения может первоначально разделить кадр или вырезку на единицы LCU, и разделение каждой из единиц LCU в суб-единицы CU, на основании анализа «скорость передачи - искажение» (например, оптимизация «скорость передачи - искажение»). Модуль 40 выбора режима может далее сформировать структуру данных квадродерева, указывающую разделения LCU в суб-единицы CU. Листовые единицы CU квадродерева моутт включать в себя одну или более единиц PU и одну или более единиц TU.
[0068] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибок, и обеспечивает результирующий внутренне или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорного кадра. Модуль 40 выбора режима также обеспечивает элементы синтаксиса, такие как вектора движения, индикаторы внутреннего режима, информацию разделения, и другую такую информацию синтаксиса, к модулю 56 энтропийного кодирования.
[0069] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная модулем 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать смещение PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорного кадра (или другой закодированной единицы) относительно текущего блока, закодированного в пределах текущего кадра (или другой закодированной единицы). Предсказывающий блок является блоком, который обнаруживают, как близко соответствующий блоку, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов(SSD), или другими метриками разности. В некоторых примерах видео кодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных картинок, сохраненных в DPB 64. Например, видео кодер 20 может интерполировать значения пиксельных позиций с одной четвертью, пиксельных позиций с одной восьмой, или других фракционных пиксельных позиций опорной картинки. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0070] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео во внешне кодированной вырезке, сравнивая позицию PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицирует одну или более опорных картинок, сохраненных в DPB 64. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0071] Компенсация движения, выполняемая модулем 44 компенсации движения, может вовлечь установку или генерирование предсказывающего блока на основании вектора движения, определенного модулем 42 оценки движения. Снова, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированными в некоторых примерах. После приема вектора движения для PU текущего блока видео модуль 44 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок. Сумматор 50 формирует остаточный блок видео, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего закодированного блока видео, формируя значения пиксельной разности, как описано ниже. Вообще, модуль 42 оценки движения выполняет оценку движения относительно компонентов яркости, и модуль 44 компенсации движения использует вектора движения, вычисленные на основании компонентов яркости и для компонентов цветности и для компонентов яркости. Модуль 40 выбора режима может также генерировать элементы синтаксиса, ассоциированные с блоками видео и видео вырезкой для использования видео декодером 30 при декодировании блоков видео видео вырезки.
[0072] Модуль 46 обработки внутреннего предсказания может внутренне предсказывать текущий блок, как альтернатива внешнему предсказанию, выполненному модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 обработки внутреннего предсказания может определить режим внутреннего предсказания для использования, чтобы закодировать текущий блок. В некоторых примерах модуль 46 обработки внутреннего предсказания может закодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 обработки внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из протестированных режимов.
[0073] Например, модуль 46 обработки внутреннего предсказания может вычислить значения «скорость передачи - искажение», используя анализ «скорость передачи - искажение» для различных протестированных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики «скорость передачи - искажение» среди протестированных режимов. Анализ «скорость передачи - искажение» вообще определяет величину искажения (или ошибку) между закодированным блоком и первоначальным, незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, так же как скорость передачи в битах (то есть, количество битов), использованную для формирования закодированного блока. Модуль 46 обработки внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение «скорость передачи - искажение» для блока.
[0074] После выбора режима внутреннего предсказания для блока модуль 46 обработки внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока, к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может закодировать информацию, указывающую выбранный режим внутреннего предсказания. Видео кодер 20 может включать в переданный поток битов данные конфигурации, которые могут включать в себя множество таблиц индексов режима внутреннего предсказания, и множество модифицированных таблиц индексов режима внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, и индикации самого вероятного режима внутреннего предсказания, таблицы индекса режима внутреннего предсказания, и модифицированной таблицы индекса режима внутреннего предсказания, чтобы использовать для каждого из контекстов.
[0075] Видео кодер 20 формирует остаточный блок видео, вычитая данные предсказания из модуля 40 выбора режима из первоначального закодированного блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, к остаточному блоку, формируя блок видео, содержащий остаточные значения коэффициентов преобразования. Модуль 52 обработки преобразования может выполнить другие преобразования, которые концептуально подобны DCT. Вейвлет преобразования, целочисленные преобразования, преобразования поддиапазонов частот, или другие типы преобразования могут также использоваться. В любом случае модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из области пиксельных значений к области преобразования, такой как частотная область. Модуль 52 обработки преобразования может послать получающиеся коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 энтропийного кодирования может выполнить сканирование.
[0076] После квантования модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энропийное кодирование с разделением интервала вероятности (PIPE) или другой метод энтропийного кодирования. В случае основанного на контексте энтропийного кодирования контекст может быть основан на соседних блоках. После энтропийного кодирования модулем 56 энтропийного кодирования закодированный поток битов может быть буферизован или сохранен более или менее временно в CPB 66, передан на другое устройство (например, видео декодер 30) или заархивирован для более поздней передачи или поиска.
[0077] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислить опорный блок, добавляя остаточный блок к предсказывающему блоку одного из кадров DPB 64. Модуль 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, сформированному модулем 44 компенсации движения, чтобы сформировать восстановленный блок видео для хранения в DPB 64. Восстановленный блок видео может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока, чтобы внешне кодировать блок в последующем видео кадре.
[0078] DPB 64 может быть или может быть включен в устройство хранения данных, такое как любая постоянная или энергозависимая память, способная к тому, чтобы хранить данные, такая как синхронная динамическая память с произвольным доступом (SDRAM), встроенная динамическая память с произвольным доступом (eDRAM), или статическая память с произвольным доступом (SRAM). DPB 64 может работать согласно любой комбинации примерного буфера закодированных картинок и/или поведений буфера декодированных картинок, описанных в настоящем раскрытии. Например, видео кодер 20 может быть сконфигурирован, чтобы работать согласно гипотетическому опорному декодеру (HRD). В этом случае DPB 64, включенный в видео кодер 20, может быть определен параметрами HRD, включая параметры CPB и параметры DPB, в соответствии с моделью буферизации HRD.
[0079] Аналогично, CPB 66 может быть или может быть включен в устройство хранения данных, такое как любая постоянная или энергозависимая память, способная к тому, чтобы хранить данные, такая как синхронная динамическая память с произвольным доступом (SDRAM), встроенная динамическая память с произвольным доступом (eDRAM), или статическая память с произвольным доступом (SRAM). Хотя показан как являющийся частью видео кодера 20, в некоторых примерах CPB 66 может быть частью устройства, блока, или модуля, внешнего к видео кодеру 20. Например, CPB 66 может быть частью модуля планировщика потока, например, планировщика доставки или гипотетического планировщика потока (HSS), внешнего к видео кодеру 20. В случае, когда видео кодер 20 конфигурируется, чтобы работать согласно HRD, CPB 66, включенный в видео кодер 20, может быть определен параметрами HRD, включая параметры CPB начальной задержки удаления CPB и смещения, в соответствии с моделью буферизации HRD.
[0080] Согласно способам настоящего раскрытия, видео кодер 20 может применить или набор по умолчанию или альтернативный набор параметров CPB к CPB 66, чтобы гарантировать, что CPB 66 не переполняется во время кодирования видео данных, и что CPB, включенный в видео декодер 30, не переполняется после приема закодированного потока битов, генерируемого видео кодером 20. Если используется набор по умолчанию, когда альтернативный набор должен был быть выбран, CPB 66, включенный в видео кодер 20, или CPB, включенный в видео декодер 30, могут переполниться. Выбор соответствующих параметров CPB является прежде всего затруднением, когда картинка точки произвольного доступа (RAP), такая как картинка чистого произвольного доступа (CRA) или картинка доступа с разорванной ссылкой (BLA), используется для инициализации HRD. Способы, поэтому могут оказать улучшенную поддержку картинок RAP при кодировании видео.
[0081] Видео кодер 20 может быть сконфигурирован, чтобы принять поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и также принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA. В некоторых случаях поток битов может быть принят в части декодирования видео кодера 20, то есть, модуле 58 обратного квантования и модуле 60 обработки обратного преобразования, непосредственно от части кодирования видео кодера 20, например, модуля 56 энтропийного кодирования или CPB 66. Сообщение может быть принято от внешнего средства, такого как средство обработки, включенного в сервер потоковой передачи, промежуточный элемент сети, или другой объект сети.
[0082] Видео кодер 20 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Видео кодер 20 затем выбирает набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании переменной для картинки. Видео кодер 20 применяет выбранный набор параметров CPB в CPB 66, включенный в видео кодер 20, чтобы гарантировать, что CPB 66 не будет переполняться во время кодирования видео, и гарантировать, что CPB, включенный в видео декодер 30, не будет переполняться после приема закодированного потока битов, генерируемого видео кодером 20. В некоторых случаях видео кодер 20 может установить тип единицы уровня абстракции сети (NAL) для заданной одной из картинок CRA или картинок BLA, и может выбрать набор параметров CPB для заданной картинки на основании типа единицы NAL и переменной для этой картинки. Процесс выбора параметра CPB для картинок RAP описан более подробно относительно видео декодера 30 на фиг. 3.
[0083] ФИГ. 3 является блок-схемой, иллюстрирующей пример видео декодера 30, который может реализовать способы, описанные в настоящем раскрытии. В примере на ФИГ. 3 видео декодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 71 обработки предсказания, включающий в себя модуль 72 компенсации движения и модуль 74 обработки внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обработки обратного преобразования, сумматор 80, буфер закодированных картинок (CPB) 68, и буфер декодированных картинок (DPB) 82. Видео декодер 30, в некоторых примерах, может выполнить проход декодирования, в целом обратный к проходу кодирования, описанному относительно видео кодера 20 на фиг. 2.
[0084] Во время процесса декодирования видео декодер 30 принимает закодированный видео поток битов, который представляет блоки видео закодированной видео вырезки и ассоциированные элементы синтаксиса от видео кодера 20. Видео декодер 30 может принять закодированный видео поток битов от сетевого объекта 29. Сетевой объект 29 может, например, быть сервером потоковой передачи, осведомленным о медиа элементом сети (MANE), видео редактором/модулем стыковки, промежуточным элементом сети, или другим таким устройством, сконфигурированным, чтобы реализовать один или более способов, описанных выше. Сетевой объект 29 может включать в себя внешнее средство, сконфигурированное, чтобы выполнить способы настоящего раскрытия. Как описано выше, некоторые из способов, описанных в настоящем раскрытии, могут быть реализованы сетевым объектом 29 до того, как сетевой объект 29 передаст закодированный потока битов видео к видео декодеру 30. В некоторых системах декодирования видео сетевой объект 29 и видео декодер 30 могут быть частями отдельных устройств, в то время как в других случаях функциональные возможности, описанные относительно сетевого объекта 29, могут быть выполнены тем же самым устройством, которое содержит видео декодер 30.
[0085] До энтропийного декодирования модулем 70 энтропийного декодирования, поток битов может быть буферизован или сохранен более или менее временно в CPB 68. Модуль 70 энтропийного декодирования из видео декодера 30 затем энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения или индикаторы режима внутреннего предсказания, и другие элементы синтаксиса. Модуль 70 энтропийного декодирования направляет вектора движения и другие элементы синтаксиса к модулю 72 компенсации движения. Видео декодер 30 может принять элементы синтаксиса на уровне вырезки видео и/или уровне блока видео.
[0086] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, модуль 74 обработки внутреннего предсказания может генерировать данные предсказания для блока видео текущей видео вырезки на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть, B или P) вырезка, модуль 72 компенсации движения формирует предсказывающие блоки для блока видео текущей видео вырезки на основании вектора движения и других элементов синтаксиса, принятых от модуля 70 энтропийного декодирования. Предсказывающие блоки могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя способы построения по умолчанию, на основании опорных картинок, сохраненных в DPB 82.
[0087] Модуль 72 компенсации движения определяет информацию предсказания для блока видео текущей видео вырезки, синтаксически разбирая вектора движения и другие элементы синтаксиса, и использует информацию предсказания, чтобы сформировать предсказывающие блоки для текущего декодируемого блока видео. Например, модуль 72 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), использованный для кодирования блоков видео вырезки видео, тип вырезки внешнего предсказания (например, B вырезка или P вырезка), информацию построения для одного или более списков опорных картинок для вырезки, вектора движения для каждого внешне кодированного блока видео вырезки, статус внешнего предсказания для каждого внешне кодированного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке.
[0088] Модуль 72 компенсации движения может также выполнить интерполяцию, на основании фильтров интерполяции. Модуль 72 компенсации движения может использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорных блоков. В этом случае модуль 72 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, из принятых элементов синтаксиса, и использовать фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0089] Модуль 76 обратного квантования выполняет обратное квантование, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов, и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования QPY, вычисленного видео декодером 30, для каждого блока видео в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 78 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0090] После того, как модуль 72 компенсации движения генерирует предсказывающий блок для текущего блока видео на основании вектора движения и других элементов синтаксиса, видео декодер 30 формирует декодированный блок видео, суммируя остаточные блоки от модуля 78 обратного преобразования с соответствующими предсказывающими блоками, генерируемыми модулем 72 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Другие фильтры контура (или в контуре кодирования или после контура кодирования) могут также быть использованными для сглаживания пиксельных переходов, или иначе улучшить видео качество. Декодированные блоки видео в заданном кадре или картинке затем сохраняют в DPB 82, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 82 также хранит декодированное видео для более позднего представления на устройстве отображения, такого как устройство 32 отображения на фиг. 1.
[0091] DPB 82 может быть или может быть включен в устройство хранения данных, такое как любая постоянная или энергозависимая память, способная к тому, чтобы хранить данные, такая как синхронная динамическая память с произвольным доступом (SDRAM), встроенная динамическая память с произвольным доступом (eDRAM), или статическая память с произвольным доступом (SRAM). DPB 82 может работать согласно любой комбинации примерного буфера закодированных картинок и/или поведений буфера декодированных картинок, описанных в настоящем раскрытии. Например, видео декодер 30 может быть сконфигурирован, чтобы работать согласно гипотетическому опорному декодеру (HRD). В этом случае видео декодер 30 может декодировать параметры HRD, включая параметры CPB, и параметры DPB, использованные для определения DPB 82 в соответствии с моделью буферизации HRD.
[0092] Аналогично, CPB 68 может быть или может быть включен в устройство хранения данных, такое как любая постоянная или энергозависимая память, способная к тому, чтобы хранить данные, такая как синхронная динамическая память с произвольным доступом (SDRAM), встроенная динамическая память с произвольным доступом (eDRAM), или статическая память с произвольным доступом (SRAM). Хотя показан как являющийся частью видео декодера 30, в некоторых примерах, CPB 68 может быть частью устройства, блока, или модуля, внешнего к видео декодеру 30. Например, CPB 68 может быть частью модуля планировщика потока, например, планировщика доставки или гипотетического планировщика потока (HSS), внешнего к видео декодеру 30. В случае, когда видео декодер 30 конфигурируется, чтобы работать согласно HRD, видео декодер 30 может декодировать параметры HRD, включая параметры CPB начальной задержки и смещения удаления CPB, использованных для определения CPB 68 в соответствии с моделью буферизации HRD.
[0093] Согласно способам настоящего раскрытия, видео декодер 30 может применить или набор по умолчанию или альтернативный набор параметров CPB к CPB 68, чтобы гарантировать, что CPB 68 не переполняется во время декодирования видео данных. Если используется набор по умолчанию, когда альтернативный набор должен был быть выбран, CPB 68, включенный в видео декодер 30, сконфигурированный, чтобы работать согласно HRD, может переполниться. Выбор соответствующих параметров CPB является прежде всего затруднением, когда картинка точки произвольного доступа (RAP), такая как картинка чистого произвольного доступа (CRA) или картинка доступа с разорванной ссылкой (BLA), используется для инициализации HRD. Способы, поэтому могут оказать улучшенную поддержку картинок RAP при кодировании видео.
[0094] Видео декодер 30 принимает поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и также принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA. Сообщение может быть принято от сетевого объекта 29 или другого внешнего средства, такого как средство обработки, включенное в сервер потоковой передачи или промежуточный элемент сети.
[0095] Видео декодер 30 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Устройство кодирования видео затем выбирает набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании переменной для картинки. Видео декодер 30 применяет выбранный набор параметров CPB к CPB 68, чтобы гарантировать, что CPB 68 не будет переполняться во время декодирования видео. В некоторых случаях видео декодер 30 может установить тип единицы уровня абстракции сети (NAL) для заданной одной из картинок CRA или картинок BLA. Видео декодер 30 может установить тип единицы NAL для картинки как сигнализировано, или может установить тип единицы NAL на основании переменной для картинки. Видео декодер 30 может затем выбрать набор параметров CPB для заданной картинки на основании типа единицы NAL и переменной для этой картинки.
[0096] В целом настоящее раскрытие описывает способы, чтобы оказать улучшенную поддержку картинок RAP, включая улучшенные способы выбора параметров HRD для картинок RAP, и оперируя с картинками CRA как с картинками BLA. Как описано выше, стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения Масштабируемое Кодирование видео (SVC) и Кодирование видео Множественных видов (MVC). Кроме того, имеется новый стандарт кодирования видео, а именно, Высокоэффективное кодирование видео (HEVC), развиваемый Объединенной Командой Сотрудничества по кодированию видео (JCT-VC) Группы Экспертов по Кодированию видео ITU-T (VCEG) и ISO/IEC Группы Экспертов по движущимся изображениям (MPEG). Недавний Рабочий Проект (WD) HEVC (ниже называемый HEVC WD8) описан в документе JCTVC-J1003_d7, Bross и др. «High Efficiency Video Coding (HEVC) Text Specification Draft 8», Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, Sweden, 11-20 июля 2012, который, на 20 сентября 2012, доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.
[0097] Произвольный доступ относится к декодированию потока битов видео, начинающегося с закодированной картинки, которая не является первой закодированной картинкой в потоке битов. Произвольный доступ к потоку битов необходим во многих видео приложениях, таких как вещание и потоковая передача, например, для пользователей, чтобы настроиться на программу в любое время, переключиться между различными каналами, перейти к конкретным частям видео, или переключиться на другой поток битов для адаптации потока частоты следования битов, частоты кадров, пространственного разрешения, и т.п.. Эта особенность обеспечивается посредством вставку картинок произвольного доступа или точек произвольного доступа много раз с регулярными интервалами, в видео поток битов.
[0098] Стыковка потока битов относится к конкатенации двух или более потоков битов или его частей. Например, к первому потоку битов может быть присоединен второй поток битов, возможно с некоторыми модификациями или в одном или обоих из потоков битов, чтобы генерировать стыкованный поток битов. Первая закодированная картинка во втором потоке битов также упоминается как точка соединения. Поэтому картинки после точки соединения в стыкованном потоке битов были порождены из второго потока битов, в то время как картинки, предшествующие точке соединения в стыкованном потоке битов, были порождены из первого потока битов.
[0099] Стыковка потоков битов выполняется модулями стыковки потоков битов. Модули стыковки потоков битов часто легки и намного менее интеллектуальны, чем кодеры. Например, они могут не быть оборудованы способностями энтропийного кодирования и декодирования. Переключение потока битов может использоваться в адаптивных текущих средах. Операция переключения потока битов в некоторой картинке в потоке битов, к которому осуществлено переключение является по существу операцией стыковки потоков битов, в котором точка соединения является точкой переключения потока битов, то есть, первой картинкой из потока битов, к которому осуществлено переключение.
[0100] Картинки мгновенного обновления декодирования (IDR), как определено в AVC или HEVC, может использоваться для произвольного доступа. Однако, так как картинки после картинки IDR в порядке декодирования не могут использовать картинки, декодированные до картинки IDR в качестве ссылки, потоки битов, полагающиеся на картинки IDR для произвольного доступа, могут иметь значительно более низкую эффективность кодирования. Чтобы улучшить эффективность кодирования, концепция картинки чистого произвольного доступа (CRA) была введена в HEVC, чтобы позволить картинкам, которые следуют за картинкой CRA в порядке декодирования, но предшествуют ему в порядке вывода, использовать картинки, декодированные перед картинкой CRA в качестве опорных картинок.
[0101] Картинки, которые следуют за картинкой CRA в порядке декодирования, но предшествуют картинке CRA в порядке вывода, упоминаются как начальные картинки, ассоциированные с картинкой CRA или начальными картинками картинки CRA. Начальные картинки картинки CRA являются корректно декодируемыми, если декодирование начинается с картинки IDR или CRA перед текущей картинкой CRA. Начальные картинки картинки CRA могут быть недекодируемыми, когда произвольный доступ от текущей картинки CRA происходит. От начальных картинок поэтому типично отказываются во время декодирования произвольного доступа. Чтобы предотвратить распространение ошибок от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, все картинки, которые следуют за картинкой CRA и в порядке декодирования и порядке вывода, не должны использовать картинку, которая предшествует картинке CRA или в порядке декодирования или в порядке вывода, который включает в себя начальные картинки, в качестве опорных картинок.
[0102] Концепция картинки доступа с разорванной ссылкой (BLA) была далее введена в HEVC после введения картинок CRA и основана на концепции картинок CRA. Картинка BLA типично происходит из стыковки потоков битов в позиции картинки CRA и в стыкованном потоке битов картинка CRA точки соединения изменяется на картинку BLA. Картинки IDR, картинки CRA и картинки BLA все вместе упоминаются как картинки точки произвольного доступа (RAP) или внутренние картинки точки произвольного доступа (IRAP).
[0103] Описание главных различий между картинками BLA и картинками CRA следует ниже. Для картинки CRA ассоциированные начальные картинки являются корректно декодируемыми, если декодирование начинается от картинки RAP перед картинкой CRA в порядке декодирования, и могут быть не являться корректно декодируемымими, когда произвольный доступ от картинки CRA происходит (то есть, когда декодирование начинается с картинки CRA, или другими словами, когда картинка CRA является первой картинкой в потоке битов). Для картинки BLA ассоциированные начальные картинки могут быть недекодируемыми во всех случаях, даже когда декодирование начинается с картинки RAP перед картинкой BLA в порядке декодирования.
[0104] Для конкретной картинки CRA или BLA некоторые из ассоциированных начальных картинок являются корректно декодируемыми, даже когда картинка CRA или BLA является первой картинкой в потоке битов. Эти начальные картинки упоминаются как декодируемые начальные картинки (DLPs), и другие начальные картинки упоминаются как недекодируемые начальные картинки (NLPs). В некоторых случаях DLPs могут альтернативно упоминаться как декодируемые начальные картинки произвольного доступа (RADL). NLPs упоминаются как тегированные для отбрасывания (TFD) картинки в HEVC WD8. В других случаях NLPs могут альтернативно упоминаться как пропущенные начальные картинки произвольного доступа (RASL). В целях настоящего раскрытия, термины «недекодируемые начальные картинки», «картинки TFD», и «картинки RASL» могут использоваться взаимозаменяемо.
[0105] В HEVC WD8 гипотетический опорный декодер (HRD) определен в Приложении C. HRD полагается на параметры HRD, которые могут быть предоставлены в потоке битов в hrd_parameters () синтаксической структуре, включенной в набор параметров видео (VPS) и/или набор параметров последовательности (SPS), сообщения (SEI) дополнительной информации расширения периода буферизации, и сообщение SEI тактирования картинок. Сообщение SEI периода буферизации главным образом включает в себя параметры CPB, а именно, начальные задержки удаления буфера закодированных картинок (CPB) и начальные смещения задержки удаления CPB. Два набора параметров CPB могут быть обеспечены, называемые как набор по умолчанию, сигнализированный элементами синтаксиса initial_cpb_removal_delay [] и initial_cpb_removal_delay_offset [], и альтернативный набор, сигнализированный элементами синтаксиса initial_alt_cpb_removal_delay [] и initial_alt_cpb_removal_delay_offset [].
[0106] Когда sub_pic_cpb_params_present_flag равен 0, и rap_cpb_params_present_flag равен 1, следующее применяется. Видео декодер 30 использует альтернативный набор параметров CPB, чтобы определить CPB 68, когда HRD инициализируется картинкой BLA, которая не имеет ассоциированных картинок TFD в потоке битов. Картинка BLA, которая не имеет ассоциированных недекодируемых начальных картинок, имеет nal_unit_type, который указывает картинку BLA с декодируемыми начальными картинками, например, BLA_W_DLP, или указывает картинку BLA без начальных картинок, например, BLA_N_LP. Если вместо этого набор по умолчанию используется, CPB может переполниться. Когда HRD инициализируется картинкой CRA или картинкой BLA, которая имеет ассоциированные картинки TFD, видео декодер 30 использует набор по умолчанию параметров CPB, чтобы определить CPB 68. Картинка BLA, которая имеет ассоциированные картинки TFD, имеет nal_unit_type, который указывает картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD. Это отражено в следующем тексте в подпункте C.2.1 HEVC WD8:
Переменные InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] установлены следующим образом.
- Если любое из следующих условий верно, InitCpbRemovalDelay [SchedSelIdx], и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения соответствующих initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации:
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации равно 1;
- SubPicCpbFlag равен 1.
- Иначе, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения соответствующих initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации.
Как может быть замечено выше, выбор какого набора параметров CPB нужно использовать для заданной картинки может быть основан на значении nal_unit_type картинки.
[0107] HEVC WD8 также включает в себя следующий текст в подпункт 8.1 для того, чтобы оперировать с картинкой CRA как картинкой BLA.
Когда текущая картинка является картинкой CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную HandleCraAsBlaFlag в значение, HandleCraAsBlaFlag устанавливается в значение, предоставленное внешним средством.
- Иначе, значение HandleCraAsBlaFlag устанавливается в 0.
Когда HandleCraAsBlaFlag равен 1, следующее применяется во время процессов синтаксического разбора и декодирования для каждой закодированной единицы NAL вырезки:
- Значение nal_unit_type устанавливается в BLA_W_TFD.
- Значение no_output_of_prior_pics_flag устанавливается в 1.
В HEVC WD8, картинка CRA имеет nal_unit_type равный CRA_NUT в заголовке единицы NAL ее закодированных вырезок, и она может иметь ассоциированные картинки TFD и картинки DLP.
[0108] Следующие проблемы ассоциированы с существующими способами для выбора параметров CPB для картинок CRA, картинок BLA, и картинок CRA, обрабатываемых как картинки BLA. Первая проблема ассоциирована с выбором параметров CPB для картинок CRA и картинок BLA. Картинки CRA, могут иметь ассоциированные картинки TFD. Когда картинка CRA имеет ассоциированные картинки TFD в первоначальном потоке битов, но эти ассоциированные картинки TFD отброшены сервером потоковой передачи или промежуточным элементом сети, чтобы разрешить выбор соответствующего набора параметров CPB, то есть, альтернативного набора, сетевой объект 29 или другое внешнее средство должен изменить картинку CRA на картинку BLA прежде, чем послать ее в видео декодер 30. Однако, сетевой объект 29 может не быть способен к выполнению этого. В таких ситуациях любой выбор подходящего набора начальной задержки удаления CPB и смещения не может быть успешным, что может привести к переполнению CPB 68, или отбрасывание картинок TFD не может быть выполнено, что приводит к трате полосы пропускания или более низкому качеству видео.
[0109] Вторая проблема ассоциирована с обработкой картинки CRA как картинки BLA. Картинки CRA могут иметь ассоциированные картинки TFD. Когда картинка CRA имеет ассоциированные картинки TFD в первоначальном потоке битов, но эти ассоциированные картинки TFD отбрасываются сетевым объектом 29 или другим внешним средством, такое как средство обработки, включенное в сервер потоковой передачи или промежуточный элемент сети, внешнее средство указывает обращаться с картинкой CRA как с картинкой BLA. Как определено в HEVC WD8, видео декодер 30 затем устанавливает значение nal_unit_type, чтобы указывать картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD, что приводит к использованию набора по умолчанию параметров CPB и следовательно, CPB 68 может переполниться.
[0110] Способы настоящего раскрытия обеспечивают улучшенные поведения картинок RAP, способные к устранению или уходу от проблем, описанных выше. Согласно способам, определяют переменные, и значения этих переменных могут быть установлены сетевым объектом 29 или другим внешним средством, таким как средство обработки, включенное в сервер потоковой передачи, промежуточный элемент сети, или другой объект сети, вне области спецификации кодирования видео. В одном примере переменная может определить, используется ли альтернативный набор параметров CPB, и какой тип единицы NAL используется, когда картинка CRA обрабатывается как картинка BLA. В другом примере переменная может определить значение типа единицы NAL, чтобы использоваться для конкретной картинки, из которой оно может быть выведено, используются ли заданный по умолчанию или альтернативный набор параметров CPB.
[0111] В следующих секциях вышеупомянутые способы описаны более подробно. Подчеркивающие линии могут указывать дополнения относительно HEVC WD8, и зачеркивания (strikethroughs) могут указывать удаления относительно HEVC WD8.
[0112] В одном примере видео декодер 30 принимает поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA. Видео декодер 30 также принимает сообщение от сетевого объекта 29, указывающее использовать ли альтернативный набор параметров CPB для по меньшей мере одной из картинок CRA или картинок BLA. Видео декодер 30 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Видео декодер 30 затем выбирает набор параметров CPB для заданной одной из картинок CRA или картинок BLA на основании переменной для картинки.
[0113] Согласно этому примеру, переменная UseAltCpbParamsFlag может быть определена для каждой картинки BLA или CRA. Значение этой переменной установлено сетевым объектом 29 или некоторым другим внешним средством или в 0 или в 1. Если такое внешнее средство не доступно, видео декодер 30 может установить значение переменной в 0.
[0114] В этом случае текст в подпункте 8.1 HEVC WD8, который указан выше, может быть заменен следующим:
Когда текущая картинка является картинкой BLA, которая имеет nal_unit_type равный BLA_W_TFD или является картинкой CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную UseAltCpbParamsFlag в значение, UseAltCpbParamsFlag устанавливается в значение, предоставленное внешним средством.
- Иначе, значение UseAltCpbParamsFlag устанавливается в 0.
Когда текущая картинка является картинкой CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную HandleCraAsBlaFlag в значение, HandleCraAsBlaFlag устанавливается в значение, предоставленное внешним средством.
- Иначе, значение HandleCraAsBlaFlag устанавливается в 0.
Когда текущая картинка является картинкой CRA, и HandleCraAsBlaFlag равен 1, следующее применяется во время процессов синтаксического разбора и декодирования для каждой закодированной единицы NAL вырезки, и картинку CRA рассматривают как картинку BLA, и единицу доступа CRA рассматривают как единицу доступа BLA:
- Если UseAltCpbParamsFlag равен 0, значение nal_unit_type устанавливается в BLA_W_TFD. Иначе, значение nal_unit_type устанавливается в BLA_W_DLP.
- Значение no_output_of_prior_pics_flag устанавливается в 1.
Кроме того, текст в подпункте C.2.1 HEVC WD8, указанный выше, может быть заменен следующим:
Переменные InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливаются следующим образом.
- Если одно из следующих условий верно, InitCpbRemovalDelay [SchedSelIdx], и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения соответствующих initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации:
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации, равно 1;
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type, равный BLA_W_TFD, или является единицей доступа CRA, UseAltCpbParamsFlag равен 1, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации, равно 1;
- SubPicCpbFlag равен 1.
- Иначе, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливаются в значения соответствующих initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации.
[0115] Сетевой объект 29 или другое внешнее средство, сконфигурированное, чтобы установить значение UseAltCpbParamsFlag, может работать следующим образом. Сетевой объект 29 может послать сообщение в видео декодер 30 или на приемник, содержащий видео декодер 30. Сообщение может указывать, что для конкретной картинки BLA или CRA, оно имело ассоциированные картинки TFD, но эти ассоциированные картинки TFD были отброшены, и таким образом альтернативный набор параметров CPB должен использоваться. После приема такого сообщения видео декодер 30 может установить значение UseAltCpbParamsFlag для конкретной картинки BLA или CRA в 1. Если бы конкретная BLA или CRA не имела картинок TFD, или она имела картинки TFD, которые не были отброшены, то никакого сообщения посылать не требуется, или сообщение посылают, чтобы проинструктировать видео декодер 30 устанавливать значение UseAltCpbParamsFlag для конкретной картинки BLA или CRA в 0.
[0116] В некоторых случаях видео декодер 30 может установить тип единицы уровня абстракции сети (NAL) для заданной одной из картинок CRA или картинок BLA, и может выбрать набор параметров CPB для заданной картинки на основании типа единицы NAL и переменной для этой картинки. В качестве другого примера, вместо того, чтобы использовать только один тип единицы NAL, который указывает общую картинку CRA, например, CRA_NUT, способы настоящего раскрытия разрешают использование трех различных типов единицы NAL, которые соответственно указывают картинку CRA с недекодируемыми начальными картинками, например, CRA_W_TFD, указывают картинку CRA с декодируемыми начальными картинками, например, CRA_W_DLP, и указывают картинку CRA без начальных картинок, например, CRA_N_LP. В этом случае Таблица 7-1 в HEVC WD8 и примечания ниже таблицы изменены как показано ниже.
<b>Таблица 7-1</b>
Коды типа единицы NAL и классы типов единиц NAL
nal_unit_type
Имя nal_unit_type
Содержимое единицы NAL и структура синтаксиса RBSP
Класс типа единицы NAL
0
UNSPEC0
Не задано
не-VCL
1, 2
TRAIL_R, TRAIL_N
Кодированная вырезка картинки не-TSA, не-STSA хвостовой картинки slice_layer_rbsp( )
VCL
3, 4
TSA_R, TSA_N
Кодированная вырезка картинки TSAslice_layer_rbsp( )
VCL
5, 6
STSA_R, STSA_N
Кодированная вырезка картинки STSAslice_layer_rbsp( )
VCL
7, 8, 9
BLA_W_TFDBLA_W_DLP BLA_N_LP
Coded slice of a BLA picture slice_layer_rbsp( )
VCL
10, 11
IDR_W_LP IDR_N_LP
Кодированная вырезка картинки IDRslice_layer_rbsp( )
VCL
12, 13, 14
CRA_W_TFD CRA_W_DLP CRA_N_LP
Кодированная вырезка картинки CRAslice_layer_rbsp( )
VCL
15
DLP_NUT
Кодированная вырезка картинки DLPslice_layer_rbsp( )
VCL
16
TFD_NUT
Кодированная вырезка картинки TFDslice_layer_rbsp( )
VCL
17..22
RSV_VCL17..RSV_VCL22
Зарезервировано
VCL
23..24
RSV_NVCL23.. RSV_NVCL24
Зарезервировано
не-VCL
25
VPS_NUT
Набор параметров видео video_parameter_set_rbsp( )
не-VCL
26
SPS_NUT
Набор параметров последовательности seq_parameter_set_rbsp( )
не-VCL
27
PPS_NUT
Набор параметров картинки pic_parameter_set_rbsp( )
не-VCL
28
AUD_NUT
Разделитель единиц доступа access_unit_delimiter_rbsp( )
не-VCL
29
EOS_NUT
Конец последовательностиend_of_seq_rbsp( )
не-VCL
30
EOB_NUT
Конец потока битовend_of_bitstream_rbsp( )
не-VCL
31
FD_NUT
Данные заполнителя filler_data_rbsp( )
не-VCL
32
SEI_NUT
Дополнительная информация расширения (SEI) sei_rbsp( )
не-VCL
33..47
RSV_NVCL33.. RSV_NVCL47
Зарезервировано
не-VCL
48..63
UNSPEC48.. UNSPEC63
Не задано
не-VCL
ЗАМЕЧАНИЕ 3 - картинка CRA, имеющая nal_unit_type равный CRA_W_TFD, может иметь ассоциированные картинки TFD, или ассоциированные картинки DLP, или оба присутствуют в потоке битов. Картинка CRA, имеющая nal_unit_type равный CRA_W_DLP, не имеет ассоциированной картинки TFD, присутствующей в потоке битов, но может иметь ассоциированные картинки DLP в потоке битов. Картинка CRA, имеющая nal_unit_type равный CRA_N_LP, не имеет ассоциированных начальных картинок, присутствующих в потоке битов.
ЗАМЕЧАНИЕ 4 - картинка BLA, имеющая nal_unit_type равный BLA_W_TFD, может иметь ассоциированные картинки TFD, или ассоциированные картинки DLP, или обе присутствуют в потоке битов. Картинка BLA, имеющая nal_unit_type равный BLA_W_DLP, не имеет ассоциированной картинки TFD, присутствующей в потоке битов, но может иметь ассоциированные картинки DLP в потоке битов. Картинка BLA, имеющая nal_unit_type равный BLA_N_LP, не имеет ассоциированных начальных картинок, присутствующих в потоке битов.
ЗАМЕЧАНИЕ5 - картинка IDR, имеющая nal_unit_type равный IDR_N_LP, не имеет ассоциированных начальных картинок, присутствующих в потоке битов. Картинка IDR, имеющая nal_unit_type равный IDR_W_DLP, не имеет ассоциированной картинки TFD, присутствующей в потоке битов, но может иметь ассоциированные картинки DLP в потоке битов.
[0117] Кроме того, аналогично первому примеру, описанному выше, переменная UseAltCpbParamsFlag определена для каждой Картинки BLA или CRA. Значение этой переменной установлено сетевым объектом 29 или другим внешним средством, или в 0 или в 1. Если такое внешнее средство не доступно, видео декодер 30, может установить значение переменной в 0.
[0118] В этом случае текст в подпункте 8.1 HEVC WD8, указанный выше, может быть заменен следующим:
Когда текущая картинка является картинкой BLA, которая имеет nal_unit_type равный BLA_W_TFD или является картинкой CRA, которая имеет nal_unit_type равный CRA_W_TFD, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную UseAltCpbParamsFlag в значение, UseAltCpbParamsFlag устанавливается в значение, предоставленное внешним средством.
- Иначе, значение UseAltCpbParamsFlag устанавливается в 0.
Когда текущая картинка является картинкой CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную HandleCraAsBlaFlag в значение, HandleCraAsBlaFlag устанавливается в значение, предоставленное внешним средством.
- Иначе, значение HandleCraAsBlaFlag устанавливается в 0.
Когда текущая картинка является картинкой CRA, и HandleCraAsBlaFlag равен 1, следующее применяется во время процессов синтаксического разбора и декодирования для каждой закодированной единицы NAL вырезки, и картинку CRA рассматривают как картинку BLA, и единицу доступа CRA рассматривают как единицу доступа BLA:
- Если значение nal_unit_type равно CRA_W_TFD, значение nal_unit_type устанавливается в BLA_W_TFD. Иначе, если значение nal_unit_type равно CRA_W_DLP, значение nal_unit_type устанавливается в BLA_W_DLP. Иначе, значение nal_unit_type устанавливается в BLA_N_LP.
- Значение no_output_of_prior_pics_flag устанавливается в 1.
Кроме того, текст в подпункте C.2.1 HEVC WD8, указанный выше, может быть заменен следующим:
Переменные InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливаются следующим образом.
- Если одно из следующих условий верно, InitCpbRemovalDelay [SchedSelIdx], и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения соответствующих initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации:
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации, равно 1;
- Единица доступа 0 является единицей доступа CRA, для которой закодированная картинка имеет nal_unit_type равный CRA_W_DLP или CRA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации, равно 1;
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_TFD или является единицей доступа CRA, для которой закодированная картинка имеет nal_unit_type равный CRA_W_TFD, UseAltCpbParamsFlag равен 1, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации, равно 1;
- SubPicCpbFlag равен 1.
- Иначе, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливаются в значения соответствующих initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации.
[0119] Сетевой объект 29 или другое внешнее средство, сконфигурированное, чтобы установить значение UseAltCpbParamsFlag, может работать следующим образом. Сетевой объект 29 может послать сообщение в видео декодер 30 или приемник, содержащий видео декодер 30. Сообщение может указывать, что, для конкретной картинки BLA или CRA, оно имело ассоциированные картинки TFD, но эти ассоциированные картинки TFD были отброшены, и таким образом альтернативный набор параметров CPB должен использоваться. После приема такого сообщения видео декодер 30 может установить значение UseAltCpbParamsFlag для конкретной картинки BLA или CRA в 1. Если бы конкретная BLA или CRA не имела картинок TFD, или она имела картинку TFD, но не была отброшена, то сообщение нет необходимости посылать, или сообщение посылают, чтобы проинструктировать видео декодер 30 устанавливать значение UseAltCpbParamsFlag для конкретной картинки BLA или CRA в 0.
[0120] В другом примере видео декодер 30 принимает поток битов, представляющий множество картинок, включающее в себя одну или более картинок CRA или картинок BLA, и также принимает сообщение от сетевого объекта 29, указывающее тип единицы NAL для по меньшей мере одной из картинок CRA или картинок BLA. Видео декодер 30 устанавливает переменную, определенную, чтобы указывать тип единицы NAL для заданной одной из картинок CRA или картинок BLA на основании принятого сообщения. Видео декодер 30 затем устанавливает тип единицы NAL для заданной одной из картинок CRA или картинок BLA, и выбирает набор параметров CPB для заданной картинки на основании типа единицы NAL.
[0121] Согласно этому примеру, переменная UseThisNalUnitType может быть определена для каждой картинки CRA или BLA. Значение этой переменной устанавливается сетевым объектом 29 или некоторым другим внешним средством. Если такое внешнее средство не доступно, видео декодер 30 может установить значение переменной в nal_unit_type Картинки CRA или BLA. В некоторых примерах возможные значения для этой переменной - CRA_NUT, BLA_W_TFD, BLA_W_DLP и BLA_N_LP. В других примерах возможные значения этой переменной могут включать в себя другие nal_unit_types, сконфигурированные, чтобы указывать общую картинку CRA, картинку BLA с недекодируемыми начальными картинками, картинку BLA с декодируемыми начальными картинками, и картинку BLA без начальных картинок.
[0122] В этом случае текст в подпункте 8.1 HEVC WD8, который указан выше, может быть заменен следующим:
Когда текущая картинка является картинкой BLA или CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную UseThisNalUnitType в значение, UseThisNalUnitType устанавливается в значение, предоставленное внешним средством. Для картинки BLA с nal_unit_type равным BLA_N_LP, внешнее средство может только установить UseThisNalUnitType в BLA_N_LP; для картинки BLA с nal_unit_type равным BLA_W_DLP, внешнее средство может только установить UseThisNalUnitType или в BLA_W_DLP или в BLA_N_LP; для картинки BLA с nal_unit_type равным BLA_W_TFD, внешнее средство может только установить UseThisNalUnitType в одно из BLA_W_TFD, BLA_W_DLP и BLA_N_LP; для картинки BLA внешнее средство никогда не должно устанавливать UseThisNalUnitType, чтобы указывать картинку CRA или любой другой тип картинки; для картинки CRA внешнее средство может установить UseThisNalUnitType в один из CRA_NUT, BLA_W_TFD, BLA_W_DLP и BLA_N_LP, не любое другое значение.
- Иначе, значение UseThisNalUnitType устанавливается в nal_unit_type текущей картинки.
Когда текущая картинка является картинкой CRA или BLA, следующее применяется во время процессов синтаксического разбора и декодирования для каждой закодированной единицы NAL вырезки:
- Значение nal_unit_type устанавливается в UseThisNalUnitType, и текущую картинку или единицу доступа считают как картинку CRA или BLA или единицу доступа согласно значению nal_unit_type равному UseThisNalUnitType.
- Значение no_output_of_prior_pics_flag устанавливается в 1, если текущая картинка была картинкой CRA перед вышеупомянутым этапом и стала картинкой BLA.
Текст в подпункте C.2.1 HEVC WD8, который указан выше, не должен быть изменен.
[0123] В качестве другого примера, вместо того, чтобы использовать только один тип единицы NAL, который указывает общую картинку CRA, например, CRA_NUT, способы настоящего раскрытия разрешают использование трех различных типов единицы NAL, которые соответственно указывают картинку CRA с недекодируемыми начальными картинками, например, CRA_W_TFD, указывают картинку CRA с декодируемыми начальными картинками, например, CRA_W_DLP, и указывают картинку CRA без начальных картинок, например, CRA_N_LP. В этом случае Таблица 7-1 в HEVC WD8 и примечания ниже таблицы изменяется как описано выше.
[0124] Кроме того, аналогично второму примеру, описанному выше, переменная UseThisNalUnitType определена для каждой картинки CRA или BLA. Значение этой переменной устанавливается сетевым объектом 29 или другим внешним средством. Если такое внешнее средство не доступно, видео декодер 30, может установить значение переменной в nal_unit_type картинки CRA или BLA. В некоторых примерах возможные значения для этой переменной - CRA_W_TFD, CRA_W_DLP, CRA_N_LP, BLA_W_TFD, BLA_W_DLP и BLA_N_LP. В других примерах возможные значения этой переменной могут включать в себя другие nal_unit_types, сконфигурированные, чтобы указывать картинку CRA с недекодируемыми начальными картинками, картинку CRA с декодируемыми начальными картинками, картинку CRA без начальных картинок, картинку BLA с недекодируемыми начальными картинками, картинку BLA с декодируемыми начальными картинками, и картинку BLA без начальных картинок.
[0125] В этом случае текст в подпункте 8.1 HEVC WD8, указанный выше, может быть заменен следующим:
Когда текущая картинка является картинкой BLA или CRA, следующее применяется.
- Если некоторое внешнее средство, не определенное в этой Спецификации, доступно, чтобы установить переменную UseThisNalUnitType в значение, UseThisNalUnitType устанавливается в значение, предоставленное внешним средством.
Для картинки BLA с nal_unit_type равным BLA_N_LP, внешнее средство может только установить UseThisNalUnitType в BLA_N_LP; для картинки BLA с nal_unit_type равным BLA_W_DLP, внешнее средство может только установить UseThisNalUnitType или в BLA_W_DLP или в BLA_N_LP; для картинки BLA с nal_unit_type равным BLA_W_TFD, внешнее средство может только установить UseThisNalUnitType в один из BLA_W_TFD, BLA_W_DLP и BLA_N_LP; для картинки BLA внешнее средство никогда не должно устанавливать UseThisNalUnitType, чтобы указывать картинку CRA или любой другой тип картинки.
Для картинки CRA с nal_unit_type равным CRA_N_LP, внешнее средство может только установить UseThisNalUnitType в CRA_N_LP или BLA_N_LP; для картинки CRA с nal_unit_type равным CRA_W_DLP, внешнее средство может только установить UseThisNalUnitType в CRA_W_DLP, CRA_N_LP, BLA_W_DLP или BLA_N_LP; для картинки CRA с nal_unit_type равным CRA_W_TFD, внешнее средство может только установить UseThisNalUnitType в CRA_W_TFD, CRA_W_DLP, CRA_N_LP, BLA_W_TFD, BLA_W_DLP или BLA_N_LP.
- Иначе, значение UseThisNalUnitType устанавливается в nal_unit_type текущей картинки.
Когда текущая картинка является картинкой CRA или BLA, следующее применяется во время процессов синтаксического разбора и декодирования для каждой закодированной единицы NAL вырезки:
- Значение nal_unit_type устанавливается в UseThisNalUnitType, и текущую картинку или единицу доступа считают как картинку CRA или BLA или единицу доступа согласно значению nal_unit_type равным UseThisNalUnitType.
- Значение no_output_of_prior_pics_flag устанавливается в 1, если текущая картинка была картинкой CRA перед вышеупомянутым этапом и стала картинкой BLA.
Кроме того, текст в подпункте C.2.1 HEVC WD8, указанный выше, может быть заменен следующим:
Переменные InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливают следующим образом.
- Если одно из следующих условий верно, InitCpbRemovalDelay [SchedSelIdx], и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливают в значения соответствующих initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации:
- Единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации равно 1;
- Единица доступа 0 является единицей доступа CRA, для которой закодированная картинка имеет nal_unit_type равный CRA_W_DLP или CRA_N_LP, и значение rap_cpb_params_present_flag ассоциированного сообщения SEI периода буферизации равно 1;
- SubPicCpbFlag равен 1.
- Иначе, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] устанавливают в значения соответствующих initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx], соответственно, ассоциированного сообщения SEI периода буферизации.
[0126] ФИГ. 4 является блок-схемой, иллюстрирующей примерное устройство 100 назначения, сконфигурированное, чтобы работать согласно гипотетическому опорному декодеру (HRD). В этом примере устройство 100 назначения включает в себя интерфейс 102 ввода, планировщик 104 потока, буфер 106 закодированных картинок (CPB), видео декодер 108, буфер 110 декодированных картинок (DPB), модуль 112 воспроизведения, и интерфейс 114 вывода. Устройство 100 назначения может соответствовать по существу устройству 14 назначения на фиг. 1. Интерфейс 102 ввода может содержать любой интерфейс ввода, способный к приему закодированного потока битов видео данных, и может соответствовать по существу интерфейсу 28 ввода на фиг. 1. Например, интерфейс 102 ввода может содержать приемник, модем, сетевой интерфейс, такой как проводной или беспроводный интерфейс, память или интерфейс памяти, накопитель для того, чтобы считать данные с диска, такой как интерфейс оптического накопителя или интерфейс магнитного накопителя, или другой компонент интерфейса.
[0127] Интерфейс 102 ввода может принять закодированный поток битов, включая видео данные и предоставить поток битов планировщику 104 потока. Планировщик 104 потока извлекает единицы видео данных, такие как единицы доступа и/или единицы декодирования, из потока битов и сохраняет извлеченные единицы в CPB 106. В этом способе планировщик 104 потока представляет реализацию примера гипотетического планировщика потока (HSS). CPB 106 может соответствовать по существу CPB 68 на фиг. 3, за исключением того, что как показано на фиг. 4, CPB 106 является отдельным от видео декодера 108. CPB 106 может быть отдельным от или интегрированным как часть видео декодера 108 в различных примерах.
[0128] Видео декодер 108 включает в себя DPB 110. Видео декодер 108 может соответствовать по существу видео декодеру 30 на фиг. 1 и 3. DPB 110 может соответствовать по существу DPB 82 на фиг. 3. Таким образом, видео декодер 108 может декодировать единицы декодирования CPB 106. Кроме того, видео декодер 108 может вывести декодированные картинки из DPB 110. Видео декодер 108 может передать картинки вывода модулю 112 воспроизведения. Модуль 112 воспроизведения может подрезать картинки и затем передать подрезанные картинки к интерфейсу 114 вывода. Интерфейс 114 вывода, в свою очередь, может выдать подрезанные картинки к устройству отображения, которое может соответствовать по существу, устройству 32 отображения на фиг. 1.
[0129] Устройство отображения может быть частью устройства 100 назначения, или может быть с возможностью связи подсоединено к устройству 100 назначения. Например, устройство отображения может содержать экран, экран ввода касанием, проектор, или другой дисплейный блок, интегрируемый с устройством 100 назначения, или может содержать отдельный дисплей, такой как телевизор, монитор, проектор, экран ввода касанием, или другое устройство, которое с возможностью связи подсоединено к устройству 100 назначения. Коммуникационное соединение может содержать проводное или беспроводное соединение, например, коаксиальным кабелем, композитным видео кабелем, компонентным видео кабелем, кабелем высококачественного мультимедийного интерфейса (HDMI), радиочастотного вещания, или другим проводным или беспроводным соединением.
[0130] ФИГ. 5 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров буфера закодированных картинок (CPB) на основании переменной, которая указывает набор параметров CPB для конкретной картинки точки произвольного доступа (RAP) в потоке битов. Иллюстрированная операция описана относительно видео декодера 30 на фиг. 3, который включает в себя CPB 68. В других примерах аналогичная операция может быть выполнена видео кодером 20 на фиг. 2, который включает в себя CPB 66, устройство 100 назначения на фиг. 4, которое включает в себя CPB 106 и видео декодер 108, или другими устройствами, включающими в себя видео кодеры или видео декодеры с буферами CPB, конфигурируемыми, чтобы работать согласно операциям HRD.
[0131] Видео декодер 30 принимает поток битов, включая одну или более картинок CRA или картинок BLA (120). Наряду с потоком битов, видео декодер 30 также принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для конкретной одной из картинок CRA или BLA (122). Более конкретно, видео декодер 30 может принять сообщение от внешнего средства, такого как сетевой объект 29, который способен к отбрасыванию картинок TFD, ассоциированных с конкретной картинкой, и также способен к информированию видео декодеру 30, когда картинки TFD отброшены.
[0132] Например, когда конкретная картинка имела картинки TFD в первоначальном выводе потока битов от видео кодера 20, и картинки TFD были отброшены внешним средством, сообщение, принятое видео декодером 30, указывает использовать альтернативный набор параметров CPB для конкретной картинки. В качестве другого примера, когда конкретная картинка не имела картинок TFD в первоначальном потоке битов, выведенном из видео кодера 20, или конкретная картинка имела картинки TFD в первоначальном потоке битов, и картинки TFD не были отброшены внешним средством, сообщение, принятое видео декодером 30, не указывает использовать альтернативный набор параметров CPB для конкретной картинки. В этом случае или набор по умолчанию или альтернативный набор параметров CPB могут использоваться для этой одной из картинок CRA или картинок BLA на основании типа единицы NAL картинки.
[0133] Видео декодер 30 устанавливает переменную, например, UseAltCpbParamsFlag, определенную, чтобы указывать набор параметров CPB для конкретной картинки на основании принятого сообщения (124). Например, видео декодер 30 может установить UseAltCpbParamsFlag равным 1, когда принятое сообщение указывает альтернативный набор параметров CPB для конкретной картинки. Наоборот, видео декодер 30 может установить UseAltCpbParamsFlag равным 0, когда принятое сообщение явно не указывает альтернативный набор параметров CPB для конкретной картинки. В некоторых случаях видео декодер 30 может не принимать сообщение для по меньшей мере одной из картинок CRA или картинок BLA. Видео декодер 30 может затем установить UseAltCpbParamsFlag равным 0.
[0134] Видео декодер 30 затем устанавливает тип единицы NAL для конкретной картинки (126). В некоторых случаях видео декодер 30 может установить тип единицы NAL для конкретной картинки, как сигнализирован в потоке битов. В других случаях видео декодер 30 может установить тип единицы NAL для конкретной картинки, на основании, по меньшей мере частично, переменной для картинки. Операция выбора типа единицы NAL описана более подробно ниже относительно ФИГ. 6. Видео декодер 30 выбирает набор по умолчанию или альтернативный набор параметров CPB для конкретной картинки на основании типа единицы NAL и переменной для конкретной картинки (128). В частности, видео декодер 30 выбирает набор по умолчанию параметров CPB для одного или более типов единицы NAL, когда переменная не указывает альтернативный набор параметров CPB, и выбирает альтернативный набор параметров CPB для одного или более типов единицы NAL, когда переменная указывает альтернативный набор параметров CPB и для одного или более различных типов единицы NAL. Операция выбора набора параметров CPB описана более подробно ниже относительно ФИГ. 7.
[0135] ФИГ. 6 является последовательностью операций, иллюстрирующей примерную операцию установки типа единицы уровня абстракции сети (NAL) для конкретной картинки RAP на основании переменной, которая указывает набор параметров CPB для картинки. Иллюстрированная операция описана относительно видео декодера 30 на фиг. 3, который включает в себя CPB 68. В других примерах аналогичная операция может быть выполнена видео кодером 20 на фиг. 2, который включает в себя CPB 66, устройством 100 назначения на фиг. 4, которое включает в себя CPB 106 и видео декодер 108, или другими устройствами, включающими в себя видео кодеры или видео декодеры с буферами CPB, сконфигурированными, чтобы работать согласно операциям HRD.
[0136] Видео декодер 30 принимает поток битов, включая одну или более картинок CRA или картинок BLA (150). Видео декодер 30 принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для конкретной одной из картинок CRA или картинок BLA (152). Видео декодер 30 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для конкретной картинки на основании принятого сообщения (154).
[0137] Когда конкретная картинка является картинкой BLA (ветвь НЕТ 156), видео декодер 30 устанавливает тип единицы NAL для конкретной картинки BLA, как сигнализирован в потоке битов (158). Когда конкретная картинка является картинкой CRA (ДА ветвь 156) и когда картинки CRA не обрабатывается как картинка BLA (ветвь НЕТ 160), видео декодер 30 также устанавливает тип единицы NAL для конкретной картинки CRA, как сигнализировано в потоке битов (158).
[0138] Традиционно, когда картинка CRA обрабатывается как картинка BLA, тип единицы NAL для картинки CRA собирается указать картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD, что приводит к выбору набора по умолчанию параметров CPB для картинки. В некоторых случаях картинка может не иметь ассоциированные картинки TFD и использование набора по умолчанию параметров CPB может привести к переполнению CPB. Согласно способам настоящего раскрытия, когда конкретная картинка является картинкой CRA (ДА ветвь 156) и картинка CRA, обработано как картинка BLA (ДА ветвь 160), видео декодер 30 устанавливает тип единицы NAL для конкретной картинки CRA на основании переменной для конкретной картинки.
[0139] Например, когда переменная явно не указывает альтернативный набор параметров CPB (Ветвь НЕТ 162), видео декодер 30 устанавливает тип единицы NAL для конкретной картинки, чтобы указывать картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD, который указывает, что конкретная картинка имеет ассоциированные картинки TFD (164). В этом случае набор по умолчанию параметров CPB будет соответственно выбран для конкретной картинки. Когда переменная указывает альтернативный набор параметров CPB (ДА ветвь 162), видео декодер 30 устанавливает тип единицы NAL для конкретной картинки, чтобы указывать картинку BLA с декодируемыми начальными картинками, например, BLA_W_DLP, который указывает, что конкретная картинка не имеет ассоциированных картинок TFD (166). В этом случае альтернативный набор параметров CPB будет соответственно выбран для конкретной картинки. Таким образом, способы гарантируют, что CPB видео декодера не будет переполняться из-за использования несоответствующих параметров CPB.
[0140] ФИГ. 7 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров CPB для конкретной картинки RAP на основании типа единицы NAL для картинки и переменной, которая указывает набор параметров CPB для картинки. Иллюстрированная операция описана относительно видео декодера 30 на фиг. 3, который включает в себя CPB 68. В других примерах аналогичная операция может быть выполнена видео кодером 20 на фиг. 2, который включает в себя CPB 66, устройство 100 назначения на фиг. 4, который включает в себя CPB 106 и видео декодер 108, или другие устройства, включающие в себя видео кодеры или видео декодеры с буферами CPB, сконфигурированными, чтобы работать согласно операциям HRD.
[0141] Видео декодер 30 принимает поток битов, включая одну или более картинок CRA или картинок BLA (170). Видео декодер 30 принимает сообщение, указывающее, использовать ли альтернативный набор параметров CPB для конкретной из картинок CRA или картинок BLA (172). Видео декодер 30 устанавливает переменную, определенную, чтобы указывать набор параметров CPB для конкретной картинки на основании принятого сообщения (174). Видео декодер 30 затем устанавливает тип единицы NAL для конкретной картинки (176). Как описано выше относительно ФИГ. 6, видео декодер 30 может установить тип единицы NAL для конкретной картинки как сигнализировано в потоке битов, или может установить тип единицы NAL для конкретной картинки на основании переменной для картинки.
[0142] Когда конкретная картинка является картинкой BLA, которая имеет тип единицы NAL, который указывает картинку BLA с декодируемыми начальными картинками, например, BLA_W_DLP, или указывает картинку BLA без начальных картинок, например, BLA_N_LP, который указывает, что конкретная картинка не имеет ассоциированных картинок TFD (ДА ветвь 178), видео декодер 30 выбирает альтернативный набор параметров CPB для конкретной картинки на основании типа единицы NAL (180). Традиционно, набор по умолчанию параметров CPB используется для любых картинок CRA или картинок BLA с ассоциированными картинками TFD, например, BLA_W_TFD. В некоторых случаях однако, картинки TFD, ассоциированные с конкретной картинкой в первоначальном потоке битов, могут быть отброшены прежде, чем поток битов достигает видео декодера. Видео декодер затем использует заданные по умолчанию параметры CPB на основании типа единицы NAL, даже когда картинка больше не имеет ассоциированных картинок TFD, которые могут привести к переполнению CPB.
[0143] Согласно способам настоящего раскрытия, когда конкретная картинка является картинкой CRA или картинкой BLA, которая имеет тип единицы NAL, который указывает картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD, который указывает, что конкретная картинка имеет ассоциированные картинки TFD (ДА ветвь 182), видео декодер 30 выбирает набор параметров CPB, чтобы использовать для конкретной картинки на основании переменной для конкретной картинки. Например, когда переменная явно не указывает альтернативный набор параметров CPB (Ветвь НЕТ 184), видео декодер 30 выбирает набор по умолчанию параметров CPB для конкретной картинки на основании переменной (186). Когда переменная указывает альтернативный набор параметров CPB (ДА ветвь 184), видео декодер 30 выбирает альтернативный набор параметров CPB для конкретной картинки на основании переменной (188). Таким образом, способы гарантируют, что CPB видео декодера не будет переполняться из-за использования несоответствующих параметров CPB.
[0144] ФИГ. 8 является последовательностью операций, иллюстрирующей примерную операцию выбора набора параметров CPB на основании переменной, определенной, чтобы указывать тип единицы уровня абстракции сети (NAL) для конкретной картинки RAP в потоке битов. Иллюстрированная операция описана относительно видео декодера 30 на фиг. 3, который включает в себя CPB 68. В других примерах аналогичная операция может быть выполнена видео кодером 20 на фиг. 2, который включает в себя CPB 66, устройством 100 назначения на фиг. 4, которое включает в себя CPB 106 и видео декодер 108, или другими устройствами, включая видео кодеры или видео декодеры с буферами CPB, сконфигурированными, чтобы работать согласно операциям HRD.
[0145] Видео декодер 30 принимает поток битов, включая одну или более картинок CRA или картинок BLA (190). Наряду с потоком битов, видео декодер 30 также принимает сообщение, указывающее тип единицы NAL для конкретной одной из картинок CRA или BLA (192). Более конкретно, видео декодер 30 может принять сообщение от внешнего средства, такого как сетевой объект 29, который способен к отбрасыванию картинок TFD, ассоциированных с конкретной картинкой, и также способен к информированию видео декодеру 30, когда картинки TFD отброшены.
[0146] Например, когда конкретная картинка имела картинки TFD в первоначальном выводе потока битов от видео кодера 20, и картинки TFD были отброшены внешним средством, сообщение, принятое видео декодером 30, может указывать тип единицы NAL, который указывает картинку BLA с декодируемыми начальными картинками, например, BLA_W_DLP, или указывает картинку BLA без начальных картинок, например, BLA_N_LP, для конкретной картинки. В качестве другого примера, когда конкретная картинка имела картинки TFD в первоначальном потоке битов и картинки TFD не были отброшены внешним средством, сообщение, принятое видео декодером 30, может указывать тип единицы NAL, который указывает картинку BLA с недекодируемыми начальными картинками, например, BLA_W_TFD, для этой одной из картинок CRA или картинок BLA.
[0147] Видео декодер 30 устанавливает переменную, например, UseThisNalUnitType, определенную, чтобы указывать тип единицы NAL для конкретной картинки на основании принятого сообщения (194). Например, видео декодер 30 может установить UseThisNalUnitType равным типу единицы NAL, обозначенному в соответствии с принятым сообщением для конкретной картинки. В некоторых случаях видео декодер 30 может не принять сообщение для по меньшей мере одной из картинок CRA или картинок BLA. Видео декодер 30 может затем установить UseThisNalUnitType равным типу единицы NAL, сигнализированному для конкретной картинки в потоке битов. Видео декодер 30 устанавливает тип единицы NAL для конкретной картинки на основании переменной (196). Видео декодер 30 затем выбирает набор по умолчанию или альтернативный набор параметров CPB для конкретной картинки на основании типа единицы NAL для конкретной картинки (198).
[0148] ФИГ. 9 является блок-схемой, иллюстрирующей примерный набор устройств, которые являются частью сети 200. В этом примере сеть 200 включает в себя устройства 204A, 204B маршрутизации (устройства 204 маршрутизации) и устройство 206 транскодирования. Устройства 204 маршрутизации и устройство 206 транскодирования предназначены, чтобы представить небольшое количество устройств, которые могут быть частью сети 200. Другие сетевые устройства, такие как коммутаторы, центры, шлюзы, брандмауэры, мосты, и другие такие устройства могут также быть включены в пределах сети 200. Кроме того, дополнительные сетевые устройства могут быть предоставлены вдоль сетевого пути между серверным устройством 202 и клиентским устройством 208. Серверное устройство 202 может соответствовать исходному устройству 12 на фиг. 1, в то время как клиентское устройство 208 может соответствовать устройству 14 назначения на фиг. 1, в некоторых примерах.
[0149] Вообще, устройства 204 маршрутизации реализуют один или более протоколов маршрутизации, чтобы обмениваться сетевыми данными через сеть 200. В некоторых примерах устройства 204 маршрутизации могут конфигурироваться, чтобы выполнить операции кэша или промежуточные (прокси-). Поэтому в некоторых примерах, устройства 204 маршрутизации могут упоминаться как прокси-устройства. Вообще, устройства 204 маршрутизации выполняют протоколы маршрутизации, чтобы обнаружить маршруты через сеть 200. Выполняя такие протоколы маршрутизации, устройство 204B маршрутизации может обнаружить маршрут сети от себя до серверного устройства 202 через устройство 204A маршрутизации.
[0150] Способы настоящего раскрытия могут быть реализованы сетевыми устройствами, такими как устройства 204 маршрутизации и устройство 206 транскодирования, но также и могут быть реализованы клиентским устройством 208. В этом способе устройства 204 маршрутизации, устройство 206 транскодирования, и клиентское устройство 208 представляют примеры устройств, конфигурируемых, чтобы выполнить способы настоящего раскрытия, включая способы, рассказанные в части ФОРМУЛА ИЗОБРЕТЕНИЯ настоящего раскрытия. Кроме того, устройства согласно ФИГ. 1, и кодер, показанный на фиг. 2 и декодер, показанный на фиг. 3, являются также примерными устройствами, которые могут конфигурироваться, чтобы выполнить способы настоящего раскрытия, включая способы, раскрытые в части ФОРМУЛА ИЗОБРЕТЕНИЯ настоящего раскрытия.
[0151] Должно быть признано, что в зависимости от примера, некоторые действия или события любого из способов, описанных здесь, могут быть выполнены в различной последовательности, могут быть добавлены, слиты, или не учтены в целом (например, не все описанные действия или события необходимы для практической реализации способов). Кроме того, в некоторых примерах, действия или события могут быть выполнены одновременно, например, с помощью многопотоковой обработки, обработки прерываний, или множественных процессоров, а не последовательно.
[0152] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы по как одна или более инструкций или код по считываемому компьютером носителю и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемый компьютером запоминающий носитель, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель вообще может соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются невременными или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому может получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0153] Посредством примера, и не ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линия (DSL), или беспроводные технологии такие как инфракрасное, радио- и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасное, радио- и микроволновое излучение включен в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие переходные носители, но вместо этого направлены на невременные материальные запоминающие носители. Диск и диск, как используется здесь, включают в себя компакт-диск (компакт-диск), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитно, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в понятие считываемого компьютером носителя.
[0154] Инструкции могут быть выполнены одним или более процессорами, такими как или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые пользователем логические массивы (FPGAs), или другая эквивалентная интегрированная или дискретная логическая схема. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Кроме того, в некоторых аспектах, функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, конфигурируемых для кодирования и декодирования, или соединенных в объединенный кодек. Кроме того, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0155] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или устройств, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнить раскрытые способы, но не обязательно потребовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0156] Были описаны различные примеры. Эти и другие примеры находятся в рамках формулы изобретения.