БУФЕРИЗАЦИЯ ВИДЕО С НИЗКОЙ ЗАДЕРЖКОЙ ПРИ КОДИРОВАНИИ ВИДЕО
VIDEO BUFFERING WITH LOW DELAY IN VIDEO ENCODING

[0001] Данная заявка испрашивает приоритет предварительной заявки на патент (США) номер 61/620266, поданной 4 апреля 2012 года, и предварительной заявки на патент (США) номер 61/641063, поданной 1 мая 2012 года, содержимое каждой из которых полностью содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие относится к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающих в себя цифровые телевизоры, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференц-связи и т.п. Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). Помимо этого, стандарт высокоэффективного кодирования видео (HEVC) является стандартом кодирования видео, разрабатываемым посредством Объединенной группы для совместной работы над видеостандартами (JCT-VC) Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC. Последний проект перспективного HEVC-стандарта, называемый "рабочим проектом HEVC 6", или "HEVC WD6", описывается в документе JCTVC-H1003, авторов Bross и др., "High efficiency video coding (HEVC) text specification draft 6", Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 8th Meeting: Сан-Хосе, Калифорния, США, февраль 2012 года, который с 1 мая 2012 можно загрузить по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip.
[0004] Технологии сжатия видео выполняют пространственное прогнозирование и/или временное прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присутствующую в видеопоследовательностях. Для кодирования видео на основе блоков видеокадр или слайс (вырезка) может быть сегментирован на макроблоки. Каждый макроблок может быть дополнительно сегментирован. Макроблоки во внутренне кодированном (I-) кадре или слайсе кодируются с использованием пространственного прогнозирования относительно соседних макроблоков. Макроблоки во внешне кодированном (P- или B-) кадре или слайсе могут использовать пространственное прогнозирование относительно соседних макроблоков в идентичном кадре или слайсе либо временное прогнозирование относительно других опорных кадров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] В общем, это раскрытие описывает различные технологии для того, чтобы достигать уменьшенной задержки кодека во взаимодействии. В одном примере, эти технологии могут осуществляться через общий режим работы буфера кодированных изображений (CPB) на основе субизображений.
[0006] В одном примере, способ кодирования видеоданных включает в себя сохранение одной или более единиц декодирования видеоданных в буфере кодированных изображений (CPB). Способ дополнительно включает в себя получение соответствующего времени удаления из буфера для одной или более единиц декодирования. Способ дополнительно включает в себя удаление единиц декодирования из CPB в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Способ дополнительно включает в себя определение того, работает ли CPB на уровне единицы доступа или на уровне субизображения. Способ дополнительно включает в себя кодирование видеоданных, соответствующих удаленным единицам декодирования. Если CPB работает на уровне единицы доступа, кодирование видеоданных содержит кодирование единиц доступа, содержащихся в единицах декодирования. Если CPB работает на уровне субизображения, кодирование видеоданных содержит кодирование поднаборов единиц доступа, содержащихся в единицах декодирования.
[0007] В другом примере, устройство для кодирования видеоданных сконфигурировано с возможностью сохранять одну или более единиц декодирования видеоданных в буфере кодированных изображений (CPB). Устройство дополнительно сконфигурировано с возможностью получать соответствующее время удаления из буфера для одной или более единиц декодирования. Устройство дополнительно сконфигурировано с возможностью удалять единицы декодирования из CPB в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Устройство дополнительно сконфигурировано с возможностью определять то, работает ли CPB на уровне единицы доступа или на уровне субизображения. Устройство дополнительно сконфигурировано с возможностью кодировать видеоданные, соответствующие удаленным единицам декодирования. Если CPB работает на уровне единицы доступа, кодирование видеоданных содержит кодирование единиц доступа, содержащихся в единицах декодирования. Если CPB работает на уровне субизображения, кодирование видеоданных содержит кодирование поднаборов единиц доступа, содержащихся в единицах декодирования.
[0008] В другом примере, аппарат для кодирования видеоданных включает в себя средство для сохранения одной или более единиц декодирования видеоданных в буфере кодированных изображений (CPB). Аппарат дополнительно включает в себя средство для получения соответствующего времени удаления из буфера для одной или более единиц декодирования. Аппарат дополнительно включает в себя средство для удаления единиц декодирования из CPB в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Аппарат дополнительно включает в себя средство для определения того, работает ли CPB на уровне единицы доступа или на уровне субизображения. Аппарат дополнительно включает в себя средство для кодирования видеоданных, соответствующих удаленным единицам декодирования. Если CPB работает на уровне единицы доступа, кодирование видеоданных содержит кодирование единиц доступа, содержащихся в единицах декодирования. Если CPB работает на уровне субизображения, кодирование видеоданных содержит кодирование поднаборов единиц доступа, содержащихся в единицах декодирования.
[0009] В другом примере, считываемый компьютером носитель данных содержит сохраненные инструкции, которые при исполнении инструктируют процессору сохранять одну или более единиц декодирования видеоданных в буфере кодированных изображений (CPB). Инструкции дополнительно инструктируют процессору получать соответствующее время удаления из буфера для одной или более единиц декодирования. Инструкции дополнительно инструктируют процессору удалять единицы декодирования из CPB в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Инструкции дополнительно инструктируют процессору определять то, работает ли CPB на уровне единицы доступа или на уровне субизображения. Инструкции дополнительно инструктируют процессору кодировать видеоданные, соответствующие удаленным единицам декодирования. Если CPB работает на уровне единицы доступа, кодирование видеоданных содержит кодирование единиц доступа, содержащихся в единицах декодирования. Если CPB работает на уровне субизображения, кодирование видеоданных содержит кодирование поднаборов единиц доступа, содержащихся в единицах декодирования.
[0010] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие особенности, цели и преимущества станут очевидными из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии для деблокирования краев между видеоблоками, в соответствии с технологиями этого раскрытия.
[0012] Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера, который может реализовывать технологии для деблокирования краев между видеоблоками, в соответствии с технологиями этого раскрытия.
[0013] Фиг. 3 является блок-схемой, иллюстрирующей пример видеодекодера, который декодирует кодированную видеопоследовательность, в соответствии с технологиями этого раскрытия.
[0014] Фиг. 4 является блок-схемой, иллюстрирующей примерное устройство-адресат, которая может реализовывать любые из технологий этого раскрытия.
[0015] Фиг. 5 является блок-схемой последовательности операций способа, которая иллюстрирует примерный способ, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, в соответствии с технологиями этого раскрытия.
[0016] Фиг. 6 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, в соответствии с технологиями этого раскрытия.
[0017] Фиг. 7 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ обработки видеоданных, который включает в себя вывод кадрированного (обрезанного) изображения в процессе обновления (“bumping”), в соответствии с технологиями этого раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0018] Видеоприложения могут включать в себя локальное воспроизведение, потоковую передачу, широковещательную передачу/многоадресную передачу и разговорные приложения. Разговорные приложения могут включать в себя видеотелефонию и видеоконференц-связь и также упоминаются как варианты применения с низкой задержкой. Разговорные приложения требуют относительно низкой сквозной задержки всех систем, т.е. задержки между временем, когда захватывается видеокадр, и временем, когда отображается видеокадр. Типично, приемлемая сквозная задержка для разговорных приложений должна быть меньше 400 миллисекунд (мс), и сквозная задержка приблизительно в 150 мс может считаться очень хорошей. Каждый этап обработки может делать вклад в полную сквозную задержку, например, задержку захвата, задержку предварительной обработки, задержку кодирования, задержку передачи, задержку буферизации приема (для удаления дрожания), задержку декодирования, задержку вывода декодированных изображений, задержку постобработки и задержку отображения. Таким образом, типично, задержка кодека (задержка кодирования, задержка декодирования и задержка вывода декодированных изображений) должна быть минимизирована в разговорных приложениях. В частности, структура кодирования должна обеспечивать то, что порядок декодирования и порядок вывода изображений являются идентичными, так что задержка вывода декодированных изображений равна нулю.
[0019] Стандарты кодирования видео могут включать в себя спецификацию модели буферизации видео. В AVC и HEVC, модель буферизации упоминается в качестве гипотетического эталонного декодера (HRD), который включает в себя модель буферизации как буфера кодированных изображений (CPB), так и буфера декодированных изображений (DPB), и поведения CPB и DPB указываются математически. HRD прямо налагает ограничения на различную синхронизацию, размеры буферов и скорость прохождения битов (битрейт) и косвенно налагает ограничения на характеристики и статистику потока битов. Полный набор параметров HRD включает в себя пять базовых параметров: начальная задержка удаления из CPB, размер CPB, скорость прохождения битов, начальная задержка вывода из DPB и размер DPB.
[0020] В AVC и HEVC, соответствие потока битов и соответствие декодера указываются в качестве частей спецификации HRD. Хотя он упоминается в качестве типа декодера, HRD типично требуется на стороне кодера для того, чтобы гарантировать соответствие потока битов, при этом типично не требуется на стороне декодера. Указываются два типа соответствия потока битов или HRD-соответствия, а именно, тип I и тип II. Кроме того, указываются два типа соответствия декодера, соответствие декодера по синхронизации вывода и соответствие декодера по порядку вывода.
[0021] В AVC и HEVC моделях HRD, декодирование или удаление из CPB основано на единице доступа, и предполагается, что декодирование изображений является мгновенным. В практических вариантах применения, если декодер с соответствием строго следует временам декодирования, сигнализируемым, например, в сообщениях с дополнительной улучшающей информацией (SEI) по синхронизации изображений, чтобы начинать декодирование единиц доступа, то самое раннее время для того, чтобы выводить конкретное декодированное изображение, равно времени декодирования этого конкретного изображения плюс время, необходимое для декодирования этого конкретного изображения. В отличие от AVC и HEVC моделей HRD, время, необходимое для декодирования изображения в реальном мире, не равно нулю. Термины "мгновенный" и "мгновенно" при использовании в этом раскрытии могут означать любую продолжительность, которая может предполагаться мгновенной в одной или более моделей кодирования или в идеализированном аспекте любой одной или более моделей кодирования, с пониманием того, что она может отличаться от "мгновенной" в физическом или буквальном смысле. Например, для целей этого раскрытия, функция или процесс может считаться номинально "мгновенным", если он осуществляется при или в пределах практического допустимого запаса гипотетического или идеализированного самого раннего времени для функции или процесса, который должен быть выполнен. Синтаксис и имена переменных при использовании в данном документе в некоторых примерах могут пониматься в соответствии с их значением в HEVC-модели.
th
[0022] Поведение CPB на основе субизображений предложено в документе "Enhancement on operation of coded picture buffer", авторов Kazui и др., Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 7 Meeting: Женева, CH 21-30, ноябрь 2011 года, JCTVC-G188 (доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G188-v2.zip), чтобы достигать задержки кодирования менее периода одного изображения обеспечивающим взаимодействие способом. Способ JCTVC-G188 может обобщаться следующим образом. Изображение может быть равномерно разделено на M групп древовидных блоков, т.е. первые M древовидных блоков в растровом сканировании древовидного блока изображения принадлежат первой группе древовидных блоков, вторые M древовидных блоков в растровом сканировании древовидного блока изображения принадлежат второй группе древовидных блоков, и т.д. Значение M может быть сигнализировано в сообщениях SEI по периоду буферизации. Это значение может быть использовано для того, чтобы извлекать время удаления из CPB (т.е. время декодирования) каждой группы древовидных блоков. В этом смысле, по JCTVC-G188 поведение CPB основано на субизображениях, при этом каждое субизображение представляет собой группу древовидных блоков. В некоторых примерах, субизображение может соответствовать одному или более слайсам, одной или более волнам (для сегментации фронта волны изображения) или одному или более тайлам. В этом способе JCTVC-G188 предполагается то, что времена удаления из CPB на уровне единицы доступа сигнализируются как обычно (с использованием сообщений SEI по синхронизации изображений), и в каждой единице доступа предполагается, что времена удаления из CPB для групп древовидных блоков линейно или равномерно разделяют интервал от времени удаления из CPB предыдущей единицы доступа до времени удаления из CPB текущей единицы доступа.
[0023] Этот способ JCTVC-G188 дополнительно подразумевает следующие допущения или требования к потоку битов: (1) в каждом изображении каждая группа древовидных блоков кодируется таким способом, который требует идентичного количества времени декодирования (не только в модели HRD, но также и для декодеров реального мира), при этом считается, что кодированные данные из первой группы древовидных блоков включают в себя все единицы NAL (уровня абстракции сети) не-VCL (уровня кодирования видео) в идентичной единице доступа и перед первой единицей NAL VCL; (2) в каждом изображении, число битов для каждой группы древовидных блоков является идентичным, при этом считается, что кодированные данные из первой группы древовидных блоков включают в себя все единицы NAL не-VCL в идентичной единице доступа и перед первой единицей NAL VCL.
[0024] Существующие способы для указания поведения CPB на основе субизображений ассоциированы с по меньшей мере следующими проблемами: (1) Требование, что объем кодированных данных для каждой группы древовидных блоков в кодированном изображении является идентичным, является труднодостижимым при сбалансированной производительности кодирования (при этом группы древовидных блоков для областей с более детальной текстурой или активностью движения в изображении могут использовать большее число битов). (2) Когда более одной группы древовидных блоков включаются в слайс, может не быть простого способа для того, чтобы разбивать кодированные биты древовидных блоков, принадлежащих различным группам древовидных блоков, и отдельно отправлять их на стороне кодера и отдельно удалять их из CPB (т.е. отдельно декодировать их).
[0025] Чтобы разрешать вышеуказанные проблемы, это раскрытие описывает общую схему для поддержки поведения CPB на основе субизображений с различными альтернативами. В некоторых примерах, особенности технологий CPB на основе субизображений этого раскрытия могут включать в себя аспекты следующих технологий: (1) Каждое субизображение может включать в себя некоторое число блоков кодирования кодированного изображения, непрерывных в порядке декодирования. Блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока; (2) Кодирование субизображений и выделение битов различным субизображениям в изображении могут выполняться как обычно, без допущения или необходимости кодирования субизображения (т.е. группы древовидных блоков) в одном изображении с идентичным количеством битов. Следовательно, время удаления из CPB для каждого субизображения может быть сигнализировано в потоке битов вместо извлечения согласно сигнализируемым временам удаления из CPB на уровне изображения; (3) Когда несколько субизображений включаются в слайс, байтовое выравнивание может применяться в конце каждого субизображения, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Кроме того, точка входа каждого субизображения, за исключением первого субизображения в кодированном изображении, может быть сигнализирована, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Принимаемое сигнализируемое значение может указывать байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Каждая из особенностей (1)-(3) может применяться независимо или в комбинации с другими особенностями.
r,n
af
[0026] В одном примере, работа HRD, включающая в себя поведение CPB на основе субизображений, может обобщаться следующим образом. Когда сигнализация указывает то, что используется поведение CPB на основе субизображений, например, через сигнализацию на уровне последовательности элемента sub_pic_cpb_flag синтаксиса, равного 1, удаление из CPB или декодирование основано на субизображении, или эквивалентно, на единице декодирования, которая может представлять собой единицу доступа или поднабор единицы доступа. Другими словами, каждый раз, когда единица декодирования, будь то единица доступа или поднабор единицы доступа, удаляется из CPB для декодирования, время удаления единицы декодирования из CPB может извлекаться из сигнализируемой начальной задержки удаления из CPB и задержки удаления из CPB, сигнализируемой для единицы декодирования. CPB-опустошение указывается в качестве состояния, в котором номинальное время удаления из CPB единицы m декодирования t(m) меньше конечного времени удаления из CPB единицы m декодирования t(m) для любого значения m. В одном примере, когда элемент low_delay_hrd_flag синтаксиса равен 0, требуется, чтобы CPB никогда не опустошался.
[0027] В одном примере, процессы вывода и удаления из DPB по-прежнему могут работать на уровне изображения или на уровне единицы доступа, т.е. каждый раз, когда все декодированное изображение выводится или удаляется из DPB. Удаление декодированных изображений из DPB может происходить мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение).
[0028] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, в числе других функций.
[0029] Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированное видео в устройство-адресат 14 через канал 16 связи. Устройство-источник 12 и устройство-адресат 14 могут содержать любые из широкого диапазона устройств. В некоторых случаях, устройство-источник 12 и устройство-адресат 14 могут содержать устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи, когда канал 16 связи является беспроводным. Тем не менее, технологии этого раскрытия не обязательно ограничены приложениями или настройками беспроводной связи. Например, эти технологии могут применяться к телевизионным широковещательным передачам по радиоинтерфейсу, кабельным телевизионным передачам, спутниковым телевизионным передачам, передачам видео по Интернету, кодированному цифровому видео, которое кодируется на носитель данных, или к другим сценариям. Соответственно, канал 16 связи может содержать любую комбинацию беспроводных, проводных сред или носителей хранения данных, подходящих для передачи или хранения кодированных видеоданных.
[0030] Альтернативно, кодированные данные могут выводиться из передающего устройства 24 в устройство 34 хранения. Аналогично, доступ к кодированным данным может осуществляться из устройства 34 хранения посредством приемного устройства 26. Устройство 34 хранения может включать в себя любой из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память либо любые другие подходящие цифровые носители данных для сохранения кодированных видеоданных. В дополнительном примере, устройство 34 хранения может соответствовать файловому серверу, виртуальному серверу, центру обработки и хранения данных, сети с резервированием центров обработки и хранения данных или другому промежуточному устройству хранения данных, которое может хранить кодированное видео, сформированное посредством устройства-источника 12. Устройство-адресат 14 может осуществлять доступ к сохраненным видеоданным из устройства 34 хранения через потоковую передачу или загрузку. Реализация в виде файлового сервера устройства 34 хранения или его части может представлять собой любой тип сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в устройство-адресат 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Устройство-адресат 14 может осуществлять доступ к кодированным видеоданным через любое стандартное подключение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем и т.д.) или их комбинацию, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на удаленном или нелокальном устройстве 34 хранения. Передача кодированных видеоданных из устройства 34 хранения может представлять собой потоковую передачу, передачу на основе загрузки или их комбинацию.
[0031] В примере по фиг. 1, устройство-источник 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор (модем) 22 и передающее устройство 24. Устройство-адресат 14 включает в себя приемное устройство 26, модем 28, видеодекодер 30 и устройство 32 отображения. В соответствии с этим раскрытием, видеокодер 20 устройства-источника 12 может быть сконфигурирован с возможностью применять технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, в числе других функций. В других примерах, устройство-источник и устройство-адресат могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные из внешнего видеоисточника, а не интегрированного видеоисточника 18, такого как внешняя камера. Аналогично, устройство-адресат 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства 32 отображения.
[0032] Проиллюстрированная система 10 по фиг. 1 является просто одним примером. Технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, могут выполняться посредством любого устройства кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия выполняются посредством устройства кодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Кроме того, технологии этого раскрытия также могут выполняться посредством видеопрепроцессора. Устройство-источник 12 и устройство-адресат 14 являются просто примерами таких устройств кодирования, в которых устройство-источник 12 формирует кодированные видеоданные для передачи в устройство-адресат 14. В некоторых примерах, устройства 12, 14 могут работать практически симметрично так, что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0033] Видеоисточник 18 устройства-источника 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого вживую видео, архивного видео и генерируемого компьютером видео. В некоторых случаях, если видеоисточник 18 представляет собой видеокамеру, устройство-источник 12 и устройство-адресат 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, как упомянуто выше, технологии, описанные в этом раскрытии, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или генерируемое компьютером видео может быть кодировано посредством видеокодера 20. Кодированная видеоинформация затем может быть модулирована посредством модема 22 согласно стандарту связи и передана в устройство-адресат 14 через передающее устройство 24. Модем 22 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью модуляции сигналов. Передающее устройство 24 может включать в себя схемы, спроектированные с возможностью передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0034] Приемное устройство 26 целевого устройства 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию. С другой стороны, процесс кодирования видео может реализовывать одну или более технологий, описанных в данном документе, для того чтобы сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций. Информация, передаваемая по каналу 16, может включать в себя синтаксическую информацию, заданную посредством видеокодера 20, которая также может быть использована посредством видеодекодера 30, который включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку макроблоков, единиц дерева кодирования, слайсов и других кодированных единиц, например, групп изображений (GOP). Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0035] В примере по фиг. 1, канал 16 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 16 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из устройства-источника 12 в устройство-адресат 14, включающих в себя любую надлежащую комбинацию проводных или беспроводных сред. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать связь из устройства-источника 12 в устройство-адресат 14. В других примерах, устройство-источник 12 может сохранять кодированные данные на носитель данных, такой как устройство 34 хранения, вместо передачи данных. Аналогично, устройство-адресат 14 может быть сконфигурировано с возможностью извлекать кодированные данные из устройства 34 хранения либо из другого носителя или устройства хранения данных.
[0036] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту сжатия видео, такому как стандарты сжатия видео, описанные в данном документе. Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом кодирования. Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио-кодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другое аппаратное обеспечение и программное обеспечение для того, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0037] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера, к примеру, один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), устройств беспроводной связи, которые включают в себя устройство кодирования видео, такое как кодер или декодер, дискретная логика, программное обеспечение, аппаратное обеспечение, микропрограммное обеспечение либо любые их комбинации. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующей камере, компьютере, мобильном устройстве, абонентском устройстве, широковещательном устройстве, абонентской приставке, на сервере и в другом устройстве.
[0038] Видеопоследовательность типично включает в себя серии видеокадров. Группы изображений (GOP), в общем, содержат последовательность из одного или более видеокадров. GOP может включать в себя, в заголовке GOP, в заголовке одного или более кадров GOP или в другом месте, синтаксические данные, которые описывают число кадров, включенных в GOP. Каждый кадр может включать в себя синтаксические данные кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер 20 типично управляет видеоблоками, также называемыми "единицами кодирования (CU)", в отдельных видеокадрах, для того чтобы кодировать видеоданные. Видеоблок может соответствовать наибольшей единице кодирования (LCU) или сегменту LCU. Видеоблоки могут иметь фиксированный или варьирующийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя множество слайсов. Каждый слайс может включать в себя множество LCU, которые могут размещаться в сегментах, также называемых "суб-CU". LCU также может называться "единицей дерева кодирования".
[0039] В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16x16, 8x8 или 4x4 для компонент сигнала яркости и 8x8 для компонент сигнала цветности, а также внешнее прогнозирование для различных размеров блоков, таких как 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 и 4x4 для компонент сигнала яркости и соответствующие масштабированные размеры для компонент сигнала цветности. В этом раскрытии, "NxN" и "N на N" могут быть использованы взаимозаменяемо для того, чтобы означать размеры в пикселах блока с точки зрения размеров по вертикали и горизонтали, например, 16x16 пикселов или 16 на 16 пикселов. В общем, блок 16x16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок NxN, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселов, причем M не обязательно равно N.
[0040] Видеоблоки могут содержать блоки пикселных данных в пикселной области или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование, к остаточным данным видеоблоков, представляющим пикселные разности между кодированными видеоблоками и прогнозными видеоблоками. В некоторых случаях, видеоблок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
[0041] Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, блоки и различные сегменты, иногда называемые "субблоками", могут считаться видеоблоками. Помимо этого, слайс может считаться множеством видеоблоков, таких как блоки и/или субблоки. Каждый слайс может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Термин "кодированная единица" может означать любую независимо декодируемую единицу видеокадра, такую как весь кадр или слайс кадра, группа изображений (GOP), также называемая "кодированной видеопоследовательностью", или другая независимо декодируемая единица, заданная согласно применимым технологиям кодирования.
[0042] После внутреннего прогнозирующего или внешнего прогнозирующего кодирования для того, чтобы формировать прогнозирующие данные и остаточные данные, и после преобразований (таких как целочисленное преобразование 4x4 или 8x8, используемое в H.264/AVC, или дискретное косинусное преобразование (DCT)) для того, чтобы формировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[0043] HEVC ссылается на блок видеоданных в качестве единицы кодирования (CU), которая может включать в себя одну или более единиц прогнозирования (PU) и/или одну или более единиц преобразования (TU). Это раскрытие также может использовать термин "блок", чтобы ссылаться на любую из CU, PU или TU. Синтаксические данные в потоке битов могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей единицей кодирования с точки зрения числа пикселов. В общем, CU имеет назначение, аналогичное назначению макроблока H.264 за исключением того, что CU не имеет различия размера. Таким образом, CU может разбиваться на суб-CU. В общем, ссылки в этом раскрытии на CU могут ссылаться на наибольшую единицу кодирования (LCU) изображения или суб-CU LCU. LCU может разбиваться на суб-CU, и каждая суб-CU может дополнительно разбиваться на суб-CU. Синтаксические данные для потока битов могут задавать максимальное число раз, которое может разбиваться LCU, что называется " CU-глубиной". Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU).
[0044] LCU может быть ассоциирована со структурой данных в виде дерева квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует LCU. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть заданы рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU. Если CU не разбивается дополнительно, она называется "концевой CU". В этом раскрытии, четыре суб-CU концевой CU также называются "концевыми CU", хотя и отсутствует явное разбиение исходной концевой CU. Например, если CU размера 16x16 не разбивается дополнительно, четыре суб-CU 8x8 также могут называться "концевыми CU", хотя CU 16x16 не разбивается.
[0045] Кроме того, TU концевых CU также могут быть ассоциированы с соответствующими структурами данных в виде дерева квадрантов. Иными словами, концевая CU может включать в себя дерево квадрантов, указывающее то, как концевая CU сегментируется на TU. Это раскрытие ссылается на дерево квадрантов, указывающее то, как LCU сегментируется в качестве дерева квадрантов CU, и на дерево квадрантов, указывающее то, как концевая CU сегментируется на TU в качестве дерева квадрантов TU. Корневой узел дерева квадрантов TU, в общем, соответствует концевой CU, в то время как корневой узел дерева квадрантов CU, в общем, соответствует LCU. TU дерева квадрантов TU, которые не разбиваются, могут называться "концевыми TU".
[0046] Концевая CU может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет всю или часть соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для концевой CU, задающей PU, также могут описывать, например, сегментирование CU на одну или более PU. Режимы секционирования могут отличаться в зависимости от того, является CU некодированной, кодированной в режиме внутреннего прогнозирования или кодированной в режиме внешнего прогнозирования. Для внутреннего кодирования, PU может обрабатываться идентично концевой единице преобразования, описанной ниже.
[0047] Концевая CU может включать в себя одну или более единиц преобразования (TU). Единицы преобразования могут указываться с использованием структуры в виде дерева квадрантов TU, как пояснено выше. Иными словами, флаг разбиения может указывать то, разбивается или нет концевая CU на четыре единицы преобразования. Затем, каждая единица преобразования дополнительно может разбиваться на 4 суб-TU. Когда TU не разбивается дополнительно, она может называться "концевой TU". В общем, флаг разбиения может указывать то, что концевая TU разбивается на TU квадратной формы. Чтобы указывать то, что TU разбивается на TU неквадратной формы, могут быть включены другие синтаксические данные, например, синтаксические данные, которые указывают то, что TU должны быть сегментированы согласно преобразованию неквадратного дерева квадрантов (NSQT).
[0048] В общем, для внутреннего кодирования, все концевые TU, принадлежащие концевой CU, совместно используют идентичный режим внутреннего прогнозирования. Иными словами, идентичный режим внутреннего прогнозирования, в общем, применяется для того, чтобы вычислять прогнозированные значения для всех TU концевой CU. Для внутреннего кодирования, видеокодер 20 может вычислять остаточное значение для каждой концевой TU с использованием режима внутреннего прогнозирования, в качестве разности между частью прогнозных значений, соответствующей TU, и исходным блоком. Остаточное значение может быть преобразовано, квантовано и сканировано. Для внешнего кодирования, видеокодер может выполнять прогнозирование на уровне PU и может вычислять остаток для каждой PU. Остаточные значения, соответствующие концевой CU, могут быть преобразованы, квантованы и сканированы. Для внешнего кодирования, концевая TU может быть больше или меньше PU. Для внутреннего кодирования, PU может совместно размещаться с соответствующей концевой TU. В некоторых примерах, максимальный размер концевой TU может быть размером соответствующей концевой CU.
[0049] В общем, это раскрытие использует термины CU и TU, чтобы ссылаться на концевую CU и концевую TU, соответственно, если не указано иное. В общем, технологии этого раскрытия связаны с преобразованием, квантованием, сканированием и энтропийным кодированием данных CU. В качестве примера, технологии этого раскрытия включают в себя выбор преобразования, которое следует использовать для того, чтобы преобразовывать остаточное значение внутренне прогнозированного блока на основе режима внутреннего прогнозирования, используемого для того, чтобы прогнозировать блок. Это раскрытие также использует термин "направленное преобразование" или "расчетное преобразование", чтобы означать такое преобразование, которое зависит от направления режима внутреннего прогнозирования. Иными словами, видеокодер может выбирать направленное преобразование, которое должно применяться к единице преобразования (TU). Как отмечено выше, внутреннее прогнозирование включает в себя прогнозирование TU текущей CU изображения из ранее кодированных CU и TU идентичного изображения. Более конкретно, видеокодер 22 может внутренне прогнозировать текущую TU изображения с использованием конкретного режима внутреннего прогнозирования.
[0050] После квантования энтропийное кодирование квантованных данных может выполняться, например, согласно контентно-адаптивному кодированию с переменной длиной слова (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), энтропийному кодированию с сегментированием интервала вероятности (PIPE) или другой технологии энтропийного кодирования. Модуль обработки, сконфигурированный для энтропийного кодирования, или другой модуль обработки может выполнять другие функции обработки, такие как кодирование по длинам серий нулей квантованных коэффициентов и/или формирование синтаксической информации, такой как значения шаблона кодированного блока (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодированной единицы (к примеру, кадра, слайса, макроблока или последовательности) или другая синтаксическая информация.
[0051] Видеокодер 20 может быть сконфигурирован с возможностью осуществлять обратное квантование и обратное преобразование, чтобы сохранять декодированные блоки, которые должны быть использованы в качестве ссылки для прогнозирования последующих блоков, например, в идентичном кадре или в кадрах, которые должны временно прогнозироваться. Видеокодер 20 дополнительно может отправлять синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и синтаксические GOP-данные, в видеодекодер 30, например, в заголовке кадра, в заголовке блока, в заголовке слайса или в GOP-заголовке. Синтаксические GOP-данные могут описывать число кадров в соответствующей GOP, и синтаксические данные кадров могут указывать режим кодирования/прогнозирования, используемый для того, чтобы кодировать соответствующий кадр.
[0052] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера или декодера при соответствующих условиях, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логическая схема, программное обеспечение, аппаратное обеспечение, микропрограммное обеспечение либо любые их комбинации. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного видеокодера/декодера (кодека). Аппарат, включающий в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0053] В соответствии с технологиями этого раскрытия, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0054] Следующие определения предоставляются относительно примерного видеокодера 20 и/или видеодекодера 30, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0055] В целях описания одного набора примеров, термин "единица декодирования" может задаваться следующим образом:
Единица декодирования: единица доступа или поднабор единицы доступа. Если sub_pic_cpb_flag равен 0, единица декодирования представляет собой единицу доступа; в противном случае единица декодирования представляет собой поднабор единицы доступа. Когда sub_pic_cpb_flag равен 1, первая единица декодирования в единице доступа включает в себя все единицы NAL не-VCL в единице доступа и первую единицу NAL VCL в идентичной единице доступа, и каждая другая единица декодирования в единице доступа представляет собой единицу NAL кодированного слайса, которая не представляет собой первую единицу NAL кодированного слайса в единице доступа.
[0056] В целях описания второго набора примеров, термин "единица декодирования" может задаваться следующим образом, с дополнительным определением термина "субизображение", используемого в соответствующем примерном определении "единицы декодирования":
Единица декодирования: единица доступа или поднабор единицы доступа. Если sub_pic_cpb_flag равен 0, единица декодирования представляет собой единицу доступа; в противном случае единица декодирования представляет собой поднабор единицы доступа. Когда sub_pic_cpb_flag равен 1, первая единица декодирования в единице доступа включает в себя все единицы NAL не-VCL в единице доступа и первое субизображение изображения в идентичной единице доступа, и каждая другая единица декодирования в единице доступа представляет собой субизображение, которое не представляет собой первое субизображение в единице доступа.
Субизображение: число блоков кодирования кодированного изображения, непрерывных в порядке декодирования.
[0057] В определении согласно второму набору примеров, предоставленному выше, когда несколько субизображений включаются в слайс, байтовое выравнивание может применяться в конце каждого субизображения, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Кроме того, точка входа каждого субизображения, за исключением первого субизображения в кодированном изображении, может быть сигнализирована.
[0058] В некоторых альтернативах, когда поток битов содержит несколько масштабируемых слоев или видов, единица декодирования может задаваться как многослойное представление или компонента вида. Все единицы не-VCL, предшествующие первой единице NAL VCL многослойного представления или компоненты вида, также принадлежат единице декодирования, содержащей многослойное представление или компоненту вида.
[0059] Нижеприведенные описания примерной работы гипотетического эталонного декодера (HRD), примерной работы буфера кодированных изображений, примерной синхронизации поступления потока битов, примерной синхронизации удаления единиц декодирования, примерного декодирования единицы декодирования, примерной работы буфера декодированных изображений, примерного удаления изображений из буфера декодированных изображений, примерного вывода изображений и примерной пометки и хранения текущего декодированного изображения предоставляются для того, чтобы иллюстрировать примеры видеокодера 20 и/или видеодекодера 30, который может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций. Операции могут задаваться или выполняться по-иному в других примерах. Таким образом, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью работать согласно различным примерам операций HRD, описанных ниже.
[0060] В качестве одного примера, работа HRD может быть описана в общих словах следующим образом: размер CPB (число битов) является CpbSize[SchedSelIdx]. Размер DPB (число буферов хранения изображений) для временного слоя X является max_dec_pic_buffering[X]+1 для каждого X в диапазоне от 0 до max_temporal_layers_minus1, включительно. В этом примере, HRD может работать следующим образом. Данные, ассоциированные с единицами доступа, которые протекают в CPB согласно указанному плану поступления, могут доставляться посредством гипотетического планировщика потоков (HSS), т.е. планировщика доставки. Данные, ассоциированные с каждой единицей декодирования, могут удаляться и декодироваться мгновенно посредством процесса мгновенного декодирования во времена удаления из CPB. Каждое декодированное изображение может быть размещено в DPB. Декодированное изображение может удаляться из DPB в более позднее из времени вывода из DPB или времени, когда оно становится больше ненужным для ссылки внешнего прогнозирования.
[0061] Арифметические вычисления в этих примерах могут выполняться с вещественными значениями, так что ошибки округления не распространяются. Например, число битов в CPB непосредственно до или после удаления единицы декодирования не обязательно является целым числом.
c
[0062] Переменная t может извлекаться следующим образом и может называться "тактом синхронизации":
c
t=num_units_in_tick÷time_scale (C-1)
[0063] Следующее может указываться для выражения ограничений в примерной модификации приложения HEVC:
пусть единица n доступа является n-ной единицей доступа в порядке декодирования, при этом первая единица доступа является единицей 0 доступа;
пусть изображение n является кодированным изображением или декодированным изображением единицы n доступа;
пусть единица m декодирования является m-той единицей декодирования в порядке декодирования, при этом первая единица декодирования является единицей 0 декодирования.
[0064] Некоторые примерные технологии для работы буфера кодированных изображений (CPB) описываются следующим образом. Согласно некоторым технологиям кодирования видео, могут быть реализованы различные способы работы DPB. Спецификации в разделе HEVC WD6 для операций CPB могут быть модифицированы посредством этого раскрытия и могут применяться независимо к каждому набору параметров CPB, который присутствует, и к обеим точкам соответствия типа I и типа II.
[0065] Некоторые примеры, заключающие в себе синхронизацию поступления потока битов, описываются следующим образом. HRD может быть инициализирован в любом из сообщений с дополнительной улучшающей информацией (SEI) по периоду буферизации. До инициализации CPB может быть пустым. После инициализации, HRD может не быть инициализирован снова посредством последующих сообщений SEI по периоду буферизации.
[0066] Единица доступа, которая ассоциирована с сообщением SEI по периоду буферизации, которое инициализирует CPB, может называться "единицей 0 доступа". Каждая единица декодирования может называться "единицей m декодирования", где номер m идентифицирует конкретную единицу декодирования. Первая единица декодирования в порядке декодирования в единице 0 доступа может называться "единицей 0 декодирования". Значение m может увеличиваться на 1 для каждой последующей единицы декодирования в порядке декодирования.
ai
[0067] Время, в которое первый бит единицы m декодирования начинает входить в CPB, может называться "начальным временем t(m) поступления". Начальное время поступления единиц декодирования может извлекаться следующим образом:
ai
если единица декодирования представляет собой единицу 0 декодирования, t(0)=0,
в противном случае (единица декодирования представляет собой единицу m декодирования с m>0), может применяться следующее:
если cbr_flag[SchedSelIdx] равен 1, начальное время поступления для единицы m декодирования равно конечному времени поступления (которое извлекается ниже) единицы m-1 декодирования, т.е.:
ai
af
t(m)=t(m-1), (C-2)
в противном случае (cbr_flag[SchedSelIdx] равен 0), начальное время поступления для единицы m декодирования извлекается посредством следующего:
ai
af
ai,earliest
t(m)=Max(t(m-1), t(m)), (C-3)
ai,earliest
где t(m) извлекается следующим образом.
ai,earliest
[0068] Если единица m декодирования не представляет собой первую единицу декодирования последующего периода буферизации, t(m) может извлекаться следующим образом:
ai,earliest
r,n
t(m)=t(m)-(initial_cpb_removal_delay[SchedSelIdx]+initial_cpb_removal_delay_offset[SchedSelIdx])÷90000, (C-4)
r,n
причем t(m) является номинальным временем удаления единицы m декодирования из CPB, как указано, и initial_cpb_removal_delay[SchedSelIdx] и initial_cpb_removal_delay_offset[SchedSelIdx] указываются в предыдущем сообщении SEI по периоду буферизации;
ai,earliest
в противном случае (единица m декодирования представляет собой первую единицу декодирования последующего периода буферизации), t(m) может извлекаться следующим образом:
ai,earliest
r,n
t(m)=t(m)-(initial_cpb_removal_delay[SchedSelIdx]÷90000), (C-5)
причем initial_cpb_removal_delay[SchedSelIdx] указывается в сообщении SEI по периоду буферизации, ассоциированном с единицей доступа, содержащей единицу m декодирования.
[0069] Конечное время поступления для единицы m декодирования может извлекаться посредством следующего:
af
ai
t(m)=t(m)+b(m)÷BitRate[SchedSelIdx], (C-6)
где b(m) может быть размером в битах единицы m декодирования, подсчета битов единиц NAL VCL и единиц NAL заполняющих данных для точки соответствия типа I или всех битов потока битов типа II для точки соответствия типа II.
[0070] В некоторых примерах, значения SchedSelIdx, BitRate[SchedSelIdx] и CpbSize[SchedSelIdx] могут ограничиваться следующим образом:
Если контент активных наборов параметров последовательности для единицы доступа, содержащей единицу m декодирования и предыдущую единицу доступа, отличается, HSS выбирает значение SchedSelIdx1 SchedSelIdx из числа значений SchedSelIdx, предоставленных в активном наборе параметров последовательности, для единицы доступа, содержащей единицу m декодирования, которая приводит к BitRate[SchedSelIdx1] или CpbSize[SchedSelIdx1] для единицы доступа, содержащей единицу m декодирования. Значение BitRate[SchedSelIdx1] или CpbSize[SchedSelIdx1] может отличаться от значения BitRate[SchedSelIdx0] или CpbSize[SchedSelIdx0] для значения SchedSelIdx0 SchedSelIdx, которое использовано для предыдущей единицы доступа;
в противном случае, HSS продолжает работать с предыдущими значениями SchedSelIdx, BitRate[SchedSelIdx] и CpbSize[SchedSelIdx].
[0071] Когда HSS выбирает значения BitRate[SchedSelIdx] или CpbSize[SchedSelIdx], которые отличаются от значений предыдущей единицы доступа, в некоторых примерах может применяться следующее:
ai
переменная BitRate[SchedSelIdx] активируется во время t(m)
переменная CpbSize[SchedSelIdx] активируется следующим образом:
ai
если новое значение CpbSize[SchedSelIdx] превышает старый размер CPB, оно активируется во время t(m),
в противном случае новое значение CpbSize[SchedSelIdx] активируется во время удаления из CPB последней единицы декодирования единицы доступа, содержащей единицу m декодирования.
ai
af
[0072] Когда sub_pic_cpb_flag равен 1, начальное время t(n) поступления в CPB единицы n доступа может задаваться равным начальному времени поступления в CPB первой единицы декодирования в единице n доступа, и конечное время t(n) поступления в CPB единицы n доступа может задаваться равным конечному времени поступления в CPB последней единицы декодирования в единице n доступа.
[0073] Некоторые примеры, заключающие в себе синхронизацию удаления единицы декодирования и декодирования единицы декодирования, описываются следующим образом. Когда единица m декодирования представляет собой единицу декодирования с m, равным 0 (первую единицу декодирования единицы доступа, которая инициализирует HRD), номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
r,n
t(0)=initial_cpb_removal_delay[SchedSelIdx]÷90000 (C-7)
[0074] Когда единица m декодирования представляет собой первую единицу декодирования первой единицы доступа периода буферизации, который не инициализирует HRD, номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
r,n
r,n
b
c
t(m)=t(m)+t*cpb_removal_delay(m), (C-8)
r,n
b
где t(m) является номинальным временем удаления первой единицы декодирования предыдущего периода буферизации, и cpb_removal_delay(m) является значением cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении SEI по синхронизации изображений, ассоциированном с единицей доступа, содержащей единицу m декодирования.
b
r,n
r,n
[0075] Когда единица n декодирования представляет собой первую единицу декодирования периода буферизации, m может задаваться равным m во время t(m) удаления единицы n декодирования. Номинальное время t(m) удаления единицы m декодирования, которая не представляет собой первую единицу декодирования периода буферизации, может задаваться следующим образом:
r,n
r,n
b
c
t(m)=t(m)+t*cpb_removal_delay(m), (C-9)
r,n
b
где t(m) является номинальным временем удаления первой единицы декодирования текущего периода буферизации, и cpb_removal_delay(m) является значением cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении SEI по синхронизации изображений, ассоциированном с единицей доступа, содержащей единицу m декодирования.
[0076] Время удаления единицы m декодирования может указываться следующим образом:
r,n
af
если low_delay_hrd_flag равен 0, или t(m)>=t(m), время удаления единицы n декодирования может указываться посредством следующего:
r
r,n
t(m)=t(m), (C-10)
r,n
af
в противном случае (low_delay_hrd_flag равен 1, и t(m)<t(m)), время удаления единицы m декодирования указывается посредством следующего:
r
r,n
c
af
r,n
c
t(m)=t(m)+t*Ceil((t(m)-t(m))÷t) (C-11)
Второй случай указывает то, что размер b(m) единицы m декодирования является настолько большим, что он предотвращает удаление в номинальное время удаления.
r,n
r
[0077] Когда sub_pic_cpb_flag равен 1, номинальное время t(n) удаления из CPB единицы n доступа может задаваться равным нормальному времени удаления из CPB последней единицы декодирования в единице n доступа, время t(n) удаления из CPB единицы n доступа может задаваться равным времени удаления из CPB последней единицы декодирования в единице n доступа.
[0078] В некоторых примерах, во время удаления из CPB единицы m декодирования, единица декодирования может быть мгновенно декодирована.
[0079] Некоторые примеры работы буфера декодированных изображений (DPB) описываются следующим образом. Буфер декодированных изображений может содержать буферы хранения изображений. Каждый из буферов хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. До инициализации DPB может быть пустым (заполненность DPB задается равной нулю). Следующие этапы этих примеров технологий этого раскрытия могут происходить в перечисленной последовательности.
[0080] Некоторые примеры удаления изображений из буфера декодированных изображений (DPB) описываются следующим образом. В некоторых примерах, удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка слайса для первого слайса текущего изображения) может происходить мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение) и может продолжаться следующим образом.
[0081] Может активироваться процесс декодирования для набора опорных изображений, как указано в подразделе 8.3.2 HEVC WD6. Если текущее изображение представляет собой изображение мгновенного обновления декодера (IDR), может применяться следующее:
1. Когда изображение IDR не представляет собой первое декодированное изображение IDR (например, когда флаг отсутствия вывода предшествующих изображений имеет значение, не равное 1), и значение pic_width_in_luma_samples (например, ширина изображения в выборках сигнала яркости) или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемое из активного набора параметров последовательности, отличается от значения pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемого из набора параметров последовательности, который является активным для предшествующего изображения, соответственно, no_output_of_prior_pics_flag может логически выводиться равным 1 или задаваться равным 1 посредством HRD, независимо от фактического значения no_output_of_prior_pics_flag. Реализации декодера могут обрабатывать изменения размера изображения или размера DPB более корректно по сравнению с HRD в отношении изменений в pic_width_in_luma_samples или pic_height_in_luma_samples.
2. Когда no_output_of_prior_pics_flag равен 1 либо задается или логически выводится равным 1, все буферы хранения изображений в DPB могут очищаться без вывода изображений, которые они содержат, и заполненность DPB может задаваться равной 0.
o,dpb
r
[0082] Все изображения k в DPB, для которых все следующие условия являются истинными, могут удаляться из DPB: изображение k помечено как "не используется для ссылки"; изображение k имеет PicOutputFlag, равный 0, или его время вывода из DPB меньше или равно времени удаления из CPB первой единицы декодирования (обозначается в качестве единицы m декодирования) текущего изображения n; т.е. t(k)<=t(m).
[0083] Когда изображение удаляется из DPB, заполненность DPB может быть уменьшена на единицу.
r
[0084] Некоторые примеры вывода изображений описываются следующим образом. Следующее может происходить мгновенно во время удаления из CPB последней единицы декодирования (обозначается в качестве единицы m декодирования) единицы n доступа (содержащей текущее изображение), t(m). Изображение n может считаться декодированным после того, как декодируется последняя единица декодирования изображения.
r
r
[0085] Переменная maxPicOrderCnt (для максимального номера в порядке изображений (POC)) может задаваться равной максимуму значений PicOrderCntVal (для значения номера в порядке изображений (POC)) для текущего изображения и всех изображений в DPB, которые в данный момент помечаются как "используется для кратковременной ссылки" или которые имеют время вывода из DPB, превышающее t(m). Переменная minPicOrderCnt (для минимального номера в порядке изображений (POC), т.е. наименьший номер в порядке изображений (POC)), может задаваться равной минимуму PicOrderCntVal для текущего изображения и всех изображений в DPB, которые в данный момент помечаются как "используется для кратковременной ссылки" или которые имеют время вывода из DPB, превышающее t(m). То, что значение maxPicOrderCnt-minPicOrderCnt должно быть меньше MaxPicOrderCntLsb/2, может быть требованием соответствия потока битов.
o,dpb
[0086] Когда изображение n имеет PicOutputFlag, равный 1, его время t(n) вывода из DPB может извлекаться посредством следующего:
o,dpb
r
c
t(n)=t(m)+t*dpb_output_delay(n), (C-12)
где dpb_output_delay(n) является значением dpb_output_delay, указываемого в сообщении SEI по синхронизации изображений, ассоциированном с единицей n доступа. Вывод текущего изображения может указываться следующим образом:
o,dpb
r
если PicOutputFlag равен 1, и t(n)=t(m), текущее изображение выводится;
в противном случае, если PicOutputFlag равен 0, текущее изображение не выводится, но может быть сохранено в DPB, как дополнительно указано ниже;
o,dpb
r
o,dpb
o,dpb
в противном случае (PicOutputFlag равен 1, и t(n)>t(m)), текущее изображение выводится позднее и должно быть сохранено в DPB (как дополнительно указано ниже), и выводится во время t(n), если только не указано то, что оно не должно выводиться, посредством декодирования или логического вывода no_output_of_prior_pics_flag, равного 1, во время, которое предшествует t(n).
o,dpb
[0087] При выводе, текущее или выбранное изображение может быть кадрировано, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности, за счет этого формируя кадрированное изображение на основе выбранного изображения, т.е. текущее изображение. Когда изображение n представляет собой изображение, которое выводится и не является последним изображением потока битов, который выводится, значение Δt(n) задается следующим образом:
o,dpb
o,dpb
o,dpb
Δt(n)=t(nn)-t(n), (C-13)
где nn указывает изображение, которое следует после изображения n в порядке вывода и имеет PicOutputFlag, равный 1. Более подробная информация процесса обновления и процесса кадрирования предоставляется дополнительно ниже.
r
[0088] Некоторые примеры, заключающие в себе пометку и хранение текущего декодированного изображения, описываются следующим образом. Следующее может происходить мгновенно во время удаления из CPB последней единицы декодирования единицы n доступа (содержащей текущее изображение), t(m). Текущее декодированное изображение может быть сохранено в DPB в пустом буфере хранения изображений, и заполненность DPB может увеличиваться на единицу. Если текущее изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки", в противном случае оно может помечаться как "не используется для ссылки".
[0089] Следующий примерный синтаксис и семантика для сигнализации режима поведения CPB предоставляются относительно примерного видеокодера 20 и/или видеодекодера 30, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0090] Некоторые примеры синтаксиса и семантики для сигнализации режима поведения CPB описываются следующим образом. Синтаксис параметров информации применимости видео (VUI) может быть изменен посредством добавления флага субизображения CPB, sub_pic_cpb_flag, как показано в нижеприведенной таблице 1:
Таблица 1
vui_parameters() {
Дескриптор
...
timing_info_present_flag
u(1)
if(timing_info_present_flag) {
num_units_in_tick
u(32)
time_scale
u(32)
fixed_pic_rate_flag
u(1)
}
nal_hrd_parameters_present_flag
u(1)
if(nal_hrd_parameters_present_flag)
hrd_parameters
vcl_hrd_parameters_present_flag
u(1)
if(vcl_hrd_parameters_present_flag)
hrd_parameters
if(nal_hrd_parameters_present_flag||vcl_hrd_parameters_present_flag) {
sub_pic_cpb_flag
u(1)
low_delay_hrd_flag
u(1)
}
...
}
[0091] В этом примере, таблица 1 включает в себя добавленный флаг sub_pic_cpb_flag относительно традиционного HEVC. Этот флаг субизображения CPB sub_pic_cpb_flag может быть использован для того, чтобы сигнализировать то, включает или нет набор видеоданных, предоставленных для буфера кодированных изображений (CPB), в себя параметры субизображения для декодирования субизображений. Такие параметры субизображения, присутствие которых может сигнализировать флаг sub_pic_cpb_flag, могут включать в себя времена удаления из буфера, включающие в себя соответствующие времена удаления из буфера (т.е. времена удаления из CPB) для каждой из одной или более единиц декодирования. Один пример семантики sub_pic_cpb_flag заключается в следующем. Элемент sub_pic_cpb_flag синтаксиса, равный 0, может указывать то, что CPB работает на уровне единицы доступа. Элемент sub_pic_cpb_flag синтаксиса, равный 1, может указывать то, что CPB работает на уровне единицы декодирования, который может быть на уровне единиц доступа или поднаборов единиц доступа, которые могут соответствовать субизображениям. Когда sub_pic_cpb_flag не присутствует, его значение может задаваться или логически выводиться равным 0, что может указывать состояние по умолчанию, в котором видеоданные не включают в себя параметры субизображения для декодирования субизображений.
[0092] Некоторые примеры синтаксиса и семантики для сигнализации времен удаления из CPB единиц декодирования описываются следующим образом. Синтаксис сообщения SEI по периоду буферизации может оставаться неизменным, аналогично HEVC WD6, в то время как семантика элементов initial_cpb_removal_delay[SchedSelIdx] и initial_cpb_removal_delay_offset[SchedSelIdx] синтаксиса может быть изменена следующим образом. В этом примере, элемент 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 кГц.
[0093] В этом примере, элемент 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), указываемого в Приложении C HEVC WD6.
[0094] В некоторых примерах, синтаксис и семантика сообщения SEI по синхронизации изображений могут быть изменены, как показано в нижеприведенной таблице 2:
Таблица 2
pic_timing(payloadSize) {
Дескриптор
if(CpbDpbDelaysPresentFlag) {
if(sub_pic_cpb_flag)
num_decoding_units_minus1
ue(v)
for(i=0; i<= num_decoding_units_minus1; i++)
cpb_removal_delay[i]
u(v)
dpb_output_delay
u(v)
}
}
[0095] В примере таблицы 2, сообщение SEI по pic_timing включает в себя добавленный сигнал num_decoding_units_minus1, и цикл for по числу единиц декодирования, который сигнализирует соответствующую задержку удаления единицы декодирования из буфера кодированных изображений, когда sub_pic_cpb_flag параметров VUI, например, согласно вышеприведенной таблице 1, является истинным. Таким образом, сообщение SEI по pic_timing может включать в себя информацию, указывающую число тактов синхронизации, которое следует ожидать до удаления каждой из множества единиц декодирования из буфера кодированных изображений, когда параметры VUI указывают то, что CPB работает на уровне единицы декодирования. Задержка удаления единицы декодирования может быть идентичной задержкой для каждой единицы декодирования в полезной нагрузке или другой единице данных. В других примерах, различные задержки удаления могут применяться к различным единицам декодирования. Задержка удаления может выражаться с точки зрения числа битов с неявным преобразованием времени для числа битов относительно битовой скорости обработки для применимого синхросигнала.
[0096] Синтаксис сообщения SEI по синхронизации изображений может зависеть от контента набора параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением SEI по синхронизации изображений. Тем не менее, если сообщению SEI по синхронизации изображений единицы доступа на основе мгновенного обновления при декодировании (IDR) не предшествует сообщение SEI по периоду буферизации в идентичной единице доступа, активация ассоциированного набора параметров последовательности (и, для изображений IDR, которые не представляют собой первое изображение в потоке битов, определение того, что кодированное изображение представляет собой изображение IDR) может не возникать до декодирования первой единицы уровня абстракции сети (NAL) кодированного слайса кодированного изображения. Поскольку единица NAL кодированного слайса кодированного изображения следует после сообщения SEI по синхронизации изображений в порядке единиц NAL, могут возникать случаи, в которых декодеру необходимо сохранять первичную байтовую последовательность данных (RBSP), содержащую сообщение SEI по синхронизации изображений, до определения параметров из набора параметров последовательности, который должен активным для кодированного изображения, и затем выполнять синтаксический анализ сообщения SEI по синхронизации изображений. Декодер может сохранять одну или более единиц декодирования видеоданных в непрерывном порядке декодирования в буфере изображений.
[0097] Присутствие сообщения SEI по синхронизации изображений в потоке битов может указываться в одном примере следующим образом: если CpbDpbDelaysPresentFlag равен 1, одно сообщение SEI по синхронизации изображений может присутствовать в каждой единице доступа кодированной видеопоследовательности. В противном случае CpbDpbDelaysPresentFlag равен 0, и сообщения SEI по синхронизации изображений могут не присутствовать ни в одной из единиц доступа кодированной видеопоследовательности.
[0098] В этом примере, элемент num_decoding_units_minus1 синтаксиса плюс 1 может указывать число единиц декодирования в единице доступа, с которой ассоциировано сообщение SEI по синхронизации изображений. Когда sub_pic_cpb_flag равен 0, элемент num_decoding_units_minus1 синтаксиса может не присутствовать, и значение может задаваться или логически выводиться равным 0.
(cpb_removal_delay_length_minus1+1)
[0099] В этом примере, элемент cpb_removal_delay[i] синтаксиса может указывать то, сколько тактов синхронизации следует ожидать после удаления из CPB первой единицы декодирования в единице доступа, ассоциированной с последним сообщением SEI по периоду буферизации в предшествующей единице доступа, до удаления из CPB i-той единицы декодирования в единице доступа, ассоциированной с сообщением SEI по синхронизации изображений. Это значение также может быть использовано для того, чтобы вычислять самое раннее время поступления данных единицы декодирования в CPB для HSS. Элемент синтаксиса может представлять собой код фиксированной длины, длина которого в битах задается посредством cpb_removal_delay_length_minus1+1; cpb_removal_delay[i] может представлять собой остаток счетчика по модулю 2.
[0100] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента cpb_removal_delay[i] синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением SEI по синхронизации изображений. Тем не менее, cpb_removal_delay[i] может указывать число тактов синхронизации относительно времени удаления первой единицы декодирования в предшествующей единице доступа, содержащей сообщение SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0101] В этом примере, элемент dpb_output_delay синтаксиса может быть использован для того, чтобы вычислять время вывода из DPB изображения. Элемент dpb_output_delay синтаксиса может указывать то, сколько тактов синхронизации следует ожидать после удаления последней единицы декодирования в единице доступа из CPB до того, как декодированное изображение выводится из DPB.
[0102] Изображение может не удаляться из 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.
[0103] Время вывода, извлекаемое из dpb_output_delay любого изображения, которое выводится из декодера с соответствием по синхронизации вывода, может предшествовать времени вывода, извлекаемому из dpb_output_delay всех изображений в любой последующей кодированной видеопоследовательности в порядке декодирования. Порядок вывода изображений, установленный посредством значений этого элемента синтаксиса, может быть порядком, идентичным порядку, установленному посредством значений PicOrderCnt. Для изображений, которые не выводятся посредством процесса «обновления», поскольку они предшествуют, в порядке декодирования, изображению IDR с no_output_of_prior_pics_flag, равным 1 или логически выведенным равным 1, времена вывода, извлекаемые из dpb_output_delay, могут увеличиваться с увеличением значения PicOrderCnt относительно всех изображений в идентичной кодированной видеопоследовательности. В альтернативном примере, новое сообщение SEI, которое может называться "сообщением SEI по синхронизации единиц декодирования", ассоциированным с единицей декодирования, может указываться, чтобы передавать задержку удаления из CPB для ассоциированной единицы декодирования.
[0104] Таким образом, посредством реализации любой комбинации примерных определений, примерной работы HRD, примерной работы буфера кодированных изображений, примерной синхронизации поступления потока битов, примерной синхронизации удаления единиц декодирования, примерного декодирования единицы декодирования, примерной работы буфера декодированных изображений, примерного удаления изображений из буфера декодированных изображений, примерного вывода изображений и примерной пометки и хранения текущего декодированного изображения и примерного синтаксиса и семантики для сигнализации режима поведения CPB, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0105] В качестве альтернативы технологиям, описанным выше, единица декодирования может задаваться следующим образом: "Единица доступа или поднабор единицы доступа. Если SubPicCpbFlag равен 0, единица декодирования представляет собой единицу доступа. В противном случае, единица декодирования включает в себя одну или более единиц NAL VCL и ассоциированных единиц NAL не-VCL в единице доступа. Для первой единицы NAL VCL в единице доступа ассоциированные единицы NAL не-VCL представляют собой единицы NAL не-VCL в единице доступа и перед первой единицей NAL VCL находятся единицы NAL заполняющих данных, если таковые имеются, идущие сразу после первой единицы NAL не-VCL. Для единицы NAL VCL, которая не представляет собой первую единицу NAL VCL в единице доступа, ассоциированные единицы NAL не-VCL представляют собой единицы NAL заполняющих данных, если таковые имеются, идущие сразу после единицы NAL не-VCL".
[0106] В этом примере, операции гипотетического эталонного декодера (HRD) могут обобщаться следующим образом. Размер CPB (число битов) является CpbSize[SchedSelIdx]. Размер DPB (число буферов хранения изображений) для временного слоя X может быть max_dec_pic_buffering[X]+1 для каждого X в диапазоне от 0 до max_temporal_layers_minus1, включительно. Переменная SubPicCpbPreferredFlag может быть использована в качестве флага предпочтительного буфера кодированных изображений для субизображений и может либо указываться посредством внешнего средства, либо, если не указывается посредством внешнего средства, задаваться равной 0. Отдельный флаг sub_pic_cpb_params_present_flag присутствия параметров кодированных изображений для субизображений может быть использован для того, чтобы сигнализировать то, доступны или нет параметры, необходимые для кодирования поднаборов одной или более единиц доступа. Один флаг SubPicCpbFlag буфера кодированных изображений для субизображений может указывать то, являются или нет как флаг предпочтительного буфера кодированных изображений для субизображений, так и флаг присутствия параметров кодированных изображений для субизображений положительными либо задаются или нет равными 1. Видеокодер может использовать этот флаг SubPicCpbFlag буфера кодированных изображений для субизображений для того, чтобы определять то, следует кодировать единицы доступа видеоданных или кодировать поднаборы одной или более единиц доступа, таких как субизображения, видеоданных по мере того, как видеоданные удаляются из CPB.
[0107] Переменная SubPicCpbFlag может извлекаться следующим образом:
SubPicCpbFlag=SubPicCpbPreferredFlag&&sub_pic_cpb_params_present_flag (C-1)
[0108] Если SubPicCpbFlag равен 0, CPB может работать на уровне единицы доступа, и каждая единица декодирования может представлять собой единицу доступа. В противном случае, CPB может работать на уровне субизображения, и каждая единица декодирования может представлять собой поднабор единицы доступа.
[0109] Видеодекодер 30/108 может определять то, что одна или более единиц декодирования содержат единицы доступа, посредством определения того, что флаг предпочтительного буфера кодированных изображений для субизображений (например, SubPicCpbPreferredFlag,) имеет значение ноль, или что флаг присутствия параметров буфера кодированных изображений для субизображений (например, sub_pic_cpb_params_present_flag) имеет значение ноль.
[0110] HRD (например, видеокодер 20 и/или видеодекодер 30) может работать следующим образом. Данные, ассоциированные с единицами декодирования, которые протекают в CPB согласно указанному плану поступления, могут доставляться посредством HSS. В одном примере, данные, ассоциированные с каждой единицей декодирования, могут удаляться и декодироваться мгновенно посредством процесса мгновенного декодирования во времена удаления из CPB. Каждое декодированное изображение может быть размещено в DPB. Декодированное изображение может удаляться из DPB в более позднее из времени вывода из DPB или времени, когда оно становится больше ненужным для ссылки внешнего прогнозирования.
[0111] Арифметические операции, описанные в этом раскрытии, могут выполняться с вещественными значениями, так что ошибки округления не распространяются. Например, число битов в CPB непосредственно до или после удаления единицы декодирования не обязательно может быть целым числом.
c
[0112] Переменная t может извлекаться следующим образом и называться "тактом синхронизации":
c
t=num_units_in_tick÷time_scale (C-1)
[0113] Следующее может указываться для выражения ограничений в этом примере технологий этого раскрытия:
пусть единица n доступа является n-ной единицей доступа в порядке декодирования, при этом первая единица доступа является единицей 0 доступа;
пусть изображение n является кодированным изображением или декодированным изображением единицы n доступа;
пусть единица m декодирования является m-той единицей декодирования в порядке декодирования, при этом первая единица декодирования является единицей 0 декодирования.
[0114] Операции буфера кодированных изображений (CPB) могут задаваться следующим образом. Спецификацию в этом примере могут применяться независимо к каждому набору параметров CPB, который присутствует, а также к точкам соответствия типа I и типа II.
[0115] Относительно синхронизации поступления потока битов, HRD может быть инициализирован в любом из сообщений SEI по периоду буферизации. До инициализации CPB может быть пустым. После инициализации, HRD может не быть инициализирован снова посредством последующих сообщений SEI по периоду буферизации.
[0116] Каждая единица доступа может называться "соответствующей единицей n доступа", где число n идентифицирует конкретную единицу доступа. Единица доступа, которая ассоциирована с сообщением SEI по периоду буферизации, которое инициализирует CPB, может называться "единицей 0 доступа". Значение n может увеличиваться на 1 для каждой следующей единицы доступа в порядке декодирования.
[0117] Каждая единица декодирования может называться, соответственно, "единицей m декодирования", где номер m идентифицирует конкретную единицу декодирования. Первая единица декодирования в порядке декодирования в единице 0 доступа может называться "единицей 0 декодирования". Значение m может увеличиваться на 1 для каждой последующей единицы декодирования в порядке декодирования.
[0118] В этом примере, если переменная SubPicCpbFlag равна 0, переменная InitCpbRemovalDelay[SchedSelIdx] может задаваться равной initial_cpb_removal_delay[SchedSelIdx] ассоциированного сообщения SEI по периоду буферизации, и InitCpbRemovalDelayOffset[SchedSelIdx] может задаваться равной initial_cpb_removal_delay_offset[SchedSelIdx] ассоциированного сообщения SEI по периоду буферизации. В противном случае, переменная InitCpbRemovalDelay[SchedSelIdx] может задаваться равной initial_du_cpb_removal_delay[SchedSelIdx] ассоциированного сообщения SEI по периоду буферизации, и InitCpbRemovalDelayOffset[SchedSelIdx] может задаваться равной initial_du_cpb_removal_delay_offset[SchedSelIdx] ассоциированного сообщения SEI по периоду буферизации.
ai
[0119] Дополнительно, время, в которое первый бит единицы n доступа начинает поступать в CPB, может называться "начальным временем t(n) поступления". Начальное время поступления единиц декодирования может извлекаться следующим образом:
ai
если единица декодирования представляет собой единицу 0 декодирования, t(0)=0;
в противном случае (единица декодирования представляет собой единицу m декодирования с m>0), может применяться следующее:
если cbr_flag[SchedSelIdx] равен 1, начальное время поступления для единицы m декодирования может быть равным конечному времени поступления (которое извлекается ниже) единицы m-1 доступа, т.е.:
ai
af
t(m)=t(m-1), (C-2)
в противном случае (cbr_flag[SchedSelIdx] равен 0), начальное время поступления для единицы m декодирования может извлекаться посредством следующего:
ai
af
ai,earliest
t(m)=Max(t(m-1), t(m)), (C-3)
ai,earliest
где t(m) может извлекаться следующим образом:
ai,earliest
если единица n декодирования не представляет собой первую единицу декодирования последующего периода буферизации, t(m) может извлекаться следующим образом:
ai,earliest
r,n
t(m)=t(m)-(InitCpbRemovalDelay[SchedSelIdx]+InitCpbRemovalDelayOffset[SchedSelIdx])÷90000, (C-4)
r,n
причем t(m) является номинальным временем удаления единицы m декодирования из CPB;
ai,earliest
в противном случае (единица m декодирования представляет собой первую единицу декодирования последующего периода буферизации), t(m) может извлекаться следующим образом:
ai,earliest
r,n
t(m)=t(m)-(InitCpbRemovalDelay[SchedSelIdx]÷90000) (C-5)
af
[0120] Конечное время t поступления для единицы m декодирования может извлекаться посредством следующего:
af
ai
t(m)=t(m)+b(m)÷BitRate[SchedSelIdx], (C-6)
где b(m) является размером в битах единицы m декодирования, подсчета битов единиц NAL VCL и единиц NAL заполняющих данных для точки соответствия типа I или всех битов потока битов типа II для точки соответствия типа II.
[0121] В некоторых примерах, значения SchedSelIdx, BitRate[SchedSelIdx] и CpbSize[SchedSelIdx] могут ограничиваться следующим образом:
если контент активных наборов параметров последовательности для единицы доступа, содержащей единицу m декодирования и предыдущую единицу доступа, отличается, HSS может выбирать значение SchedSelIdx1 SchedSelIdx из числа значений SchedSelIdx, предоставленных в активном наборе параметров последовательности, для единицы доступа, содержащей единицу m декодирования, которая приводит к BitRate[SchedSelIdx1] или CpbSize[SchedSelIdx1] для единицы доступа, содержащей единицу m декодирования. Значение BitRate[SchedSelIdx1] или CpbSize[SchedSelIdx1] может отличаться от значения BitRate[SchedSelIdx0] или CpbSize[SchedSelIdx0] для значения SchedSelIdx0 SchedSelIdx, которое использовано для предыдущей единицы доступа;
в противном случае, HSS может продолжать работать с предыдущими значениями SchedSelIdx, BitRate[SchedSelIdx] и CpbSize[SchedSelIdx].
[0122] Когда HSS выбирает значения BitRate[SchedSelIdx] или CpbSize[SchedSelIdx], которые отличаются от значений предыдущей единицы доступа, может применяться следующее:
ai
переменная BitRate[SchedSelIdx] может активироваться во время t(n);
переменная CpbSize[SchedSelIdx] может активироваться следующим образом:
ai
если новое значение CpbSize[SchedSelIdx] превышает старый размер CPB, оно может активироваться во время t(n);
в противном случае новое значение CpbSize[SchedSelIdx] может активироваться во время удаления из CPB последней единицы декодирования единицы доступа, содержащей единицу m декодирования.
ai
af
[0123] Когда переменная SubPicCpbFlag равна 1, начальное время t(n) поступления в CPB единицы n доступа может задаваться равным начальному времени поступления в CPB первой единицы декодирования в единице n доступа, и конечное время t(n) поступления в CPB единицы n доступа может задаваться равным конечному времени поступления в CPB последней единицы декодирования в единице n доступа. Когда SubPicCpbFlag равен 0, каждая единица декодирования может представлять собой единицу доступа, так что начальные и конечные времена поступления в CPB единицы n доступа могут представлять собой начальные и конечные времена поступления в CPB единицы m декодирования.
[0124] Нижеприведенное пояснение предоставляет пример для синхронизации удаления единицы декодирования и декодирования единицы декодирования. Если SubPicCpbFlag равен 0, переменная CpbRemovalDelay(m) может задаваться равной значению cpb_removal_delay, указываемого в сообщении SEI по синхронизации изображений, ассоциированном с единицей доступа, которая представляет собой единицу m декодирования. В противном случае, переменная CpbRemovalDelay(m) может задаваться равной значению du_cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит единицу m декодирования.
[0125] Когда единица m декодирования представляет собой единицу декодирования с m, равным 0 (первую единицу декодирования единицы доступа, которая инициализирует HRD), номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
r,n
t(0)=InitCpbRemovalDelay[SchedSelIdx]÷90000 (C-7)
[0126] Когда единица m декодирования представляет собой первую единицу декодирования первой единицы доступа периода буферизации, который не инициализирует HRD, номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
r,n
r,n
b
c
t(m)=t(m)+t*CpbRemovalDelay(m), (C-8)
r,n
b
где t(m) является номинальным временем удаления первой единицы декодирования предыдущего периода буферизации.
b
r,n
[0127] Когда единица m декодирования представляет собой первую единицу декодирования периода буферизации, m может задаваться равным m во время t(m) удаления единицы m декодирования.
r,n
[0128] Номинальное время t(m) удаления единицы m декодирования, которая не представляет собой первую единицу декодирования периода буферизации, может задаваться следующим образом:
r,n
r,n
b
c
t(m)=t(m)+t*CpbRemovalDelay(m), (C-9)
r,n
b
где t(m) является номинальным временем удаления первой единицы декодирования текущего периода буферизации.
[0129] Время удаления единицы m декодирования может указываться следующим образом:
r,n
af
Если low_delay_hrd_flag равен 0, или t(m)>=t(m), время удаления единицы m декодирования может указываться посредством следующего:
r
r,n
t(m)=t(m) (C-10)
r,n
af
В противном случае (low_delay_hrd_flag равен 1, и t(m)<t(m)), и время удаления единицы m декодирования может указываться посредством следующего:
r
r,n
c
af
r,n
c
t(m)=t(m)+t*Ceil((t(m)-t(m))÷t) (C-11)
Второй случай, в этом примере, указывает то, что размер b(m) единицы m декодирования является настолько большим, что он предотвращает удаление в номинальное время удаления.
r,n
r
[0130] Когда SubPicCpbFlag равен 1, номинальное время t(n) удаления из CPB единицы n доступа может задаваться равным нормальному времени удаления из CPB последней единицы декодирования в единице n доступа; время t(n) удаления из CPB единицы n доступа может задаваться равным времени удаления из CPB последней единицы декодирования в единице n доступа. Когда SubPicCpbFlag равен 0, каждая единица m декодирования является единицей n доступа, в этом примере, и следовательно, номинальное время удаления из CPB и время удаления из CPB единицы n доступа являются номинальным временем удаления из CPB и временем удаления из CPB единицы m декодирования. Во время удаления из CPB единицы m декодирования, в некоторых примерах, может быть мгновенно декодирована единица декодирования.
[0131] В этом примере, буфер декодированных изображений (DPB) может работать следующим образом. Буфер декодированных изображений может содержать один или более буферов хранения изображений. Каждый из буферов хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. До инициализации DPB может быть пустым (переменная заполненности DPB может задаваться равной нулю). Следующие этапы этого примера могут происходить в перечисленной последовательности.
[0132] Во-первых, изображения могут удаляться из DPB. Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка слайса для первого слайса текущего изображения) может происходить мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение) и может продолжаться следующим образом. Может активироваться процесс декодирования для набора опорных изображений, как указано в подразделе 8.3.2 HEVC WD6. Если текущее изображение представляет собой изображение IDR, может применяться следующее: когда изображение IDR не представляет собой первое декодированное изображение IDR, и значение pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемое из активного набора параметров последовательности, отличается от значения pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемого из набора параметров последовательности, который является активным для предшествующего изображения, соответственно, no_output_of_prior_pics_flag (т.е. флаг отсутствия вывода предшествующих изображений) может логически выводиться равным 1 посредством HRD или задаваться равным 1 для собственной обработки посредством HRD, независимо от фактического значения no_output_of_prior_pics_flag. Реализации декодера могут пытаться обрабатывать изменения размера изображения или размера DPB более корректно по сравнению с HRD в отношении изменений в pic_width_in_luma_samples или pic_height_in_luma_samples.
[0133] Когда no_output_of_prior_pics_flag равен 1 или логически выводится равным 1, все буферы хранения изображений в DPB могут очищаться без вывода изображений, которые они содержат, и заполненность DPB может задаваться равной 0. (Последующая обработка, которая может выполняться, если no_output_of_prior_pics_flag имеет значение, которое не равно 1, дополнительно описывается ниже). Все изображения k в DPB, для которых следующие условия являются истинными, могут удаляться из DPB:
изображение k помечено как "не используется для ссылки";
o,dpb
r
изображение k имеет PicOutputFlag, равный 0, или его время вывода из DPB меньше или равно времени удаления из CPB первой единицы декодирования (обозначается в качестве единицы m декодирования) текущего изображения n; т.е. t(k)<=t(m).
r
[0134] Когда изображение удаляется из DPB, заполненность DPB может быть уменьшена на единицу. Для вывода изображений следующее может происходить мгновенно во время t(n) удаления из CPB единицы n доступа:
[0135] Изображение n может считаться декодированным после того, как декодируется последняя единица декодирования изображения.
o,dpb
[0136] Когда изображение n имеет PicOutputFlag, равный 1, его время t(n) вывода из DPB может извлекаться посредством следующего:
o,dpb
r
c
t(n)=t(n)+t*dpb_output_delay(n), (C-12)
где dpb_output_delay(n) является значением dpb_output_delay, указываемого в сообщении SEI по синхронизации изображений, ассоциированном с единицей n доступа.
[0137] Вывод текущего изображения может указываться следующим образом:
o,dpb
r
если PicOutputFlag равен 1, и t(n)=t(n), текущее изображение может выводиться;
в противном случае, если PicOutputFlag равен 0, текущее изображение может не выводиться, но может быть сохранено в DPB;
o,dpb
r
o,dpb
o,dpb
o,dpb
в противном случае (PicOutputFlag равен 1, и t(n)>t(n)), текущее изображение может выводиться позднее и может быть сохранено в DPB (как указано в подразделе C.3.3 HEVC WD6, модифицированном посредством этого раскрытия) и может выводиться во время t(n), если только не указано то, что оно не должно выводиться, посредством декодирования или логического вывода no_output_of_prior_pics_flag, равного 1, во время, которое предшествует t(n). Другими словами, текущее изображение может быть сохранено в DPB и может выводиться позднее, например, во время t(n), если флаг отсутствия вывода предшествующих изображений не равен 1.
[0138] При выводе, изображение может быть кадрировано, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности.
o,dpb
[0139] Когда изображение n представляет собой изображение, которое выводится и не является последним изображением потока битов, который выводится, значение временного интервала Δt(n) вывода из DPB может задаваться следующим образом:
o,dpb
o,dpb
o,dpb
Δt(n)=t(nn)-t(n), (C-13)
o,dpb
где nn может указывать изображение, которое следует после изображения n в порядке вывода и имеет PicOutputFlag, равный 1, так что временной интервал Δt(n) вывода из DPB может задаваться как разность между временем вывода из DPB последующего изображения после изображения n в порядке вывода и временем вывода из DPB изображения n.
r
[0140] Для пометки и хранения текущего декодированного изображения следующее может быть реализовано мгновенно во время t(n) удаления из CPB единицы n доступа: текущее декодированное изображение может быть сохранено в DPB в пустом буфере хранения изображений, и заполненность DPB может увеличиваться на единицу; если текущее изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки", в противном случае оно может помечаться как "не используется для ссылки".
[0141] Для работы относительно порядка вывода DPB буфер декодированных изображений может содержать один или более буферов хранения изображений. Каждый из буферов хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. При инициализации HRD, DPB может быть пустым. Следующие этапы могут происходить в перечисленном порядке.
[0142] Изображения могут удаляться из DPB следующим образом. Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка слайса для первого слайса текущего изображения) может быть реализовано мгновенно, когда первая единица декодирования единицы доступа, содержащей текущее изображение, удаляется из CPB, и может продолжаться следующим образом.
[0143] Может активироваться процесс декодирования для набора опорных изображений, как указано в подразделе 8.3.4.3 HEVC WD6, модифицированном согласно этому раскрытию (как частично описано выше и как дополнительно описано следующим образом).
[0144] Если текущее изображение представляет собой изображение IDR, может применяться следующее:
когда изображение IDR не представляет собой первое декодированное изображение IDR, и значение pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемое из активного набора параметров последовательности, отличается от значения pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering, извлекаемого из набора параметров последовательности, который является активным для предшествующего изображения, соответственно, no_output_of_prior_pics_flag может задаваться или логически выводиться равным 1 посредством HRD, независимо от фактического значения no_output_of_prior_pics_flag. Реализации декодера могут пытаться обрабатывать изменения в значении pic_width_in_luma_samples или pic_height_in_luma_samples, или max_dec_pic_buffering более корректно по сравнению с HRD;
когда no_output_of_prior_pics_flag равен 1 или логически выводится равным 1, все буферы хранения изображений в DPB могут очищаться без вывода изображений, которые они содержат;
в противном случае, буферы хранения изображений, содержащие изображение, которые помечаются как "не требуется для вывода" и "не используется для ссылки", могут очищаться (без вывода).
[0145] Когда любое из следующих условий является истинным, процесс «обновления», указываемый в подразделе C.5.2.1 HEVC WD6, модифицированном посредством этого раскрытия, может многократно активироваться до тех пор, пока не будет пустой буфер хранения изображений, чтобы сохранять текущее декодированное изображение:
число изображений в DPB, которые помечаются как "требуется для вывода", превышает число изображений переупорядочивания в текущем временном слое, т.е. num_reorder_pics[temporal_id]; или
число изображений в DPB с числом изображений в DPB со значениями temporal_id идентификаторов временных слоев, меньшими или равными значению temporal_id идентификатора временного слоя текущего изображения, равно максимальному значению буферизации изображений текущего временного слоя плюс единица, т.е. max_dec_pic_buffering[temporal_id]+1; или
когда текущее изображение представляет собой изображение IDR, для которого флаг no_output_of_prior_pics_flag отсутствия вывода предшествующих изображений имеет значение, не равное 1 и не выведенное логически равным 1.
[0146] Могут выполняться следующие этапы: буферы хранения изображений, содержащие изображение, которые помечаются как "не требуется для вывода" и "не используется для ссылки", могут очищаться (без вывода); и все непустые буферы хранения изображений в DPB могут очищаться посредством повторной активации процесса «обновления», указываемого ниже.
[0147] Следовательно, процесс «обновления» может активироваться в любом из следующих случаев:
текущее изображение представляет собой изображение IDR, и no_output_of_prior_pics_flag не равен 1 и не задается или логически выводится равным 1, как указано в подразделе C.5.2 HEVC WD6, модифицированном посредством этого раскрытия; или
число изображений в DPB, которые помечаются "требуется для вывода", превышает число изображений переупорядочивания в текущем временном слое, т.е. num_reorder_pics[temporal_id], как указано в подразделе C.5.2 HEVC WD6, модифицированном посредством этого раскрытия; или
число изображений в DPB с temporal_id, меньшим или равным значению temporal_id идентификатора временного слоя текущего изображения, равно максимальному значению буферизации изображений текущего временного слоя плюс единица, т.е. max_dec_pic_buffering[temporal_id]+1, как указано в подразделе C.5.2 HEVC WD6, модифицированном посредством этого раскрытия.
[0148] Процесс «обновления» может включать в себя следующие упорядоченные этапы:
1. Изображение, которое является первым для вывода, может быть выбрано в качестве изображения, имеющего наименьшее значение PicOrderCntVal из всех изображений в DPB, помеченных как "требуется для вывода".
2. Изображение кадрируется, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности для изображения, кадрированное изображение может выводиться, и изображение может помечаться как "не требуется для вывода".
3. Если буфер хранения изображений, который включает в себя изображение, которое кадрировано и выведено, содержит изображение, помеченное как "не используется для ссылки", буфер хранения изображений может опустошаться.
[0149] Следующее может происходить мгновенно для декодирования, маркировки и хранения изображений, когда последняя единица декодирования единицы n доступа, содержащей текущее изображение, удаляется из CPB.
[0150] Текущее изображение может считаться декодированным после того, как декодируется последняя единица декодирования изображения. Текущее декодированное изображение может быть сохранено в пустом буфере хранения изображений в DPB, и может применяться следующее:
если текущее декодированное изображение имеет PicOutputFlag, равный 1, оно может помечаться как "требуется для вывода";
в противном случае (текущее декодированное изображение имеет PicOutputFlag, равный 0), оно может помечаться как "не требуется для вывода".
[0151] Если текущее декодированное изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки"; в противном случае (текущее декодированное изображение представляет собой неопорное изображение), оно может помечаться как "не используется для ссылки".
[0152] Следовательно, процесс обновления может включать в себя: выбор изображения, имеющего наименьшее значение номера в порядке изображений (POC) из изображений в DPB, которые помечаются как "требуется для вывода", в качестве выбранного изображения; кадрирование выбранного изображения, как указано в активном наборе параметров последовательности для выбранного изображения, за счет этого формируя кадрированное изображение на основе выбранного изображения; вывод кадрированного изображения; и пометка выбранного изображения как "не требуется для вывода".
[0153] Элементы синтаксиса могут быть использованы для того, чтобы сигнализировать поведение CPB, с использованием семантики, заданной ниже. Синтаксис параметров VUI и семантика могут быть изменены таким образом, что они являются такими, как показано в нижеприведенной таблице 3 (семантика существующих элементов синтаксиса не изменяется относительно HEVC WD6, в этом примере):
Таблица 3
vui_parameters() {
Дескриптор
aspect_ratio_info_present_flag
u(1)
if(aspect_ratio_info_present_flag) {
aspect_ratio_idc
u(8)
if(aspect_ratio_idc = = Extended_SAR) {
sar_width
u(16)
sar_height
u(16)
}
}
overscan_info_present_flag
u(1)
if(overscan_info_present_flag)
overscan_appropriate_flag
u(1)
video_signal_type_present_flag
u(1)
if(video_signal_type_present_flag) {
video_format
u(3)
video_full_range_flag
u(1)
colour_description_present_flag
u(1)
if(colour_description_present_flag) {
colour_primaries
u(8)
transfer_characteristics
u(8)
matrix_coefficients
u(8)
}
}
chroma_loc_info_present_flag
u(1)
if(chroma_loc_info_present_flag) {
chroma_sample_loc_type_top_field
ue(v)
chroma_sample_loc_type_bottom_field
ue(v)
}
neutral_chroma_indication_flag
u(1)
field_indication_presence_flag
u(1)
timing_info_present_flag
u(1)
if(timing_info_present_flag) {
num_units_in_tick
u(32)
time_scale
u(32)
fixed_pic_rate_flag
u(1)
}
nal_hrd_parameters_present_flag
u(1)
if(nal_hrd_parameters_present_flag)
hrd_parameters
vcl_hrd_parameters_present_flag
u(1)
if(vcl_hrd_parameters_present_flag)
hrd_parameters
if(nal_hrd_parameters_present_flag | | vcl_hrd_parameters_present_flag) {
sub_pic_cpb_params_present_flag
u(1)
low_delay_hrd_flag
u(1)
}
bitstream_restriction_flag
u(1)
if(bitstream_restriction_flag) {
motion_vectors_over_pic_boundaries_flag
u(1)
max_bytes_per_pic_denom
ue(v)
max_bits_per_mincu_denom
ue(v)
log2_max_mv_length_horizontal
ue(v)
log2_max_mv_length_vertical
ue(v)
}
}
[0154] В примере таблицы 3, параметры VUI включают в себя добавленный флаг sub_pic_cpb_params_present_flag относительно традиционного HEVC. Семантика для этого флага может задаваться следующим образом: sub_pic_cpb_params_present_flag, равный 1, может указывать то, что параметры задержки удаления из CPB на уровне субизображения присутствуют, и CPB может работать на уровне единицы доступа или на уровне субизображения. Переменная sub_pic_cpb_flag, равная 0, может указывать то, что параметры задержки удаления из CPB на уровне субизображения не присутствуют, и CPB должен работать на уровне единицы доступа. Когда sub_pic_cpb_params_present_flag не присутствует, его значение может задаваться или логически выводиться равным 0.
[0155] Элементы синтаксиса также могут быть использованы для того, чтобы сигнализировать времена удаления из CPB единиц декодирования, с использованием семантики, описанной ниже. В этом примере, элементы синтаксиса могут быть переданы в служебных сигналах в сообщении SEI по периоду буферизации, например, в соответствии с примером таблицы 4:
Таблица 4
buffering_period(payloadSize) {
Дескриптор
seq_parameter_set_id
ue(v)
if(NalHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_Offset[SchedSelIdx]
u(v)
if(sub_pic_cpb_flag) {
initial_du_cpb_removal_delay[SchedSelIdx]
u(v)
initial_du_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
if(VclHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_Offset[SchedSelIdx]
u(v)
if(sub_pic_cpb_flag) {
initial_du_cpb_removal_delay[SchedSelIdx]
u(v)
initial_du_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
}
[0156] В примере таблицы 4, сообщение SEI по периоду буферизации включает в себя добавленное условное выражение относительно традиционного HEVC, которое дополнительно включает в себя, когда sub_pic_cpb_flag является истинным, два элемента синтаксиса добавляются, initial_du_cpb_removal_delay[SchedSelIdx] и initial_du_cpb_removal_delay_offset[SchedSelIdx]. Это условное выражение и добавленные элементы синтаксиса могут добавляться в одно или в оба из условных выражений для того, когда NalHrdBpPresentFlag является истинным, и/или когда VclHardBpPresentFlag является истинным.
[0157] Таблица 5 предоставляет альтернативный пример, в котором другое сообщение SEI задается, чтобы сигнализировать начальную задержку удаления из CPB и смещение начальной задержки удаления из CPB для работы CPB на уровне субизображения:
Таблица 5
du_buffering_period(payloadSize) {
Дескриптор
seq_parameter_set_id
ue(v)
if(NalHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_du_cpb_removal_delay[SchedSelIdx]
u(v)
initial_du_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
if(VclHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_du_cpb_removal_delay[SchedSelIdx]
u(v)
initial_du_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
[0158] В примере вышеприведенной таблицы 4, когда NalHrdBpPresentFlag или VclHrdBpPresentFlag равен 1, сообщение SEI по периоду буферизации может быть ассоциировано с любой единицей доступа в потоке битов, и сообщение SEI по периоду буферизации может быть ассоциировано с каждой единицей доступа IDR, с каждой единицей доступа CRA и с каждой единицей доступа, ассоциированной с сообщением SEI для точки восстановления. В некоторых вариантах применения, может требоваться частое присутствие сообщения SEI по периоду буферизации. В некоторых примерах, период буферизации может указываться в качестве набора единиц доступа между двумя экземплярами сообщения SEI по периоду буферизации в порядке декодирования.
[0159] В примерах вышеприведенных таблиц 4 и 5, переменная seq_parameter_set_id может указывать набор параметров последовательности, который содержит HRD-атрибуты последовательности. Значение seq_parameter_set_id может быть равным значению seq_parameter_set_id в наборе параметров изображения, на который ссылается первичное кодированное изображение, ассоциированное с сообщением SEI по периоду буферизации. В некоторых примерах, значение seq_parameter_set_id может быть в диапазоне от 0 до 31, включительно.
[0160] В примере вышеприведенной таблицы 4, 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 кГц.
[0161] В примере вышеприведенной таблицы 4, элемент 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), указываемого в Приложении C HEVC WD6. По всей кодированной видеопоследовательности сумма initial_cpb_removal_delay[SchedSelIdx] и initial_cpb_removal_delay_offset[SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0162] В примерах вышеприведенных таблиц 4 и 5, элемент 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 кГц.
[0163] В примерах вышеприведенных таблиц 4 и 5, элемент initial_du_cpb_removal_delay_offset[SchedSelIdx] синтаксиса может быть использован для SchedSelIdx-того CPB в комбинации с cpb_removal_delay для того, чтобы указывать начальное время доставки единиц декодирования в CPB. В этом примере, элемент initial_cpb_removal_delay_offset[SchedSelIdx] синтаксиса может быть в единицах синхросигнала в 90 кГц. Элемент initial_du_cpb_removal_delay_offset[SchedSelIdx] синтаксиса может представлять собой код фиксированной длины, длина которого в битах задается посредством initial_cpb_removal_delay_length_minus1+1. В этом примере, этот элемент синтаксиса может не быть использован посредством декодеров и может требоваться только для планировщика доставки (HSS), указываемого в Приложении C HEVC WD6.
[0164] По всей кодированной видеопоследовательности сумма initial_du_cpb_removal_delay[SchedSelIdx] и initial_du_cpb_removal_delay_offset[SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0165] Нижеприведенная таблица 6 предоставляет примерный синтаксис сообщений SEI по синхронизации изображений:
Таблица 6
pic_timing(payloadSize) {
Дескриптор
if(CpbDpbDelaysPresentFlag) {
cpb_removal_delay
u(v)
dpb_output_delay
u(v)
if(sub_pic_cpb_flag) {
num_decoding_units_minus1
ue(v)
for(i=0; i<=num_decoding_units_minus1; i++) {
num_nalus_in_du_minus1[i]
ue(v)
du_cpb_removal_delay[i]
u(v)
}
}
}
}
[0166] В этом примере, сообщение SEI по синхронизации изображений включает в себя добавленное условное выражение для sub_pic_cpb_flag, которое, когда является истинным, сигнализирует элемент num_decoding_units_minus1 синтаксиса, и цикл for, который сигнализирует, для каждой из единиц декодирования, соответствующие numb_nalus_in_du_minus1 и du_cpb_removal_delay. Альтернативно, преобразование единиц NAL в каждую единицу декодирования может быть сигнализировано с использованием другого средства, например, посредством включения идентификатора единицы декодирования для каждой единицы NAL VCL, например, в заголовке единицы NAL, в заголовке слайса или в новом сообщении SEI. Идентификатор декодирования для каждой единицы NAL не-VCL может быть идентичным ассоциированной единице NAL VCL.
[0167] Синтаксис сообщения SEI по синхронизации изображений в примере таблицы 6 может зависеть от контента набора параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением SEI по синхронизации изображений. Тем не менее, если сообщению SEI по синхронизации изображений единицы доступа IDR не предшествует сообщение SEI по периоду буферизации в идентичной единице доступа, активация ассоциированного набора параметров последовательности (и, для изображений IDR, которые не представляют собой первое изображение в потоке битов, определение того, что кодированное изображение представляет собой изображение IDR) может не возникать до декодирования первой единицы NAL кодированного слайса кодированного изображения. Поскольку единица NAL кодированного слайса кодированного изображения может следовать после сообщения SEI по синхронизации изображений в порядке единиц NAL, здесь могут возникать случаи, в которых декодер сохраняет RBSP, содержащую сообщение SEI по синхронизации изображений, до определения параметров параметра последовательности, который должен быть активным для кодированного изображения, и затем выполняет синтаксический анализ сообщения SEI по синхронизации изображений.
[0168] Присутствие сообщения SEI по синхронизации изображений, согласно примеру таблицы 6, в потоке битов может указываться следующим образом.
Если CpbDpbDelaysPresentFlag равен 1, одно сообщение SEI по синхронизации изображений может присутствовать в каждой единице доступа кодированной видеопоследовательности;
В противном случае (CpbDpbDelaysPresentFlag равен 0), сообщения SEI по синхронизации изображений не должны присутствовать ни в одной из единиц доступа кодированной видеопоследовательности.
(cpb_removal_delay_length_minus1+1)
[0169] Переменная cpb_removal_delay может указывать то, сколько тактов синхронизации (см. подраздел E.2.1 HEVC WD6) следует ожидать после удаления из CPB единицы доступа, ассоциированной с последним сообщением SEI по периоду буферизации в предшествующей единице доступа, до удаления из буфера данных единицы доступа, ассоциированных с сообщением SEI по синхронизации изображений. Это значение также может быть использовано для того, чтобы вычислять самое раннее время поступления данных единицы доступа в CPB для HSS, как указано в приложении C HEVC WD6. Элемент синтаксиса может представлять собой код фиксированной длины, длина которого в битах задается посредством cpb_removal_delay_length_minus1+1; cpb_removal_delay может быть остатком счетчика по модулю 2. Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента cpb_removal_delay синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для первичного кодированного изображения, ассоциированного с сообщением SEI по синхронизации изображений. Тем не менее, cpb_removal_delay может указывать число тактов синхронизации относительно времени удаления предшествующей единицы доступа, содержащей сообщение SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0170] Переменная dpb_output_delay может быть использована для того, чтобы вычислять время вывода из DPB изображения. Эта переменная может указывать то, сколько тактов синхронизации следует ожидать после удаления последней единицы декодирования в единице доступа из CPB до того, как декодированное изображение выводится из DPB (см. подраздел C.2 HEVC WD6). В этом примере, изображение может не удаляться из DPB во время вывода, когда оно по-прежнему помечается как "используется для кратковременной ссылки" или "используется для долговременной ссылки". В этом примере, только одна переменная dpb_output_delay может указываться для декодированного изображения.
[0171] Длина элемента dpb_output_delay синтаксиса может быть задана в битах посредством dpb_output_delay_length_minus1+1. Когда max_dec_pic_buffering[max_temporal_layers_minus1] равен 0, dpb_output_delay также может быть равным 0.
[0172] Время вывода, извлекаемое из dpb_output_delay любого изображения, которое выводится из декодера с соответствием по синхронизации вывода, как указано в подразделе C.2 HEVC WD6, модифицированном посредством этого раскрытия, может предшествовать времени вывода, извлекаемому из dpb_output_delay всех изображений в любой последующей кодированной видеопоследовательности в порядке декодирования.
[0173] Порядок вывода изображений, установленный посредством значений этого элемента синтаксиса, может быть порядком, идентичным порядку, установленному посредством значений PicOrderCnt, как указано посредством подраздела C.5 HEVC WD6.
[0174] Для изображений, которые не выводятся посредством процесса «обновления» подраздела C.5 HEVC WD6, модифицированного посредством этого раскрытия, поскольку они предшествуют, в порядке декодирования, изображению IDR с no_output_of_prior_pics_flag, равным 1 либо заданным или логически выведенным равным 1, времена вывода, извлекаемые из dpb_output_delay, могут увеличиваться с увеличением значения PicOrderCnt относительно всех изображений в идентичной кодированной видеопоследовательности.
[0175] Переменная num_decoding_units_minus1 плюс 1 может указывать число единиц декодирования в единице доступа, с которой ассоциировано сообщение SEI по синхронизации изображений. Значение num_decoding_units_minus1 может быть, например, в диапазоне от 0 до X, включительно.
[0176] Переменная num_nalus_in_du_minus1[i] плюс 1 может указывать число единиц NAL в i-той единице декодирования единицы доступа, с которой ассоциировано сообщение SEI по синхронизации изображений. Значение num_nalus_in_du_minus1[i] может быть, например, в диапазоне от 0 до X, включительно.
[0177] Первая единица декодирования единицы доступа может включать в себя первые num_nalus_in_du_minus1[0]+1 последовательных единиц NAL в порядке декодирования в единице доступа. I-тая (где i больше 0) единица декодирования единицы доступа может включать в себя num_nalus_in_du_minus1[i]+1 последовательных единиц NAL, идущих сразу после последней единицы NAL в предыдущей единице декодирования единицы доступа в порядке декодирования. Может быть, например по меньшей мере одна единица NAL VCL в каждой единице декодирования.
(cpb_removal_delay_length_minus1+1)
[0178] Переменная du_cpb_removal_delay[i] может указывать то, сколько тактов синхронизации (см. подраздел E.2.1 HEVC WD6) следует ожидать после удаления из CPB первой единицы декодирования в единице доступа, ассоциированной с последним сообщением SEI по периоду буферизации в предшествующей единице доступа, до удаления из CPB i-той единицы декодирования в единице доступа, ассоциированной с сообщением SEI по синхронизации изображений. Это значение также может быть использовано для того, чтобы вычислять самое раннее время поступления данных единицы декодирования в CPB для HSS, как указано в приложении C HEVC WD6. Элемент синтаксиса может представлять собой код фиксированной длины, длина которого в битах может задаваться посредством cpb_removal_delay_length_minus1+1. du_cpb_removal_delay[i] может представлять собой остаток счетчика по модулю 2. Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента du_cpb_removal_delay[i] синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением SEI по синхронизации изображений. Тем не менее, du_cpb_removal_delay[i] указывает число тактов синхронизации относительно времени удаления первой единицы декодирования в предшествующей единице доступа, содержащей сообщение SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0179] Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовывать технологии, связанные с сохранением одной или более единиц декодирования видеоданных в буфере изображений, получением соответствующего времени удаления из буфера для одной или более единиц декодирования, удалением единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодированием видеоданных, соответствующих удаленным единицам декодирования, в числе других функций, как описано в этом раскрытии. Видеокодер 20 может выполнять внутреннее и внешнее кодирование блоков в видеокадрах, включающих в себя единицы кодирования (CU) или суб-CU CU. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Внешнее кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как любой из нескольких режимов пространственного сжатия, а внешние режимы, такие как однонаправленное прогнозирование (P-режим) или двунаправленное прогнозирование (B-режим), могут упоминаться как любой из нескольких режимов временного сжатия. Хотя некоторые компоненты для кодирования во внешнем режиме проиллюстрированы на фиг. 2, следует понимать, что видеокодер 20 дополнительно может включать в себя компоненты для кодирования во внутреннем режиме, к примеру, модуль 46 внутреннего прогнозирования. Дополнительные компоненты, которые также могут быть включены, не иллюстрируются на фиг. 2 для краткости и ясности.
[0180] Как показано на фиг. 2, видеокодер 20 принимает видеоблоки, включающие в себя текущий видеоблок, в видеокадре, который должен быть кодирован. В примере по фиг. 2, видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, память 64 опорных изображений, сумматор 50, модуль 52 преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования, буфер 90 и буфер 92 кодированных изображений. Для восстановления видеоблоков видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62.
[0181] Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, который должен быть кодирован. Кадр или слайс может быть разделен на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют внешнее прогнозирующее кодирование принимаемого видеоблока относительно одного или более блоков в одном или более опорных кадрах, чтобы предоставлять временное сжатие. Модуль 46 внутреннего прогнозирования также может выполнять внутреннее прогнозирующее кодирование принимаемого видеоблока относительно одного или более соседних блоков в идентичном кадре или слайсе, что и блок, который должен быть кодирован, чтобы предоставлять пространственное сжатие.
[0182] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренних или внешних, например, на основе результатов по ошибкам и может предоставлять результирующий внутренне или внешне кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного кадра.
[0183] Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в пределах прогнозирующего опорного кадра (или другой кодированной единицы) относительно текущего блока, кодируемого в пределах текущего кадра (или другой кодированной единицы). Прогнозный блок представляет собой блок, для которого обнаруживается, что он практически совпадает с блоком, который должен быть кодирован, с точки зрения пикселной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей. Вектор движения также может указывать смещение сегмента макроблока. Компенсация движения может заключать в себе выборку или формирование прогнозного блока на основе вектора движения, определенного посредством оценки движения. Как отмечено выше, в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы.
[0184] В случае внешнего кодирования модуль 42 оценки движения вычисляет вектор движения для видеоблока внешне кодированного кадра посредством сравнения видеоблока с видеоблоками опорного кадра в памяти 64 опорных изображений. Модуль 44 компенсации движения также может интерполировать субцелочисленные пикселы опорного кадра, например, I-кадра или P-кадра. В качестве примера, векторы движения могут быть прогнозированы из двух списков опорных кадров: список 0, который включает в себя опорные кадры, имеющие порядок отображения раньше кодируемого текущего кадра, и список 1, который включает в себя опорные кадры, имеющие порядок отображения позже кодируемого текущего кадра. Следовательно, данные, сохраненные в памяти 64 опорных изображений, могут быть организованы согласно этим двум спискам опорных кадров.
[0185] Модуль 42 оценки движения сравнивает блоки одного или более опорных кадров из памяти 64 опорных изображений с блоком, который должен быть кодирован, текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в памяти 64 опорных изображений включают в себя значения для субцелочисленных пикселов, вектор движения, вычисленный посредством модуля 42 оценки движения, может ссылаться на местоположение субцелочисленного пиксела опорного кадра. Модуль 42 оценки движения и/или модуль 44 компенсации движения также может быть сконфигурирован с возможностью вычислять значения для субцелочисленнопикселных позиций опорных кадров, сохраненных в памяти 64 опорных изображений, если значения для субцелочисленнопикселных позиций не сохраняются в памяти 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Блок опорного кадра, идентифицированный посредством вектора движения, может называться "прогнозным блоком".
[0186] Модуль 44 компенсации движения может вычислять прогнозирующие данные на основе прогнозного блока. Видеокодер 20 формирует остаточный видеоблок посредством вычитания прогнозирующих данных, предоставленных посредством модуля 44 компенсации движения, из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 преобразования может выполнять другие преобразования, к примеру, преобразования заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. В качестве других примеров, модуль 52 преобразования может выполнять вейвлет-преобразования, целочисленные преобразования, подполосные преобразования или другие типы преобразований. Модуль 52 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пикселной области в область преобразования, такую как частотная область. Модуль 54 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость прохождения битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования.
[0187] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контентно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с сегментированием интервала вероятности (PIPE) или другую технологию энтропийного кодирования. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, кодированные видеоданные могут быть буферизованы или сохранены более или менее временно в буфере 92 кодированных изображений, переданы в другое устройство и/или заархивированы для последующей передачи или извлечения. В случае контекстно-адаптивного двоичного арифметического кодирования контекст может быть основан на соседних макроблоках.
[0188] В некоторых случаях, модуль 56 энтропийного кодирования или другой модуль видеокодера 20 может быть сконфигурирован с возможность выполнять другие функции кодирования, в дополнение к энтропийному кодированию. Например, модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью определять значения шаблона кодированного блока (CBP) для макроблоков и сегментов. Кроме того, в некоторых случаях, модуль 56 энтропийного кодирования может выполнять кодирование по длинам серий коэффициентов в наибольшей единице кодирования (LCU) или суб-CU LCU. В частности, модуль 56 энтропийного кодирования может применять зигзагообразное сканирование или другой шаблон сканирования, чтобы сканировать коэффициенты преобразования в LCU или сегментировать и кодировать серии нулей для дополнительного сжатия. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут формировать единицы декодирования из кодированных видеоданных. Единицы декодирования могут представлять собой, например, субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут добавлять дополняющие данные для субизображений с различными размерами, чтобы достигать байтового выравнивания. Модуль 56 энтропийного кодирования также может составлять информацию заголовка с надлежащими элементами синтаксиса для передачи в кодированном потоке видеобитов. Например, информация заголовка может включать в себя сигнализируемые данные, указывающие то, представляют собой единицы декодирования единицы доступа или субединицы доступа. Она может включать в себя сигнализацию значения для флага предпочтительного буфера кодированных изображений для субизображений, сигнализируемого в параметрах HRD. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут, например, добавлять элементы синтаксиса, к примеру, сообщения SEI по периоду буферизации, сигнализируемые параметры VUI, сигнализируемые данные, указывающие точки входа для различных субизображений и/или времена удаления из буфера для единиц декодирования.
[0189] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пикселной области, к примеру, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока с прогнозным блоком одного из кадров памяти 64 опорных изображений. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять субцелочисленнопикселные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в памяти 64 опорных изображений. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы внешне кодировать блок в последующем видеокадре.
[0190] Память 64 опорных изображений может включать в себя буфер 90. Буфер 90 может быть или включать в себя, или быть включен в устройство хранения данных, к примеру, в любую долговременную или энергозависимую память, допускающую сохранение данных, такую как синхронная динамическая оперативная память (SDRAM), встроенная динамическая оперативная память (eDRAM) или статическая оперативная память (SRAM). Буфер 90 может включать в себя буферы изображений и/или буферы декодированных изображений и может работать согласно любой комбинации иллюстративных поведений буфера кодированных изображений и/или буфера декодированных изображений, описанных в этом раскрытии. Например, видеокодер 20 может выполнять управление шаблоном декодированного блока (DPB) с использованием буфера 90 и/или управление шаблоном кодированного блока (CPB) в буфере 92 кодированных изображений в соответствии с технологиями этого раскрытия.
[0191] Буфер 92 кодированных изображений может быть или включать в себя, или быть включен в устройство хранения данных, к примеру, в любую долговременную или энергозависимую память, допускающую сохранение данных, такую как синхронная динамическая оперативная память (SDRAM), встроенная динамическая оперативная память (eDRAM) или статическая оперативная память (SRAM). Хотя, показан как составляющий часть видеокодера 20, в некоторых примерах, буфер 92 кодированных изображений может представлять собой часть устройства, блока или модуля, внешнего для видеокодера 20. Например, буфер 92 кодированных изображений может представлять собой часть модуля планировщика потоков (планировщика доставки или гипотетического планировщика потоков (HSS)), внешнего для видеокодера 20. Видеокодер 20 может формировать единицы декодирования из кодированных видеоданных и предоставлять единицы декодирования в модуль планировщика потоков. В некоторых примерах, видеокодер 20 может формировать единицы декодирования с варьирующимися числами битов или варьирующимися числами блоков. Модуль планировщика потоков может реализовывать технологии этого раскрытия, чтобы отправлять единицы декодирования, включающие в себя субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов, в видеодекодер для декодирования во времена, которые могут указываться посредством полученного (например, сигнализируемого) времени удаления из буфера. В некоторых примерах, видеокодер 20 может формировать единицы декодирования, каждая из которых включает в себя число блоков кодирования, размещаемых непрерывно в порядке декодирования. Модуль планировщика потоков дополнительно может декапсулировать единицы доступа для того, чтобы извлекать одну или более единиц уровня абстракции сети (NAL), включающих в себя единицы декодирования. Аналогично, модуль планировщика потоков может декапсулировать единицы NAL для того, чтобы извлекать единицы декодирования.
[0192] Видеокодер 20 может сохранять единицы доступа и удалять единицы доступа из буфера 92 кодированных изображений в соответствии с режимом работы гипотетического эталонного декодера (HRD), модифицированным посредством технологий этого раскрытия. Видеокодер 20 может применять параметры HRD, включающие в себя начальную задержку удаления из CPB, размер CPB, скорость прохождения битов, начальную задержку вывода из DPB и размер DPB, а также времена удаления из буфера для единиц декодирования и значения для флагов предпочтительного буфера кодированных изображений для субизображений для того, чтобы сигнализировать, например, то, представляют собой единицы декодирования видеоданных единицы доступа или поднаборы единиц доступа. Видеокодер 20 может формировать сообщения SEI в единицах доступа, которые сигнализируют периоды буферизации и времена удаления из буфера для единиц декодирования. Например, видеокодер 20 может предоставлять параметры информации применимости видео (VUI) с синтаксисом, который включает в себя флаг субизображения CPB, такой как в примере вышеприведенной таблицы 1.
[0193] Единицы декодирования могут включать в себя субизображения общего изображения, и видеокодер 20 может включать времена удаления из буфера для каждого из субизображений общего изображения в сообщения SEI для единиц доступа. Различные субизображения могут быть кодированы с помощью различных объемов данных, причем некоторые субизображения кодируются в различных числах битов или блоках, и видеокодер 20 может формировать надлежащее соответствующее время удаления из буфера для каждого из субизображений общего изображения. Видеокодер 20 также может кодировать некоторые изображения с субизображениями с идентичным размером данных. Другие компоненты также могут выполнять одну или более функций, приписанных выше видеокодеру 20. Например, модуль инкапсуляции устройства-источника (к примеру, устройство-источник 12 по фиг. 1) также может формировать сообщения SEI, которые включают в себя любой из вышеуказанных параметров.
[0194] Следовательно, видеокодер 20 может предоставлять, что каждое субизображение может включать в себя некоторое число блоков кодирования кодированного изображения, непрерывных в порядке декодирования, и так, что блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока. Видеокодер 20 может предоставлять, что кодирование субизображений и выделение битов различным субизображениям в изображении могут выполняться без необходимости кодирования каждого субизображения (т.е. группы древовидных блоков) в одном изображении с идентичным количеством битов. Видеокодер 20 может сигнализировать время удаления из CPB для каждого субизображения в потоке битов вместо извлечения времен удаления из CPB согласно сигнализируемым временам удаления из CPB на уровне изображения. Видеокодер 20 также может включать в себя несколько субизображений в слайсе и применять байтовое выравнивание в конце каждого субизображения. Видеокодер 20 также может сигнализировать точку входа каждого субизображения со значением, которое указывает байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Видеокодер 20 может применять любую одну или более этих особенностей в различных примерах в соответствии с этим раскрытием.
[0195] Местоположения, показанные для памяти 64 опорных изображений, буфера 90 и буфера 92 кодированных изображений на фиг. 2, служат в качестве иллюстрации. Память 64 опорных изображений, буфер 90 и буфер 92 кодированных изображений могут быть расположены в одном устройстве хранения данных или в любом числе различных устройств хранения данных. Устройства хранения данных могут включать в себя любую комбинацию энергозависимых и/или энергонезависимых считываемых компьютером носителей.
[0196] Таким образом, видеокодер 20 представляет пример видеокодера, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0197] Фиг. 3 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере по фиг. 3, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 опорных изображений, сумматор 80, буфер 94 кодированных изображений и буфер 96. Видеодекодер 30, в некоторых примерах, может выполнять проход декодирования, в общем, взаимно-обратный относительно прохода кодирования, описанного относительно видеокодера 20 (фиг. 2). Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых из модуля 70 энтропийного декодирования.
[0198] Модуль 72 компенсации движения может использовать векторы движения, принятые в потоке битов, чтобы идентифицировать прогнозный блок в опорных кадрах в памяти 82 опорных изображений. Модуль 74 внутреннего прогнозирования может использовать режимы внутреннего прогнозирования, принятые в потоке битов, чтобы формировать прогнозный блок из пространственно смежных блоков. Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные блочные коэффициенты, предоставленные в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, как задано посредством стандарта декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QPY квантования, вычисленного посредством кодера 20 для каждого макроблока, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться.
[0199] Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пикселной области. Модуль 72 компенсации движения формирует блоки с компенсацией движения, возможно выполняя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны использоваться для оценки движения с субпикселной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 в ходе кодирования видеоблока, чтобы вычислять интерполированные значения для субцелочисленных пикселов опорного блока. Модуль 72 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20 согласно принимаемой синтаксической информации, и использовать интерполяционные фильтры, чтобы формировать прогнозные блоки.
[0200] Модуль 72 компенсации движения использует часть из синтаксической информации для того, чтобы определять размеры блоков, используемых для того, как кодировать кадр(ы) кодированной видеопоследовательности, информации сегментов, которая описывает, как сегментируется каждый макроблок кадра кодированной видеопоследовательности, режимов, указывающих то, как кодируется каждый сегмент, одного или более опорных кадров (и списков опорных кадров) для каждого внешне кодированного макроблока или сегмента, и другой информации, для того чтобы декодировать кодированную видеопоследовательность. Сумматор 80 суммирует остаточные блоки с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения или модуля 74 внутреннего прогнозирования, чтобы формировать декодированные блоки.
[0201] Память 82 опорных изображений может включать в себя буфер 96. Буфер 96 может быть или включать в себя устройство хранения данных, к примеру, в любую долговременную или энергозависимую память, допускающую сохранение данных, такую как синхронная динамическая оперативная память (SDRAM), встроенная динамическая оперативная память (eDRAM) или статическая оперативная память (SRAM). Буфер 96 может включать в себя один или более буферов изображений и/или один или более буферов декодированных изображений и может работать согласно любой комбинации иллюстративных поведений буфера кодированных изображений и/или буфера декодированных изображений, описанных в этом раскрытии. Например, видеодекодер 30 может выполнять управление DPB с использованием буфера 96 и/или управление CPB в буфере 94 кодированных изображений в соответствии с технологиями этого раскрытия.
[0202] Буфер 94 кодированных изображений может быть реализован как устройство хранения данных, к примеру, как любая долговременная или энергозависимая память, допускающая сохранение данных, такая как синхронная динамическая оперативная память (SDRAM), встроенная динамическая оперативная память (eDRAM) или статическая оперативная память (SRAM). Буфер 94 кодированных изображений может работать согласно любой комбинации иллюстративных поведений буфера кодированных изображений, раскрытых в данном документе.
[0203] Хотя, показан как составляющий часть видеодекодера 30, в некоторых примерах, буфер 94 кодированных изображений может представлять собой часть устройства, блока или модуля, внешнего для видеодекодера 30. Например, буфер 94 кодированных изображений может представлять собой часть модуля планировщика потоков, внешнего для видеодекодера 30. Модуль планировщика потоков может реализовывать технологии этого раскрытия, чтобы отправлять единицы декодирования, включающие в себя субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов, в видеодекодер 30 для декодирования во времена, указываемые посредством полученного (например, сигнализируемого) времени удаления из буфера. Модуль планировщика потоков дополнительно может декапсулировать единицы доступа для того, чтобы извлекать одну или более единиц уровня абстракции сети (NAL), включающих в себя единицы декодирования. Аналогично, модуль планировщика потоков может декапсулировать единицы NAL для того, чтобы извлекать единицы декодирования.
[0204] Видеодекодер 30 может принимать и сохранять единицы доступа и удалять единицы доступа из буфера 94 кодированных изображений в соответствии с режимом работы гипотетического эталонного декодера (HRD), модифицированным посредством технологий этого раскрытия. Видеодекодер 30 может декодировать и получать параметры HRD, включающие в себя начальную задержку удаления из CPB, размер CPB, скорость прохождения битов, начальную задержку вывода из DPB и размер DPB, а также времена удаления из буфера для единиц декодирования и значения для флагов предпочтительного буфера кодированных изображений для субизображений, который сигнализирует, например, то, представляют собой единицы декодирования видеоданных единицы доступа или поднаборы единиц доступа. Видеодекодер 30 может декодировать и получать сообщения SEI в единицах доступа, которые сигнализируют периоды буферизации и времена удаления из буфера для единиц декодирования. Например, видеодекодер 30 может декодировать и получать параметры информации применимости видео (VUI) с синтаксисом, который включает в себя флаг субизображения CPB, такой как в примере вышеприведенной таблицы 1.
[0205] Единицы декодирования могут включать в себя субизображения общего изображения, и видеодекодер 30 может декодировать и получать времена удаления из буфера для каждого из субизображений общего изображения в сообщениях SEI для единиц доступа. Различные субизображения могут быть кодированы с помощью различных объемов данных, причем некоторые субизображения кодируются в различных числах битов или блоках, и видеодекодер 30 может декодировать и получать надлежащее соответствующее время удаления из буфера для каждого из субизображений общего изображения. Видеодекодер 30 также может декодировать и получать некоторые изображения с субизображениями с идентичным размером данных.
[0206] Следовательно, видеодекодер 30 может декодировать и получать субизображения, которые могут включать в себя некоторое число блоков кодирования кодированного изображения, непрерывных в порядке декодирования, и так, что блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока. Видеодекодер 30, в некоторых примерах, может декодировать и получать времена удаления из CPB для каждого субизображения в потоке битов, вместо извлечения времен удаления из CPB согласно сигнализируемым временам удаления из CPB на уровне изображения. Видеодекодер 30 также может декодировать и получать несколько субизображений в слайсе и может принимать информацию байтового смещения, указывающую начальные точки для каждой единицы декодирования, чтобы определять то, где начинается каждая единица декодирования, и декодировать и получать информацию относительно дополнительного сигнала без данных или дополняющего сигнала, который предоставляет байтовое выравнивание в конце каждого субизображения. Видеодекодер 30 также может получать точку входа каждого субизображения со значением, которое указывает байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Видеодекодер 30 может применять любую одну или более этих особенностей в различных примерах в соответствии с этим раскрытием.
[0207] Местоположения, показанные для памяти 82 опорных изображений, буфера 96 и буфера 94 кодированных изображений на фиг. 3, служат в качестве иллюстрации. Память 82 опорных изображений, буфер 96 и буфер 94 кодированных изображений могут быть расположены в одном устройстве хранения данных или в любом числе различных устройств хранения данных. Устройства хранения данных могут включать в себя любую комбинацию энергозависимых и/или энергонезависимых считываемых компьютером носителей.
[0208] Таким образом, видеодекодер 30 представляет пример видеокодера, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования.
[0209] Фиг. 4 является блок-схемой, иллюстрирующей примерное устройство-адресат 100, которое может реализовывать любые из технологий этого раскрытия. В этом примере, устройство-адресат 100 включает в себя интерфейс 102 ввода, планировщик 104 потоков, буфер 106 кодированных изображений, видеодекодер 108, буфер 110 декодированных изображений, модуль 112 визуализации и интерфейс 114 вывода. Устройство-адресат 100 может практически соответствовать устройству-адресату 14 (фиг. 1). Интерфейс 102 ввода может содержать любой интерфейс ввода, допускающий прием кодированного потока битов видеоданных. Например, интерфейс 102 ввода может содержать приемное устройство 26 и/или модем 28 так, как показано на фиг. 1, сетевой интерфейс, к примеру, проводной или беспроводной интерфейс, память или интерфейс памяти, накопитель для считывания данных с диска, к примеру, интерфейс накопителя на оптических дисках или интерфейс магнитных носителей либо другой компонент интерфейса.
[0210] Интерфейс 102 ввода может принимать кодированный поток битов, включающий в себя видеоданные, и предоставлять поток битов в планировщик 104 потоков. В соответствии с технологиями этого раскрытия, планировщик 104 потоков извлекает единицы видеоданных, к примеру, единицы доступа и/или единицы декодирования, из потока битов и сохраняет извлеченные единицы в буфер 106 кодированных изображений. Таким образом, планировщик 104 потоков представляет примерную реализацию HSS, как пояснено в вышеприведенных примерах. Буфер 106 кодированных изображений может практически соответствовать буферу 94 кодированных изображений (фиг. 3), за исключением того, что как показано на фиг. 4, буфер 106 кодированных изображений является отдельным от видеодекодера 108. Буфер 106 кодированных изображений может быть отдельным или интегрированным в качестве части видеодекодера 108 в различных примерах.
[0211] Видеодекодер 108 включает в себя буфер 110 декодированных изображений. Видеодекодер 108 может практически соответствовать видеодекодеру 30 фиг. 1 и 3. Буфер 110 декодированных изображений может практически соответствовать буферу 96. Таким образом, видеодекодер 108 может декодировать единицы декодирования буфера 106 кодированных изображений в соответствии с технологиями этого раскрытия.
[0212] Кроме того, видеодекодер 108 может выводить декодированные изображения из буфера 110 декодированных изображений в соответствии с технологиями этого раскрытия, как пояснено выше. Видеодекодер 108 может передавать выходные изображения в модуль 112 визуализации. Модуль 112 визуализации может кадрировать изображения, как пояснено выше, в соответствии с технологиями этого раскрытия, затем передавать кадрированные изображения в интерфейс 114 вывода. Интерфейс 114 вывода, в свою очередь, может предоставлять кадрированные изображения в устройство отображения, которое может практически соответствовать устройству 32 отображения. Устройство отображения может представлять собой часть целевого устройства 100 или может функционально соединяться с целевым устройством 100. Например, устройство отображения может содержать экран, воспринимающий касание (сенсорный) экран, проектор или другой модуль отображения, интегрированный с целевым устройством 100, либо может содержать отдельный дисплей, такой как телевизионный приемник, монитор, проектор, воспринимающий касание экран или другое устройство, которое функционально соединяется с целевым устройством 100. Средства взаимосвязи могут содержать средства проводной или беспроводной связи, к примеру, посредством коаксиального кабеля, композитного видеокабеля, компонентного видеокабеля, кабеля на основе мультимедийного интерфейса высокой четкости (HDMI), радиочастотной широковещательной передачи или других средств проводной или беспроводной связи.
[0213] Фиг. 5 является блок-схемой последовательности операций способа, которая иллюстрирует примерный способ, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, например, посредством видеодекодера 30 фиг. 1 или 3 или видеодекодера 108 по фиг. 4 (совместно "видеодекодера 30/108"), в соответствии с технологиями этого раскрытия. Примерный способ по фиг. 5 может описываться как осуществляемый посредством видеодекодера 30/108 в качестве одного примера, с пониманием того, что любые один или более аспектов способа по фиг. 5 также могут осуществляться или реализовываться с другими устройствами или компонентами. В примере по фиг. 5, видеодекодер 30/108 может сохранять одну или более единиц декодирования видеоданных в буфере изображений (202). Видеодекодер 30/108 может получать соответствующее время удаления из буфера для одной или более единиц декодирования, при этом получение соответствующего времени удаления из буфера содержит прием соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера для по меньшей мере одной из единиц декодирования (204). Видеодекодер 30/108 может удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования (206). Видеодекодер 30/108 также может кодировать видеоданные, соответствующие удаленным единицам декодирования, при этом кодирование видеоданных содержит декодирование по меньшей мере одной из единиц декодирования (208). Видеодекодер 30/108 и/или другие устройства или элементы также могут выполнять различные или дополнительные функции в других примерах.
[0214] Фиг. 6 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ, аналогичный в некотором отношении способу по фиг. 5, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, например, посредством видеодекодера 30 фиг. 1 или 3 или видеодекодера 108 по фиг. 4 (совместно "видеодекодера 30/108"), в соответствии с технологиями этого раскрытия. Примерный способ по фиг. 6 также может описываться как осуществляемый посредством видеодекодера 30/108 в качестве одного примера, с пониманием того, что любые один более аспектов способа по фиг. 6 также могут осуществляться или реализовываться с другими устройствами или компонентами. В примере по фиг. 6, видеодекодер 30/108 может сохранять одну или более единиц декодирования видеоданных в буфере кодированных изображений (CPB) (402), получать соответствующее время удаления из буфера для одной или более единиц декодирования (404), удалять единицы декодирования из CPB в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования (406), определять то, работает ли CPB на уровне единицы доступа или на уровне субизображения, (408), и кодировать видеоданные, соответствующие удаленным единицам декодирования (410). Если CPB работает на уровне единицы доступа, кодирование видеоданных включает в себя кодирование единиц доступа, содержащихся в единицах декодирования (412). Если CPB работает на уровне субизображения, кодирование видеоданных включает в себя кодирование поднаборов единиц доступа, содержащихся в единицах декодирования (414).
[0215] Например, если видеодекодер 30/108 определяет то, что CPB работает на уровне единицы доступа, видеодекодер 30/108 может кодировать единицы доступа видеоданных, соответствующих удаленным единицам декодирования (412). Если видеодекодер 30/108 определяет то, что CPB работает на уровне субизображения, видеодекодер 30/108 может кодировать поднаборы единиц доступа видеоданных, соответствующих удаленным единицам декодирования (414). Например, видеодекодер 30/108 может определять то, что одна или более единиц декодирования содержат единицы доступа, посредством определения того, что любой флаг предпочтительного буфера кодированных изображений для субизображений (например, SubPicCpbPreferredFlag) является отрицательным или имеет значение ноль, или что флаг присутствия параметров буфера кодированных изображений для субизображений (например, sub_pic_cpb_params_present_flag) является отрицательным или имеет значение ноль. Видеодекодер 30/108 может определять то, что одна или более единиц декодирования содержат поднаборы единиц доступа, посредством определения того, что оба флаг предпочтительного буфера кодированных изображений для субизображений (например, SubPicCpbPreferredFlag) является положительным или имеет значение единица, и что флаг присутствия параметров буфера кодированных изображений для субизображений (например, sub_pic_cpb_params_present_flag) является положительным или имеет значение единица. Видеодекодер 30/108 также может использовать один флаг SubPicCpbFlag буфера кодированных изображений для субизображений, который может задаваться равным SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag, чтобы определять то, являются или нет оба базовых флага положительными, и этот видеодекодер 30/108 может кодировать для поднаборов единиц доступа.
[0216] Фиг. 7 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ обработки видеоданных, который включает в себя вывод кадрированного изображения в процессе обновления, например, посредством видеодекодера 30 фиг. 1 или 3 или видеодекодера 108 по фиг. 4 (совместно "видеодекодера 30/108"), в соответствии с технологиями этого раскрытия. В примере по фиг. 7, видеодекодер 30/108 может выполнять процесс обновления, если какое-либо из некоторых условий удовлетворяется, как описано выше в отношении примеров процесса обновления. В частности, видеодекодер 30/108 может выполнять процесс обновления, если текущее изображение представляет собой изображение на основе мгновенного обновления при декодировании (IDR) (302), и флаг отсутствия вывода предшествующих изображений имеет значение, которое не равно единице (304), который может включать в себя, если флаг отсутствия вывода предшествующих изображений имеет значение, которое не выводится логически равным 1 или задается равным 1, например, посредством HRD. Видеодекодер 30/108 также может выполнять процесс обновления, если число изображений в буфере декодированных изображений (DPB), которые помечаются как "требуется для вывода", превышает число изображений переупорядочивания в текущем временном слое (306). Видеодекодер 30/108 также может выполнять процесс обновления, если число изображений в DPB со значениями идентификаторов временных слоев, меньшими или равными значению идентификатора временного слоя текущего изображения, равно максимальному значению буферизации изображений текущего временного слоя плюс единица (308).
[0217] Если какое-либо из указанных условий (302 и 304 или 306 или 308) удовлетворяется, видеодекодер 30/108 может выполнять процесс обновления следующим образом. Видеодекодер 30/108 может выбирать изображение, имеющее наименьшее значение номера в порядке изображений (POC) из изображений в DPB, которые помечаются как "требуется для вывода", в качестве выбранного изображения (312). Видеодекодер 30/108 может кадрировать выбранное изображение, как указано в активном наборе параметров последовательности для выбранного изображения, за счет этого формируя кадрированное изображение на основе выбранного изображения (314). Видеодекодер 30/108 может выводить кадрированное изображение (316). Видеодекодер 30/108 может помечать выбранное изображение как "не требуется для вывода" (318).
[0218] В одном или более примеров, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, микропрограммном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и исполнены посредством аппаратного процессора. Считываемые компьютером носители могут включать в себя считываемые компьютером носители данных, которые соответствуют материальному носителю, такие как носители данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю данных, который является невременным, или (2) среде связи, такой как сигнал или несущая. Носители данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0219] В качестве примера, а не ограничения, эти считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители данных и носители данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-Ray-диск, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.
[0220] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0221] Технологии этого раскрытия могут быть реализованы в широком спектре устройств или аппаратов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0222] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.