Вид РИД
Изобретение
[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/705,119, поданной 24 сентября 2012 и предварительной заявки на патент США № 61/708,475, поданной 1 октября 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] В целом, способы, описанные в настоящем раскрытии, относятся к сигнализации и выведению времен удаления из буфера кодированных картинок при кодировании видео.
[0007] В одном примере способы, описанные в настоящем раскрытии, относятся к способу для декодирования видео данных. Способ может включать в себя декодирование длительности между удалением из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в единице доступа (AU) и удалением из CPB второй DU, при этом вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Способ может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и декодирование видео данных первой DU на основании, по меньшей мере частично, времени удаления.
[0008] В другом примере способы, описанные в настоящем раскрытии, относятся к способу для кодирования видео данных. Способ может включать в себя кодирование длительности между временем удаления из CPB первой DU в AU и временем удаления из CPB второй DU, при этом вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Способ может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, закодированной длительности.
[0009] В еще одном примере обеспечено устройство кодировки видео, содержащее видео кодировщик. Видео кодировщик сконфигурирован, чтобы закодировать длительность между временем удаления из CPB первой DU в AU и второй DU, при этом вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Видео кодировщик также сконфигурирован, чтобы определить время удаления DU, на основании по меньшей мере закодированной длительности.
[0010] Способы, описанные в настоящем описании, также включают в себя пример считываемого компьютером запоминающего носителя, имеющего сохраненные на нем инструкции, которые, когда выполняются, вынуждают процессор устройства для кодирования видео данных кодировать длительность между временем удаления из CPB первой DU в AU и второй DU, при этом вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Инструкции, когда выполняются, также вынуждают процессор определять время удаления DU, на основании по меньшей мере закодированной длительности.
[0011] В другом примере способы, описанные в настоящем раскрытии, относятся к устройству кодировки видео. Устройство кодировки видео может включать в себя средство для кодирования длительности между временем удаления из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в единице доступа (AU) и второй DU, при этом вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Устройство кодирования видео может также включать в себя средство для определения времени удаления DU, на основании по меньшей мере закодированной длительности.
[0012] Эти примерные способы могут быть реализованы вместе или по отдельности. Способы настоящего раскрытия также описаны в терминах устройств, конфигурируемых, чтобы реализовать способы, а также считываемых компьютером запоминающих носителей, хранящих инструкции, которые заставляют один или более процессоров выполнять эти способы.
[0013] Подробности одного или более примеров сформулированы в сопроводительных чертежах и описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0014] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии.
[0015] Фиг. 2 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0016] Фиг. 3 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0017] Фиг. 4 является концептуальной диаграммой, иллюстрирующей две единицы доступа (AU) в последовательном порядке декодирования, которые могут иметь времена декодирования, определенные согласно способам, описанным в настоящем раскрытии.
[0018] Фиг. 5 является последовательностью операций, иллюстрирующей способ для определения времени удаления из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в AU на основании времени удаления из CPB для второй DU AU согласно способам, описанным в настоящем раскрытии.
[0019] Фиг. 6 является последовательностью операций, иллюстрирующей другой способ для определения времени удаления из буфера кодированных картинок (CPB) первой единицы декодирования в единице доступа на основании времени удаления из CPB для второй единицы декодирования единицы доступа согласно способам, описанным в настоящем раскрытии.
[0020] Фиг. 7 является последовательностью операций, иллюстрирующей способ для выведения времени удаления из CPB первой DU на основании, по меньшей мере частично, сообщения SEI тактирования суб-картинок согласно способам, описанным в настоящем раскрытии.
[0021] Фиг. 8 является последовательностью операций, иллюстрирующей другой способ для выведения времени удаления из CPB первой DU, на основании, по меньшей мере частично, кодирования сообщения SEI тактирования суб-картинок согласно способам, описанным в настоящем раскрытии.
[0022] Фиг. 9 является последовательностью операций, иллюстрирующей способ для декодирования флага уровня последовательности для параметра буфера кодированных картинок уровня суб-картинки согласно способам, описанным в настоящем раскрытии.
[0023] Фиг. 10 является последовательностью операций, иллюстрирующей способ для кодирования флага уровня последовательности для параметра буфера кодированных картинок уровня суб-картинки согласно способам, описанным в настоящем раскрытии.
[0024] Фиг. 11 является последовательностью операций, иллюстрирующей способ для декодирования DU, имеющей расширенное определение согласно способам, описанным в настоящем раскрытии.
[0025] Фиг. 12 является последовательностью операций, иллюстрирующей способ для кодирования DU, имеющей расширенное определение, согласно способам, описанным в настоящем раскрытии.
[0026] Фиг. 13 является последовательностью операций, иллюстрирующей способ для декодирования периода буферизации согласно способам, описанным в настоящем раскрытии.
[0027] Фиг. 14 является последовательностью операций, иллюстрирующей способ для кодирования периода буферизации согласно способам, описанным в настоящем раскрытии.
[0028] Фиг. 15 является последовательностью операций, иллюстрирующей способ для декодирования времени прибытии и номинального времени удаления из буфера кодированных картинок согласно способам, описанным в настоящем раскрытии.
[0029] Фиг. 16 является последовательностью операций, иллюстрирующей способ для кодирования времени прибытия и номинального времени удаления из буфера кодированных картинок согласно способам, описанным в настоящем раскрытии.
ПОДРОБНОЕ ОПИСАНИЕ
[0030] Настоящее раскрытие описывает способы для устойчивой к ошибкам и эффективной сигнализации и выведению времен удаления из буфера кодированных картинок (CPB) закодированных единиц данных при кодировании видео. Времена удаления (извлечения) из CPB также известны как времена декодирования. Раскрытие обеспечивает способы для определения времени удаления из CPB для единицы декодирования (DU) единицы доступа (AU), которое является независимым от времен удаления любой другой AU. Например, времена удаления из CPB для текущей DU в AU будут сигнализированы на основании или длительности между временем удаления из CPB следующей DU в порядке декодирования в AU и текущей DU или длительности между временем удаления из CPB последней DU в AU и текущей DU. В другом примере выведение времени удаления из CPB определено таким способом, который использует информацию, которую переносят в сообщении дополнительной информации расширения (SEI) тактирования суб-картинок. Длительность между временем удаления из CPB последней DU в AU в порядке декодирования и DU, ассоциированной с сообщением (SEI) тактирования суб-картинок, сигнализируется.
[0031] Далее, предоставлены способы для включения флага уровня последовательности, который может быть сигнализирован, чтобы указывать, контролируют ли параметры CPB суб-картинки только в одном из сообщений SEI тактирования картинок или сообщений SEI тактирования суб-картинок, но никогда в обоих, согласно способам, описанным в настоящем описании. Флаг, равный 1, указывает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют в сообщениях SEI тактирования картинок и не присутствуют в сообщениях SEI тактирования суб-картинок. Флаг, равный 0, указывает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют в сообщениях SEI тактирования суб-картинок и сообщения SEI тактирования картинок не включают в себя параметры задержки удаления из CPB на уровне суб-картинок.
[0032] Настоящее раскрытие также обеспечивает способы для расширения определения единицы декодирования. Настоящее раскрытие далее обеспечивает способы для ограничения сообщений SEI периода буферизации и сообщений SEI точки восстановления таким образом, что они не могут быть ассоциированы с единицами AU с переменной, TemporalId, большей чем 0. Переменная TemporalId выводится из элемента синтаксиса, ассоциированного с каждой AU. Настоящее раскрытие также обеспечивает способы для обеспечения флага, чтобы сигнализировать, выводить ли времена удаления из CPB на уровне AU или уровне суб-картинок.
[0033] Способы, описанные в настоящем описании, могут относиться к различным стандартам кодирования видео. Стандарты кодирования видео включают в себя 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).
[0034] Кроме того, имеется новый стандарт кодирования видео, а именно, высокоэффективное кодирование видео (HEVC), развиваемый объединенной командой сотрудничества по кодированию видео (JCT-VC) группы экспертов по кодированию видео ITU-T (VCEG) и ISO/IEC группы экспертов по движущимся изображениям (MPEG). Недавний рабочий проект (WD) HEVC Working Draft 8, и упомянутый в дальнейшем как HEVC WD8. Bross et. al, High Efficiency Video Coding (HEVC) Text Specification Draft 8, July 2012, Stockholm, available as of May 2, 2013 from http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.
[0035] HEVC WD8 включен по ссылке полностью в настоящее описание. Кроме того, хотя способы, описанные в настоящем раскрытии, описаны относительно стандарта HEVC, аспекты настоящего раскрытия этим не ограничены и могут быть расширены на другие стандарты кодирования видео, так же как составляющие собственность способы кодирования видео.
[0036] Видео кодер может генерировать поток битов, который включает в себя закодированные видео данные. Поток битов может содержать последовательность единиц уровня абстракции сети (NAL). Единицы NAL потока битов могут включать в себя единицы NAL уровня кодирования видео (VCL) и единицы NAL не-VCL. Единицы NAL VCL могут включать в себя закодированные вырезки картинок. Единица NAL не-VCL может включать в себя набор параметров видео (VPS), набор параметров последовательности (SPS), набор параметров картинки (PPS), дополнительную информацию расширения (SEI), или другие типы данных. VPS является синтаксической структурой, которая может содержать элементы синтаксиса, которые применяются к нулю или более полностью закодированным видео последовательностям. SPS является синтаксической структурой, которая может содержать элементы синтаксиса, которые применяются к нулю или более полностью закодированным видео последовательностям. Единственный VPS может быть применимым ко множественным SPS. PPS является синтаксической структурой, которая может содержать элементы синтаксиса, которые применяются к нулю или более полностью закодированным картинкам. Единственный SPS может быть применимым ко множественным PPS. Различные аспекты VPS, SPS и PPS могут быть сформированы, вообще, как определено по стандарту HEVC.
[0037] Единицы NAL могут включать в себя элемент синтаксиса, который является указывающим значения переменной temporalId. Это значение temporalId единицы NAL задает временный идентификатор единицы NAL. Если временный идентификатор первой единицы NAL меньше, чем временный идентификатор второй единицы NAL, данные, инкапсулированные первой единицей NAL, могут быть декодированы независимо от данных, инкапсулированных второй единицей NAL.
[0038] Каждый стандарт кодирования видео обычно включает в себя спецификацию модели буферизации видео. В AVC и HEVC модель буферизации упоминается как гипотетический опорный декодер (HRD), который описывает, как данные должны быть буферизованы для декодирования и как декодированные данные буферизуются для вывода. HRD включает в себя модель буферизации как буфера кодированных картинок (CPB) так и буфера декодированных картинок (DPB). CPB является буфером «первый вошел - первый вышел», содержащим единицы доступа в порядке декодирования, заданном посредством HRD. DPB является буфером, хранящим декодированные картинки для ссылки на них, переупорядочения вывода или задержки вывода, заданных посредством HRD. Параметры гипотетического опорного декодера математически задают поведения CPB и DPB. HRD может непосредственно наложить ограничения на различные параметры, включая тактирования, размеры буфера, и частоты следования битов, и может косвенно наложить ограничения на характеристики потока битов и статистику. В некоторых примерах полный набор параметров HRD может включать в себя пять основных параметров: начальную задержку удаления из CPB, размер CPB, частоту следования битов, начальную задержку вывода DPB, и размер DPB.
[0039] В AVC и HEVC соответствие потока битов и соответствие декодера заданы как часть спецификации HRD. Хотя название гипотетического опорного декодера относится к роду декодера, HRD типично необходим на стороне кодера для обеспечения соответствия потока битов, в то время как не является обязательно необходимым на стороне декодера. Однако аспекты настоящего раскрытия этим не ограничены, и HRD может быть также частью стороны декодера. AVC и HEVC могут задавать два типа потока битов или соответствия HRD, а именно, Тип I и Тип II. Кроме того, AVC и HEVC задают два типа соответствия декодера: соответствие декодера тактированию вывода и соответствие декодера порядку вывода.
[0040] В моделях HRD в AVC и HEVC декодирование или удаление из CPB основано на единицах доступа, и стандарты предполагают, что декодирование картинок является мгновенным. В практических применениях, если соответствующий декодер строго следует сигнализированным временам декодирования (например, в сообщениях дополнительной информации расширения (SEI)), чтобы начать декодирование единицы доступа, то самое раннее время, чтобы вывести конкретную декодированную картинку, равно времени декодирования этой конкретной картинки плюс время, необходимое для того, чтобы декодировать эту конкретную картинку. Таким образом, самое раннее время, чтобы вывести декодированную картинку является временем декодирования плюс время, чтобы декодировать картинку. Однако, время, необходимое для того, чтобы декодировать картинку, в практических применениях не может быть равным нулю.
[0041] В HEVC WD8 гипотетический опорный декодер (HRD) задан в Приложении C. HRD полагается на параметры HRD, которые могут быть предоставлены в потоке битов в синтаксической структуре hrd_parameters () (в наборе параметров видео (VPS) и/или наборе параметров последовательности (SPS)), сообщениях SEI периода буферизации и сообщениях SEI тактирования картинок. Предварительная заявка на патент США № 61/705,102, поданная 24 сентября 2012, предлагает расширенную сигнализацию и выбор параметров HRD.
[0042] Могут иметь место проблемы, ассоциированные с существующими способами для сигнализации и выведения времен удаления из CPB, также известных как времена декодирования. Нижеследующее описывает некоторые из этих проблем.
[0043] Времена удаления из CPB единицы декодирования могут не быть устойчивыми к ошибкам, когда времена удаления из CPB для единиц декодирования в пределах единицы доступа зависят от информации тактирования от предыдущей единицы доступа. Единица доступа может содержать одну или более единиц декодирования. Время удаления может быть определено для каждой DU в AU. Время удаления из CPB может быть сигнализировано для AU и для одной или более единиц DU в пределах AU. Сообщение SEI для AU может включать в себя время удаления из CPB для AU непосредственно, которое также соответствует времени удаления из CPB для последней DU в пределах AU.
[0044] Буфер кодированных картинок может работать на двух уровнях: уровне единицы доступа и уровне суб-картинок. Когда CPB работает на уровне суб-картинок (то есть, когда SubPicCpbFlag равен 1), сигнализация и выведение времен удаления из CPB единицы декодирования (DU), которые основаны на сообщениях SEI тактирования картинок, могут не быть устойчивыми к ошибкам в обстоятельствах, когда информация потеряна от предыдущей AU в порядке декодирования. Например, информация тактирования, которая сигнализируется для текущей AU, включает в себя длительность между временем удаления из CPB для первой DU в текущей AU и последней DU в предыдущей AU. Таким образом, если информация тактирования для последней DU в предыдущей AU потеряна, то декодер не может определить время удаления для первой DU в текущей AU, потому что время удаления для первой DU зависит от потерянной информации тактирования.
[0045] Другими словами, сигнализация длительности между временами удаления из CPB первой единицы декодирования в текущей AU и последней DU в предыдущей AU в порядке декодирования, так же как использование такой сигнализации в выведении времени удаления из CPB, делает систему или кодировщик уязвимыми к потерянной информации тактирования. Например, если информация удаления из CPB (то есть, сообщение SEI тактирования картинок) предыдущей AU, потеряна, то время удаления из CPB первой DU в текущей AU не может быть правильно выведено. Кроме того, за исключением последней DU текущей AU, для которой время удаления из CPB выведено как равное таковому из текущей AU, каждое из времен удаления из CPB всех других единиц DU в текущей AU полагается на время удаления из CPB предыдущей DU в порядке декодирования. Таким образом, если вышеупомянутая потеря случается, время удаления из CPB каждой DU в текущей AU, за исключением последней DU, не может быть правильно выведено.
[0046] Напротив, здесь описаны способы, которые могут уменьшить уязвимость системы или кодировщика к потерянной информации тактирования. Например, способы предоставлены для того, чтобы определить время удаления из буфера кодированных картинок для DU в AU, которое является независимым от времен удаления любой другой единицы доступа. Например, видео кодер будет сигнализировать, в сообщении SEI тактирования картинок, времена удаления из CPB для DU в AU, которая должна быть принята видео декодером, на основании или длительности времени между текущей DU и или временем удаления из CPB следующей DU в порядке декодирования в AU или временем удаления из CPB последней DU в AU. Таким образом, настоящее раскрытие описывает способы для обеспечения большей устойчивости к ошибкам и эффективной сигнализации и выведения времен удаления из CPB закодированных блоков данных при кодировании видео, потому что информация тактирования для каждой DU в AU не зависит от информации тактирования от другой, отличной AU.
[0047] Другая проблема, ассоциированная с существующими способами для сигнализации и выведения времен удаления из CPB, является той, что информация тактирования в сообщениях SEI тактирования суб-картинок не может быть использована даже хотя она присутствует. Например, сообщения SEI тактирования суб-картинок, несущие информацию задержки удаления из CPB DU, могут присутствовать. Однако, работа CPB на уровне суб-картинок задана способом, которым видео декодер всегда использует сообщения SEI тактирования картинок, и никогда не использует сообщения SEI тактирования суб-картинок. Таким образом, биты, использованные для представления сообщений SEI тактирования суб-картинок, могут быть потрачены впустую. Кроме того, задержка удаления из CPB DU, сигнализированная в сообщении SEI тактирования суб-картинок, является разностью между временем удаления из CPB ассоциированной DU и временем удаления из CPB первой DU предшествующей AU, ассоциированной с сообщением SEI периода буферизации. В то время как это может быть отчасти устойчивым к ошибкам, это может быть также не эффективным, поскольку разница во времени может быть существенным значением.
[0048] Однако, способы предоставлены в настоящем раскрытии для того, чтобы задать выведение времени удаления из CPB способом, который может использовать информацию, переносимую в сообщении дополнительной информации расширения (SEI) тактирования суб-картинок. Например, выведение времени удаления из CPB задано способом, который может использовать информацию, переносимую в сообщениях SEI тактирования суб-картинок, и видео кодер может сигнализировать длительность между удалением из CPB последней DU в AU в порядке декодирования и DU, ассоциированной с сообщением (SEI) тактирования суб-картинок, делая сигнализацию кодера и выведение декодера как более эффективным так и устойчивым к ошибкам.
[0049] Другая проблема, ассоциированная с существующими способами для сигнализации и выведения времен удаления из CPB, является той, что параметры CPB уровня суб-картинок в сообщениях SEI тактирования картинок и сообщениях SEI тактирования суб-картинок могут быть оба присутствующими для одних и тех же функциональных возможностей. Эти функциональные возможности могут быть предоставлены, чтобы поддерживать основанную на суб-картинках операцию CPB. Дублирование этих параметров для одних и тех же функциональных возможностей может быть неэффективным. Может быть возможно, что только один набор параметров CPB уровня суб-картинок, в любом типе сообщений SEI, является достаточным. Способы описаны в настоящем описании, которые конфигурируют видео кодер, чтобы обеспечить флаг уровня последовательности, который может быть сигнализирован, чтобы указывать присутствие параметров CPB уровня суб-картинок в только одном из сообщений SEI тактирования картинок или сообщений SEI тактирования суб-картинок, но не обоих. Используя этот флаг уровня последовательности, видео декодер определяет, найти ли параметры CPB уровня суб-картинок, такие как параметры задержки удаления из CPB на уровне суб-картинок, в сообщении SEI тактирования картинок или в сообщении SEI тактирования суб-картинок.
[0050] Еще одна проблема, ассоциированная с существующими способами для сигнализации и выведения времен удаления из CPB, является той, что определение единиц декодирования не рассматривало единицы NAL не-VCL с nal_unit_type равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47, или в диапазоне UNSPEC48 - UNSPEC63. Таким образом, когда некоторые из этих единиц NAL не-VCL присутствуют, неожиданное поведение CPB уровня суб-картинок может иметь место. Напротив, настоящее раскрытие обеспечивает способы для расширения определения единицы декодирования, чтобы включать в себя единицы NAL не-VCL с nal_unit_type равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0051] Другая потенциальная проблема, ассоциированная с существующими способами для сигнализации и выведения времен удаления из CPB, является той, что сообщение SEI периода буферизации и сообщение SEI точки восстановления могут быть ассоциированы с единицами AU с любым значением временного значения идентификационной информации (TemporalId). Таким образом, кодер может инициализировать HRD в AU с TemporalId, большим чем 0. В этом случае, когда временная масштабируемость поддерживается, время удаления из CPB AU с меньшим значением TemporalId в одном и том же периоде буферизации может зависеть от информации в AU с большим значением TemporalId. Однако, для того, чтобы временная масштабируемость работала, процесс декодирования любой AU может не зависеть от другой AU с большим TemporalId. Настоящее раскрытие также обеспечивает способы для ограничения сообщений SEI периода буферизации и сообщений SEI точки восстановления таким образом, что они не могут быть ассоциированы с единицами AU с TemporalId, большим чем 0.
[0052] Временное значение идентификационной информации (TemporalId) может быть иерархическим значением, которое указывает, какие картинки могут использоваться для кодирования текущей картинки. Вообще, картинка с конкретным значением TemporalId возможно может быть опорной картинкой для картинок с равными или большими значениями TemporalId, но не наоборот. Например, картинка со значением TemporalId, равным 1 возможно может быть опорной картинкой для картинок со значениями TemporalId, равными 1, 2, 3, …, но не для картинки со значением TemporalId, равным 0.
[0053] Самое низкое значение TemporalId может также указывать самую низкую частоту отображения. Например, если видео декодер декодирует только картинки со значениями TemporalId 0, частота отображения может быть 7.5 картинок в секунду. Если видео декодер декодирует только картинки со значениями TemporalId 0 и 1, частота отображения может быть 15 картинок в секунду, и т.д.
[0054] Дополнительная потенциальная проблема, ассоциированная с существующими способами для сигнализации и выведения времен удаления из CPB, заключается в процессе выведения времени удаления из CPB, когда sub_pic_cpb_params_present_flag равен 1, выведение времени удаления из CPB использует оконечное время прибытия и номинальные времена удаления для обоих случаев с SubPicCpbFlag, равным 0 (когда CPB работает на уровне AU), и с SubPicCpbFlag, равным 1 (когда CPB работает на уровне суб-картинок). Однако, эти используемые значения для оконечного времени прибытия и номинальных времен удаления могут быть выведены только для одного из этих двух случаев (например, или для SubPicCPBFlag, равного 0, или для SubPicCPBFlag, равного 1), и следовательно не доступны для другого случая. Описанные способы здесь предусматривают флаг, чтобы сигнализировать, должен ли декодер вывести времена удаления из CPB на уровне AU или уровне суб-картинок. Например, декодер выводит времена прибытия в CPB и номинальные времена удаления и для уровня AU и для уровня суб-картинок независимо от значения SubPicCpbFlag, в то время как декодер выводит времена удаления из CPB только для уровня AU, когда SubPicCpbFlag равен 0, и только для уровня суб-картинок, когда SubPicCpbFlag равен 1, согласно способам, описанным в настоящем описании. Как описано в настоящем описании, номинальное время удаления из CPB может быть значением по умолчанию для времени удаления из CPB. В некоторых примерах с типичными условиями время удаления из CPB равно номинальному времени удаления из CPB. Однако, при некоторых условиях они различны, и время удаления из CPB может немного отличаться от значения по умолчанию.
[0055] Следующие способы, описанные в настоящем раскрытии, могут относиться к проблемам, описанным выше. Например, способы, описанные в настоящем раскрытии, могут обеспечить более устойчивое к ошибкам определение времени удаления из буфера кодированных картинок. Кроме того, в дополнение к улучшенной устойчивости к ошибкам, способы могут способствовать эффективности сигнализации, которая уменьшает полосу пропускания, служебные расходы сигнализации, и увеличивает эффективность кодирования. Кроме того, способы, описанные в настоящем раскрытии, могут учесть надлежащую временную масштабируемость.
[0056] Такие способы могут включать в себя, например, определение времени удаления из буфера кодированных картинок для единицы декодирования (DU) единицы доступа (AU), которое является независимым от времен удаления любой другой единицы доступа. Например, времена удаления из CPB для DU в AU будут сигнализированы на основании длительности между текущей DU и или временем удаления из CPB следующей DU в порядке декодирования в AU или временем удаления из CPB последней DU в AU. Способы могут также включать в себя сигнализацию флага уровня последовательности, чтобы управлять присутствием параметров CPB уровня суб-картинок в только одном из сообщений SEI тактирования картинок или сообщений SEI тактирования суб-картинок согласно способам, описанным в настоящем описании. Способы могут также включать в себя расширение определения единицы декодирования. Дополнительные способы обеспечивают ограничение сообщений SEI периода буферизации и сообщений SEI точки восстановления таким образом, что они не могут быть ассоциированы с единицами AU с переменной TemporalId большей чем 0. Способы могут также включать в себя обеспечение флага, чтобы сигнализировать, вывести ли времена удаления из CPB на уровне AU или уровне суб-картинок.
[0057] Подробности для реализации этих способов описаны более подробно ниже. Другие части, не упомянутые, могут быть теми же самыми как в HEVC WD8.
[0058] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое генерирует закодированные видео данные, которые должны быть декодированы в более позднее время устройством 14 назначения. Исходное устройство 12 и устройство 14 назначения может содержать любое из широкого диапазона устройств, включая настольные компьютеры, портативные (например, ноутбук) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, так называемые «смарт-» клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, устройство потоковой передачи видео, или подобное. В некоторых случаях исходное устройство 12 и устройство 14 назначения может быть оборудовано для беспроводной связи.
[0059] В примере согласно Фиг. 1 исходное устройство 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. В некоторых случаях интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, например, видео камеру, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принять видео от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать данные компьютерной графики как исходное видео, или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения могут сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным приложениям.
[0060] Захваченное, предварительно захваченное или машинно-генерируемое видео может быть закодировано видео кодером 20. Закодированные видео данные могут быть переданы непосредственно к устройству 14 назначения через интерфейс 22 вывода из исходного устройства 12. Закодированные видео данные могут также (или альтернативно) храниться на устройстве 32 хранения для более позднего доступа устройством 14 назначения или другими устройствами для декодирования и/или воспроизведения.
[0061] Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30 и устройство 32 отображения. В некоторых случаях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода из устройства 14 назначения принимает закодированные видео данные по линии 16 связи. Закодированные видео данные, переданные по линии 16 связи, или предоставленные на устройстве 32 хранения, могут включать в себя множество элементов синтаксиса, генерируемых видео кодером 20, для использования видео декодером, таким как видео декодер 30, при декодировании видео данных. Такие элементы синтаксиса могут быть включены в закодированные видео данные, переданы на коммуникационном носителе, сохранены на запоминающем носителе, или сохранены файловым сервером.
[0062] Устройство 32 отображения может быть интегрированным с, или быть внешним к, устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также конфигурироваться, чтобы соединяться с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Вообще, устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей с матрицей точек, дисплей на органических светоизлучающих (OLED) диодах, электронные чернила, или другой тип устройства отображения.
[0063] Устройство 14 назначения может принять закодированные видео данные, которые должны быть декодированы, через линию 16 связи. Линия 16 связи может содержать любой тип носителя или устройства, способного к перемещению закодированных видео данных от исходного устройства 12 к устройству 14 назначения. В одном примере линия 16 связи может содержать коммуникационный носитель, чтобы разрешить исходному устройству 12 передавать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. Закодированные видео данные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и переданы к устройству 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационный носитель может являться частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0064] Альтернативно, закодированные данные могут быть выведены из интерфейса 22 вывода на устройство 32 хранения. Аналогично, к закодированным данным можно получить доступ от устройства 32 хранения через интерфейс ввода. Устройство 32 хранения может включать в себя любой из множества распределенных или запоминающих носителей данных, к которым локально получают доступ, такой как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые запоминающие носители для того, чтобы хранить закодированные видео данные. В дальнейшем примере устройство 32 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может хранить закодированное видео, генерируемые исходным устройством 12. Устройство 14 назначения может получить доступ к сохраненным видео данным от устройства 32 хранения с помощью потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти закодированные видео данные к устройству 14 назначения. Примерные файловые серверы включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства соединенных с сетью устройств хранения (NAS) , или локальный дисковод. Устройство 14 назначения может получить доступ к закодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Это может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных видео данных от устройства 32 хранения может быть потоковой передачей, передачей загрузки или комбинацией обоих.
[0065] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для сохранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложений. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двухстороннюю видео передачу, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0066] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC), в настоящее время развиваемый объединенной командой сотрудничества по кодированию видео (JCT-VC) группы экспертов по кодированию видео ITU-T (VCEG) и ISO/IEC группы экспертов по движущимся изображениям (MPEG). Видео кодер 20 и видео декодер 30 могут работать согласно HEVC WD8. Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как 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), или расширения таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования.
[0067] В некоторых примерах видео кодер 20 и видео декодер 30 могут каждый быть интегрирован с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексор-демультиплексор), или другое аппаратное обеспечение и программное обеспечение, чтобы обрабатывать кодирование и аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0068] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Когда способы реализованы частично в программном обеспечении, устройство может сохранить инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0069] JCT-VC работает над развитием стандарта HEVC. Усилия по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой тестовой моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM может обеспечить целых тридцать три режима кодирования с внутренним предсказанием.
[0070] Вообще, рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркости так и насыщенности цвета. Блок дерева имеет аналогичную цель что и макроблок в стандарте H.264. Вырезка включает в себя ряд последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CUs) согласно квадродереву. Например, блок дерева, как корневой узел квадродерева, может быть разделен на четыре дочерних узла, и каждый дочерний узел может, в свою очередь, быть родительским узлом и быть разделен еще на четыре дочерних узла. Оконечный, неразделенный дочерний узел, как листовой узел квадродерева, содержит узел кодирования, то есть, закодированный блок видео. Данные синтаксиса, ассоциированные с закодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, и может также определить минимальный размер узлов кодирования.
[0071] CU включает в себя узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU обычно соответствует размеру узла кодирования и является типично квадратным по форме. Размер CU может ранжироваться от 8x8 пикселей до размера блока дерева с максимумом 64x64 пикселей или больше. Каждая CU может содержать одну или более единиц PU и одну или более единиц TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU в одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU закодированной в режиме пропуска или прямом режиме, закодированной в режиме внутреннего предсказания или закодированной в режиме внешнего предсказания. Единицы PU могут быть разделены, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU в одну или более единиц TU согласно квадродереву. TU может быть квадратной или неквадратной по форме.
[0072] Стандарт HEVC учитывает преобразования согласно единицам TU, которые может быть различными для различных единиц CU. Единицы TU типично имеют размеры на основании размера единиц PU в пределах заданной CU, определенной для разделенной LCU, хотя это может не всегда иметь место. Единицы TU типично имеют тот же размер или меньший, что и единицы PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие блоки, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листовые узлы RQT могут упоминаться как единицы преобразования (единицы TU). Значения пиксельной разности, ассоциированные с единицами TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.
[0073] Вообще, PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU является закодированной во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешения для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0, Список 1, или Список C) для вектора движения.
[0074] Вообще, TU используется для процессов квантования и преобразования. Заданная CU, имеющая одну или более единиц PU, может также включать в себя одну или более единиц преобразования (единиц TU). Вслед за предсказанием, видео кодер 20 может вычислить остаточные значения от блока видео, идентифицированного узлом кодирования в соответствии с PU. Узел кодирования затем обновляется, чтобы сослаться на остаточные значения, а не на первоначальный блок видео. Остаточные значения содержат значения пиксельной разности, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы с использованием преобразования и другой информации преобразования, заданной в единицах TU, чтобы сформировать преобразованные в последовательную форму коэффициенты преобразования для энтропийного кодирования. Узел кодирования может еще раз быть обновлен, чтобы ссылаться на эти преобразованные в последовательную форму коэффициенты преобразования. Настоящее раскрытие типично использует термин "блок видео", чтобы ссылаться на узел кодирования CU. В некоторых конкретных случаях настоящее раскрытие может также использовать термин "блок видео", чтобы ссылаться на блок дерева, то есть, LCU, или CU, которая включает в себя узел кодирования и единицы PU и единицы TU.
[0075] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) вообще содержит последовательность из одной или более видео картинок. GOP может включать данные синтаксиса в заголовок GOP, заголовок одной или более картинок, или в другое место, которое описывает множество картинок, включенных в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над блоками видео в пределах индивидуальных видео вырезок, чтобы закодировать видео данные. Блок видео может соответствовать узлу кодирования в пределах CU. Блоки видео могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования.
[0076] Как пример, HM поддерживает предсказание в PU различных размеров. Предполагая, что размер конкретной CU равен 2N×2N, HM поддерживает внутреннее предсказание в размерах PU, равных 2N×2N или N×N, и внешнее предсказание в симметричных размерах PU, равных 2N×2N, 2N×N, N×2N, или N×N. HM также поддерживает асимметричное разделение для внешнего предсказания в размерах PU, равных 2NxnU, 2NxnD, nLx2N, и nRx2N. При асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, обозначена “n”, сопровождаемая индикацией «верхний», «нижний», «левый» или «правый». Таким образом, например, “2N×nU” относится к CU размером 2N×2N, которая разделена горизонтально с 2N×0.5N PU сверху и 2N×1.5N PU внизу.
[0077] В настоящем раскрытии “N×N” и “N на N” может использоваться взаимозаменяемо, чтобы относиться к пиксельным измерениям блока видео в терминах вертикального и горизонтального измерений, например, 16×16 пикселей или 16 на 16 пикселей. Вообще, блок 16×16 имеет 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок N×N обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в рядах и колонках. Кроме того, блоки должны не обязательно иметь то же количество пикселей в горизонтальном направлении, как в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где М не обязательно равно N.
[0078] После кодирования с внутренним предсказанием или с внешним предсказанием, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные, к которым преобразования, заданные единицами TU в CU, применяются. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания, соответствующими единицам CU. Видео кодер 20 может сформировать остаточные данные для CU и затем преобразовать остаточные данные, чтобы сформировать коэффициенты преобразования.
[0079] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения во время квантования, где n больше чем m.
[0080] В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию с разделением интервала вероятности (PIPE) или другой методологии энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными, для использования видео декодером 30 при декодировании видео данных.
[0081] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0082] В некоторых примерах видео кодер 20 и видео декодер 30 могут быть сконфигурированы, чтобы реализовать один или более примерных способов, описанных в настоящем раскрытии. Видео кодер 20 может закодировать видео данные в форме единицы доступа, которая разделена на одну или более единиц декодирования. Эти единицы доступа могут быть временно сохранены в буфере кодированных картинок. Видео декодер 30 может извлечь единицы DU для декодирования в порядке декодирования на основании информации тактирования, включенной в элементы синтаксиса для соответствующей AU или DU.
[0083] В соответствии со способами, описанными в настоящем раскрытии, термин "единица декодирования" может быть определен следующим образом. Единица декодирования является единицей доступа или поднабором единиц доступа. Если элемент синтаксиса SubPicCpbFlag равен 0, единица декодирования является единицей доступа. Иначе, DU включает в себя одну или более единиц NAL VCL в AU и ассоциированные единицы NAL не-VCL. Если единица NAL не-VCL имеет nal_unit_type, равный UNSPEC0, EOS_NUT, EOB_NUT, FD _NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47, или в диапазоне UNSPEC48 - UNSPEC63, единица NAL не-VCL ассоциирована с наиболее недавней предшествующей единицей NAL VCL в порядке декодирования, иначе единица NAL не-VCL ассоциирована с первой последующей единицей NAL VCL в порядке декодирования. Для того, чтобы корректно рассмотреть единицы NAL не-VLC согласно способам, описанным в настоящем описании, DU может быть определена, чтобы рассматривать единицы NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0084] В соответствии со способами, описанными в настоящем раскрытии, термин "точка операции" может быть определен следующим образом. Точка операции идентифицируется набором nuh_reserved_zero_6bits значений (обозначенных как OpLayerIdSet) и значением TemporalId (обозначенным как OpTid), и ассоциированным поднабором потока битов, выведенным как результат процесса извлечения подпотока битов, как определено в подпункте 10.1 в HEVC WD8. Элементы синтаксиса OpTid и OpLayerIdSet могут функционировать как входные данные и быть независимо декодируемыми.
[0085] Некоторые примеры потоков битов, генерируемых согласно способам, описанным в настоящем описании, могут иметь уровень соответствия потока битов. Подпункт 10.1 HEVC WD8 описывает, что может иметь место требование соответствия (согласования) потока битов, что любой подпоток битов, который включен в выходные данные процесса, определенного в подпункте 10.1, с tIdTarget, равным любому значению в диапазоне от 0 до 6, включительно, и с targetDecLayerIdSet, содержащим значение 0, может соответствовать HEVC.
[0086] В некоторых примерах соответствующий (согласующийся) поток битов может содержать одну или более закодированных единиц NAL вырезки с nuh_reserved_zero_6bits, равным 0, и TemporalId, равным 0.
[0087] Входными данными к процессу, описанному здесь, могут быть переменная tIdTarget и список targetDecLayerIdSet. Выходные данные включают в себя подпоток битов. Подпоток битов может быть выведен посредством удаления из потока битов всех единиц NAL с TemporalId, большим чем tIdTarget или nuh_reserved_zero_6bits не среди значений в targetDecLayerIdSet.
[0088] Каждая единица NAL может быть ассоциирована с информацией заголовка. Для семантики заголовка единицы NAL может быть определено следующее. Во время декодирования декодер 30 может проигнорировать (например, удалить из потока битов и отбросить) содержимое всех единиц NAL, которые используют сохраненные значения nal_unit_type. В операциях HRD, как определено в Приложении C в HEVC WD8, в зависимости от выбранной точки операции, подвергаемой тесту, единицы NAL с сохраненными значениями nal_unit_type могут быть рассмотрены при выведении времен прибытия и удаления из CPB, но во время декодирования они могут быть безопасно проигнорированы (удалены и отброшены).
[0089] Во время декодирования декодеры могут проигнорировать (например, удалить из потока битов и отбросить) все единицы NAL со значениями nuh_reserved_zero_6bits, не равными 0. В операциях HRD, как определено в Приложении C в HEVC WD8, в зависимости от выбранной точки операции, подвергаемой тесту, единицы NAL с сохраненными значениями nuh_reserved_zero_6bits могут быть рассмотрены при выведении тактирования прибытия и удаления из CPB, но во время декодирования они могут быть безопасно проигнорированы (удалены и отброшены).
[0090] Времена прибытия и времена удаления из буфера кодированных картинок могут быть основаны на двух уровнях: уровень единицы доступа и уровень суб-картинок. Видео кодировщик (например, видео кодер 20 или видео декодер 30) может быть сконфигурирован, чтобы вывести время прибытия в CPB и номинальное время удаления из CPB и для уровня единицы доступа и для уровня суб-картинок независимо от значения элемента синтаксиса, который определяет, находится ли DU в AU (например, включает ли AU в себя только одну DU). Элементом синтаксиса может быть SubPicCpbFlag, который может быть сигнализирован для каждой AU. Как описано выше, когда SubPicCpbFlag равно 0, DU составляет всю AU. Иначе, когда SubPicCpbFlag равен ненулевому значению, DU включает в себя одну или более единиц NAL VCL в AU и ассоциированные единицы NAL не-VCL. В некоторых примерах видео кодировщик может быть сконфигурирован, чтобы также вывести времена удаления из CPB для уровня AU, когда элемент синтаксиса указывает, что DU является единицей AU. В некоторых из этих примеров видео кодировщик может быть сконфигурирован, чтобы вывести времена удаления из CPB только для уровня AU, когда элемент синтаксиса указывает, что DU является единицей AU.
[0091] В некоторых примерах видео кодировщик (например, видео кодер 20 или видео декодер 30) может быть сконфигурирован, чтобы также вывести времена удаления из CPB для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является единицей AU. В некоторых из этих примеров видео кодировщик может быть сконфигурирован, чтобы вывести времена удаления из CPB только для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является AU.
[0092] Видео кодировщик может быть сконфигурирован, чтобы вывести время прибытия в CPB и номинальное время удаления из CPB, когда второй элемент синтаксиса определяет, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне AU или уровне суб-картинок. Второй элемент синтаксиса может быть sub_pic_cpb_params_present_flag. Когда sub_pic_cpb_params_present_flag равен 1, параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок, и когда sub_pic_cpb_params_present_flag равен 0, параметры задержки удаления из CPB на уровне суб-картинок не присутствуют, и CPB работает на уровне единицы доступа.
[0093] В некоторых из примеров, где sub_pic_cpb_params_present_flag равен 1, видео кодировщик может быть сконфигурирован, чтобы установить переменную subPicParamsPresentFlag равной 0, и вывести начальное и оконечное время прибытия AU. Затем видео кодировщик может быть сконфигурирован, чтобы установить переменную subPicParamsPresentFlag равной 1, и вывести начальное и оконечное время прибытия DU для единицы DU в пределах AU.
[0094] Кроме того, в некоторых примерах видео кодировщик (например, видео кодер 20 или видео декодер 30) может быть сконфигурирован, чтобы закодировать (например, закодировать или декодировать) длительность времени между удалением из CPB первой единицы декодирования в единице доступа и второй DU в единице доступа. В этом примере вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU что и DU. Видео кодировщик может быть сконфигурирован, чтобы определить время удаления первой DU на основании по меньшей мере закодированной длительности. В некоторых способах видео кодировщик может определить время удаления первой DU без кодирования начальной задержки удаления из CPB и смещения. В некоторых примерах вторая DU является непосредственно следующей за первой DU в единице доступа. В некоторых примерах вторая DU является последней DU в единице доступа в порядке декодирования.
[0095] Видео кодировщик (например, видео кодер 20 или видео декодер 30) может также быть сконфигурирован, чтобы закодировать параметры CPB уровня суб-картинок. В этих примерах видео кодировщик может определить время удаления первой DU на основании по меньшей мере одного из закодированной длительности и параметров CPB уровня суб-картинок. Например, параметры CPB уровня суб-картинок могут быть сообщением SEI тактирования суб-картинок, которое ассоциировано с первой DU. В некоторых примерах видео кодировщик может закодировать длительность между временем удаления последней DU в AU в порядке декодирования и первой DU в сообщении SEI суб-картинок. В некоторых примерах видео кодировщик может закодировать флаг уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок.
[0096] Например, видео кодер 20 может быть сконфигурирован, чтобы закодировать длительность времени между удалением из CPB первой DU в AU и второй DU в AU. Видео кодер 20 может закодировать параметры CPB уровня суб-картинок, такие как параметры задержки удаления из CPB на уровне суб-картинок, в одном из сообщения SEI тактирования картинок или сообщения SEI тактирования суб-картинок. Видео кодер 20 может закодировать флаг, sub_pic_cpb_params_in_pic_timing_sei_flag, чтобы указать, присутствует ли параметры CPB уровня суб-картинок в сообщении SEI тактирования картинок или в сообщении SEI тактирования суб-картинок.
[0097] Например, видео декодер 30 может декодировать длительность времени между удалением из CPB первой DU в AU и второй DU в этой AU. Видео декодер 30 может быть сконфигурирован, чтобы определить время удаления первой DU на основании по меньшей мере декодированной длительности. В некоторых способах видео кодировщик может определить время удаления первой DU без декодирования начальной задержки удаления из CPB и смещения. Видео декодер 30 может декодировать параметры CPB уровня суб-картинок из сообщения SEI тактирования картинок или сообщения SEI тактирования суб-картинок, принятого от видео кодера 20. Видео декодер 30 может определить - в каком сообщении SEI искать параметры CPB уровня суб-картинок, на основании присутствия флага, sub_pic_cpb_params_in_pic_timing_sei_flag.
[0098] В некоторых из примерных способов, описанных в настоящем раскрытии, временное значение идентификационной информации (TemporalId) второй DU может не быть больше, чем TemporalId первой DU. В некоторых примерах TemporalId второй DU может не быть больше чем ноль.
[0099] Например, способы, описанные в настоящем раскрытии, могут обеспечить более устойчивое к ошибкам определение времени удаления из буфера кодированных картинок. Кроме того, в дополнение к улучшенной устойчивости к ошибкам, способы могут способствовать эффективности сигнализации, которая уменьшает полосу пропускания, служебные расходы сигнализации и увеличивает время кодирования. Кроме того, способы, описанные в настоящем раскрытии, могут учесть улучшенную временную масштабируемость.
[0100] Фиг. 2 является блок-схемой, иллюстрирующей примерный кодер видео 20, который может реализовать способы, описанные в настоящем раскрытии. Видео кодер 20 может выполнять внутреннее и внешнее кодирование блоков видео в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (I режим) может относиться к любому из нескольких основанных на пространстве режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (P режим) или би-предсказание (B режим), могут относиться к любому из нескольких основанных на времени режимов сжатия.
[0101] В примере согласно Фиг. 2 видео кодер 20 включает в себя модуль 35 разделения, модуль 41 обработки предсказания, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 обработки внутреннего предсказания. Для реконструкции блока видео, видео кодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, сумматор 62, модуль 64 фильтров и буфер декодированных картинок (DPB) 66. Буфер 66 декодированных картинок может также упоминаться как память опорных картинок. В других примерах видео кодер 20 может включать в себя больше, меньше, или другие функциональные компоненты.
[0102] Как показано на фиг. 2, видео кодер 20 принимает видео данные и модуль 35 разделения разделяет данные на блоки видео. Это разделение видео данных может также включать в себя разделение видео данных на вырезки, мозаичные элементы (плитки), или другие большие блоки, а также разделение блока видео, например, согласно структуре квадродерева единиц LCU и единиц CU. Видео кодер 20 обычно иллюстрирует компоненты, которые кодируют блоки видео в пределах видео вырезки, которая должна быть закодирована. Вырезка может быть разделена на множественные блоки видео (и возможно на наборы блоков видео, называемых «мозаичные элементы»).
[0103] Модуль 41 обработки предсказания может выбрать один из множества возможных режимов кодирования, таких как один из множества режимов внутреннего кодирования или один из множества внешних режимов кодирования, для текущего блока видео, на основании результатов ошибок (например, скорость кодирования и уровень искажения). Модуль 41 обработки предсказания может выдать результирующий внутренне или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорной картинки.
[0104] Модуль 46 обработки внутреннего предсказания, находящийся в пределах модуля 41 обработки предсказания, может выполнить кодирование с внутренним предсказанием текущего блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке как и текущий блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в пределах модуля 41 обработки предсказания выполняют кодирование с внешним предсказанием текущего блока видео относительно одного или более предсказывающих блоков в одной или более опорных картинок, чтобы обеспечить временное сжатие.
[0105] Модуль 42 оценки движения может быть сконфигурирован, чтобы определить режим внешнего предсказания для видео вырезки согласно заранее определенному шаблону для видео последовательности. Заранее определенный шаблон может определять видео вырезки в последовательности как P вырезки, B вырезки или вырезки GPB. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная модулем 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать смещение PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорной картинки.
[0106] Предсказывающий блок является блоком, который, как находят, близко соответствует PU блока видео, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), сумма разностей квадратов (SSD), или другими метриками различия. В некоторых примерах видео кодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных картинок, сохраненных в буфере 66 декодированных картинок. Например, видео кодер 20 может интерполировать значения пиксельных позиций в одну четверть, пиксельных позиций в одну восьмую, или других фракционных пиксельных позиций опорной картинки. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0107] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео во внешне кодированной вырезке, сравнивая позицию PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицирует одну или более опорных картинок, сохраненных в буфере 66 декодированных картинок. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0108] Компенсация движения, выполненная модулем 44 компенсации движения, может включать в себя установку или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения, возможно выполняя интерполяции до суб-пиксельной точности. После приема вектора движения для PU текущего блока видео модуль 44 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок. Видео кодер 20 формирует остаточный блок видео, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего закодированного блока видео, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока, и могут включать в себя разностные компоненты как яркости так и насыщенности цвета. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 44 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками видео и видео вырезкой, для использования видео декодером 30 при декодировании блоков видео в видео вырезке.
[0109] Модуль 46 обработки внутреннего предсказания может внутренне предсказывать текущий блок, как альтернатива внешнему предсказанию, выполненному модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 обработки внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать для кодирования текущего блока. В некоторых примерах модуль 46 обработки внутреннего предсказания может закодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 обработки внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из протестированных режимов. Например, модуль 46 обработки внутреннего предсказания может вычислить значения «скорость передачи - искажение», используя анализ «скорость передачи - искажение» для различных протестированных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики скорости передачи - искажение среди протестированных режимов. Анализ «скорость передачи - искажение» вообще определяет величину искажения (или ошибку) между закодированным блоком и первоначальным, незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, а также частоту следования битов (то есть, количество битов), использованную для формирования закодированного блока. Модуль 46 обработки внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение «скорость передачи - искажение» для блока.
[0110] В любом случае после выбора режима внутреннего предсказания для блока модуль 46 обработки внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока, к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может закодировать информацию, указывающую выбранный режим внутреннего предсказания, в соответствии со способами настоящего раскрытия. Видео кодер 20 может включать в переданные данные конфигурацию потока битов, которая может включать в себя множество таблиц индекса режима внутреннего предсказания, и множество модифицированных таблиц индекса режима внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, и индикации наиболее вероятного режима внутреннего предсказания, таблицы индекса режима внутреннего предсказания, и модифицированные таблицы индекса режима внутреннего предсказания, чтобы использовать для каждого из контекстов.
[0111] После того, как модуль 41 обработки предсказания генерирует предсказывающий блок для текущего блока видео или через внешнее предсказание или через внутреннее предсказание, видео кодер 20 формирует остаточный блок видео, вычитая предсказывающий блок из текущего блока видео. Остаточные видео данные в остаточном блоке могут быть включены в одну или более единиц TU и поданы на модуль 52 обработки преобразования. Модуль 52 обработки преобразования преобразовывает остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такие как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 52 обработки преобразования может преобразовать остаточные видео данные из пиксельной области в область преобразования, такую как частотная область.
[0112] Модуль 52 обработки преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 энтропийного кодирования может выполнить сканирование.
[0113] Вслед за квантованием модуль 56 энтропийного кодирования может энтропийно кодировать квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другую методологию энтропийного кодирования или способ. После энтропийного кодирования модулем 56 энтропийного кодирования закодированный поток битов может быть передан к видео декодеру 30 или заархивирован для более поздней передачи или поиска видео декодером 30. Модуль 56 энтропийного кодирования может также энтропийно кодировать вектора движения и другие элементы синтаксиса для текущей видео закодированной вырезки.
[0114] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислить опорный блок, добавляя остаточный блок к предсказывающему блоку одной из опорных картинок в пределах одного из списков опорных картинок. Модуль 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, сформированному модулем 44 компенсации движения, чтобы сформировать опорный блок, для сохранения в буфере 66 декодированных картинок. Опорный блок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения как опорный блок, чтобы внешне предсказать блок в последующем видео кадре или картинке.
[0115] Видео кодер 20 также включает в себя модуль 64 фильтров, который может фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Таким образом, модуль 64 фильтров может выполнять одну или более операций удаления блочности, чтобы уменьшить артефакты блочности в блоках кодирования, ассоциированных с CU. Модуль 64 фильтров может быть фильтром удаления блочности и фильтрует выходной сигнал сумматора 62. Дополнительные контурные фильтры (в контуре или после контура) могут также использоваться в дополнение к модулю 64 фильтров.
[0116] Буфер 66 декодированных картинок может сохранять восстановленные блоки кодирования после того, как модуль 64 фильтров выполняет одну или более операций удаления блочности в отношении восстановленных блоков кодирования. Модуль 41 обработки предсказания может использовать опорную картинку, которая содержит восстановленные блоки кодирования, чтобы выполнить внешнее предсказание в отношении единиц PU других картинок. Кроме того, модуль 46 обработки внутреннего предсказания может использовать восстановленные блоки кодирования в буфере 66 декодированных картинок, чтобы выполнить внутреннее предсказание в отношении других единиц PU в той же картинке как CU.
[0117] Видео кодер 20 может генерировать элементы синтаксиса, относящиеся к временам удаления из CPB единицы DU в пределах AU согласно способам, описанным в настоящем описании. Как только эти элементы синтаксиса генерируются, видео кодер 20 кодирует их в один или более потоков битов и выводит эти потоки битов.
[0118] В соответствии с настоящим раскрытием, модуль 41 обработки предсказания представляет один примерный модуль для того, чтобы выполнить примерные функции, описанные выше. В других примерах модуль, отличный от модуля 41 обработки предсказания, может реализовать примеры, описанные выше. В некоторых других примерах модуль 41 обработки предсказания в соединении с одним или более другими модулями видео кодера 20 могут реализовать примеры, описанные выше. В еще некоторых других примерах процессор или модуль видео кодера 20 могут, один или в соединении с другими блоками видео кодера 20, реализовывать примеры, описанные выше.
[0119] Фиг. 3 является блок-схемой, иллюстрирующей примерный декодер видео 30, который может реализовать способы, описанные в настоящем раскрытии. В примере согласно Фиг. 3 видео декодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90 и буфер 92 декодированных картинок (DPB). Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 обработки внутреннего предсказания. Буфер 94 кодированных картинок (CPB) показан как вход в видео декодер 30. Однако, в некоторых примерах CPB 94 может быть частью видео декодера 30. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, в целом обратный к проходу кодирования, описанному относительно видео кодера 20 на фиг. 2.
[0120] Во время процесса декодирования видео декодер 30 принимает закодированный видео поток битов, который представляет блоки видео закодированной видео вырезки, и ассоциированные элементы синтаксиса от видео кодера 20. Блоки видео закодированной видео вырезки и ассоциированные элементы синтаксиса от видео кодера 20 могут быть извлечены из буфера 94 кодированных картинок. Закодированное видео из CPB 94 может включать в себя, например, единицы доступа (AU), содержащие единицы декодирования (единицы DU). Элементы синтаксиса могут включать в себя переменные и флаги, указывающие времена удаления из CPB для единиц доступа и единиц декодирования.
[0121] Модуль 80 энтропийного декодирования видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения и другие элементы синтаксиса. Модуль 80 энтропийного декодирования направляет вектора движения и другие элементы синтаксиса к модулю 81 обработки предсказания. Видео декодер 30 может принять элементы синтаксиса на уровне вырезки видео и/или уровне блока видео.
[0122] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, модуль 84 обработки внутреннего предсказания из модуля 81 обработки предсказания может генерировать данные предсказания для блока видео текущей видео вырезки на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть, B, P или GPB) вырезка, модуль 82 компенсации движения из модуля 81 обработки предсказания формирует предсказывающие блоки для блока видео текущей видео вырезки на основании вектора движения и других элементов синтаксиса, принятых от модуля 80 энтропийного декодирования. Предсказывающие блоки могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя способы конструирования по умолчанию, на основании опорных картинок, сохраненных в буфере 92 декодированных картинок.
[0123] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущей видео вырезки посредством синтаксического разбора векторов движения и других элементов синтаксиса, и использует информацию предсказания, чтобы сформировать предсказывающие блоки для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), использованный для кодирования блоков видео для видео вырезки, тип вырезки внешнего предсказания (например, B вырезка, P вырезка, или вырезка GPB), информацию конструирования для одного или более списков опорных картинок для вырезки, вектора движения для каждого внешне кодированного блока видео вырезки, статус внешнего предсказания для каждого внешне кодированного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке.
[0124] Модуль 82 компенсации движения может также выполнить интерполяцию на основании фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, из принятых элементов синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0125] Модуль 86 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видео кодером 20 для каждого блока видео в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которая должна быть применена. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0126] После того, как модуль 82 компенсации движения генерирует предсказывающий блок для текущего блока видео на основании вектора движения и других элементов синтаксиса, видео декодер 30 формирует декодированный блок видео, суммируя остаточные блоки от модуля 88 обработки обратного преобразования с соответствующими предсказывающими блоками, генерируемыми модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Другие контурные фильтры (или в контуре кодирования или после контура кодирования) могут также быть использованы для сглаживания пиксельных переходов или иного улучшения качества видео. Декодированные блоки видео в заданном кадре или картинке затем сохраняют в DPB 92, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 92 также хранит декодированное видео для более позднего представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1.
[0127] В соответствии с настоящим раскрытием модуль 81 обработки предсказания представляет один примерный модуль для того, чтобы выполнить примерные функции, описанные выше. В других примерах модуль, отличный от модуля 81 обработки предсказания, может реализовать примеры, описанные выше. В некоторых других примерах модуль 81 обработки предсказания в соединении с одним или более другими модулями видео декодера 30 может реализовать примеры, описанные выше. В еще некоторых других примерах процессор или модуль видео декодера 30 могут, один или в соединении с другими модулями видео декодера 30, реализовывать примеры, описанные выше.
[0128] Видео декодер 30 может сохранить принятые видео данные в форме потока битов, включающего в себя единицы AU и единицы DU, в буфере 94 кодированных картинок (CPB). Видео декодер 30 может извлечь единицы DU и единицы AU из CPB 94 во времена удаления, определенные из элементов синтаксиса видео декодером 30, принятых в потоке битов. Флаги и переменные, присутствующие в сообщениях SEI, могут информировать видео декодер 30, когда удалить единицы DU из CPB 94. В определенное время удаления для текущей DU, видео декодер 30 извлекает текущую DU из CPB 94 и декодирует DU. В некоторых примерах видео декодер 30 также извлекает AU, когда текущая DU является последней DU этой AU.
[0129] Нижеследующее описывает работу CPB 94. Это описание может примениться независимо к каждому из параметров CPB, который присутствует, и к обеим точкам согласования Типа I и Типа II, показанным на фиг. C-1 в HEVC WD8, где набор параметров CPB выбран так, как определено в подпункте C.1 HEVC WD8. Работа CPB 94 может включать в себя тактирование прибытия потока битов и тактирование удаления единицы декодирования и декодирование единицы декодирования. Каждое описано по очереди.
[0130] Сначала будет описано тактирование прибытия потока битов. Для тактирования прибытия потока битов, до инициализации HRD, CPB 94 пуст. В некоторых примерах после инициализации HRD не может инициализироваться снова последующим сообщением SEI периода буферизации.
[0131] В примерах, описанных в настоящем раскрытии, каждая единица доступа упоминается как единица доступа "n", где номер “n” идентифицирует конкретную единицу доступа. Единица доступа, которая ассоциирована с сообщением SEI периода буферизации, которое инициализирует CPB 94, упоминается как единица доступа 0. Значение n увеличивается на 1 для каждой последующей единицы доступа в порядке декодирования.
[0132] Каждая единица декодирования упоминается как единица декодирования "m", где номер “m” идентифицирует конкретную единицу декодирования. Первая единица декодирования в порядке декодирования в единице доступа 0 упоминается как единица декодирования 0. Значение m увеличивается на 1 для каждой последующей единицы декодирования в порядке декодирования.
[0133] Когда sub_pic_cpb_params_present_flag равен 1, следующий процесс вызывается сначала, с переменной subPicParamsPresentFlag, установленной равной 0, для выведения начального и оконечного времен прибытия единицы доступа (AU) для единицы доступа n. Затем следующий процесс вызывается с subPicParamsPresentFlag, установленным равным 1, для выведения начального и оконечного времен прибытия единицы декодирования для единиц декодирования в единице доступа n.
[0134] Переменные InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] могут быть установлены следующим образом: Если одно из следующих трех условий верно, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx], соответствующие NalHrdModeFlag, соответственно, в сообщении SEI периода буферизации. Первое условие может иметь место, когда единица доступа 0 является единицей доступа с разорванной ссылкой (BLA), для которой закодированная картинка имеет nal_unit_type, равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag сообщения SEI периода буферизации равно 1. Второе условие может состоять в том, что DefaultInitCpbParamsFlag равен 0. Третье условие может состоять в том, что subPicParamsPresentFlag равен 1. Следует отметить, что в некоторых примерах, когда sub_pic_cpb_params_present_flag равен 1, закодированная видео последовательность может не иметь картинок чистого произвольного доступа (CRA) или BLA, и таким образом первые два условия могут оба быть ложными.
[0135] Иначе, если ни одно из вышеупомянутых трех условий не верно, InitCpbRemovalDelay [SchedSelIdx] и InitCpbRemovalDelayOffset [SchedSelIdx] установлены в значения initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx], соответствующие NalHrdModeFlag, соответственно, в ассоциированном сообщении SEI периода буферизации, выбранном так как определено в подпункте C.1 в HEVC WD8.
[0136] В примерах, описанных в настоящем описании, время, в которое первый бит единицы декодирования m начинает входить в CPB 94, упоминается как начальное время прибытия tai (m). Начальное время прибытия единицы декодирования m выводится следующим образом. Если единица декодирования является единицей декодирования 0 (то есть, m=0), tai(0)=0. Таким образом, первая единица декодирования прибывает во время 0. Иначе, для единиц декодирования после первой единицы декодирования (единица декодирования m с m> 0), применяется следующее.
[0137] Если cbr_flag [SchedSelIdx] равен 1, начальное время прибытия для единицы декодирования m равно оконечному времени прибытия (tai, выведенному ниже) единицы декодирования m - 1, предыдущей единицы декодирования. Уравнение 1 обеспечивает отношение:
Иначе (например, cbr_flag [SchedSelIdx] равно 0), начальное время прибытия для единицы декодирования m (например, для m>0) выводится Уравнением ("Уравнение") 2:
[0138] Время прибытия единицы декодирования выводится следующим образом. Если единица декодирования m не является первой единицей декодирования последующего периода буферизации,
выводится, как показано в Уравнении 3:
где является номинальным временем удаления единицы декодирования m из CPB 94.
[0139] Оконечное время прибытия для единицы декодирования m выводится с помощью Уравнения 4:
где является размером в битах единицы декодирования m. Если точка согласования Типа I применяется,
включается всебя подсчет битов единиц NAL VCL и единиц NAL данных заполнения. Если точка согласования Типа II применяется,
включает в себя подсчет всех битов потоков битов Типа II для точек согласования Типа II. Точки согласования Типа I и Типа II находятся как показано на фигуре C-1 Приложения C в HEVC WD8.
[0140] Значения ,
, и
ограничены следующим образом. Если содержимое выбранной синтаксической структуры hrd_parameters () для AU, содержащей единицу декодирования m, и предыдущей AU в порядке декодирования (в порядке декодирования) отличаются, планировщик доставки (HSS) выбирает значение
из
из числа значений
, предоставленных в выбранной синтаксической структуре hrd_parameters () для единицы доступа, содержащей единицу декодирования m, что приводит к
или
для единицы доступа, содержащей единицу декодирования m. Значение
или
может отличаться от значения
или
для значения
из
, которое использовалось для предыдущей единицы доступа. Иначе, если содержимое выбранной синтаксической структуры hrd_parameters () для двух единиц AU является одинаковым, HSS продолжает работать с предыдущими значениями
,
и
.
[0141] Когда HSS выбирает значения или
, которые отличаются от таковых из предыдущей единицы доступа, применяется следующее. Переменная
вступает в силу во время
. Переменная
вступает в силу при некоторых условиях.
[0142] Если новое значение больше чем старый размер CPB,
вступает в силу во время
. Иначе, если новое значение
меньше чем или равно старому размеру CPB, новое значение
вступает в силу во время удаления из CPB последней единицы декодирования единицы доступа, содержащей единицу декодирования m
[0143] Когда SubPicCpbFlag равен 1, начальное время прибытия в CPB единицы доступа n, , установлено в начальное время прибытия в CPB первой единицы декодирования в единице доступа n. Оконечное время прибытия в CPB единицы доступа n,
, установлено в оконечное время прибытия в CPB последней единицы декодирования в единице доступа n. Когда SubPicCpbFlag равен 0, каждая DU является AU, следовательно начальное и оконечное время прибытия в CPB единицы доступа n является начальным и оконечным временем прибытия в CPB единицы декодирования n.
[0144] Настоящее раскрытие теперь обращается к описанию работы CPB 94 относительно тактирования удаления единицы декодирования и декодирования единиц декодирования.
[0145] Переменные и
используются для времен удаления DU. Эти две переменные установлены следующим образом. Если любое из двух условий верно,
и
установлены, в сообщении SEI периода буферизации, в значения Initial_alt_cpb_removal_delay_delay[SchedSelldx] и Initial_alt_cpb_removal_delay_offset[SchedSelldx], соответствующие NalHrdModeFlag, соответственно. Первое условие состоит в том, что единица доступа 0 является единицей доступа BLA, для которой закодированная картинка имеет nal_unit_type равный BLA_W_DLP или BLA_N_LP, и значение rap_cpb_params_present_flag сообщения SEI периода буферизации равно 1. Второе условие состоит в том, что DefaultInitCpbParamsFlag равен 0.
[0146] Если ни одно из этих двух условий не верно, и
установлены в значения Initial_cpb_removal_delay_delay[SchedSelldx] и Initial_cpb_removal_delay_offset[SchedSelldx], соответствующие NalHrdModeFlag, соответственно, в ассоциированном сообщении SEI периода буферизации, выбранном как определено в подпункте C.1 Приложения C в HEVC WD8.
[0147] Переменная , относящаяся ко времени задержки удаления единицы декодирования m из CPB 94, может быть выведена следующим образом, когда sub_pic_cpb_params_present_flag равен 1. Если sub_pic_cpb_params_in_pic_timing_sei_flag равен 0,
установлена в du_spt_cpb_removal_delay в сообщении SEI тактирования суб-картинок, ассоциированном с единицей декодирования m. Сообщение SEI тактирования суб-картинок может быть выбрано как задано в подпункте C.1 Приложения C в HEVC WD8.
[0148] Если du_common_cpb_removal_delay_flag равен 0, переменная установлена в значение du_cpb_removal_delay_minus1 [i]+1 для единицы декодирования m в сообщении SEI тактирования картинок, выбранном так, как определено в подпункте C.1 Приложения C в HEVC WD8, ассоциированном с единицей доступа, которая содержит единицу декодирования m. Значение i равно 0 для первой num_nalus_in_du_minus1 [0]+1 последовательной единицы декодирования в единице доступа, которая содержит единицу декодирования m, 1 для последующей num_nalus_in_du_minus1 [1]+1 единицы декодирования в той же самой единице доступа, 2 для последующих num_nalus_in_du_minus1 [2]+1 единиц декодирования в той же самой единице доступа, и т.д.
[0149] Иначе, если ни sub_pic_cpb_params_present_flag не равен 1, ни du_common_cpb_removal_delay_flag не равен 0, установлен в значение du_common_cpb_removal_delay_minus1+1 в сообщении SEI тактирования картинок, выбранном так, как определено в подпункте C.1 Приложения C в HEVC WD8, ассоциированном с единицей доступа, которая содержит единицу декодирования m.
[0150] Номинальное время удаления единицы доступа n из CPB 94 может также быть определено следующим образом. Если единица доступа n является единицей доступа 0 (то есть, единицей доступа, которая инициализирует HRD), номинальное время удаления единицы доступа 0, из CPB 94, , определено Уравнением 5:
[0151] Иначе, для единицы доступа n, где n является ненулевым или не инициализирован HRD, применяется следующее. Когда единица доступа n является первой единицей доступа периода буферизации, которая не инициализирует HRD, номинальное время удаления единицы доступа n из CPB 94, , определено Уравнением 6:
где - номинальное время удаления первой единицы доступа предыдущего периода буферизации, и au_cpd_removal_delay_minus1(n) является значением au_cpd_removal_delay_plus1 в сообщении SEI тактирования картинок, выбранном как задано в HEVC WD8, Приложение C, подпункт C.1, ассоциированном с единицей доступа n. Когда единица доступа n является первой единицей доступа периода буферизации, nb установлено равным n при номинальном времени удаления
единицы доступа n. Когда единица доступа n не является первой единицей доступа периода буферизации,
задается Уравнением 6, где
- номинальное время удаления первой единицы доступа текущего периода буферизации.
[0152] Когда sub_pic_cpb_params_present_flag равен 1, номинальное время удаления для того, чтобы удалить единицу декодирования m из CPB 94, задается следующим образом, где - номинальное время удаления единицы доступа n: Если единица декодирования m является последней единицей декодирования в единице доступа n, номинальное время удаления единицы декодирования m
установлено в
. Таким образом, единица доступа и ее последняя единица декодирования удаляются из CPB 94 в приблизительно одно и то же время. Иначе, (то есть, единица декодирования m не является последней единицей декодирования в единице доступа n), номинальное время удаления единицы декодирования m,
, выводится как показано в Уравнении 7, где
- номинальное время удаления единицы доступа n.
[0153] Время удаления единицы доступа n из CPB 94 задано следующим образом в Уравнении 8, где и
- оконечное время прибытия и номинальное время удаления, соответственно, последней единицы декодирования в единице доступа n.
[0154] Когда SubPicCpbFlag равен 1, время удаления единицы декодирования m из CPB 94 задается следующим образом. Если low_delay_hrd_flag равен 0 или , время удаления единицы декодирования m задается Уравнением 9:
Иначе, если единица декодирования m не является последней единицей декодирования единицы доступа n, время удаления единицы декодирования m задается Уравнением 10:
Иначе, если единица декодирования m является последней единицей декодирования единицы доступа n, время удаления единицы декодирования m, задается Уравнением 11:
[0155] В некоторых примерах, когда low_delay_hrd_flag равен 1 и , размер единицы декодирования m, b(m), является настолько большим, что это предотвращает удаление в номинальное время удаления.
[0156] Во время удаления из CPB единицы декодирования m мгновенно декодируется единица декодирования. Картинку n рассматривают как декодированную после того, как последняя единица декодирования картинки декодирована.
[0157] Нижеследующие таблицы иллюстрируют синтаксис и семантику, которые могут быть использованы для реализации примерных способов, описанных в настоящем раскрытии. Таблица 1 обеспечивает примерные синтаксис и семантику для сообщения SEI периода буферизации. Таблица 2 обеспечивает примерные синтаксис и семантику для сообщения SEI тактирования картинок. Функциональные возможности CPB 94 могут быть определены синтаксисом и семантикой сообщений SEI. Например, видео декодер 30 извлекает единицы DU из CPB 94 на основании, по меньшей мере частично, сообщений SEI тактирования картинок и периода буферизации.
[0158] Сообщение дополнительной информации расширения (SEI) периода буферизации предоставляет информацию начальной задержки удаления из CPB и начального смещения задержки удаления из CPB. Синтаксис сообщения SEI периода буферизации может быть тем же самым как синтаксис сообщения SEI периода буферизации в предварительной заявке на патент США № 61/705,102, поданной 24 сентября 2012, и семантики изменены следующим образом. Синтаксис сообщения SEI периода буферизации предоставлен в Таблице 1, показанной ниже.
[0159] Период буферизации определен как набор единиц доступа между двумя последовательными экземплярами сообщения SEI периода буферизации в порядке декодирования.
[0160] Следующее применяется к синтаксису и семантике сообщения SEI периода буферизации. Поток битов (или часть его) ссылается на поднабор потока битов (или часть его), ассоциированный с любой из точек операции, к которым сообщение SEI периода буферизации применяется.
[0161] Для сообщения SEI периода буферизации элементы синтаксиса initial_cpb_removal_delay_length_minus1 и sub_pic_cpb_params_present_flag, и переменные NalHrdBpPresentFlag, VclHrdBpPresentFlag, CpbSize [SchedSelIdx], BitRate[SchedSelIdx], и CpbCnt находят или выводят из элементов синтаксиса, найденных в синтаксической структуре hrd_parameters () и синтаксической структуре sub_layer_hrd_parameters (), которые применимы к любой из точек операции, к которым применяется сообщение SEI периода буферизации.
[0162] Сообщение SEI периода буферизации может иметь две точки операции с различными значениями OpTid, tIdA и tIdB. Наличие любых двух точек операции с различными значениями OpTid указывает, что значения cpb_cnt_minus1 [tIdA] и cpb_cnt_minus1 [tIdB] закодированные в синтаксической структуре hrd_parameters (), применимые к соответствующим точкам операции, идентичны. Дополнительно, сообщение SEI периода буферизации может иметь две точки операции в сообщении SEI периода буферизации, которые имеют различные значения OpLayerIdSet, layerIdSetA и layerIdSetB. Наличие любых двух точек операции с различными значениями OpLayerIdSet указывает, что значения nal_hrd_parameters_present_flag и vcl_hrd_parameters_present_flag, для двух синтаксических структур hrd_parameters (), применимые к двум точкам операции, соответственно, являются идентичными.
[0163] Если NalHrdBpPresentFlag или VclHrdBpPresentFlag равны 1, сообщение SEI периода буферизации, применимое к указанным точкам операции, может присутствовать в любой AU с TemporalId равным 0 в закодированной видео последовательности, и сообщение SEI периода буферизации, применимое к указанным точкам операции, может присутствовать в каждой точке произвольного доступа (RAP), AU, и в каждой AU, ассоциированной с сообщением SEI точки восстановления. Иначе (NalHrdBpPresentFlag и VclHrdBpPresentFlag оба равны 0), никакая единица доступа в закодированной видео последовательности не может иметь сообщение SEI периода буферизации, применимое к указанным точкам операции.
[0164] Для некоторых применений частое присутствие сообщения SEI периода буферизации может быть желательным.
[0165] Когда единица NAL SEI, которая содержит сообщение SEI периода буферизации и имеет nuh_reserved_zero_6bits равный 0, присутствует, единица NAL SEI может предшествовать, в порядке декодирования, первой единице NAL VCL в AU.
[0166] Единица доступа, ассоциированная с сообщением SEI периода буферизации, может иметь TemporalId равный 0.
[0167] Переменная CpbCnt выводится, чтобы быть равной cpb_cnt_minus1 [tId]+1, где cpb_cnt_minus1 [tId] закодирована в синтаксической структуре hrd_parameters (), которая применима к любой из точек операции, к которой применяется сообщение SEI периода буферизации, и которое имеет OpTid равный tId.
[0168] Следующие элементы синтаксиса и переменные в сообщении SEI периода буферизации могут быть определены следующим образом: seq_parameter_set_id относится к активному набору параметров последовательности. Значение seq_parameter_set_id может быть равным значению seq_parameter_set_id в наборе параметров картинки ("PPS"), на который ссылается закодированная картинка, ассоциированная с сообщением SEI периода буферизации. Значение seq_parameter_set_id может быть в диапазоне от 0 до 31, включительно.
[0169] Флаг rap_cpb_params_present_flag, равный 1, определяет присутствие элементов синтаксиса initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx]. Если не присутствует, значение rap_cpb_params_present_flag может быть логически выведено, чтобы быть равным 0. Когда ассоциированная картинка не является ни картинкой CRA, ни картинкой BLA, значение rap_cpb_params_present_flag может быть равным 0.
[0170] Элементы последовательности initial_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay [SchedSelIdx] определяют по умолчанию и альтернативные начальные задержки удаления из CPB, соответственно, для SchedSelIdx-th CPB. Эти элементы синтаксиса имеют длину в битах, заданных посредством initial_cpb_removal_delay_length_minus1+1, и задаются в единицах тактовых сигналов 90 кГц, например. Значения этих элементов синтаксиса могут не быть равны 0 и могут быть меньше чем или равны
которое является эквивалентным по времени размеру CPB в единицах тактовых сигналов 90 кГц.
[0171] Элементы синтаксиса initial_cpb_removal_delay_offset [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx] задают по умолчанию и альтернативные начальные смещения удаления из CPB, соответственно, для SchedSelIdx-th CPB. Эти элементы синтаксиса имеют длину в битах, заданную посредством initial_cpb_removal_delay_length_minus1+1, и задаются в единицах тактовых сигналов 90 кГц. Эти элементы синтаксиса могут не использоваться декодерами и могут быть необходимы только для планировщика доставки (HSS), определенного в Приложении C в HEVC WD8.
[0172] По всей закодированной видео последовательности сумма initial_cpb_removal_delay [SchedSelIdx] и initial_cpb_removal_delay_offset [SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx, и сумма initial_alt_cpb_removal_delay [SchedSelIdx] и initial_alt_cpb_removal_delay_offset [SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0173] Сообщение SEI тактирования картинок предоставляет информацию задержки удаления из CPB, и задержку вывода из DPB единицы доступа, ассоциированной с сообщением SEI. Один пример синтаксиса и семантики сообщения SEI тактирования картинок приведен ниже в Таблице 2.
[0174] Следующее применяется для синтаксиса и семантики сообщения SEI тактирования картинок. Элементы синтаксиса sub_pic_cpb_params_present_flag, sub_pic_cpb_params_in_pic_timing_sei_flag, cpb_removal_delay_length_minus1, dpb_output_delay_length_minus1, и du_cpb_removal_delay_length_minus1, и переменная CpbDpbDelaysPresentFlag находятся или выводят из элементов синтаксиса, найденных в синтаксической структуре hrd_parameters () и синтаксической структуре sub_layer_hrd_parameters (), применимой к любой из точек операции, к которым сообщение SEI тактирования картинок применяется.
[0175] Поток битов (или часть его) относится к поднабору потока битов (или части его), ассоциированному с любой из точек операции, к которым применяется сообщение SEI тактирования картинок. Следует отметить, однако, что синтаксис сообщения SEI тактирования картинок может зависеть от содержимого синтаксической структуры hrd_parameters (), применимой к точкам операции, к которым применяется сообщение SEI тактирования картинок. Эти синтаксические структуры hrd_parameters () могут быть в наборе параметров видео и/или наборе параметров последовательности, которые являются активными для закодированной картинки, ассоциированной с сообщением SEI тактирования картинок. Когда сообщение SEI тактирования картинок ассоциировано с единицей доступа CRA, которая является первой единицей доступа в потоке битов, единицей доступа IDR, или единицей доступа BLA, если только ей не предшествует сообщение SEI периода буферизации в пределах той же самой единицы доступа, активация набора параметров видео и набора параметров последовательности (и, для картинок IDR или BLA, которые не являются первой картинкой в потоке битов, определение, что эта закодированная картинка является картинкой IDR или картинкой BLA) не происходит до декодирования первой закодированной единицы NAL вырезки закодированной картинки. Так как закодированная единица NAL вырезки закодированной картинки следует за сообщением SEI тактирования картинок в порядке единиц NAL, могут быть случаи, в которых необходимо для декодера, чтобы сохранить необработанные полезные данные последовательности байтов (RBSP), содержащие сообщение SEI тактирования картинок до тех пор пока не будет определен активный набор параметров видео и/или активный набор параметров последовательности, и затем выполнить синтаксический разбор сообщения SEI тактирования картинок.
[0176] Присутствие сообщения SEI тактирования картинок в потоке битов задатся следующим образом. Если CpbDpbDelaysPresentFlag равен 1, одно сообщение SEI тактирования картинок, применимое к заданным точкам операции, может присутствовать в каждой единице доступа закодированной видео последовательности. Иначе, например, если CpbDpbDelaysPresentFlag равен 0, никакое сообщение SEI тактирования картинок, применимое к указанным точкам операции, не может присутствовать в любой единице доступа закодированной видео последовательности.
[0177] Когда единица NAL SEI, которая содержит сообщение SEI тактирования картинок и имеет nuh_reserved_zero_6bits равный 0, присутствует, единица NAL SEI может предшествовать, в порядке декодирования, первой единице NAL VCL в единице доступа.
[0178] Элемент синтаксиса au_cpb_removal_delay_minus1 плюс 1 задает, сколько тактов системных тактовых сигналов ожидать после удаления из единицы доступа, ассоциированной с самым недавним сообщением SEI периода буферизации в предыдущей единице доступа из CPB, такого как CPB 94, до удаления из CPB 94 единицы доступа, ассоциированной с сообщением SEI тактирования картинок. Это значение может также быть использовано для вычисления самого раннего времени прибытия данных единицы доступа в CPB для HSS. Элемент синтаксиса является кодом фиксированной длины, длина которого в битах задана посредством cpb_removal_delay_length_minus1+1.
[0179] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента синтаксиса au_cpb_removal_delay_minus1, является значением cpb_removal_delay_length_minus1, закодированным в наборе параметров видео или наборе параметров последовательности, который является активным для закодированной картинки, ассоциированной с сообщением SEI тактирования картинок, хотя au_cpb_removal_delay_minus1 плюс 1 задает количество тактов системных тактовых сигналов относительно времени удаления предыдущей единицы доступа, содержащей сообщение SEI периода буферизации, которая может быть единицей доступа другой закодированной видео последовательности.
[0180] Элемент синтаксиса pic_dpb_output_delay используется для вычисления времени вывода из DPB картинки. pic_dpb_output_delay задает, сколько тактов системных тактовых сигналов ожидать после удаления последней единицы декодирования в единице доступа из CPB прежде, чем декодированная картинка будет выведена из DPB. Картинка может не быть удалена из DPB в ее время вывода, когда картинка все еще отмечена как "используется для краткосрочной ссылки" или "используется для долгосрочной ссылки." В некоторых примерах только одно pic_dpb_output_delay задано для декодированной картинки.
[0181] Длина элемента синтаксиса pic_dpb_output_delay задана в битах dpb_output_delay_length_minus1+1. Когда sps_max_dec_pic_buffering [minTid] равен 1, где minTid - минимум значений OpTid всех точек операции, к которым применяется сообщение SEI тактирования картинок, pic_dpb_output_delay должен быть равным 0. Время вывода, выведенное из pic_dpb_output_delay любой картинки, которая выведена из тактирования вывода, соответствующего декодеру, может предшествовать времени вывода, выведенному из pic_dpb_output_delay всех картинок в любой последующей закодированной видео последовательности в порядке декодирования. Порядок вывода картинок, установленный значениями этого элемента синтаксиса, должен быть тем же самым порядком, который установлен значениями PicOrderCntVal (то есть, значениями POC, которые указывают порядок вывода или отображения картинок).
[0182] Для картинок, которые не выведены процессом "выталкивания", потому что они предшествуют, в порядке декодирования, картинке мгновенного обновления декодирования (IDR) или картинке с доступом с разорванной ссылкой (BLA) с no_output_of_prior_pics_flag равным 1 или логически выведенным, чтобы быть равным 1, времена вывода, выведенные из pic_dpb_output_delay, могут увеличиваться с увеличением значением PicOrderCntVal относительно всех картинок в пределах одной и той же закодированной видео последовательности.
[0183] Элемент синтаксиса num_decoding_units_minus1 плюс 1 задает количество единиц декодирования в единице доступа, ассоциированной с сообщением SEI тактирования картинок. Значение num_decoding_units_minus1 может быть в диапазоне 0 до PicSizeInCtbsY - 1, включительно. Флаг du_common_cpb_removal_delay_flag, равный 1, задает, что элемент синтаксиса du_common_cpb_removal_delay_minus1 присутствует. Когда du_common_cpb_removal_delay_flag, равен 0, он задает, что элемент синтаксиса du_common_cpb_removal_delay_minus1 не присутствует.
[0184] Элемент синтаксиса du_common_cpb_removal_delay_minus1 плюс 1 задает длительность, в единицах тактов системных тактовых сигналов суб-картинок (см. подпункт E.2.1 HEVC WD8), между удалением из CPB, такого как CPB 94, любых двух последовательных единиц декодирования в порядке декодирования в единице доступа, ассоциированной с сообщением SEI тактирования картинок. Это значение также используется для вычисления самого раннего времени прибытия данных единицы декодирования в CPB для HSS, как определено в HEVC WD8, Приложение C. Элемент синтаксиса является кодом фиксированной длины, длина которого в битах задана посредством du_cpb_removal_delay_length_minus1+1.
[0185] Элемент синтаксиса num_nalus_in_du_minus1 [i] плюс 1 задает количество единиц NAL в iй DU в AU, ассоциированной с сообщением SEI тактирования картинок. Значение num_nalus_in_du_minus1 [i] должно быть в диапазоне 0 до PicSizeInCtbsY - 1, включительно. Например, видео декодер 30 может определить, сколько единиц NAL находится в текущей DU на основании декодирования элемента синтаксиса num_nalus_in_du_minus1 [i] плюс 1 из сообщения SEI тактирования картинок.
[0186] Первая DU в AU может включать в себя первые num_nalus_in_du_minus1 [0]+1 последовательных единиц NAL в порядке декодирования в AU. Iая (с i больше чем 0) DU в AU состоит из num_nalus_in_du_minus1 [i]+1 последовательных единиц NAL непосредственно после последней единицы NAL в предыдущей DU в AU, в порядке декодирования. В каждой DU может быть по меньшей мере одна единица NAL VCL. Все единицы NAL не-VCL, ассоциированные с единицей NAL VCL, должны быть включены в ту же самую DU, что и единица NAL VCL. Видео декодер 30 определяет единицы NAL в DU на основании декодирования элементов синтаксиса, таких как num_nalus_in_du_minus1 [i].
[0187] Элемент синтаксиса du_cpb_removal_delay_minus1 [i] плюс 1 задает длительность, в единицах тактов системных тактовых сигналов суб-картинок, между удалением из CPB, такого как CPB 94, (i+1)й DU и iй DU в порядке декодирования в AU, ассоциированной с сообщением SEI тактирования картинок. Это значение может также быть использовано для вычисления самого раннего времени прибытия данных DU в CPB для HSS, как определено в HEVC WD8, Приложение C. Элемент синтаксиса является кодом фиксированной длины, длина которого в битах задана посредством du_cpb_removal_delay_length_minus1+1.
[0188] В некоторых примерах, хотя длина элемента синтаксиса является такой же как du_common_cpb_removal_delay_minus1, это значение может быть задано относительно времени удаления из CPB AU начала периода буферизации. Например, видео декодер 30 может определить значение элемента синтаксиса относительно декодированного времени удаления из CPB. В некоторых примерах может быть возможно, что это может быть несовместимо с семантикой du_common_cpb_removal_delay_minus1. Например, это может потенциально находиться в противоречии с Уравнением 7 (Уравнение C-10 в HEVC WD8, Приложение C), которое определяет, что если sub_pic_cpb_params_in_pic_timing_sei_flag помечен флагом, то .
[0189] В некоторых примерах du_cpb_removal_delay_minus1 [i] плюс 1 альтернативно задает длительность, в единицах тактов системных тактовых сигналов суб-картинок, между удалением из CPB AU, ассоциированной с сообщением SEI тактирования картинок, и iй DU в AU, ассоциированной с сообщением SEI тактирования картинок. В этом случае сигнализации значения для последней DU в AU можно избежать. Таким образом, видео декодер 30 не должен определить значение последней DU в AU из сообщения SEI тактирования картинок, потому что время удаления для последней DU является таким же как время удаления для соответствующей AU.
[0190] Альтернативно, в семантике au_cpb_removal_delay_minus1, du_common_cpb_removal_delay_minus1 и du_cpb_removal_delay_minus1 [i] задают задержку/разность/длительность между "номинальными временами удаления из CPB" вместо "времен удаления из CPB."
[0191] Таблица 3 ниже обеспечивает примерный синтаксис сообщения SEI тактирования суб-картинок. Сообщение SEI тактирования суб-картинок предоставляет информацию задержки удаления из CPB для единицы декодирования, ассоциированной с сообщением SEI. Примерные синтаксис и семантика сообщения SEI тактирования суб-картинок являются следующими.
[0192] Следующее применяет синтаксис и семантику сообщения SEI тактирования суб-картинок. Элементы синтаксиса sub_pic_cpb_params_present_flag, sub_pic_cpb_params_in_pic_timing_sei_flag, и cpb_removal_delay_length_minus1 и переменная CpbDpbDelaysPresentFlag находят в или выводят из элементов синтаксиса, найденных в синтаксической структуре hrd_parameters () и синтаксической структуре sub_layer_hrd_parameters (), применимой к любой точке операции, к которой применяется сообщение SEI тактирования суб-картинок. Поток битов (или часть его) относится к поднабору потока битов (или части его), ассоциированному с любой из точек операции, к которым применяется сообщение SEI тактирования суб-картинок.
[0193] Присутствие сообщения SEI тактирования суб-картинок в потоке битов задается следующим образом. Если CpbDpbDelaysPresentFlag равен 1, sub_pic_cpb_params_present_flag равен 1, и sub_pic_cpb_params_in_pic_timing_sei_flag равен 0, одно сообщение SEI тактирования суб-картинок, применимое к заданным точкам операции, может присутствовать в каждой единице декодирования в закодированной видео последовательности. Иначе, никаких сообщений SEI тактирования суб-картинок, применимых к заданным точкам операции, не должно присутствовать в закодированной видео последовательности. Таким образом, если видео декодер 30 декодирует флаги и определяет, что значения являются теми, как установлено выше, видео декодер 30 определяет, что нет никаких сообщений SEI тактирования суб-картинок, применимых к указанным точкам операции.
[0194] Единица декодирования, ассоциированная с сообщением (SEI) тактирования суб-картинок, состоит, в порядке декодирования, из единицы NAL SEI, содержащейся в сообщениях SEI тактирования суб-картинок, с последующими одной или более единицами NAL, которые не содержат сообщение SEI тактирования суб-картинок, включая все последующие единицы NAL в AU вплоть до, но не включая любую последующую единицу NAL SEI, содержащую сообщение SEI тактирования суб-картинок. В каждой DU может быть по меньшей мере одна единица NAL VCL. Все единицы NAL не-VCL, ассоциированные с одной единицей NAL VCL, могут быть включены в ту же самую DU как единица NAL VCL.
[0195] В некоторых примерах элемент синтаксиса du_spt_cpb_removal_delay задает длительность, в единицах тактов системных тактовых сигналов суб-картинок (см. подпункт E.2.1 HEVC WD8), между удалением из CPB последней единицы декодирования в порядке декодирования в текущей единице доступа, содержащей сообщение SEI тактирования суб-картинок, и единицы декодирования, ассоциированной с сообщением (SEI) тактирования суб-картинок. Это значение может также быть использовано для вычисления самого раннего времени прибытия данных единицы декодирования в CPB для HSS, как определено в HEVC WD8, Приложение C. Элемент синтаксиса представлен кодом фиксированной длины, длина которого в битах задана посредством du_cpb_removal_delay_length_minus1+1. Когда DU, ассоциированная с сообщением (SEI) тактирования суб-картинок, является последней DU в текущей AU, значение du_spt_cpb_removal_delay должно быть равным 0.
[0196] Альтернативно, в других примерах элемент синтаксиса du_spt_cpb_removal_delay задает длительность, в единицах тактов системных тактовых сигналов суб-картинок (см. подпункт E.2.1 HEVC WD8), между удалением из CPB 94 следующей DU в порядке декодирования в текущей AU, содержащей сообщение SEI тактирования суб-картинок, и DU, ассоциированной с сообщением (SEI) тактирования суб-картинок. Это значение может также быть использовано для вычисления самого раннего времени прибытия данных единицы декодирования в CPB 94 для HSS, как определено в HEVC WD8, Приложение C. Элемент синтаксиса представлен кодом фиксированной длины, длина которого в битах задана посредством du_cpb_removal_delay_length_minus1+1. Когда единица декодирования, ассоциированная с сообщением (SEI) тактирования суб-картинок, является последней единицей декодирования в текущей единице доступа, значение du_spt_cpb_removal_delay должно быть равным 0. Альтернативно, никакое сообщение SEI тактирования суб-картинок не ассоциировано с последней единицей декодирования в каждой единице доступа.
[0197] В некоторых примерах элемент синтаксиса du_spt_cpb_removal_delay альтернативно закодирован как du_spt_cpb_removal_delay_minus1. Элемент синтаксиса du_spt_cpb_removal_delay_minus1 plus1 задает, сколько тактов системных тактовых сигналов суб-картинок нужно ожидать после того, как видео декодер 30 удаляет последнюю DU в AU, ассоциированной с самым недавним сообщением SEI периода буферизации предшествующей AU, из CPB 94 прежде, чем удалить DU, ассоциированную с сообщением (SEI) тактирования суб-картинок из CPB 94. Это значение может также быть использовано для вычисления самого раннего времени прибытия данных единицы декодирования в CPB для HSS, как определено в HEVC WD8, Приложение C. Элемент синтаксиса представлен кодом фиксированной длины, длина которого в битах задана посредством cpb_removal_delay_length_minus1+1.
[0198] Таблица 4, представленная ниже, описывает один пример синтаксиса и семантики параметров HRD. Для элементов синтаксиса, для которых семантика не включены ниже, их семантика является такой же как в предварительной заявке на патент США № 61/705,102, поданной 24 сентября 2012. Синтаксис и семантика параметров HRD могут быть следующими.
[0199] Элемент синтаксиса sub_pic_cpb_params_in_pic_timing_sei_flag равный 1 задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют в сообщениях SEI тактирования картинок и сообщение SEI тактирования суб-картинок не присутствует. sub_pic_cpb_params_in_pic_timing_sei_flag, равный 0, задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют в сообщениях SEI тактирования суб-картинок и сообщения SEI тактирования картинок не включают в себя параметры задержки удаления из CPB на уровне суб-картинок.
[0200] Элемент синтаксиса sub_pic_cpb_params_present_flag, равный 1, задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок. sub_pic_cpb_params_present_flag, равный 0, задает, что параметры задержки удаления из CPB на уровне суб-картинок не присутствуют и CPB работает на уровне единицы доступа. Когда sub_pic_cpb_params_present_flag не присутствует, его значение может быть логически выведено, чтобы быть равным 0.
[0201] Фиг. 4 является концептуальной диаграммой, иллюстрирующей две единицы 100 и 102 доступа в последовательном порядке декодирования, которые могут иметь времена декодирования согласно способам, описанным в настоящем раскрытии. Времена удаления из буфера кодированных картинок примера будут описаны в терминах единиц AU 100 и 102, так же как элементов синтаксиса и переменных для сообщений SEI, ассоциированных с единицами AU 100 и 102. Фиг. 4 также иллюстрирует временную линию 130.
[0202] Как описано в настоящем описании, AU 100 является единицей доступа n, и AU 102 является единицей доступа n+1, где n является более ранним во времени в порядке декодирования, чем n+1. AU 100 включает в себя четыре единицы декодирования 110-1, 110-2, 110-3, и 110-4 (упомянутые все вместе как “единицы декодирования 110”). Как описано в настоящем описании, DU 110-1 может упоминаться как DU-M, DU 110-2 как DU-M+1, DU 110-3 как DU-M+2, и DU 110-4 как DU-M+3, например. AU 102 включает в себя четыре единицы декодирования 112-1, 112-2, 112-3, и 112-4 (упомянутые все вместе как “единицы декодирования 112”).
[0203] Аналогично, как описано в настоящем описании, DU 112-1 может упоминаться как DU-M, DU 112-2 как DU-M+1, DU 112-3 как DU-M+2, и DU 112-4 как DU-M+3, например. Однако, любая единица доступа может быть “единицей доступа n”, и любая единица декодирования может быть “единицей декодирования m”. В других примерах единицы AU 100 и 102 могут иметь различные количества единиц DU 110 и 112, соответственно. Любая DU 110 или 112 может быть единицей уровня абстракции сети (NAL) не уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0204] В этом примере единицы доступа 100 и 102 сохранены в буфере кодированных картинок, например, CPB 94 из Фиг. 3. Видео декодер 30 извлекает единицы декодирования 110 и 112 и единицы доступа 100 и 102 из CPB 94 для декодирования в определенные времена. Времена для того, чтобы извлечь AU или DU из CPB 94 упоминаются как времена удаления из CPB. Как показано на фиг. 4, времена удаления из CPB для единиц DU 110 в AU 100 являются временами удаления из CPB 140-1, 140-2, 140-3, и 140-4 (упомянутыми все вместе как “времена удаления из CPB 140”). Аналогично, времена удаления из CPB для единицы DU 112 в AU 102 являются временами удаления из CPB 142-1, 142-2, 142-3, и 142-4 (упомянутыми все вместе как “времена удаления из CPB 142”). Время удаления из CPB AU может быть тем же самым как время удаления из CPB последней DU в AU. Например, время удаления из CPB AU 100 является приблизительно тем же самым как время удаления из CPB DU 110-4, время удаления из CPB 140-4.
[0205] В одном примере для каждой DU 112 в AU 102, сигнализируется длительность между временами удаления из CPB следующей DU 112 в порядке декодирования в AU 102 и конкретной DU 112. Например, DU 112-2 является текущей DU, в порядке декодирования, которая должна быть извлечена из CPB 94 и декодирована видео декодером 30. Длительность времени 132 между временем удаления из CPB 142-2 для DU 112-2 и временем удаления из CPB 142-3 для DU 112-3, следующей DU в порядке декодирования, сигнализируется, например, в сообщении SEI, ассоциированном с единицей доступа 102. Видео декодер 30 определяет время удаления из CPB 142-2 для DU 112-2 на основании сигнализированной длительности времени 132. Таким образом, видео декодер 30 может вывести время удаления из CPB для каждой DU 112 в единице доступа 102 на основании времен удаления для DU 112 в пределах AU 102, а не на основании любых времен удаления для других единиц DU в пределах другой единицы AU, такой как предыдущая AU 100, в порядке декодирования. Таким образом, видео декодер 30 может улучшить передачу сигналов и устойчивость к ошибкам для времен удаления из CPB единицы DU и единицы AU.
[0206] Время удаления из CPB для DU 112-2 из AU 102 может быть сигнализировано альтернативным способом. Например, в сообщении SEI, ассоциированном с AU 102, длительность времени 134 между временем удаления из CPB 142-2 для DU 112-2 и временем удаления из CPB 142-4 для последней DU в AU 102, DU 112-4, сигнализируется. Видео декодер 30 определяет время удаления из CPB 142-2 для DU 112-2 на основании сигнализированного времени удаления из CPB 142-4 из DU 112-4.
[0207] В любом из вышеупомянутых примеров видео декодер 30 определяет времена удаления из CPB для единицы DU из других единиц DU в пределах одной и той же AU. В этом способе времена удаления из CPB для любой DU не зависят ни от какой другой AU помимо AU конкретной DU. Потеря информации тактирования удаления из CPB в предыдущей AU не будет вызывать неправильное выведение времен удаления из CPB текущей AU. Например, потеря времен удаления из CPB 140 для AU 100 может не влиять на определение времен удаления из CPB 142 для AU 102. Поэтому, видео декодер 30 может улучшить передачу сигналов и устойчивость к ошибкам для того, чтобы определить времена удаления из CPB единицы DU и единицы AU.
[0208] Видео декодер 30 может также определить времена удаления из CPB на основании, по меньшей мере частично, параметров CPB уровня суб-картинок, которые переносятся в сообщениях SEI тактирования суб-картинок. В таком примере сигнализация времен удаления из CPB и выведение времен удаления из CPB являются эффективными и устойчивыми к ошибкам. Флаг уровня последовательности может быть сигнализирован, чтобы управлять присутствием параметров уровня суб-картинок CPB или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок, но никогда в обоих. Флаг уровня последовательности может быть sub_pic_cpb_params_present_flag, описанным выше. Этот флаг может также управлять использованием параметров CPB уровня суб-картинок, из какого типа сообщения SEI для операции CPB уровня суб-картинок. Когда sub_pic_cpb_params_present_flag равен 1, времена прибытия в CPB и времена удаления из CPB и для уровня AU и для уровня суб-картинок сигнализируются независимо от значения SubPicCpbFlag.
[0209] В некоторых примерах, если AU, такое как AU 100, имеет TemporalId, большим чем 0, никакое сообщение SEI периода буферизации или сообщение SEI точки восстановления не может быть ассоциировано с AU 100.
[0210] Фиг. 5 является последовательностью операций, которая иллюстрирует способ для определения времени удаления из буфера кодированных картинок (CPB) первой единицы декодирования в единице доступа на основании времени удаления из CPB для второй единицы декодирования единицы доступа согласно способам, описанным в настоящем раскрытии. Видео декодер может выполнить способ согласно Фиг. 5. Видео декодер может быть видео декодером 30 из Фиг. 1 или Фиг. 3, например.
[0211] Способ согласно Фиг. 5 включает в себя декодирование длительности между удалением из CPB первой DU в AU и удалением из CPB второй DU, в котором вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU, как и первая DU (200). Вторая DU может быть непосредственно следующей за первой DU в AU в порядке декодирования. Альтернативно, вторая DU может быть последней DU в AU в порядке декодирования. Например, видео декодер 30 может принять поток битов от видео кодера 20 и буферизовать единицы AU и их соответствующие единицы DU в CPB 94 для извлечения в определенные времена удаления. Например, видео декодер 30 может декодировать длительность между удалением из CPB первой DU в AU из CPB 94 и удалением из CPB второй DU из CPB 94, в котором вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU.
[0212] Способ также включает в себя определение времени удаления первой DU на основании, по меньшей мере частично, закодированной длительности (202). Например, видео декодер 30 может определить время удаления из CPB для первой DU на основании декодированной длительности между удалением из CPB первой DU в AU и удалением из CPB второй DU. Видео декодер 30 может извлечь DU из CPB 94 приблизительно в определенное время удаления из CPB.
[0213] В некоторых примерах способ согласно Фиг. 5 также включает в себя декодирование параметров CPB уровня суб-картинок, в котором определение времени удаления первой DU содержит определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и параметров CPB уровня суб-картинок. Декодирование параметров CPB уровня суб-картинок может включать в себя декодирование сообщения дополнительной информации расширения (SEI) тактирования суб-картинок, которое ассоциировано с первой DU.
[0214] В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, кодировка сообщения SEI суб-картинок включает в себя декодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок. В некоторых примерах флаг уровня последовательности декодируется, чтобы определить присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок. Например, в ответ на декодирование флага уровня последовательности и определение, что параметры CPB уровня суб-картинок присутствует в сообщении SEI тактирования картинок, видео декодер 30 может декодировать сообщение SEI тактирования картинок, чтобы синтаксически разобрать параметры CPB уровня суб-картинок. Аналогично, в ответ на декодирование флага уровня последовательности и определение, что параметры CPB уровня суб-картинок присутствует в сообщении SEI тактирования суб-картинок, видео декодер 30 может декодировать сообщения SEI тактирования суб-картинок, чтобы синтаксически разобрать параметры CPB уровня суб-картинок.
[0215] В некоторых примерах определение времени удаления первой DU включает в себя определение времени удаления первой DU без декодирования начальной задержки удаления из CPB и смещения. Когда AU имеет TemporalId меньше чем или равное 0, способ может также включать в себя декодирование по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU.
[0216] Единицы декодирования, описанные в настоящем описании, могут быть любой единицей декодирования, так же как единицей уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63. Таким образом, видео декодер 30 может декодировать DU согласно способам, описанным в настоящем раскрытии, включая единицы NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0217] В другом примере способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU. Например, видео декодер 30 выводит или время прибытия в CPB или номинальное время удаления из CPB для AU и на уровнях единицы доступа и на уровнях суб-картинок, независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0218] В некоторых примерах способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU. Способ может включать в себя выведение времена удаления из CPB для уровня AU, когда элемент синтаксиса указывает, что первая DU является единицей AU. Выведение времен удаления из CPB для уровня AU может включать в себя выведение времен удаления из CPB только для уровня AU, когда элемент синтаксиса указывает, что DU является AU.
[0219] Элементом синтаксиса может быть SubPicCpbFlag, в котором, когда SubPicCpbFlag равен 0, DU является единицей AU, иначе, DU включает в себя одну или более единиц уровня абстракции сети (NAL) уровня кодирования видео (VCL) в AU и ассоциированных единиц NAL не-VCL. В некоторых примерах элемент синтаксиса включает в себя первый элемент синтаксиса, и в котором выведение времени прибытия в CPB и номинального времени удаления из CPB содержит выведение времени прибытия в CPB и номинального времени удаления из CPB, когда второй элемент синтаксиса задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок.
[0220] Вторым элементом синтаксиса может быть sub_pic_cpb_params_present_flag, в котором, когда sub_pic_cpb_params_present_flag равен 1, параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок, и когда sub_pic_cpb_params_present_flag равен 0, параметры задержки удаления из CPB на уровне суб-картинок не присутствуют, и CPB работает на уровне единицы доступа. Второй элемент синтаксиса задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне AU или уровне суб-картинок, и способ может также включать в себя определение, что переменная subPicParamsPresentFlag равна 0, выведение начального времени прибытия AU и оконечного времени прибытия AU, определение, что переменная subPicParamsPresentFlag равна 1, и выведение начального времени прибытия DU и оконечного времени прибытия DU для единиц декодирования в пределах единицы доступа.
[0221] Времена удаления из CPB для уровня суб-картинок могут также быть выведены, когда элемент синтаксиса указывает, что DU не является AU. Выведение времен удаления из CPB для уровня суб-картинок может включать в себя выведение времен удаления из CPB только для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является единицей AU. Например, видео декодер 30 может вывести времена удаления из CPB для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является единицей AU.
[0222] Фиг. 6 является последовательностью операций, которая иллюстрирует другой способ для определения времени удаления из буфера кодированных картинок (CPB) первой единицы декодирования в единице доступа на основании времени удаления из CPB для второй единицы декодирования единицы доступа согласно способам, описанным в настоящем раскрытии. Видео кодер может выполнить способ согласно Фиг. 6. Видео кодер может быть видео кодером 20 из Фиг. 1 или Фиг. 2, например.
[0223] Способ включает в себя определение, для AU, включающей в себя первую единицу декодирования DU, времени удаления из CPB второй DU, в котором вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как и первая DU (210). Вторая DU может быть непосредственно следующей за первой DU в AU в порядке декодирования. Альтернативно, вторая DU может быть последней DU в AU в порядке декодирования. В некоторых примерах видео кодер 20 планирует время удаления из CPB для AU. В некоторых примерах времена удаления из CPB планируются устройством, внешним к видео кодеру 20, и планирование предоставляется видео кодеру 20.
[0224] Время удаления из CPB для AU может быть тем же самым как время удаления из CPB для последней DU в AU. Таким образом, видео кодер 20 может определить время удаления из CPB второй DU на основании запланированного времени удаления из CPB упомянутой AU. В некоторых примерах определение времени удаления из CPB второй DU на основании запланированного времени удаления из CPB AU включает в себя определение, сколько единиц DU включено в AU, и определение запланированного времени для каждого CPB. Например, видео кодер 20 может определить, для AU, включающей в себя первую единицу декодирования DU, время удаления из CPB второй DU, в котором вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU, согласно способам, описанным в настоящем описании.
[0225] Способ также включает в себя определение длительности между временем удаления из CPB первой DU и определенным временем удаления из CPB второй DU (212). Например, видео кодер 20 может определить длительность между временем удаления из CPB для первой DU на основании запланированного времени удаления из CPB AU и количеством единиц DU в AU. В некоторых примерах видео кодер 20 определяет длительность на основании запланированных времен удаления из CPB для каждой DU в AU.
[0226] Способ также включает в себя кодирование определенной длительности (214). Видео кодер 20 может закодировать определенную длительность как элемент синтаксиса, например, в наборе параметров CPB на уровне суб-картинок. Например, способ может также включать в себя кодирование параметров CPB на уровне суб-картинок, в котором кодирование определенной длительности включают в себя кодирование определенной длительности как одного или более параметров CPB уровня суб-картинок. Кодирование параметров CPB уровня суб-картинок может включать в себя кодирование сообщения дополнительной информации расширения (SEI) тактирования суб-картинок, которое ассоциировано с первой DU. В одном примере кодирование определенной длительности как одного или более параметров CPB уровня суб-картинок далее содержит кодирование определенной длительности в сообщении SEI тактирования суб-картинок.
[0227] В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, кодирование сообщения SEI суб-картинок включает в себя кодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок. В некоторых примерах флаг уровня последовательности закодирован, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок. В некоторых примерах определение времени удаления первой DU включает в себя определение времени удаления первой DU без кодирования начальной задержки удаления из CPB и смещения.
[0228] Когда AU имеет TemporalId меньшее чем или равное 0, способ может также включать в себя кодирование по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU.
[0229] Единицы DU, описанные в настоящем описании, могут быть любым типом DU, так же как единицей уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63. Видео кодер 20 может закодировать любую DU согласно способам, описанным в настоящем раскрытии, включая единицы DU, которые являются единицами NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0230] В другом примере способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0231] В некоторых примерах способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU. Способ может включать в себя выведение времен удаления из CPB для уровня AU, когда элемент синтаксиса указывает, что первая DU является AU. Выведение времен удаления из CPB для уровня AU может включать в себя выведение времен удаления из CPB только для уровня AU, когда элемент синтаксиса указывает, что DU является AU.
[0232] Элементом синтаксиса может быть SubPicCpbFlag, в котором, когда SubPicCpbFlag равен 0, DU является AU, иначе, DU включает в себя одну или более единиц уровня абстракции сети (NAL) уровня кодирования видео (VCL) в AU и ассоциированных единиц NAL не-VCL. В некоторых примерах элемент синтаксиса включает в себя первый элемент синтаксиса, и при этом выведение времени прибытия в CPB и номинального времени удаления из CPB содержит выведение времени прибытия в CPB и номинального времени удаления из CPB, когда второй элемент синтаксиса задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок.
[0233] Второй элемент синтаксиса может быть sub_pic_cpb_params_present_flag, в котором, когда sub_pic_cpb_params_present_flag равен 1, параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне единицы доступа или уровне суб-картинок, и когда sub_pic_cpb_params_present_flag равен 0, параметры задержки удаления из CPB на уровне суб-картинок не присутствуют, и CPB работает на уровне единицы доступа. Второй элемент синтаксиса задает, что параметры задержки удаления из CPB на уровне суб-картинок присутствуют, и CPB может работать на уровне AU или уровне суб-картинок, и способ может также включать в себя установку переменной subPicParamsPresentFlag равной 0, выведение начального времени прибытия AU и оконечного времени прибытия AU, установку переменной subPicParamsPresentFlag равной 1, и выведение начального времени прибытия DU и оконечного времени прибытия DU для единиц декодирования в пределах единицы доступа.
[0234] Времена удаления из CPB для уровня суб-картинок могут также быть выведены, когда элемент синтаксиса указывает, что DU не является AU. Выведение времен удаления из CPB для уровня суб-картинок может включать в себя выведение времен удаления из CPB только для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является AU. Например, видео кодер 20 может вывести времена удаления из CPB для уровня суб-картинок, когда элемент синтаксиса указывает, что DU не является AU.
[0235] Фиг. 7 является последовательностью операций, иллюстрирующей способ для выведения времени удаления из CPB первой DU на основании, по меньшей мере частично, сообщения SEI тактирования суб-картинок согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством декодирования. Устройство декодирования видео может быть видео декодером 30 из Фиг. 1 и 3, например.
[0236] Способ включает в себя декодирование сообщения SEI тактирования суб-картинок, ассоциированного с первой единицей декодирования единицы доступа (300). Например, видео декодер 30 может декодировать поток битов, включающий в себя закодированные данные и соответствующие элементы синтаксиса, и сообщение SEI тактирования суб-картинок, ассоциированное с первой DU в AU, согласно способам, описанным в настоящем описании. Видео декодер 30 может буферизовать единицы AU и их соответствующие единицы DU в CPB 94 для извлечения в определенные времена удаления. Например, видео декодер 30 может декодировать сообщения SEI тактирования суб-картинок, ассоциированные с первой DU в AU.
[0237] В некоторых примерах способ включает в себя декодирование флага уровня последовательности, чтобы определить присутствие параметров CPB уровня суб-картинок или в сообщении SEI тактирования суб-картинок или в сообщении SEI тактирования картинок, ассоциированном с первой DU. Способ может также включать в себя декодирование параметров CPB уровня суб-картинок, в котором определение времени удаления из CPB первой DU также основано на, по меньшей мере частично, параметрах CPB уровня суб-картинок. В ответ на прием закодированного потока битов видео декодер 30 может декодировать флаг уровня последовательности и определить из значения флага уровня последовательности, найдены ли параметры CPB уровня суб-картинок в сообщении SEI тактирования суб-картинок или сообщении SEI тактирования картинок. На основании значения флага уровня последовательности видео декодер 30 может декодировать сообщение SEI тактирования суб-картинок или сообщение SEI тактирования картинок, чтобы декодировать параметры CPB уровня суб-картинок.
[0238] В примерах, в которых флаг уровня последовательности указывает, что параметры CPB уровня суб-картинок должны присутствовать в сообщении SEI тактирования суб-картинок, декодирование параметров CPB уровня суб-картинок может включать в себя декодирование сообщения SEI тактирования суб-картинок, ассоциированного с первой DU. В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, декодирование сообщения SEI суб-картинок может далее содержать декодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок.
[0239] Способ также включает в себя декодирование длительности между удалением из буфера кодированных картинок (CPB) второй DU в AU в порядке декодирования и удалением из CPB первой DU в сообщении SEI суб-картинок, в котором длительность находится в сообщении (302) SEI тактирования суб-картинок. Например, из принятого потока битов видео декодер 30 может декодировать длительность между удалением из буфера кодированных картинок (CPB) второй DU в AU в порядке декодирования и удалением из CPB первой DU в сообщении SEI суб-картинок.
[0240] Способ также включает в себя выведение времени удаления из CPB первой DU на основании, по меньшей мере частично, сообщения (304) SEI тактирования суб-картинок. Видео декодер 30 может извлечь первую DU для декодирования из CPB 94 в определенное время удаления из CPB.
[0241] В некоторых примерах вторая DU является последней DU в AU в порядке декодирования. Вторая DU может быть непосредственно следующей за первой DU в AU в порядке декодирования. В некоторых примерах определение времени удаления первой DU содержит определение времени удаления первой DU без кодирования начальной задержки удаления из CPB и смещения.
[0242] DU может быть любым типом единицы декодирования, включая единицу уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0243] Способы, описанные в здесь, могут обеспечить боле устойчивое к ошибкам определение времени удаления из буфера кодированных картинок. Кроме того, в дополнение к улучшенной устойчивости к ошибкам, способы могут способствовать эффективности сигнализации, которая уменьшает полосу частот, служебные расходы сигнализации, и увеличивает время кодирования. Кроме того, способы, описанные в настоящем раскрытии, могут обеспечить надлежащую временную масштабируемость.
[0244] Такие способы могут включать в себя, например, определение времени удаления из буфера кодированных картинок для DU в AU, которое является независимым от времен удаления любой другой единицы доступа. Например, времена удаления из CPB для DU в AU будут сигнализированы на основании или длительности между временем удаления из CPB следующей DU в порядке декодирования в AU или длительности между временем удаления из CPB последней DU в AU. Способы могут также включать в себя сигнализацию флага уровня последовательности, чтобы управлять присутствием параметров CPB уровня суб-картинок только в одном из сообщений SEI тактирования картинок или из сообщений SEI тактирования суб-картинок согласно способам, описанным в настоящем описании. Способы могут также включать в себя расширение определения единицы декодирования. Дополнительные способы обеспечивают ограничение сообщений SEI периода буферизации и сообщений SEI точки восстановления таким образом, что они не могут быть ассоциированы с единицами AU с переменной TemporalId, большей чем 0. Способы могут также включать в себя обеспечение флага, чтобы сигнализировать, выводить ли времена удаления из CPB на уровне AU или уровне суб-картинок.
[0245] Фиг. 8 является последовательностью операций, иллюстрирующей другой способ для выведения времени удаления из CPB первой DU, на основании, по меньшей мере частично, кодирования сообщения SEI тактирования суб-картинок согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен устройством кодирования видео. Устройство кодирования видео может быть видео кодером 20 из Фиг. 1 и 2, например.
[0246] Способ включает в себя определение длительности между временем удаления из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в единице доступа (AU) и временем удаления из CPB второй DU в AU (310). Длительность может быть определена, например, из вычитания запланированного времени удаления из CPB для первой DU из запланированного времени удаления из CPB для второй DU.
[0247] Способ также включает в себя кодирование длительности в сообщении дополнительной информации расширения (SEI) тактирования суб-картинок, ассоциированном с AU (312). Например, видео кодер 20 может закодировать длительность между удалением из буфера кодированных картинок (CPB) второй DU в AU в порядке декодирования и удалением из CPB первой DU в сообщении SEI суб-картинок в потоке битов. Например, видео кодер 20 может закодировать поток битов, включающем в себя закодированные данные и соответствующие элементы синтаксиса, сообщение SEI тактирования суб-картинок, ассоциированное с первой DU в AU, согласно способам, описанным в настоящем описании.
[0248] В некоторых примерах способ согласно фиг. 8 включает в себя кодирование флага уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщении SEI тактирования суб-картинок или в сообщении SEI тактирования картинок, ассоциированном с первой DU. Способ может также включать в себя кодирование параметров CPB уровня суб-картинок, в котором определение времени удаления из CPB первой DU является также основанным на, по меньшей мере частично, параметрах CPB уровня суб-картинок. Например, видео кодер 20 может закодировать флаг уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщении SEI тактирования суб-картинок или в сообщении SEI тактирования картинок, ассоциированном с первой DU в потоке битов. Видео кодер 20 может также закодировать параметры CPB уровня суб-картинок в потоке битов.
[0249] В примерах, в которых флаг уровня последовательности указывает, что параметры CPB уровня суб-картинок должны присутствовать в сообщении SEI тактирования суб-картинок, кодирование параметров CPB уровня суб-картинок может включать в себя кодирование сообщения SEI тактирования суб-картинок, ассоциированного с первой DU. В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, кодирование сообщения SEI суб-картинок может далее содержать кодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок.
[0250] В некоторых примерах вторая DU является последней DU в AU в порядке декодирования. Вторая DU может быть непосредственно следующей за первой DU в AU в порядке декодирования. В некоторых примерах определение времени удаления первой DU содержит определение времени удаления первой DU без кодирования начальной задержки удаления из CPB и смещения.
[0251] DU может быть любым типом единицы декодирования, включая единицу уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0252] Фиг. 9 является последовательностью операций, иллюстрирующей способ для декодирования флага уровня последовательности для параметра буфера кодированных картинок уровня суб-картинки согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством декодирования. Устройство декодирования видео может быть видео декодером 30 из Фиг. 1 и 3, например.
[0253] Способ включает в себя декодирование флага уровня последовательности, чтобы определить присутствие одного или более параметров CPB уровня суб-картинок для DU в AU или в сообщении SEI тактирования картинок или в сообщении SEI тактирования суб-картинок, ассоциированном с DU (400). Например, видео декодер 30 декодирует флаг уровня последовательности, чтобы определить присутствие одного или более параметров CPB уровня суб-картинок. Видео декодер 30 также декодирует флаг уровня последовательности, чтобы определить местоположение одного или более параметров CPB уровня суб-картинок. Флаг уровня последовательности может быть sub_pic_cpb_params_present_flag. В некоторых примерах один или более параметров CPB уровня суб-картинок присутствуют в только одном из сообщения SEI тактирования картинок или сообщения SEI тактирования суб-картинок.
[0254] Способ может также включать в себя декодирование одного или более параметров CPB уровня суб-картинок из сообщения SEI тактирования картинок или сообщения SEI тактирования суб-картинок на основании флага уровня последовательности (402). Например, в ответ на флаг уровня последовательности, указывающий, что один или более параметров CPB уровня суб-картинок присутствуют в сообщении SEI тактирования картинок, видео декодер 30 декодирует сообщение SEI тактирования картинок, чтобы определить один или более параметров CPB уровня суб-картинок. Аналогично, в ответ на флаг уровня последовательности, указывающий, что один или более параметров CPB уровня суб-картинок присутствуют в сообщении SEI тактирования суб-картинок, видео декодер 30 декодирует сообщение SEI тактирования суб-картинок, чтобы определить один или более параметров CPB уровня суб-картинок.
[0255] Способ может также включать в себя определение времени удаления из CPB DU на основании, по меньшей мере частично, одного или более параметров CPB уровня суб-картинок. В некоторых примерах определение времени удаления из CPB DU содержит определение времени удаления из CPB DU без декодирования начальной задержки удаления из CPB и смещения.
[0256] В примере, где флаг уровня последовательности указывает, что параметры CPB уровня суб-картинок присутствуют в сообщении SEI тактирования суб-картинок, декодирование параметров CPB уровня суб-картинок может включать в себя декодирование сообщения SEI тактирования суб-картинок, ассоциированного с DU. В другом примере способ может включать в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU. Таким образом, видео декодер 30 может вывести по меньшей мере одно из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок.
[0257] В другом примере DU является первой DU, и способ также включает в себя выведение времени удаления из CPB первой DU на основании, по меньшей мере частично, параметров CPB уровня суб-картинок, и декодирование длительности между временем удаления из CPB второй DU в AU в порядке декодирования и временем удаления из CPB первой DU. Способ может также включать в себя декодирование видео данных первой DU на основании, по меньшей мере частично, времен удаления из CPB. В некоторых примерах вторая DU является или последней DU в AU в порядке декодирования или непосредственно следующий за первой DU в AU в порядке декодирования.
[0258] DU может быть любой DU, включая единицу NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC12.
[0259] В примерах, в которых AU имеет TemporalId, равный 0, способ может также включать в себя декодирование по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU. Например, видео декодер 30 может декодировать по меньшей мере одно из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU, которая имеет значение TemporalId, равное 0.
[0260] Фиг. 10 является последовательностью операций, иллюстрирующей способ для кодирования флага уровня последовательности для параметра буфера кодированных картинок уровня суб-картинки согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством кодирования. Видео устройство кодирования может быть видео кодером 20 из фиг. 1 и 2, например.
[0261] Способ включает в себя кодирование одного или более параметров буфера кодированных картинок (CPB) уровня суб-картинок для единицы декодирования (DU) единицы доступа (AU) или в сообщении SEI тактирования картинок или в сообщении (410) SEI тактирования суб-картинок. Видео кодер 20 может закодировать сообщение SEI тактирования картинок в одном или более параметров CPB уровня суб-картинок. Альтернативно, видео кодер 20 может закодировать сообщение SEI тактирования суб-картинок в одном или более параметров CPB уровня суб-картинок.
[0262] Способ также включает в себя кодирование флага уровня последовательности, чтобы указывать присутствие одного или более параметров CPB уровня суб-картинок для DU в AU или в сообщении SEI тактирования картинок или в сообщении SEI тактирования суб-картинок, ассоциированном с DU (412). Например, видео кодер 20 кодирует флаг уровня последовательности, чтобы указывать присутствие и местоположение одного или более параметров CPB уровня суб-картинок. Флагом уровня последовательности может быть sub_pic_cpb_params_present_flag. В некоторых примерах видео кодер 20 кодирует один или более параметров CPB уровня суб-картинок только в одном из сообщения SEI тактирования картинок или сообщения SEI тактирования суб-картинок.
[0263] Способ может также включать в себя определение времени удаления из CPB DU на основании, по меньшей мере частично, одного или более параметров CPB уровня суб-картинок. В некоторых примерах определение времени удаления из CPB DU содержит определение времени удаления из CPB DU без кодирования начальной задержки удаления из CPB и смещения.
[0264] В примере кодирование одного или более параметров CPB уровня суб-картинок далее содержит кодирование одного или более параметров CPB уровня суб-картинок в сообщении SEI тактирования суб-картинок, ассоциированном с DU. В таком примере видео кодер 20 кодирует флаг уровня последовательности, чтобы указывать, что параметры CPB уровня суб-картинок присутствуют в сообщении SEI тактирования суб-картинок. В другом примере кодирование одного или более параметров CPB уровня суб-картинок далее содержит кодирование одного или более параметров CPB уровня суб-картинок в сообщении SEI тактирования картинок, ассоциированном с DU. В этом примере видео кодер 20 кодирует флаг уровня последовательности, чтобы указывать, что параметры CPB уровня суб-картинок присутствуют в сообщении SEI тактирования картинок.
[0265] В другом примере DU является первой DU, и способ также включает в себя выведение времени удаления из CPB первой DU на основании, по меньшей мере частично, параметров CPB уровня суб-картинок и кодирование длительности между временем удаления из CPB второй DU в AU в порядке декодирования и временем удаления из CPB первой DU. Способ может также включать в себя кодирование видео данных первой DU на основании, по меньшей мере частично, времен удаления из CPB. В некоторых примерах вторая DU является или последней DU в AU в порядке декодирования или непосредственно следующей за первой DU в AU в порядке декодирования.
[0266] DU может быть любой DU, включая единицу NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC12.
[0267] В примерах, в которых AU имеет TemporalId, равное 0, способ может также включать в себя кодирование по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU. Например, видео кодер 20 может закодировать по меньшей мере одно из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU, которая имеет значение TemporalId, равное 0.
[0268] Фиг. 11 является последовательностью операций, иллюстрирующей способ для декодирования DU, имеющей расширенное определение согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством декодирования. Устройство декодирования видео может быть видео декодером 30 согласно фиг. 1 и 3, например.
[0269] Способ включает в себя декодирование длительности между удалением из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в единице доступа (AU) и удалением из CPB второй DU, в котором первая DU содержит единицу уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63 (500). Таким образом, видео декодер 30 может декодировать единицы DU, которые являются единицей уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63, в дополнение к другим типам DU, определенным в HEVC WD8.
[0270] В некоторых примерах вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Вторая DU может быть непосредственно следующей за первой DU в AU в порядке декодирования. В других примерах вторая DU является последней DU в AU в порядке декодирования.
[0271] Способ также включает в себя определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности (502). Способ также включает в себя декодирование видео данных первой DU на основании, по меньшей мере частично, времени удаления (504). Например, видео декодер 30 определяет время удаления первой DU, на основании, в частности, декодированной длительности, и затем декодирует видео данные первой DU на основании времени удаления.
[0272] В одном примере способ может также включать в себя декодирование одного или более параметров CPB уровня суб-картинок, в котором определение времени удаления первой DU содержит определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и параметров CPB уровня суб-картинок. Декодирование одного или более параметров CPB уровня суб-картинок может также включать в себя декодирование сообщения дополнительной информации расширения (SEI) тактирования суб-картинок, которое ассоциировано с первой DU.
[0273] В другом примере, в котором вторая DU является последней DU в AU в порядке декодирования, декодирование сообщения SEI суб-картинок включает в себя декодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок. В некоторых примерах видео декодер 30 декодирует флаг уровня последовательности, чтобы определить присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок.
[0274] В другом примере, в котором AU имеет TemporalId, равное 0, видео декодер 30 может декодировать по меньшей мере одно из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU. Способ может также включать в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0275] Фиг. 12 является последовательностью операций, иллюстрирующей способ для кодирования DU, имеющей расширенное определение согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством кодирования. Видео устройство кодирования может быть видео кодером 20 из Фиг. 1 и 2, например.
[0276] Способ включает в себя определение, для AU, включающей в себя первую DU, времени удаления из CPB второй DU, в котором вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU, и в котором первая DU содержит единицу уровня абстракции сети (NAL) не-уровня кодирования видео (VCL) с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63 (510). Таким образом, видео кодер 20 может закодировать единицы DU, которые являются единицами NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63, в дополнение к другим типам DU, определенным в HEVC WD8. Вторая DU может быть следующей, в том числе непосредственно следующей, к первой DU в порядке декодирования и в той же самой AU как первая DU. В других примерах вторая DU является последней DU в AU в порядке декодирования.
[0277] Способ также включает в себя определение длительности между временем удаления из CPB первой DU и определенным временем удаления из CPB второй DU (512). Определение длительности между временем удаления из CPB первой DU и определенным временем удаления из CPB второй DU может быть основано на запланированном времени удаления из CPB AU. Способ также включает в себя кодирование определенной длительности (514). Например, видео кодер 20 определяет длительность времени между удалением из CPB первой DU и второй DU и затем кодирует определенную длительность как элемент синтаксиса.
[0278] В одном примере способ может также включать в себя кодирование одного или более параметров CPB уровня суб-картинок, в котором определение определенной длительности первой DU содержит определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и параметров CPB уровня суб-картинок. Кодирование одного или более параметров CPB уровня суб-картинок может также включать в себя кодирование сообщения SEI тактирования суб-картинок, которое ассоциировано с первой DU.
[0279] В другом примере, в котором вторая DU является последней DU в AU в порядке декодирования, кодирование сообщения SEI суб-картинок включает в себя кодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок. В некоторых примерах видео кодер 20 кодирует флаг уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок.
[0280] В другом примере, в котором AU имеет TemporalId, равное 0, видео кодер 20 может закодировать по меньшей мере одно из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU. Способ может также включать в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0281] Фиг. 13 является последовательностью операций, иллюстрирующей способ для декодирования сообщений SEI периода буферизации и точки восстановления согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством декодирования. Устройство декодирования видео может быть видео декодером 30 согласно фиг. 1 и 3, например.
[0282] Способ включает в себя декодирование сообщения SEI периода буферизации, ассоциированного с AU (530). AU имеет temporalId равное или меньше чем 0. Таким образом, сообщение SEI периода буферизации ограничено таким образом, что оно не может быть ассоциировано с AU, имеющей TemporalId, большее чем 0.
[0283] Способ также включает в себя декодирование длительности между удалением из CPB первой DU в AU и удалением из CPB второй DU из сообщения (532) SEI периода буферизации. Вторая DU может быть в той же самой AU как первая DU. Вторая DU может быть следующей, в том числе непосредственно следующей, к первой DU в порядке декодирования. В других примерах вторая DU может быть последней DU в порядке декодирования в AU. Единицы DU могут иметь любой тип DU, принятый в HEVC WD8, и дополнительно могут быть единицей NAL VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0284] Способ может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности (534). В некоторых примерах видео декодер 30 может декодировать один или более параметров CPB уровня суб-картинок. Определение времени удаления первой DU может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и параметров CPB уровня суб-картинок. Декодирование одного или более параметров CPB уровня суб-картинок может также включать в себя декодирование сообщения SEI тактирования суб-картинок, которое ассоциировано с первой DU.
[0285] Способ может также включать в себя декодирование видео данных первой DU на основании, по меньшей мере частично, времени удаления (536). В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, декодирование сообщения SEI суб-картинок также включает в себя декодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок.
[0286] Способ может также включать в себя декодирование флага уровня последовательности, чтобы определить присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок. Способ может также включать в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0287] Фиг. 14 является последовательностью операций, иллюстрирующей способ для кодирования сообщения SEI периода буферизации согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен устройством кодирования видео. Устройство кодирования видео может быть видео кодером 20 из Фиг. 1 и 2, например.
[0288] Способ включает в себя кодирование сообщения дополнительной информации расширения (SEI) периода буферизации, ассоциированного с единицей доступа (AU), в котором длительность закодирована в пределах по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления (540). Поскольку AU имеет temporalId равное или меньше чем 0, сообщение SEI периода буферизации ограничено таким образом, что оно не может быть ассоциировано с AU, имеющей TemporalId большим чем 0.
[0289] Способ может также включать в себя кодирование длительности между временем удаления из CPB первой DU в AU и временем удаления из CPB второй DU из сообщения SEI периода буферизации, в котором AU имеет temporalId равное 0 (542). Способ может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности (544). Далее, способ может включать в себя кодирование данных видео первой DU (546).
[0290] Способ может также включать в себя определение длительности между удалением из буфера кодированных картинок (CPB) первой единицы декодирования (DU) в единице доступа (AU) и удалением из CPB второй DU в AU, при этом AU имеет TemporalId равный 0. Вторая DU может быть в той же самой AU как первая DU. Вторая DU может быть следующей, в том числе непосредственно следующей, к первой DU в порядке декодирования. В других примерах вторая DU может быть последней DU в порядке декодирования в AU. Единицы DU могут иметь любой тип DU, принятый в HEVC WD8, и дополнительно могут быть единицей NAL VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0291] В одном примере, определение длительности между удалением из CPB первой DU может включать в себя определение времени удаления первой и второй DU. Время удаления первой DU может быть вычтено из времени удаления второй DU, чтобы определить длительность.
[0292] В некоторых примерах видео кодер 20 может закодировать один или более параметров CPB уровня суб-картинок. Определение времени удаления первой DU может также включать в себя определение времени удаления первой DU на основании, по меньшей мере частично, закодированной длительности и параметров CPB уровня суб-картинок. Кодирование одного или более параметров CPB уровня суб-картинок может также включать в себя кодирование сообщения SEI тактирования суб-картинок, которое ассоциировано с первой DU.
[0293] Способ может также включать в себя кодирование данных видео первой DU. Кодирование видео данных первой DU может быть основано на, по меньшей мере частично, времени удаления. В примерах, в которых вторая DU является последней DU в AU в порядке декодирования, кодирование сообщения SEI суб-картинок также включает в себя кодирование длительности между временем удаления последней DU и временем удаления первой DU в сообщении SEI тактирования суб-картинок.
[0294] Способ может также включать в себя кодирование флага уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок. Способ может также включать в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли первая DU единицей AU.
[0295] Фиг. 15 является последовательностью операций, иллюстрирующей способ для декодирования времени прибытии и номинального времени удаления из буфера кодированных картинок согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством декодирования. Видео устройство кодирования может быть видео декодером 30 согласно фиг. 1 и 3, например.
[0296] Способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли DU всей AU. DU может быть ассоциирована с AU (560). Способ может включать в себя определение видео декодером 30 значения элемента синтаксиса. Элемент синтаксиса может иметь форму SubPicCpbFlag. В ответ на элемент синтаксиса, имеющий истинное значение (например, SubPicCpbFlag равный 1), способ может включать в себя выведение времени удаления из CPB только для уровня AU. В ответ на элемент синтаксиса, имеющий ложное значение (например, SubPicCpbFlag равный 0), выведение времени удаления из CPB только для уровня суб-картинок. В некоторых примерах по меньшей мере одно из времени прибытия в CPB и номинального времени удаления из CPB выводится, только когда флаг синтаксиса, который указывает, что параметры CPB присутствуют, имеет истинное значение.
[0297] Способ может также включать в себя определение времени удаления AU на основании, по меньшей мере частично, одного из времени прибытия в CPB и номинального времени удаления из CPB (562). Способ также включает в себя декодирование видео данных AU на основании, по меньшей мере частично, времени удаления (564).
[0298] Способ может также включать в себя декодирование длительности между удалением из CPB первой DU в AU и удалением из CPB второй DU, определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности, и декодирование видео данных первой DU на основании, по меньшей мере частично, по меньшей мере одного из времени удаления, времени прибытия в CPB, и номинального времени удаления из CPB. В некоторых примерах вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Способ может также включать в себя декодирование одного или более параметров CPB уровня суб-картинок, в котором определение времени удаления первой DU содержит определение времени удаления первой DU на основании, по меньшей мере частично, декодированной длительности и параметров CPB уровня суб-картинок.
[0299] В некоторых примерах способ также включает в себя декодирование флага уровня последовательности, чтобы определить присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок.
[0300] Единицы DU могут иметь любой тип DU, описанный в HEVC WD8, включая единицы NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0301] В другом примере, в котором AU имеет TemporalId, не больше чем 0, способ также включает в себя декодирование по меньшей мере одного из сообщения дополнительной информации расширения (SEI) периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU.
[0302] Фиг. 16 является последовательностью операций, иллюстрирующей способ для кодирования времен прибытия и номинальных времен удаления из буфера кодированных картинок согласно способам, описанным в настоящем раскрытии. Способ может быть выполнен видео устройством кодирования. Видео устройство кодирования может быть видео кодером 20 из Фиг. 1 и 2, например.
[0303] Способ включает в себя выведение по меньшей мере одного из времени прибытия в CPB и номинального времени удаления из CPB для AU как на уровне единицы доступа так и на уровне суб-картинок независимо от значения элемента синтаксиса, который определяет, является ли DU всей AU. DU может быть ассоциирована с AU (570). Способ может включать в себя определение видео кодером 20 значения элемента синтаксиса. Элемент синтаксиса может иметь форму SubPicCpbFlag. В ответ на элемент синтаксиса, имеющий истинное значение (например, SubPicCpbFlag равный 1), видео кодер 20 может вывести время удаления из CPB только для уровня AU. В ответ на элемент синтаксиса, имеющий ложное значение (например, SubPicCpbFlag равный 0), видео кодер 20 может вывести время удаления из CPB только для уровня суб-картинок. В некоторых примерах по меньшей мере одно из времени прибытия в CPB и номинального времени удаления из CPB выводится, только когда флаг синтаксиса, который указывает, что параметры CPB присутствуют, имеет истинное значение.
[0304] Способ может также включать в себя определение времени удаления AU на основании, по меньшей мере частично, одного из времени прибытия в CPB и номинального времени удаления из CPB (572). Способ также включает в себя кодирование определенного времени удаления (574). В некоторых примерах кодирование времени удаления может включать в себя кодирование длительности между удалением из CPB первой DU в AU и удалением из CPB второй DU, определение времени удаления первой DU на основании, по меньшей мере частично, закодированной длительности, и кодирование видео данных первой DU на основании, по меньшей мере частично, по меньшей мере одного из времени удаления, времени прибытия в CPB, и номинального времени удаления из CPB. В некоторых примерах вторая DU является следующей за первой DU в порядке декодирования и в той же самой AU как первая DU. Способ может также включать в себя кодирование одного или более параметров CPB уровня суб-картинок, в котором определение времени удаления первой DU содержит определение времени удаления первой DU на основании, по меньшей мере частично, закодированной длительности и параметров CPB уровня суб-картинок. Способ может также включать в себя кодирование длительности между удалением из CPB первой DU в AU, и удаление из CPB второй DU, в котором кодирование времени удаления далее содержит кодирование длительности.
[0305] В некоторых примерах способ также включает в себя кодирование флага уровня последовательности, чтобы указывать присутствие параметров CPB уровня суб-картинок или в сообщениях SEI тактирования картинок или в сообщениях SEI тактирования суб-картинок.
[0306] Единицы DU могут иметь любой тип DU, описанный в HEVC WD8, включая единицы NAL не-VCL с nal_unit_type, равным UNSPEC0, EOS_NUT, EOB_NUT, в диапазоне RSV_NVCL44 - RSV_NVCL47 или в диапазоне UNSPEC48 - UNSPEC63.
[0307] В другом примере, в котором AU имеет TemporalId, не больше чем 0, способ также включает в себя кодирование по меньшей мере одного из сообщения SEI периода буферизации или сообщения SEI точки восстановления, ассоциированного с AU.
[0308] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы, как одна или более инструкций или код, считываемый компьютером носитель и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемые компьютером запоминающие носители, которые соответствуют материальному носителю, такому как запоминающий носитель данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель вообще может соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются невременными или (2) коммуникационному носителю, такой как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому может получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0309] Посредством примера, а не ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии, такие как инфракрасное, радио-, и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии, такие как инфракрасное, радио-, и микроволновое излучение, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие переходные носители, но вместо этого направлены на непереходные, материальные запоминающие носители. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитно, в то время как диски (dicks) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0310] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые пользователем логические матрицы (FPGAs), или другая эквивалентная интегрированная или дискретная логическая схема. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных в настоящем описании. Кроме того, в некоторых аспектах, функциональные возможности, описанные в настоящем описании, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, конфигурируемых для кодирования и декодирования, или встроенных в объединенный кодек. Кроме того, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0311] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнить раскрытые способы, но не обязательно потребовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0312] Были описаны различные примеры. Эти и другие примеры попадают в объем нижеследующей формулы изобретения.