ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Настоящее раскрытие относится в целом к электронным устройствам. Более конкретно настоящее раскрытие относится к электронным устройствам для сигнализации основанных на фрагменте изображения параметров гипотетического эталонного декодера и к системам и способам для гибридной работы буфера декодированных изображений (DPB).
УРОВЕНЬ ТЕХНИКИ
[0002] Электронные устройства стали меньше и более мощными для того, чтобы отвечать запросам потребителей и повышать транспортабельность и удобство. Потребители стали зависеть от электронных устройств и привыкли ожидать расширенной функциональности. Некоторые примеры электронных устройств включают в себя настольные компьютеры, ноутбуки, сотовые телефоны, смартфоны, мультимедийные проигрыватели, интегральные схемы и т.д.
[0003] Некоторые электронные устройства используются для обработки и отображения цифрового мультимедиа. Например, переносные электронные устройства теперь позволяют использование цифрового мультимедиа почти в любом месте, где может находиться потребитель. Кроме того, некоторые электронные устройства могут обеспечивать загрузку по линии связи или потоковую передачу цифрового мультимедийного контента для применения и использования потребителем.
[0004] Возрастающая популярность цифрового мультимедиа представила несколько проблем. Например, эффективное представление высококачественного цифрового мультимедиа для хранения, передачи и быстрого воспроизведения представляет несколько трудных задач. Как можно видеть из этого обсуждения, могут быть полезными системы и способы, которые представляют цифровое мультимедиа эффективно с улучшенной рабочей характеристикой.
[0005] Вышеизложенные и другие объекты, признаки и преимущества изобретения будут более легко поняты после рассмотрения последующего подробного описания изобретения, рассматриваемого вместе с сопроводительными чертежами.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Решение задачи изобретения
[0006] Аспект изобретения обеспечивает способ для декодирования битового потока видео(данных), содержащий: (a) прием базового битового потока, представляющего кодированную видеопоследовательность; (b) прием ряда битовых потоков улучшения качества, представляющих упомянутые кодированные видеопоследовательности; (c) прием набора параметров видео, содержащего синтаксические элементы, которые применяют к упомянутому базовому битовому потоку и упомянутому множеству битовых потоков улучшения, причем упомянутый набор параметров видео содержит синтаксический элемент, сигнализирующий расширение набора параметров видео; (d) прием упомянутого расширения набора параметров видео, содержащего синтаксические элементы, связанные с, по меньшей мере, одним из упомянутых битовых потоков улучшения; (e) прием сообщения изменения набора уровней вывода, включающего информацию, указывающую изменение, по меньшей мере, одного набора уровней вывода.
[0007] Аспект изобретения обеспечивает способ для декодирования битового потока видео(данных), содержащий: (a) прием базового битового потока, представляющего упомянутую кодированную видеопоследовательность; (b) прием множества битовых потоков улучшения, представляющих упомянутые кодированные видеопоследовательности; (c) прием набора параметров видео, содержащего синтаксические элементы, которые применяют к упомянутому базовому битовому потоку и упомянутому множеству битовых потоков улучшения, причем упомянутый набор параметров видео содержит синтаксический элемент, сигнализирующий расширение набора параметров видео; (d) прием упомянутого расширения набора параметров видео, содержащего синтаксические элементы, который включает в себя относящиеся к буферу декодированных изображений параметры, относительно буфера декодированных изображений для, по меньшей мере, одного из упомянутых битовых потоков улучшения.
[0008] Аспект изобретения обеспечивает способ для кодирования видео, содержащий: инициирование разбора первого заголовка (независимо-восстанавливаемого) сегмента-слайса (slice) текущего изображения; определение, какие этапы, выполняемые буфером декодированных изображений (DPB), будут на основе изображения, и какие этапы будут на основе блока доступа (AU); выполнение удаления из DPB; выполнение вывода изображения из DPB; выполнение декодирования и сохранения текущего декодированного изображения в DPB; пометку текущего декодированного изображения в DPB; и выполнение дополнительного вывода изображения из DPB.
[0009] Аспект изобретения обеспечивает электронное устройство, сконфигурированное для кодирования видео, содержащее: процессор; память в электронной связи с процессором, причем инструкции, сохраненные в памяти, являются исполнимыми, чтобы: начинать синтаксический разбор первого заголовка слайса текущего изображения; определять, какие этапы, выполняемые буфером декодированных изображений (DPB), будут на основе изображения, и какие этапы будут на основе блока доступа (AU); выполнять удаление из DPB; выполнять вывод изображения из DPB; выполнять декодирование и сохранение текущего декодированного изображения в DPB; помечать текущее декодированное изображение в DPB; и выполнять дополнительный вывод изображения из DPB.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0010] [фиг.1A] Фиг.1A - блок-схема, иллюстрирующая пример одного или большего количества электронных устройств, в которых могут быть реализованы системы и способы для посылки сообщения и буферизации битового потока.
[fig.1B] Фиг.1B - другая блок-схема, иллюстрирующая пример одного или большего количества электронных устройств, в которых могут быть реализованы системы и способы для посылки сообщения и буферизации битового потока.
[фиг.2] Фиг.2 - схема последовательности операций, иллюстрирующая одну конфигурацию способа для посылки сообщения.
[фиг.3] Фиг.3 - схема последовательности операций, иллюстрирующая одну конфигурацию способа для определения одной или нескольких задержек удаления для блоков декодирования в блоке доступа.
[фиг.4] Фиг.4 схема последовательности операций, иллюстрирующая одну конфигурацию способа для буферизации битового потока;
[фиг.5] Фиг.5 схема последовательности операций, иллюстрирующая одну конфигурацию способа для определения одной или нескольких задержек удаления для блоков декодирования в блоке доступа,
[фиг.6A] Фиг.6A - блок-схема, иллюстрирующая одну конфигурацию кодера 604 на электронном устройстве.
[фиг.6B] Фиг.6B - другая блок-схема, иллюстрирующая одну конфигурацию кодера 604 на электронном устройстве.
[фиг.7A] Фиг.7A - блок-схема, иллюстрирующая одну конфигурацию декодера на электронном устройстве.
[фиг.7B] Фиг.7B - другая блок-схема, иллюстрирующая одну конфигурацию декодера на электронном устройстве.
[фиг.8] Фиг.8 - иллюстрация различных компонентов, которые могут использоваться в передающем электронном устройстве.
[фиг.9] Фиг.9 - блок-схема, иллюстрирующая различные компоненты, которые могут использоваться в приемном электронном устройстве.
[фиг.10] Фиг.10 - блок-схема, иллюстрирующая одну конфигурацию электронного устройства, в котором могут быть реализованы системы и способы для посылки сообщения,
[фиг.11] Фиг.11 - блок-схема, иллюстрирующая одну конфигурацию электронного устройства, в котором могут быть реализованы системы и способы для буферизации битового потока,
[фиг.12] Фиг.12 - схема последовательности операций, иллюстрирующая одну конфигурацию способа для работы буфера декодированных изображений.
[фиг.13A] Фиг.13A - иллюстрация другого синтаксиса заголовка блока NAL.
[фиг.l3B] Фиг.13B - иллюстрация другого синтаксиса заголовка блока NAL,
[фиг.13C] Фиг.13C - иллюстрация другого синтаксиса заголовка блока NAL,
[фиг.14] Фиг.14 - иллюстрация общего синтаксиса блока NAL.
[фиг.l5] Фиг.15 - иллюстрация существующего набора параметров видео.
[фиг.16] Фиг.16 - иллюстрация существующих типов масштабируемости.
[фиг.l7] Фиг.17 - иллюстрация примерного набора параметров видео.
[фиг.l8] Фиг.18 - иллюстрация примерного синтаксиса карты отображения масштабируемости,
[фиг.19] Фиг.19 - иллюстрация примерного набора параметров видео.
[фиг.20] Фиг.20 - иллюстрация существующего набора параметров видео.
[фиг.21] Фиг.21 - иллюстрация существующего типа измерения, синтаксиса идентификатора (id) измерения.
[фиг.22] Фиг.22 - иллюстрация примерного набора параметров видео.
[фиг.23] Фиг.23 - иллюстрация примерного синтаксиса карты отображения масштабируемости.
[фиг.24] Фиг.24 - иллюстрация примерного набора параметров видео.
[фиг.25] Фиг.25 - иллюстрация примерного набора параметров видео.
[фиг.26] Фиг.26 - иллюстрация примерного набора параметров видео.
[фиг.27] Фиг.27 - иллюстрация примерного синтаксиса маски масштабируемости.
[фиг.28] Фиг.28 - иллюстрация примерного синтаксиса расширения набора параметров видео.
[фиг.29] Фиг.29 - иллюстрация примерного синтаксиса расширения набора параметров видео,
[фиг.30] Фиг.30 - иллюстрация примерного синтаксиса расширения набора параметров видео.
[фиг.31] Фиг.31 - иллюстрация примерного синтаксиса расширения набора параметров видео,
[фиг.32] Фиг.32 - иллюстрация примерного синтаксиса расширения набора параметров видео.
[фиг.33] Фиг.33 - иллюстрация примерного синтаксиса расширения набора параметров видео,
[фиг.34] Фиг.34 - иллюстрация примерного синтаксиса набора параметров видео.
[фиг.35] Фиг.35 - иллюстрация примерного синтаксиса расширения набора параметров видео.
[фиг.36] Фиг.36 - иллюстрация примерного синтаксиса изменения наборов уровней вывода.
[фиг.37] Фиг.37 - иллюстрация другого примерного синтаксиса изменения наборов уровней вывода,
[фиг.38A] Фиг.38A - иллюстрация примерного синтаксиса расширения параметров видео.
[фиг.38B] Фиг.38B - иллюстрация примерного синтаксиса расширения параметров видео,
[фиг.39A] Фиг.39A - иллюстрация примерного синтаксиса op_dpb_info_parameters(j).
[фиг.39B] Фиг.39B - иллюстрация примерного синтаксиса op_dpb_info_parameters(j).
[фиг.40] Фиг.40 - иллюстрация другого примерного синтаксиса расширения параметров видео.
[фиг.41] Фиг.41 - иллюстрация другого примерного синтаксиса op_dpb_info_parameters(j).
[фиг.42] Фиг.42 - иллюстрация другого примерного синтаксиса op_dpb_info_parameters(j).
[фиг.43] Фиг.43 - иллюстрация примерного синтаксиса num_dpb_info_parameters.
[фиг.44] Фиг.44 - иллюстрация другого примерного синтаксиса op_dpb_info_parameters(j).
[фиг.45] Фиг.45 - иллюстрация другого примерного синтаксиса num_dpb_info_parameters.
[фиг.46] Фиг.46 - иллюстрация другого примерного синтаксиса num_dpb_info_parameters.
[фиг.47] Фиг.47 - иллюстрация другого примерного синтаксиса расширения параметров видео и layer_dpb_info(i).
[фиг.48] Фиг.48 - иллюстрация примерного синтаксиса oop_dpb_info_parameters и layer_dpb_info(i).
[фиг.49A] Фиг.49A - иллюстрация другого примерного синтаксиса vps_extension().
[фиг.49B] Фиг.49B - иллюстрация другого примерного синтаксиса vps_extension().
[фиг.50] Фиг.50 - иллюстрация примерного синтаксиса oop_dpb_maxbuffering_parameters(i).
[фиг.51] Фиг.51 - иллюстрация примерного layer_dpb_info_parameters(i).
[фиг.52] Фиг.52 - иллюстрация другого примерного vps_extension().
[фиг.53] Фиг.53 - иллюстрация другого примерного vps_extension().
[фиг.54] Фиг.54 - иллюстрация примерного oop_dpb_maxbuffering_parameters(i,k).
[фиг.55] Фиг.55 - иллюстрация примерного oop_dpb_maxbuffering_parameters(i,k).
[фиг.56] Фиг.56 - иллюстрация другого примерного vps_extension().
[фиг.57] Фиг.57 - иллюстрация примерного oop_dpb_maxbuffring_parameters(i,k).
[фиг.58] Фиг.58 - иллюстрация примерного oop_dpb_maxbuffring_parameters(i,k).
[фиг.59] Фиг.59 - иллюстрация примерного oop_dpb_maxbuffring_parameters(i,k).
[фиг.60] Фиг.60 - иллюстрация примерного oop_dpb_maxbuffring_parameters(i,k).
[фиг.61] Фиг.61 - иллюстрация примерного oop_dpb_maxbuffering_parameters(i,k).
[фиг.62] Фиг.62 - иллюстрация примерного seq_parameter_set_rbsp().
[фиг.63] Фиг.63 - блок-схема, иллюстрирующая кодирование видео между множественными электронными устройствами.
[фиг.64] Фиг.64 - схема последовательности операций способа для гибридной работы буфера декодированного изображения (DPB).
[фиг.65] Фиг.65 - блок-схема другого способа для гибридной работы буфера декодированных изображений (DPB).
[фиг.66] Фиг.66 - блок-схема, иллюстрирующая одну конфигурацию декодера;
[фиг.67A] Фиг.67A - блок-схема, иллюстрирующая использование и уровня улучшения, и базового уровня для кодирования видео с помощью отдельных буферов декодированных изображений (DPB) и отдельных модулей гибридной работы буфера декодированных изображений (DPB) для базового уровня и уровня улучшения.
[фиг.67B] Фиг.67B - блок-схема, иллюстрирующая использование совместно-используемого буфера декодированных изображений (DPB) и совместно-используемого модуля гибридной работы буфера декодированных изображений (DPB) для базового уровня и уровня улучшения.
[фиг.68] Фиг.68 - временная диаграмма, иллюстрирующая гибридную работу буфера декодированных изображений (DPB).
[фиг.69] Фиг.69 - блок-схема, иллюстрирующая структуру и временную диаграмму для блоков уровня сетевой абстракции (NAL) для уровней кодированных изображений и блоков доступа (AU), когда второй уровень (EL2) улучшения имеет скорость (обработки/передачи) изображений более низкую, чем базовый уровень (BL) и первый уровень улучшения (EL1).
[фиг.70] Фиг.70 - блок-схема, иллюстрирующая структуру и временную диаграмму для блоков уровня сетевой абстракции (NAL) для уровней кодированных изображений и блоков доступа (AU), когда базовый уровень (BL) имеет скорость изображений более низкую, чем первый уровень улучшения (EL1) и второй уровень улучшения (EL2).
Описание вариантов осуществления
Пример 1
[0011] Описывается электронное устройство для посылки сообщения. Электронное устройство включает в себя процессор и инструкции, сохраненные в памяти, которая находится в электронной связи с процессором. Электронное устройство определяет, если буфер кодированных изображений (CPB) поддерживает работу на уровне фрагмента изображения, включать ли общий параметр задержки удаления в CPB блока декодирования в сообщение дополнительной расширенной информации (SEI) о синхронизации изображения. Электронное устройство также формирует, когда общий параметр задержки удаления в CPB блока декодирования подлежит включению в сообщение SEI о синхронизации изображения (или некоторое другое сообщение SEI или некоторый другой набор параметров, например, набор параметров изображения или набор параметров последовательности или набор параметров видео или набор параметров адаптации), общий параметр задержки удаления в CPB блока декодирования, причем общий параметр задержки удаления в CPB блока декодирования является применимым ко всем блокам декодирования в блоке доступа из CPB. Электронное устройство также формирует, если общий параметр задержки удаления в CPB блока декодирования не подлежит включению в сообщение SEI о синхронизации изображения, отдельный параметр задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа. Электронное устройство также посылает сообщение SEI о синхронизации изображения с общим параметром задержки удаления в CPB блока декодирования или параметрами задержки удаления в CPB блока декодирования.
[0012] Общий параметр задержки удаления в CPB блока декодирования может описывать количество тактов для фрагмента изображения, которое ожидать после удаления из CPB непосредственно предшествующего блока декодирования до удаления из CPB текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0013] Кроме того, когда блок декодирования является первым блоком декодирования в блоке доступа, общий параметр задержки удаления в CPB блока декодирования может указывать количество тактов фрагмента изображения которое ожидать после удаления из CPB последнего блока декодирования в блоке доступа, связанном с последним по времени сообщением SEI о периоде буферизации в предшествующем блоке доступа, до удаления из CPB первого блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0014] Напротив, когда блок декодирования является не первым блоком декодирования в блоке доступа, общий параметр задержки удаления в CPB блока декодирования может указывать количество тактов фрагмента изображения, которое ожидать после удаления из CPB предшествующего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения, до удаления из CPB текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0015] Параметры задержки удаления в CPB блока декодирования могут задавать количество тактов фрагмента изображения, которое ожидать после удаления из CPB последнего блока декодирования прежде, чем удалить из CPB i-ый блок декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0016] Электронное устройство может вычислять параметры задержки удаления в CPB блока декодирования согласно значению остатка счетчика по модулю , где cpb_removal_delay_length_minus1+1 является длиной общего параметра задержки удаления в CPB блока декодирования.
[0017] Электронное устройство может также формировать, когда CPB поддерживает работу на уровне блока доступа, сообщение SEI о синхронизации изображения, содержащее параметр задержки удаления в CPB, который задает, сколько тактов системных часов ожидать после удаления из CPB блока доступа, связанного с последним по времени сообщением SEI о периоде буферизации, в предшествующем блоке доступа прежде, чем удалить из CPB данные блока доступа, связанные с сообщением SEI о синхронизации изображения.
[0018] Электронное устройство может также определять, поддерживает ли CPB работу на уровне фрагмента изображения или на уровне блока доступа. Это может включать в себя определение флага синхронизации изображения, который указывает, обеспечивает ли буфер кодированных изображений (CPB) параметры, поддерживающие работу на уровне фрагмента изображения, на основании значения флага синхронизации изображения. Флаг синхронизации изображения может быть включен в сообщение SEI о синхронизации изображения.
[0019] Определение, включать ли общий параметр задержки удаления в CPB блока декодирования, может включать в себя установку в 1 общего флага задержки удаления в CPB блока декодирования, когда общий параметр задержки удаления в CPB блока декодирования подлежит включению в сообщение SEI о синхронизации изображения. Это может также включать в себя установку в 0 общего флага задержки удаления в CPB блока декодирования, когда общий параметр задержки удаления в CPB блока декодирования не подлежит включению в сообщение SEI о синхронизации изображения. Общий флаг задержки удаления в CPB блока декодирования может быть включен в сообщение SEI о синхронизации изображения.
[0020] Электронное устройство может также формировать, если CPB поддерживает работу на уровне фрагмента изображения, отдельные, относящиеся к блокам уровня сетевой абстракции (NAL) параметры, которые обозначают количество, смещенное на единицу, блоков NAL для каждого блока декодирования в блоке доступа. Альтернативно, или вдобавок, электронное устройство может формировать общий параметр NAL, который указывает количество со смещением на единицу, блоков NAL, общих для каждого блока декодирования в блоке доступа.
[0021] Также описывается электронное устройство для буферизации битового потока. Электронное устройство включает в себя процессор и инструкции, сохраненные в памяти, которая находится в электронной связи с процессором. Электронное устройство определяет, что CPB сигнализирует параметры на уровне фрагмента изображения для блока доступа. Электронное устройство также определяет, если принятое сообщение дополнительной расширенной информации (SEI) о синхронизации изображения содержит общий флаг задержки удаления блока декодирования из буфера кодированных изображений (CPB), общий параметр задержки удаления в CPB блока декодирования, применимый ко всем блокам декодирования в блоке доступа. Электронное устройство также определяет, если сообщение SEI о синхронизации изображения не содержит общий флаг задержки удаления в CPB блока декодирования, отдельный параметр задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа. Электронное устройство также удаляет блоки декодирования из CPB, используя общий параметр задержки удаления в CPB блока декодирования или отдельные параметры задержки удаления в CPB блока декодирования. Электронное устройство также декодирует блоки декодирования в блоке доступа.
[0022] В одной конфигурации электронное устройство определяет, что флаг синхронизации изображения установлен в сообщении SEI о синхронизации изображения. Электронное устройство может также установить параметры задержки удаления в CPB, cpb_removal_delay, согласно
[0023] [Математическое выражение l]
[0024] где du_cpb_removal_delay[i] - параметры задержки удаления в CPB блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения,
num_decoding_units_minus1 - количество блоков декодирования в блоке доступа, со смещением на единицу, и i - индекс.
[0025] Альтернативно, электронное устройство может устанавливать параметр задержки удаления из CPB, cpb_removal_delay и du_cpb_removal_delay[num_decoding_units_minus1] так, чтобы удовлетворять уравнению
[0026] [Математическое выражение 2]
[0027] где du_cpb_removal_delay[i] - параметры задержки удаления в CPB блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу, и i - индекс.
[0028] Альтернативно, электронное устройство может устанавливать параметр задержки удаления в CPB, cpb_removal_delay и du_cpb_removal_delay[num_decoding_units_minus1] согласно cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub, где du_cpb_removal_delay[num_decoding_units_minus1] является параметром задержки удаления в CPB блока декодирования для num_decoding_units_minus1'-ого блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу.
[0029] В одной конфигурации электронное устройство определяет, что флаг синхронизации изображения установлен в сообщении SEI о синхронизации изображения. Электронное устройство может также установить параметры задержки удаления в CPB, cpb_removal_delay и du_cpb_removal_delay[num_decoding_units_minus1] так, чтобы удовлетворять уравнению: -1<=(cpb_removal_delay*tc - du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)<=1, где du_cpb_removal_delay[num_decoding_units_minus1] - параметр задержки удаления в CPB блока декодирования для num_decoding_units_minus1'-ого блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа, со смещением на единицу.
[0030] Переменная ClockDiff может быть определена как ClockDiff=(num_units_in_tick - (num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale), где num_units_in_tick - число тактов (единиц времени) тактового генератора, работающего с частотой time_scale Гц, которое соответствует одному приращению счетчика тактов системных часов, num_units_in_sub_tick - число тактов тактового генератора, работающего с частотой time_scale Гц, которое соответствует одному приращению счетчика тактов для фрагмента изображения, num_decoding_units_minus1+1 - количество блоков декодирования в блоке доступа, и time_scale - число тактов, которые проходят в одну секунду.
[0031] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, CPB работает на уровне фрагмента изображения, и ClockDiff больше чем нуль, время удаления для блока m декодирования определяют согласно: tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub )+ClockDiff, где tr,n(m) является номинальным временем удаления блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления и taf(m) - конечное время поступления блока m декодирования.
[0032] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, CPB работает на уровне блока доступа, и ClockDiff больше чем нуль, время удаления для блока n доступа, tr(n) определяют согласно: tr(n)=tr,n(n)+tc*Ceil((taf(n)-tr,n(n))/tc) - ClockDiff, где tr(n) является номинальным временем удаления блока n доступа tc - такт системных часов, Ceil() - функция округления, и taf(n) - конечное время поступления блока n доступа.
[0033] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) согласно: tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr(m) является номинальным временем удаления последнего блока m декодирования, tc,sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0034] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) согласно:
где tr,n(n) является номинальным временем удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) является номинальным временем удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0035] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) согласно: , где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0036] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) согласно: tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0037] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) согласно: tr(m)=tr,n(m)+(tc*Ceil((taf(n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0038] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) согласно: tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0039] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока m декодирования, который не является последним блоком декодирования, установлен как tr(m)=taf(m), где taf(m) является конечным временем поступления блока m декодирования. Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока m декодирования, который является последним блоком m декодирования в блоке доступа, tr(m) согласно: tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, taf(n) - конечное время поступления блока n доступа, и taf(m) является конечным временем поступления последнего блока m декодирования в блоке n доступа.
[0040] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока m декодирования, который не является последним блоком декодирования, устанавливают как tr(m)=taf(m), где taf(m) является конечным временем поступления блока m декодирования. Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока m декодирования, который является последним блоком m декодирования в блоке доступа, tr(m) согласно: tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, taf(n) - конечное время поступления блока n доступа, и taf(m) является конечным временем поступления последнего блока m декодирования в блоке n доступа.
[0041] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока m декодирования установлен как tr(m)=taf(m), где tr,n(m) - номинальное время удаления блока m декодирования, tc_sub - такт для фрагмента изображения Ceil() - функция округления, taf(m) - конечное время поступления блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов; taf(n) является конечным временем поступления блока n доступа, и taf(m) является конечным временем поступления блока m декодирования в блоке n доступа.
[0042] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) согласно: tr(n)=taf(n) то, где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub является тактом для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0043] Дополнительно в некоторых случаях флаг можно посылать в части битового потока, чтобы сигнализировать, какие из вышеуказанных альтернативных уравнений используются для принятия решения о времени удаления блоков декодирования и времени удаления блока доступа. В одном случае флаг может называться du_au_cpb_alignment_mode_flag. Если du_au_cpb_alignment_mode_flag является 1, то используются уравнения выше, которые настраивают работу CPB, который работает в режиме на основе фрагмента изображения, с CPB, который работает в режиме блока доступа. Если du_au_cpb_alignment_mode_flag является 0, то используются уравнения выше, которые не настраивают работу CPB, работающего в режиме на основе фрагмента изображения, с CPB, который работает в режиме блока доступа.
[0044] В одном случае флаг du_au_cpb_alignment_mode_flag можно сигнализировать в информации используемости видео (VUI). В другом случае флаг du_au_cpb_alignment_mode_flag можно посылать в сообщении SEI о синхронизации изображения. В еще одном случае флаг du_au_cpb_alignment_mode_flag можно посылать в некоторой другой нормативной части битового потока. Один пример модифицированного синтаксиса и семантики в соответствии с системами и способами, раскрытыми в описании, приведен в Таблице (0), как изложено ниже.
[0045] [Таблица 0]
[0046] Следует отметить, что могут использоваться другие символы (имена), чем использованные выше для различных переменных. Например tr(n) блока n доступа может называться CpbRemovalTime(n), tr(m) блока n декодирования может называться CpbRemovalTime(m), tc_sub может называться ClockSubTick, tc может называться ClockTick, taf(n) блока m доступа может называться FinalArrivalTime(n) блока n доступа, taf(m) блока m декодирования может называться FinalArrivalTime(m), tr,n(n) может называться временем NominalRemovalTime(n) блока n доступа, tr,n(m) может называться временем NominalRemovalTime(m) блока m декодирования
[0047] Также описывается способ для посылки сообщения электронным устройством. Способ включает в себя определение, когда буфер кодированных изображений (CPB) поддерживает работу на уровне фрагмента изображения, включать ли общий параметр задержки удаления в CPB блока декодирования в сообщение дополнительной расширенной информации (SEI) о синхронизации изображения. Способ также включает в себя формирование, когда общий параметр задержки удаления в CPB блока декодирования подлежит включению в сообщение SEI о синхронизации изображения, общего параметра задержки удаления в CPB блока декодирования, причем общий параметр задержки удаления в CPB блока декодирования является применимым ко всем блокам декодирования в блоке доступа из CPB. Способ также включает в себя формирование, когда общий параметр задержки удаления в CPB блока декодирования не подлежит включению в сообщение SEI о синхронизации изображения, отдельного параметра задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа. Способ также включает в себя посылку сообщении SEI о синхронизации изображения с общим параметром задержки удаления в CPB блока декодирования или параметрами задержки удаления в CPB блока декодирования.
[0048] Также описывается способ для буферизации битового потока электронным устройством. Способ включает в себя определение, что CPB сигнализирует параметры на уровне фрагмента изображения для блока доступа. Способ также включает в себя определение, когда принятое сообщение дополнительной расширенной информации (SEI) синхронизации изображения содержит общий флаг задержки удаления из буфера кодированных изображений (CPB) блока декодирования, общий параметр задержки удаления в CPB блока декодирования, применимый ко всем блокам декодирования в блоке доступа. Способ также включает в себя определение, когда сообщение SEI о синхронизации изображения не содержит общий флаг задержки удаления в CPB блока декодирования, отдельный параметр задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа. Способ также включает в себя удаление блоков декодирования из CPB, используя общий параметр задержки удаления в CPB блока декодирования или отдельные параметры задержки удаления в CPB блока декодирования. Способ также включает в себя декодирование блоков декодирования в блоке доступа.
[0049] Системы и способы, раскрытые в описании, описывают электронные устройства для посылки сообщения и буферизации битового потока. Например, системы и способы, раскрытые в описании, описывают буферизацию для битовых потоков, начиная с параметров фрагмента изображения. В некоторых конфигурациях системы и способы, раскрытые в описании, могут описывать сигнализацию фрагмента изображения на основе параметров Гипотетического эталонного декодера (HRD). Например, системы и способы, раскрытые в описании, описывают модификацию сообщения дополнительной расширенной информации (SEI) о синхронизации изображения. Системы и способы, раскрытые в описании (например, модификация HRD), могут приводить к более компактной сигнализации параметров, когда каждая деталь изображения поступает и удаляется из CPB периодически.
[0050] Кроме того, когда присутствуют параметры задержки удаления из CPB на уровне фрагмента изображения, буфер кодированных изображений (CPB) может работать на уровне блока доступа или уровне фрагмента изображения. Настоящие системы и способы могут также налагать ограничение на битовый поток с тем, что работа CPB на основе уровня фрагмента изображения и работа CPB на уровне блока доступа приводят к такой же синхронизации удаления блока декодирования. Конкретно синхронизация удаления последнего блока декодирования в блоке доступа при работе в режиме фрагмента изображения и синхронизация удаления блока доступа при работе в режиме блока доступа будет одинаковым.
[0051] Следует отметить, что хотя при обращении к HRD используется термин "гипотетический", HRD может быть реализованным физически. Например, "HRD" может использоваться, чтобы описать исполнение фактического декодера. В некоторых конфигурациях HRD может быть реализован для того, чтобы определять, соответствует ли битовый поток спецификациям стандарта высокоэффективного кодирования видеоизображений (HEVC). Например, HRD может использоваться, чтобы определять, соответствуют ли битовые потоки Типа I и битовые потоки Типа II техническим условиям HEVC. Битовый поток Типа I может содержать только блоки уровня сетевой абстракции (NAL) для Уровня кодирования видео (VCL) и блоки NAL с данными заполнителя. Битовый поток Типа II может содержать дополнительные другие блоки NAL и синтаксические элементы.
[0052] Документ JCTVC-I0333 Объединенной группы специалистов по кодированию видео (JCTVC) включает в себя основывающийся на фрагментах изображения HRD и поддерживает сообщения SEI о синхронизации изображения. Эта функциональность была включена в Проект (JCTVC-I1003) комитета по высокоэффективному кодированию видеоизображений (HEVC), включенный в описание полностью путем ссылки. Документ "High efficiency video coding (HEVC) text specification draft 10 (for DFIS & Last Call)" авторов B. Bros, W-J. Han, J-R. Ohm, G.J. Sullivan, Wang и T. Wiegand, JCTVC-J10003_v34, Женева, январь 2013 тем самым полностью включен в данное описание путем ссылки.
[0053] Один пример модифицированного синтаксиса и семантики в соответствии с системами и способами, раскрытыми в описании, дается в Таблице (1), как изложено ниже.
[0055] Примеры относительно семантики сообщения SEI о периоде буферизации в соответствии с системами и способами, раскрытыми в описании, даются, как изложено ниже. В частности дополнительная подробность относительно семантики модифицированных синтаксических элементов дается, как изложено ниже. Когда флаги NalHrdBpPresentFlag или VclHrdBpPresentFlag равны 1, сообщение SEI о периоде буферизации может быть связано с любым блоком доступа в битовом потоке, и сообщение SEI о периоде буферизации может быть связано с каждым блоком доступа IDR, с каждым блоком доступа CRA, и с каждым блоком доступа, связанным с сообщением SEI о точке восстановления. Для некоторых приложений может быть желательным частое присутствие сообщения SEI о периоде буферизации. Период буферизации задается как набор блоков доступа между двумя экземплярами сообщения SEI о периоде буферизации по порядку декодирования.
[0056] Элемент 'seq_parameter_set_id' задает набор параметров последовательности, который содержит атрибуты последовательности HRD. Значение seq_parameter_set_id может быть равным значению seq_parameter_set_id в наборе параметров изображения, на который ссылается первичное кодированное изображение, связанное с сообщением SEI о периоде буферизации. Значение seq_parameter_set_id может находиться в диапазоне от 0 до 31, включительно.
[0057] 'initial_cpb_removal_delay'[SchedSelIdx] задает задержку SchedSelIdx-ого CPB между временем поступления в CPB первого бита кодированных данных, связанных с блоком доступа, связанным с сообщением SEI о периоде буферизации, и временем удаления из CPB кодированных данных, связанных с тем же блоком доступа, для первого периода буферизации после инициализации HRD. Синтаксический элемент имеет длину в битах, задаваемую initial_cpb_removal_delay_length_minus1+1. Оно выражено в единицах тактового генератора 90 кГц. Значение initial_cpb_removal_delay[SchedSelIdx] может не быть равным 0 и может не превышать 90000 * (CpbSize[ SchedSelIdx ]/BitRate[ SchedSelIdx ]), эквивалентно по времени размеру CPB для тактового генератора 90 кГц.
[0058] Значение 'initial_cpb_removal_delay_offset'[SchedSelIdx] используется для SchedSelIdx-ого CPB в комбинации с cpb_removal_delay, чтобы задавать начальное время доставки кодированных блоков доступа в CPB. Значение initial_cpb_removal_delay_offset[SchedSelIdx] выражено в единицах тактового генератора 90 кГц. Синтаксический элемент initial_cpb_removal_delay_offset[SchedSelIdx] является кодом фиксированной длины, длина которого в битах задается согласно initial_cpb_removal_delay_length_minus1+1. Этот синтаксический элемент не используется декодерами и необходим только для планировщика доставки (HSS) (например, как определено в JCTVC-I1003 в Приложении C).
[0059] По всей кодированной видеопоследовательности сумма initial_cpb_removal_delay[SchedSelIdx] и initial_cpb_removal_delay_offset[SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0060] 'initial_du_cpb_removal_delay'[SchedSelIdx] задает задержку SchedSelIdx-ого CPB между временем поступления в CPB первого бита кодированных данных, связанных с первым блоком декодирования в блоке доступа, связанном с сообщением SEI о периоде буферизации, и временем удаления из CPB кодированных данных, связанных с тем же блоком декодирования, для первого периода буферизации после инициализации HRD. Синтаксический элемент имеет длину в битах, задаваемую согласно initial_cpb_removal_delay_length_minus1+1. Она выражена в единицах тактового генератора 90 кГц. Значение initial_du_cpb_removal_delay[SchedSelIdx] может не быть равным 0 и может не превышать 90000 * ( CpbSize[ SchedSelIdx ]/BitRate[ SchedSelIdx ] ), эквивалентно по времени из размеру CPB в единицах тактового генератора 90 кГц.
[0061] Элемент 'initial_du_cpb_removal_delay_offset'[SchedSelIdx] используется для SchedSelIdx-ого CPB в комбинации с cpb_removal_delay, чтобы задавать начальное время доставки блоков декодирования в CPB.
[0062] Значение initial_cpb_removal_delay_offset[SchedSelIdx] выражено в единицах тактового генератора 90 кГц. Синтаксический элемент initial_du_cpb_removal_delay_offset [SchedSelIdx] является кодом фиксированной длины, длина которого в битах дается согласно initial_cpb_removal_delay_length_minus1+1. Этот синтаксический элемент не используется декодерами и необходим только для планировщика доставки (HSS) (например, как определено в Приложении C в JCTVC-I1003).
[0063] По всей кодированной видеопоследовательности сумма initial_du_cpb_removal_delay[SchedSelIdx] и initial_du_cpb_removal_delay_offset [SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0064] Примеры относительно семантики сообщения SEI о синхронизации изображения в соответствии с системами и способами, раскрытыми в описании, даются как изложено ниже. В частности дополнительные подробности относительно семантики модифицированных синтаксических элементов даются, как изложено ниже.
[0065] Синтаксис сообщения SEI о синхронизации изображения зависит от содержимого набора параметров последовательности, который является активным для кодированного изображения, связанного с сообщением SEI о синхронизации изображения. Однако, если только сообщению SEI о синхронизации изображения немедленного обновления декодирования (IDR) блока доступа не предшествует сообщение SEI о периоде буферизации в рамках того же блока доступа, активизация связанного набора параметров последовательности (и, для изображений IDR, которые не являются первым изображением в битовом потоке, определение, что кодированное изображение является изображением IDR) не происходит до декодирования блока уровня сетевой абстракции (NAL) для первого кодированного слайса блока для кодированного изображения. Поскольку блок NAL кодированного слайса кодированного изображения следует за сообщеним SEI о синхронизации изображения по порядку блока NAL, могут иметься случаи, в которых декодеру необходимо сохранять полезную нагрузку необработанной последовательности байтов (RBSP), содержащую сообщение SEI о синхронизации изображения, до определения параметров для параметра последовательности, который будет активным для кодированного изображения, и затем выполнять синтаксический разбор сообщения SEI о синхронизации изображения.
[0066] Присутствие сообщения SEI о синхронизации изображения в битовом потоке задается, как изложено ниже. Если флаг CpbDpbDelaysPresentFlag равен 1, одно сообщение SEI о синхронизации изображения может присутствовать в каждом блоке доступа кодированной видеопоследовательности. Иначе (CpbDpbDelaysPresentFlag равен 0), сообщения SEI о синхронизации изображения не могут присутствовать в каком-либо блоке доступа кодированной видеопоследовательности.
[0067] 'cpb_removal_delay' задает, сколько тактов системных часов (см. подпункт E.2.1 JCTVC-11003) ожидать после удаления из CPB блока доступа, связанного с последним по времени сообщением SEI о периоде буферизации в предшествующем блоке доступа до удаления из буфера соответствующих блоку доступа данных, связанных с сообщением SEI о синхронизации изображения. Это значение также используется для вычисления самого раннего возможного времени поступления данных блока доступа в CPB для HSS, как определено в Приложении C документа JCTVC-I1003. Синтаксический элемент является кодом фиксированной длины, длина которого в битах дается согласно cpb_removal_delay_length_minus1+1. Значение cpb_removal_delay является остатком счетчика по модулю .
[0068] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) синтаксического элемента cpb_removal_delay, является значением cpb_removal_delay_length_minus1, закодированным в наборе параметров последовательности, который является активным для первичного кодированного изображения, связанного с сообщением SEI о синхронизации изображения, хотя cpb_removal_delay задает число тактов системных часов относительно времени удаления предшествующего блока доступа, содержащего сообщение SEI о периоде буферизации, который может быть блоком доступа другой кодированной видеопоследовательности.
[0069] элемент 'dpb_output_delay' используется, чтобы вычислять для изображения время вывода из буфера декодированных изображений (DPB). Он задает, сколько тактов системных часов ожидать после удаления из CPB последнего блока декодирования в блоке доступа прежде, чем декодированное изображение выводится из DPB (см. подпункт C.2 в документе JCTVC-I1003).
[0070] Что касается DPB, изображение не удаляется из DPB в его время вывода, когда оно все еще помечено как "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки". Только один элемент dpb_output_delay задается для декодированного изображения. Длина синтаксического элемента dpb_output_delay дается в битах согласно dpb_output_delay_length_minus1+1. Когда max_dec_pic_buffering[max_temporal_layers_minus1] равно 0, dpb_output_delay может быть равным 0.
[0071] Время вывода, полученное из dpb_output_delay какого-либо изображения, которое является выходом из декодера, соответствующего условиям синхронизации вывода, как определено в подпункте C.2 JCTVC-I1003, может предшествовать времени вывода, полученному из dpb_output_delay, для всех изображений в любой последующей кодированной видеопоследовательности по порядку декодирования. Порядок вывода изображения, установленный согласно значениям этого синтаксического элемента, может быть таким же порядком, как установленный значениями PicOrderCnt(), как задано подпунктом. Для изображений, которые не являются выводимыми процессом "сбрасывания" по подпункту, поскольку по порядку декодирования они предшествуют изображению IDR с no_output_of_prior_pics_flag, равным 1, или подразумевается, что будет равным 1, времена вывода, полученные из dpb_output_delay, могут быть возрастающими по возрастанию значения PicOrderCnt() относительно всех изображений в рамках той же кодированной видеопоследовательности.
[0072] 'num_decoding_units_minus1' плюс 1 задает число блоков декодирования в блоке доступа синхронизация изображения, с которым связано сообщение SEI. Значение num_decoding_units_minus1 может находиться в диапазоне 0 до PicWidthInCtbs * PicHeightInCtbs - 1, включительно.
[0073] Значение 'common_du_cpb_removal_delay_flag', равное 1, указывает, что синтаксический элемент common_du_cpb_removal_delay присутствует.
[0074] Значение 'common_du_cpb_removal_delay_flag', равное 0, указывает, что синтаксический элемент common_du_cpb_removal_delay не присутствует.
[0075] Элемент 'common_du_cpb_removal_delay' задает информацию, как изложено ниже: Если блок декодирования является первым блоком декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения, то common_du_cpb_removal_delay задает, сколько тактов для фрагмента изображения (см. подпункт E.2.1 JCTVC-I1003) ожидать после удаления из CPB последнего блока декодирования в блоке доступа, связанном с последним по времени сообщением SEI о периоде буферизации в предшествующем блоке доступа до удаления из CPB первого блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0076] В противном случае common_du_cpb_removal_delay задает, сколько тактов фрагмента изображения (см. подпункт E.2.1 JCTVC-I1003) ожидать после удаления из CPB предшествующего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения до удаления из CPB текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения. Это значение также используется для вычисления самого раннего возможного времени поступления данных блока декодирования в CPB для HSS, как определено в Приложении C. Синтаксический элемент является кодом фиксированной длины, длина которого в битах задается согласно cpb_removal_delay_length_minus1+1. common_du_cpb_removal_delay является зностатком счетчика по модулю 2(cpb_removal_delay_length_minus1+1).
[0077] Альтернативным способом задания 'common_du_cpb_removal_delay' является следующий.
[0078] Элемент common_du_cpb_removal_delay задает, сколько тактов для фрагмента изображения (см. подпункт E.2.1 JCTVC-I1003) ожидать после удаления из CPB последнего блока декодирования до удаления из CPB текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения. Это значение также используется для вычисления самого раннего возможного времени поступления данных блока декодирования в CPB для HSS, как определено в Приложении C. Синтаксический элемент является кодом фиксированной длины, длина которого в битах задается согласно cpb_removal_delay_length_minus1+1. Значение common_du_cpb_removal_delay - остаток счетчика по модулю 2(cpb_removal_delay_length_minus1+1).
[0079] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) синтаксического элемента common_du_cpb_removal_delay, является значением cpb_removal_delay_length_minus1, закодированным в наборе параметров последовательности, который является активным для кодированного изображения, связанного с сообщением SEI о синхронизации изображения, хотя common_du_cpb_removal_delay задает число тактов для фрагмента изображения относительно времени удаления первого блока декодирования в предшествующем блоке доступа, содержащем сообщение SEI о периоде буферизации, который может быть блоком доступа для другой кодированной видео последовательности.
[0080] 'num_nalus_in_du_minus1[i]' плюс 1 задает число блоков NAL в i-ом блоке декодирования в блоке доступа, с которым связано сообщение SEI о синхронизации изображения. Значение num_nalus_in_du_minus1[i] может находиться в диапазоне от 0 до PicWidthInCtbs * PicHeightInCtbs - 1, включительно.
[0081] Первый блок декодирования блока доступа состоит из первых num_nalus_in_du_minus1[0]+1 последовательных блоков NAL по порядку декодирования в блоке доступа. i-ый (при i больше чем 0) блок декодирования в блоке доступа состоит из num_nalus_in_du_minus1[i]+1 последовательных блоков NAL, следующих непосредственно после последнего блока NAL в предшествующем блоке декодирования в блоке доступа, по порядку декодирования. Может быть, по меньшей мере, один блок NAL VCL в каждом блоке декодирования. Все блоки NAL не-VCL, связанные с блоком NAL VCL, могут быть включены в тот же блок декодирования.
[0082] 'du_cpb_removal_delay[i]' задает, сколько тактов для фрагмента изображения (см. подпункт E.2.1 JCTVC-I1003) ожидать после удаления из CPB первого блока декодирования в блоке доступа, связанном с последним по времени сообщением SEI о периоде буферизации в предшествующем блоке доступа, до удаления из CPB i-ого блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения. Это значение также используется для вычисления самого раннего возможного времени поступления данных блока декодирования в CPB для HSS (например, как определено в Приложении C в JCTVC-I1003). Синтаксический элемент является кодом фиксированной длины, длина которого в битах задают согласно cpb_removal_delay_length_minus1+1. du_cpb_removal_delay[i] является значением остатка счетчика по модулю 2(cpb_removal_delay_length_minus1+1).
[0083] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) синтаксического элемента du_cpb_removal_delay[i] является значением cpb_removal_delay_length_minus1, закодированным в наборе параметров последовательности, который является активным для кодированного изображения, связанного с сообщением SEI о синхронизации изображения, хотя du_cpb_removal_delay[i] задает число тактов для фрагмента изображения относительно времени удаления первого блока декодирования в предшествующем блоке доступа, содержащем сообщение SEI о периоде буферизации, которое может быть блоком доступа для другой кодированной видеопоследовательности.
[0084] В одной конфигурации синхронизация удаления блока декодирования и декодирования блоков декодирования может быть реализована, как изложено ниже.
[0084] Если SubPicCpbFlag равен 0, переменная CpbRemovalDelay(m) устанавливается в значение cpb_removal_delay в сообщении SEI о синхронизации изображения, связанном с блоком доступа, то есть, блоке m декодирования, и переменная Tc устанавливается в tc. Иначе, если SubPicCpbFlag равен 1, и common_du_cpb_removal_delay_flag есть 0, переменная CpbRemovalDelay(m) устанавливается в значение du_cpb_removal_delay[i] для блока m декодирования (при m, изменяющемся от 0 до num_decoding_units_minus1) в сообщении SEI о синхронизации изображения, связанном с блоком доступа, который содержит блок m декодирования, и переменная Tc устанавливается в tc_sub.
[0086] В некоторых случаях, иначе если SubPicCpbFlag равен 1, и common_du_cpb_removal_delay_flag есть 0, переменная CpbRemovalDelay(m) устанавливается в значение (m+1)*du_cpb_removal_delay[i] для блока m декодирования (при m, изменяющемся от 0 до num_decoding_units_minus1) в сообщении SEI о синхронизации изображения, связанном с блоком доступа, который содержит блок m декодирования, и переменная Tc устанавливается в tc_sub.
[0087] Иначе, если SubPicCpbFlag равен 1, и common_du_cpb_removal_delay_flag есть 1, переменная CpbRemovalDelay(m) устанавливается в значение common_du_cpb_removal_delay для блока m декодирования в сообщении SEI о синхронизации изображения, связанном с блоком доступа, который содержит блок m декодирования, и переменная Tc устанавливается в tc_sub.
[0088] Когда блок m декодирования является блоком декодирования с n, равным 0 (первый блок декодирования в блоке доступа, который инициализирует HRD), номинальное время удаления блока декодирования из CPB задают согласно tr,n(0)=InitCpbRemovalDelay[SchedSelIdx]/90000.
[0089] Когда блок m декодирования является первым блоком декодирования первого блока доступа для периода буферизации, который не инициализирует HRD, номинальное время удаления блока декодирования из CPB задается согласно tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m), где tr,n (mb) - номинальное время удаления первого блока декодирования для предшествующего периода буферизации.
[0090] Когда блок m декодирования является первым блоком декодирования в периоде буферизации, mb устанавливают равным m во время удаления tr,n(m) блока m декодирования. Номинальное время удаления tr,n(m) блока m декодирования, который не является первым блоком декодирования в периоде буферизации, имеет вид tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m), где tr,n(mb) - номинальное время удаления первого блока декодирования для текущего периода буферизации.
[0091] Время удаления блока m декодирования задается, как изложено ниже. Если low_delay_hrd_flag равен 0 или tr,n(m)>=taf(m), время удаления блока m декодирования tr,n задают согласно tr(m)=tr,n(m). Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)), время удаления блока m декодирования задают согласно tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc). Последний случай (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) указывает, что размер блока m декодирования, b(m), является настолько большим, что препятствует удалению в номинальное время удаления.
[0092] В другом случае время удаления блока m декодирования задается, как изложено ниже. Если low_delay_hrd_flag равен 0 или tr,n(m)>=taf(m), время удаления блока m декодирования tr,n задают согласно tr(m)=tr,n(m). Иначе (low_delay_hrd_flag равен 1, и tr,n(m)<taf(m)), время удаления блока m декодирования, который не является последним блоком декодирования в блоке доступа, задают согласно tr(m)=taf(m), и время удаления блока m декодирования, который является последним блоком декодирования в блоке доступа tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/tc). Последний случай (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) указывает, что размер блока m декодирования, b(m), является настолько большим, что это препятствует удалению в номинальное время удаления.
[0093] В другом случае время удаления блока m декодирования задается, как изложено ниже. Если low_delay_hrd_flag равен 0 или tr,n(m)>=taf(m), время удаления блока m декодирования задают согласно tr(m)=tr,n(m). Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)), время удаления блока m декодирования, который не является последним блоком декодирования в блоке доступа, задают согласно tr(m)=taf(m), и время удаления блока m декодирования, который является последним блоком декодирования в блоке доступа tr(m)=tr,n(m)+tc*Ceil((taf(m)-tr,n(m))/tc). Последний случай (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) указывает, что размер блока m декодирования, b(m), является настолько большим, что это препятствует удалению в номинальное время удаления.
[0094] В другом случае время удаления блока m декодирования задается, как изложено ниже. Если low_delay_hrd_flag равен 0 или tr,n(m)>=taf(m), время удаления блока m декодирования задают согласно tr(m)=tr,n(m). Иначе (low_delay_hrd_flag равен 1, и tr,n(m)<taf(m)), время удаления блока m декодирования задают согласно tr(m)=taf(m). Последний случай (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) указывает, что размер блока m декодирования, b(m), является настолько большим, что это препятствует удалению в номинальное время удаления.
[0095] Когда SubPicCpbFlag равен 1, номинальное время удаления из CPB блока n доступа tr,n(n) устанавливается в номинальное время удаления из CPB последнего блока декодирования в блоке n доступа, время удаления из CPB блока n доступа tr(n) устанавливается в значение времени удаления из CPB последнего блока декодирования в блоке n доступа.
[0096] Когда SubPicCpbFlag равен 0, каждый блок декодирования является блоком доступа, следовательно номинальное время удаления в CPB и время удаления в CPB для блока n доступа являются номинальным временем удаления в CPB и временем удаления в CPB для блока n декодирования.
[0097] В момент времени удаления в CPB блока m декодирования, блок декодирования декодируют немедленно.
[0098] Другой пример модифицированного синтаксиса и семантики для сообщения SEI о синхронизации изображения в соответствии с системами и способами, раскрытыми в описании, дается в Таблице (2), как изложено ниже. Модификации в соответствии с системами и способами, раскрытыми в описании, обозначены полужирным шрифтом.
[0099] [Таблица 2]
[0100] Иллюстрируемый в Таблице (2) пример включает в себя синтаксический элемент common_num_nalus_in_du_minus1, который может использоваться, чтобы определять, сколько данных следует удалять из CPB при удалении блока декодирования. 'common_num_nalus_in_du_minus1 плюс 1 задает число блоков NAL в каждом блоке декодирования в блоке доступа, с которым связано сообщение SEI о синхронизации изображения. Значение common_num_nalus_in_du_minus1 может находиться в диапазоне от 0 до PicWidthInCtbs * PicHeightInCtbs - 1, включительно.
[0101] Первый блок декодирования в блоке доступа состоит из первых common_num_nalus_in_du_minus1+1 последовательных блоков NAL по порядку декодирования в блоке доступа. i-ый (при i больше чем 0) блок декодирования в блоке доступа состоит из common_num_nalus_in_du_minus1+1 последовательных блоков NAL, следующих непосредственно после последнего блока NAL в предшествующем блоке декодирования блока доступа, по порядку декодирования. Может быть, по меньшей мере, один блок NAL VCL в каждом блоке декодирования. Все блоки NAL не-VCL, связанные с блоком NAL VCL, могут быть включены в один и тот же блок декодирования.
[0102] Другой пример модифицированного синтаксиса и семантики для сообщения SEI о синхронизации изображения в соответствии с системами и способами, раскрытыми в описании, дается в Таблице (3), как изложено ниже. Модификации в соответствии с системами и способами, раскрытыми в описании, обозначены полужирным шрифтом.
[0103] [Таблица 3]
[0104] Иллюстрируемый пример в Таблице (3) включает в себя синтаксический элемент, common_num_nalus_in_du_flag, который, если равен 1, задает, что синтаксический элемент 'common_num_nalus_in_du_minus1' присутствует. 'common_num_nalus_in_du_flag', равный 0, указывает, что синтаксический элемент 'common_num_nalus_in_du_minus1 не присутствует.
[0105] В еще одном варианте осуществления флаги common_du_cpb_removal_delay_flag, common_num_nalus_in_du_minus1 можно не посылать. Вместо этого синтаксические элементы common_num_nalus_in_du_minus1 и common_du_cpb_removal_delay могут посылаться всякий раз. В этом случае значение 0 (или некоторое другое) для этих синтаксических элементов может использоваться для указания, что эти элементы не сигнализируют.
[0106] В дополнение к модификациям синтаксических элементов и семантики сообщения SEI о синхронизации изображения, настоящие системы и способы также могут реализовывать ограничение битового потока с тем, что работа CPB на основе фрагмента изображения и работа CPB на уровне блока доступа приводят к такой же временной привязки удаления блока декодирования.
[0107] Когда 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.
[0108] Для поддержки работы и на уровне блока доступа, и уровне фрагмента изображения, могут использоваться следующие ограничения битового потока: Если sub_pic_cpb_params_present_flag есть 1, то требованием соответствия битового потока является, что последующему ограничению подчиняются при сигнализации значений для cpb_removal_delay и du_cpb_removal_delay[i] для всех i:
[0109] [Математическое выражение 3]
[0110] где du_cpb_removal_delay[i] - параметры задержки удаления в CPB блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу, и i - индекс. В некоторых вариантах осуществления может быть добавлен параметр допуска, чтобы удовлетворять вышеуказанному ограничению.
[0111] Для поддержки работы и на уровне блока доступа, и уровне фрагмента изображения, могут использоваться ограничения битового потока, как изложено ниже: пусть переменная Tdu(k) будет определена в виде:
[0112] [Математическое выражение 4]
[0113] где du_cpb_removal_delay_minus1k[i] и num_decoding_units_minus1k - параметры для i-ого блока декодирования k-ого блока доступа (при k=0 для блока доступа, который инициализировал HRD, и Tdu(k)=0 для k<l), и где du_cpb_removal_delay_minus1k[i]+l=du_cpb_removal_delay_minus1k[i] - параметр задержки удаления в CPB блока декодирования для I-ого блока декодирования k-ого блока доступа, и num_decoding_units_minus1k - число блоков декодирования в k-ом блоке доступа, tc - такт системных часов, tc,sub - такт для фрагмента изображения, и i и k - индексы. Затем, когда флаг синхронизации изображения (например, sub_pic_cpb_params_present_flag) установлен в 1, следующее ограничение должно быть истиной: (au_cpb_removal_delay_minus1+1)*tc == Tdu(k), где (au_cpb_removal_delay_minus1+1) == cpb_removal_delay, задержка удаления из CPB. Таким образом в этом случае задержка удаления CPB (au_cpb_removal_delay_minus1+1) установлена с тем, что работа CPB на основе фрагмента изображения, и работа CPB на основе блока доступа приводят к одинаковой синхронизации удаления блока доступа и удаления последнего блока декодирования для блока доступа.
[0114] Для поддержки работы и на уровне блока доступа, и уровне фрагмента изображения, могут использоваться следующие ограничения битового потока: Если sub_pic_cpb_params_present_flag есть 1, то требование соответствия битового потока состоит в том, что последующему ограничению подчиняются при сигнализации значений для cpb_removal_delay и du_cpb_removal_delay[i] для всех i:
[0115] [Математическое выражение 5]
[0116] где du_cpb_removal_delay[i] - параметры задержки удаления из CPB блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу, и i - индекс.
[0117] Чтобы поддержать работу и на уровне блока доступа, и уровне фрагмента изображения, могут использоваться следующие ограничения битового потока: если sub_pic_cpb_params_present_flag есть 1, то требование соответствия битового потока состоит в том, что последующему ограничению подчиняются при сигнализации значений для cpb_removal_delay и du_cpb_removal_delay[num_decoding_units_minus1]: cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]* tc,sub, где du_cpb_removal_delay[num_decoding_units_minus1] - параметр задержки удаления в CPB блока декодирования для num_decoding_units_minus1-ого блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу. В некоторых вариантах осуществления может быть добавлен параметр допуска, чтобы удовлетворять вышеуказанному ограничению.
[0118] Чтобы поддержать работу и на уровне блока доступа, и уровне фрагмента изображения, могут использоваться следующие ограничения битового потока: Если sub_pic_cpb_params_present_flag есть 1, то требование соответствия битового потока ограничению состоит в том, что последующему ограничению подчиняются при сигнализации значений для cpb_removal_delay и du_cpb_removal_delay[i] для всех i: -1<=(cpb_removal_delay*tc - du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)<=1, где du_cpb_removal_delay[num_decoding_units_minus1] - параметр задержки удаления в CPB блока декодирования для num_decoding_units_minus1-ого блока декодирования, tc - такт системных часов, tc,sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу.
[0119] Кроме того, настоящие системы и способы могут модифицировать синхронизацию удаления блока декодирования. Когда присутствуют параметры задержки удаления из CPB на уровне фрагмента изображения, время удаления блока декодирования для "больших картинок" (когда low_delay_hrd_flag есть 1, и tr,n(m)<taf(m)) можно изменить на, чтобы компенсировать разность, которая может возникать из-за счетчика тактов системных часов и счетчика тактов для фрагмента изображения.
[0120] Когда 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.
[0121] Конкретно, одним примером реализации синхронизации удаления блока декодирования и декодирования блока декодирования является изложенный ниже. Переменная SubPicCpbPreferredFlag либо задается внешним средством, либо если не задается внешним средством, установлена в 0. Переменную SubPicCpbFlag получают, как изложено ниже: SubPicCpbFlag=SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag. Если SubPicCpbFlag равен 0, CPB работает на уровне блока доступа, и каждый блок декодирования является блоком доступа. Иначе CPB работает на уровне фрагмента изображения, и каждый блок декодирования является подмножеством блока доступа.
[0122] Если SubPicCpbFlag равен 0, переменная CpbRemovalDelay(m) устанавливается в значение cpb_removal_delay в сообщении SEI о синхронизации изображения, связанном с блоком доступа, который является блоком m декодирования, и переменная Tc устанавливается в tc. Иначе переменная CpbRemovalDelay(m) устанавливается в значение du_cpb_removal_delay[i] для блока m декодирования в сообщении SEI о синхронизации изображения, связанном с блоком доступа, который содержит блок m декодирования, и переменная Tc устанавливается в tc_sub.
[0123] Когда блок m декодирования является блоком декодирования с n, равным 0 (первый блок декодирования в блоке доступа, который инициализирует HRD), номинальное время удаления блока декодирования из CPB задается согласно tr,n(0)=InitCpbRemovalDelay[SchedSelIdx]/90000.
[0124] Когда блок m декодирования является первым блоком декодирования в первом блоке доступа для периода буферизации, который не инициализирует HRD, номинальное время удаления блока декодирования из CPB задается согласно tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m), где tr,n(mb) - номинальное время удаления первого блока декодирования для предшествующего периода буферизации.
[0125] Когда блок m декодирования является первым блоком декодирования в периоде буферизации, mb устанавливают равным m во время удаления tr,n(m) блока m декодирования.
[0126] Номинальное время tr,n(m) удаления блока m декодирования, который не является первым блоком декодирования в периоде буферизации, дается согласно tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m), где tr,n(mb) - номинальное время удаления первого блока декодирования для текущего периода буферизации.
[0127] Время удаления блока m декодирования задается, как изложено ниже. Переменная ClockDiff определена как ClockDiff=(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale). В некотором случае может иметься требование соответствия битового потока, что параметры num_units_in_tick, num_units_in_sub_tick, num_decoding_units_minus1 сигнализируют так, что удовлетворяется следующее уравнение
(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1)))>=0
[0128] В некотором другом случае может иметься требование соответствия битового потока, что параметры num_units_in_tick, num_units_in_sub_tick, num_decoding_units_minus1 могут сигнализироваться так, что удовлетворяется следующее уравнение (num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1)))<=0 Если low_delay_hrd_flag равен 0 или tr,n(m)>=taf(m), время удаления блока m декодирования задается согласно tr(m)=tr,n(m).
[0129] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)), и когда sub_pic_cpb_params_present_flag равен 1, и CPB оперирует на уровне фрагмента изображения, и если ClockDiff больше чем нуль, время удаления для блока m декодирования, когда он является последним блоком декодирования блока n доступа, задается согласно tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc)+ClockDiff.
[0130] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)), и когда sub_pic_cpb_params_present_flag равен 1, и CPB работает на уровне блока доступа, и если ClockDiff меньше чем нуль, время удаления блока n доступа задается согласно tr(m)=tr,n(m)+tc*Ceil((taf(m) - tr,n(m))/tc) - ClockDiff.
[0131] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)), время удаления блока m декодирования задают согласно tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc). Последний случай (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) означает, что размер блока m декодирования, b(m), является большим настолько, что это препятствует удалению в номинальное время удаления.
[0132] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) и когда флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) задается согласно: tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0133] Иначе (low_delay_hrd_flag равен 1 и tr,n(n)<taf(n)) и когда флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задается согласно: tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0134] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) задается согласно: tr(m)=tr,n(m)+(tc*Ceil((n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0135] Иначе (low_delay_hrd_flag равен 1 и tr,n(n)<taf(n)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задается согласно: tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0136] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования, который не является последним блоком декодирования в блоке доступа, установлено как tr(m)=taf(m), где taf(m) является конечным временем поступления блока m декодирования и время удаления последнего блока m декодирования в блоке доступа, tr(m) устанавливается согласно: tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n)- номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления последнего блока m декодирования в блоке n доступа.
[0137] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования, который не является последним блоком декодирования для блока доступа, устанавливается как tr(m)=taf(m), где taf(m) - конечное время поступления блока m декодирования и время удаления последнего блока m декодирования в блоке доступа, tr(m) устанавливается согласно: tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления последнего блока m декодирования в блоке n доступа.
[0138] Иначе (low_delay_hrd_flag равен 1 и tr,n(m)<taf(m)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования устанавливается как tr(m)=taf(m), где tr,n(m) - номинальное время удаления блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления блока m декодирования, tr,n(n)- номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления блока m декодирования в блоке n доступа.
[0139] Иначе (low_delay_hrd_flag равен 1, и tr,n(n)<taf(n)) и флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задается согласно: tr(n)=taf(n), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0140] Когда SubPicCpbFlag равен 1, номинальное время удаления в CPB блока n доступа, tr,n(n), устанавливают в номинальное время удаления в CPB последнего блока декодирования в блоке n доступа, время удаления в CPB блока n доступа tr(n) устанавливают на время удаления в CPB последнего блока декодирования в блоке n доступа.
[0141] Когда SubPicCpbFlag равен 0, каждый блок декодирования является блоком доступа, следовательно, номинальное время удаления из CPB и время удаления из CPB для блока n доступа являются номинальным временем удаления из CPB и временем удаления из CPB для блока n декодирования. В момент времени удаления CPB блока m декодирования блок декодирования немедленно декодируют.
[0142] Как проиллюстрировано предшествующим, системы и способы, раскрытые в описании, предусматривают синтаксис и семантику, которые модифицируют битовые потоки сообщения SEI синхронизации изображения, несущие параметры на основе фрагмента изображения. В некоторых конфигурациях системы и способы, раскрытые в описании, могут применяться к спецификациям стандарта Высокоэффективного кодирования видеоизображений (HEVC).
[0143] Для удобства несколько определений имеют вид, как изложено ниже, которые могут применяться к системам и способам, раскрытым в описании. Точка произвольного доступа может быть любой точкой в потоке данных (например, битовом потоке), где декодирование битового потока не требует доступа к какой-либо точке в битовом потоке, предшествующей точке произвольного доступа, чтобы декодировать текущее изображение и все изображения, последующие за упомянутым текущим изображением по порядку вывода.
[0144] Период буферизации может быть определен как набор блоков доступа между двумя экземплярами сообщения SEI о периоде буферизации в порядке декодирования. Дополнительная расширенная информация (SEI) может содержать информацию, которая не является необходимой, чтобы декодировать выборки кодированных изображений из блоков NAL VCL. Сообщения SEI могут помогать в процедурах, связанных с декодированием, отображением или другими назначениями. Удовлетворяющие техническим условиям декодеры могут не требоваться для обработки этой информации для соответствия очередности вывода спецификациям HEVC (Приложение C спецификаций HEVC (JCTVC-I1003) включает в себя спецификации для соответствия, например). Некоторая информация сообщения SEI может использоваться, чтобы проверять соответствие битового потока и для соответствия декодера синхронизации вывода.
[0145] Сообщение SEI о периоде буферизации может быть сообщением SEI, связанным с периодом буферизации. Сообщение SEI о синхронизации изображения может быть сообщением SEI, связанным с синхронизацией удаления в CPB. Эти сообщения могут определять синтаксис и семантику, которые задают синхронизацию поступления битового потока и синхронизацию удаления кодированного изображения.
[0146] Буфер кодированных изображений (CPB) может быть буфером обратного магазинного типа ("первым пришел - первым обслужен"), содержащим блоки доступа по порядку декодирования, заданному в гипотетическом эталонном декодере (HRD). Блок доступа может быть набором блоков уровня сетевой абстракции (NAL), которые являются последовательными по порядку декодирования и содержат точно одно кодированное изображение. В дополнение к блокам NAL кодированных слайсов в кодированном изображении блок доступа может также содержать другие блоки NAL, не содержащие слайсы кодированного изображения. Декодирование блока доступа всегда имеет в результате декодированное изображение. Блок NAL может быть синтаксической структурой, содержащей индикатор типа данных, которому следовать, и байты, содержащие эти данные в форме полезной нагрузки необработанной последовательности байтов, с вставленными по необходимости байтами предотвращения эмуляции.
[0147] Как используется в описании, термин "общий" обычно относится к синтаксическому элементу или переменной, которая применима более, чем к одной сущности. Например, в контексте синтаксических элементов в сообщении SEI о синхронизации изображения термин "общий" может означать, что синтаксический элемент (например, common_du_cpb_removal_delay) является применимым ко всем блокам декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения. Кроме того, блоки данных, которые описываются в терминах "n" и "m", обычно относятся к блокам доступа и блокам декодирования, соответственно.
[0148] Различные конфигурации теперь описываются со ссылкой на фигуры чертежей, где одинаковые числовые ссылочные позиции могут указывать функционально подобные элементы. Системы и способы, как в общем описано и проиллюстрировано на фигурах чертежей в описании, могут быть скомпонованы и спроектированы в большом разнообразии различных конфигураций. Таким образом, последующее более подробное описание нескольких конфигураций, как представлено на фигурах чертежей, не предназначено ограничивать объем, как заявлено в формуле, а просто представляет системы и способы.
[0149] Фигура фиг.1A - блок-схема, иллюстрирующая пример одного или большего количества электронных устройств 102, в которых могут быть реализованы системы и способы для посылки сообщения и буферизации битового потока. В этом примере проиллюстрированы электронное устройство A 102a и электронное устройство B 102b. Однако, следует отметить, что одно или несколько из признаков и функциональности, описанных в отношении электронного устройства A 102a и электронного устройства B 102b, могут быть объединены в единое электронное устройство в некоторых конфигурациях.
[0150] Электронное устройство A 102a включает в себя кодер 104. Кодер 104 включает в себя блок 108 формирования сообщений. Каждый из компонентов, включенных в электронное устройство A 102a (например, кодер 104 и блок 108 формирования сообщений), может быть реализован в аппаратных средствах, программном обеспечении или их комбинации.
[0151] Электронное устройство A 102a может получать один или несколько входных изображений 106. В некоторых конфигурациях входное изображение(я) 106 может быть получено записью на электронном устройстве A 102a с использованием датчика ввода изображения, может быть извлечено из памяти и/или может быть принято от другого электронного устройства.
[0152] Кодер 104 может кодировать входное изображение(я) 106, чтобы создавать кодированные данные. Например, кодер 104 может кодировать серию входных изображений 106 (например, видео). В одной конфигурации кодер 104 может быть кодером HEVC. Кодированные данные могут быть цифровыми данными (например, частью битового потока 114). Кодер 104 может формировать служебную сигнализацию на основании входного сигнала.
[0153] Блок 108 формирования сообщений может формировать одно или большее число сообщений. Например, блок 108 формирования сообщений может формировать одно или несколько сообщений SEI или другие сообщения. Относительно CPB, который поддерживает работу на уровне фрагмента изображения, электронное устройство 102 может посылать параметры фрагмента изображения, (например, параметр задержки удаления в CPB). Конкретно, электронное устройство 102 (например, кодер 104) может определять, включать ли общий параметр задержки удаления в CPB блока декодирования в сообщение SEI о синхронизации изображения. Например, электронное устройство может установить флаг (например, common_du_cpb_removal_delay_flag) в единицу, когда кодер 104 включает общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay) в сообщение SEI о синхронизации изображения. Когда включен общий параметр задержки удаления в CPB блока декодирования, электронное устройство может формировать общий параметр задержки удаления в CPB блока декодирования, который является применимым ко всем блокам декодирования в блоке доступа. Другими словами, вместо включения параметра задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа, общий параметр можно применять ко всем блокам декодирования в блоке доступа, с которым связано сообщение SEI о синхронизации изображения.
[0154] Напротив, когда общий параметр задержки удаления в CPB блока декодирования не подлежит включению в сообщение SEI о синхронизации изображения, электронное устройство 102 может формировать отдельную задержку удаления CPB блока декодирования для каждого блока декодирования в блоке доступа, с которым связано сообщение SEI о синхронизации изображения. Блок 108 формирования сообщений может выполнять одну или большее число процедур, описанных в связи с фиг.2 и фиг.3 ниже.
[0155] В некоторых конфигурациях электронное устройство A 102a может посылать сообщение на электронное устройство B 102b в виде части битового потока 114. В некоторых конфигурациях электронное устройство A 102a может посылать сообщение на электронное устройство B 102b отдельной передачей 110. Например, отдельная передача может не являться частью битового потока 114. Например, сообщение SEI о синхронизации изображения или другое сообщение можно посылать с использованием некоторого внеполосного механизма. Следует отметить, что в некоторых конфигурациях другое сообщение может включать в себя одну или несколько характеристик сообщения SEI о синхронизации изображения, описанного выше. Кроме того, другое сообщение, в одном или нескольких аспектах, может использоваться аналогично сообщению SEI, описанному выше.
[0156] Кодер 104 (и модуль 108 формирования сообщений, например) может создавать битовый поток 114. Битовый поток 114 может включать данные кодированного изображения на основе входного изображения(ий) 106. В некоторых конфигурациях битовый поток 114 может также включать служебные данные, такие как сообщение SEI о синхронизации изображения или другое сообщение, заголовок(и) слайса(ов), набор(ы) параметров изображения (PPS) и т.д. Поскольку дополнительные входные изображения 106 кодированы, битовый поток 114 может включать в себя одно или несколько кодированных изображений. Например, битовый поток 114 может включать одно или несколько кодированных изображений с соответствующими служебными данными (например, сообщение SEI о синхронизации изображения или другое сообщение).
[0157] Битовый поток 114 может предоставляться на декодер 112. В одном примере битовый поток 114 может передаваться на электронное устройство B 102b с использованием проводной или беспроводной линии связи. В некоторых случаях, это может делаться по сети, такой как сеть Интернет или Локальная сеть (LAN). Как проиллюстрировано на фиг.1A, декодер 112 может быть реализован на электронном устройстве B 102b отдельно от кодера 104 на электронном устройстве A 102a. Однако, следует отметить, что кодер 104 и декодер 112 могут быть реализованы на том же электронном устройстве в некоторых конфигурациях. В исполнении, где кодер 104 и декодер 112 реализованы на том же электронном устройстве, например, битовый поток 114 может предоставляться по шине на декодер 112 или сохраняться в памяти для извлечения декодером 112.
[0158] Декодер 112 может быть реализован в аппаратных средствах, программном обеспечении или их комбинации. В одной конфигурации декодер 112 может быть декодером HEVC. Декодер 112 может принимать (например, получать), битовый поток 114. Декодер 112 может формировать одно или большее число декодированных изображений 118 на основании битового потока 114. Декодированное изображение(я) 118 может быть выведено на экран, воспроизведено, сохранено в памяти и/или передано на другое устройство и т.д.
[0159] Декодер 112 может включать в себя CPB 120. CPB 120 может временно сохранять кодированные изображения. CPB 120 может использовать параметры, обнаруженные в сообщении SEI о синхронизации изображения, чтобы определить, когда удалять данные. Когда CPB 120 поддерживает работу на уровне фрагмента изображения, могут удаляться отдельные блоки декодирования, а не все блоки доступа одновременно. Декодер 112 может включать в себя буфер 122 декодированных изображений (DPB). Каждое декодированное изображение помещают в DPB 122 для обращения к нему процесса декодирования, а также для вывода и обрезки. Декодированное изображение удаляется из DPB позднее времени вывода DPB или времени, когда оно более не является необходимым для ссылки в межкадровом предсказании.
[0160] Декодер 112 может принимать сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение). Декодер 112 может также определять, включает ли принятое сообщение общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay). Оно может включать идентификацию флага (например, common_du_cpb_removal_delay_flag), который устанавливается, когда общий параметр присутствует в сообщении SEI о синхронизации изображения. Если общий параметр присутствует, декодер 112 может определять общий параметр задержки удаления в CPB блока декодирования, применимый ко всем блокам декодирования в блоке доступа. Если общий параметр не присутствует, декодер 112 может определять отдельный параметр задержки удаления в CPB блока декодирования для каждого блока декодирования в блоке доступа. Декодер 112 может также удалять блоки декодирования из CPB 120, используя или общий параметр задержки удаления в CPB блока декодирования, или отдельные параметры задержки удаления в CPB блока декодирования. CPB 120 может выполнять одну или большее число процедур, описанных в связи с фиг.4 и фиг.5 ниже.
[0161] HRD, описанный выше, может быть одним примером декодера 112, иллюстрируемого на фиг.1A. Таким образом, электронное устройство 102 может работать в соответствии с HRD и CPB 120 и DPB 122, описанным выше, в некоторых конфигурациях.
[0162] Следует отметить, что один или несколько элементов или частей такового, включенных в электронное устройство(а) 102, может быть реализовано аппаратно. Например, один или несколько этих элементов или частей такового могут быть реализованы в виде микросхемы, компонентов схем или аппаратных средств и т.д. Следует также отметить, что одна или несколько функций или способов, описанных здесь, могут реализовываться в аппаратных средствах и/или выполняться с их использованием. Например, один или несколько способов, описанных здесь, могут быть осуществлены в рамках и/или реализованы с использованием микропроцессорного набора, специализированной интегральной схемы (ASIC), большой интегральной микросхемы (LSI) или интегральной схемы, и т.д.
[0163] Фигура фиг.1B - блок-схема, иллюстрирующая другой пример кодера 1908 и декодера 1972. В этом примере иллюстрируются электронное устройство A 1902 и электронное устройство B 1970. Однако следует отметить, что признаки и функциональность, описанные в отношении электронного устройства A 1902 и электронного устройства B 1970, могут быть объединены в единое электронное устройство в некоторых конфигурациях.
[0164] Электронное устройство A 1902 включает в себя кодер 1908. Кодер 1908 может включать в себя кодер 1910 базового уровня и кодер 1920 уровня улучшения. Кодер 1908 видео является подходящим для масштабируемого кодирования видео и кодирования многовидового (многоаспектного) видео, как описано далее. Кодер 1908 может быть реализован в виде аппаратных средств, программного обеспечения или их комбинации. В одной конфигурации кодер 1908 может быть кодером высокоэффективного кодирования видеоизображений (HEVC), включая масштабируемое и/или многовидовое. Другие кодеры могут использоваться подобным образом. Электронное устройство A 1902 может получать исходное видео 1906. В некоторых конфигурациях исходное видео 1906 может быть получено записью на электронном устройстве A 1902 с использованием датчика ввода изображения, извлечено из памяти или принято от другого электронного устройства.
[0165] Кодер 1908 может кодировать исходное видео 1906, чтобы создать битовый поток 1934 базового уровня и битовый поток 1936 уровня улучшения. Например, кодер 1908 может кодировать серию изображений (например, видео) в исходном видео 1906. В частности для масштабируемого кодирования видео для масштабируемости SNR, также известной как масштабируемость качества, то же исходное видео 1906 может предоставляться на кодер базового уровня и уровня улучшения. В частности для масштабируемого кодирования видео для пространственной масштабируемости может использоваться субдискретизированное исходное видео для кодера базового уровня. В частности для многовидового кодирования исходное видео другого представления может использоваться для кодера базового уровня и кодера уровня улучшения. Кодер 1908 может быть подобным кодеру 1782, описанному далее в связи с фиг.6B.
[0166] Битовые потоки 1934, 1936 могут включать в себя данные кодированного изображения на основе исходного видео 1906. В некоторых конфигурациях битовые потоки 1934, 1936 могут также включать в себя служебные данные, такие как информация о заголовке слайса, информация PPS и т.д. Поскольку дополнительные изображения в исходном видео 1906 кодированы, битовые потоки 1934, 1936 могут включать в себя одно или несколько кодированных изображений.
[0167] Битовые потоки 1934, 1936 могут предоставляться на декодер 1972. Декодер 1972 может включать в себя декодер 1980 базового уровня и декодер 1990 уровня улучшения. Видеодекодер 1972 является подходящим для масштабируемого декодирования видео и многовидового декодирования видео. В одном примере битовые потоки 1934, 1936 могут передаваться на электронное устройство B 1970 с использованием проводной или беспроводной линии связи. В некоторых случаях это может делаться по сети, такой как сеть Интернет или Локальная сеть (LAN). Как проиллюстрировано на фиг.1B, декодер 1972 может быть реализован на электронном устройстве B 1970 отдельно от кодера 1908 на электронном устройстве A 1902. Однако следует отметить, что в некоторых конфигурациях кодер 1908 и декодер 1972 могут быть реализованы на том же электронном устройстве. В исполнении, где кодер 1908 и декодер 1972 реализованы на том же электронном устройстве, например, битовые потоки 1934, 1936 могут предоставляться по шине на декодер 1972 или сохраняться в памяти для извлечения декодером 1972. Декодер 1972 может обеспечивать изображение(я) декодированного базового уровня 1992 и декодированного уровня 1994 улучшения в качестве выхода.
[0168] Декодер 1972 может быть осуществлен в виде аппаратных средств, программного обеспечения или их комбинации. В одной конфигурации декодер 1972 может быть декодером высокоэффективного кодирования видеоизображений (HEVC), включая масштабируемое и/или многовидовое. Другие декодеры могут использоваться подобным образом. Декодер 1972 может быть подобным декодеру 1812, описанному далее в связи с фиг.7B. Кроме того, кодер базового уровня и/или кодер уровня улучшения могут каждый включать в себя модуль формирования сообщений, такой как описан в отношении фиг.1A. Кроме того, декодер базового уровня и/или декодер уровня улучшения могут включать в себя буфер кодированных изображений и/или буфер декодированных изображений, например, как это описано в отношении фиг.1A. Кроме того, электронные устройства по фиг.1B могут работать в соответствии с функциями электронных устройств по фиг.1A, в зависимости от условий.
[0169] Фигура фиг.2 схема последовательности операций, иллюстрирующая одну конфигурацию способа 200 для посылки сообщения. Способ 200 может выполняться кодером 104 или одной из его подсистем (например, блоком 108 формирования сообщений). Кодер 104 может определять 202 флаг синхронизации изображения (например, sub_pic_cpb_params_present_flag), который указывает, поддерживает ли CPB 120 работу на уровне фрагмента изображения. Например, когда флаг синхронизации изображения установлен в 1, CPB 120 может работать на уровне блока доступа или уровне фрагмента изображения. Следует отметить, что, даже когда флаг синхронизации изображения установлен в 1, принятие решение, работать ли фактически на уровне фрагмента изображения, оставляют самому декодеру 112.
[0170] Кодер 104 может также определять 204 одну или большее число задержек удаления для блоков декодирования в блоке доступа. Например, кодер 104 может определять одиночный общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay), который является применимым ко всем блокам декодирования в блоке доступа, из CPB 120. Альтернативно, кодер 104 может определять отдельную задержку удаления CPB блока декодирования (например, du_cpb_removal_delay[i]) для каждого блока декодирования в блоке доступа.
[0171] Кодер 104 может также определять 206 один или большее число параметров NAL, которые указывают количество, со смещением на единицу, блоков NAL в каждом блоке декодирования в точке доступа. Например, кодер 104 может определять одиночный общий параметр NAL (например, common_num_nalus_in_du_minus1), который является применимым ко всем блокам декодирования в блоке доступа со стороны CPB 120. Альтернативно, кодер 104 может определять отдельную задержку удаления CPB блока декодирования (например, num_nalus_in_du_minus1[i]) для каждого блока декодирования в блоке доступа.
[0172] Кодер 104 может также посылать 208 сообщение SEI о синхронизации изображения, которое включает в себя флаг синхронизации изображения, задержки удаления и параметры NAL. Сообщение SEI о синхронизации изображения может также включать в себя другие параметры (например, cpb_removal_delay, dpb_output_delay, и т.д.). Например, электронное устройство 102 может передавать сообщение при посредстве одного или более из беспроводной передачи, проводной передачи, шины устройства, сети, и т.д. Например, электронное устройство A 102a может передавать сообщение на электронное устройство B 102b. Сообщение может быть частью битового потока 114, например. В некоторых конфигурациях электронное устройство A 102a может посылать 208 сообщение на электронное устройство B 102b в отдельной передаче 110 (которая не является частью битового потока 114).
[0173] Например, сообщение можно посылать с использованием некоторого внеполосного механизма. В некотором случае информация, указанная в 204, 206, может посылаться в сообщении SEI, отличном от сообщения SEI о синхронизации изображения. В еще одном случае информацию, указанную в 204, 206, можно посылать в наборе параметров, например, наборе параметров видео и/или наборе параметров последовательности и/или наборе параметров изображения и/или наборе параметров адаптации и/или заголовке слайса.
[0174] Фигура фиг.3 схема последовательности операций, иллюстрирующая одну конфигурацию способа 300 для определения одной или большего числа задержек удаления для блоков декодирования в блоке доступа. Другими словами, способ 300, иллюстрируемый на фиг.3, может дополнительно иллюстрировать этап 204 в способе 200, иллюстрируемом на фиг.2. Способ 300 может выполняться кодером 104. Кодер 104 может определять 302, включать ли общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay).
[0175] Это может включать в себя определение, установлен ли общий флаг задержки удаления из CPB блока декодирования (например, common_du_cpb_removal_delay_flag). Кодер 104 может посылать этот общий параметр в случае, если блоки декодирования удаляются из CPB с равномерными промежутками. Это может иметь место, например, когда каждый блок декодирования соответствует некоторому числу строк изображения или имеет некоторую другую регулярную структуру.
[0176] Например, общий флаг задержки удаления в CPB блока декодирования может быть установлен в 1, когда общий параметр задержки удаления в CPB блока декодирования подлежит включению в сообщение SEI о синхронизации изображения, и в 0, когда он не подлежит включению. Если «да» (например, флаг установлен в 1), кодер 104 может определить 304 общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay), который является применимым ко всем блокам декодирования в блоке доступа. Если «нет» (например, флаг установлен в 0), кодер 104 может определить 306 отдельные параметры задержки удаления в CPB блока декодирования (например, du_cpb_removal_delay[i]) для каждого блока декодирования в блоке доступа.
[0177] Если общий параметр задержки удаления в CPB блока декодирования присутствует в сообщении SEI о синхронизации изображения, он может задавать количество тактов фрагмента изображения которое ожидать после удаления из CPB 120 непосредственно предшествующего блока декодирования до момента удаления из CPB 120 текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0178] Например, когда блоком декодирования является первый блок декодирования в блоке доступа, общий параметр задержки удаления в CPB 120 блока декодирования может задавать количество тактов фрагмента изображения на ожидание после удаления из CPB 120 последнего блока декодирования в блоке доступа, связанном с последним по времени сообщением SEI о периоде буферизации в предшествующем блоке доступа, до момента удаления из CPB 120 первого блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0179] Когда блоком декодирования является не первый блок декодирования в блоке доступа, общий параметр задержки удаления в CPB блока декодирования может указывать количество тактов фрагмента изображения которое ожидать после удаления из CPB 120 предшествующего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения, до удаления из CPB текущего блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения.
[0180] Напротив, когда общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay) не посылают в сообщении SEI о синхронизации изображения, отдельные параметры задержки удаления в CPB блока декодирования (например, du_cpb_removal_delay[i]) могут включаться в сообщение SEI о синхронизации изображения для каждого блока декодирования в блоке доступа. Параметры задержки удаления из CPB блока декодирования (например, du_cpb_removal_delay[i]) могут задавать количество тактов фрагмента изображения на ожидание после удаления из CPB 120 последнего блока декодирования до удаления из CPB 120 i-ого блока декодирования в блоке доступа, связанном с сообщением SEI о синхронизации изображения. Параметры задержки удаления в CPB блока декодирования могут вычисляться по значению остатка счетчика по модулю , где cpb_removal_delay_length_minus1+1 является длиной общего параметра задержки удаления в CPB блока декодирования.
[0181] Фигура фиг.4 схема последовательности операций, иллюстрирующая одну конфигурацию способа 400 для буферизации битового потока. Способ 400 может выполняться декодером 112 в электронном устройстве 102 (например, электронном устройстве B 102b), который может принимать на этапе 402 сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение). Например, электронное устройство 102 может принимать на этапе 402 сообщение посредством одного или более из беспроводной передачи, проводной передачи, шины устройства, сети и т.д. Например, электронное устройство B 102b может принимать на этапе 402 сообщение от электронного устройства A 102a. Сообщение может быть частью битового потока 114, например. В другом примере электронное устройство B 102b может принимать сообщение от электронного устройства A 102a в отдельной передаче 110 (которая не является частью битового потока 114, например). Например, сообщение SEI о синхронизации изображения может быть принято с использованием некоторого внеполосного механизма. В некоторых конфигурациях сообщение может включать в себя один или несколько флагов синхронизации изображения, одну или большее число задержек удаления для блоков декодирования в блоке доступа, и один или несколько параметров NAL. Таким образом, прием на этапе 402 сообщения может включать в себя прием одного или более из флага синхронизации изображения, одной или нескольких задержек удаления для блоков декодирования в блоке доступа и одного или нескольких параметров NAL.
[0182] Декодер 112 может определять на этапе 404, работает ли CPB 120 на уровне блока доступа или на уровне фрагмента изображения. Например, декодер 112 может принять решение о работе на основе фрагмента изображения, если он желает добиться малой задержки. Альтернативно, решение может основываться на том, имеет ли декодер 112 достаточно ресурсов для поддержки работы на основе фрагмента изображения. Если CPB 120 работает на уровне фрагмента изображения, декодер может определить на этапе 406 одну или большее число задержек удаления для блоков декодирования в блоке доступа. Например, декодер 112 может определить одиночный общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay), который является применимым ко всем блокам декодирования в блоке доступа. Альтернативно, декодер 112 может определить отдельную задержку удаления CPB блока декодирования (например, du_cpb_removal_delay[i]) для каждого блока декодирования в блоке доступа. Другими словами, сообщение SEI о синхронизации изображения может включать в себя общий параметр, применимый ко всем блокам декодирования в блоке доступа, или отдельные параметры для каждого блока декодирования.
[0183] Декодер 112 может также удалять на этапе 408 блоки декодирования на основании задержек удаления для блоков декодирования, то есть, используя или общий параметр, применимый ко всем блокам декодирования в блоке доступа, или отдельные параметры для каждого блока декодирования. Декодер 112 может также декодировать на этапе 410 блоки декодирования.
[0184] Декодер 112 может использовать переменную ClockDiff при определении времени удаления, определяемого из различных сигнализированных параметров. Конкретно, ClockDiff может быть определен согласно ClockDiff=(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1))/ time_scale), где num_units_in_tick - число тактов тактового генератора, работающего с частотой time_scale Гц, которое соответствует одному приращению счетчика тактов системных часов, num_units_in_sub_tick - число тактов тактового генератора, работающего с частотой time_scale Гц, которое соответствует одному приращению счетчика тактов для фрагмента изображения, num_decoding_units_minus1+1 - количество блоков декодирования в блоке доступа, и time_scale - число тактов, которые происходят в одну секунду.
[0185] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, CPB работает на уровне фрагмента изображения и ClockDiff больше, чем нуль, время удаления для блока m декодирования, tr(m), определяют согласно: tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub )+ClockDiff, где tr,n(m) - номинальное время удаления блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления и taf(m) - конечное время поступления блока m декодирования.
[0186] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, CPB работает на уровне блока доступа, и ClockDiff больше чем нуль, время удаления для блока n доступа, tr(n), определяют согласно: tr(n)=tr,n(n)+tc*Ceil((taf(n)-tr,n(n))/tc) - ClockDiff, где tr,n(n)- номинальное время удаления блока n доступа, tc - такт системных часов, Ceil() - функция округления, и taf(n) - конечное время поступления блока n доступа.
[0187] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m), соответствует: tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0188] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n), задают согласно: tr(n)=tr,n(n)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и traf(n) - конечное время поступления блока n доступа.
[0189] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) задают согласно: tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0190] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задают согласно: tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m)/tc_sub)), (tc*Ceil((taf(n)-tr,n(n))/tc))), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n)- номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0191] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для последнего блока m декодирования в блоке доступа, tr(m) задают согласно: tr(m)=tr,n(m)+(tc*Ceil((taf(n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов и taf(n) - конечное время поступления блока n доступа.
[0192] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задают согласно: tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0193] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1 и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования, который не является последним блоком декодирования в блоке доступа, устанавливается как tr(m)=taf(m), где taf(m) - конечное время поступления блока m декодирования. И время удаления для последнего блока m декодирования в блоке доступа, tr(m) задается согласно: tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов; taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления последнего блока декодирования в блоке n доступа.
[0194] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1 и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования, который не является последним блоком декодирования в блоке доступа, устанавливается как tr(m)=taf(m), где taf(m) - конечное время поступления блока m декодирования. И время удаления для последнего блока m декодирования в блоке доступа, tr(m) задается согласно: tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)), где tr,n(m) - номинальное время удаления последнего блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов; taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления последнего блока декодирования в блоке n доступа.
[0195] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой (например, low_delay_hrd_flag) установлен в 1, tr,n(m)<taf(m), флаг синхронизации изображения установлен в 1, и CPB работает на уровне фрагмента изображения, время удаления для блока декодирования устанавливается как tr(m)=taf(m), где tr,n(m) - номинальное время удаления блока m декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов; taf(n) - конечное время поступления блока n доступа, и taf(m) - конечное время поступления блока декодирования в блоке n доступа.
[0196] Когда флаг гипотетического эталонного декодера (HRD) с малой задержкой установлен в 1, tr,n(n)<taf(n), флаг синхронизации изображения установлен в 1, и CPB работает на уровне блока доступа, время удаления для блока n доступа, tr(n) задают согласно: tr(n)=taf(n), где tr,n(m) - номинальное время удаления последнего блока n декодирования, tc_sub - такт для фрагмента изображения, Ceil() - функция округления, taf(m) - конечное время поступления последнего блока m декодирования, tr,n(n) - номинальное время удаления блока n доступа, tc - такт системных часов, и taf(n) - конечное время поступления блока n доступа.
[0197] Если CPB работает на уровне блока доступа, декодер 112 может определять на этапе 412 параметр задержки удаления в CPB. Это может быть включено в принимаемое сообщение SEI о синхронизации изображения (например, cpb_removal_delay). Декодер 112 может также удалять на этапе 414 блок доступа на основании параметра задержки удаления в CPB и декодировать на этапе 416 блок доступа. Другими словами, декодер 112 может декодировать все блоки доступа за один раз, вместо блоков декодирования в блоке доступа.
[0198] Фигура фиг.5 схема последовательности операций, иллюстрирующая одну конфигурацию способа 500 для определения одной или нескольких задержек удаления для блоков декодирования в блоке доступа. Другими словами, способ 500, иллюстрируемый на фиг.5, может дополнительно проиллюстрировать этап 406 в способе 400, иллюстрируемом на фиг.4. Способ 500 может выполняться декодером 112. Декодер 112 может определять 502, включает ли принятое сообщение SEI о синхронизации изображения общий параметр задержки удаления в CPB блока декодирования. Это может включать в себя определение, установлен ли общий флаг задержки удаления из CPB блока декодирования (например, common_du_cpb_removal_delay_flag). Если «да», декодер 112 может определить 504 общий параметр задержки удаления в CPB блока декодирования (например, common_du_cpb_removal_delay), который является применимым ко всем блокам декодирования в блоке доступа. Если «нет», декодер 112 может определить 506 отдельные параметры задержки удаления в CPB блока декодирования (например, du_cpb_removal_delay[i]) для каждого блока декодирования в блоке доступа.
[0199] В дополнение к модификации семантики сообщения SEI о синхронизации изображения, настоящие системы и способы могут также налагать ограничение на битовый поток с тем, что работа CPB на основе фрагмента изображения и работа CPB на основе блока доступа приводит к той же синхронизации удаления блока декодирования. Конкретно, когда флаг синхронизации изображения (например, sub_pic_cpb_params_present_flag) установлен в 1, задержка удаления в CPB может устанавливаться согласно
[0200] [Математическое выражение 6]
[0201] где du_cpb_removal_delay[i] - параметры задержки удаления в CPB блока декодирования, tc - такт системных часов, tc_sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу, и i - индекс.
[0202] Альтернативно, задержка удаления CPB может быть установлена, как описано далее: пусть переменная Tdu(k) будет определена в виде:
[0203] [Математическое выражение 7]
[0204] где du_cpb_removal_delay_minus1k[i] и num_decoding_units_minus1k - параметры для i-ого блока декодирования k-ого блока доступа (при k=0 для блока доступа, который инициализировал HRD, и Tdu(k)=0 для k<1), и где du_cpb_removal_delay_minus1k[i]+1=du_cpb_removal_delay_minus1k[i] - параметр задержки удаления в CPB блока декодирования для i-ого блока декодирования k-ого блока доступа, и num_decoding_units_minus1k - число блоков декодирования в k-ом блоке доступа, tc - такт системных часов, tc_sub - такт для фрагмента изображения, и i и k - индексы. Затем, когда флаг синхронизации изображения (например, sub_pic_cpb_params_present_flag) установлен в 1, следующее условие должно быть истиной:
[0205] (au_cpb_removal_delay_minus1+1)*tc==Tdu(k), где (au_cpb_removal_delay_minus1+1)=cpb_removal_delay, задержка удаления CPB. Таким образом в этом случае задержка удаления CPB (au_cpb_removal_delay_minus1+1) устанавливается так, что работа CPB на основе фрагмента изображения и работа CPB на основе блока доступа приводят к той же синхронизации удаления блока доступа и удалению последнего блока декодирования в блоке доступа.
[0206] Альтернативно, задержка удаления CPB может быть установлена согласно
[0207] [Математическое выражение 8]
[0208] где du_cpb_removal_delay[i] - параметры задержки удаления в CPB блока декодирования, tc - такт системных часов, tc_sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа, со смещением на единицу, и i - индекс.
[0209] Альтернативно, cpb_removal_delay и du_cpb_removal_delay [num_decoding_units_minus1] могут быть установлены согласно: cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub, где du_cpb_removal_delay [num_decoding_units_minus1] - параметр задержки удаления в CPB блока декодирования для num_decoding_units_minus1-ого блока декодирования, tc - такт системных часов, tc_sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа со смещением на единицу.
[0210] В дополнение к модификации семантики сообщения SEI о синхронизации изображения, настоящие системы и способы могут также налагать ограничение битового потока с тем, что работа CPB на основе фрагмента изображения и работа CPB на основе блока доступа приводит к той же синхронизации удаления блока декодирования. Конкретно, когда флаг синхронизации изображения (например, sub_pic_cpb_params_present_flag) установлен в 1, значения для cpb_removal_delay и du_cpb_removal_delay[num_decoding_units_minus1] могут быть установлены так, чтобы удовлетворять: -1<=(cpb_removal_delay*tc - du_cpb_removal_delay [num_decoding_units_minus1]*tc_sub)<=1, где du_cpb_removal_delay [num_decoding_units_minus1] - параметр задержки удаления в CPB блока декодирования для num_decoding_units_minus1-ого блока декодирования, tc - такт системных часов, tc_sub - такт для фрагмента изображения, num_decoding_units_minus1 - количество блоков декодирования в блоке доступа, со смещением на единицу.
[0211] Фигура фиг.6A - блок-схема, иллюстрирующая одну конфигурацию кодера 604 на электронном устройстве 602. Следует отметить, что один или большее число элементов, иллюстрируемых в виде включенных в электронное устройство 602, могут быть осуществлены в аппаратных средствах, программном обеспечении или их комбинации. Например, электронное устройство 602 включает в себя кодер 604, который может быть осуществлен в аппаратных средствах, программном обеспечении или их комбинации. Например, кодер 604 может быть реализован в виде схемы, интегральной схемы, специализированной интегральной схемы (ASIC), процессора в электронной связи с памятью с исполнимыми инструкциями, встроенного микропрограммного обеспечения, программируемой вентильной матрицы (FPGA), и т.д., или их комбинации. В некоторых конфигурациях кодер 604 может быть кодером HEVC.
[0212] Электронное устройство 602 может включать в себя источник видео 622. Источник видео 622 может предоставлять изображение или видеоданные (например, видео) на кодер 604 в качестве одного или нескольких входных изображений 606. Примеры источника видео 622 могут включать в себя датчики изображений, память, связные интерфейсы, сетевые интерфейсы, беспроводные приемники, порты, и т.д.
[0213] Одно или большее число входных изображений 606 могут предоставляться на модуль 624 внутрикадрового предсказания и буфер восстановления. Входное изображение 606 может также предоставляться на модуль 646 оценки движения и компенсации движения и модуль 628 вычитания.
[0214] Модуль 624 внутрикадрового предсказания и буфер восстановления могут формировать информацию 640 внутрикадрового режима и сигнал 626 с внутрикадровым кодированием на основании одного или нескольких входных изображений 606 и восстановленных данных 660. Модуль 646 оценки движения и компенсации движения может формировать информацию 648 межкадрового режима и сигнал 644 с межкадровым кодированием на основании одного или нескольких входных изображений 606 и опорного изображения 678 из буфера 676 декодированных изображений. В некоторых конфигурациях буфер 676 декодированных изображений может включать в себя данные из одного или большего числа опорных изображений, находящихся в буфере 676 декодированных изображений.
[0215] Кодер 604 может выбирать между сигналом 626 с внутрикадровым кодированием и сигналом 644 с межкадровым кодированием в соответствии с режимом. Сигнал 626 с внутрикадровым кодированием может использоваться, чтобы применять пространственные характеристики в изображении в режиме с внутрикадровым кодированием. Сигнал 644 с межкадровым кодированием может использоваться, чтобы применять временные характеристики между изображениями в режиме межкадрового кодирования. При нахождении в режиме внутрикадрового кодирования, сигнал 626 с внутрикадровым кодированием может предоставляться на модуль 628 вычитания, и информация 640 режима внутрикадрового кодирования может предоставляться на модуль 642 энтропийного кодирования. При нахождении в режиме межкадрового кодирования, сигнал 644 с межкадровым кодированием может предоставляться на модуль 628 вычитания, и информация 648 межкадрового режима может предоставляться на модуль 642 энтропийного кодирования.
[0216] Либо сигнал 626 с внутрикадровым кодированием, либо сигнал 644 с межкадровым кодированием (в зависимости от режима) вычитают из входного изображения 606 в модуле 628 вычитания, чтобы создать остаточный сигнал 630 предсказания. Остаточный сигнал 630 предсказания обеспечивается на модуль 632 преобразования. Модуль 632 преобразования может осуществлять компрессию остаточного сигнала 630 предсказания, чтобы создать преобразованный сигнал 634, который предоставляется на модуль 636 квантования. Модуль 636 квантования квантует преобразованный сигнал 634, чтобы создать преобразованные и квантованные коэффициенты (TQC) 638.
[0217] Коэффициенты TQC 638 предоставляются на модуль 642 энтропийного кодирования и модуль 650 обратного квантования. Модуль 650 обратного квантования выполняет обратное квантование над коэффициентами TQC 638, чтобы создать обратно квантованный сигнал 652, который предоставляется на модуль 654 обратного преобразования. Модуль 654 обратного преобразования осуществляет декомпрессию (восстановление в несжатое состояние) обратно квантованного сигнала 652, чтобы создать декомпрессированный сигнал 656, который предоставляется на модуль 658 восстановления.
[0218] Модуль 658 восстановления может создавать восстановленные данные 660 на основе декомпрессированного сигнала 656. Например, модуль 658 восстановления может повторно создать (модифицированные) изображения. Восстановленные данные 660 могут обеспечиваться на деблокирующий фильтр 662 и на модуль внутрикадрового предсказания и буфер 624 восстановления. Деблокирующий фильтр 662 может выдавать отфильтрованный сигнал 664 на основании восстановленных данных 660.
[0219] Отфильтрованный сигнал 664 может предоставляться на модуль 666 адаптивного к выборке смещения (фильтр SAO). Модуль 666 SAO может создавать информацию 668 SAO, которая предоставляется на модуль 642 энтропийного кодирования, и сигнал 670 SAO, который предоставляется на адаптивный фильтр с контуром обратной связи (ALF) 672. ALF 672 выдает сигнал 674 ALF, который обеспечивается на буфер 676 декодированных изображений. Сигнал 674 ALF может включать в себя данные от одного или большего числа изображений, которые могут использоваться в качестве опорных изображений.
[0220] Модуль 642 энтропийного кодирования может кодировать коэффициенты TQC 638, чтобы создать битовый поток A 614a (например, данные кодированного изображения). Например, модуль 642 энтропийного кодирования может кодировать экземпляры TQC 638, используя контекстно-адаптивное кодирование с переменной длиной серии (CAVLC) или контекстно-адаптивное кодирование на основе двоичной арифметики (CABAC). В частности модуль 642 энтропийного кодирования может кодировать экземпляры TQC 638 на основании одного или более из информации 640 внутрикадрового режима, информации 648 межкадрового режима и информации 668 SAO. Битовый поток A 614a (например, данные кодированного изображения) может предоставляться на модуль 608 формирования сообщений. Модуль 608 формирования сообщений может быть сконфигурирован подобно модулю 108 формирования сообщений, описанному в связи с фиг.1. Кроме того или альтернативно, модуль 608 формирования сообщений может выполнять одну или большее число процедур, описанных в связи с фиг.2 и фиг.3.
[0221] Например, модуль 608 формирования сообщений может формировать сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение), включающее параметры фрагмента изображения. Параметры фрагмента изображения могут включать в себя одну или более задержек удаления для блоков декодирования (например, common_du_cpb_removal_delay или du_cpb_removal_delay[i]) и один или более параметров NAL (например, common_num_nalus_in_du_minus1 или num_nalus_in_du_minus1[i]). В некоторых конфигурациях сообщение может вставляться в битовый поток A 614a, чтобы создать битовый поток B 614b. Таким образом, сообщение может быть сформировано после того, как сформирован весь битовый поток A 614a (например, после того, как сформирована большая часть битового потока B 614b), например. В других конфигурациях сообщение может не вставляться в битовый поток A 614a (в каком случае битовый поток B 614b может быть одинаковым с битовым потоком A 614a), но может предоставляться в отдельной передаче 610.
[0222] В некоторых конфигурациях электронное устройство 602 посылает битовый поток 614 на другое электронное устройство. Например, битовый поток 614 может предоставляться на связной интерфейс, сетевой интерфейс, беспроводной передатчик, порт и т.д. Например, битовый поток 614 может передаваться на другое электронное устройство через LAN, сеть Интернет, базовую станцию сотового телефона, и т.д. Битовый поток 614 может дополнительно или альтернативно сохраняться в памяти или другом компоненте в электронном устройстве 602.
[0223] Фигура фиг.6B - блок-схема, иллюстрирующая одну конфигурацию видеокодера 1782 на электронном устройстве 1702. Видеокодер 1782 может включать в себя кодер 1706 уровня улучшения, кодер 1709 базового уровня, блок 1770 увеличения (изменения) разрешения и выходной интерфейс 1780. Видеокодер по фиг.6B, например, является подходящим для масштабируемого кодирования видео и многовидового кодирования видео, как описано здесь.
[0224] Кодер 1706 уровня улучшения может включать в себя блок 1781 видеоввода, который принимает входное изображение 1704. Выход блока 1781 видеоввода может предоставляться на сумматор/вычитатель 1783, который принимает выход выбора 1750 режима предсказания. Выход сумматора/вычитателя 1783 может предоставляться на блок 1752 преобразования и квантования. Выход блока 1752 преобразования и квантования может предоставляться на блок 1748 энтропийного кодирования и блок 1772 масштабирования и обратного преобразования. После выполнения энтропийного кодирования 1748, выход блока 1748 энтропийного кодирования может предоставляться на выходной интерфейс 1780. Выходной интерфейс 1780 может выводить и кодированный битовый поток 1707 видео базового уровня, и кодированный битовый поток 1710 видео уровня улучшения.
[0225] Выход блока 1772 обратного преобразования и масштабирования может предоставляться на сумматор 1779. Сумматор 1779 может также принимать выход выбора 1750 режима предсказания. Выход сумматора 1779 может предоставляться на блок 1751 деблокирования. Выход блока 1751 деблокирования может предоставляться на буфер опорных изображений 1794. Выход опорного буфера 1794 может предоставляться на блок 1754 компенсации движения. Выход блока 1754 компенсации движения может предоставляться на выбор 1750 режима предсказания. Выход буфера 1794 опорных изображений может также предоставляться на внутрикадровый предсказатель 1756. Выход внутрикадрового предсказателя 1756 может предоставляться на выбор 1750 режима предсказания. Выбор 1750 режима предсказания может также принимать выход блока 1770 увеличения разрешения.
[0226] Кодер 1709 базового уровня может включать в себя блок 1762 видеоввода, который принимает субдискретизированное входное изображение, или другой контент изображения, подходящий для объединения (гребенчатой фильтрации?) с другим изображением, или входным изображением альтернативного вида, или таким же входным изображением 1703 (то есть, таким же как входное изображение 1704, принятое кодером 1706 уровня улучшения). Выход блока 1762 видеоввода может предоставляться на контур 1764 предсказания кодирования. Энтропийное кодирование 1766 может быть обеспечено на выходе контура 1764 предсказания кодирования. Выход контура 1764 предсказания кодирования может также обеспечиваться на буфер 1768 опорных изображений. Буфер 1768 опорных изображений может обеспечивать обратную связь для контура 1764 предсказания кодирования. Выход буфера 1768 опорных изображений может также предоставляться на блок 1770 увеличения разрешения. Как только энтропийное кодирование 1766 было выполнено, выход может предоставляться на выходной интерфейс 1780. Кодированный битовый поток 1707 видео базового уровня и/или кодированный битовый поток 1710 видео уровня улучшения могут обеспечиваться на один или большее число блоков формирования сообщений, как необходимо.
[0227] Фигура фиг.7A - блок-схема, иллюстрирующая одну конфигурацию декодера 712 на электронном устройстве 702. Декодер 712 может быть включен в электронное устройство 702. Например, декодер 712 может быть декодером HEVC. Декодер 712 и один или большее число из элементов, иллюстрируемых в виде включенных в декодер 712, могут быть осуществлены в виде аппаратных средств, программного обеспечения или их комбинации. Декодер 712 может принимать битовый поток 714 (например, одно или несколько кодированных изображений и служебные данные, включенные в битовый поток 714) для декодирования. В некоторых конфигурациях принятый битовый поток 714 может включать в себя принятые служебные данные, такие как сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение), заголовок слайса, PPS, и т.д. В некоторых конфигурациях декодер 712 может дополнительно принимать отдельную передачу 710. Отдельная передача 710 может включать в себя сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение). Например, сообщение SEI о синхронизации изображения или другое сообщение можно принимать в отдельной передаче 710, а не в битовом потоке 714. Однако следует отметить, что отдельная передача 710 может быть необязательной и может не использоваться в некоторых конфигурациях.
[0228] Декодер 712 включает в себя CPB 720. CPB 720 может быть сконфигурирован подобно CPB 120, описанному в связи с фиг.1 выше. Кроме того или альтернативно, декодер 712 может выполнять одну или большее количество процедур, описанных в связи с фиг.4 и фиг.5. Например, декодер 712 может принимать сообщение (например, сообщение SEI о синхронизации изображения или другое сообщение) с параметрами фрагмента изображения, и удалять и декодировать блоки декодирования в блоке доступа на основании параметров фрагмента изображения. Следует отметить, что один или большее количество блоков доступа могут быть включены в битовый поток и могут включать в себя одно или более из данных кодированного изображения и служебных данных.
[0229] Буфер 720 кодированных изображений (CPB) может обеспечивать данные кодированного изображения на модуль 701 энтропийного декодирования. Данные кодированного изображения могут быть энтропийно декодированы модулем 701 энтропийного декодирования, посредством этого создавая сигнал 703 данных движения и квантованные, масштабированные и/или преобразованные коэффициенты 705.
[0230] Сигнал 703 данных движения может быть объединен с частью сигнала 798 опорного кадра из буфера 709 декодированных изображений в модуле 780 компенсации движения, который может создать сигнал 782 межкадрового предсказания. Квантованные, демасштабированные и/или преобразованные коэффициенты 705 могут быть обратно квантованы, масштабированы и обратно преобразованы модулем 707 обратного (преобразования/масштабирования/квантования), посредством этого выдавая декодированный остаточный сигнал 784. Декодированный остаточный сигнал 784 можно суммировать с сигналом 792 предсказания, чтобы создать объединенный сигнал 786. Сигнал 792 предсказания может быть сигналом, выбранным либо из сигнала 782 межкадрового предсказания, выдаваемого модулем 780 компенсации движения, либо из сигнала 790 внутрикадрового предсказания, выдаваемого модулем 788 внутрикадрового предсказания. В некоторых конфигурациях этот выбор сигнала может быть на основе битового потока 714 (например, управляемым его посредством).
[0231] Сигнал 790 внутрикадрового предсказания может быть предсказан исходя из предварительно декодированной информации из объединенного сигнала 786 (в текущем кадре, например). Объединенный сигнал 786 может также фильтроваться посредством деблокирующего фильтра 794. Результирующий отфильтрованный сигнал 796 может быть записан в буфер 709 декодированных изображений. Результирующий отфильтрованный сигнал 796 может включать в себя декодированное изображение. Буфер 709 декодированных изображений может обеспечивать декодированное изображение, которое может выводиться 718. В некоторых случаях 709 можно рассматривать как память кадров.
[0232] Фигура фиг.7B - блок-схема, иллюстрирующая одну конфигурацию видеодекодера 1812 в электронном устройстве 1802. Видеодекодер 1812 может включать в себя декодер 1815 уровня улучшения и декодер 1813 базового уровня. Видеодекодер 1812 может также включать в себя интерфейс 1889 и блок 1870 увеличения разрешения. Видеодекодер по фиг.7B, например, является подходящим для масштабируемого декодирования видео и декодирования многовидового видео, как описано здесь.
[0233] Интерфейс 1889 может принимать кодированный поток 1885 видео. Кодированный поток 1885 видео может состоять из кодированного потока видео базового уровня и кодированного потока видео уровня улучшения. Эти два потока могут посылаться отдельно или вместе. Интерфейс 1889 может предоставить некоторый или весь кодированный поток 1885 видео на блок 1886 энтропийного декодирования в декодере 1813 базового уровня. Выход блока 1886 энтропийного декодирования может предоставляться на контур 1887 предсказания декодирования. Выход контура 1887 предсказания декодирования может обеспечиваться на буфер 1888 опорных изображений. Буфер опорных изображений может обеспечивать обратную связь на контур 1887 предсказания декодирования. Буфер 1888 опорных изображений может также выводить декодированный поток 1884 видео базового уровня.
[0234] Интерфейс 1889 может также предоставлять некоторый или весь кодированный поток 1885 видео на блок 1890 энтропийного декодирования в декодере 1815 уровня улучшения. Выход блока 1890 энтропийного декодирования может предоставляться на блок обратного квантования. Выход блока 1891 обратного квантования может предоставляться на сумматор. Сумматор 1892 может суммировать выход блока 1891 обратного квантования и выход блока 1895 выбора режима предсказания. Выход сумматора 1892 может предоставляться на блок 1893 деблокирования. Выход деблокирующего блока 1893 может обеспечиваться на буфер 1894 опорных изображений. Буфер 1894 опорных изображений может выводить декодированный поток 1882 видео уровня улучшения. Выход буфера 1894 опорных изображений может также предоставляться на внутрикадровый предсказатель 1897. Декодер 1815 уровня улучшения может включать в себя блок 1896 компенсации движения. Компенсация 1896 движения может выполняться после увеличения 1870 разрешения. Блок 1895 выбора режима предсказания может принимать выход внутрикадрового предсказателя 1897 и выход компенсации 1896 движения. Кроме того, декодер может включать в себя один или большее число буферов кодированных изображений, как необходимо, например, вместе с интерфейсом 1889.
[0235] Фигура фиг.8 иллюстрирует различные компоненты, которые могут использоваться в передающем электронном устройстве 802. Одно или более из электронных устройств 102, 602, 702, описанных здесь, могут быть реализованы в соответствии с передающим электронным устройством 802, иллюстрируемом на фиг.8.
[0236] Передающее электронное устройство 802 включает в себя процессор 817, который управляет работой электронного устройства 802. Процессор 817 может также именоваться центральным процессором (ЦП, CPU). Память 811, которая может включать в себя и постоянную память (ROM), и оперативную память (RAM), или любой тип устройства, которое может сохранять информацию, обеспечивает инструкции 813a (например, исполнимые инструкции) и данные 815a на процессор 817. Часть памяти 811 может также включать в себя энергонезависимую оперативную память (NVRAM). Память 811 может находиться в электронной связи с процессором 817.
[0237] Инструкции 813b и данные 815b могут также постоянно находиться в процессоре 817. Инструкции 813b и/или данные 815b, загруженные в процессор 817, могут также включать в себя инструкции 813a и/или данные 815a из памяти 811, которые были загружены для исполнения или обработки процессором 817. Инструкции 813b могут исполняться процессором 817, чтобы реализовывать системы и способы, раскрытые в описании. Например, инструкции 813b могут быть исполнимыми, чтобы выполнять один или более из способов 200, 300, 400, 500, описанных выше.
[0238] Передающее электронное устройство 802 может включать в себя один или большее число связных интерфейсов 819 для осуществления связи с другими электронными устройствами (например, приемным электронным устройством). Связные интерфейсы 819 могут быть на основе на технологии проводной связи, технологии беспроводной связи или обеих. Примеры связного интерфейса 819 включают в себя последовательный порт, параллельный порт, универсальную последовательную шину (USB), адаптер Ethernet, шинный интерфейс стандарта IEEE 1394, шинный интерфейс малых компьютерных систем (SCSI), инфракрасный (IR) порт связи, адаптер беспроводной связи Bluetooth, беспроводной приемопередатчик в соответствии со спецификациями Проекта партнерства систем связи 3-го поколения (3GPP) и т.д.
[0239] Передающее электронное устройство 802 может включать в себя одно или несколько устройств 823 вывода и одно или несколько устройств 821 ввода. Примеры устройств 823 вывода включают в себя динамик, принтер, и т.д. Один тип устройства вывода, которое может быть включено в электронное устройство 802, является устройством 825 отображения. Устройства 825 отображения, используемые с конфигурациями, раскрытыми в описании, могут использовать любую подходящую технологию проецирования изображения, такую как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), светоизлучающий диод (LED), газоразрядная плазма, электролюминесценция и т.п. Контроллер 827 дисплея может обеспечиваться для преобразования данных, хранимых в памяти 811, в текст, графику и/или движущиеся изображения (как необходимо), показываемые на устройстве 825 отображения. Примеры устройств 821 ввода включают в себя клавиатуру, мышь, микрофон, пульт дистанционного управления, кнопку, джойстик, шаровой манипулятор, сенсорную панель, сенсорный экран, световое перо и т.д.
[0240] Различные компоненты передающего электронного устройства 802 связывает вместе система 829 шин, которая может включать в себя шину питания, шину управляющего сигнала и шину сигнала состояния вдобавок к шине данных. Однако, ради ясности, различные шины проиллюстрированы на фиг.8 в виде системы 829 шин. Передающее электронное устройство 802, иллюстрируемое на фиг.8, является функциональной блок-схемой, а не перечислением конкретных компонентов.
[0241] Фигура фиг.9 - блок-схема, иллюстрирующая различные компоненты, которые могут использоваться в приемном электронном устройстве 902. Одно или более из электронных устройств 102, 602, 702, описанных здесь, можно реализовывать в соответствии с приемным электронным устройством 902, иллюстрируемом на фиг.9.
[0242] Приемное электронное устройство 902 включает в себя процессор 917, который управляет работой электронного устройства 902. Процессор 917 может также именоваться CPU. Память 911, которая может включать в себя и постоянную память (ROM), и оперативную память (RAM), или любой тип устройства, которое может хранить информацию, обеспечивает инструкции 913a (например, исполнимые инструкции) и данные 915a на процессор 917. Часть памяти 911 может также включать в себя энергонезависимую оперативную память (NVRAM). Память 911 может находиться в электронной связи с процессором 917.
[0243] Инструкции 913b и данные 915b могут также постоянно находиться в процессоре 917. Инструкции 913b и/или данные 915b, загруженные в процессор 917, могут также включать в себя инструкции 913a и/или данные 915a из памяти 911, которые были загружены для выполнения или обработки процессором 917. Инструкции 913b могут исполняться процессором 917, чтобы реализовывать системы и способы, раскрытые в описании. Например, инструкции 913b могут быть исполнимыми, чтобы выполнять один или более из способов 200, 300, 400, 500, описанных выше.
[0244] Приемное электронное устройство 902 может включать в себя один или большее число связных интерфейсов 919 для осуществления связи с другими электронными устройствами (например, передающим электронным устройством). Связной интерфейс 919 может быть на основе технологии проводной связи, технологии беспроводной связи, или обеих. Примеры связных интерфейсов 919, включают в себя последовательный порт, параллельный порт, универсальную последовательную шину (USB), адаптер Ethernet, шинный интерфейс стандарта IEEE 1394, шинный интерфейс малых компьютерных систем (SCSI), инфракрасный (IR) порт связи, адаптер беспроводной связи Bluetooth, беспроводной приемопередатчик в соответствии с Проектом партнерства систем связи 3-го поколения (3GPP) и т.д.
[0245] Приемное электронное устройство 902 может включать в себя одно или несколько устройств 923 вывода и одно или несколько устройств 921 ввода. Примеры устройств 923 вывода включают в себя динамик, принтер, и т.д. Один тип устройства вывода, которое может быть включено в электронное устройство 902, является устройством 925 отображения. Устройства 925 отображения, используемые с конфигурациями, раскрытыми в описании, могут использовать любую подходящую технологию проецирования изображения, такую как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), светоизлучающий диод (LED), газоразрядная плазма, электролюминесценция и т.п. Контроллер 927 дисплея может обеспечиваться для преобразования данных, хранимых в памяти 911, в текст, графику и/или движущиеся изображения (как необходимо), показываемые на устройстве 925 отображения. Примеры устройств 921 ввода включают в себя клавиатуру, мышь, микрофон, пульт дистанционного управления, кнопку, джойстик, шаровой манипулятор, сенсорную панель, сенсорный экран, световое перо и т.д.
[0246] Различные компоненты приемного электронного устройства 902 связаны системой шин 929, которая может включать в себя шину питания, шину управляющего сигнала и шину сигнала состояния, вдобавок к шине данных. Однако, ради ясности, различные шины проиллюстрированы на фиг.9 в виде системы 929 шин. Приемное электронное устройство 902, иллюстрируемое на фиг.9, является функциональной блок-схемой, а не перечислением конкретных компонентов.
[0247] Фигура фиг.10 - блок-схема, иллюстрирующая одну конфигурацию электронного устройства 1002, в котором могут быть реализованы системы и способы для посылки сообщения. Электронное устройство 1002 включает в себя кодирующее средство 1031 и передающее средство 1033. Кодирующее средство 1031 и передающее средство 1033 могут быть сконфигурированы для выполнения одной или нескольких функций, описанных в связи с одной или несколькими из фиг.1, фиг.2, фиг.3, фиг.6 и фиг.8 выше. Например, кодирующее средство 1031 и передающее средство 1033 могут формировать битовый поток 1014. Фигура фиг.8 выше иллюстрирует один пример конкретного построения аппаратуры по фиг.10. Другие различные структуры могут быть осуществлены для реализации одной или нескольких функций по фиг.1, фиг.2, фиг.3, фиг.6 и фиг.8. Например, DSP может быть реализован программно.
[0248] Фигура фиг.11 - блок-схема, иллюстрирующая одну конфигурацию электронного устройства 1102, в котором могут быть осуществлены системы и способы для буферизации битового потока 1114. Электронное устройство 1102 может включать в себя приемное средство 1135 и декодирующее средство 1137. Приемное средство 1135 и декодирующее средство 1137 могут быть сконфигурированы для выполнения одной или нескольких функций, описанных в связи с одной или более из фиг.1, фиг.4, фиг.5, фиг.7 и фиг.9 выше. Например, приемное средство 1135 и декодирующее средство 1137 могут принимать битовый поток 1114. Фигура фиг.9 выше иллюстрирует один пример конкретного построения аппаратуры по фиг.11. Другие различные структуры могут быть осуществлены для реализации одной или более функций по фиг.1, фиг.4, фиг.5, фиг.7 и фиг.9. Например, DSP может быть реализован программно.
[0249] Фигура фиг.12 схема последовательности операций, иллюстрирующая одну конфигурацию способа 1200 для работы буфера декодированных изображений (DPB). Способ 1200 может выполняться кодером 104 или одной из его подсистем (например, модулем 676 буфера декодированных изображений). Способ 1200 может выполняться декодером 112 в электронном устройстве 102 (например, электронном устройстве B 102b). Кроме того или альтернативно способ 1200 может выполняться декодером 712 или одной из его подсистем (например, модулем 709 буфера декодированных изображений). Декодер может осуществлять синтаксический разбор первого заголовка слайса изображения 1202. Вывод и удаление изображений из DPB до декодирования текущего изображения (но после разбора заголовка слайса для первого слайса текущего изображения) происходят немедленно, когда первый блок декодирования блока доступа, содержащего текущее изображение, удаляется из CPB и продолжаются, как изложено ниже.
[0250] - Запускают процесс декодирования для набора опорных изображений (RPS). Набор опорных изображений является набором опорных изображений, связанных с изображением, состоящий из всех опорных изображений, которые находятся перед связанным изображением по порядку декодирования, которые могут использоваться для межкадрового предсказания связанного изображения или любого изображения, следующего после связанного изображения по порядку декодирования.
[0251] - Битовый поток видео может включать в себя синтаксическую структуру, которую помещают в логические пакеты данных, обычно называемые блоками уровня сетевой абстракции (NAL). Каждый блок NAL включает в себя заголовок блока NAL, такой как двухбайтовый заголовок блока NAL (например, 16 битов), чтобы идентифицировать назначение полезной нагрузки связанных данных. Например, каждый кодированный слайс (и/или кадр) может быть закодирован в одном или нескольких блоках NAL слайса (и/или кадра). Другие блоки NAL могут быть включены для других категорий данных, таких как, например, дополнительная расширенная информация, кодированный слайс кадра с временным доступом к подуровню (TSA), кодированный слайс кадра с пошаговым временным доступом к подуровню (STSA), кодированный слайс отличного от TSA, отличного от STSA концевого кадра, кодированный слайс кадра с доступом с разорванной связью (broken link access), кодированный слайс с мгновенным обновлением декодированного кадра, кодированный слайс кадра с произвольным доступом, кодированный слайс декодируемого головного кадра, кодированный слайс помеченного для отбрасывания кадра, набор параметров видео, набор параметров последовательности, набор параметров изображения, разделитель блока доступа, конец последовательности, конец битового потока, данные заполнителя, и/или информационное сообщение о расширении последовательности. Таблица (4) иллюстрирует один пример кодов блоков NAL и классов типов блоков NAL. Другие типы блоков NAL могут быть включены, как необходимо. Следует также понимать, что значения типов блоков NAL для блоков NAL, показанных в Таблице (4), могут быть перегруппированы и повторно назначены. К тому же могут быть добавлены дополнительные типы блоков NAL. Также некоторые типы блоков NAL могут быть удалены.
[0252] Изображение (кадр) с внутрикадровым кодированием с точкой произвольного доступа (IRAP) является кодированным изображением, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type в диапазоне от BLA_W_LP до RSV_IRAP_VCL23, включительно, как показано в Таблице (4). Изображение IRAP содержит только внутрикадрово-кодированные (I) слайсы. Изображение с мгновенным обновлением декодирования (IDR) является изображением IRAP, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type равный IDR_W_RADL или IDR_N_LP, как показано в Таблице (4). Изображение с мгновенным обновлением декодирования (IDR) содержит только I слайсы, и может быть первым изображением в битовом потоке по порядку декодирования, или может появиться позднее в битовом потоке. Каждое IDR изображение является первым изображением в кодированной видеопоследовательности (CVS) по порядку декодирования. Изображение с доступом с разорванной связью (BLA) является изображением IRAP, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type, равный BLA_W_LP, BLA_W_RADL или BLA_N_LP, как показано в Таблице (4). Изображение BLA содержит только I слайсы, и может быть первым изображением в битовом потоке по порядку декодирования, или может появиться в битовом потоке впоследствии. Каждое изображение BLA начинает новую кодированную видеопоследовательность, и оказывает такое же действие на процесс декодирования, как изображение IDR. Однако изображение BLA содержит синтаксические элементы, которые задают непустой набор опорных изображений.
[0253]
1
TRAIL_R
3
TSA_R
5
STSA_R
7
RADL_R
9
RASL_R
12
14
13
15
17
18
20
slice_segment_layer_rbsp()
23
RSV_VCL31
40
SUFFIX_SEI_NUT
UNSPEC63
Таблица (4)
[0254] Со ссылкой на Таблицу (5), синтаксис заголовка блока NAL может включать в себя два байта данных, а именно, 16 битов. Первый бит - "forbidden_zero_bit", который всегда устанавливается в нуль в начале блока NAL. Следующие шесть битов - "nal_unit_type", каковое задает тип структуры данных полезных нагрузок необработанных последовательностей байтов ("RBSP"), содержащейся в блоке NAL, как показано в Таблице (4). Следующие 6 битов - "nuh_layer_id", которые задают идентификатор уровня. В некоторых случаях эти шесть битов могут указываться как "nuh_reserved_zero_6bits" вместо этого. Значение nuh_reserved_zero_6bits может быть равным 0 в базовой спецификации стандарта. В масштабируемом кодировании видеоданных и/или расширениях синтаксиса nuh_layer_id может указывать, что этот конкретный блок NAL принадлежит уровню, идентифицированному значением этих 6 битов. Следующий синтаксический элемент - "nuh_temporal_id_plus1". Значение nuh_temporal_id_plus1 минус 1 может задавать временный идентификатор для блока NAL. Переменный временный идентификатор TemporalId может быть определен как TemporalId=nuh_temporal_id_plus1-1. Временный идентификатор TemporalId используется для идентификации временного подуровня. Переменная HighestTid идентифицирует высший временный подуровень, подлежащий декодированию.
[0255] [Таблица 5]
[0256] Таблица (6) показывает синтаксическую структуру примерного набора параметров последовательности (SPS).
[0257] Значение pic_width_in_luma_samples задает ширину каждого декодированного изображения в единицах выборок яркости. Значение pic_width_in_luma_samples не должно быть равным 0.
[0258] Значение pic_height_in_luma_samples задает высоту каждого декодированного изображения в единицах выборок яркости. Значение pic_height_in_luma_samples не должно быть равным 0.
[0259] Значение sps_max_sub_layers_minus1 плюс 1 задает максимальное количество временных подуровней, которые могут присутствовать в каждом CVS, ссылающемся на SPS. Значение sps_max_sub_layers_minus1 должно находиться в диапазоне от 0 до 6, включительно.
[0260] Значение sps_sub_layer_ordering_info_present_flag флаг, равное 1, задает, что синтаксические элементы sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i] и sps_max_latency_increase_plus1[i] присутствуют для sps_max_sub_layers_minus1+1 подуровней. Значение sps_sub_layer_ordering_info_present_flag, равное 0, задает, что значения sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1], sps_max_num_reorder_pics [sps_max_sub_layers_minus1] и sps_max_latency_increase_plus1 [sps_max_sub_layers_minus1] применяют ко всем подуровням.
[0261] Значение sps_max_dec_pic_buffering_minus1[i] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS в единицах буферов хранения изображений, когда HighestTid равен i. Значение sps_max_dec_pic_buffering_minus1[i] будет находиться в диапазоне от 0 до MaxDpbSize - 1, включительно, где MaxDpbSize задает максимальный размер буфера декодированных изображений в единицах буферов хранения изображений. Когда i будет больше, чем 0, sps_max_dec_pic_buffering_minus1[i] будет больше или равно sps_max_dec_pic_buffering_minus1[i-1]. Когда sps_max_dec_pic_buffering_minus1[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, из-за являющегося равным 0 флага sps_sub_layer_ordering_info_present_flag, подразумевают, что оно будет равным sps_max_dec_pic_buffering_minus1 [sps_max_sub_layers_minus1].
[0262] Значение sps_max_num_reorder_pics[i] указывает максимальное допустимое число изображений, которые могут предшествовать какому-либо изображению в CVS по порядку декодирования и следовать за этим изображением по порядку вывода, когда HighestTid равно i. Значение sps_max_num_reorder_pics[i] будут находиться в диапазоне от 0 до sps_max_dec_pic_buffering_minus1[i], включительно. Когда i больше, чем 0, sps_max_num_reorder_pics[i] будет больше или равно sps_max_num_reorder_pics[i-1]. Когда sps_max_num_reorder_pics[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, из-за являющегося равным 0 флага sps_sub_layer_ordering_info_present_flag, подразумевают, что оно будет равным sps_max_num_reorder_pics[sps_max_sub_layers_minus1].
[0263] Значение sps_max_latency_increase_plus1[i], не равное 0, используется, чтобы вычислить значение SpsMaxLatencyPictures[i], которое задает максимальное количество изображений, которые могут предшествовать какому-либо изображению в CVS по порядку вывода и следуют за этим изображением по порядку декодирования, когда HighestTid равен i.
[0264] Когда sps_max_latency_increase_plus1[i] не равно 0, значение SpsMaxLatencyPictures[i] задается, как изложено ниже:
[0265] SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_increase_plus1[i]-1.
[0266] Когда sps_max_latency_increase_plus1[i] равно 0, соответствующее предельное значение не выражено.
[0267] Значение sps_max_latency_increase_plus1[i] будут находиться в диапазоне от 0 до 232-2, включительно. Когда sps_max_latency_increase_plus1[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, из-за являющегося равным 0 флага sps_sub_layer_ordering_info_present_flag, подразумевают, что оно будет равным sps_max_latency_increase_plus1[sps_max_sub_layers_minus1].
[0268] [Таблица 6]
[0269] Когда текущее изображение является изображением IRAP, применяется следующее:
[0270] - Если текущим изображением является изображение IDR, изображение BLA, первое изображение в битовом потоке по порядку декодирования или первое изображение, которое следует за концом последовательности блока NAL по порядку декодирования, переменную NoRaslOutputFlag устанавливают равной 1.
[0271] - Иначе, если некоторое внешнее средство является доступным для установки переменной HandleCraAsBlaflag в значение для текущего изображения, переменную HandleCraAsBlaFlag устанавливают равной значению, обеспеченному этим внешним средством, и переменную NoRaslOutputFlag устанавливают равной HandleCraAsBlaflag.
[0272] - Иначе, переменную HandleCraAsBlaflag устанавливают равной 0, и переменную NoRaslOutputFlag устанавливают равной 0.
[0273] Если текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, которое не является изображением 0, применяют следующие упорядоченные этапы:
[0274] 1. Переменную NoOutputOfPriorPicsFlag получают для испытываемого декодера, как изложено ниже:
[0275] - Если текущее изображение является изображением CRA, NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).
[0276] - Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученных из SPS, активного для предшествующего изображения, флаг NoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag.
[0277] - Иначе NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.
[0278] 2. Значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, как изложено ниже:
[0279] - Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения в DPB очищаются без вывода изображений, которые они содержат, и заполненность DPB устанавливают равной 0.
[0280] - Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB очищают путем многократного инициирования процесса "сбрасывания" 1204, и заполненность DPB устанавливают равной 0.
[0281] - Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1), все буферы хранения изображения, содержащие изображение, которые помечены как "не требуемое для вывода" и "не используемое для ссылки", очищаются (без вывода). Для каждого буфера хранения изображения, который очищен, заполненность DPB уменьшается на единицу. Когда одно или большее число из следующих условий являются истиной, процесс "сбрасывания" 1204 вызывают многократно при дальнейшем уменьшении заполненности DPB на единицу для каждого добавочного буфера хранения изображения, который очищен, пока ни одно из следующих условий не является истиной:
[0282] 1. Число изображений с этим конкретным значением nuh_layer_id в DPB, которые помечены как "необходимые для вывода", больше чем sps_max_num_reorder_pics[HighestTid] из активного набора параметров последовательности (когда это конкретное значение nuh_layer_id равно 0), или из набора параметров последовательности активного уровня для этого конкретного значения nuh_layer_id.
[0283] 2. Если sps_max_latency_increase_plus1[HighestTid] из активного набора параметров последовательности (когда это конкретное значение nuh_layer_id равно 0) или из набора параметров последовательности активного уровня для этого конкретного значения nuh_layer_id не является равным 0, и имеется, по меньшей мере, одно изображение с этим конкретным значением nuh_layer_id в DPB, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount больше чем или равна SpsMaxLatencyPictures[HighestTid] для этого конкретного значения nuh_layer_id.
[0284] 3. Число изображений с этим конкретным значением nuh_layer_id в DPB больше чем или равно sps_max_dec_pic_buffering[HighestTid]+1 из активного набора параметров последовательности (когда это конкретное значение nuh_layer_id равно 0) или из набора параметров последовательности активного уровня для этого конкретного значения nuh_layer_id.
[0285] Процесс декодирования изображения на этапе 1206 (декодирование и пометка изображения) происходит немедленно, когда последний блок декодирования в блоке доступа, содержащем текущее изображение, удаляется из CPB.
[0286] Для каждого изображения со значением nuh_layer_id, равным значению nuh_layer_id текущего изображения в DPB, которое помечено как "требуемое для вывода", связанную переменную PicLatencyCount устанавливают равной PicLatencyCount+1.
[0287] Текущее изображение считается декодированным после того, как декодирован последний блок декодирования в изображении. Текущее декодированное изображение сохраняют в DPB в пустом буфере хранения изображения и применяют следующее:
[0288] - Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount устанавливают равной 0.
[0289] - Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода".
[0290] Текущее декодированное изображение помечают как "используемое для краткосрочной ссылки".
[0291] Когда одно или несколько из следующих условий истинны, дополнительный процесс "сбрасывания" 1208 вызывают многократно, пока ни одно из следующих условий не является истиной:
[0292] - Число изображений со значением nuh_layer_id, равным значению nuh_layer_id текущего изображения в DPB, которые помечены как "необходимые для вывода", больше чем sps_max_num_reorder_pics[HighestTid] из активного набора параметров последовательности (когда значение nuh_layer_id текущего изображения равно 0) или из набора параметров последовательности активного уровня для значения nuh_layer_id текущего изображения.
[0293] - sps_max_latency_increase_plus1[HighestTid] из активного набора параметров последовательности (когда значение nuh_layer_id текущего изображения равно 0) или из набора параметров последовательности активного уровня для значения nuh_layer_id текущего изображения не является равным 0, и имеется, по меньшей мере, одно изображение с этим конкретным значением nuh_layer_id в DPB, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount больше чем или равна SpsMaxLatencyPictures[HighestTid] для этого конкретного значения nuh_layer_id.
[0294] Процесс "сбрасывания" 1204 и дополнительный процесс сбрасывания 1208 являются идентичными в терминах этапов, и состоит из следующих упорядоченных этапов: Изображения, которые являются первыми для вывода, выбирают как таковые с наименьшим значением счетчика очередности изображения (PicOrderCntVal) всех изображений в DPB, помеченных как "требуемое для вывода". Счетчик очередности изображения - переменная, которая связана с каждым изображением, однозначно идентифицирует связанное изображение среди всех изображений в CVS, и, когда связанное изображение подлежит выводу из буфера декодированных изображений, указывает позицию связанного изображения по порядку вывода относительно позиций очередности вывода других изображений в том же CVS, которые подлежат выводу из буфера декодированных изображений.
[0295] - Эти изображения обрезают, используя окно соответствия условию обрезки, заданное в активном наборе параметров последовательности для изображения с nuh_layer_id, равным 0, или в наборе параметров последовательности активного уровня для значения nuh_layer_id, равный таковому для изображения, обрезанные изображения выводят по порядку возрастания nuh_layer_id, и изображения помечают как "не требуемое для вывода".
[0296] - Каждый буфер хранения изображения, который содержит изображение, помеченное как "не используемое для ссылки", и который включал одно из изображений, которое было обрезано и выведено, очищают.
[0297] Что касается фиг.13A, как предварительно описано, синтаксис заголовка блока NAL может включать в себя два байта данных, а именно, 16 битов. Первый бит - "forbidden_zero_bit", который всегда устанавливается в нуль в начале блока NAL. Следующие шесть битов - "nal_unit_type", который задает тип структуры данных полезных нагрузок необработанных последовательностей байтов ("RBSP"), содержащейся в блоке NAL. Следующие 6 битов - "nuh_reserved_zero_6bits". nuh_reserved_zero_6bits может быть равным 0 в базовой спецификации стандарта. Другие значения nuh_reserved_zero_6bits могут быть определены, как необходимо. Декодеры могут игнорировать (то есть, удалять из битового потока и отбрасывать) все блоки NAL со значениями nuh_reserved_zero_6bits, не равными 0, при обработке потока на основании базовой спецификации стандарта. В масштабируемом или другом расширении nuh_reserved_zero_6bits может задавать другие значения, чтобы сигнализировать расширения масштабируемого кодирования видео и/или синтаксиса. В некоторых случаях синтаксический элемент nuh_reserved_zero_6bits может называться reserved_zero_6bits. В некоторых случаях синтаксический элемент nuh_reserved_zero_6bits может называться layer_id_plus1 или layer_id, как проиллюстрировано на фиг.13B и фиг.13C. В этом случае элементом layer_id будет layer_id_plus1 минус 1. В этом случае он может использоваться, чтобы сигнализировать информацию, связанную с уровнем масштабируемого кодированного видео. Следующим синтаксическим элементом является "nuh_temporal_id_plus1". Значение nuh_temporal_id_plus1 минус 1 может задавать временный идентификатор для блока NAL. Переменная «временный идентификатор» TemporalId может быть определена как TemporalId=nuh_temporal_id_plus1-1.
[0298] Со ссылкой на фиг.14, иллюстрируется общая синтаксическая структура блока NAL. Синтаксис двух байтов заголовка блока NAL по фиг.13 включен в ссылку на nal_unit_header() по фиг.14. Оставшаяся часть синтаксиса блока NAL в основном относится к RBSP.
[0299] Один существующий способ для использования "nuh_reserved_zero_6bits" состоит в сигнализации информации масштабируемого кодирования видео путем разделения 6 битов nuh_reserved_zero_6bits на отдельные битовые поля, а именно, одно или более полей из идентификатора (ID) зависимости, ID качества, ID вида и флага глубины, каждое из которых относится к идентификации другого уровня масштабируемого кодированного видео. Соответственно, 6 битов указывают уровень для способа масштабируемого кодирования, к которому принадлежит этот конкретный блок NAL. Затем в полезной нагрузке данных, такой как синтаксис ("scalability_type") расширения набора параметров видео ("VPS"), как проиллюстрировано на фиг.15, дается определение информации об уровне. Синтаксис расширения VPS по фиг.15 включает в себя 4 бита для типа масштабируемости (синтаксический элемент scalability_type), который описывает типы масштабируемости в использовании в кодированной видеопоследовательности и измерения, сигнализированные посредством layer_id_plus1 (или layer_id) в заголовке блока NAL. Когда тип масштабируемости равен 0, кодированная видеопоследовательность соответствует базовой спецификации, таким образом layer_id_plus1 для всех блоков NAL равен 0 и нет блоков NAL, принадлежащих слою или виду улучшения. Старшие значения типа масштабируемости интерпретируют, как проиллюстрировано на фиг.16.
[0300] Значение layer_id_dim_len[i] задает длину, в битах, i-ого идентификатора измерения масштабируемости. Сумма значений layer_id_dim_len[i] для всех значений i в диапазоне от 0 до 7, меньше чем или равна 6. Значение vps_extension_byte_alignment_reserved_zero_bit является нулем. Значение vps_layer_id[i] задает значение layer_id i-ого уровня, к которому применяется последующая информация зависимости уровня. Значение num_direct_ref_layers[i] задает число уровней, от которых непосредственно зависит i-ый уровень. Значение ref_layer_id[i][j] идентифицирует j-ый уровень, от которого непосредственно зависит i-ый уровень.
[0301] Таким образом, существующий способ сигнализирует идентификаторы масштабируемости в блоке NAL и в наборе параметров видео, чтобы распределить биты среди типов масштабируемости, перечисленных на фиг.16. Затем для каждого типа масштабируемости, фигура 16 задает, сколько измерений поддерживаются. Например, тип 1 масштабируемости имеет 2 измерения (то есть, пространственное и качества). Для каждого из измерений layer_id_dim_len[i] задает число битов, распределенных каждому из этих двух измерений, где полная сумма всех значений layer_id_dim_len[i] меньше чем или равна 6, которое является числом битов в поле nuh_reserved_zero_6bits в заголовке блока NAL. Таким образом, в совокупности способ идентифицирует, какие типы масштабируемости используются, и каким образом 6 битов заголовка блока NAL распределены среди масштабируемости.
[0302] Хотя такая фиксированная комбинация различных измерений масштабируемости, как проиллюстрирована на фиг.16, является подходящей для многих приложений, имеются желательные комбинации, которые не включены. Со ссылкой на фиг.17, модифицированный синтаксис расширения набора параметров видео описывает тип масштабируемости для каждого бита в синтаксическом элементе nuh_reserved_zero_6bits. Значение vps_extension_byte_alignment_reserved_zero_bit устанавливают в 0. Значение max_num_layers_minus1_bits указывает общее количество битов, используемых для синтаксического элемента, в первых двух байтах заголовка блока NAL на фиг.13, именуемых layer_id_plus1 или nuh_reserved_zero_6bits. Значение scalability_map[i] задает тип масштабируемости для каждого бита в синтаксическом элементе layer_id_plus1. В некотором случае синтаксический элемент layer_id_plus1 вместо этого может называться синтаксическим элементом nuh_reserved_zero_6bits или reserved_zero_6bits. Карта масштабируемости для всех битов синтаксического элемента layer_id_plus1 совместно задает в кодированной видеопоследовательности масштабируемость в использовании. Фактическое значение идентификатора для каждого из типов масштабируемости сигнализируется посредством этих соответствующих битов в поле layer_id_plus1 (nuh_reserved_zero_6bits) в заголовке блока NAL. Когда scalability_map[i] равно 0 для всех значений i, кодированная видеопоследовательность соответствует базовой спецификации, таким образом, значение layer_id_plus1 блоков NAL равно 0 и не имеется блоков NAL, принадлежащих уровню улучшения или виду. Элемент vps_layer_id[i] задает значение layer_id для i-ого уровня, к которому применяется последующая информация зависимости уровней. Значение num_direct_ref_layers[i] задает число уровней, от которых непосредственно зависит i-ый уровень. Значение ref_layer_id[i][j] идентифицирует j-ый уровень, от которого непосредственно зависит i-ый уровень.
[0303] Старшие значения scalability_map[i] интерпретируют, как показано на фиг.18. scalability_map[i] включает измерения масштабируемости из (0) ни одно; (1) пространственное; (2) качество; (3) глубина; (4) многовидовое; (5) не определено; (6) зарезервировано; и (7) зарезервировано.
[0304] Следовательно, каждый бит в заголовке блока NAL интерпретируется на основании 3 битов в наборе параметров видео относительно того, каково измерение масштабируемости (например, ни одно, пространственное, качество, глубина, многовидовое, не определено, зарезервировано). Например, чтобы сигнализировать, что все биты в layer_id_plus1 соответствуют пространственной масштабируемости, значения scalability_map в VPS могут кодироваться в виде 001 001 001 001 001 001 для 6 битов заголовка блока NAL. Также, например, чтобы сигнализировать, что 3 бита в layer_id_plus1 соответствуют пространственной масштабируемости, и 3 бита соответствуют масштабируемости качества, значения scalability_map в VPS могут кодироваться в виде 001 001 001 010 010 010 для 6 битов заголовка блока NAL.
[0305] Со ссылкой на фиг.19, другое исполнение включает в себя набор параметров видео, сигнализирующий число измерений масштабируемости в 6 битах заголовка блока NAL с использованием num_scalability_dimensions_minus1. Значение num_scalability_dimensions_minus1 плюс 1 указывает число измерений масштабируемости, сигнализированных посредством layer_id_plus1; nuh_reserved_zero_6bits; и/или синтаксических элементов reserved_zero_6bits. Элемент scalability_map[i] имеет такую же семантику, как описано выше в отношении фиг.17. Значение num_bits_for_scalability_map[i] задает длину в битах для I-ого измерения масштабируемости. Сумма всех num_bits_for_scalability_map[i] для i=0..num_scalability_dimensions_minus1 является равной шести (или иначе равной числу битов, используемых для layer_id_plus1; vps_reserved_zero_6bits; max_num_layers_minus1; reserved_zero_6bits; синтаксических элементов nuh_reserved_zero_6bits).
[0306] В отношении фиг.17 и фиг.19 могут использоваться другие варианты, если желательно. В одном варианте осуществления, например, scalability_map[i] может сигнализироваться с помощью u(4) (или u(n) с n> 3 или n<3). В этом случае старшие значения scalability_map[i] могут задаваться как резервированные для битовых потоков, соответствующих конкретному профилю видеотехники. Например, значения 6..15 карты масштабируемости может быть определены как 'резервированные' при сигнализации scalability_map[i] с помощью u(4). В другом осуществлении, например, scalability_map[i] может сигнализироваться с помощью ue(v) или некоторой другой схемы кодирования. В другом исполнении, например, ограничение может быть задано так, что значения scalability_map[i] расположены в монотонно неубывающем (или невозрастающем) порядке. Это приводит к являющимся граничными полям измерения масштабируемости в поле layer_id_plus1 в заголовке блока NAL.
[0307] Другой существующий способ для сигнализации масштабируемого кодирования видео с использованием синтаксического элемента "layer_id_plus1" или "nuh_reserved_zero_6bits" состоит в отображении layer_id_plus1 в заголовке блока NAL на идентификационную информацию уровня путем сигнализации общей справочной таблицы в наборе параметров видео. Со ссылкой на фиг.20, существующий способ включает в себя набор параметров видео, который задает число типов измерений и идентификации измерений для i-ого уровня в справочной таблице. В частности vps_extension_byte_alignment_reserved_zero_bit является нулем. Значение num_dimensions_minus1[i] плюс 1 задает число типов измерений (dimension_type[i][j]) и идентификаторы измерений (dimension_id[i][j]) для i-ого уровня. Значение dimension_type[i][j] задает j-ый тип измерения масштабируемости i-ого уровня, у которого layer_id или layer_id_plus1 равен i, как определено на фиг.31. Как проиллюстрировано на фиг.21, измерения, которые идентифицированы, включают в (0) индекс (idx) очередности представления; (1) флаг глубины; (2) ID зависимости; (3) ID качества; (4) - (15) зарезервировано. Значение dimension_id[i][j] задает идентификатор j-ого типа измерения масштабируемости i-ого уровня, который если не присутствует, полагается являющимся 0. значение num_direct_ref_layers[i] задает число уровней, от которых непосредственно зависит i-ый уровень. Значение ref_layer_id[i][j] идентифицирует j-ый уровень, от которого непосредственно зависит i-ый уровень. К сожалению, предложенное осуществление, иллюстрируемое на фиг.20, приводит к громоздкой справочной таблице.
[0308] Со ссылкой на фиг.22, модифицированное расширение набора параметров видео включает в себя маску масштабируемости, которая используется в сочетании с измерением масштабируемости. scalability_mask сигнализирует комбинацию битов 0 и 1, причем каждый бит соответствует одному измерению масштабируемости, как указано синтаксисом карты масштабируемости по фиг.23. Значение 1 для конкретного измерения масштабируемости задает, что это измерение масштабируемости присутствует на этом уровне (I-ый уровень). Значение 0 для конкретного измерения масштабируемости задает, что это измерение масштабируемости не присутствует на этом уровне (I-ом уровне). Например, набор битов 00100000 относится к масштабируемости качества. Фактическое значение идентификатора конкретного измерения масштабируемости, которое присутствует, указывается посредством сигнализированного значения scalability_id[j]. Значения num_scalability_types[i] равено сумме числа битов в scalability_mask, имеющих значение 1. Таким образом
[0309] [Математическое выражение 9]
[0310] Значение scalability_id[j] указывает значение идентификатора j-ого измерения масштабируемости для типа значений масштабируемости, которые сигнализированы посредством значения scalability_mask.
[0311] Со ссылкой на фиг.24, модификации фиг.22, включает в себя маску масштабируемости, сигнализируемую вне цикла. Это приводит к одной общей маске для каждой идентификации уровня. Со ссылкой на фиг.25, в этой модификации соответствующий примерный набор параметров видео может включать в себя масштабируемую идентификацию с не включаемой маской масштабируемости. В этом случае синтаксический элемент scalable_id[j] имеет такую же интерпретацию, как синтаксический элемент scalability_id[j] на фиг.22.
[0312] Со ссылкой на фиг.26 модификация фиг.22 включает в себя маску масштабируемости (scalability_mask), сигнализируемую вне цикла. Это приводит к одной общей маске для каждой идентификации уровня. scalability_mask сигнализирует комбинацию битов 0 и 1, причем каждый бит соответствует одному измерению масштабируемости, как указано синтаксисом карты масштабируемости по фиг.27. Значение 1 для конкретного измерения масштабируемости задает, что это измерение масштабируемости присутствует в этом уровне (i-ом уровне). Значение 0 для конкретного измерения масштабируемости задает, что это измерение масштабируемости не присутствует в этом уровне (i-ом уровне). Например, набор битов 00100000 относится к масштабируемости по качеству. Фактическое значение идентификатора конкретного измерения масштабируемости, которое присутствует, указывается посредством сигнализированного значения scalability_id[j]. Значения из num_scalability_types[i] равны сумме числа битов в scalability_mask, имеющих значение 1. Таким образом
[0313] [Математическое выражение 10]
[0314] В этом случае переменная scalability_id[j] может вместо этого называться переменной dimension_id[i][j]. Элемент dimension_id[i][j] задает идентификатор j-ого измерения масштабируемости для i-ого уровня. Затем переменную Scalabilityld[i][j] получают, как изложено ниже.
[0315] [Таблица 7]
[0316] Где ScalabilityId [i][k] сигнализирует ID измерения для соответствующего типа масштабируемости, как изложено ниже.
[0317] [Таблица 8]
[0318] Где DependencyId[i][1] является ID зависимости для измерения пространственной масштабируемости для i-ого уровня, QualityId[i][2] является ID качества для измерения масштабируемости качества для i-ого уровня, depthFlag[i][3] является флагом глубины/ID глубины для измерения масштабируемости глубины для i-ого уровня, и ViewId[i][4] является ID вида для измерения многовидовой масштабируемости для i-ого уровня.
[0319] Также на фиг.26 флаг avc_base_codec_flag, равный 1, задает, что базовый уровень соответствует рекомендациям Rec. ITU-T H.264 | ISO/IEC 14496-10, и флаг avc_base_codec_flag, равный 1, задает соответствие HEVC. Флаг vps_nuh_layer_id_presnet_flag указывает, сигнализируется ли переменная layer_id_in_nuh[i], которая сигнализирует значение layer_id в заголовке блока NAL.
[0320] В другом исполнении один или несколько элементов из синтаксических элементов scalability_mask[i], scalability_mask, scalability_id[j] можно сигнализировать, используя число битов, отличное от u(8). Например, их можно сигнализировать с помощью u(16) (или u(n) при n>8 или n<8). В другом исполнении один или более из этих синтаксических элементов может быть сигнализирован с помощью ue(v). В другом исполнении scalability_mask может быть сигнализирована в заголовке блока NAL в синтаксических элементах layer_id_plus1; vps_reserved_zero_6bits; max_num_layers_minus1; reserved_zero_6bits; и/или nuh_reserved_zero_6bits. В некоторых вариантах осуществления система может делать это только для блоков NAL VPS, или только для блоков NAL, не соответствующих VPS, или для всех блоков NAL. В еще одном осуществлении scalability_mask может быть сигнализирована на каждое изображение где-либо в битовом потоке. Например, она может быть сигнализирована в заголовке слайса, наборе параметров изображения, наборе параметров видео или любом другом наборе параметров или любой другой нормативной части битового потока.
Следует отметить, что фигуры фиг.13, 15, 18, 20, 21, 22, 23 и соответствующее описание ссылаются на 6 битов, поскольку синтаксический элемент nuh_reserved_zero_6bits или layer_id_plus1 в заголовке блока NAL по фиг.13 занимает 6 битов. Однако все вышеуказанное описание может быть надлежаще модифицировано, если этот синтаксический элемент использовал число битов другое, чем 6 битов. Например, если этот синтаксический элемент (nuh_reserved_zero_6bits или layer_id_plus1) вместо этого использовал 9 битов, то на фиг.17, значением max_num_layer_minus1 в битах будет 9, и scalability_map[i] будет сигнализироваться для каждого из 9 битов вместо 6 битов.
[0322] Со ссылкой на фиг.24 модификация фиг.22 обеспечивает синтаксис для сигнализации информации зависимости уровней. Определен новый синтаксический элемент layer_dependency_information_pattern.
[0323] Элемент layer_dependency_information_pattern сигнализирует комбинацию битов 0 и 1, имеющую длину, равную vps_max_layers_minus1. Значение 0 для i-ого бита задает, что уровень с layer_id(i+1) является независимым уровнем. Значение 1 для i-ого бита задает, что уровень с layer_id(i+1) является зависимым уровнем, который зависит от одного или нескольких других уровней.
[0324] Значение NumDepLayers равно сумме числа битов в layer_dependency_information_pattern, имеющих значение 1. Таким образом
[0325] [Математическое выражение 11]
[0326] Со ссылкой на фиг.29 модификация фиг.26 обеспечивает синтаксис для сигнализации информации зависимости уровней. Определен новый синтаксический элемент layer_dependency_flag[i]. Элемент layer_dependency_flag[i] сигнализирует, зависит ли уровень от других уровней. Значение 0 для флага задает, что уровень с layer_id (соответствующим) i является независимым уровнем. Значение 1 для i-ого бита задает, что уровень с layer_id i является зависимым уровнем.
[0327] Со ссылкой на фиг.30 модификация фиг.26 обеспечивает синтаксис для сигнализации информации зависимости уровней. Определен новый синтаксический элемент layer_dependency_map[i]. Элемент layer_dependency_map[i] сигнализирует комбинацию битов 0 и 1, имеющую длину, равную vps_max_layers_minus1. Значение 0 для k-ого бита layer_dependency_map[i] задает, что уровень i не зависит от уровня с layer_id(k+1). Значение 1 для k-ого бита layer_dependency_map[i] задает, что уровень i зависит от уровня с layer_id(k+1).
[0328] Что касается фиг.31, модификация по фиг.26 обеспечивает синтаксис для сигнализации информации зависимости уровней. Определен новый синтаксический элемент layer_dependency_information_pattern.
[0329] Элемент layer_dependency_information_pattern сигнализирует комбинацию битов 0 и 1, имеющую длину vps_max_layers_minus1. Значение 0 для i-ого бита задает, что уровень с layer_id(i+1) является независимым уровнем. Значение 1 для i-ого бита задает, что уровень с layer_id(i+1) является зависимым уровнем, который зависит от одного или нескольких других уровней. Значение NumDepLayers равно сумме числа битов в layer_dependency_information_pattern, имеющих значение 1. Таким образом
[0330] [Математическое выражение 12]
[0331] Элемент layer_dependency_map[i] сигнализирует комбинацию битов 0 и 1, имеющую длину vps_max_layers_minus1. Значение 0 для k-ого бита в layer_dependency_map[i] задает, что уровень i не зависит от уровня с layer_id(k+1). Значение 1 для k-ого бита layer_dependency_map[i] задает, что уровень i зависит от уровня с layer_id(k+1).
[0332] Со ссылкой на фиг.32 модификация фиг.26 обеспечивает синтаксис для сигнализации информации зависимости уровней. Фиг.28 приводит другой синтаксис, основанный на синтаксисе по фиг.27. Определен новый синтаксический элемент layer_dependency_information_pattern.
[0333] Элемент layer_dependency_information_pattern сигнализирует комбинацию битов 0 и 1, имеющую длину vps_max_layers_minus1. Значение 0 для i-ого бита задает, что уровень с layer_id(i+1) является независимым уровнем. Значение 1 для i-ого бита задает, что уровень с layer_id(i+1) является зависимым уровнем, который зависит от одного или более других уровней.
[0334] Значение NumDepLayers равно сумме числа битов в layer_dependency_information_pattern, имеющих значение 1.
[0335] [Математическое выражение 13]
[0336] Синтаксические элементы num_direct_ref_layers[i] и ref_layer_id[i][j] сигнализируют только, если layer_dependency_information_pattern(i) имеет значение 1. Где layer_depdndency_information_pattern(i) является i-ым битом синтаксического элемента layer_dependency_pattern.
[0337] Со ссылкой на фиг.33 модификация фиг.26 обеспечивает синтаксис для сигнализации информации зависимости уровней. Фигура фиг.29 является другим синтаксисом, основанным на синтаксисе по фиг.31. Определен новый синтаксический элемент layer_dependency_information_pattern.
[0338] Элемент layer_dependency_information_pattern сигнализирует комбинацию битов 0 и 1, имеющую длину vps_max_layers_minus1. Значение 0 для i-ого бита задает, что уровень с layer_id(i+1) является независимым уровнем. Значение 1 для i-ого бита задает, что уровень с layer_id(i+1) является зависимым уровнем, который зависит от одного или более других уровней.
[0339] Значение NumDepLayers равно сумме числа битов в layer_dependency_information_pattern, имеющих значение 1. Таким образом
[0340] [Математическое выражение 14]
[0341] Элемент layer_dependency_map[i] сигнализирует комбинацию битов 0 и 1, имеющую длину vps_max_layers_minus1. Значение 0 для k-ого бита layer_dependency_map[i] задает, что уровень i не зависит от уровня с layer_id(k+1). Значение 1 для k-ого бита layer_dependency_map[i] задает, что уровень i зависит от уровня с layer_id(k+1). Синтаксические элементы layer_dependency_map[i] сигнализируют только, если layer_dependency_information_pattern(i) имеет значение 1. Где layer_depdndency_information_pattern(i) является i-ым битом синтаксического элемента layer_dependency_pattern.
[0342] В другом исполнении layer_dependency_information_pattern синтаксический элемент может сигналироваться в виде набора значений 1-битовых флагов. В этом случае в общем vps_max_layers_minus1 1-битовых значений будет сигнализироваться в виде:
[0343] [Таблица 9]
[0344] В другом исполнении синтаксический элемент layer_dependency_map[i] может сигналироваться в виде набора значений 1-битовых флагов. В этом случае общее число vps_max_layers_minus1 1-битовых значений будут сигнализировано в виде:
[0345] [Таблица 10]
[0346] В другом исполнении один или несколько элементов из синтаксических элементов layer_dependency_information_pattern, layer_dependency_map можно сигнализировать, используя известное постоянное число битов вместо u(v). Например, их можно сигнализировать, используя u(64).
[0347] В другом исполнении один или несколько элементов из нескольких синтаксических элементов layer_dependency_information_pattern, layer_dependency_map можно сигнализировать с помощью ue(v) или некоторой другой схемы кодирования.
[0348] В другом исполнении имена различных синтаксических элементов и их семантика могут быть изменены путем сложения plus1 или plus2 или вычитания minus1 или minus2 по сравнению с описанными синтаксисом и семантикой.
[0349] В еще одном осуществлении различные синтаксические элементы, такие как layer_dependency_information_pattern, layer_dependency_map, layer_dependency_flag[i] и т.д., могут быть сигнализированы на каждое изображение где-либо в битовом потоке. Например, это можно сигнализировать в заголовке слайса, pps/ sps/ vps/ aps или любом другом наборе параметров или другой нормативной части битового потока.
[0350] Как предварительно описано, масштабируемое кодирование видео является способом кодирования битового потока видеоданных, который также содержит один или большее число подмножеств битовых потоков. Подмножество битового потока видеоданных можно получать, отбрасывая пакеты из более больших по размеру видеоданных, чтобы уменьшить полосу пропускания, требуемую для битового потока подмножества. Битовый поток подмножества может представлять видеосигнал более низкого пространственного разрешения (меньшего экрана), более низкого временного разрешения (более низкой частоты кадров) или более низкого качества. Например, битовый поток видео может включать в себя 5 подмножеств битовых потоков, где каждый из битовых потоков подмножества добавляет дополнительный контент к базовому битовому потоку. Документ Hannuksela, и др., "Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC)" в JCTVC-L0453, Шанхай, октябрь 2012, тем самым полностью включен в документ путем ссылки. Документ Chen, и др., "SHVC Draft Text 1", в JCTVC-L1008, Женева, март 2013, тем самым полностью включен в документ путем ссылки. Документ Wang, и др., "AHG9: On VPS and SPS in HEVC 3DV and scalable extensions", в JCTVC-M0268, Инчхон, апрель 2013 тем самым полностью включен в документ путем ссылки.
[0351] Как предварительно описано, многовидовое кодирование видео является способом кодирования битового потока видео, который содержит также один или большее число других битовых потоков, представляющих альтернативные виды. Например, множественные виды могут быть парой видов для стереоскопического видео. Например, множественные виды могут представлять множественные виды той же сцены с различных точек обзора. Множественные виды обычно содержат большое количество межвидовых статистических зависимостей, поскольку изображения являются той же сценой с различных точек обзора. Следовательно, объединенное временное и межвидовое предсказание может обеспечить эффективное многовидовое кодирование. Например, кадр может быть эффективно предсказан не только исходя из временно связанных кадров, но также и из кадров соседних точек обзора. Документ Hannuksela, и др., "Common specification text for scalable and multi- view extensions", JCTVC-L0452, Женева, январь 2013, тем самым полностью включен в документ путем ссылки. Документ Tech и др., "MV-HEVC Draft Text 3 (ISO/IEC 23008-2:201x/PDAM2)", JCT3V-C1004_d3, Женева, январь 2013, тем самым полностью включен в документ путем ссылки.
[0352] Документы Chen, и др., "SHVC Draft Text 1"," JCTVC-L1008, Женева, январь 2013; Hannuksela, и др., "Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC)", JCTVC-L0453-spec-text, Шанхай, октябрь 2012; и Hannuksela, "Draft Text for Multiview Extension of High Efficiency Video Coding (HEVC)", JCTVC-L0452-spec-text-rl, Шанхай, октябрь 2012; каждый из которых полностью включен в документ путем ссылки. В документах JCTVC-L0452 и JCTVC-L0453 в каждом имеется понятие рабочих точек вывода. Оно позднее было изменено на понятие наборов уровней вывода в JCTVC-L1008. Относительно синтаксических элементов, элементы num_output_operation_points, output_op_point_index[] и output_layer_flag[][] определены для рабочих точек вывода в JCTVC-L0453 и LCTVC-L0452, и модифицированы в num_output_layer_sets, output_layer_set_idx[] и output_layer_flag[][] в JCTVC-L1008. В каждом из таких документов определено сообщение SEI об изменении зависимости уровня. Сообщение SEI позволяет сигнализацию изменений информации зависимости уровня, начиная с текущего блока доступа, содержащего сообщение SEI.
[0353] В документах Chen, и др., "SHVC Draft Text 1", JCTVC-L1008, Женева, январь 2013; Hannuksela, и др. "Test Model for Scalable Extensions of High Efficiency Video Coding (HEVC)", JCTVC-L0453-spec-text, Шанхай, октябрь 2012; и Hannuksela, "Draft Text for Multiview Extension of High Efficiency Video Coding (HEVC)", JCTVC-L0452-spec-text-rl, Шанхай, октябрь 2012; каждый из которых полностью включен в документ путем ссылки, в каждом описан буфер декодированных изображений (DPB) по порядку вывода, который работает на основе использования синтаксических элементов sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] и sps_max_dec_pic_buffering[HighestTid] для вывода и удаления изображений 0 из DPB. Эта информация сигнализируется в наборе параметров видео для базового уровня, который предоставляет информацию буферизации для контента видео, включая уровни улучшения, если таковые имеются.
[0354] Со ссылкой на фиг.34, иллюстрируется другой пример набора параметров видео. В частности набор параметров видео по фиг.34 включает в себя ссылку на связанное расширение набора параметров видео (vps_extension). Элемент vps_extension можно сигнализировать с помощью vps_extension_flag, vps_extension2_flag и/или vps_extension_data_flag.
[0355]Со ссылкой на фиг.35, иллюстрируется другой пример расширения набора параметров видео. В частности расширение набора параметров видео по фиг.35 включает в себя ссылку на элемент num_output_layer_sets, который дает определение тех уровней из набора уровней битового потока, которые могут быть выведены декодером на средство просмотра. Элемент num_output_layer_sets задает число наборов уровней, для которых уровни вывода задаются с помощью output_layer_set_index[i] и output_layer_flag[lsIdx][j]. Если не присутствует, значение num_output_layer_sets подразумевают равным 0. Набор уровней, описывающий выводимые уровни, является набором уровней вывода.
[0356] Элемент output_layer_set_idx[i] задает индекс lsIdx набора уровней, для которого присутствует output_layer_flag[lsIdx][j].
[0357] Элемент output_layer_flag[lsIdx][j], равный 1 задает, что уровень с nuh_layer_id, равным j, является целевым выводимым уровнем для lsIdx-ого набора уровней. Значение output_layer_flag[lsIdx][j], равное 0, задает, что уровень с nuh_layer_id, равным j, не является целевым выводимым уровнем для lsIdx-ого набора уровней.
[0358] С помощью num_output_layer_sets, определяемым в vps_extension описанным образом, num_output_layer_sets может обновляться путем посылки нового набора параметров видео вместе с соответствующим расширением набора параметров видео. К сожалению, посылка нового набора параметров видео вместе с соответствующим расширением набора параметров видео приводит к значительному уменьшению доступной полосы пропускания. Кроме того, новый набор параметров видео может быть активизирован только в некоторых типах изображения, например в типах изображения с точкой произвольного доступа с внутрикадровым кодированием.
[0359] В качестве примера, битовый поток может включать в себя базовый уровень 0 и четыре уровня улучшения, а именно, уровень 1 улучшения, уровень 2 улучшения, уровень 3 улучшения, и уровень 4 улучшения. Первый набор уровней может быть базовым уровнем 0 и уровнем 1 улучшения. Второй набор уровней может быть базовым уровнем 0, уровнем 1 улучшения, и уровнем 2 улучшения. Третий набор уровней может быть базовым уровнем 0, уровнем 1 улучшения, и уровнем 3 улучшения. Четвертый набор уровней может быть базовым уровнем 0 и уровнем 4 улучшения. Наборы уровней вывода определяют конкретные уровни в наборе уровней, которые могут обеспечиваться в качестве выводимых. Например, набором 1 уровней вывода может быть, что уровень 0 является выводимым, и уровень 1 не является выводимым. Например, набором 2 уровней вывода может быть, что уровень 0 является выводимым, уровень 1 является выводимым, и уровень 2 не является выводимым. Например, набором 3 уровней вывода может быть, что уровень 0 не является выводимым, уровень 1 не является выводимым, и уровень 3 является выводимым. Например, набором 4 уровней вывода может быть, что уровень 0 является выводимым, и уровень 4 не является выводимым. Ограниченное число уровней вывода является полезным, чтобы приспособить ограниченные возможности декодирования. В некоторых случаях, является желательным запрещать некоторые зависимости между различными уровнями, чтобы обеспечить декодирование других уровней и/или возможности декодера. Когда некоторые зависимости уровней изменяются, аналогично может быть желательным разрешать, запрещать и/или добавлять другие уровни в качестве уровней вывода. В качестве примера, изменение зависимости уровней может потребовать, чтобы меньше уровней подлежали декодированию, чтобы декодировать конкретный целевой уровень (например, вид в MV-HEVC). Таким образом, декодер может декодировать и выводить уровень (например, и дополнительный вид) после изменения зависимости уровней, которое ранее не могло быть в силу его аппаратного ограничения. В настоящее время не имеется механизма, чтобы позволять сигнализацию изменения в наборах уровней вывода без посылки нового набора параметров видео.
[0360] Со ссылкой на фиг.36, может использоваться синтаксис сообщения SEI для содействия изменению наборов уровней вывода, а именно, output_layer_sets_change(payloadSize). Это сообщение SEI указывает, что информация набора уровней вывода изменяется, начиная с текущего блока доступа, содержащего сообщение SEI, и интерпретируется по отношению к активному набору параметров видео. Более чем один набор параметров видео может быть включен с битовым потоком, и активный набор параметров видео изменяется, как необходимо. При присутствии, сообщение SEI об изменении наборов уровней вывода применяется к целевому набору блоков доступа, который состоит из текущего блока доступа и всех последующих блоков доступа по порядку декодирования, пока какое-либо следующее сообщение SEI об изменении наборов уровней вывода или конец кодированной видеопоследовательности не будет более ранним по порядку декодирования. Сообщения SEI об изменении наборов уровней вывода предпочтительно не имеют накапливаемого эффекта.
[0361] Элемент 'active_vps_id' идентифицирует активный набор параметров видео, который содержит информацию наборов уровней вывода, к которому применялись изменение или дополнение. Значение active_vps_id является равным значению video_parameter_set_id активного набора параметров видео для блоков NAL VCL в блоке доступа, содержащем сообщение SEI.
[0362] Элемент 'num_changed_output_layer_sets' задает число измененных наборов уровней вывода, для которых уровни вывода задаются в секции расширения vps активного набора параметров видео, идентифицированного посредством active_vps_id. Значение num_changed_output_layer_sets должно находиться в диапазоне от 0 до num_output_layer_sets, включительно. Если не присутствует, значение num_changed_output_layer_sets подразумевают равным 0.
[0363] Элемент 'changed_output_layer_sets_idx_entry'[i] идентифицирует запись индекса в списке записей наборова уровней вывода в расширении vps, идентифицированном посредством active_vps_id, для которого применяется изменение output_layer_flag[clsIdx][j]. Значение changed_output_layer_set_idx_entry[i] должно находиться в диапазоне от 0 до num_output_layer_sets, включительно. Элемент changed_output_layer_sets_idx_entry[i] не является равным changed_output_layer_sets_idx_entry [j] для любого j, не равного i.
[0364] Элемент 'output_layer_flag'[clsIdx][j], равный 1 задает, что уровень с nuh_layer_id, равным j, является целевым выводимым уровнем clsIdx-ого набора уровней. Значение output_layer_flag[clsIdx][j], равное 0, задает, что уровень с nuh_layer_id, равным j, не является целевым выводимым уровнем для clsIdx-ого набора уровней.
[0365] Если output_layer_flag[clsIdx][j] не присутствует для clsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, output_layer_flag[clsIdx][j] подразумевают являющимся равным (j == LayerSetLayerIdList[clsIdx] [NumLayersInIdList[clsIdx] - 1]).
[0366] Элемент 'num_addl_output_layer_sets' задает число дополнительных наборов уровней, для которых уровни вывода задают с помощью с addl_output_layer_set_idx[i] и output_layer_flag[addllsIdx][j]. Если не присутствует, значение num_addl_output_layer_sets подразумевают равным 0. Элемент 'addl_output_layer_sets_idx'[i] идентифицирует индекс addllsIdx набора уровней, для которого присутствует output_layer_flag[addllsIdx][j].
[0367] Элемент 'output_layer_flag'[addllsIdx][j], равный 1, задает, что уровень с nuh_layer_id, равным j, является целевым выводимым уровнем addllsIdx-ого набора уровней. Значение output_layer_flag[addllsIdx][j], равное 0 задает, что уровень с nuh_layer_id, равным j, не является целевым выводимым уровнем addllsIdx-ого набора уровней.
[0368] Когда output_layer_flag[addllsIdx][j] не присутствует для addllsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, output_layer_flag[addllsIdx][j] подразумевают являющимся равным (j == LayerSetLayerIdList[addllsIdx][NumLayersInIdList[addllsIdx]- 1]).
[0369] Когда output_layer_flag[addllsIdx][j] не присутствует для addllsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, и когда output_layer_flag[clsIdx][j] не присутствует для clsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, output_layer_flag[addllsIdx][j] подразумевают являющимся равным (j == LayerSetLayerIdList[addllsIdx][NumLayersInIdList[addllsIdx]-1]).
[0370] Когда output_layer_flag[addllsIdx][j]не присутствует для addllsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, и когда output_layer_flag[clsIdx][j] не присутствует для clsIdx в диапазоне от 0 до vps_num_layer_sets_minus1, включительно, и для j в диапазоне от 0 до 63, включительно, output_layer_flag[clsIdx][j] подразумевают являющимся равным (j == LayerSetLayerIdList[clsIdx][NumLayersInIdList[clsIdx] - 1]).
[0371] Целевой список уровней вывода может быть получен, если желательно. Целевой список идентификаторов уровней вывода, targetOpLayerIdList, задает список значений nuh_layer_id, в порядке по возрастанию значений nuh_layer_id, которые являются выводимыми уровнями для выбранного набора уровней вывода, могут быть получены, как изложено ниже:
[0372] Для выбранного набора уровней вывода, oLsIdx, целевой список идентификаторов уровней вывода, targetOpLayerIdList, получают в виде:
[0373] [Таблица 11]
[0374] Целевой набор уровней вывода может быть идентифицирован посредством связанного списка целевых идентификаторов уровней вывода, targetOpLayerIdList.
[0375] Выбранный (индекс) oLsIdx набора уровней вывода находится между 0 и num_output_layer_sets, если нет сообщений SEI об изменении наборов уровней вывода.
[0376] Выбранный oLsIdx набора уровней вывода находится между 0 и num_output_layer_sets+num_addl_output_layer_sets, при присутствии сообщения SEI об изменении наборов уровней вывода.
[0377] Целевой список декодированных уровней может быть получен, если желательно. Целевой список идентификаторов декодируемых уровней, targetDLayerIdList задает список значений nuh_layer_id, которые необходимо декодировать для выбранного набора уровней вывода, может быть получен, как изложено ниже:
[0378] Для oLsIdx выбранного набора уровней вывода, целевой список идентификаторов уровней вывода, targetOpLayerIdList, получают в виде:
[0379] [Таблица 12]
[0380] Целевой список идентификаторов декодируемых уровней targetDLayerIdList может быть выведен как:
[0381] [Таблица 13]
[0382] В некотором случае, окончательный targetDLayerIdList может быть получен путем сортировки вышеуказанного targetDLayerIdList в порядке по возрастанию значений nuh_layer_id.
[0383] Целевой набор декодированных уровней идентифицируется посредством связанного целевого списка идентификаторов декодированных уровней targetDLayerIdList. В некотором случае, targetDLayerIdList может быть таким же, как список идентификаторов уровней TargetDecLayerIdList из документа JCTVC-L1008, который описывает список значений nuh_layer_id в порядке по возрастанию значений nuh_layer_id для блоков NAL, подлежащих декодированию:
[0384] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets, если нет каких-либо сообщений SEI об изменении наборов уровней вывода.
[0385] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets+num_addl_output_layer_sets, при присутствии сообщения SEI об изменении наборов уровней вывода.
[0386] Со ссылкой на фиг.37, может использоваться другой синтаксис сообщения SEI для содействия изменению наборов уровней вывода, а именно, output_layer_sets_change(payloadSize).
[0387] Элемент 'num_deleted_output_layer_sets' задает число наборов уровней вывода, которые удалены и поэтому более не присутствуют. Значение num_deleted_output_layer_sets находится в диапазоне от 0 до num_output_layer_sets, включительно. Если не присутствует, значение num_deleted_output_layer_sets подразумевают равным 0.
[0388] Элемент 'deleted_output_layer_sets_idx_entry'[i] идентифицирует запись индекса в списке наборов уровней вывода, который указан подлежащим удалению и поэтому более не присутствующим. Значение deleted_output_layer_set_idx_entry[i] должно находиться в диапазоне от 0 до num_output_layer_sets, включительно. Значение deleted_output_layer_sets_idx_entry[i] не равно deleted_output_layer_sets_idx_entry[j] для любого j, не равного i.
[0389] Элемент 'num_changed_output_layer_sets' задает число измененных наборов уровней вывода, для которых уровни вывода задаются в секции расширения vps активного набора параметров видео, идентифицированного посредством active_vps_id. Значение num_changed_output_layer_sets должно находиться в диапазоне от 0 до num_output_layer_sets - num_deleted_output_layer_sets, включительно. Если не присутствует, значение num_changed_output_layer_sets подразумевают равным 0.
[0390] Целевой список уровней вывода может быть получен, если желательно. Целевой список идентификаторов уровней вывода, targetOpLayerIdList, задает список значений nuh_layer_id, в порядке по возрастанию значений nuh_layer_id, которые являются выводимыми уровнями для выбранного набора уровней вывода, могут быть получены, как изложено ниже:
[0391] Для выбранного набора уровней вывода, oLsIdx, целевой список идентификаторов уровней вывода targetOpLayerIdList получают в виде:
[0392] [Таблица 14]
[0393] Целевой набор уровней вывода идентифицируется посредством связанного списка целевых идентификаторов уровней вывода targetOpLayerIdList.
[0394] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets, если нет сообщений SEI об изменении наборов уровней вывода.
[0395] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets - num_deleted_output_layer_sets+num_addl_output_layer_sets, при присутствии сообщения SEI об изменении наборов уровней вывода.
[0396] Целевой список декодируемых уровней может быть получен, если желательно.
[0397] Целевой список идентификаторов декодируемых уровней, TargetDLayerIdList, задает список значений nuh_layer_id, подлежащих декодированию для выбранного набора уровней вывода, можно получить, как изложено ниже:
[0398] Для oLsIdx выбранного набора уровней вывода, целевой список идентификаторов уровней вывода, targetOpLayerIdList, может быть получен в виде:
[0399] [Таблица 15]
[0400] Затем целевой список идентификаторов декодируемых уровней targetDLayerIdList может быть получен в виде:
[0401] [Таблица 16]
[0402] В некотором случае, окончательный targetDLayerIdList может быть получен путем сортировки вышеуказанного targetDLayerIdList в порядке по возрастанию значений nuh_layer_id.
[0403] Целевой набор декодируемых уровней идентифицируют посредством связанного целевого списка идентификаторов декодированных уровней targetDLayerIdList. В некотором случае, targetDLayerIdList может быть таким же, как список идентификаторов уровней TargetDecLayerIdList из документа JCTVC-L1008, который описывает список значений nuh_layer_id в порядке по возрастанию значений nuh_layer_id,для блоков NAL, подлежащих декодированию:
[0404] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets, если нет сообщений SEI об изменении наборов уровней вывода.
[0405] Значение oLsIdx выбранного набора уровней вывода находится между 0 и num_output_layer_sets - num_deleted_output_layer_sets+num_addl_output_layer_sets, при присутствии сообщения SEI об изменении наборов уровней вывода.
[0406] Сообщение SEI изменения набора уровней вывода определено так, что его эффект не является накапливаемым. В другом исполнении синтаксис и/или семантика этого сообщения могут быть определены так, что они являются накапливаемыми. В этом случае декодер (и кодер) могут отслеживать все предшествующие значения num_output_layer_sets (из расширения vps) и/или num_deleted_output_layer_sets и/или num_changed_output_layer_sets и/или num_addl_output_layer_sets и могутт накапливать эти изменения при каждой сигнализации нового сообщения SEI.
[0407] В другом исполнении один или несколько из синтаксических элементов можно сигнализировать, используя известное фиксированное число битов вместо u(v) вместо ue(v). Например, их можно сигнализировать, используя u(8) или u(16) или u(32) или u(64), и т.д.
[0408] В другом исполнении один или несколько из этих синтаксических элементов можно сигнализировать с помощью ue(v) или некоторой другой схемой кодирования вместо фиксированного числа битов, таких как u(v) кодирование.
[0409] В другом исполнении имена различных синтаксических элементов и их семантика могут быть изменены путем сложения plus1 или plus2 или вычитания minus1 или minus2 по сравнению с описанными синтаксисом и семантикой.
[0410] В еще одном осуществлении различные синтаксические элементы, включенные в сообщение SEI о наборах уровней вывода, могут быть сигнализированы где-либо в битовом потоке на каждое изображение или с другой частотой. Например, их можно сигнализировать в заголовке сегмента слайса, наборе параметров pps/sps/vps/адаптации или любом другом наборе параметров или другой нормативной части битового потока.
[0411] В еще одном осуществлении различные синтаксические элементы могут быть сигнализированы где-либо в битовом потоке на каждое изображение или с другой частотой. Например, они могут быть сигнализированы в заголовке сегмента слайса, наборе параметров pps/sps/vps/адаптации или любом другом наборе параметров или другой нормативной части битового потока.
[0412] В еще других вариантах осуществления все понятия, определенные в этом изобретении, относящиеся к наборам уровней вывода, могут применяться для выходных рабочих точек, как определено в документах JCTVC-L0452 и JCTVC-L0453, и/или к рабочим точкам, как определено в документе JCTVC-L1003.
Пример 2
[0413] Другой пример настоящего изобретения описан ниже. Нужно отметить, что для удобства элементам, имеющим функции, идентичные таковым для соответственных элементов, иллюстрируемых в Первом примере, даны соответственные идентичные ссылочные позиции, и описание этих элементов здесь опускается.
[0414] Было установлено, что сигнализация очередности вывода буфера декодированных изображений (DPB) на основе использования синтаксических элементов sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] и sps_max_dec_pic_buffering[HighestTid] для вывода и удаления изображений из DPB не учитывает характеристики буфера, которые могут обуславливаться масштабируемым кодированием видео, например, когда используются различные числа уровней улучшения, каковое имеет тенденцию изменяться после того, как контент был закодирован на основании пользовательских предпочтений просмотра, и многовидовые уровни улучшения, которые имеют тенденцию изменяться после того, как контент был закодирован, на основании пользовательских предпочтений просмотра. Также было определено, что сигнализация очередности вывода буфера декодированных изображений (DPB) на основании использования синтаксических элементов sps_max_num_reorder_pics[HighestTid], sps_max_latency_increase_plus1[HighestTid] и sps_max_dec_pic_buffering[HighestTid] для вывода и удаления изображений из DPB, может не быть оптимальным с точки зрения использования памяти DPB, когда декодер работает в некоторой рабочей точке и/или осуществляется вывод выбранного набора уровней вывода. Чтобы приспособить такие различия в предпочтениях просмотра, буфер (DPB) декодированных изображений с очередностью вывода может дополнительно и/или альтернативно быть на основе таких синтаксических элементах, включаемых вместе с расширением набора параметров видео (расширением VPS), чтобы обеспечивать синтаксические элементы для одного или более уровней из уровней улучшения. Таким образом, синтаксические элементы могут выбираться, чтобы являться особо подходящими для конкретной рабочей точки или набора уровней вывода, каковое направлено к соответствию пользовательским предпочтениям просмотра.
[0415] Относящиеся к буферизации DPB параметры vps_max_dec_pic_buffering_minus1, vps_max_num_reorder_pics, vps_max_latency_increase_plus1 можно сигнализировать для подуровней для CVS для одной или нескольких рабочих точек и/или для наборов уровней вывода в расширении VPS. Подобным образом, система может определять режим работы и процесс сбрасывания для DPB очередности вывода, чтобы использовать вышеуказанные сигнализированные параметры буферизации DPB из расширения VPS, если их сигнализируют для испытываемой рабочей точки или для выбранного набора уровней вывода. Иначе используются соответствующие параметры уровня SPS из активного SPS (когда currLayerId, который соответствует nuh_layer_id текущего изображения, равен 0) или из SPS активного уровня в зависимости от layer_id текущего уровня. В некоторых случаях параметры vps_max_dec_pic_buffering_minus1, vps_max_num_reorder_pics, vps_max_latency_increase_plus1 могут называться max_vps_dec_pic_buffering_minus1, max_vps_num_reorder_pics, max_vps_latency_increase_plus1.
[0416] В другом случае относящийся к буферизации DPB параметр max_vps_dec_pic_buffering_minus1 сигнализируется для подуровней для CVS для одного или большего числа наборов уровней вывода в расширении VPS. Наборы уровней вывода могут соответствовать рабочим точкам. Относящиеся к буферизации DPB параметры max_vps_num_reorder_pics, max_vps_latency_increase_plus1 можно сигнализировать для подуровней для CVS для каждого уровня в расширении VPS. Подобным образом система может задавать процесс работы и сбрасывания для DPB очередности вывода, чтобы использовать вышеуказанные сигнализированные параметры буферизации DPB из расширения VPS, если их сигнализируют для испытываемой рабочей точки или для выбранного набора уровней вывода. Иначе используют соответствующие параметры уровня SPS из активного SPS (когда currLayerId, который соответствует nuh_layer_id текущего изображения, равен 0) или из SPS активного уровня в зависимости от layer_id текущего уровня.
[0417] Со ссылкой на фиг.38A иллюстрируется пример модифицированного vps_extension. Модифицированное расширение vps включает в себя новый синтаксический элемент, а именно, num_op_dpb_info_parameters и operation_point_layer_set_idx[i]. Это модифицированное расширение vps может быть определено в терминах рабочей точки, которая является битовым потоком, создаваемым из другого битового потока путем действия процесса извлечения битового подпотока помощью другого битового потока, целевым старшим TemporalId и целевым списком идентификаторов уровней в качестве входных данных.
[0418] Элемент num_output_layer_sets задает число наборов уровней, для которых уровни вывода задаются с помощью output_layer_set_index[i] и output_layer_flag[lsIdx][j]. Если не присутствует, значение num_output_layer_sets подразумевают равным 0. Набор уровней, описывающий выводимые уровни, является набором уровней вывода.
[0419] Элемент output_layer_set_idx[i] задает индекс lsIdx набора уровней, для которого присутствует output_layer_flag[lsIdx][j].
[0420] Элемент output_layer_flag[lsIdx][j], равный 1, задает, что уровень с nuh_layer_id, равным j, является целевым выводимым уровнем lsIdx-ого набора уровней. Значение output_layer_flag[lsIdx][j], равное 0, задает, что уровень с nuh_layer_id, равным j, не является целевым выводимым уровнем lsIdx-ого набора уровней.
[0421] Элемент num_op_dpb_info_parameters задает число синтаксических структур op_dpb_parameters(), присутствующих в RBSP расширения VPS, задаваемых в терминах рабочей точки. Значение num_op_dpb_info_parameters для декодеров находится в диапазоне от 0 до vps_num_layer_sets_minus1, включительно.
[0422] Элемент operation_point_layer_set_idx[i] задает индекс в списке наборов уровней, определенных согласно рабочим точкам, к которым применяется i-ая синтаксическая структура op_dpb_info_parameters() в расширении VPS. Значение operation_point_layer_set_idx[i] может находиться в диапазоне от 0 до vps_num_layer_sets_minus1, включительно. Для соответствия битового потока operation_point_layer_set_idx[i] не является равным operation_point_layer_set_idx[j] для любого j, не равного i.
[0423] Со ссылкой на фиг.39A, элемент op_dpb_info_parameters задает vps_max_sub_layers_minus1[j], vps_sub_layer_ordering_info_present_flag[j], vps_max_dec_pic_buffering_minus1[j][k], vps_max_num_reorder_pics[j][k] и vps_max_latency_increase_plus1[j][k].
[0424] Элемент vps_max_sub_layers_minus1[j] плюс 1 указывает, сколько подуровней включено. Элемент vps_max_sub_layers_minus1[j] плюс 1 задает максимальное количество временных подуровней, которые могут присутствовать в CVS для уровня с nuh_layer_id, равным j. Значение vps_max_sub_layers_minus1[j] находится в диапазоне от 0 до 6, включительно.
[0425] Элемент vps_sub_layer_ordering_info_present_flag[j] указывает, предназначен ли синтаксис для одного набора, включая все уровни, или для каждого отдельного уровня. Элемент vps_sub_layer_ordering_info_present_flag[j], равный 1, задает, что vps_max_dec_pic_buffering_minus1[j][k], vps_max_num_reorder_pics[j][k] и vps_max_latency_increase_plus1[j][k] присутствуют для уровня с nuh_layer_id, равным j, для vps_max_sub_layers_minus1[j]+1 подуровней. Элемент vps_sub_layer_ordering_info_present_flag[j], равный 0, задает, что значения vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]], vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]] и vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]] применяются ко всем подуровням для уровня с nuh_layer_id, равным j.
[0426] Элемент vps_max_dec_pic_buffering_minus1[j][k] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS для уровня с nuh_layer_id, равным j, в единицах буферов хранения изображений, когда HighestTid равен k. Значение vps_max_dec_pic_buffering_minus1[j][k] должно находиться в диапазоне от 0 до MaxDpbSize - 1 (как определено в подпункте A.4), включительно. Когда k больше чем 0, vps_max_dec_pic_buffering_minus1[j][k] будет больше или равно vps_max_dec_pic_buffering_minus1[j][k-1]. Когда vps_max_dec_pic_buffering_minus1[j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[j] - 1, включительно, из-за vps_sub_layer_ordering_info_present_flag[j], являющегося равным 0, подразумевают, что оно будет равным vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j].
[0427] Элемент vps_max_num_reorder_pics[j][k] указывает максимальное допустимое число изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным j, по порядку декодирования, и следовать за этим изображением по порядку вывода, когда HighestTid равен k. Значение vps_max_num_reorder_pics[j][k] должно находиться в диапазоне от 0 до vps_max_dec_pic_buffering_minus1[j][k], включительно. Когда k больше чем 0, vps_max_num_reorder_pics[j][k] больше или равно vps_max_num_reorder_pics[j][k-1]. Когда vps_max_num_reorder_pics[j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[j] - 1, включительно, из-за vps_sub_layer_ordering_info_present_flag[j], являющегося равным 0, подразумевают, что оно будет равным vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]].
[0428] Элемент vps_max_latency_increase_plus1[j][k], не равный 0, используется для вычисления значения VpsMaxLatencyPictures[j][k], которое задает максимальное количество изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным j, по порядку вывода и следуют за этим изображением по порядку декодирования, когда HighestTid равен k.
[0429] Когда vps_max_latency_increase_plus1[j][k] не равно 0, значение VpsMaxLatencyPictures[j][k] может задаваться, как изложено ниже:
[0430] VpsMaxLatencyPictures[j][k]=vps_max_num_reorder_pics[j][k]+vps_max_latency_increase_plus1[j][k] - 1
[0431] Когда vps_max_latency_increase_plus1[j][k] равно 0, соответствующее предельное значение не выражено.
[0432] Значение vps_max_latency_increase_plus1[j][k] находится в диапазоне от 0 до 232-2, включительно. Когда vps_max_latency_increase_plus1[j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[j] - 1, включительно, из-за vps_sub_layer_ordering_info_present_flag[j], являющегося равным 0, его подразумевают равным vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]].
[0433] Элемент 'vps_max_sub_layers_minus'[id][j] плюс 1 задает максимальное количество временных подуровней, которые могут присутствовать в CVS для уровня с nuh_layer_id, равным j, для рабочей точки, связанной с, индексом id. Значение vps_max_sub_layers_minus1[id][j] должно находиться в диапазоне от 0 до 6, включительно.
[0434] Элемент 'vps_sub_layer_ordering_info_present_flag'[id][j], равный 1, задает, что vps_max_dec_pic_buffering_minus1[id][j][k], vps_max_num_reorder_pics[id][j][k] и vps_max_latency_increase_plus1[id][j][k] присутствуют для уровня с nuh_layer_id, равным j, для рабочей точки, связанной с индексом id для vps_max_sub_layers_minus1[id][j]+1 подуровней.
[0435] Элемент vps_sub_layer_ordering_info_present_flag[id][j], равный 0 задает, что значения vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]], vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]] и vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]] применяются ко всем подуровням для уровня с nuh_layer_id, равным j, для рабочей точки, связанной с индексом id.
[0436] Элемент vps_max_dec_pic_buffering_minus1'[id][j][k] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS для уровня с nuh_layer_id, равным j для рабочей точки, связанной с идентификатором индекса, в единицах буферов хранения изображений, когда HighestTid равен k. Значение vps_max_dec_pic_buffering_minus1[id][j][k] должно находиться в диапазоне от 0 до MaxDpbSize - 1 (как определено в подпункте 4), включительно. Когда k больше чем 0, vps_max_dec_pic_buffering_minus1[id][j][k] будет больше или равно vps_max_dec_pic_buffering_minus1[id][j][k-1]. Если элемент vps_max_dec_pic_buffering_minus1[id][j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[id][j]-1, включительно, из-за vps_sub_layer_ordering_info_present_flag[id][j], являющегся 0, подразумевают, что он будет равным vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]].
[0437] Элемент 'vps_max_num_reorder_pics'[id][j][k] указывает максимальное допустимое число изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным j, для рабочей точки, связанной с индексом id, по порядку декодирования и следовать после этого изображения по порядку вывода, когда HighestTid равен k. Значение vps_max_num_reorder_pics[id][j][k] должно находиться в диапазоне от 0 до vps_max_dec_pic_buffering_minus1[id][j][k], включительно. Когда k больше чем 0, vps_max_num_reorder_pics[id][j][k] будет больше или равно vps_max_num_reorder_pics[id][j][k-1]. Если элемент vps_max_num_reorder_pics[id][j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[id][j]-1, включительно, из-за vps_sub_layer_ordering_info_present_flag[id][j], являющегося равным 0, подразумевают, что он будет равным vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]].
[0438] Элемент 'vps_max_latency_increase_plus1[id][j][k], не равный 0, используется для вычисления значения VpsMaxLatencyPictures[id][j][k], которое задает максимальное количество изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным j, для рабочей точки, связанной с индексом id, по порядку вывода и следовать после этого изображения по порядку декодирования, когда HighestTid равен k.
[0439] Когда vps_max_latency_increase_plus1[id][j][k] не равно 0, значение VpsMaxLatencyPictures[id][j][k] задается, как изложено ниже:
[0440] VpsMaxLatencyPictures[id][j][k]=vps_max_num_reorder_pics[id][j][k]+vps_max_latency_increase_plus1[id][j][k] - 1
[0441] Когда vps_max_latency_increase_plus1[id][j][k] равно 0, соответствующее предельное значение не выражено.
[0442] Значение vps_max_latency_increase_plus1[id][j][k] должно находиться в диапазоне от 0 до 232-2, включительно. Когда vps_max_latency_increase_plus1[id][j][k] не присутствует для k в диапазоне от 0 до vps_max_sub_layers_minus1[id][j]-1, включительно, из-за vps_sub_layer_ordering_info_present_flag[id][j], являющегося равным 0, подразумевают, что оно будет равным vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]].
[0443] Со ссылкой на фиг.39B, op_dpb_info_parameters можно дополнительно модифицировать, как показано по отношению к op_dpb_info_parameters(id,j). В этом случае синтаксис расширения VPS может быть таким, как проиллюстрирован на фиг.38B. Гипотетический опорный декодер (HRD) используется для проверки соответствия условиям битового потока и декодера. Два типа битовых потоков или подмножеств битового потока подвергаются проверке на соответствие HRD стандарту Объединенной группы специалистов по кодированию видео (JCT-VC). Первый тип, названный битовым потоком Типа I, является потоком блоков NAL, содержащим только блоки NAL VCL и блоки NAL с nal_unit_type, равным FD_NUT (блоки NAL с данными заполнителя) для всех блоков доступа в битовом потоке. Второй тип, названный битовым потоком Типа II, содержит, в дополнение к VCL блокам NAL и блокам NAL с данными заполнителя для всех блоков доступа в битовом потоке, по меньшей мере, одно из (a) дополнительных блоков NAL не-VCL, кроме блоков NAL с данными заполнителя, и (b) всех синтаксических элементов leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, которые образуют поток байтов из потока блоков NAL.
[0444] Синтаксические элементы блоков NAL не-VCL (или их значения по умолчанию для некоторых из синтаксических элементов), требуемые для HRD, определены в подпунктах семантики в пункте 7, Приложений D и E.
[0445] Используются два типа наборов параметров HRD (HRD параметры NAL и HRD параметры VCL). Наборы параметров HRD сигнализируют посредством синтаксической структуры hrd_parameters(), которая может быть частью синтаксической структуры SPS или синтаксической структуры VPS.
[0446] Множественные испытания могут потребоваться для проверки соответствия битового потока, который именуется испытываемым битовых потоком. Для каждого испытания следующие этапы применяются в приведенном порядке:
[0447]
(1) Выбирается испытываемая рабочая точка, обозначенная как TargetOp. Список OpLayerIdList идентификаторов уровней для TargetOp состоит из списка значений nuh_layer_id, в порядке по возрастанию значений nuh_layer_id, присутствующих в подмножестве битового потока, связанном с TargetOp, которое является подмножеством значений nuh_layer_id, присутствующих в испытываемом битовом потоке. OpTid для TargetOp является равным наивысшему TemporalId, присутствующему в связанном с TargetOp подмножестве битового потока.
[0448] (2) TargetDecLayerIdList устанавливают равным OpLayerIdList для TargetOp, HighestTid устанавливают равным OpTid для TargetOp, и инициируют процесс извлечения битового подпотока, как определено в пункте 10, с испытываемым битовым потоком, HighestTid и TargetDecLayerldList в качестве входных данных, и выход назначен BitstreamToDecode.
[0449] (3) Выбирают синтаксическую структуру hrd_parameters() и синтаксическую структуру sub_layer_hrd_parameters(), применимую к TargetOp. Если TargetDecLayerIdList содержит все значения nuh_layer_id, присутствующие в испытываемом битовом потоке, выбирают синтаксическую структуру hrd_parameters() в активном SPS (или предоставленную внешним средством, не описанным в этом Описании). Иначе, выбирают синтаксическую структуру hrd_parameters() в активном VPS (или предоставленную посредством некоторого внешнего средства, не описанного в этом Описании), которая применяется к TargetOp. В рамках выбранной синтаксической структуры hrd_parameters(), если BitstreamToDecode является битовым потоком Типа I, выбирают синтаксическую структуру sub_layer_hrd_parameters (HighestTid), которая непосредственно следует условию "если (vcl_hrd_parameters_present_flag)", и переменную NalHrdModeFlag устанавливают равной 0; иначе (BitstreamToDecode является битовым потоком Типа II), выбирают синтаксическую структуру sub_layer_hrd_parameters (HighestTid), которая непосредственно следует либо условию "если (vcl_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 0), либо условию "если (nal_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 1). Когда BitstreamToDecode является битовым потоком Типа II, и NalHrd ModeFlag равен 0, все блоки NAL не-VCL, кроме блоков NAL с данными заполнителя, и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes, и trailing_zero_8bits, которые образуют поток байтов из потока блоков NAL (как определено в Приложении B), при присутствии, отбрасывают из BitstreamToDecode, и оставшийся битовый поток назначают BitstreamToDecode.
[0450] В другом случае могут потребоваться множественные испытания для проверки соответствия битового потока, который именуется как испытываемый битовый поток. Для каждого испытания применяют следующие этапы в приведенном порядке:
[0451] (1) Выбирают испытываемый набор уровней вывода, обозначенный как TargetOpLs. Рабочая точка, на которую есть ссылка в TargetOpLs посредством output_layer_set_idx[], идентифицирует испытываемую рабочую точку. Список идентификаторов уровней вывода OpLayerIdList в TargetOpLs состоит из списка значений nuh_layer_id, в порядке по возрастанию значений nuh_layer_id, присутствующих в подмножестве битового потока, связанном с TargetOp и TargetOpLs, который является подмножеством значений nuh_layer_id, присутствующих в испытываемом битовом потоке. OpTid в TargetOp является равным наивысшему TemporalId, присутствующему в связанном с TargetOp подмножестве битового потока.
[0452] (2) TargetDecLayerIdList устанавливают равным целевому списку targetDLayerIdList идентификаторов декодированных уровней для выбранного набора TargetOpLs уровней вывода, HighestTid устанавливают равным OpTid из TargetOp, и инициируют процесс извлечения битового подпотока, как определено в пункте 10, с испытываемым битовым потоком, HighestTid и TargetDecLayerIdList в качестве входных данных, и выход назначают BitstreamToDecode.
[0453] (3) Выбирают синтаксическую структура hrd_parameters() и синтаксическую структуру sub_layer_hrd_parameters(), применимую к TargetOp. Если TargetDecLayerIdList содержит все значения nuh_layer_id, присутствующие в испытываемом битовом потоке, выбирают синтаксическую структуру hrd_parameters() в активном SPS (или предоставленную внешним средством, не описанным в этом Описании). Иначе, выбирают синтаксическую структуру hrd_parameters() в активном VPS (или предоставленную некоторым внешним средством, не описанным в этом Описании), которая применяется к TargetOp. В рамках выбранной синтаксической структуры hrd_parameters(), если BitstreamToDecode является битовым потоком Типа I, выбирают синтаксическую структуру sub_layer_hrd_parameters(HighestTid), которая непосредственно следует условию "если (vcl_hrd_parameters_present_flag)", и переменную NalHrdModeFlag устанавливают равной 0; иначе (BitstreamToDecode является битовым потоком Типа II), выбирают синтаксическую структуру sub_layer_hrd_parameters(HighestTid), которая непосредственно следует либо условию "если (vcl_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 0), либо условию "если (nal_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 1). Когда BitstreamToDecode является битовым потоком Типа II, и NalHrdModeFlag равен 0, все блоки NAL не-VCL, кроме блоков NAL с данными заполнителя, и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, которые образуют поток байтов, из потока блоков NAL (как определено в Приложении B), при присутствии, отбрасываются из BitstreamToDecode, и оставшийся битовый поток назначают BitstreamToDecode.
[0454] Соответствующий условиям декодер может выполнять все требования, указанные в этом подпункте.
[0455] (1) Декодер, заявляющий соответствие конкретному профилю, слою и уровню, будет в состоянии успешно декодировать все битовые потоки, которые удовлетворяют требованиям соответствия битового потока, определенным в подпункте C.4, образом определенным в Приложении A, при условии, что все экземпляры VPS, SPS и PPS, упомянутые в блоках NAL VCL, и надлежащие сообщения SEI о периоде буферизации и синхронизации изображения передаются на декодер своевременно, либо в битовом потоке (посредством блоков NAL не-VCL), либо внешним средством, не определенным в этом Описании.
[0456] (2) Когда битовый поток содержит синтаксические элементы, которые имеют значения, которые определены как зарезервированные, и задано, что декодеры будут игнорировать значения синтаксических элементов или блоков NAL, содержащих синтаксические элементы, имеющие зарезервированные значения, и битовый поток иным образом соответствует этому Описанию, соответствующий декодер должен декодировать битовый поток одинаковым образом, как если бы декодировал соответствующий битовый поток и будет игнорировать синтаксические элементы или блоки NAL, содержащие синтаксические элементы, имеющие зарезервированные значения, как определено.
[0457] Имеются два типа соответствия декодера: соответствие синхронизации вывода и соответствие порядку вывода.
[0458] Для проверки соответствия декодера, тестовые битовые потоки, соответствующие заявленному профилю, слою и уровню, как определено в подпункте C.4, доставляются гипотетическим планировщиком потоков (HSS) и на HRD, и на испытываемый декодер (DUT). Все обрезанные декодированные изображения, выводимые посредством HRD, также подлежат выводу посредством DUT, каждое обрезанное декодированное изображение, выводимое посредством DUT, должно быть изображением с PicOutputFlag, равным 1, и для каждого такого обрезанного декодированного изображения, выводимого посредством DUT, значения всех выборок, которые являются выводимыми, должны быть равными значениям выборок, выдаваемых заданным процессом декодирования.
[0459] Относительно соответствия декодера условиям синхронизации вывода HSS работает как описано выше, с расписаниями доставки, выбираемыми только из подмножества значений SchedSelIdx, для которых скорость передачи битов и размер CPB ограничены, как определено в Приложении A для заданного профиля, слоя и уровня, или с "интерполированными" расписаниями доставки, как определено ниже, для которых скорость передачи битов и размер CPB ограничены, как определено в Приложении A. Одинаковое расписание доставки используется и для HRD, и для DUT.
[0460] Когда параметры HRD и сообщения SEI о периоде буферизации присутствуют с cpb_cnt_minus1[HighestTid] больше чем 0, декодер должны быть способным декодировать битовый поток, как доставлен от HSS, действующим с использованием "интерполированного" расписания доставки, заданного имеющим пиковую битовую скорость r, размер CPB c(r), и начальную задержку удаления в CPB
[0461] [Математическое выражение 15]
как изложено ниже:
[0462] для любого SchedSelIdx>0 и r, такого, что BitRate[SchedSelIdx-1]<=r<=BitRate[SchedSelIdx], так что r и c(r) находятся в рамках ограничений, как определено в Приложении A для максимальной скорости передачи битов и размера буфера для заданного профиля, слоя и уровня. InitCpbRemovalDelay[SchedSelIdx] может отличаться от одного периода буферизации к другому и подлежит повторному вычислению.
[0463] Для соответствия декодера синхронизации вывода, используется HRD, как описан выше, и синхронизация (относительно времени доставки первого бита) вывода изображения является одинаковой и для HRD, и для DUT с точностью до фиксированной задержки.
[0464] Для соответствия декодера порядку вывода применяется следующее:
[0465] (1) HSS доставляет битовый поток BitstreamToDecode на DUT "по запросу" от DUT, означая, что HSS доставляет биты (по порядку декодирования) только, когда DUT запрашивает больше битов для продолжения своей обработки. Это означает, что для этого испытания буфер кодированных изображений в DUT может быть по величине размером наибольшего блока декодирования.
[0466] (2) Используется модифицированный HRD, как описано ниже, и HSS доставляет битовый поток на HRD согласно одному из расписаний, заданных в битовом потоке BitstreamToDecode, так что скорость передачи битов и размер CPB ограничены, как определено в Приложении A. Порядок вывода изображений будет одинаковым и для HRD, и для DUT.
[0467] (3) Размер CPB HRD дается согласно CpbSize[SchedSelIdx], как определено в подпункте E.2.3, где SchedSelIdx и параметры HRD выбирают, как определено в подпункте C.1. Размер DPB дается согласно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда nuh_layer_id для текущего декодированного изображения равен 0) или из SPS активного уровня для значения nuh_layer_id текущего декодированного изображения. В некоторых случаях, если информационные параметры DPB рабочей точки, op_dpb_info_parameters(), присутствуют для выбранного набора уровней вывода, размер DPB дается согласно vps_max_dec_pic_buffering_minus1[HighestTid], когда currLayerId равен 0 или установлен в vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0, где currLayerId является nuh_layer_id текущего декодированного изображения. Иначе, если информационные параметры DPB рабочей точки, op_dpb_info_parameters(), не присутствуют для испытываемой рабочей точки, размер DPB дается согласно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда nuh_layer_id для текущего декодированного изображения равен 0) или из SPS активного уровня для значения nuh_layer_id текущего декодированного изображения.
[0468] В некоторых случаях, если информационные параметры DPB о наборах уровней вывода, oop_dpb_info_parameters(), присутствуют для выбранного набора уровней вывода, размер DPB дается согласно vps_max_dec_pic_buffering_minus1[HighestTid], когда currLayerId равен 0 или установлен в vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid] для currLayerId для выбранного набора уровней вывода, где currLayerId является nuh_layer_id текущего декодированного изображения. Иначе, если информационные параметры DPB наборов уровней вывода oop_dpb_info_parameters() не присутствуют для выбранного набора уровней вывода, размер DPB дается согласно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда nuh_layer_id для текущего декодированного изображения равен 0) или из SPS активного уровня для значения nuh_layer_id текущего декодированного изображения.
[0469] Время удаления из CPB для HRD является конечным временем поступления битов, и декодирование осуществляется немедленно. Работа DPB для этого HRD является такой, как описана в подпунктах C.5.2 - C.5.2.3.
[0470] Буфер декодированных изображений содержит буферы хранения изображения. Число буферов хранения изображений для nuh_layer_id, равного 0, получают из активного SPS. Число буферов хранения изображений для каждого ненулевого значения nuh_layer_id получают из SPS активного уровня для этого ненулевого значения nuh_layer_id. Каждый из буферов хранения изображений содержит декодированное изображение, которое помечено как "используемое для ссылки" или сохраняется для будущего вывода. Инициируют процесс для вывода и удаления изображений из DPB, как определено в подпункте F.13.5.2.2, за которым следует запуск процесса для декодирования, пометки, дополнительного сбрасывания и сохранения изображения, как определено в подпункте F.13.5.2.3. Процесс "сбрасывания" определен в подпункте F.13.5.2.4 и Инициируют, как определено в подпунктах F.13.5.2.2 и F.13.5.2.3.
[0471] Вывод и удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно, когда первый блок декодирования в блоке доступа, содержащем текущее изображение, удаляется из CPB и продолжается, как изложено ниже.
[0472] Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
[0473] (1) Если текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, которое не является изображением 0, применяют последующие упорядоченные этапы:
(A) Получают переменную NoOutputOfPriorPicsFlag для испытываемого декодера, как изложено ниже:
[0475] (i) Если текущее изображение является изображением CRA, NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).
[0476] (ii) Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения, NoOutputOfPrior PicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag. Хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной при этих условиях, в этом случае допускается устанавливать NoOutputOfPriorPicsFlag в 1 для испытываемого декодера.
[0477] (iii) Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.
[0478] (B) Значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, как изложено ниже:
[0479] (i) Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения в DPB очищаются без вывода изображений, которые они содержат, и заполненность DPB устанавливают равной 0.
[0480] (ii) Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB устанавливают равной 0.
[0481] (iii) Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищен, заполненность DPB уменьшается на единицу. Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения.
[0482] Переменные MaxNumReorderPics[TargetOp][currLayerId][HighestTid], MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid], MaxLatencyPictures[TargetOp][currLayerId][HighestTid], MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid] получают, как изложено ниже на основании текущей испытываемой рабочей точки:
[0483] (1) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки TargetOp, MaxNumReorderPics[TargetOp][currLayerId][HighestTid] устанавливают в vps_max_num_reorder_pics[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_num_reorder_pics[TargetOp][CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки MaxNumReorderPics[TargetOp][currLayerId][HighestTid] устанавливают в sps_max_num_reorder_pics[HighestTid] из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0484] (2) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки TargetOp, MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid] устанавливают в значение vps_max_latency_increase_plus1[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_latency_increase_plus1[TargetOp][CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки, MaxLatencyPictures [TargetOp][currLayerId][HighestTid] устанавливают в VpsMaxLatencyPictures [HighestTid], если currLayerId равен 0, или устанавливают в VpsMaxLatencyPictures [TargetOp][CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, если currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки, MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid] устанавливают в sps_max_latency_increase_plus1[HighestTid] активного SPS (когда currLayerId равен 0) или SPS активного уровня для значения currLayerId, и MaxLatencyPictures [TargetOp][currLayerId][HighestTid] устанавливают в SpsMaxLatencyPictures[HighestTid], полученный из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0485] (3) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для выбранной испытываемой рабочей точки TargetOp, MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid] устанавливают в vps_max_dec_pic_buffering_minus1[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_dec_pic_buffering_minus1[TargetOp][CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки, MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid] устанавливают в sps_max_dec_pic_buffering_minus1[HighestTid] из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0486] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, при этом дополнительно уменьшая заполненность DPB на единицу для каждого добавочного буфера хранения изображения, который очищен, пока ни одно из следующих условий не является истиной:
[0487] (1) Число изображений в DPB с nuh_layer_id, равным currLayerId, помеченных как "требуемое для вывода", больше чем MaxNumReorderPics[TargetOp][CurrLayerId][HighestTid].
[0488] (2) Если MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid] не равно 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как «требуемое для вывода», для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures [TargetOp][CurrLayerId][HighestTid].
[0489] (3) Число изображений с nuh_layer_id, равным currLayerId, в DPB чем или равно MaxDecPicBuffering [TargetOp][CurrLayerId][HighestTid].
[0490] Процессы, определенные в этом подпункте, происходят немедленно, когда последний блок декодирования в блоке n доступа, содержащего текущее изображение, удаляют из CPB.
[0491] Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения.
[0492] Для каждого изображения в DPB, которое помечено как "требуемое для вывода" и которое имеет значение nuh_layer_id, равное currLayerId, связанную переменную PicLatencyCount[currLayerId] устанавливают равной PicLatencyCount [currLayerId]+1.
[0493] Текущее изображение считается декодированным после того, как декодирован последний блок декодирования в изображении. Текущее декодированное изображение сохраняют в DPB в пустом буфере хранения изображения, и применяют следующее:
[0494] (A) Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount [currLayerId] устанавливают равной 0.
[0495] (B) Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода".
[0496] Текущее декодированное изображение помечают как "используемое для краткосрочной ссылки".
[0497] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, пока ни одно из следующих условий не является истиной.
[0498] (A) Число изображений с nuh_layer_id, равным currLayerId в DPB, помеченных как "требуемое для вывода", больше чем MaxNumReorderPics[TargetOp] [CurrLayerId][HighestTid].
[0499] (B) MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid] не равен 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures [TargetOp][CurrLayerId][HighestTid].
[0500] В другом случае переменные MaxNumReorderPics[currLayerId][HighestTid], MaxLatencyIncreasePlus1[currLayerId][HighestTid], MaxLatencyPictures [currLayerId][HighestTid], MaxDecPicBufferingMinus1[currLayerId][HighestTid] могут быть получены, как изложено ниже:
[0501] (1) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки, MaxNumReorderPics[currLayerId][HighestTid] устанавливают в vps_max_num_reorder_pics[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_num_reorder_pics[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки, MaxNumReorderPics[currLayerId][HighestTid] устанавливают в sps_max_num_reorder_pics[HighestTid] из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0502] (2) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки, MaxLatencyIncreasePlus1[currLayerId][HighestTid] устанавливают в vps_max_latency_increase_plus1[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_latency_increase_plus1[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для испытываемой рабочей точки, MaxLaten-cyPictures[currLayerId][HighestTid] устанавливают в VpsMaxLatencyPictures[HighestTid], когда currLayerId равен 0, или устанавливают в VpsMaxLatencyPictures[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки, MaxLatencyIncreasePlus1[currLayerId][HighestTid] устанавливают в sps_max_latency_increase_plus1[HighestTid] активного SPS (когда currLayerId равен 0), или SPS активного уровня для значения currLayerId, и MaxLatencyPictures [currLayerId][HighestTid] устанавливают в SpsMaxLatencyPictures[HighestTid], полученный из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0503] (3) Если информационные параметры DPB рабочей точки op_dpb_info_parameters() присутствуют для выбранной испытываемой рабочей точки, MaxDecPicBufferingMinus1[currLayerId][HighestTid] устанавливают в vps_max_dec_pic_buffering_minus1[HighestTid], когда currLayerId равен 0, или устанавливают в vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки op_dpb_info_parameters() не присутствуют для испытываемой рабочей точки, MaxDecPicBufferingMinus1[currLayerId][HighestTid] устанавливают в sps_max_dec_pic_buffering_minus1[HighestTid] из активного SPS(когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0504] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, при этом дополнительно уменьшая заполненность DPB на единицу для каждого добавочного буфера хранения изображения, который очищен, пока ни одно из следующих условий не является истиной:
[0505] (1) Число изображений в DPB с nuh_layer_id, равным currLayerId, которые помечены как "требуемое для вывода", больше чем MaxNumReorderPics [CurrLayerId][HighestTid].
[0506] (2) Если MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] не равен 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures [CurrLayerId][HighestTid].
[0507] (3) Число изображений с nuh_layer_id, равным currLayerId, в DPB больше чем или равно MaxDecPicBuffering [CurrLayerId][HighestTid].
[0508] Процессы, определенные в этом подпункте, происходят немедленно, когда последний блок декодирования в блоке n доступа, содержащем текущее изображение, удаляется из CPB.
[0509] Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения.
[0510] Для каждого изображения в DPB, которое помечено как "требуемое для вывода" и которое имеет значение nuh_layer_id, равное currLayerId, связанную переменную PicLatencyCount[currLayerId] устанавливают равной PicLatencyCount [currLayerId]+1.
[0511] Текущее изображение считается декодированным после того, как декодирован последний блок декодирования в изображении. Текущее декодированное изображение сохраняют в DPB в пустом буфере хранения изображения, и применяют следующее:
[0512] (A) Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount [currLayerId] устанавливают равной 0.
[0513] (B) Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода".
[0514] Текущее декодированное изображение помечают как "используемое для краткосрочной ссылки".
[0515] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, пока ни одно из следующих условий не истина.
[0516] (A) Число изображений в DPB с nuh_layer_id, равным currLayerId, которые помечены как "требуемое для вывода", больше чем MaxNumReorderPics [CurrLayerId][HighestTid].
[0517] (B) MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] не равен 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как «требуемое для вывода», для которого связанная с ним переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures [CurrLayerId][HighestTid].
[0518] Процесс "сбрасывания" состоит из последующих упорядоченных этапов:
[0519] (A) Изображения, которые являются первыми для вывода, выбирают как имеющие наименьшее значение PicOrderCntVal для всех изображений в DPB, помеченных как "требуемое для вывода".
[0520] (B) Эти изображения обрезают, используя окно соответствия условию обрезки, заданное в активном SPS для изображения с nuh_layer_id, равным 0, или в SPS активного уровня для значения nuh_layer_id, равный таковому для изображения, обрезанные изображения выводят по порядку возрастания nuh_layer_id, и изображения помечают как "не требуемое для вывода".
[0521] (C) Каждый буфер хранения изображения, который содержит изображение, помеченное как "не используемое для ссылки", и который включал одно из изображений, которое было обрезано и выведено, очищают.
[0522] Расширение VPS может иметь дополнительные модификации, если желательно.
[0523] Со ссылкой на фиг.40, дополнительная модификация может включать в себя параметры DPB, посылаемые в расширении VPS для наборов уровней вывода, вместо рабочих точек, где oops_dpb_info_parameters (j) проиллюстрированы на фиг.41.
[0524] Элемент num_dpb_info_parameters задает число синтаксических структур oop_dpb_parameters(), присутствующих в RBSP расширения VPS. Параметры декодеров num_dpb_info_parameters должны быть в диапазоне от 0 до num_output_layer_sets, включительно.
[0525] Элемент output_point_layer_set_idx[i] задает индекс в список целевых наборов уровней вывода, к которому применяется i-ая синтаксическая структура oop_dpb_info_parameters() в расширении VPS.
[0526] Значение output_point_layer_set_idx[i] должно быть в диапазоне от 0 до num_output_layer_sets, включительно. Требованием соответствия битового потока является, что output_point_layer_set_idx[i] не должен быть равным output_point_layer_set_idx [j] для любого j, не равного i.
[0527] Со ссылкой на фиг.42, oop_dpb_info_paremters(c) могут быть дополнительно модифицированы, где синтаксис в расширении VPS может быть, как проиллюстрировано на фиг.43.
[0528] Со ссылкой на фиг.44, oop_dpb_info_paremters(c) могут быть дополнительно модифицированы, где синтаксис в расширении VPS может быть, как проиллюстрировано на фиг.45 или фиг. 46.
[0529] Примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0530] [Таблица 18]
[0531] можно изменить на
[0532] [Таблица 19]
[0533] Элемент vps_max_layer_id задает максимальное допустимое значение nuh_layer_id всех блоков NAL в CVS. Элемент vps_max_layers_minus1 задает максимальное количество уровней, которые могут присутствовать в CVS, причем уровень может, например, быть пространственным масштабируемым уровнем, масштабируемым уровнем качества, видом текстуры или видом глубины.
[0534] Другая примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0535] [Таблица 20]
[0536] можно изменить на
[0537] [Таблица 21]
[0538] где numOutputLayers для выбранного набора уровней вывода индекс oplsIdx, получают как:
[0539] [Таблица 22]
[0540] Другая примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0541] [Таблица 23]
[0542] можно изменить на
[0543] [Таблица 24]
где numOutputLayers для выбранного oplsIdx получают в виде:
[0545] [Таблица 25]
[0546] Затем целевой список идентификаторов декодируемых уровней targetDLayerIdList и numDecodedLayers для выбранного oplsIdx получают в виде:
[0547] [Таблица 26]
[0548] В одном осуществлении может быть сигнализирован дополнительный флаг, чтобы указать, сигнализирован ли oop_dpb_information_parameters для конкретного уровня, как изложено ниже:
[0549] [Таблица 27]
[0550] Элемент vps_layer_info_present_flag[j], равный 1, задает, что oop_dpb_info_parameters присутствуют для j-ого уровня для конкретного набора уровней вывода. Элемент vps_layer_info_present_flag[j], равный 0, задает, что oop_dpb_info_parameters не присутствуют для j-ого уровня для конкретного набора уровней вывода.
[0551] В другом исполнении декодеры num_dpb_info_parameters будут находиться в диапазоне от 0 до 1024, включительно. В еще одном исполнении другое фиксированное число может использоваться вместо 1024.
[0552] В альтернативном исполнении output_point_layer_set_idx[i] находится в диапазоне от 0 до 1023, включительно.
[0553] Со ссылкой на фиг.47, еще одно модифицированное расширение VPS и layer_dpb_info(i) могут использоваться, если параметры DPB посылают в расширении VPS для каждого уровня независимо от наборов уровней вывода и рабочих точек.
[0554] Со ссылкой на фиг.48, может использоваться модифицированный layer_dpb_info(i), где синтаксический элемент vps_max_sub_layer_minus1, сигнализированный из VPS, используется для всех уровней и отдельно не сигнализируется в oop_dpb_info_parameters (id) /op_dpb_info_parameters (id).
[0555] Со ссылкой на фиг.49A и 49B иллюстрируется примерный модифицированный элемент vps_extension. Модифицированное расширение vps включает в себя новый синтаксис, а именно, max_sub_layers_vps_predict_flag[i], max_sub_layers_vps_minus1[i] num_dpb_info_parameters, output_point_layer_set_idx[i], oop_dpb_maxbuffering_parameters(i) и layer_dpb_info_parameters(i). Элемент num_output_layer_sets задает число наборов уровней, для которых уровни вывода задаются с помощью output_layer_set_index[i] и output_layer_flag[lsIdx][j]. Если не присутствует, значение num_output_layer_sets подразумевают равным 0. Набор уровней, описывающий выводимые уровни, является набором уровней вывода.
[0556] Элемент 'max_sub_layers_vps_predict_flag'[i], равный 1, задает, что max_sub_layers_vps_minus1[i] подразумевают равным max_sub_layers_vps_minus1[i-1].
[0557] Элемент max_sub_layers_vps_predict_flag[i], равный 0, задает, что max_sub_layers_vps_minus1[i] сигнализируется явно. Значение max_sub_layers_vps_predict_flag [0] подразумевают равным 0.
[0558] Элемент 'max_sub_layers_vps_minus1[i] плюс 1 задает максимальное количество временных подуровней, которые могут присутствовать в CVS для уровня с nuh_layer_id, равным i. Значения max_vps_sub_layers_vps_minus1[i] будут находиться в диапазоне от 0 до 6, включительно. В некоторых случаях max_sub_layers_vps_minus1[i] используется для выведения синтаксического элемента SPS sps_max_sub_layers_minus1. Когда max_sub_layers_vps_predict_flag[i] равен 1, max_sub_layers_vps_minus1[i] подразумевают равным max_sub_layers_vps_minus1[i-1]. Значение max_sub_layers_vps_minus1[0] подразумевают равным vps_max_sub_layers_minus1.
[0559] Переменую MaxSubLayers [setId] для setId в диапазоне от 0 до num_dpb_info_parameters-1, включительно, получают как изложено ниже:
[0560] [Таблица 28]
[0561] Элемент 'num_dpb_info_parameters' задает число синтаксических структур oop_dpb_maxbuffering_parameters(i), присутствующих в RBSP расширения VPS. Параметры декодеров num_dpb_info_parameters должны быть в диапазоне от 0 до numOutputLayerSets, включительно.
[0562] Элемент 'output_point_layer_set_idx'[i] задает индекс, в список наборов уровней вывода, к которому применяется i-ая синтаксическая структура oop_dpb_maxbuffering_parameters(i) в расширении VPS.
[0563] Значение output_point_layer_set_idx[i] должно находиться в диапазоне от 0 до numOut-putLayerSets, включительно. Требованием соответствия битового потока является, что output_point_layer_set_idx[i] не будет равен output_point_layer_set_idx [j] для любого j, не равного i.
[0565] Со ссылкой на фиг.50, элемент oop_dpb_maxbuffering_parameters задает 'sub_layer_vps_buf_info_present_flag'[i], 'max_vps_dec_pic_buffering_minus1[i][j].
[0566] Элемент 'sub_layer_vps_buf_info_present_flag'[i], равный 1, задает, что значения max_vps_dec_pic_buffering_minus1[i][j] присутствуют для MaxSubLayers[i] подуровней. Элемент sub_layer_vps_buf_info_present_flag[i], равный 0, задает, что значения max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i]-1] применяют ко всем подуровням.
[0567] Элемент 'max_vps_dec_pic_buffering_minus1'[i][j] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS для уровня с nuh_layer_id, равным highestLayerId в наборе уровней вывода, связанном с индексом i, в единицах буферов хранения изображений, когда HighestTid равен j. Значение max_vps_dec_pic_buffering_minus1[i][j] будет находиться в диапазоне от 0 до MaxDpbSize - 1 (как определено в подпункте A.4), включительно. Когда j больше чем 0, max_vps_dec_pic_buffering_minus1[i][j] будет больше чем или равно max_vps_dec_pic_buffering_minus1[i][j-1]. В некоторых случаях max_vps_dec_pic_buffering_minus1[i][j] используется для выведения значений синтаксических элементов SPS sps_max_dec_pic_buffering_minus1[j]. Когда max_vps_dec_pic_buffering_minus1[i][j] не присутствует для i в диапазоне от 0 до MaxSubLayers[i] - 2, включительно, из-за sub_layer_vps_buf_info_present_flag[i], являющегося равным 0, подразумевают, что оно будет равным max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i] - 1].
[0568] Значение max_vps_dec_pic_buffering_minus1[0][j] для каждого значения j подразумевают равным vps_max_dec_pic_buffering_minus1[j].
[0569] Со ссылкой на фиг.51, элемент layer_dpb_info_parameters задает 'sub_layer_vps_ordering_info_present_flag'[i], max_vps_num_reorder_pics[i][j], max_vps_latency_increase_plus1'[i][j].
[0570] Элемент 'sub_layer_vps_ordering_info_present_flag'[i], равный 1, задает, что max_vps_num_reorder_pics[i][j] и max_vps_latency_increase_plus1[i][j] присутствуют для max_sub_layers_vps_minus1+1 подуровней.
[0571] Элемент sub_layer_vps_ordering_info_present_flag[i], равный 0, задает, что значения max_vps_num_reorder_pics[i][vps_max_sub_layers_minus1] и max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1] применяют ко всем подуровням.
[0572] Элемент 'max_vps_num_reorder_pics'[i][j] указывает максимальное допустимое число изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным i, по порядку декодирования и следовать за этим изображением по порядку вывода, когда HighestTid равен j. Значение max_vps_num_reorder_pics[i][j] будет находиться в диапазоне от 0 до max_vps_dec_pic_buffering_minus1[i][j], включительно. Когда j больше чем 0, max_vps_num_reorder_pics[i][j] будет больше чем или равно max_vps_num_reorder_pics[i][j-1]. В некоторых случаях max_vps_num_reorder_pics[i][j] используется для выведения значений синтаксического элемента SPS sps_max_num_reorder_pics[j]. Когда max_vps_num_reorder_pics[i][j] не присутствует для i в диапазоне от 0 до max_sub_layers_vps_minus1[i]-1, включительно, из-за sub_layer_vps_ordering_info_present_flag[i] являющегося равным 0, подразумевают, что оно будет равным max_vps_num_reorder_pics[i][max_sub_layers_vps_minus1[i]].
[0573] Элемент max_vps_latency_increase_plus1[i][j], не равный 0, используется для вычисления значения VpsMaxLatencyPictures[i][j], которое задает максимальное количество изображений, которые могут предшествовать какому-либо изображению в CVS для уровня с nuh_layer_id, равным i, по порядку вывода и следует за этим изображением по порядку декодирования, когда HighestTid равен j.
[0574] Когда max_vps_latency_increase_plus1[i][j] не равно 0, значение MaxLatencyPictures Vps-[i][j] задается, как изложено ниже:
[0575] VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j] - 1
[0576] Когда max_vps_latency_increase_plus1[i][j] равно 0, соответствующее граничное значение не выражено.
[0577] Значение max_vps_latency_increase_plus1[j][k] должно находиться в диапазоне от 0 до 232-2, включительно. В некоторых случаях max_vps_latency_increase_plus1[i][j] используется для выведения значений синтаксических элементов SPS sps_max_latency_increase_plus1[j]. Когда max_vps_latency_increase_plus1[i][j] не присутствует для i в диапазоне от 0 до max_sub_layers_vps_minus1[i]-1, включительно, из-за являющегося равным 0 sub_layer_vps_ordering_info_present_flag[i], подразумевают, что оно будет равным max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1[i]].
[0578] Со ссылкой на фиг.52, иллюстрируется примерный модифицированный vps_extension. Модифицированное расширение vps включает в себя дополнительную модификацию синтаксиса на фиг.49 новым синтаксисом, а именно, sub_layer_vps_buf_info_predict_flag[i], sub_layer_vps_ordering_info_predict_flag[i], которые сигнализируют условно. Элемент sub_layer_vps_buf_info_predict_flag[i], равный 1, задает, что max_vps_dec_pic_buffering_minus1[i][j] подразумевают являющимся равным max_vps_dec_pic_buffering_minus1[i-1][j] для каждого значения j.
[0579] Элемент sub_layer_vps_buf_info_predict_flag[i], равный 0, задает, что max_vps_dec_pic_buffering_minus1[i][j], по меньшей мере, для одного значения j сигнализируют явно. Значение sub_layer_vps_buf_info_predict_flag[0] подразумевают равным 0. Если не присутствует, sub_layer_vps_buf_info_predict_flag[i] подразумевают равным 0.
[0580] Элемент sub_layer_vps_ordering_info_predict_flag[i], равный 1, задает, что синтаксические элементы sub_layer_vps_ordering_info_present_flag[i], max_vps_num_reorder_pics[i][j] и max_vps_latency_increase_plus1[i][j] подразумевают равными sub_layer_vps_ordering_info_present_flag[i-1], max_vps_num_reorder_pics[i-1][j] и max_vps_latency_increase_plus1[i 1][j], соответственно. Флаг sub_layer_vps_ordering_info_predict_flag[i], равный 0, задает, что синтаксические элементы sub_layer_vps_ordering_info_present_flag[i], max_vps_num_reorder_pics[i][j], и max_vps_latency_increase_plus1[i][j] сигнализируют явно. Если не присутствует, значение sub_layer_vps_ordering_info_predict_flag[i] устанавливают равным 0.
[0581] Прочие синтаксические элементы и их семантические значения для фиг.52 являются одинаковыми с таковыми по фиг.49.
[0582] Со ссылкой на фиг.53, иллюстрируется примерный модифицированный элемент vps_extension. Модифицированное расширение vps включает в себя дополнительную модификацию синтаксиса по фиг.49. На фиг.53 oop_dpb_maxbuffering_parameters(i,j) сигнализируют для каждого уровня j для конкретного набора i уровней вывода по сравнению с фиг.49, на которой сигнализируют одиночный набор параметров oop_dpb_maxbuffering_parameters(i) для идентификатора (id) высшего уровня в наборе i уровней вывода.
[0583] Со ссылкой на фиг.54, элемент oop_dpb_maxbuffering_parameters задает sub_layer_vps_buf_info_present_flag[i][k], max_vps_dec_pic_buffering_minus1[i][k][j].
[0584] Элемент sub_layer_vps_buf_info_present_flag[i][k], равный 1, задает, что значения max_vps_dec_pic_buffering_minus1[k][j] присутствуют для max_sub_layers_vps_minus1[k] подуровней. Элемент sub_layer_vps_buf_info_present_flag[i], равный 0, задает, что значения max_vps_dec_pic_buffering_minus1[i][k][max_sub_layers_vps_minus1[k]] применяют ко всем подуровням.
[0585] Элемент max_vps_dec_pic_buffering_minus1[i][k][j] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS для уровня с nuh_layer_id, равным k, для набора уровней вывода, связанного с индексом i, в единицах буферов хранения изображений, когда HighestTid равен j. Значения max_vps_dec_pic_buffering_minus1[i][k][j] будут находиться в диапазоне от 0 до MaxDpbSize - 1 (как определено в подпункте 4), включительно.
[0586] Когда j больше чем 0, max_vps_dec_pic_buffering_minus1[i][k][j] будет больше или равно max_vps_dec_pic_buffering_minus l[i][k][j-l] используется для выведения значений синтаксических элементов SPS sps_max_dec_pic_buffering_minus1[j].
[0587] Когда max_vps_dec_pic_buffering_minus1[i][j] не присутствует для i в диапазоне от 0 до max_sub_layers_vps_minus1[k]-1, включительно, из-за sub_layer_vps_buf_info_present_flag[i][k], являющегося равным 0, его подразумевают равным max_vps_dec_pic_buffering_minus1[i][k] max_sub_layers_vps_minus1[k]].
[0588] Значение max_vps_dec_pic_buffering_minus1[i][0][j] для каждого значения i и j подразумевают равным vps_max_dec_pic_buffering_minus1[j].
[0589] Со ссылкой на фиг.55 элемент oop_dpb_maxbuffering_parameters задает sub_layer_vps_buf_info_present_flag[i][k], max_vps_dec_pic_buffering_minus1[i][k][j]. Фигура фиг.55 является вариантом синтаксиса для oop_dpb_maxbuffering_parameters по сравнению с синтаксисом на фиг.54 для oop_dpb_maxbuffering_parameters.
[0590] Переменную MaxSubLayers[setId][k] для setId в диапазоне от 0 до num_dpb_info_parameters - 1, включительно, получают, как изложено ниже:
[0591] [Таблица 29]
[0592] В этом случае параметры oop_dpb_maxbuffering_parameters(i,k) будут определены как на фиг.55.
[0593] Со ссылкой на фиг.56, иллюстрируется примерный модифицированный элемент vps_extension. Модифицированное расширение vps включает в себя дополнительную модификацию синтаксиса по фиг.52 новым синтаксисом., На фиг.53 в этом варианте oop_dpb_maxbuffering_parameters (i, j) сигнализируют для каждого уровня j для конкретного набора i уровней вывода по сравнению с фиг.52, на которой сигнализируют одиночный набор параметров oop_dpb_maxbuffering_parameters(i) для идентификатора высшего уровня в наборе i уровней вывода.
[0594] Значения oop_dpb_maxbuffring_parameters(i,k) являются такими, как показано на фиг.57.
[0595] Со ссылкой на фиг.58 элемент oop_dpb_maxbuffering_parameters задает sub_layer_vps_buf_info_present_flag[i][k], max_vps_dec_pic_buffering_minus1[i][k][j]. Фигура фиг.58 является вариантом синтаксиса для oop_dpb_maxbuffering_parameters по сравнению с синтаксисом на фиг.57 для oop_dpb_maxbuffering_parameters.
[0596] Переменную MaxSubLayers[setId][k] для setId в диапазоне от 0 до num_dpb_info_parameters - 1, включительно, получают, как изложено ниже:
[0597] [Таблица 30]
[0598] В этом случае параметры oop_dpb_maxbuffering_parameters(i,k) будут определены как на фиг.58.
[0599] Со ссылкой на фиг.59, иллюстрируется примерный модифицированный элемент vps_extension. Модифицированное расширение vps включает в себя дополнительную модификацию синтаксиса по фиг.56 новым синтаксисом, а именно, дополнительный флаг layer_dpb_info_parameters_presence_flag, который сигнализируют условно. layer_dpb_info_parameters_presence_flag делает сигнализацию layer_dpb_info_parameters(i) в расширении VPS необязательной.
[0600] Элемент layer_dpb_info_parameters_presence_flag[i], равный 1, задает, что синтаксические элементы sub_layer_vps_ordering_info_predict_flag[i] и layer_dpb_info_parameters(i) присутствуют для vps_max_num_layers_minus1 уровней. Элемент layer_dpb_info_parameters_presence_flag[i], равный 0, задает, что синтаксические элементы sub_layer_vps_ordering_info_predict_flag[i] и layer_dpb_info_parameters(i) не присутствуют для vps_max_num_layers_minus1 уровней.
[0601] Значения oop_dpb_maxbuffring_parameters(i,k) являются такими, как показано на фиг.60.
[0602] Со ссылкой на фиг.61 элемент oop_dpb_maxbuffering_parameters задает sub_layer_vps_buf_info_present_flag[i][k], max_vps_dec_pic_buffering_minus1[i][k][j]. Фигура фиг.61 является вариантом синтаксиса для oop_dpb_maxbuffering_parameters по сравнению с синтаксисом на фиг.60 для oop_dpb_maxbuffering_parameters.
[0603] Переменную MaxSubLayers[setId][k] для setId в диапазоне от 0 до num_dpb_info_parameters - 1, включительно, получают, как изложено ниже:
[0604] [Таблица 31]
[0605] В этом случае параметры oop_dpb_maxbuffering_parameters(i,k) будут определены как на фиг.61.
[0606] Примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0607] [Таблица 32]
[0608] можно изменить на
[0609] [Таблица 33]
[0610] Таким образом индекс k может начинаться с 0, а не с 1.
[0611] Примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0612] [Таблица 34]
можно изменить на
[0614] [Таблица 35]
[0615] Элемент vps_max_layer_id задает максимальное допустимое значение nuh_layer_id всех блоков NAL в CVS. Элемент vps_max_layers_minus1 задает максимальное количество уровней, которые могут присутствовать в CVS, причем уровень может например, быть пространственным масштабируемым уровнем, масштабируемым уровнем качества, видом текстуры или видом глубины.
[0616] Другая примерная альтернатива для синтаксиса в расширении VPS состоит в том, что
[0617] [Таблица 36]
[0618] можно изменить на
[0619] [Таблица 37]
[0620] где numOutputLayers получают в виде
[0621] [Таблица 38]
[0622] или это можно изменить на
[0623] [Таблица 39]
[0624] В одном исполнении может быть сигнализирован дополнительный флаг, чтобы указывать, если oop_dpb_information_parameters сигнализируют для конкретного уровня, как изложено ниже:
[0625] [Таблица 40]
[0626] Элемент vps_layer_info_present_flag[k], равный 1, задает, что oop_dpb_maxbuffering_parameters присутствуют для k-ого уровня для конкретного набора уровней вывода. Элемент vps_layer_info_present_flag[k], равный 0, задает, что oop_dpb_maxbuffering_parameters не присутствуют для k-ого уровня для конкретного набора уровней вывода.
[0627] Синтаксические элементы блоков NAL не-VCL (или их значения по умолчанию для некоторых из синтаксических элементов), требуемые для HRD, определены в описывающих семантику подпунктах пункта 7, Приложений D и E.
[0628] Используются два типа наборов параметров HRD (параметры HRD для NAL и параметры HRD для VCL). Наборы параметров HRD сигнализируют посредством синтаксической структуры hrd_parameters(), которая может быть частью синтаксической структуры SPS или синтаксической структуры VPS.
[0629] Множественные испытания могут потребоваться для проверки соответствия битового потока, который именуется испытываемым битовым потоком. Для каждого испытания следующие этапы применяют в приведенном порядке:
[0630] (1) Выбирают испытываемый набор уровней вывода, обозначенный как TargetOpLs. Рабочая точка, на которую ссылается output_layer_set_idx[] в TargetOpLs, идентифицирует испытываемую рабочую точку. Список идентификаторов уровней вывода, OpLayerIdList, в TargetOpLs состоит из списка значений nuh_layer_id в порядке по возрастанию значений nuh_layer_id, присутствующих в подмножестве битового потока, связанном с TargetOp и TargetOpLs, который является подмножеством значений nuh_layer_id, присутствующих в испытываемом битовом потоке. OpTid в TargetOp равным наивысшему TemporalId, присутствующему в подмножестве битового потока, связанном с TargetOp.
[0631] (2) TargetDecLayerIdList устанавливают равным целевому списку targetDLayerIdList идентификаторов декодированных уровней для выбранного набора TargetOpLs уровней вывода, HighestTid устанавливают равным OpTid из TargetOp, и процесс извлечения битового подпотока, как определено в пункте 10, инициируют с испытываемым битовым потоком, HighestTid, и TargetDecLayerIdList в качестве входных данных, и выход назначают BitstreamToDecode.
[0632] (3) Выбирают синтаксическую структуру hrd_parameters() и синтаксическую структуру sub_layer_hrd_parameters(), применимую к TargetOp. Если TargetDecLayerIdList содержит все значения nuh_layer_id, присутствующие в испытываемом битовом потоке, выбирают синтаксическую структуру hrd_parameters() в активном SPS (или предоставленную внешним средством, не описываемом в этом Описании). Иначе, выбирают синтаксическую структуру hrd_parameters() в активном VPS (или предоставленную некоторым внешним средством, не описываемом в этом Описании), которая применяется к TargetOp. В рамках выбранной синтаксической структуры hrd_parameters(), если BitstreamToDecode является битовым потоком Типа I, выбирают синтаксическую структуру sub_layer_hrd_parameters (HighestTid), которая непосредственно следует условию "если (vcl_hrd_parameters_present_flag)", и переменную NalHrdModeFlag устанавливают равной 0; иначе (BitstreamToDecode является битовым потоком Типа II) выбирают синтаксическую структуру sub_layer_hrd_parameters (HighestTid), которая непосредственно следует либо условию "если (vcl_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 0), либо условию "если (nal_hrd_parameters_present_flag)" (в этом случае переменную NalHrdModeFlag устанавливают равной 1). Когда BitstreamToDecode является битовым потоком Типа II и NalHrdModeFlag равен 0, все блоки NAL не-VCL, кроме блоков NAL с данными заполнителя, и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, которые образуют поток байтов из потока блоков NAL (как определено в Приложении B), при присутствии, отбрасываются из BitstreamToDecode, и оставшийся битовый поток назначают BitstreamToDecode.
[0633] Соответствующий условиям декодер может выполнять все требования, определенные в этом подпункте.
[0634] (1) Декодер, заявляющий соответствие конкретному профилю, слою и уровню, должен быть способным успешно декодировать все битовые потоки, которые удовлетворяют требованиям соответствия битового потока, определенным в подпункте C.4, указанным в Приложении A образом, при условии, что все экземпляры VPS, SPS и PPS, на которые имеются ссылки в блоках NAL VCL, и соответствующие сообщения SEI о периоде буферизации и синхронизации изображения передаются на декодер своевременно, либо в битовом потоке (блоках NAL не-VCL), либо внешним средством, не определенным в этом Описании.
[0635] (2) Когда битовый поток содержит синтаксические элементы, которые имеют значения, которые определены как зарезервированные, и определено, что декодеры будут игнорировать значения синтаксических элементов или блоков NAL, содержащих синтаксические элементы, имеющие зарезервированные значения, и битовый поток иным образом соответствует этому Описанию, соответствующий условиям декодер будет декодировать битовый поток таким же образом, как декодировал бы соответствующий условиям битовый поток, и будет игнорировать синтаксические элементы или блоки NAL, содержащие синтаксические элементы, имеющие зарезервированные значения, как определено.
[0636] Имеются два типа соответствия декодера: соответствие синхронизации вывода и соответствие порядку вывода.
[0637] Для проверки соответствия декодера, тестовые битовые потоки, соответствующие заявленному профилю, слою и уровню, как определено в подпункте C.4, доставляются гипотетическим планировщиком потоков (HSS) и на HRD, и на испытываемый декодер (DUT). Все обрезанные декодированные изображения, выводимые посредством HRD, также подлежат выводу посредством DUT, каждое обрезанное декодированное изображение, выводимое посредством DUT, должно быть изображением с PicOutputFlag, равным 1, и для каждого такого обрезанного декодированного изображения, выводимого посредством DUT, значения всех выборок, являющихся выводимыми, должны быть равными значениям выборок, выдаваемых заданным процессом декодирования.
[0638] Для соответствия декодера синхронизации вывода HSS работает, как описано выше, с расписаниями доставки, выбираемыми только из подмножества значений SchedSelIdx, для которых скорость передачи битов и размер CPB ограничены, как определено в Приложении A для заданного профиля, слоя и уровня, или с "интерполированными" расписаниями доставки, как определено ниже, для которых скорость передачи битов и размер CPB ограничены, как определено в Приложении A. Одинаковое расписание доставки используется и для HRD, и для DUT.
[0639] Когда параметры HRD и сообщения SEI о периоде буферизации присутствуют с cpb_cnt_minus1[HighestTid], большим чем 0, декодер будет способным декодировать битовый поток, как доставлен от HSS, используя "интерполированное" расписание доставки, заданное имеющим пиковую скорость r передачи битов, размер CPB c(r), и начальную для CPB задержку удаления
[0640] [Математическое выражение 16]
как изложено ниже:
[0641] для любого SchedSelIdx>0 и r такого, что BitRate[SchedSelIdx-1] <=r<= BitRate[SchedSelIdx], так что r и c(r) находятся внутри граничных значений, как определено в Приложении A для максимальной скорости передачи и размера буфера для заданного профиля, слоя и уровня. InitCpbRemovalDelay[SchedSelIdx] может отличаться от одного периода буферизации к другому и подлежит повторному вычислению.
[0642] Для соответствия декодера синхронизации вывода, используется HRD, как описано выше, и синхронизация (относительно времени доставки первого бита) вывода изображения является одинаковой и для HRD, и для DUT с точностью до фиксированной задержки.
[0643] Для соответствия декодера порядку вывода применяют следующее:
[0644] (1) HSS доставляет битовый поток BitstreamToDecode на DUT "по запросу" от DUT, означая, что HSS доставляет биты (по порядку декодирования) только если DUT запрашивает больше битов для продолжения своей обработки. Это означает, что для этого испытания буфер кодированных изображений DUT может быть в пределах размера наибольшего блока декодирования.
[0645] (2) Используется модифицированный HRD, как описано ниже, и HSS доставляет битовый поток на HRD согласно одному из расписаний, заданных в битовом потоке BitstreamToDecode, так что скорость передачи битов и размер CPB ограничены, как определено в Приложении A. Порядок вывода изображений будет одинаковым и для HRD, и для DUT.
[0646] (3) Размер CPB HRD дается согласно CpbSize[SchedSelIdx], как определено в подпункте E.2.3, где SchedSelIdx и параметры HRD выбирают, как определено в подпункте C.l. Размер DPB дается согласно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда nuh_layer_id для текущего декодированного изображения равен 0), или из SPS активного уровня для значения nuh_layer_id текущего декодированного изображения.
[0647] В некоторых случаях, если информационные параметры DPB о наборах уровней вывода, oop_dpb_maxbuffering_parameters(), присутствуют для выбранного набора уровней вывода, размер DPB дается согласно max_vps_dec_pic_buffering_minus1[CurrLayerId][HighestTid], где currLayerId является nuh_layer_id текущего декодированного изображения. Иначе, если информационные параметры DPB наборов уровней вывода, oop_dpb_maxbuffering_parameters(), не присутствуют для выбранного набора уровней вывода, размер DPB дается согласно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда nuh_layer_id для текущего декодированного изображения равен 0), или из SPS активного уровня для значения nuh_layer_id текущего декодированного изображения).
[0648] Время удаления из CPB для HRD является конечным временем поступления битов и декодирование осуществляется немедленно. Работа DPB для этого HRD является такой, как описана в подпунктах C.5.2 - C.5.2.3.
[0649] Буфер декодированных изображений содержит буферы хранения изображения. Число буферов хранения изображений для nuh_layer_id, равного 0, получают из активного SPS. Число буферов хранения изображений для каждого ненулевого значения nuh_layer_id получают из SPS активного уровня для этого ненулевого значения nuh_layer_id. Каждый из буферов хранения изображений содержит декодированное изображение, которое помечено как "используемое для ссылки", или сохраняется для будущего вывода. Инициируют процесс для вывода и удаления изображений из DPB, как определено в подпункте F.13.5.2.2, за которым следует вызов процесса для декодирования изображения, пометки, дополнительного сбрасывания и сохранения, как определено в подпункте F.13.5.2.3. Процесс "сбрасывания" определен в подпункте F.13.5.2.4 и вызывается, как определено в подпунктах F.13.5.2.2 и F.13.5.2.3.
[0650] Вывод и удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно, когда первый блок декодирования в блоке доступа, содержащем текущее изображение, удаляется из CPB, и продолжается, как изложено ниже.
[0651] Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
[0652] (1) Если текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, которое не является изображением 0, применяют следующие упорядоченные этапы:
[0653] (A) Получают переменную NoOutputOfPriorPicsFlag для испытываемого декодера, как изложено ниже:
[0654] (i) Если текущее изображение является изображением CRA, NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).
[0655] (ii) Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученное на основе активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения, NoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag. Хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной при этих условиях, испытываемому декодеру допускается устанавливать NoOutputOfPriorPicsFlag в 1 в этом случае.
[0656] (iii) Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.
[0657] (B) Значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяется для HRD, как изложено ниже:
[0658] (i) Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения в DPB очищают без вывода изображений, которые они содержат, и заполненность DPB устанавливают равной 0.
[0659] (ii) Иначе (NoOutputOfPriorPicsFlag равен 0) все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB устанавливают равной 0.
[0660] (iii) Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения, содержащие изображение, которые помечены как "не требуемый для вывода" и "не используемый для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищают, заполненность DPB уменьшается на единицу. Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения.
[0661] Переменные MaxNumReorderPics[currLayerId][HighestTid], MaxLatencyln-creasePlus1[currLayerId][HighestTid], MaxLatencyPictures [currLayerId][HighestTid], MaxDecPicBufferingMinus1[currLayerId][HighestTid] получают, как изложено ниже:
[0662] Если информационные параметры DPB для уровня, layer_dpb_info_parameters(), присутствуют в VPS, MaxNumReorderPics [currLayerId][HighestTid] устанавливают в vps_max_num_reorder_pics[HighestTid], когда currLayerId равен 0, или устанавливают в max_vps_num_reorder_pics [CurrLayerId][HighestTid] для currLayerId, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB для уровня, layer_dpb_info_parameters(), не присутствуют, MaxNumReorderPics[currLayerId][HighestTid] устанавливают в sps_max_num_reorder_pics[HighestTid], полученный из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0663] Если информационные параметры DPB для уровня, layer_dpb_info_parameters(), присутствуют в VPS, MaxLatencyIncreasePlus1 [currLayerId][HighestTid] устанавливают в vps_max_latency_increase_plus1[HighestTid], когда currLayerId равен 0, или устанавливают в max_vps_latency_increase_plus1 [CurrLayerId][HighestTid] для currLayerId, когда currLayerId больше чем 0. Если информационные параметры DPB для уровня, layer_dpb_info_parameters(), присутствуют в VPS, MaxLatencyPictures[currLayerId][HighestTid] устанавливают в SpsMaxLatencyPictures[HighestTid], когда currLayerId равен 0, или устанавливают в VpsMaxLatencyPictures[CurrLayerId][HighestTid] для currLayerId, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB для уровня, layer_dpb_info_parameters(), не присутствуют для испытываемой рабочей точки, MaxLatencyIncreasePlus1[currLayerId][HighestTid] устанавливают в sps_max_latency_increase_plus1[HighestTid] активного SPS (когда currLayerId равен 0) или SPS активного уровня для значения currLayerId, и MaxLatencyPictures [currLayerId][HighestTid] устанавливают в SpsMaxLatencyPictures[currLayerId][HighestTid], полученный из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
[0664] Если информационные параметры DPB для рабочей точки, oop_dpb_maxbuffering_parameters(), присутствуют для выбранного набора уровней вывода, MaxDecPicBufferingMinus1[currLayerId][HighestTid] устанавливают в vps_max_dec_pic_buffering_minus1[HighestTid], когда currLayerId равен 0, или устанавливают в max_vps_dec_pic_buffering_minus1[CurrLayerId][HighestTid] для currLayerId для испытываемой рабочей точки, когда currLayerId больше чем 0. Иначе, если информационные параметры DPB рабочей точки, oop_dpb_maxbuffering_parameters(), не присутствуют для испытываемой рабочей точки, MaxDecPicBufferingMinus1 [currLayerId][HighestTid] устанавливают в sps_max_dec_pic_buffering_minus1[HighestTid] из активного SPS (когда currLayerId равен 0), или из SPS активного уровня для значения currLayerId.
[0665] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, при этом дополнительно уменьшая заполненность DPB на единицу для каждого добавочного буфера хранения изображения, который очищен, пока ни одно из следующих условий не истина:
[0666] (1) Число изображений с nuh_layer_id, равным currLayerId в DPB, которые помечены как "требуемое для вывода", больше чем MaxNumReorderPics [CurrLayerId][HighestTid].
[0667] (2) Если MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] не равен 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как «требуемое для вывода», для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures[CurrLayerId] [HighestTid].
[0668] (3) Число изображений в DPB с nuh_layer_id, равным currLayerId больше чем или равно MaxDecPicBuffering [CurrLayerId][HighestTid].
[0669] Процессы, определенные в этом подпункте, происходят немедленно, когда последний блок декодирования блока n доступа, содержащего текущее изображение удаляют из CPB.
[0670] Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения.
[0671] Для каждого изображения в DPB, которое помечено как «требуемое для вывода» и которое имеет значение nuh_layer_id, равное currLayerId, связанную с ним переменную PicLatencyCount[currLayerId] устанавливают равной PicLatencyCount [currLayerId]+1.
[0672] Текущее изображение считается декодированным после того, как декодирован последний блок декодирования в изображении. Текущее декодированное изображение сохраняют в DPB в пустом буфере хранения изображения и применяют следующее:
[0673] (A) Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount [currLayerId] устанавливают равной 0.
[0674] (B) Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода".
[0675] Текущее декодированное изображение помечают как "используемое для краткосрочной ссылки".
[0676] Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, пока ни одно из следующих условий не истина.
[0677] (A) Число изображений с nuh_layer_id, равным currLayerId, в DPB, которые помечены как "требуемое для вывода", больше чем MaxNumReorderPics [CurrLayerId][HighestTid].
[0678] (B) MaxLatencyIncreasePlus1[CurrLayerId][HighestTid] не равно 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как «требуемое для вывода», для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна MaxLatencyPictures[CurrLayerId] [HighestTid].
[0679] Процесс "сбрасывания" состоит из следующих упорядоченных этапов:
[0680] (A) Изображения, которые являются первыми для вывода, выбирают как таковые с наименьшим значением PicOrderCntVal из всех изображений в DPB, помеченных как "требуемое для вывода".
[0681] (B) Эти изображения обрезают, используя окно соответствия условию обрезки, заданное в активном SPS для изображения с nuh_layer_id, равным 0, или в SPS активного уровня для значения nuh_layer_id, равный таковому для изображения, обрезанные изображения выводят по порядку возрастания nuh_layer_id, и изображения помечают как "не требуемое для вывода".
[0682] (C) Каждый буфер хранения изображения, который содержит изображение, помеченное как "не используемое для ссылки", и который включал одно из изображений, которое было обрезано и выведено, очищают.
[0683] Со ссылкой на фиг.62, иллюстрируется примерный модифицированный синтаксис набора параметров последовательности (sps), seq_parameter_set_rbsp. Модифицированный sps включает в себя sps_dpb_params_present_flag. В одном исполнении на основании значения этого флага и на основании значения nuh_layer_id некоторые из синтаксических элементов (например, sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], sps_max_latency_incease_plus1[i] могут не сигнализироваться.
[0684] Элемент sps_dpb_params_present_flag, равный 0, задает, что для SPS с nuh_layer_id>0 синтаксические элементы sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], sps_max_latency_increase_plus1[i] не присутствуют в этом SPS. Значение этих параметров устанавливают равным значению sub_layer_vps_buf_info_present_flag[i], max_vps_num_reorder_pics[i][j] и параметры max_vps_latency_increase_plus1[i][j] сигнализируют в расширении активного VPS. Элемент sps_dpb_params_present_flag, равный 1, задает, что для SPS с nuh_layer_id>0 синтаксические элементы sps_sub_layer_ordering_info_present_flag, sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], sps_max_latency_increase_plus1[i] присутствует в этом SPS.
[0685] В другом исполнении один или несколько из синтаксических элементов можно сигнализировать, используя известное фиксированное число битов вместо u(v), вместо ue(v). Например их можно сигнализировать, используя u(8), или u(16), или u(32), или u(64), и т.д.
[0686] В другом исполнении одно или более из этих синтаксических элементов можно сигнализировать с помощью ue(v) или некоторой другой схемы кодирования вместо фиксированного числа битов, например, u(v) кодирования.
[0687] В другом исполнении имена различных синтаксических элементов и их семантика могут изменяться путем добавления plus1 или plus2 или вычитания minus1 или minus2 по сравнению с описанными синтаксисом и семантикой.
[0688] В еще одном исполнении различные синтаксические элементы могут быть сигнализированы на каждое изображение где-либо в битовом потоке. Например, они могут быть сигнализированы в заголовке сегмента слайса, pps/sps/vps/или любом другом наборе параметров или другой нормативной части битового потока.
[0689] В еще других вариантах осуществления все понятия, определенные в этом изобретении, относящиеся к наборам уровней вывода, могут применяться к рабочим точкам вывода [2,3] и/или к рабочим точкам [1].
Пример 3
[0690] Раскрывается способ для кодирования видео. Способ включает в себя инициирование процесса разбора первого заголовка слайса текущего изображения. Определяют, какие этапы, выполняемые буфером декодированных изображений (DPB), будут на основе изображения, и какие этапы будут на основе блока доступа (AU). Выполняют удаление из DPB. Выполняют вывод изображения из DPB. Выполняют декодирование и сохранение текущего декодированного изображения в DPB. Текущее декодированное изображение в DPB помечают. Также выполняют дополнительный вывод изображения из DPB.
[0691] В некоторых конфигурациях удаление и вывод из DPB могут быть на основе, по меньшей мере, одного флага вывода AU, такого как флаг вывода AU, флаг вывода AU без RASL и/или флаг вывода AU без предшествующих изображений. Флаг вывода AU может быть получен на основе синтаксических элементов, сигнализированных в битовом потоке, и других условий. Флаги AU представляют флаги, получаемые и применяемые на уровне блока доступа (AU). В некоторых случаях, они будут флагами, отличающимися от подобных флагов, которые сигнализируют или получают на уровне изображения, таких как флаг вывода изображения (например, pic_output_flag), флаг вывода изображения без rasl (например, NoRaslOutputFlag) и/или флаг вывода изображения без предшествующих изображений (например, флаг no_output_of_prior_pics).
[0692] В одной конфигурации первый флаг вывода AU может быть получен и использован посредством DPB, и второй флаг вывода AU получает и использует DPB. В другой конфигурации значения синтаксического элемента флага вывода всего изображения могут ограничиваться одинаковым значением для всех кодированных изображений в AU, когда флаг вывода изображения присутствует в заголовке первого слайса. В некоторых конфигурациях значения синтаксического элемента флага вывода всего изображения могут ограничиваться одинаковым значением для всех кодированных изображений в AU, когда какой-либо флаг вывода изображения не присутствует в первом заголовке слайса.
[0693] В одной конфигурации удаление может быть на основе изображения, вывод изображения может быть на основе AU (блок доступа), сохранение и декодирование могут быть на основе изображения, пометка может быть на основе изображения, и дополнительный вывод изображения может быть на основе AU. Удаление из DPB может удалять одно или несколько изображений из DPB до декодирования текущего изображения.
[0694] В другой конфигурации удаление может быть на основе изображения, и вывод изображения, декодирование и сохранение, пометка и дополнительный вывод изображения могут быть на основе AU. В еще одной конфигурации удаление, вывод изображения, декодирование и сохранение, пометка и дополнительный вывод изображения могут быть на основе AU. В другой конфигурации удаление, декодирование и сохранение, и пометка могут быть на основе изображения, и вывод изображения и дополнительный вывод изображения могут быть на основе AU. В еще одной конфигурации удаление, вывод изображения, декодирование и сохранение, пометка и дополнительный вывод изображения могут быть на основе изображения.
[0695] Пометка текущего декодированного изображения в DPB может включать в себя этап пометки ссылки и этап пометки вывода. Этап пометки ссылки может быть на основе изображения, и этап пометки вывода может быть на основе AU. Заполненность DPB может увеличиваться на единицу, когда декодированное изображение сохраняют в DPB в пустом буфере хранения. Заполненность DPB может уменьшаться на единицу, когда изображение выводят из DPB. Заполненность DPB может отслеживаться «на один уровень». Заполненность DPB может также отслеживаться для набора уровней вывода.
[0696] DPB может включать в себя отдельно идентифицируемые и управляемые буферы изображенийдля декодированных изображений, имеющих одну или несколько из различных разрешающих способностей, различных глубин цвета и различную цветовую характеристику цветности. DPB может включать в себя общий пул буферов хранения изображений. Декодированное изображение может сохраняться в буферах хранения изображений на основании, по меньшей мере, одного из размера, разрешения и глубины цвета. В одной конфигурации декодированное изображение может сохраняться в одном слоте буфера изображения в буферах хранения изображений.
[0697] Способ может выполняться декодером в рамках электронного устройства, которое соответствует стандарту масштабируемого высокоэффективного кодирования видеоизображений (SHVC). Способ может также выполняться декодером в электронном устройстве, которое соответствует стандарту высокоэффективного многовидового кодирования видеоизображений (MV-HEVC).
[0698] Также раскрыто электронное устройство, сконфигурированное для кодирования видео. Электронное устройство включает в себя процессор и память в электронной связи с процессором. Инструкции в памяти являются исполнимыми, чтобы начинать синтаксический разбор первого заголовка слайса текущего изображения. Инструкции в памяти являются также исполнимыми, чтобы определять, какие этапы, выполняемые буфером декодированных изображений (DPB), будут на основе изображения, какие этапы будут на основе блока доступа (AU). Инструкции в памяти являются дополнительно исполнимыми, чтобы выполнять удаление из DPB. Инструкции в памяти являются также исполнимыми, чтобы выполнять вывод изображения из DPB. Инструкции в памяти являются дополнительно исполнимыми, чтобы выполнять декодирование и сохранение текущего декодированного изображения в DPB. Инструкции в памяти являются также исполнимыми, чтобы помечать текущее декодированное изображение в DPB. Инструкции в памяти являются дополнительно исполнимыми, чтобы выполнять дополнительный вывод изображения из DPB.
[0699] Различные конфигурации теперь описываются со ссылкой на фигуры чертежей, где подобные числовые ссылочные позиции могут указывать функционально подобные элементы. Системы и способы, как в общем описано и проиллюстрировано на фигурах чертежей в описании, могут быть структурированы и спроектированы в широком разнообразии различных конфигураций. Таким образом, последующее более подробное описание нескольких конфигураций, как представлено на фигурах чертежей, не предназначено ограничивать объем, как заявлено в формуле изобретения, а просто является представлением систем и способов.
[0700] Фигура фиг.63 - блок-схема, иллюстрирующая кодирование видео между множественными электронными устройствами 2102a-b. Иллюстрируются первое электронное устройство 2102a и второе электронное устройство 2102b. Однако, следует отметить, что одно или несколько из признаков и функциональности, описанных в отношении первого электронного устройства 2102a и второго электронного устройства 2102b, можно объединить в одно электронное устройство 102 в некоторых конфигурациях. Каждое электронное устройство 102 может быть сконфигурировано для кодирования видео и/или декодирования видео. Электронные устройства 102 могут быть сконфигурированы, чтобы использовать гибридный режим работы буфера декодированных изображений (DPB). Гибридный режим работы буфера декодированных изображений (DPB) относится к сценариям, где различные этапы удаления, вывода (сбрасывания), сохранения, пометки и дополнительного вывода (сбрасывания), выполняемые на буфере 116 декодированных изображений (DPB), происходят или на основе изображения, или на основе блока доступа (AU). Хотя конкретные комбинации этих этапов упоминаются в качестве выполняемых на основе изображения или на основе блока доступа (AU), поддерживаются все возможные комбинации выполнения каждого из этих этапов отдельно или на основе изображения, или на основе блока доступа (AU).
[0701] Как используется в описании, блок доступа (AU) относится к набору блоков уровня сетевой абстракции (NAL), которые связаны друг с другом в соответствии с заданным правилом классификации, которые являются последовательными по порядку декодирования, и которые включает в себя блоки NAL уровня кодирования видео (VCL) всех кодированных изображений, связанных с одинаковым временем вывода и их связанные блоки NAL, не относящиеся к VCL. Базовый уровень является уровнем, в котором все блоки NAL VCL имеют nuh_layer_id, равный 0. Кодированное изображение является кодированным представлением изображения, которое включает в себя блоки NAL VCL с конкретным значением nuh_layer_id и которое включает в себя все древовидные блоки кодирования изображения. В некоторых случаях кодированное изображение может называться компонентом уровня. Дополнительные подробности об этапах, основываемых на изображении или блоке доступа (AU), даются в отношении фиг. 69 и 70 ниже.
[0702] В одной конфигурации каждое из электронных устройств 102 может соответствовать стандарту высокоэффективного кодирования видеоизображений (HEVC), стандарту масштабируемого высокоэффективного кодирования видеоизображений (SHVC) или стандарту высокоэффективного многовидового кодирования видеоизображений (MV-HEVC). Стандарт HEVC является стандартом сжатия видео, который действует в качестве преемника H.264/MPEG-4 AVC (усовершенствованное кодирование видео), и обеспечивает улучшенное качество видео и повышенные коэффициенты сжатия данных. Как используется в описании, изображение является массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4 или некотором другом цветовом формате. Работа гипотетического эталонного декодера (HRD) и работа буфера 116 декодированных изображений (DPB) очередности вывода описаны для SHVC и MV-HEVC в JCTVC-M1008, JCTVC-L1008, JCTVC-D1004, JCT3V-C1004, JCTVC-L0453 и JCTVC-L0452.
[0703] Первое электронное устройство 2102a может включать в себя кодер 2108 и модуль 2112 служебной сигнализации. Первое электронное устройство 2102a может получать входное изображение 2106. В некоторых конфигурациях входное изображение 2106 может быть получено записью на первом электронном устройстве 2102a с использованием датчика ввода изображения, извлечено из памяти и/или принято от другого электронного устройства 102. Кодер 2108 может кодировать входное изображение 2106, чтобы создать кодированные данные 2110. Например, кодер 2108 может кодировать серию входных изображений 2106 (например, видео). Кодированные данные 2110 могут быть цифровыми данными (например, битовым потоком).
[0704] Модуль 2112 служебной сигнализации может формировать служебную сигнализацию на основании кодированных данных 2110. Например, модуль 2112 служебной сигнализации может добавлять служебные данные к кодированным данным 2110, такие как информация о заголовке слайса, информация набора параметров видео (VPS), информация набора параметров последовательности (SPS), информация набора параметров изображения (PPS), информация счетчика очередности изображения (POC), обозначение опорного изображения, и т.д. В некоторых конфигурациях модуль 2112 служебной сигнализации может выдавать индикатор оболочки (wrap indicator), который указывает переход между двумя наборами изображений.
[0705] Кодер 2108 (и модуль 2112 служебной сигнализации, например) может выдавать битовый поток 2114. Битовый поток 2114 может включать в себя данные кодированного изображения на основании входного изображения 2106. В некоторых конфигурациях битовый поток 2114 может также включать в себя служебные данные, такие как информация о заголовке слайса, информация VPS, информация SPS, информация PPS, и т.д. Поскольку дополнительные входные изображения 2106 кодированы, битовый поток 2114 может включать в себя одно или несколько кодированных изображений. Например, битовый поток 2114 может включать в себя одно или большее число кодированных опорных изображений и/или другие изображения.
[0706] Битовый поток 2114 может предоставляться на декодер 2104. В одном примере битовый поток 2114 может передаваться на второе электронное устройство 2102b с использованием проводной или беспроводной линии связи. В некоторых случаях, это может делаться по сети, такой как сеть Интернет или локальная сеть (LAN). Как проиллюстрировано на фиг.63, декодер 2104 может быть реализован на втором электронном устройстве 2102b отдельно от кодера 2108 на первом электронном устройстве 2102a. Однако, следует отметить, что кодер 2108 и декодер 2104 могут быть реализованы на одном и том же электронном устройстве 102 в некоторых конфигурациях. Когда кодер 2108 и декодер 2104 реализованы на том же электронном устройстве, например, битовый поток 2114 может предоставляться по шине на декодер 2104 или сохраняться в памяти для извлечения декодером 2104.
[0707] Декодер 2104 может принимать (например, получать) битовый поток 2114. Декодер 2104 может формировать декодированное изображение 2118 (например, одно или большее число декодированных изображений 2118) на основании битового потока 2114. Декодированное изображение 2118 может быть выведено на экран, воспроизведено, сохранено в памяти и/или передано на другое устройство, и т.д.
[0708] Декодер 2104 может включать в себя буфер 116 декодированных изображений (DPB). Буфер 116 декодированных изображений (DPB) может быть буфером, хранящим декодированные изображения для ссылки, переупорядочения вывода или задержки вывода, заданной для гипотетического эталонного декодера (HRD). На электронном устройстве 102 буфер 116 декодированных изображений (DPB) может использоваться, чтобы сохранять восстановленные (например, декодированные), изображения в декодере 2104. Эти сохраненные изображения могут затем использоваться, например, в механизме межкадрового предсказания. Когда изображения декодируют не по порядку, изображения могут быть сохранены в буфере 116 декодированных изображений (DPB), поэтому они могут отображаться впоследствии по порядку.
[0709] В стандарте H.264 или усовершенствованном кодировании видео (AVC), управление буфером 116 декодированных изображений (DPB) (например, удаление, добавление изображений, переупорядочение изображений, и т.д.) выполняют, используя управляющие операции управления памятью (MMCO). Рассматриваются многие различные подходы к управлению буфером 116 декодированных изображений (DPB).
[0710] Декодер 2104 может включать в себя модуль 2120 гибридной работы буфера декодированных изображений (DPB). Модуль 2120 гибридной работы буфера декодированных изображений (DPB) может предусматривать для буфера 116 декодированных изображений (DPB) подходы к управлению с этапами 2122 на основе изображения и/или для буфера 116 декодированных изображений (DPB) подходы к управлению с этапами 2124 на основе блока доступа (AU). Например, одно преимущество использования этапов 2124 на основе блока доступа (AU) для пометки удаления, хранения и ссылки состоит в том, что различные уровни будут использовать оптимальную память буфера 116 декодированных изображений (DPB). Таким образом, общая требуемая память при использовании этапов на основе изображения может быть меньше. Одно преимущество использования этапов 2124 на основе блока доступа (AU) для вывода (включая вывод, пометку вывода и дополнительный вывод) состоит в том, что процесс вывода может быть упрощен.
[0711] Фигура фиг.64 является схемой последовательности операций способа 2200 для гибридной работы буфера 116 декодированных изображений (DPB). Способ 2200 может выполняться буфером 116 декодированных изображений (DPB) как части декодера 2104 в электронном устройстве 102. В одной конфигурации способ 2200 может выполняться модулем 2120 гибридной работы буфера декодированных изображений (DPB). Буфер 116 декодированных изображений (DPB) может начинать синтаксический разбор 2202 первого заголовка слайса текущего изображения. Буфер 116 декодированных изображений (DPB) может определять 2204, какие этапы гибридной работы буфера декодированных изображений (DPB) будут основаны на изображении, и какие этапы будут основаны на блоке доступа (AU).
[0712] Буфер 116 декодированных изображений (DPB) может выполнять 2206 удаление (без вывода) из буфера 116 декодированных изображений (DPB). Удаление может удалять изображения из буфера 116 декодированных изображений (DPB) до декодирования текущего изображения. Буфер 116 декодированных изображений (DPB) может выполнять 2208 вывод (сбрасывание) изображения из буфера 116 декодированных изображений (DPB). Вывод (сбрасывание) изображения может относиться к выводу изображений из буфера 116 декодированных изображений (DPB) во время удаления буфера кодированных изображений (CPB). В некоторых конфигурациях термин сбрасывание может использоваться, чтобы указывать вывод одного или большего числа изображений из буфера 116 декодированных изображений (DPB). Таким образом, термины «сбрасывание» и «вывод» могут использоваться взаимозаменяемо.
[0713] Буфер 116 декодированных изображений (DPB) может декодировать 2210 и сохранять текущее изображение в буфере 116 декодированных изображений (DPB). Буфер 116 декодированных изображений (DPB) может помечать 2212 текущее декодированное изображение, сохраненное в буфере 116 декодированных изображений (DPB). Например, буфер 116 декодированных изображений (DPB) может помечать 2212 текущее декодированное изображение как "не используемое для ссылки", "используемое для ссылки", "требуемое для вывода" или "не требуемое для вывода". Буфер 116 декодированных изображений (DPB) может также выполнять 2214 выводы другого изображения (дополнительное сбрасывание) из буфера 116 декодированных изображений (DPB). В некоторых конфигурациях может происходить повторное удаление/сбрасывание изображений из буфера 116 декодированных изображений (DPB), пока не будут удовлетворены некоторые условия.
[0714] Фигура фиг.65 является схемой последовательности операций другого способа 2300 для гибридной работы буфера 116 декодированных изображений (DPB). Например, способ 2300 по фиг.65 может быть предпочтительным способом для гибридной работы буфера 116 декодированных изображений (DPB). Способ 2300 может выполняться буфером 116 декодированных изображений (DPB), как частью декодера 2104, на электронном устройстве 102. В одной конфигурации способ 2300 может выполняться модулем 2120 гибридной работы буфера декодированных изображений (DPB) 2120. Буфер 116 декодированных изображений (DPB) может начинать синтаксический разбор 2302 первого заголовка слайса текущего изображения. Термин «гибридный» относится к факту, что некоторые из этапов работы буфера 116 декодированных изображений (DPB) выполняются на основе изображения, и некоторые из этапов работы буфера 116 декодированных изображений (DPB) выполняются на основе блока доступа (AU). Буфер 116 декодированных изображений (DPB) может выполнять на этапе 2304 основанное на изображении удаление (без вывода) из буфера 116 декодированных изображений (DPB). Буфер 116 декодированных изображений (DPB) может выполнять на этапе 2306 основанный на блоке доступа (AU) вывод (сбрасывание) изображения из буфера 116 декодированных изображений (DPB). Буфер 116 декодированных изображений (DPB) может выполнять на этапе 2308 основанные на изображении декодирование и сохранение текущего изображения в буфере декодированных изображений (DPB).
[0715] Буфер 116 декодированных изображений (DPB) может выполнять основанную на изображении пометку 310 текущего декодированного изображения в буфере декодированных изображений (DPB). Этап пометки, выполняемый буфером 116 декодированных изображений (DPB), может быть дополнительно подразделен, чтобы включать в себя и этап пометки ссылки, и этап пометки вывода. Как используется в описании, пометка изображения как "не используемое для ссылки" или "используемое для ссылки" относится к этапу пометки ссылки. Декодированное изображение в буфере 116 декодированных изображений (DPB) может помечаться только как одно из "неиспользуемое для ссылки", "используемое для краткосрочной ссылки" или "используемое для долгосрочной ссылки" в любой данный момент в течение работы процесса декодирования. Назначение одной из этих меток изображению неявно удаляет другую из меток, которая присвоена изображению. Когда изображение именуется помечаемым как "используемое для ссылки", это в совокупности относится к изображению, помечаемому или как "используемое для краткосрочной ссылки", или как "используемое для долгосрочной ссылки", но никогда вместе. Как используется в описании, пометка изображения как "требуемое для вывода" или "не требуемое для вывода" относится к этапу пометки вывода.
[0716] Буфер 116 декодированных изображений (DPB) может работать таким образом, что этап пометки ссылки и этап пометки вывода могут происходить или на основе изображения, или на основе блока доступа (AU). В общем, поддерживаются все возможные комбинации (обычно четыре комбинации) выполнения этих двух этапов пометки отдельно на основе изображения или на основе блока доступа (AU). Однако, может быть предпочтительным, что этап пометки ссылки основан на изображении, и этап пометки вывода основан на блоке доступа (AU).
[0717] Буфер 116 декодированных изображений (DPB) может также выполнять 2312 пометки вывода на основе блока доступа (AU) для текущего декодированного изображения. Буфер 116 декодированных изображений (DPB) может выполнять 2314 основанный на блоке доступа (AU) другой вывод (дополнительное сбрасывание) изображения из буфера 116 декодированных изображений (DPB). В некоторых конфигурациях может происходить повторное удаление/сбрасывание изображений из буфера 116 декодированных изображений (DPB), пока некоторые условия не будут удовлетворены.
[0718] В некоторых подходах ограничения на соответствие битового потока могут требоваться для флагов в заголовке сегмента слайса. В некоторых случаях, ограничения могут применяться для флагов по всем изображениям, принадлежащим тому же блоку доступа (AU). Например, флагам pic_output_flag и/или no_output_of_prior_pics_flag может требоваться следовать ограничениям на соответствие битового потока. Например, каждый документ JCTVC-L1003, JCTVC-M1008 и JCT3V-D1004 описывает сигнализацию в заголовке сегмента слайса, используя pic_output_flag и no_output_of_prior_pics_flag. Кроме того, флаги, такие как PicOutputFlag, NoRaslOutputFlag и NoOutputOfPriorPicsFlag, возможно получать на основе типов синтаксических элементов и блока NAL.
[0719] Документы JCTVC-L1003, JCTVC-M1008 и JCT3V-D1004 к тому же включают описания DPB для HEVC, SПVC и MV-HEVC. Проект текста 1 документа JCTVC-M1008 SHVC обеспечивает проект текста для «масштабируемого» расширения HEVC. Проект текста 4 MV-HEVC JCT3V-D1004 описывает проект текста для «многовидового» расширения HEVC.
[0720] Битовый поток кодированного видео, согласно JCTVC-L1003, JCTVC-M1008 и/или JCT3V-D1004, может включать в себя синтаксическую структуру, которую помещают в логические пакеты данных, обычно именуемые блоками уровня сетевой абстракции (NAL). Каждый блок NAL включает в себя заголовок блока NAL, такой как двухбайтовый заголовок (например, 16 битов) блока NAL, чтобы идентифицировать назначение полезной нагрузки связанных данных. Например, каждый кодированный слайс (и/или изображение) может быть закодирован в одном или нескольких блоках NAL слайса (и/или изображения). Другие блоки NAL могут быть включены для других категорий данных, таких как, например, дополнительная расширенная информация, кодированный слайс изображения с временным доступом к подуровню (TSA), кодированный слайс изображения с пошаговым с временным доступом к подуровню (STSA), кодированный слайс отличного от TSA, отличного от STSA концевого изображения, кодированный слайс изображения с доступом с разорванной связью, кодированный слайс изображения с мгновенным обновлением декодирования, кодированный слайс изображения с произвольным доступом, кодированный слайс декодируемого головного изображения, кодированный слайс помеченного для отбрасывания изображения, набор параметров видео, набор параметров последовательности, набор параметров изображения, разделитель блока доступа, конец последовательности, конец битового потока, данные заполнителя и/или сообщения расширения информации последовательности. Таблица (7) ниже иллюстрирует один пример кодов блока NAL и классов типов блоков NAL. Другие типы блока NAL также может быть включены, как необходимо.
[0721] Следует также понять, что значения типов блока NAL для блоков NAL, показанные в Таблице (7), могут быть перегруппированы и повторно назначены. Кроме того, дополнительные типы блоков NAL могут быть добавлены или удалены.
[0722] Изображение с внутрикадровым кодированием с точкой произвольного доступа (IRAP) является кодированным изображением, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type в диапазоне от BLA_W_LP до RSV_IRAP_VCL23, включительно, как показано в Таблице (7) ниже. Изображение IRAP включает в себя только внутрикадрово-кодированные (I) слайсы.
[0723] Изображение с мгновенным обновлением декодирования (IDR) является изображением IRAP, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type, равный IDR_W_RADL или IDR_N_LP, как показано в Таблице (7). Изображение с мгновенным обновлением декодирования (IDR) включает в себя только I-слайсы и может быть первым изображением в битовом потоке по порядку декодирования, или может появиться позднее в битовом потоке.
[0724] Каждое IDR изображение является первым изображением кодированной видеопоследовательности (CVS) по порядку декодирования. Изображение с доступом с разорванной связью (BLA) является изображением IRAP, для которого каждый блок NAL уровня кодирования видео имеет nal_unit_type, равный BLA_W_LP, BLA_W_RADL или BLA_N_LP, как показано в Таблице (7).
[0725] Изображение BLA включает в себя только I-слайсы, и может быть первым изображением в битовом потоке по порядку декодирования, или может появиться впоследствии в битовом потоке. Каждое изображение BLA начинает новую кодированную видео последовательность и оказывает такое же воздействие на процесс декодирования, как изображение IDR. Однако, BLA изображение включает в себя синтаксические элементы, которые задают непустой набор опорных изображений.
[0726]
1
TRAIL_R
slice_segment_layer_rbsp()
3
TSA_R
5
STSA_R
7
RADL_R
9
RASL_R
12
14
13
15
17
18
slice_segment_layer rbsp()
20
slice_segment_layer_rbsp()
23
RSV_VCL31
40
SUFFIX_SEI_NUT
UNSPEC63
Таблица (7)
[0727] Со ссылкой на Таблицу (8) ниже, синтаксис заголовка блока NAL может включать в себя два байта данных, а именно, 16 битов. Первый бит может быть "forbidden_zero_bit", который всегда устанавливают в нуль в начале блока NAL. Следующие шесть битов могут быть полем "nal_unit_type", которое задает тип структуры данных полезных нагрузок необработанных последовательностей байтов ("RBSP"), включенной в блок NAL, как показано в Таблице (7) выше. Следующие 6 битов могут быть "nuh_layer_id", которые задают идентификатор уровня. В некоторых случаях, эти шесть битов могут быть определены как "nuh_reserved_zero_6bits" вместо этого. nuh_reserved_zero_6bits может быть равным 0 в базовой спецификации стандарта. В масштабируемом кодировании видео и/или расширениях синтаксиса nuh_layer_id может задавать, что этот конкретный блок NAL принадлежит уровню, идентифицированному значением этих 6 битов.
[0728] Следующий синтаксический элемент может быть "nuh_temporal_id_plus1". Элемент nuh_temporal_id_plus1 минус 1 может задавать временный идентификатор для блока NAL. Переменная «временный идентификатор» TemporalId может быть задана как TemporalId=nuh_temporal_id_plus1-1. Временный идентификатор TemporalId используется для идентификации временного подуровня. Переменная HighestTid идентифицирует высший временной подуровень, подлежащий декодированию.
[0729] [Таблица 43]
[0730] Таблица (9) ниже показывает синтаксическую структуру примерного набора параметров последовательности (SPS). Элемент pic_width_in_luma_samples задает ширину каждого декодированного изображения в единицах выборок яркости. Значение pic_width_in_luma_samples не должно быть равным 0. Элемент pic_height_in_luma_samples задает высоту каждого декодированного изображения в единицах выборок яркости. Значение pic_height_in_luma_samples не должно быть равным 0.
[0731] sps_max_sub_layers_minus1 плюс 1 задает максимальное количество временных подуровней, которые могут присутствовать в каждом CVS, ссылающемся на SPS. sps_max_sub_layers_minus1 имеет значение от 0 до 6, включительно.
[0732] Флаг sps_sub_layer_ordering_info_present_flag, равный 1, задает, что синтаксические элементы sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i] и sps_max_latency_increase_plus1[i] присутствуют для sps_max_sub_layers_minus1+1 подуровнй. Флаг sps_sub_layer_ordering_info_present_flag, равный 0, задает, что значения sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1], sps_max_num_reorder_pics [sps_max_sub_layers_minus1] и sps_max_latency_increase_plus1 [sps_max_sub_layers_minus1] применяются ко всем подуровням.
[0733] Элемент sps_max_dec_pic_buffering_minus1[i] плюс 1 задает максимальный требуемый размер буфера декодированных изображений для CVS в единицах буферов хранения изображений, когда HighestTid равен i. sps_max_dec_pic_buffering_minus1[i] имеет значение от 0 до MaxDpbSize - 1, включительно, где MaxDpbSize задает максимальный размер буфера декодированных изображений в единицах буферов хранения изображений. Когда i больше чем 0, sps_max_dec_pic_buffering_minus1[i] будет больше чем или равно sps_max_dec_pic_buffering_minus1[i-1]. Когда sps_max_dec_pic_buffering_minus1[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, из-за sps_sub_layer_ordering_info_present_flag, являющегося равным 0, его подразумевают равным sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1].
[0734] Элемент sps_max_num_reorder_pics[i] указывает максимальное допустимое число изображений, которые могут предшествовать какому-либо изображению в CVS по порядку декодирования и следовать за этим изображением по порядку вывода, когда HighestTid равен i. sps_max_num_reorder_pics[i] имеет значение от 0 до sps_max_dec_pic_buffering_minus1[i], включительно. Когда i больше чем 0, sps_max_num_reorder_pics[i] может быть больше чем или равным sps_max_num_reorder_pics[i-1]. Когда sps_max_num_reorder_pics[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, из-за sps_sub_layer_ordering_info_present_flag, являющегося равным 0, его подразумевают равным sps_max_num_reorder_pics[sps_max_sub_layers_minus1].
[0735] sps_max_latency_increase_plus1[i], не равное 0, может использоваться для вычисления значения SpsMaxLatencyPictures[i], которое задает максимальное количество изображений, которые могут предшествовать какому-либо изображению в CVS по порядку вывода и следовать после этого изображения по порядку декодирования, когда HighestTid равен i. Когда sps_max_latency_increase_plus1[i] не равно 0, значение SpsMaxLatencyPictures[i] задается как SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_increase_plus1[i] - l. Когда sps_max_latency_increase_plus1[i] равно 0, соответствующее граничное значение не выражено.
[0736] Значение sps_max_latency_increase_plus1[i] имеет значение от 0 до 232-2, включительно. Когда sps_max_latency_increase_plus1[i] не присутствует для i в диапазоне от 0 до sps_max_sub_layers_minus1-1, включительно, вследствие sps_sub_layer_ordering_info_present_flag, являющегося равным 0, его подразумевают равным sps_max_latency_increase_plus1[sps_max_sub_layers_minus1].
[0737] [Таблица 44]
[0738] Кроме того, JCTVC-L1003 описывает стандарт HEVC. Например, подробность относительно pic_out_flag и no_output_of_prior_pics_flag приводится в Таблице (10) ниже:
[0739] [Таблица 45]
[0740] В Таблице (10) no_output_of_prior_pics_flag влияет на вывод предварительно декодированных изображений в буфере декодированных изображений (DPB) после декодирования IDR или BLA изображения, которое не является первым изображением в битовом потоке, как определено в Приложении C JCTVC-L1003.
[0741] output_flag_present_flag, равный 1, задает, что синтаксический элемент pic_output_flag присутствует в связанных заголовках слайсов. output_flag_present_flag, равный 0, задает, что синтаксический элемент pic_output_flag не присутствует в связанных заголовках слайсов. pic_output_flag влияет на процессы вывода и удаления декодированного изображения, как определено в Приложении C JCTVC-L1003. Когда pic_output_flag не присутствует, его подразумевают равным 1.
[0742] Для общего процесса декодирования (как определено в 8.1 в JCTVC-L1003), PicOutputFlag устанавливают, как изложено ниже:
[0743] - Если текущее изображение является изображением RASL, и NoRaslOutputFlag для связанного IRAP изображения равен 1, PicOutputFlag может быть установлен равным 0.
[0744] - Иначе, PicOutputFlag может быть установлен равным pic_output_flag.
Кроме того, в ходе общего процесса декодирования для формирования недоступных (для использования) опорных изображений (как определено в разделе 8.3.3.1 в JCTVC-L1003), значение PicOutputFlag для сформированного изображения может быть установлено равным 0 при некоторых условиях.
[0746] Когда текущее изображение является изображением IRAP, применяется следующее:
[0747] - Если текущее изображение является изображением IDR, изображением BLA, первое изображение в битовом потоке по порядку декодирования или первое изображение, которое следует за концом последовательности, блок NAL по порядку декодирования, переменная NoRaslOutputFlag может быть установлена равной 1.
[0748] - Иначе, если некоторое внешнее средство, не определенное в JCTVC-L1003, является доступным для установки переменной HandleCraAsBlaFlag в значение для текущего изображения, переменная HandleCraAsBlaFlag может быть установлена равной значению, предоставляемым внешним средством, и переменная NoRaslOutputFlag может быть установлена равной HandleCraAsBlaFlag.
[0749] - Иначе, переменная HandleCraAsBlaFlag может быть установлена равной 0, и переменная NoRaslOutputFlag может быть установлена равной 0.
[0750] Как описывают выше, блок доступа (AU) относится к набору блоков уровня сетевой абстракции (NAL), которые связаны друг с другом согласно заданному правилу классификации, которые являются последовательными по порядку декодирования, и которые включают в себя блоки NAL уровня кодирования видео (VCL) всех кодированных изображений, связываемых с одинаковым временем вывода и их связанными блоками NAL не-VCL. Базовый уровень является уровнем, в котором все блоки NAL VCL имеют nuh_layer_id, равный 0. Кодированное изображение является кодированным представлением изображения, которое включает в себя блоки NAL VCL с конкретным значением nuh_layer_id, и которое включает в себя все древовидные блоки кодирования изображения. В некоторых случаях, кодированное изображение может называться компонентом уровня. Дополнительные подробности об этапах, являющимися на основе изображения или на основе блока доступа (AU), даются относительно фиг.69 и 70 ниже.
[0751] В некоторых конфигурациях ограничения соответствия битового потока для pic_output_flag и/или no_output_of_prior_pics_flag могут использоваться для кодированных изображений в блоке доступа (AU). Кроме того, три новых флага вывода блока доступа, флаг вывода AU (например, AuOutputFlag), флаг вывода AU без RASL (например, AuNoRaslOutputFlag) и флаг вывода AU без предшествующих изображений (например, AuNoOutputOfPriorPicsFlag), могут быть получены для AU на основании значения различных синтаксических элементов и типов блоков NAL для кодированных изображений в AU. В некоторых конфигурациях вывод и удаление изображений могут основываться на этих трех флагах (например, AuOutputFlag, AuNoRaslOutputFlag и AuNoOutputOfPriorPicsFlag) для SHVC и многовидового HEVC.
[0752] Например, ограничениям соответствия битового потока для расширений HEVC можно следовать, как описано в системах и способах здесь. В частности ограничения соответствия битового потока могут применяться к битовому потоку SHVC. Кроме того, ограничения соответствия битового потока могут применяться для битового потока по MV-HEVC.
[0753] В одной конфигурации, при присутствии, может требоваться, чтобы значение синтаксических элементов заголовка сегмента слайса pic_output_flag было одинаковым во всех заголовках сегмента слайса для кодированных изображений в блоке доступа (AU). В другой конфигурации значение для синтаксических элементов заголовка сегмента слайса pic_output_flag, при присутствии, может быть одинаковым во всех заголовках сегмента слайса кодированных изображений в блоке доступа (AU), когда кодированные изображения имеют одинаковый тип блока NAL.
[0754] В одной конфигурации, при присутствии, значение синтаксических элементов заголовка сегмента слайса pic_output_flag для сегментов слайса с nuh_layer_id, равным значению nuh_layer_id для целевого уровня, может быть одинаковым во всех заголовках сегмента слайса таких кодированных изображений в блоке доступа (AU). В другой конфигурации, при присутствии, значение для синтаксических элементов заголовка сегмента слайса pic_output_flag для сегментов слайса с nuh_layer_id, не равным значению nuh_layer_id целевого уровня, может быть 0 во всех заголовках сегмента слайса таких кодированных изображений в блоке доступа (AU).
[0755] В одной конфигурации целевой уровень может быть уровнем, который принадлежит набору уровней или целевому набору уровней или DpbOutputTime[n], как определено в JCTVC-L1003, JCTVC-M1008 или JCT3V-D1004. В другой конфигурации целевой уровень может быть уровнем, который предназначен, чтобы подлежать декодированию. В еще одной конфигурации целевой уровень может быть уровнем, который предназначен, чтобы подлежать декодированию и выводу (отображению или иной посылке для вывода).
[0756] В некоторых конфигурациях, при присутствии, значение синтаксических элементов заголовка сегмента слайса no_output_of_prior_pics_flag может быть одинаковым во всех заголовках сегмента слайса кодированных изображений в блоке доступа (AU). В других конфигурациях, при присутствии, значение синтаксических элементов заголовка сегмента слайса no_output_of_prior_pics_flag может быть одинаковым во всех заголовках сегмента слайса кодированных изображений в блоке доступа (AU), когда кодированные изображения имеют одинаковый тип блока NAL. В одной конфигурации, при присутствии, значение синтаксических элементов заголовка сегмента слайса no_output_of_prior_pics_flag для сегментов слайса с nuh_layer_id, равным значению nuh_layer_id целевого уровня, может быть одинаковым во всех заголовках сегмента слайса таких кодированных изображений в блоке доступа (AU).
[0757] В некоторой конфигурации синтаксические элементы pic_output_flag и/или no_output_of_prior_pics_flag могут не сигнализироваться, когда nuh_layer_id>0. В этом случае, значения для уровней с nuh_layer_id>0 могут подразумеваться равными их сигнализированным значениям для nuh_layer_id, равного 0.
[0758] В некоторых конфигурациях могут использоваться дополнительные флаги, такие как AuOutputFlag и AuNoRaslOutputFlag. Флаги AuOutputFlag и AuNoRaslOutputFlag могут быть получены в соответствии с рядом подходов. В одном подходе или конфигурации, два флага, AuOutputFlag и AuNoRaslOutputFlag, можно получать и использовать для работы DPB. AuOutputFlag может быть установлен равным 1, если PicOutputFlag является равным 1 для всех изображений в AU. Иначе AuOutputFlag может быть установлен равным 0.
[0759] В другом подходе AuOutputFlag может быть установлен равным 1, если PicOutputFlag является равным 1, по меньшей мере, для одного изображения в AU. Иначе AuOutputFlag может быть установлен равным 0. Таким образом, в этом случае, AuOutputFlag может быть установлен равным 0, если PicOutputFlag является равным 0 для всех изображений в AU.
[0760] В еще одном подходе AuOutputFlag может быть установлен равным 1, если PicOutputFlag равен 1 для изображений, принадлежащих всем целевым выводимым уровням в AU. Иначе AuOutputFlag может быть установлен равным 0.
[0761] Во все еще одном подходе AuOutputFlag может быть установлен равным 1, если PicOutputFlag равен 1 для изображения, принадлежащего, по меньшей мере, одному целевому уровню вывода в AU. Иначе AuOutputFlag может быть установлен равным 0.
[0762] В одном подходе AuNoRaslOutputFlag может быть установлен равным 1, если NoRaslOutputFlag равен 1 для всех изображений в AU. Иначе AuNoRaslOutputFlag может быть установлен равным 0.
[0763] В другом подходе AuNoRaslOutputFlag может быть установлен равным 1, если No RaslOutputFlag равен 1, по меньшей мере, для одного изображения в AU. Иначе AuNoRaslOutputFlag может быть установлен равным 0. Таким образом, в этом случае AuNoRaslOutputFlag может быть установлен равным 0, если NoRaslOutputFlag равен 0 для всех изображений в AU.
[0764] В еще одном подходе AuNoRaslOutputFlag может быть установлен равным 1, если NoRaslOutputFlag равен 1 для изображений, принадлежащих всем целевым выводимым уровням в AU. Иначе AuNoRaslOutputFlag может быть установлен равным 0.
[0765] Во все еще одном подходе AuNoRaslOutputFlag может быть установлен равным 1, если NoRaslOutputFlag равен 1 для изображения, принадлежащего, по меньшей мере, одному целевому уровню вывода в AU. Иначе AuNoRaslOutputFlag может быть установлен равным 0.
[0766] В некоторых из вышеуказанных подходов и конфигураций, работа DPB может использовать AuOutputFlag вместо PicOutputFlag. Кроме того, работа DPB может использовать AuNoRaslOutputFlag вместо NoRaslOutputFlag.
[0767] Примеры, показывающие использование флагов вывода AU, таких как AuOutputFlag, и AuNoRaslOutputFlag, согласно настоящим системам и способам, предоставлены ниже в Перечне (1A) и Перечне (2A) ниже. Кроме того, как описано ниже в Перечне (1), Перечне (1A), Перечне (2) и Перечне (2A), флаг вывода AU AuNoOutputOfPriorPicsFlag может получать и использовать для работы DPB.
[0768] Настоящие системы и способы могут быть реализованы путем изменений к документам стандартов. Перечень (1) ниже обеспечивает разделы JCTVC-L1003, которые предполагается изменить, чтобы обеспечить настоящие системы и способы.
Перечень 1
[0769] C.3 Работа буфера декодированных изображений (DPB)
C.3.1 Общие сведения
Описания в этом подпункте применяются независимо к каждому набору выбранных параметров DPB, как определено в подпункте C.1. DPB работает отдельно или независимо для каждого уровня. Таким образом, последующие этапы имеют место отдельно для каждого декодированного изображения с конкретным значением nuh_layer_id.
Буфер декодированных изображений содержит буферы хранения изображения. Каждый уровень состоит из своего собственного набора буферов хранения изображений. Таким образом, буферы хранения изображения для каждого уровня связаны со значением nuh_layer_id уровня. Каждый из буферов хранения изображений может содержать декодированное изображение, которое помечено как "используемое для ссылки" или сохраняется для будущего вывода. Процессы, определенные в подпунктах C.3.2, C.3.3 и C.3.4, последовательно применяют, как указано ниже.
C.3.2 Удаление изображений из DPB
Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно во время удаления в CPB первого блока декодирования текущего изображения, принадлежащего блоку n доступа (содержащему текущее изображение), и продолжается, как изложено ниже:
- Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
- Когда текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, который не является изображением 0, применяют следующие упорядоченные этапы:
1. Получают переменную NoOutputOfPriorPicsFlag для испытываемого декодера, как изложено ниже:
- Если текущее изображение является изображением CRA, NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).
- Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученные из активного SPS, соответствующего значению nuh_layer_id текущего изображения, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения, со значением nuh_layer_id, равным значению nuh_layer_id текущего изображения, NoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера, независимо от значения no_output_of_prior_pics_flag.
Примечание - Хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной при этих условиях, испытываемому декодеру допускается устанавливать NoOutputOfPriorPicsFlag в 1 в этом случае.
- Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_ofjprior_pics_flag.
2. Значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, так что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения, соответствующие значению nuh_layer_id текущего изображения в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для nuh_layer_id значения текущего изображения устанавливают равной 0.
В одном исполнении значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, так что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения, соответствующие всем значениям nuh_layer_id в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для всех значений nuh_layer_id устанавливают равной 0.
В одном исполнении значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, так что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения PSB [currLayerId] с currLayerId, равным значению nuh_layer_id текущего изображения в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB DPBFullness[currLayerId] для значения nuh_layer_id currLayerId текущего изображения устанавливают равной 0.
В одном исполнении, значение NoOutputOfPriorPicsFlag полученное для испытываемого декодера, применяют для HRD, так что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения PSB [nuh_layer_id] для всех значений nuh_layer_id в DPB очищают без вывода изображений, которые они содержат, и заполненность DPB DPBFullness [nuh_layer_id] для всех значений nuh_layer_id устанавливают равной 0.
- Когда оба из следующих условий истинны для любых изображений k в буфере хранения изображения, соответствующем значению nuh_layer_id текущего изображения в DPB, все такие изображения k в DPB удаляют из DPB:
- изображение k помечают как "не используемое для ссылки"
- изображение k имеет PicOutputFlag, равный 0 или его время вывода DPB, меньше чем или равно времени удаления CPB первого блока декодирования (обозначенного как блок m декодирования ) текущего изображения n; то есть, DpbOutputTime [k] меньше чем или равно CpbRemovalTime(m)
- Для каждого изображения, которое удаляется из DPB, заполненность DPB уменьшается на единицу.
- В одном исполнении для каждого изображения k со значением nuh_layer_id nuhLayerIdk, который удален из DPB, заполненность DPB DPBfuliness[nuhLayerIdk] уменьшается на единицу.
C.3.3 Вывод изображения
Процессы, определенные в этом подпункте, происходят мгновенно во время удаления в CPB блока n доступа, AuCpbRemovalTime [n].
Когда изображение n имеет PicOutputFlag, равный 1, его время вывода DPB, DpbOutputTime[n], получают, как изложено ниже, где переменная firstPicInBufferingPeriodFlag равна 1, если блок n доступа является первым блоком доступа периода буферизации и 0 в противном случае:
if(!SubPicHrdFlag) {
DpbOutputTime[n]=AuCpbRemovalTime[n]+ClockTick * picDpbOutputDelay (C-16)
if (firstPicInBufferingPeriodFlag)
DpbOutputTime[n] -= ClockTick * DpbDelayOffset
} else
DpbOutputTime[n]=AuCpbRemovalTime[n]+ClockSubTick * picSptDpbOutputDuDelay
где picDpbOutputDelay - значение pic_dpb_output_delay в сообщении SEI о синхронизации изображения, связанное с блоком n доступа, и picSptDpbOutputDuDelay - значение pic_spt_dpb_output_du_delay, при присутствии, в сообщениях SEI информации о блоке декодирования, связанных с блоком n доступа, или значение pic_dpb_output_du_delay в сообщении SEI о синхронизации изображения, связанном с блоком n доступа, когда нет сообщения SEI информации о блоке декодирования, связанного с блоком n доступа или нет сообщения SEI информации о блоке декодирования, связанного с блоком n доступа, с присутствующим pic_spt_dpb_output_du_delay.
Примечание - Когда синтаксический элемент pic_spt_dpb_output_du_delay не присутствует в каком-либо сообщении SEI информации о блоке декодирования, связанном с блоком n доступа, значение подразумевается равным pic_dpb_output_du_delay из сообщения SEI о синхронизации изображения, связанного с блоком n доступа.
Вывод текущего изображения, если его nuh_layer_id принадлежит уровню в TargetDecLayerIdList, задается, как изложено ниже:
- Если PicOutputFlag равен 1, и DpbOutputTime[n] равно AuCpbRemovalTime[n], текущее изображение является выводимым.
- Иначе, если PicOutputFlag равен 0, текущее изображение не выводится, а будет сохраняться в буфере хранения изображения, соответствующем значению nuh_layer_id текущего изображения в DPB, как определено в подпункте C.3.4.
В одном варианте осуществления: Иначе, если PicOutputFlag равен 0, текущее изображение не выводится, но будет сохраняться в буфере хранения изображения PSB[currLayerId], соответствующем значению nuh_layer_id currLayerId текущего изображения в DPB, как определено в подпункте C.3.4.
- Иначе (PicOutputFlag равен 1 и DpbOutputTime[n] больше чем AuCpbRemovalTime[n], текущее изображение является выводимым впоследствии и будет сохраняться в буфере хранения изображения, соответствующем значению nuh_layer_id текущего изображения, в DPB (как определено в подпункте C.3.4) и выводится во время DpbOutputTime[n], если не указано, что подлежат выводу согласно декодированию или логическому выводу no_output_of_prior_pics_flag, равного 1, во время, которое предшествует DpbOutputTime[n].
В еще одном исполнении вышеуказанные этапы определены для:
Вывода текущего изображения, если его nuh_layer_id принадлежит уровню, который принадлежит набору уровней вывода, соответствующему (текущей) рабочей точке.
В еще одном исполнении вышеуказанные этапы определены для:
Вывода текущего изображения (без проверки, принадлежит ли оно TargetDecLayerIdList или набору уровней вывода для текущей рабочей точки).
Если выводимое, изображение обрезают, используя окно соответствия условию обрезки, заданное в активном SPS для изображения.
Когда изображение n является изображением, которое выводится и не является последним изображением в битовом потоке, которое выводится, значение переменной DpbOutputInterval [n] получают, как изложено ниже:
DpbOutputInterval[n]=DpbOutputTime[nextPicInOutputOrder] - DpbOutputTime[n] (C-17)
где nextPicInOutputOrder - изображение, которое следует за изображением n по порядку вывода и имеет PicOutputFlag, равный 1.
C.3.4 Пометка и сохранение текущего декодированного изображения
Процесс, определенный в этом подпункте, происходит немедленно во время удаления в CPB блока n доступа, CpbRemovalTime[n].
Текущее декодированное изображение сохраняется в DPB в пустом буфере хранения изображения, соответствующем значению nuh_layer_id текущего изображения, заполненность DPB для значения nuh_layer_id текущего изображения увеличивается на единицу, и текущее изображение помечают как "используемое для краткосрочной ссылки".
В одном варианте осуществления:
Текущее декодированное изображение с nuh_layer_id, равным currLayerId, сохраняется в DPB в пустом буфере хранения изображения PSB[currLayerId] с currLayerId, равным значению nuh_layer_id текущего изображения в DPB, заполненность DPB для значения nuh_layer_id текущего изображения DPBFullness[currLayerId] увеличивается на единицу, и текущее изображение помечают как "используемое для краткосрочной ссылки".
C.4 Соответствие битового потока
Применяют технические условия из подпункта C.4.
C.5 Соответствие декодера
F.8.1.1
C.5.1 Общие сведения
Применяют технические условия из подпункта C.5.1.
Перечень (1)
[0770] Как используется в Перечне (1) выше, PSB относится к буферу хранения изображений. DPBFullness относится к переменной, используемой для описания величины заполнения буфера 116 декодированных изображений (DPB).
[0771] Перечень (1A) ниже обеспечивает альтернативный подход к разделу C.3.2 Перечня (1) согласно размещают настоящих систем и способов. В некоторых конфигурациях Перечень (1A) может представлять только изменения раздела C.3.2 в JCTVC-L1003. Перечень (1A) может использовать флаги AuNoOutputOfPriorPicsFlag и AuNoRaslOutputFlag, определенные выше.
Перечень 1A
[0772] C.3.2 Удаление изображений из DPB
Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно во время удаления в CPB первого блока декодирования текущего изображения, принадлежащего блоку n доступа (содержащему текущее изображение), и продолжается как изложено ниже:
- Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
- Когда текущее изображение является изображением IRAP с AuNoRaslOutputFlag, равным 1, который не является 0-ым изображением, применяют следующие упорядоченные этапы:
- В другой конфигурации, когда текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, который не является изображением 0, применяют следующие упорядоченные этапы:
1. Получают переменную AuNoOutputOfPriorPicsFlag для испытываемого декодера, как изложено ниже:
- Если текущее изображение является изображением CRA, AuNoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag для текущего изображения или других изображений в AU).
- Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, или sps_max_dec_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения, AuNoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag.
Примечание - Хотя установка AuNoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной при этих условиях, испытываемому декодеру позволяется устанавливать AuNoOutputOfPriorPicsFlag в 1 в этом случае.
- Иначе, AuNoOutputOfPriorPicsFlag устанавливают на основании значения no_output_pf_prior_pics_flag для текущего изображения и других изображений в AU, как изложено ниже:
- AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для, по меньшей мере, одного изображения в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0. Таким образом, в этом случае AuNoOutputOfPriorPicsFlag устанавливают равным 0, если no_output_of_prior_pics_flag равен 0 для всех изображений в AU.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_ofjprior_pics_Flag равен 1 для текущего изображения. Иначе AuNoOutputOfPriorPicsFlag оставляют неизменным.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для всех изображений в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для всех изображений, принадлежащих целевым уровням вывода в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для, по меньшей мере, одного изображения, принадлежащего целевым уровням вывода в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
2. Значение AuNoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, так что когда значение AuNoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения, соответствующие всем значениям nuh_layer_id в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для всех значений nuh_layer_id устанавливают равной 0.
В другом исполнении значение AuNoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, так что когда значение AuNoOutputOfPriorPicsFlag равно 1, все буферы хранения изображения, соответствующие значению nuh_layer_id текущего изображения в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для nuh_layer_id значения текущего изображения устанавливают равной 0.
Перечень (1A)
[0773] Перечень (2) ниже обеспечивает разделы JCTVC-L1008, которые предполагается изменить, чтобы обеспечить настоящие системы и способы.
Перечень 2
[0774] F.13 Гипотетический опорный декодер
F.13.1 Общий
Применяют технические условия подпункта C. 1.
F.13.2 Работа буфера кодированных изображений (CPB)
Применяют технические условия подпункта C.2.
F.13.3 Работа буфера декодированных изображений (DPB)
Технические условия подпункта C.3 применяют отдельно для каждого набора декодированных изображений с конкретным значением nuh_layer_id.
PicOutputFlag для изображений, которые не включены в целевой уровень вывода, устанавливают равным 0.
Декодированные изображения с одинаковым временем вывода DPB и с PicOutputFlag, равным 1, выводят по порядку возрастания значений nuh_layer_id этих декодированных изображений.
F.13.5 Соответствие декодера
F.13.5.1 Общие сведения
Применяют технические условия по подпункту C.5. 1.
F.13.5.2 Работа DPB очередности вывода
F.13.5.2.1 Общие сведения
Буфер декодированных изображений содержит буферы хранения изображения. Каждый уровень состоит из своего собственного набора буферов хранения изображений. Таким образом буферы хранения изображения каждого уровня связаны со значением nuh_layer_id уровня. Число буферов хранения изображений для nuh_layer_id, равного 0, получают из активного SPS уровня с nuh_layer_id, равным 0. Число буферов хранения изображений для каждого ненулевого значения nuh_layer_id получают из SPS активного уровня для этого ненулевого значения nuh_layer_id. Каждый из буферов хранения изображений содержит декодированное изображение, которое помечено как "используемое для ссылки" или сохранено для будущего вывода. Инициируют процесс для вывода и удаления изображений из DPB, как определено в подпункте F.13.5.2.2, за которым следует вызов процесса для декодирования, пометки, дополнительного сбрасывания и хранения изображения, как определено в подпункте F.13.5.2.3. Процесс "сбрасывания" определен в подпункте F.13.5.2.4 и инициируется, как определено в подпунктах F.13.5.2.2 и F.13.5.2.3.
F.13.5.2.2 Вывод и удаление изображений из DPB
Вывод и удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно, когда первый блок декодирования текущего изображения, принадлежащего блоку доступа, содержащему текущее изображение, удаляется из CPB и продолжается, как изложено ниже. Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
- Если текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, который не является изображением 0, применяют следующие упорядоченные этапы:
1. Получают переменную NoOutputOfPriorPicsFlag для испытываемого декодера, как изложено ниже:
- Если текущее изображение является изображением CRA, NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).
- Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], полученные из активного SPS, соответствующего значению nuh_layer_id идентификатора текущего изображения, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения со значением nuh_layer_id, равным значению nuh_layer_id текущего изображения, NoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag.
Примечание - Хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной при этих условиях, испытываемому декодеру позволяется устанавливать NoOutputOfPriorPicsFlag в 1 в этом случае.
- Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.
2. Значение NoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, как изложено ниже:
- Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения, соответствующие значению nuh_layer_id текущего изображения в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для значения nuh_layer_id текущего изображения устанавливают равной 0.
В одном исполнении, если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения, соответствующие всем значениям nuh_layer_id в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB для всех значений nuh_layer_id устанавливают равной 0.
В одном исполнении, если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения PSB[currLayerId], соответствующие значению nuh_layer_id currLayerId текущего изображения в DPB, очищают без вывода изображений, которые они содержат, и заполненность DPB, DPBFullness[currLayerId] устанавливают равной 0.
В одном исполнении, если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения PSB[nuh_layer_id] для всех значений nuh_layer_id в DPB очищают без вывода изображений, которые они содержат, и заполненность DPB DPBFullness [nuh_layer_id] для всех значений nuh_layer_id устанавливают равной 0.
- Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB, соответствующему значению nuh_layer_id текущего изображения, очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB для nuh_layer_id значения текущего изображения устанавливают равной 0.
В другом исполнении, когда NoOutputOfPriorPicsFlag равен 0, все буферы хранения изображения, соответствующие всем значениям nuh_layer_id, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения, соответствующие всем значениям nuh_layer_id в DPB, очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB для всех значений nuh_layer_id устанавливают равной 0.
- В другом исполнении Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения PSB[currLayerId] в DPB, соответствующем значению nuh_layer_id currLayerId текущего изображения, очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB DPBFullness[currLayerId] для значения nuh_layer_id текущего изображения устанавливают равной 0.
- В другом исполнении, когда NoOutputOfPriorPicsFlag равен 0, все буферы хранения изображения PSB[nuh_layer_id] для всех значений nuh_layer_id в DPB, содержащем изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения PSB[nuh_layer_id], соответствующие всем значениям nuh_layer_id в DPB, очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB DPBFullness [nuh_layer_id] для всех значений nuh_layer_id устанавливают равной 0.
- Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения, соответствующие значению nuh_layer_id текущего изображения, содержащие изображение, которые(ое) помечены как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищают, заполненность DPB, соответствующего значению nuh_layer_id текущего декодированного изображения, уменьшают на единицу. Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения и когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, при этом дополнительно уменьшая заполненность DPB на единицу для каждого дополнительного буфера хранения изображения, соответствующего значению nuh_layer_id текущего декодированного изображения, который очищен, пока ни одно из следующих условий не истина:
- Число изображений с nuh_layer_id, равным currLayerId в DPB, которые помечены как "требуемое для вывода", больше чем sps_max_num_reorderjpics[HighestTid] из активного SPS (когда currLayerId равен 0), или из SPS активного уровня для значения currLayerId.
- sps_max_latency_increase_plus1[HighestTid] активного SPS (когда currLayerId равен 0) или SPS активного уровня для значения currLayerId, не являющегося равным 0, и имеется, по меньшей мере, одно изображение с nuh_layer_id, равным currLayerId в DPB, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount[currLayerId] больше чем или равна SpsMaxLatencyPictures[HighestTid], полученного из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId.
- Число изображений с nuh_layer_id, равным currLayerId в DPB, больше чем или равно sps_max_dec_pic_buffering_minus1[HighestTid]+1 из активного SPS (когда currLayerId равен 0), или из SPS активного уровня для значения currLayerId.
В другом исполнении: Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения, соответствующие всем значениям nuh_layer_id, содержащим изображение, которые помечены как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищен, заполненность DPB, соответствующее значению nuh_layer_id изображения, уменьшают на единицу.
В другом исполнении: Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения PSB[currLayerId] в DPB, соответствующем значению nuh_layer_id currLayerId текущего изображения, содержащего изображение, которые помечены как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищен, заполненность DPB DPBfullness[currLayerId], соответствующего значению nuh_layer_id текущего декодированного изображения, уменьшают на единицу.
В другом исполнении: Иначе (текущее изображение не является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0), все буферы хранения изображения PSB[nuh_layer_id] для всех значений nuh_layer_id в DPB, содержащем изображение, которые помечены как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода). Для каждого буфера хранения изображения, который очищают, заполненность DPB DPBFullness[nuh_layer_id], соответствующую значению nuh_layer_id очищенного изображения, уменьшают на единицу.
F.13.5.2.3 Декодирование, пометка, дополнительное сбрасывание и хранение изображения
Процессы, определенные в этом подпункте, происходят немедленно, когда последний блок декодирования блока n доступа, содержащего текущее изображение, удаляют из CPB.
Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения. Для каждого изображения в DPB, которое помечено как «требуемое для вывода» и которое имеет значение nuh_layer_id, равное currLayerId, связанную переменную PicLatencyCount[currLayerId] устанавливают равной PicLatencyCount[currLayerId]+1.
Текущее изображение считается декодированным после того, как декодирован последний блок декодирования в изображении. Текущее декодированное изображение сохраняют в пустом буфере хранения изображения, соответствующем currLayerId (значению nuh_layer_id текущего изображения) в DPB, и применяют следующее:
- Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount[currLayerId] устанавливают равной 0.
- Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода."
В одном исполнении текущее декодированное изображение сохраняют в пустом буфере хранения изображения, соответствующем currLayerId (значению nuh_layer_id текущего изображения) в DPB, и применяют следующее:
- Если PicOutputFlag текущего декодированного изображения равен 1, его помечают как "требуемое для вывода", и связанную с ним переменную PicLatencyCount[currLayerId] устанавливают равной 0. Все буферы хранения изображения, содержащие изображение, которое имеет такое же значение счетчика очередности изображения (PicOrderCntVal), как текущее декодированное изображение, помечают как "требуемые для вывода."
- Иначе (PicOutputFlag текущего декодированного изображения равен 0), его помечают как "не требуемое для вывода".
В одном исполнении текущее декодированное изображение сохраняется в пустом буфере хранения изображения PSB[currLayerId], соответствующем currLayerId (значение nuh_layer_id текущего изображения) в DPB, и заполненность DPB для значения nuh_layer_id текущего изображения, DPBFullness[currLayerId] увеличивают на единицу и применяют следующее
Текущее декодированное изображение помечают как "используемое для краткосрочной ссылки."
Когда одно или несколько из следующих условий истинны, процесс "сбрасывания", определенный в подпункте F.13.5.2.4, вызывают многократно, пока ни одно из следующих условий не истина.
- Число изображений с nuh_layer_id, равным currLayerId в DPB, которые помечены как "требуемые для вывода", больше чем sps_max_num_reorder_pics[HighestTid] из активного SPS (когда currLayerId равен 0), или из SPS активного уровня для значения currLayerId.
- sps_max_latency_increase_plus1[HighestTid] не равен 0 и имеется, по меньшей мере, одно изображение в DPB с nuh_layer_id, равным currLayerId, которое помечено как "требуемое для вывода", для которого связанная переменная PicLatencyCount[currLayerId], которая больше чем или равна SpsMaxLatencyPictures[HighestTid], полученного из активного SPS (когда currLayerId равен 0), или из SPS активного уровня для значения currLayerId.
F.13.5.2.4 Процесс "сбрасывания"
Процесс "сбрасывания" состоит из следующих упорядоченных этапов:
1. Изображения, которые являются первыми для вывода, выбирают как таковые с наименьшим значением PicOrderCntVal из всех изображений в DPB, помеченных как "требуемое для вывода".
2. Эти изображения обрезают, используя окно соответствия условию обрезки, заданное в активном SPS для изображения с nuh_layer_id, равным 0, или в SPS активного уровня для значения nuh_layer_id, равного таковому для изображения, обрезанные изображения выводят по порядку возрастания nuh_layer_id, и изображения помечают как "не требуемые для вывода"
3. Каждый буфер хранения изображения, который содержит изображение, помеченное как "не используемое для ссылки", и который включал одно из изображений, которое было обрезано и выведено, очищают.
Перечень (2)
[0775] Перечень (2A) ниже обеспечивает альтернативный подход к разделу F.13.5.2.2 Перечня (2) согласно обеспечению настоящих систем и способов. В некоторых конфигурациях Перечень (2A) может только представлять изменения в разделе F.13.5.2.2 в JCTVC-L1008. Перечень (2A) может использовать флаги AuNoOutputOfPriorPicsFlag и AuNoRaslOutputFlag, определенные выше.
Перечень 2A
[0776] F.13.5.2.2 Вывод и удаление изображений из DPB
Вывод и удаление изображений из DPB до декодирования текущего изображения (но после синтаксического разбора заголовка слайса для первого слайса текущего изображения) происходит немедленно, когда первый блок декодирования блока доступа, содержащего текущее изображение, удаляется из CPB, и продолжается, как изложено ниже:
Вызывают процесс декодирования для RPS, как определено в подпункте 8.3.2.
- Если текущее изображение является изображением IRAP с AuNoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, которое не является изображением 0, применяют следующие упорядоченные этапы:
- В другой конфигурации, если текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, которое не является изображением 0, применяют следующие упорядоченные этапы:
1. Переменную AuNoOutputOfPriorPicsFlag получают для испытываемого декодера, как изложено ниже.
- Если текущее изображение имеет nuh_layer_id, равный 0, AuNoOutputOfPriorPicsFlag инициализируют в 0. Затем:
- Если текущее изображение является изображением CRA, AuNoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag для текущего изображения или других изображений в AU).
- Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering_minus1 [HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_decjpic_buffering_minus1[HighestTid], соответственно, полученного из SPS, активного для предшествующего изображения, AuNoOutputOfPriorPicsFlag может (но не должен) устанавливаться в 1 посредством испытываемого декодера независимо от значения no_output_of_prior_pics_flag.
Примечание - Хотя установка AuNoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag является предпочтительной при этих условиях, испытываемому декодеру позволяется устанавливать AuNoOutputOfPriorPicsFlag в 1 в этом случае.
- Иначе, AuNoOutputOfPriorPicsFlag устанавливают на основании значения no_output_of_prior_pics_flag для текущего изображения и других изображений в AU, как изложено ниже:
- AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1, по меньшей мере, для одного изображения в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0. Таким образом в этом случае AuNoOutputOfPriorPicsFlag устанавливают равным 0, если no_output_of_prior_pics_flag равен 0 для всех изображений в AU.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для текущего изображения. Иначе AuNoOutputOfPriorPicsFlag оставляют неизменным.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для всех изображений в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1 для всех изображений, принадлежащих целевым уровням вывода, в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
- В другом исполнении AuNoOutputOfPriorPicsFlag устанавливают равным 1, если no_output_of_prior_pics_flag равен 1, по меньшей мере, для одного изображения, принадлежащего целевому уровню вывода, в AU. Иначе AuNoOutputOfPriorPicsFlag устанавливают равным 0.
2. Значение AuNoOutputOfPriorPicsFlag, полученное для испытываемого декодера, применяют для HRD, как изложено ниже:
- Если AuNoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения в DPB, соответствующие всем значениям nuh_layer_id, очищают без вывода изображений, которые они включают, и заполненность DPB устанавливают равной 0 для всех значений nuh_layer_id.
- В другом исполнении, если AuNoOutputOfPriorPicsFlag равен 1, все буферы хранения изображения в DPB, соответствующие всем значениям nuh_layer_id текущего изображения, очищают без вывода изображений, которые они включают, и заполненность DPB устанавливают равной 0 для значения nuh_layer_id текущего изображения. Иначе (AuNoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, соответствующие всем значениям nuh_layer_id, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB для всех значений nuh_layer_id устанавливают равной 0. В другом исполнении:
Иначе (AuNoOutputOfPriorPicsFlag равен 0), все буферы хранения изображения, соответствующие значению nuh_layer_id текущего изображения, содержащие изображение, которое помечено как "не требуемое для вывода" и "не используемое для ссылки", очищают (без вывода), и все непустые буферы хранения изображения в DPB очищают путем многократного инициирования процесса "сбрасывания", определенного в подпункте F.13.5.2.4, и заполненность DPB для значения nuh_layer_id текущего изображения устанавливают равной 0.
Перечень (2A)
[0777] В одной конфигурации, для предложенного текста в Перечне (1), Перечне (1A), Перечне (2) и Перечне (2A) выше, все вхождения "текущего изображения" могут быть заменены "текущим декодированным изображением ".
[0778] Перечень (3) ниже обеспечивает дополнительный раздел относительно декодирования, чтобы обеспечить настоящие системы и способы. Перечень (3) обеспечивает разделы JCTVC-L1003 (то есть, версию 34 спецификации HEVC), которые предполагают изменение, чтобы обеспечить настоящие системы и способы.
Перечень 3
[0779] 8.3.2. Процесс декодирования для набора опорных изображений
Когда текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, все опорные изображения в текущий момент в DPB соответствующие значению nuh_layer_id текущего изображения (если таковое имеется) помечают как "не используемое для ссылки."
В другом исполнении: Когда текущее изображение является изображением IRAP с NoRaslOutputFlag, равным 1, все опорные изображения в текущий момент в DPB соответствующие всем значениям nuh_layer_id (если имеются) помечают как "неиспользуемые для ссылки."
Перечень (3)
[0780] Многие различные варианты могут использоваться для задания гибридных операций буфера 116 декодированных изображений (DPB) с различными этапами, являющимися на основе изображения или на основе блока доступа. Таблицы (11) - (15) ниже перечисляют множественные разновидности этапов и соответствующие установочные параметры на основе изображения/на основе блока доступа (AU).
[0781] [Таблица 46]
на основе изображения для пометки ссылки
[0782] [Таблица 47]
на основе AU для пометки ссылки
[0783] [Таблица 48]
на основе AU для пометки ссылки
[0784] [Таблица 49]
На основе изображения для пометки ссылки
[0785] [Таблица 50]
на основе изображения для пометки ссылки
[0786] Фигура фиг.66 - блок-схема, иллюстрирующая одну конфигурацию декодера 2404. Декодер 2404 может быть включен в электронное устройство 2402. Например, декодер 2404 может быть декодером высокоэффективного кодирования видеоизображений (HEVC). Декодер 2404 и/или один или большее число из элементов, иллюстрируемых включенными в декодер 2404, можно реализовывать в аппаратных средствах, программном обеспечении или их комбинации. Декодер 2404 может принимать битовый поток 2414 (например, одно или несколько кодированных изображений, включенных в битовый поток 2414) для декодирования. В некоторых конфигурациях принимаемый битовый поток 2414 может включать в себя принимаемую служебную информацию, такую как информация принятого заголовка слайса, принятый PPS, принятое описание буфера, и т.д. Кодированные изображения, включенные в битовый поток 2414, могут включать в себя один или большее число кодированных опорных изображений и/или одно или несколько других кодированных изображений.
[0787] Принятые символы (в одном или нескольких кодированных изображениях, включенных в битовый поток 2414), могут быть энтропийно декодированы посредством модуля 454 энтропийного декодирования, тем самым создавая сигнал 456 данных движения и квантованные, масштабированные и/или преобразованные коэффициенты 458.
[0788] Сигнал 456 данных движения может быть объединен с частью сигнала 484 опорного кадра из памяти 464 кадров в модуле компенсации движения 460, который может выдавать сигнал 468 с межкадровым предсказанием. Квантованные, демасштабированные и/или преобразованные коэффициенты 458 могут быть обратно квантованы, масштабированы и обратно преобразованы модулем 462 инверсии (обратного преобразования/масштабирования/квантования), посредством этого создавая декодированный остаточный сигнал 470. Декодированный остаточный сигнал 470 может суммироваться с сигналом 478 предсказания, чтобы создать объединенный сигнал 472. Сигнал 478 предсказания может быть сигналом, выбранным или из сигнала 468 межкадрового предсказания, или из сигнала 476 внутрикадрового предсказания, выдаваемого модулем 474 внутрикадрового предсказания. В некоторых конфигурациях этот выбор сигнала может основываться на битовом потоке 2414 (например, управляться таковым).
[0789] Сигнал 476 внутрикадрового предсказания может быть предсказан исходя из предварительно декодированной информации из объединенного сигнала 472 (в текущем кадре, например). Объединенный сигнал 472 может также фильтроваться деблокирующим фильтром 480. Результирующий отфильтрованный сигнал 482 может быть записан в память 464 кадров. Результирующий отфильтрованный сигнал 482 может включать в себя декодированное изображение.
[0790] Память 464 кадров может включать в себя буфер 2416 декодированных изображений (DPB), как описано здесь. Буфер 2416 декодированных изображений (DPB) может быть способным к гибридным операциям буфера 116 декодированных изображений (DPB). Буфер 2416 декодированных изображений (DPB) может включать в себя одно или большее число декодированных изображений, которые могут сохраняться как краткосрочные или долгосрочные опорные кадры. Память 464 кадров также может включать в себя служебную информацию, соответствующую декодированным изображениям. Например, память 464 кадров может включать в себя заголовки слайсов, информацию набора параметров видео (VPS), информацию набора параметров последовательности (SPS), информацию набора параметров изображения (PPS), параметры цикла, информацию описания буфера и т.д. Одна или более из этих порций информации может сигнализироваться из кодера (например, кодера 2108, модуля 2112 служебной сигнализации).
[0791] Фигура фиг.67A - блок-схема, иллюстрирующая использование и уровня улучшения, и базового уровня для кодирования видео с отдельными буферами 516a-b декодированных изображений (DPB) и отдельными модулями 520a-b гибридной работы буфера декодированных изображений (DPB) для базового уровня и уровня улучшения. Иллюстрируются первое электронное устройство 502a и второе электронное устройство 502b. Первое электронное устройство 502a может включать в себя видеокодер 508, который включает в себя кодер 526 уровня улучшения и кодер 528 базового уровня. Каждый из элементов, включенных в первое электронное устройство 502a (то есть, кодер 526 уровня улучшения и кодер 528 базового уровня), может быть реализован в аппаратных средствах, программном обеспечении или их комбинации. Первое электронное устройство 502a могут получать входное изображение 2506. В некоторых конфигурациях входное изображение 2506 может быть получено записью на первом электронном устройстве 502a с использованием датчика ввода изображения, извлечено из памяти или извлечено из другого электронного устройства 502.
[0792] Кодер 526 уровня улучшения может кодировать входное изображение 2506, чтобы создавать кодированные данные. Например, кодер 526 уровня улучшения может кодировать серию входных изображений 2506 (например, видео). Кодированные данные могут быть включены в кодированный битовый поток 530 видео уровня улучшения. Кодер 526 уровня улучшения может формировать служебную сигнализацию на основе входного изображения 2506.
[0793] Видеодекодер 534 уровня улучшения может включать в себя буфер 516a декодированных изображений (DPB), и модуль 520a гибридной работы буфера декодированных изображений (DPB). Аналогично, декодер 536 базового уровня может включать в себя буфер декодированных изображений (DPB) 516b и модуль 520b гибридной работы буфера декодированных изображений (DPB).
[0794] Кодер 528 базового уровня может также кодировать входное изображение 2506. В одной конфигурации то же входное изображение 2506, используемое кодером 526 уровня улучшения, может также использоваться кодером 528 базового уровня. В другой конфигурации отличное (но сходное) входное изображение, чем входное изображение 2506, используемое кодером 526 уровня улучшения, может использоваться кодером 528 базового уровня. Например, для масштабируемости отношения сигнал/шум (SNR) (также именуемой масштабируемостью качества), то же самое входное изображение 2506 может использоваться и кодером 526 уровня улучшения, и кодером 528 базового уровня. В качестве другого примера, для пространственной масштабируемости, субдискретизированное изображение может использоваться кодером 528 базового уровня. В еще одном примере, для многовидовой масштабируемости, изображение с другим видом может использоваться кодером 528 базового уровня. Кодер 528 базового уровня может создавать кодированные данные, включаемые в кодированный битовый поток 532 видео базового уровня.
[0795] Кодированный битовый поток 530 видео уровня улучшения и кодированный битовый поток 532 видео базового уровня могут каждый включать в себя кодированные данные на основе входного изображения 2506. В одном примере кодированный битовый поток 530 видео уровня улучшения и кодированный битовый поток 532 видео базового уровня могут включать в себя данные кодированного изображения. В некоторых конфигурациях кодированный битовый поток 530 видео уровня улучшения и/или кодированный битовый поток 532 видео базового уровня могут также включать в себя служебные данные, такие как информация набора параметров последовательности (SPS), информация набора параметров изображения (PPS), информация набора параметров видео (VPS), информация заголовка слайса и т.д.
[0796] Кодированный битовый поток 530 видео уровня улучшения может предоставляться на второе электронное устройство 502b. Аналогично, кодированный битовый поток 532 видео базового уровня может предоставляться на второе электронное устройство 502b. Второе электронное устройство 502b может включать в себя видеодекодер 2504. Видеодекодер 2504 может включать в себя декодер 534 уровня улучшения и декодер 536 базового уровня. В одной конфигурации кодированный битовый поток 530 видео базового уровня декодируется декодером 536 базового уровня, тогда как кодированный битовый поток 530 видео уровня улучшения декодируется декодером 534 уровня улучшения.
[0797] В одном примере кодированный битовый поток 530 видео уровня улучшения и кодированный битовый поток 532 видео базового уровня могут передаваться на второе электронное устройство 502b с использованием проводной или беспроводной ссылки. В некоторых случаях, это может делаться по сети, такой как сеть Интернет, Локальная сеть (LAN) или другой тип сети для осуществления связи между устройствами. Следует отметить, что в некоторых конфигурациях, кодеры (то есть, кодер 526 уровня улучшения и кодер 528 базового уровня) и декодер 2504 (например, декодер 536 базового уровня и декодер 534 уровня улучшения) могут быть реализованы на том же электронном устройстве 502 (то есть, первое электронное устройство 502a и второе электронное устройство 502b могут быть частью одного электронного устройства 502). В исполнении, где кодеры и декодеры реализованы на том же электронном устройстве 502, например, кодированный битовый поток 530 видео уровня улучшения и кодированный битовый поток 532 видео базового уровня могут быть делаться доступными для видеодекодера 2504 различными путями. Например, кодированный битовый поток 530 видео уровня улучшения и кодированный битовый поток 532 видео базового уровня могут обеспечиваться по шине на видеодекодер 2504 или сохраняться в памяти для извлечения посредством видеодекодера 2504.
[0798] Видеодекодер 2504 может формировать одно или большее число декодированных изображений на основании кодированного битового потока 530 видео уровня улучшения и кодированном битовом потоке 532 видео базового уровня. Декодированное изображение 2118 (которое может включать в себя декодированное изображение 538 уровня улучшения, и декодированное изображение 540 базового уровня), может быть выведено на экран, воспроизведено, сохранено в памяти и/или передано на другое устройство и т.д.
[0799] В одном примере декодированное изображение 2118 может передаваться на другое устройство или обратно на первое электронное устройство 502a. Декодированное изображение 2118 может также сохраняться или иначе поддерживаться на втором электронном устройстве 502b. В другом примере второе электронное устройство 502b может отображать декодированное изображение 2118. В других конфигурациях декодированное изображение 2118 включает в себя элементы входного изображения 2506 с различными характеристиками на основании кодирования и других операций, выполняемых на битовом потоке 2114. В некоторых конфигурациях декодированное изображение 2118 может быть включено в поток изображений с другим разрешением, форматом, техническим условиями или другим атрибутом из входного изображения 2506.
[0800] Фигура фиг.67B - блок-схема, иллюстрирующая использование совместно-используемого буфера 516c декодированных изображений (DPB) и совместно-используемого модуля 520c гибридной работы буфера декодированных изображений (DPB) для базового уровня и уровня улучшения. Фигура фиг.67B включает в себя такие же компоненты, как таковые по фиг.67A, за исключением того, что видеодекодер 534 уровня улучшения и декодер 536 базового уровня совместно используют и буфер 516c декодированных изображений (DPB), и модуль 520c гибридной работы буфера декодированных изображений (DPB).
[0801] Фигура фиг.68 является временной диаграммой, иллюстрирующей гибридную работу буфера 116 декодированных изображений (DPB). Гибридная работа буфера 116 декодированных изображений (DPB) по фиг.68 показывает этапы для предпочтительного варианта, где удаление, сохранение и пометка ссылок основаны на изображении, и вывод, пометки вывода и дополнительный вывод основаны на блоке доступа (AU). Идеальный буфер 116 декодированных изображений (DPB) и гипотетический опорный декодер (HRD) могут работать таким образом, что различные отдельные показанные этапы (например, удаление 621a-b, вывод 623, сохранение 625a-c, пометка 627a-c, 629 и дополнительный вывод 631) все выполняются мгновенно. Последовательность этих этапов и временное смещения иллюстрируется между отдельными этапами с иллюстративными целями. Для соответствия декодера синхронизации вывода хронирование (относительно времени доставки первого бита) вывода изображения является одинаковым и для гипотетического эталонного декодера (HRD), и для испытываемого декодера (DUT) в пределах фиксированной задержки. По существу, иллюстрируемый временное смещения может происходить для DUT, который вносит фиксированную задержку по сравнению с HRD.
[0802] Иллюстрируются этапы для буфера 116 декодированных изображений (DPB) для первого уровня улучшения (EL1) 2642a, буфера 116 декодированных изображений (DPB) для второго уровня улучшения (EL2) 2642b и буфера 116 декодированных изображений (DPB) для базового уровня (BL) 2644. Иллюстрируется время удаления 2646 буфера кодированных изображений (CPB). После времени удаления 2646 буфера кодированных изображений (CPB), удаление 621a на основе изображения (без вывода) может выполняться буфером 116 декодированных изображений (DPB) для второго уровня улучшения (EL2) 2642b и удаление на основе изображения (без вывода) 621b может выполняться буфером 116 декодированных изображений (DPB) для базового уровня (BL) 2644. После временного смещения, вывод (сбрасывание) 623 изображения на основе блока доступа (AU) может выполняться буфером 116 декодированных изображений (DPB) для базового уровня (BL) 2644, буфером 116 декодированных изображений (DPB) для первого уровня улучшения (EL1) 2642a и буфером 116 декодированных изображений (DPB) для второго уровня улучшения (EL2) 2642b.
[0803] Иллюстрируется процесс 613, связанный с текущим декодированным изображением после другого временного смещения. Этап 625a-c сохранения на основе изображения может выполняться буфером 116 декодированных изображений (DPB) базового уровня (BL) 2644, буфером 116 декодированных изображений (DPB) для первого уровня улучшения (EL1) 2642a и буфером 116 декодированных изображений (DPB) второго уровня улучшения (EL2) 2642b. Этап сохранения может выполняться после того, как декодированы каждый из базового уровня (BL) 2644, первого уровня (EL1) 2642a улучшения и второго уровня (EL2) 2642b улучшения. Этап 625 сохранения может быть дополнительно подразделен. На этапе 625 сохранения декодированное изображение сохраняют в буфере 116 декодированных изображений (DPB) в пустом буфере хранения и заполненность буфера декодированных изображений (DPB) увеличивается на единицу. Кроме того, когда изображение удаляют (без вывода) из буфера 116 декодированных изображений (DPB), заполненность буфера декодированных изображений (DPB) уменьшают на единицу. К тому же, когда изображение удаляют из буфера 116 декодированных изображений (DPB) (или в ходе сбрасывания, или в ходе дополнительного сбрасывания), заполненность буфера декодированных изображений (DPB) уменьшают на единицу.
[0804] Буфер 116 декодированных изображений (DPB) может включать в себя отдельно идентифицируемые и управляемые буферы изображенийдля декодированных изображений с различными характеристиками. Например, буфер 116 декодированных изображений (DPB) может включать в себя отдельно идентифицируемые и управляемые буферы изображений для декодированных изображений с различными разрешениями, различными битовыми глубинами - и/или другой цветовой цветностью.
[0805] Декодированное изображение может вместо этого сохраняться в общем пуле буферов хранения изображений в буфере 116 декодированных изображений (DPB). Например, два дополнительных частных случая могут использоваться, чтобы определять ограничения на размер буфера 116 декодированных изображений (DPB), которые влияют на процесс сбрасывания/удаления, и определения уровня. В ограничении на байт-ориентированный буфер 116 декодированных изображений (DPB) декодированное изображение может сохраняться с учетом размера на основании разрешающей способности и/или битовой глубины. Ограничения на размер буфера 116 декодированных изображений (DPB) могут задаваться в виде граничного значения в байтах, которое рассматривает разрешение и битовую глубину каждого декодированного изображения. В ограничении на буфер 116 декодированных изображений (DPB) на основе блока изображения, декодированное изображение может сохраняться (и считается, что занимает один слот буфера изображений). Ограничения на размер буфера 116 декодированных изображений (DPB) затем могут быть определены в виде некоторого граничного числа слотов изображения без рассмотрения разрешающей способности и глубины цвета каждого декодированного изображения.
[0806] В одной конфигурации заполненность буфера декодированных изображений (DPB) может отслеживаться поуровнево. Например, ограничения на размер буфера 116 декодированных изображений (DPB) могут быть сигнализированы, и сбрасывание может применяться, на один уровень. Там, где каждый уровень включает свои собственные буферы хранения изображения, переменная DPBFullness[nuh_layer_id] может использоваться, чтобы отслеживать заполненность буфера декодированных изображений (DPB) для каждого уровня. Когда изображение удаляют из уровня со значением идентификатора уровня, равным nuh_layer_id, переменная DPBFullness[nuh_layer_id] может быть установлена равной DPBFullness[nuh_layer_id] - 1 (то есть, DPBFullness[nuh_layer_id] может быть уменьшена на единицу). В этом случае, изображение было удалено из буфера хранения изображения PSB[nuh_layer_id].
[0807] Подобным образом, когда текущее декодированное изображение со значением ID уровня, равным nuh_layer_id, сохраняют в буфере 116 декодированных изображений (DPB), переменную DPBFullness[nuh_layer_id] устанавливают равной DPBFullness [nuh_layer_id]+l (то есть, DPBFullness[nuh_layer_id] увеличивается на единицу). В этом случае, изображение было сохранено в буфере хранения изображения PSB[nuh_layer_id].
[0808] Заполненность буфера декодированных изображений (DPB) также может отслеживаться для набора уровней вывода. Ограничения на размер буфера 116 декодированных изображений (DPB) могут быть сигнализированы, и может применяться сбрасывание на основе ограничений, определенных для набора уровней вывода. Значение DPBFullness может отслеживаться для набора уровней вывода, который связан с испытываемой рабочей точкой. Таким образом, когда изображение удаляют из уровня, принадлежащего набору уровней вывода, значение заполненности буфера декодированных изображений (DPB), может быть уменьшено на единицу в виде DPBFullness=DPBFullness-1. Подобным образом, когда текущее декодированное изображение сохраняют в буфере 116 декодированных изображений (DPB), заполненность буфера декодированных изображений (DPB), может увеличиваться (уменьшаться?) на единицу как DPBFullness=DPBFullness+1.
[0809] В рамках относящегося к текущему декодированному изображению процессу 613, иллюстрируется процесс пометки 611. Процесс пометки 611 может включать в себя пометку ссылки 627a-c, и пометку вывода 629. После временного смещения от этапов 625a-c сохранения, этап 627a-c пометки ссылки на основе изображения может выполняться посредством буфера 116 декодированных изображений (DPB) базового уровня (BL) 2644, буфера 116 декодированных изображений (DPB) первого уровня улучшения (EL1) 2642a и буфера 116 декодированных изображений (DPB) второго уровня улучшения (EL2) 2642b. После другого временного смещения, этап 629 пометки вывода на основе блока доступ (AU) может выполняться посредством буфера 116 декодированных изображений (DPB) базового уровня (BL) 2644, буфера 116 декодированных изображений (DPB) первого уровня улучшения (EL1) 2642a и буфера 116 декодированных изображений (DPB) второго уровня улучшения (EL2) 2642b. Как только относящийся к текущему декодированному изображению процесс 613 завершен, этап 631 вывода изображения (дополнительное сбрасывание) на основе блока доступа (AU) может выполняться посредством буфера 116 декодированных изображений (DPB) базового уровня (BL) 2644, буфера 116 декодированных изображений (DPB) первого уровня улучшения (EL1) 2642a и буфера 116 декодированных изображений (DPB) второго уровня улучшения 2642b.
[0810] Фигура фиг.69 - блок-схема, иллюстрирующая структуру и временную диаграмму для блоков уровня сетевой абстракции (NAL) для уровней кодированных изображений и блоков доступа (AU), когда второй уровень улучшения (EL2) 942b имеет скорость изображений более низкую чем базовый уровень (BL) 944 и первый уровень улучшения (EL1) 942a. Блоки NAL кодированного изображения 953a EL1 иллюстрируются вдоль линии первого уровня улучшения (EL1) 942a. Блоки NAL кодированного изображения 953b EL2 иллюстрируются по линии второго уровня улучшения (EL2) 942b. Блоки NAL кодированного изображения 953c базового уровня иллюстрируются по линии базового уровня (BL) 944.
[0811] В момент времени t1, блоки NAL кодированного изображения 953a EL1, блоки NAL кодированного изображения 953b EL2 и блоки NAL кодированного изображения 953c базового уровня являются частью блока 955a доступа (AU). В момент времени t2, блоки NAL кодированного изображения 953a EL1 и блоки NAL кодированного изображения 953c базового уровня являются частью блока 955b доступа (AU). В момент времени t3, блоки NAL кодированного изображения 953a EL1, блоки NAL EL2 кодированного изображения 953b и блоки NAL кодированного изображения 953c базового уровня являются частью блока 955a доступа (AU). В момент времени t4, блоки NAL кодированного изображения 953a EL1 и блоки NAL кодированного изображения 953c базового уровня являются частью блока доступа (AU) 955d.
[0812] Фигура фиг.70 - блок-схема, иллюстрирующая структуру и временную диаграмму для блоков уровня сетевой абстракции (NAL) для уровней кодированных изображений и блоков доступа (AU), когда базовый уровень (BL) 1044 имеет скорость изображений более низкую, чем первый уровень улучшения (EL1) 1042a и второй уровень улучшения (EL2) 1042b. Блоки NAL кодированного изображения 1053a EL1 иллюстрируются вдоль линии первого уровня улучшения (EL1) 1042a. Блоки NAL кодированного изображения 1053b EL2 иллюстрируются вдоль линии второго уровня улучшения (EL2) 1042b. Блоки NAL кодированного изображения 1053c базового уровня иллюстрируются вдоль линии базового уровня (BL) 1044.
[0813] В момент времени t1, блоки NAL кодированного изображения 1053a EL1, блоки NAL EL2 кодированного изображения 1053b, и блоки NAL кодированного изображения 1053c базового уровня являются частью блока 1055a доступа (AU). В момент времени t2, блоки NAL кодированного изображения 1053a EL1 и блоки NAL кодированного изображения 1053b EL2 являются частью блока 1055b доступа (AU). В момент времени t3, блоки NAL кодированного изображения 1053a EL1, блоки NAL кодированного изображения 1053b EL2, и блоки NAL кодированного изображения 1053c базового уровня являются частью блока 1055c доступа (AU). В момент времени t4, блоки NAL кодированного изображения 1053a EL1 и блоки NAL кодированного изображения 1053b EL1 являются частью блока 1055d доступа (AU).
[0814] Термин "читаемый компьютером носитель" относится к любому доступному носителю, к которому могут осуществлять доступ компьютер или процессор. Термин "читаемый компьютером носитель", как используется в описании, может обозначать читаемый компьютером и/или процессором носитель, который является не временным и материальным. В качестве примера, а не ограничения, читаемый компьютером или читаемый процессором носитель может содержать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически-стираемое программируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое ЗУ на оптическом диске, ЗУ на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для переноса или хранения требуемого кода программы в форме инструкций или структур данных и к которому могут осуществлять доступ компьютер или процессор. Магнитный диск и немагнитный диск, как используется в описании, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой многофункциональный диск (DVD), гибкий диск и по диск технологии Blu-ray (зарегистрированный товарный знак), где магнитные диски в общем воспроизводят данные магнитным образом, тогда как немагнитные диски воспроизводят данные оптически с помощью лазеров.
[0815] Следует отметить, что один или несколько из способов, описанных здесь, могут быть осуществлены в аппаратных средствах и/или реализованы с их использованием. Например, один или несколько из способов или подходов, описанных здесь, могут быть осуществлены в микропроцессорном наборе, специализированной интегральной схеме (ASIC), большой интегральной микросхеме (БИС, LSI) или интегральной схемы, и т.д. и/или реализованы с использованием таковых.
[0816] Каждый из способов, раскрытых здесь, содержит один или большее число этапов или действий для осуществления описанного способа. Этапы способа и/или действия могут быть взаимозаменяемыми один с другим и/или объединенными в одиночный этап, без выхода за рамки объема формулы изобретения. Другими словами, если конкретный порядок этапов или действий не требуется для надлежащей работы описываемого способа, порядок и/или использование конкретных этапов и/или действия могут быть модифицированы, без выхода за рамки объема формулы изобретения.
[0817] Следует понимать, что пункты формулы изобретения не ограничены точной конфигурацией и компонентами, иллюстрируемыми выше. Различные модификации, изменения и изменения могут быть сделаны в компоновке, функционировании и деталях систем, способов, и устройства, описанного здесь, без выхода за рамки объема формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ ДЛЯ ДЕКОДИРОВАНИЯ БИТОВОГО ПОТОКА ВИДЕО | 2021 |
|
RU2825853C2 |
СИГНАЛИЗАЦИЯ ИЗМЕНЕНИЯ НАБОРОВ УРОВНЕЙ ВЫВОДА | 2014 |
|
RU2633106C2 |
ТЕСТИРОВАНИЕ НА СООТВЕТСТВИЕ БИТОВОГО ПОТОКА | 2013 |
|
RU2613737C2 |
БУФЕРИЗАЦИЯ ВИДЕО С НИЗКОЙ ЗАДЕРЖКОЙ ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2633165C2 |
БУФЕРИЗАЦИЯ ВИДЕО С НИЗКОЙ ЗАДЕРЖКОЙ ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2630176C2 |
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ | 2020 |
|
RU2825440C1 |
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ | 2020 |
|
RU2822533C1 |
УЛУЧШЕННЫЙ ЛОГИЧЕСКИЙ ВЫВОД В ВИДЕОКОДИРОВАНИИ | 2014 |
|
RU2665891C2 |
ПАРАМЕТРЫ ГИПОТЕТИЧЕСКОГО ОПОРНОГО ДЕКОДЕРА ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2649297C2 |
ПАРАМЕТРЫ ГИПОТЕТИЧЕСКОГО ОПОРНОГО ДЕКОДЕРА ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2642359C2 |
Изобретение относится к вычислительной технике. Технический результат заключается в оптимальном использовании памяти буфера декодированных изображений. Способ для декодирования битового потока видео содержит получение данных, представляющих кодированное видеоизображение; сохранение данных в буфере кодированных изображений; получение первого флага, указывающего, необходимо ли удалить указанные данные из буфера кодированных изображений для декодирования на основе блока доступа или на основе блока декодирования; и в ответ на определение, что данные подлежат удалению из буфера кодированных изображений на основе блока декодирования, (i) получение второго флага, указывающего, содержит ли битовый поток видео параметр, представляющий общую задержку удаления для всех блоков декодирования в блоке доступа; (ii) получение параметра, представляющего общую задержку удаления для всех блоков декодирования; (iii) удаление каждого блока декодирования из буфера кодированных изображений на основе параметра, представляющего общую задержку удаления для всех блоков декодирования; (iv) декодирование блоков декодирования; (v) извлечение изображения на основе декодированных блоков декодирования. 1 з.п. ф-лы, 79 ил., 51 табл.
1. Способ для декодирования битового потока видео, содержащий:
получение данных, представляющих кодированное видеоизображение;
сохранение данных в буфере кодированных изображений;
получение первого флага, указывающего, необходимо ли удалить указанные данные из буфера кодированных изображений для декодирования на основе блока доступа или на основе блока декодирования, причем каждый блок декодирования является поднабором блоков доступа;
определение на основе первого флага, что данные подлежат удалению из буфера кодированных изображений на основе блока декодирования; и
в ответ на определение, что данные подлежат удалению из буфера кодированных изображений на основе блока декодирования,
(i) получение второго флага, указывающего, содержит ли битовый поток видео параметр, представляющий общую задержку удаления для всех блоков декодирования в блоке доступа, причем общая задержка удаления является задержкой между текущим блоком декодирования и непосредственно предшествующим блоком декодирования;
(ii) получение параметра, представляющего общую задержку удаления для всех блоков декодирования;
(iii) удаление каждого блока декодирования из буфера кодированных изображений на основе параметра, представляющего общую задержку удаления для всех блоков декодирования;
(iv) декодирование блоков декодирования;
(v) извлечение изображения на основе декодированных блоков декодирования.
2. Способ по п.1, дополнительно содержащий получение набора параметров синхронизации изображения в сообщении дополнительной расширенной информации (SEI), причем набор параметров синхронизации изображения включает параметр, представляющий общую задержку удаления.
S | |||
Разборный с внутренней печью кипятильник | 1922 |
|
SU9A1 |
Устройство для электрической сигнализации | 1918 |
|
SU16A1 |
B | |||
BROSS et al | |||
Печь-кухня, могущая работать, как самостоятельно, так и в комбинации с разного рода нагревательными приборами | 1921 |
|
SU10A1 |
Авторы
Даты
2021-04-12—Публикация
2014-04-04—Подача