[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-) кадре или внутренне кодированном (I-) слайсе кодируются с использованием пространственного прогнозирования относительно соседних макроблоков. Макроблоки во внешне (интер-) кодированном (P- или B-) кадре или внешне кодированном (P- или B-) слайсе могут использовать пространственное прогнозирование относительно соседних макроблоков в идентичном кадре или слайсе либо временное прогнозирование относительно других опорных кадров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] В общем, это раскрытие описывает различные технологии для того, чтобы достигать уменьшенной задержки кодека во взаимодействии. В одном примере, эти технологии могут осуществляться через общий режим работы буфера кодированных изображений (CPB) на основе субизображений.
[0006] В одном примере, способ кодирования видеоданных включает в себя сохранение одной или более единиц декодирования видеоданных в буфере изображений. Способ дополнительно включает в себя получение соответствующего времени удаления из буфера для одной или более единиц декодирования, при этом получение соответствующего времени удаления из буфера содержит прием соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера для по меньшей мере одной из единиц декодирования. Способ дополнительно включает в себя удаление единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Способ дополнительно включает в себя кодирование видеоданных, соответствующих удаленным единицам декодирования, при этом кодирование видеоданных содержит декодирование по меньшей мере одной из единиц декодирования.
[0007] В другом примере, устройство для кодирования видеоданных сконфигурировано с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений. Устройство дополнительно сконфигурировано с возможностью получать соответствующее время удаления из буфера для одной или более единиц декодирования, при этом получение соответствующего времени удаления из буфера содержит прием соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера для по меньшей мере одной из единиц декодирования. Устройство дополнительно сконфигурировано с возможностью удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Устройство дополнительно сконфигурировано с возможностью кодировать видеоданные, соответствующие удаленным единицам декодирования, при этом кодирование видеоданных содержит декодирование по меньшей мере одной из единиц декодирования.
[0008] В другом примере, аппарат для кодирования видеоданных включает в себя средство для сохранения одной или более единиц декодирования видеоданных в буфере изображений. Аппарат дополнительно включает в себя средство для получения соответствующего времени удаления из буфера для одной или более единиц декодирования, при этом получение соответствующего времени удаления из буфера содержит прием соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера для по меньшей мере одной из единиц декодирования. Аппарат дополнительно включает в себя средство для удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Аппарат дополнительно включает в себя средство для кодирования видеоданных, соответствующих удаленным единицам декодирования, при этом кодирование видеоданных содержит декодирование по меньшей мере одной из единиц декодирования.
[0009] В другом примере, считываемый компьютером носитель данных содержит сохраненные инструкции, которые при исполнении побуждают процессор сохранять одну или более единиц декодирования видеоданных в буфере изображений. Инструкции дополнительно побуждают процессор получать соответствующее время удаления из буфера для одной или более единиц декодирования, при этом получение соответствующего времени удаления из буфера содержит прием соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера для по меньшей мере одной из единиц декодирования. Инструкции дополнительно побуждают процессор удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования. Инструкции дополнительно побуждают процессор кодировать видеоданные, соответствующие удаленным единицам декодирования, при этом кодирование видеоданных содержит декодирование по меньшей мере одной из единиц декодирования.
[0010] В другом примере, способ включает в себя обработку видеоданных в соответствии с по меньшей мере одним из множества параметров информации применимости видео (VUI). Множество VUI-параметров включает в себя флаг (sub_pic_cpb_params_present_flag) присутствия параметров буфера кодированных изображений (CPB) для субизображений, который указывает присутствие параметров CPB для субизображений. Множество VUI-параметров дополнительно включает в себя сообщение с дополнительной улучшающей информацией (SEI), включающее в себя по меньшей мере один элемент синтаксиса, указывающий задержку для SchedSelIdx-того CPB между временем поступления в буфер кодированных изображений (CPB) первого бита кодированных данных, ассоциированных с первой единицей декодирования в единице доступа, ассоциированной с сообщением с SEI по периоду буферизации, и временем удаления из CPB кодированных данных, ассоциированных с первой единицей декодирования, для первого периода буферизации после инициализации гипотетического эталонного декодера (HRD) (initial_du_cpb_removal_delay), и элемент синтаксиса, указывающий, в комбинации с элементом синтаксиса, указывающим задержку удаления из CPB (cpb_removal_delay), смещение для SchedSelIdx-того CPB, чтобы точно определять начальное время доставки первой единицы декодирования в CPB (initial_du_cpb_removal_delay_offset). Множество VUI-параметров дополнительно включает в себя сообщение c SEI, включающее в себя по меньшей мере один элемент синтаксиса, указывающий число единиц уровня доступа к сети (NAL) в соответствующей i-той единице декодирования единицы доступа, с которой ассоциировано сообщение c SEI по синхронизации изображений (num_nalus_in_du_minus1), и элемент синтаксиса, который точно определяет число тактов синхронизации, которое следует ожидать после удаления из CPB первой единицы декодирования в единице доступа, ассоциированной с последним сообщением с SEI по периоду буферизации в предшествующей единице доступа, перед удалением из CPB соответствующей i-той единицы декодирования в единице доступа, ассоциированной с сообщением с SEI по синхронизации изображений (du_cpb_removal_delay).
[0011] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии для удаления блочности краев между видеоблоками, в соответствии с технологиями этого раскрытия.
[0013] Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера, который может реализовывать технологии для удаления блочности краев между видеоблоками, в соответствии с технологиями этого раскрытия.
[0014] Фиг. 3 является блок-схемой, иллюстрирующей пример видеодекодера, который декодирует кодированную видеопоследовательность, в соответствии с технологиями этого раскрытия.
[0015] Фиг. 4 является блок-схемой, иллюстрирующей примерное устройство-получатель, которая может реализовывать любые из технологий этого раскрытия.
[0016] Фиг. 5 является блок-схемой последовательности операций способа, которая иллюстрирует примерный способ, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, в соответствии с технологиями этого раскрытия.
[0017] Фиг. 6 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ, который включает в себя удаление единиц декодирования видеоданных из буфера изображений в соответствии с полученным временем удаления из буфера, в соответствии с технологиями этого раскрытия.
[0018] Фиг. 7 является блок-схемой последовательности операций способа, которая иллюстрирует другой примерный способ обработки видеоданных, который включает в себя вывод кадрированного изображения в процессе скачкообразного вывода, в соответствии с технологиями этого раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0019] Видеоприложения могут включать в себя локальное воспроизведение, потоковую передачу, широковещательную передачу/многоадресную передачу и диалоговые приложения. Диалоговые приложения могут включать в себя видеотелефонию и видеоконференц-связь и также упоминаются как варианты применения с низкой задержкой. Диалоговые приложения требуют относительно низкой сквозной задержки всех систем, т.е. задержки между временем, когда захватывается видеокадр, и временем, когда отображается видеокадр. Типично, приемлемая сквозная задержка для диалоговых приложений должна быть меньше 400 миллисекунд (мс), и сквозная задержка приблизительно в 150 мс может считаться очень хорошей. Каждый этап обработки может способствовать полной сквозной задержке, например, задержке при захвате, задержке при предварительной обработке, задержке при кодировании, задержке на передачу, задержке на буферизацию при приеме (для удаления дрожания), задержке при декодировании, задержке вывода декодированных изображений, задержке при постобработке и задержке отображения. Таким образом, типично, задержка кодека (задержка при кодировании, задержка при декодировании и задержка вывода декодированных изображений) должна быть минимизирована в диалоговых приложениях. В частности, структура кодирования должна обеспечивать, что порядок декодирования и порядок вывода изображений являются идентичными, так что задержка вывода декодированных изображений равна нулю.
[0020] Стандарты кодирования видео могут включать в себя технические требования модели буферизации видео. В AVC и HEVC, модель буферизации упоминается в качестве гипотетического эталонного декодера (HRD), который включает в себя модель буферизации как буфера кодированных изображений (CPB), так и буфера декодированных изображений (DPB), и CPB- и DPB-режимы работы указываются математически. HRD прямо налагает ограничения на различную синхронизацию, размеры буферов и скорость передачи битов и косвенно налагает ограничения на характеристики и статистику по потоку битов. Полный набор HRD-параметров включает в себя пять базовых параметров: начальная задержка удаления из CPB, CPB-размер, скорость передачи битов, начальная задержка DPB-вывода и DPB-размер.
[0021] В AVC и HEVC, соответствие потока битов и соответствие декодера указываются в качестве частей технических требований HRD. Хотя он упоминается в качестве типа декодера, HRD типично требуется на стороне кодера для того, чтобы гарантировать соответствие потока битов, при этом типично не требуется на стороне декодера. Указываются два типа соответствия потока битов или HRD-соответствия, а именно тип I и тип II. Кроме того, указываются два типа соответствия декодера, соответствие декодера по синхронизации вывода и соответствие декодера по порядку вывода.
[0022] В AVC и HEVC HRD-моделях, декодирование или удаление из CPB основано на единице доступа, и предполагается, что декодирование изображений является мгновенным. В практических вариантах применения, если декодер с соответствием строго следует временам декодирования, сигнализируемым, например, в сообщениях с дополнительной улучшающей информацией (SEI) по синхронизации изображений, чтобы начинать декодирование единиц доступа, то самое раннее время для того, чтобы выводить конкретное декодированное изображение, равно времени декодирования этого конкретного изображения плюс время, необходимое для декодирования этого конкретного изображения. В отличие от AVC и HEVC HRD-моделей, время, необходимое для декодирования изображения в реальном мире, не равно нулю. Термины "мгновенный" и "мгновенно" при использовании в этом раскрытии могут означать любую продолжительность, которая может предполагаться мгновенной в одной или более моделей кодирования или в идеализированном аспекте любой одной или более моделей кодирования, с пониманием того, что она может отличаться от "мгновенной" в физическом или буквальном смысле. Например, для целей этого раскрытия, функция или процесс может считаться номинально "мгновенным", если он осуществляется при или в пределах практического допустимого запаса гипотетического или идеализированного самого раннего времени для выполнения функции или процесса. Синтаксис и имена переменных при использовании в данном документе в некоторых примерах могут пониматься в соответствии с их значением в HEVC-модели.
[0023] 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, 7th 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 может быть сигнализировано в сообщениях c SEI по периоду буферизации. Это значение может быть использовано для того, чтобы извлекать время удаления из CPB (т.е. время декодирования) каждой группы древовидных блоков. В этом смысле, JCTVC-G188 CPB-режим работы основан на субизображениях, при этом каждое субизображение представляет собой группу древовидных блоков. В некоторых примерах, субизображение может соответствовать одному или более слайсам, одной или более волнам (для сегментации фронта волны изображения) или одному или более тайлам. В этом способе JCTVC-G188 предполагается, что времена удаления из CPB на уровне единицы доступа сигнализируются как обычно (с использованием сообщений c SEI по синхронизации изображений), и в каждой единице доступа предполагается, что времена удаления из CPB для групп древовидных блоков линейно или равномерно разделяют интервал от времени удаления из CPB предыдущей единицы доступа до времени удаления из CPB текущей единицы доступа.
[0024] Этот способ JCTVC-G188 дополнительно подразумевает следующие допущения или требования к потоку битов: (1) в каждом изображении каждая группа древовидных блоков кодируется таким способом, который требует идентичного количества времени декодирования (не только в HRD-модели, но также и для декодеров реального мира), при этом считается, что кодированные данные из первой группы древовидных блоков включают в себя все единицы не-VCL (уровня кодирования видео) NAL (уровня абстракции сети) в идентичной единице доступа и перед первой VCL NAL-единицей; (2) в каждом изображении, число битов для каждой группы древовидных блоков является идентичным, при этом считается, что кодированные данные из первой группы древовидных блоков включают в себя все не-VCL NAL-единицы в идентичной единице доступа и перед первой VCL NAL-единицей.
[0025] Существующие способы для указания CPB-режима работы на основе субизображений ассоциированы, по меньшей мере, со следующими проблемами: (1) Такое требование, что объем кодированных данных для каждой группы древовидных блоков в кодированном изображении должен быть идентичным, является труднодостижимым при сбалансированной производительности кодирования (при этом группы древовидных блоков для областей с более детальной текстурой или активностью движения в изображении могут использовать большее число битов). (2) Когда несколько групп древовидных блоков включаются в слайс, может не быть простого способа для того, чтобы разбивать кодированные биты древовидных блоков, принадлежащих различным группам древовидных блоков, и отдельно отправлять их на стороне кодера и отдельно удалять их из CPB (т.е. отдельно декодировать их).
[0026] Чтобы разрешать вышеуказанные проблемы, это раскрытие описывает общую схему для поддержки CPB-режима работы на основе субизображений с различными альтернативами. В некоторых примерах, признаки технологий CPB на основе субизображений этого раскрытия могут включать в себя аспекты следующих технологий: (1) Каждое субизображение может включать в себя число блоков кодирования кодированного изображения, непрерывных в порядке декодирования. Блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока; (2) Кодирование субизображений и выделение битов различным субизображениям в изображении могут выполняться как обычно, без допущения или необходимости кодирования субизображения (т.е. группы древовидных блоков) в одном изображении с идентичным числом битов. Следовательно, время удаления из CPB для каждого субизображения может быть сигнализировано в потоке битов вместо извлечения согласно сигнализируемым временам удаления из CPB на уровне изображения; (3) Когда несколько субизображений включаются в слайс, байтовое выравнивание может применяться в конце каждого субизображения, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Кроме того, точка входа каждого субизображения, за исключением первого субизображения в кодированном изображении, может быть сигнализирована, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Принимаемое сигнализируемое значение может указывать байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Каждый из признаков (1)-(3) может применяться независимо или в комбинации с другими признаками.
[0027] В одном примере, работа HRD, включающая в себя CPB-режим работы на основе субизображений, может обобщаться следующим образом. Когда передача служебных сигналов указывает, что используется CPB-режим работы на основе субизображений, например, через передачу служебных сигналов на уровне последовательности элемента sub_pic_cpb_flag синтаксиса, равного 1, удаление из CPB или декодирование основано на субизображении, или эквивалентно, на единице декодирования, которая может представлять собой единицу доступа или поднабор единицы доступа. Другими словами, каждый раз, когда единица декодирования, будь то единица доступа или поднабор единицы доступа, удаляется из CPB для декодирования, время удаления единицы декодирования из CPB может извлекаться из сигнализируемой начальной задержки удаления из CPB и задержки удаления из CPB, сигнализируемой для единицы декодирования. CPB-опустошение указывается в качестве состояния, в котором номинальное время tr,n(m) удаления из CPB единицы m декодирования меньше конечного времени taf(m) удаления из CPB единицы m декодирования для любого значения m. В одном примере, когда элемент low_delay_hrd_flag синтаксиса равен 0, требуется, чтобы CPB никогда не опустошался.
[0028] В одном примере, процессы DPB-вывода и удаления по-прежнему могут работать на уровне изображения или на уровне единицы доступа, т.е. каждый раз, когда все декодированное изображение выводится или удаляется из DPB. Удаление декодированных изображений из DPB может происходить мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение).
[0029] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, в числе других функций.
[0030] Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированное видео в устройство-получатель 14 через канал 16 связи. Устройство-источник 12 и устройство-получатель 14 могут содержать любые из широкого диапазона устройств. В некоторых случаях, устройство-источник 12 и устройство-получатель 14 могут содержать устройства беспроводной связи, такие как беспроводные переносные телефоны, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи, когда канал 16 связи является беспроводным. Тем не менее, технологии этого раскрытия не обязательно ограничены приложениями или настройками беспроводной связи. Например, эти технологии могут применяться к телевизионным широковещательным передачам по радиоинтерфейсу, кабельным телевизионным передачам, спутниковым телевизионным передачам, передачам видео по Интернету, кодированному цифровому видео, которое кодируется на носитель данных, или к другим сценариям. Соответственно, канал 16 связи может содержать любую комбинацию беспроводных, проводных сред или носителей данных, подходящих для передачи или хранения кодированных видеоданных.
[0031] Альтернативно, кодированные данные могут выводиться из передатчика 24 в запоминающее устройство 34. Аналогично, доступ к кодированным данным может осуществляться из запоминающего устройства 34 посредством приемника 26. Запоминающее устройство 34 может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое память либо любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных. В дополнительном примере, запоминающее устройство 34 может соответствовать файловому серверу, виртуальному серверу, центру обработки и хранения данных, сети с резервированием центров обработки и хранения данных или другому промежуточному устройству хранения данных, которое может хранить кодированное видео, сформированное посредством устройства-источника 12. Устройство-получатель 14 может осуществлять доступ к сохраненным видеоданным из запоминающего устройства 34 через потоковую передачу или загрузку. Реализация в виде файлового сервера запоминающего устройства 34 или его части может представлять собой любой тип сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в устройство-получатель 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Устройство-получатель 14 может осуществлять доступ к кодированным видеоданным через любое стандартное подключение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем и т.д.) или комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на удаленном или нелокальном запоминающем устройстве 34. Передача кодированных видеоданных из запоминающего устройства 34 может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию означенного.
[0032] В примере по фиг. 1, устройство-источник 12 включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор (модем) 22 и передатчик 24. Устройство-получатель 14 включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. В соответствии с этим раскрытием, видеокодер 20 устройства-источника 12 может быть сконфигурирован с возможностью применять технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, в числе других функций. В других примерах, устройство-источник и устройство-получатель могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные из внешнего видеоисточника, а не интегрированного видеоисточника 18, такого как внешняя камера. Аналогично, устройство-получатель 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства 32 отображения.
[0033] Проиллюстрированная система 10 по фиг. 1 является просто одним примером. Технологии для сохранения одной или более единиц декодирования видеоданных в буфере изображений, получения соответствующего времени удаления из буфера для одной или более единиц декодирования, удаления единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодирования видеоданных, соответствующих удаленным единицам декодирования, могут выполняться посредством любого устройства кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия выполняются посредством устройства кодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Кроме того, технологии этого раскрытия также могут выполняться посредством видеопрепроцессора. Устройство-источник 12 и устройство-получатель 14 являются просто примерами таких устройств кодирования, в которых устройство-источник 12 формирует кодированные видеоданные для передачи в устройство-получатель 14. В некоторых примерах, устройства 12, 14 могут работать практически симметрично так, что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0034] Видеоисточник 18 устройства-источника 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточник 18 представляет собой видеокамеру, устройство-источник 12 и устройство-получатель 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, как упомянуто выше, технологии, описанные в этом раскрытии, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 20. Кодированная видеоинформация затем может быть модулирована посредством модема 22 согласно стандарту связи и передана в устройство-получатель 14 через передатчик 24. Модем 22 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью модуляции сигналов. Передатчик 24 может включать в себя схемы, спроектированные с возможностью передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0035] Приемник 26 устройства-получателя 14 принимает информацию по каналу 16, и модем 28 демодулирует информацию. С другой стороны, процесс кодирования видео может реализовывать одну или более технологий, описанных в данном документе, для того чтобы сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций. Информация, передаваемая по каналу 16, может включать в себя синтаксическую информацию, заданную посредством видеокодера 20, которая также может быть использована посредством видеодекодера 30, который включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку макроблоков, единиц дерева кодирования, слайсов и других кодированных единиц, например, групп изображений (GOP). Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0036] В примере по фиг. 1, канал 16 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 16 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из устройства-источника 12 в устройство-получатель 14, включающих в себя любую надлежащую комбинацию проводных или беспроводных сред. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать связь из устройства-источника 12 в устройство-получатель 14. В других примерах, устройство-источник 12 может сохранять кодированные данные на носитель данных, такой как устройство 24 хранения данных, вместо передачи данных. Аналогично, устройство-получатель 14 может быть сконфигурировано с возможностью извлекать кодированные данные из устройства 24 хранения данных либо из другого носителя или устройства хранения данных.
[0037] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту сжатия видео, такому как стандарты сжатия видео, описанные в данном документе. Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом кодирования. Хотя не показано на фиг. 1, в некоторых аспектах, видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудио-кодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0038] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера, к примеру, один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), устройств беспроводной связи, которые включают в себя устройство кодирования видео, такое как кодер или декодер дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующей камере, компьютере, мобильном устройстве, абонентском устройстве, широковещательном устройстве, абонентской приставке, на сервере и в другом устройстве.
[0039] Видеопоследовательность типично включает в себя серии видеокадров. Группы изображений (GOP), в общем, содержат последовательность из одного или более видеокадров. GOP может включать в себя в заголовке GOP, в заголовке одного или более кадров GOP или в другом месте синтаксические данные, которые описывают число кадров, включенных в GOP. Каждый кадр может включать в себя синтаксические данные кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер 20 типично управляет видеоблоками, также называемыми "единицами кодирования (CU)", в отдельных видеокадрах, для того чтобы кодировать видеоданные. Видеоблок может соответствовать наибольшей единице кодирования (LCU) или сегменту LCU. Видеоблоки могут иметь фиксированный или варьирующийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя множество слайсов. Каждый слайс может включать в себя множество LCU, которые могут размещаться в сегментах, также называемых "суб-CU". LCU также может называться "единицей дерева кодирования".
[0040] В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16×16, 8×8 или 4×4 для компонентов сигнала яркости и 8×8 для компонентов сигнала цветности, а также внешнее прогнозирование для различных размеров блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. В этом раскрытии, "N×N" и "N на N" могут быть использованы взаимозаменяемо для того, чтобы означать размеры в пикселах блока с точки зрения размеров по вертикали и горизонтали, например, 16×16 пикселов или 16 на 16 пикселов. В общем, блок 16×16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок N×N, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать N×M пикселов, причем M не обязательно равно N.
[0041] Видеоблоки могут содержать блоки пикселных данных в пикселной области или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование, к остаточным данным видеоблоков, представляющим пикселные разности между кодированными видеоблоками и прогнозными видеоблоками. В некоторых случаях, видеоблок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
[0042] Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, блоки и различные сегменты, иногда называемые "субблоками", могут считаться видеоблоками. Помимо этого, слайс может считаться множеством видеоблоков, таких как блоки и/или субблоки. Каждый слайс может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Термин "кодированная единица" может означать любую независимо декодируемую единицу видеокадра, такую как весь кадр или слайс кадра, группа изображений (GOP), также называемая "кодированной видеопоследовательностью", или другая независимо декодируемая единица, заданная согласно применимым технологиям кодирования.
[0043] После внутреннего прогнозирующего или внешнего прогнозирующего кодирования для того, чтобы формировать прогнозирующие данные и остаточные данные, и после преобразований (таких, как целочисленное преобразование 4×4 или 8×8, используемое в H.264/AVC, или дискретное косинусное преобразование (DCT)) для того, чтобы формировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[0044] 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).
[0045] LCU может быть ассоциирована со структурой данных в виде дерева квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует LCU. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий, разбивается или нет CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть заданы рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU. Если CU не разбивается дополнительно, она называется "концевой CU". В этом раскрытии, четыре суб-CU концевой CU также называются "концевыми CU", хотя и отсутствует явное разбиение исходной концевой CU. Например, если CU размера 16×16 не разбивается дополнительно, четыре суб-CU 8×8 также могут называться "концевыми CU", хотя CU 16×16 не разбивается.
[0046] Кроме того, TU концевых CU также могут быть ассоциированы с соответствующими структурами данных в виде дерева квадрантов. Иными словами, концевая CU может включать в себя дерево квадрантов, указывающее, как концевая CU сегментируется на TU. Это раскрытие ссылается на дерево квадрантов, указывающее, как LCU сегментируется в качестве дерева квадрантов CU, и на дерево квадрантов, указывающее, как концевая CU сегментируется на TU в качестве дерева квадрантов TU. Корневой узел дерева квадрантов TU, в общем, соответствует концевой CU, в то время как корневой узел дерева квадрантов CU, в общем, соответствует LCU. TU дерева квадрантов TU, которые не разбиваются, могут называться "концевыми TU".
[0047] Концевая CU может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет всю или часть соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для концевой CU, задающей PU, также могут описывать, например, сегментирование CU на одну или более PU. Режимы секционирования могут отличаться в зависимости от того, является CU некодированной, кодированной в режиме внутреннего прогнозирования или кодированной в режиме внешнего прогнозирования. Для внутреннего кодирования, PU может обрабатываться идентично концевой единице преобразования, описанной ниже.
[0048] Концевая CU может включать в себя одну или более единиц преобразования (TU). Единицы преобразования могут указываться с использованием структуры в виде дерева квадрантов TU, как пояснено выше. Иными словами, флаг разбиения может указывать, разбивается или нет концевая CU на четыре единицы преобразования. Затем, каждая единица преобразования дополнительно может разбиваться на 4 суб-TU. Когда TU не разбивается дополнительно, она может называться "концевой TU". В общем, флаг разбиения может указывать, что концевая TU разбивается на TU квадратной формы. Чтобы указывать, что TU разбивается на TU неквадратной формы, могут быть включены другие синтаксические данные, например, синтаксические данные, которые указывают, что TU должны быть сегментированы согласно преобразованию неквадратного дерева квадрантов (NSQT).
[0049] В общем, для внутреннего кодирования, все концевые TU, принадлежащие концевой CU, совместно используют идентичный режим внутреннего прогнозирования. Иными словами, идентичный режим внутреннего прогнозирования, в общем, применяется для того, чтобы вычислять прогнозированные значения для всех TU концевой CU. Для внутреннего кодирования, видеокодер 20 может вычислять остаточное значение для каждой концевой TU с использованием режима внутреннего прогнозирования, в качестве разности между частью прогнозных значений, соответствующей TU, и исходным блоком. Остаточное значение может быть преобразовано, квантовано и сканировано. Для внешнего кодирования, видеокодер может выполнять прогнозирование на уровне PU и может вычислять остаток для каждой PU. Остаточные значения, соответствующие концевой CU, могут быть преобразованы, квантованы и сканированы. Для внешнего кодирования, концевая TU может быть больше или меньше PU. Для внутреннего кодирования, PU может совместно размещаться с соответствующей концевой TU. В некоторых примерах, максимальный размер концевой TU может быть размером соответствующей концевой CU.
[0050] В общем, это раскрытие использует термины CU и TU, чтобы ссылаться на концевую CU и концевую TU, соответственно, если не указано иное. В общем, технологии этого раскрытия связаны с преобразованием, квантованием, сканированием и энтропийным кодированием данных CU. В качестве примера, технологии этого раскрытия включают в себя выбор преобразования, которое следует использовать для того, чтобы преобразовывать остаточное значение внутренне прогнозированного блока на основе режима внутреннего прогнозирования, используемого для того, чтобы прогнозировать блок. Это раскрытие также использует термин "направленное преобразование" или "расчетное преобразование", чтобы означать такое преобразование, которое зависит от направления режима внутреннего прогнозирования. Иными словами, видеокодер может выбирать направленное преобразование, которое должно применяться к единице преобразования (TU). Как отмечено выше, внутреннее прогнозирование включает в себя прогнозирование TU текущей CU изображения из ранее кодированных CU и TU идентичного изображения. Более конкретно, видеокодер 22 может внутренне прогнозировать текущую TU изображения с использованием конкретного режима внутреннего прогнозирования.
[0051] После квантования энтропийное кодирование квантованных данных может выполняться, например, согласно контентно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), энтропийному кодированию на основе сегментирования на интервалы вероятности (PIPE) или другой технологии энтропийного кодирования. Модуль обработки, сконфигурированный для энтропийного кодирования, или другой модуль обработки может выполнять другие функции обработки, такие как кодирование по длинам серий нулей квантованных коэффициентов и/или формирование синтаксической информации, такой как значения шаблона кодированного блока (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодированной единицы (к примеру, кадра, слайса, макроблока или последовательности) или другая синтаксическая информация.
[0052] Видеокодер 20 может быть сконфигурирован с возможностью осуществлять обратное квантование и обратное преобразование, чтобы сохранять декодированные блоки, которые должны быть использованы в качестве ссылки для прогнозирования последующих блоков, например, в идентичном кадре или в кадрах, которые должны временно прогнозироваться. Видеокодер 20 дополнительно может отправлять синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и синтаксические GOP-данные, в видеодекодер 30, например, в заголовке кадра, в заголовке блока, в заголовке слайса или в GOP-заголовке. Синтаксические GOP-данные могут описывать число кадров в соответствующей GOP, и синтаксические данные кадров могут указывать режим кодирования/прогнозирования, используемый для того, чтобы кодировать соответствующий кадр.
[0053] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера или декодера при соответствующих условиях, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логическая схема, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного видеокодера/декодера (кодека). Аппарат, включающий в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0054] В соответствии с технологиями этого раскрытия, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0055] Следующие определения предоставляются относительно примерного видеокодера 20 и/или видеодекодера 30, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0056] В целях описания одного набора примеров, термин "единица декодирования" может задаваться следующим образом:
Единица декодирования: единица доступа или поднабор единицы доступа. Если sub_pic_cpb_flag равен 0, единица декодирования представляет собой единицу доступа; в противном случае единица декодирования представляет собой поднабор единицы доступа. Когда sub_pic_cpb_flag равен 1, первая единица декодирования в единице доступа включает в себя все не-VCL NAL-единицы в единице доступа и первую VCL NAL-единицу в идентичной единице доступа, и каждая другая единица декодирования в единице доступа представляет собой NAL-единицу кодированного слайса, которая не представляет собой первую NAL-единицу кодированного слайса в единице доступа.
[0057] В целях описания второго набора примеров, термин "единица декодирования" может задаваться следующим образом, с дополнительным определением термина "субизображение", используемого в соответствующем примерном определении "единицы декодирования":
Единица декодирования: единица доступа или поднабор единицы доступа. Если sub_pic_cpb_flag равен 0, единица декодирования представляет собой единицу доступа; в противном случае единица декодирования представляет собой поднабор единицы доступа. Когда sub_pic_cpb_flag равен 1, первая единица декодирования в единице доступа включает в себя все не-VCL NAL-единицы в единице доступа и первое субизображение изображения в идентичной единице доступа, и каждая другая единица декодирования в единице доступа представляет собой субизображение, которое не представляет собой первое субизображение в единице доступа.
Субизображение: число блоков кодирования кодированного изображения, непрерывных в порядке декодирования.
[0058] В определении согласно второму набору примеров, предоставленному выше, когда несколько субизображений включаются в слайс, байтовое выравнивание может применяться в конце каждого субизображения, например, в отличие от байтового выравнивания для тайлов в HEVC WD6. Кроме того, точка входа каждого субизображения, за исключением первого субизображения в кодированном изображении, может быть сигнализирована.
[0059] В некоторых альтернативах, когда поток битов содержит несколько масштабируемых слоев или видов, единица декодирования может задаваться как многослойное представление или компонент вида. Все не-VCL-единицы, предшествующие первой VCL NAL-единице многослойного представления или компонента вида, также принадлежат единице декодирования, содержащей многослойное представление или компонент вида.
[0060] Нижеприведенные описания примерной работы гипотетического эталонного декодера (HRD), примерной работы буфера кодированных изображений, примерной синхронизации поступления потока битов, примерной синхронизации удаления единиц декодирования, примерного декодирования единицы декодирования, примерной работы буфера декодированных изображений, примерного удаления изображений из буфера декодированных изображений, примерного вывода изображений и примерной пометки и хранения текущего декодированного изображения предоставляются для того, чтобы иллюстрировать примеры видеокодера 20 и/или видеодекодера 30, который может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций. Операции могут задаваться или выполняться по-иному в других примерах. Таким образом, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью работать согласно различным примерам операций HRD, описанных ниже.
[0061] В качестве одного примера, работа 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-вывода или времени, когда оно становится больше ненужным для опорного элемента внешнего прогнозирования.
[0062] Арифметические вычисления в этих примерах могут выполняться с вещественными значениями, так что ошибки округления не распространяются. Например, число битов в CPB непосредственно до или после удаления единицы декодирования не обязательно является целым числом.
[0063] Переменная tc может извлекаться следующим образом и может называться "тактом синхронизации":
tc=num_units_in_tick÷time_scale (C-1)
[0064] Следующее может указываться для выражения ограничений в примерной модификации приложения HEVC:
пусть единица n доступа является n-й единицей доступа в порядке декодирования, при этом первая единица доступа является единицей 0 доступа;
пусть изображение n является кодированным изображением или декодированным изображением единицы n доступа;
пусть единица m декодирования является m-й единицей декодирования в порядке декодирования, при этом первая единица декодирования является единицей 0 декодирования.
[0065] Некоторые примерные технологии для работы буфера кодированных изображений (CPB) описываются следующим образом. Согласно некоторым технологиям кодирования видео, могут быть реализованы различные способы DPB-управления. Технические требования в разделе HEVC WD6 для операций CPB могут быть модифицированы посредством этого раскрытия и могут применяться независимо к каждому набору параметров CPB, который присутствует, и к обеим точкам соответствия типа I и типа II.
[0066] Некоторые примеры, заключающие в себе синхронизацию поступления потока битов, описываются следующим образом. HRD может быть инициализирован в любом из сообщений с дополнительной улучшающей информацией (SEI) по периоду буферизации. До инициализации CPB может быть пустым. После инициализации, HRD не может быть инициализирован снова посредством последующих сообщений c SEI по периоду буферизации.
[0067] Единица доступа, которая ассоциирована с сообщением с SEI по периоду буферизации, которое инициализирует CPB, может называться "единицей 0 доступа". Каждая единица декодирования может называться "единицей m декодирования", где номер m идентифицирует конкретную единицу декодирования. Первая единица декодирования в порядке декодирования в единице 0 доступа может называться "единицей 0 декодирования". Значение m может увеличиваться на 1 для каждой последующей единицы декодирования в порядке декодирования.
[0068] Время, в которое первый бит единицы m декодирования начинает входить в CPB, может называться "начальным временем tai(m) поступления". Начальное время поступления единиц декодирования может извлекаться следующим образом:
если единица декодирования представляет собой единицу 0 декодирования, tai(0)=0,
в противном случае (единица декодирования представляет собой единицу m декодирования с m>0), может применяться следующее:
если cbr_flag[SchedSelIdx] равен 1, начальное время поступления для единицы m декодирования равно конечному времени поступления (которое извлекается ниже) единицы m-1 декодирования, т.е.:
tai(m)=taf(m-1), (C-2)
в противном случае (cbr_flag[ SchedSelIdx ] равен 0), начальное время поступления для единицы m декодирования извлекается посредством следующего:
tai(m)=Max(taf(m-1), tai,earliest(m)), (C-3)
где tai,earliest(m) извлекается следующим образом.
[0069] Если единица m декодирования не представляет собой первую единицу декодирования последующего периода буферизации, tai,earliest(m) может извлекаться следующим образом:
tai,earliest(m)=tr,n(m)-(initial_cpb_removal_delay[ SchedSelIdx ]+initial_cpb_removal_delay_offset[SchedSelIdx])÷90000, (C-4)
причем tr,n(m) является номинальным временем удаления единицы m декодирования из CPB, как указано, и initial_cpb_removal_delay[SchedSelIdx] и initial_cpb_removal_delay_offset[SchedSelIdx] указываются в предыдущем сообщении c SEI по периоду буферизации;
в противном случае (единица m декодирования представляет собой первую единицу декодирования последующего периода буферизации), tai,earliest(m) может извлекаться следующим образом:
tai,earliest(m)=tr,n(m)-(initial_cpb_removal_delay[ SchedSelIdx ]÷90000), (C-5)
причем initial_cpb_removal_delay[ SchedSelIdx ] указывается в сообщении c SEI по периоду буферизации, ассоциированном с единицей доступа, содержащей единицу m декодирования.
[0070] Конечное время поступления для единицы m декодирования может извлекаться посредством следующего:
taf(m)=tai(m)+b(m)÷BitRate[SchedSelIdx], (C-6)
где b(m) может быть размером в битах единицы m декодирования, подсчета битов VCL NAL-единиц и NAL-единиц заполняющих данных для точки соответствия типа I или всех битов потока битов типа II для точки соответствия типа II.
[0071] В некоторых примерах, значения 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].
[0072] Когда HSS выбирает значения BitRate[SchedSelIdx] или CpbSize[SchedSelIdx], которые отличаются от значений предыдущей единицы доступа, в некоторых примерах может применяться следующее:
переменная BitRate[SchedSelIdx] активируется во время tai(m)
переменная CpbSize[SchedSelIdx] активируется следующим образом:
если новое значение CpbSize[SchedSelIdx] превышает старый CPB-размер, оно активируется во время tai(m),
в противном случае новое значение CpbSize[SchedSelIdx] активируется во время удаления из CPB последней единицы декодирования единицы доступа, содержащей единицу m декодирования.
[0073] Когда sub_pic_cpb_flag равен 1, начальное время tai(n) поступления в CPB единицы n доступа может задаваться равным начальному времени поступления в CPB первой единицы декодирования в единице n доступа, и конечное время taf(n) поступления в CPB единицы n доступа может задаваться равным конечному времени поступления в CPB последней единицы декодирования в единице n доступа.
[0074] Некоторые примеры, заключающие в себе синхронизацию удаления единицы декодирования и декодирования единицы декодирования, описываются следующим образом. Когда единица m декодирования представляет собой единицу декодирования с m, равным 0 (первую единицу декодирования единицы доступа, которая инициализирует HRD), номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
tr,n(0)=initial_cpb_removal_delay[SchedSelIdx]÷90000 (C-7)
[0075] Когда единица m декодирования представляет собой первую единицу декодирования первой единицы доступа периода буферизации, который не инициализирует HRD, номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
tr,n(m)=tr,n(mb)+tc*cpb_removal_delay(m), (C-8)
где tr,n(mb) является номинальным временем удаления первой единицы декодирования предыдущего периода буферизации, и cpb_removal_delay(m) является значением cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении c SEI по синхронизации изображений, ассоциированном с единицей доступа, содержащей единицу m декодирования.
[0076] Когда единица n декодирования представляет собой первую единицу декодирования периода буферизации, mb может задаваться равным m во время tr,n(m) удаления единицы n декодирования. Номинальное время tr,n(m) удаления единицы m декодирования, которая не представляет собой первую единицу декодирования периода буферизации, может задаваться следующим образом:
tr,n(m)=tr,n(mb)+tc*cpb_removal_delay(m), (C-9)
где tr,n(mb) является номинальным временем удаления первой единицы декодирования текущего периода буферизации, и cpb_removal_delay(m) является значением cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении c SEI по синхронизации изображений, ассоциированном с единицей доступа, содержащей единицу m декодирования.
[0077] Время удаления единицы m декодирования может указываться следующим образом:
если low_delay_hrd_flag равен 0, или tr,n(m)>=taf(m), время удаления единицы n декодирования может указываться посредством следующего:
tr(m)=tr,n(m), (C-10)
в противном случае (low_delay_hrd_flag равен 1, и tr,n(m)<taf(m)), время удаления единицы m декодирования указывается посредством следующего:
tr(m)=tr,n(m)+tc*Ceil((taf(m)-tr,n(m))÷tc) (C-11)
Второй случай указывает, что размер b(m) единицы m декодирования является настолько большим, что он предотвращает удаление в номинальное время удаления.
[0078] Когда sub_pic_cpb_flag равен 1, номинальное время tr,n(n) удаления из CPB единицы n доступа может задаваться равным нормальному времени удаления из CPB последней единицы декодирования в единице n доступа, время tr(n) удаления из CPB единицы n доступа может задаваться равным времени удаления из CPB последней единицы декодирования в единице n доступа.
[0079] В некоторых примерах, во время удаления из CPB единицы m декодирования, единица декодирования может быть мгновенно декодирована.
[0080] Некоторые примеры работы буфера декодированных изображений (DPB) описываются следующим образом. Буфер декодированных изображений может содержать буферы для хранения изображений. Каждый из буферов для хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. До инициализации DPB может быть пустым (DPB-заполненность задается равной нулю). Следующие этапы этих примеров технологий этого раскрытия могут происходить в перечисленной последовательности.
[0081] Некоторые примеры удаления изображений из буфера декодированных изображений (DPB) описываются следующим образом. В некоторых примерах, удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка слайса для первого слайса текущего изображения) может происходить мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение) и может продолжаться следующим образом.
[0082] Может активироваться процесс декодирования для набора опорных изображений, как указано в подразделе 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.
[0083] Все изображения k в DPB, для которых все следующие условия являются истинными, могут удаляться из DPB: изображение k помечается как "не используется для ссылки"; изображение k имеет PicOutputFlag, равный 0, или его время DPB-вывода меньше или равно времени удаления из CPB первой единицы декодирования (обозначается в качестве единицы m декодирования) текущего изображения n, т.е. to,dpb(k)<=tr(m).
[0084] Когда изображение удаляется из DPB, DPB-заполненность может быть уменьшена на единицу.
[0085] Некоторые примеры вывода изображений описываются следующим образом. Следующее может происходить мгновенно во время удаления из CPB последней единицы декодирования (обозначается в качестве единицы m декодирования) единицы n доступа (содержащей текущее изображение), tr(m). Изображение n может считаться декодированным после того, как декодируется последняя единица декодирования изображения.
[0086] Переменная maxPicOrderCnt (для максимального номера в порядке изображений (POC)) может задаваться равной максимуму значений PicOrderCntVal (для значения номера в порядке изображений (POC)) для текущего изображения и всех изображений в DPB, которые в данный момент помечаются как "используется для кратковременной ссылки" или которые имеют время DPB-вывода, превышающее tr(m). Переменная minPicOrderCnt (для минимального номера в порядке изображений (POC), т.е. наименьший номер в порядке изображений (POC)), может задаваться равной минимуму PicOrderCntVal для текущего изображения и всех изображений в DPB, которые в данный момент помечаются как "используется для кратковременной ссылки" или которые имеют время DPB-вывода, превышающее tr(m). То, что значение maxPicOrderCnt-minPicOrderCnt должно быть меньше MaxPicOrderCntLsb/2, может быть требованием соответствия потока битов.
[0087] Когда изображение n имеет PicOutputFlag, равный 1, его время to,dpb(n) DPB-вывода может извлекаться посредством следующего:
to,dpb(n)=tr(m)+tc*dpb_output_delay(n), (C-12)
где dpb_output_delay(n) является значением dpb_output_delay, указываемого в сообщении c SEI по синхронизации изображений, ассоциированном с единицей n доступа. Вывод текущего изображения может указываться следующим образом:
если PicOutputFlag равен 1, и to,dpb(n)=tr(m), текущее изображение выводится;
в противном случае, если PicOutputFlag равен 0, текущее изображение не выводится, но может быть сохранено в DPB, как дополнительно указано ниже;
в противном случае (PicOutputFlag равен 1, и to,dpb(n)>tr(m)), текущее изображение выводится позднее и должно быть сохранено в DPB (как дополнительно указано ниже), и выводится во время to,dpb(n), если только не указано, что оно не должно выводиться, посредством декодирования или логического вывода no_output_of_prior_pics_flag, равного 1, во время, которое предшествует to,dpb(n).
[0088] При выводе, текущее или выбранное изображение может быть кадрировано, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности, за счет этого формируя кадрированное изображение на основе выбранного изображения, т.е. текущее изображение. Когда изображение n представляет собой изображение, которое выводится и не является последним изображением потока битов, который выводится, значение Δto,dpb(n) задается следующим образом:
Δto,dpb(n)=to,dpb(nn)-to,dpb(n), (C-13)
где nn указывает изображение, которое следует после изображения n в порядке вывода и имеет PicOutputFlag, равный 1. Более подробная информация процесса скачкообразного вывода и процесса кадрирования предоставляется дополнительно ниже.
[0089] Некоторые примеры, заключающие в себе пометку и хранение текущего декодированного изображения, описываются следующим образом. Следующее может происходить мгновенно во время удаления из CPB последней единицы декодирования единицы n доступа (содержащей текущее изображение), tr(m). Текущее декодированное изображение может быть сохранено в DPB в пустом буфере для хранения изображений, и DPB-заполненность может увеличиваться на единицу. Если текущее изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки", в противном случае оно может помечаться как "не используется для ссылки".
[0090] Следующий примерный синтаксис и семантика для сигнализирования CPB-режима работы предоставляются относительно примерного видеокодера 20 и/или видеодекодера 30, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0091] Некоторые примеры синтаксиса и семантики для сигнализирования CPB-режима работы описываются следующим образом. Синтаксис параметров информации применимости видео (VUI) может быть изменен посредством добавления CPB-флага sub_pic_cpb_flag субизображения, как показано в нижеприведенной таблице 1:
[0092] В этом примере, таблица 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, что может указывать состояние по умолчанию, в котором видеоданные не включают в себя параметры субизображения для декодирования субизображений.
[0093] Некоторые примеры синтаксиса и семантики для сигнализирования времен удаления из 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 кГц.
[0094] В этом примере, элемент 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.
[0095] В некоторых примерах, синтаксис и семантика сообщения с SEI по синхронизации изображений могут быть изменены, как показано в нижеприведенной таблице 2:
[0096] В примере таблицы 2, сообщение c SEI pic_timing включает в себя добавленный сигнал num_decoding_units_minus1, и цикл for по числу единиц декодирования, который сигнализирует соответствующую задержку удаления единицы декодирования из буфера кодированных изображений, когда sub_pic_cpb_flag VUI-параметров, например, согласно вышеприведенной таблице 1, является истинным. Таким образом, сообщение c SEI pic_timing может включать в себя информацию, указывающую число тактов синхронизации, которое следует ожидать до удаления каждой из множества единиц декодирования из буфера кодированных изображений, когда VUI-параметры указывают, что CPB работает на уровне единицы декодирования. Задержка удаления единицы декодирования может быть идентичной задержкой для каждой единицы декодирования в рабочих данных или другой единице данных. В других примерах, различные задержки удаления могут применяться к различным единицам декодирования. Задержка удаления может выражаться с точки зрения числа битов с неявным преобразованием времени для числа битов относительно битовой скорости обработки для применимого синхросигнала.
[0097] Синтаксис сообщения с SEI по синхронизации изображений может зависеть от контента набора параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением с SEI по синхронизации изображений. Тем не менее, если сообщению с SEI по синхронизации изображений единицы доступа на основе мгновенного обновления при декодировании (IDR) не предшествует сообщение c SEI по периоду буферизации в идентичной единице доступа, активация ассоциированного набора параметров последовательности (и, для IDR-изображений, которые не представляют собой первое изображение в потоке битов, определение того, что кодированное изображение представляет собой IDR-изображение) может не возникать до декодирования первой единицы уровня абстракции сети (NAL) кодированного слайса кодированного изображения. Поскольку NAL-единица кодированного слайса кодированного изображения следует после сообщения с SEI по синхронизации изображений в порядке NAL-единиц, могут возникать случаи, в которых декодеру необходимо сохранять первичную байтовую последовательность данных (RBSP), содержащую сообщение c SEI по синхронизации изображений, до определения параметров из набора параметров последовательности, который должен активным для кодированного изображения, и затем выполнять синтаксический анализ сообщения с SEI по синхронизации изображений. Декодер может сохранять одну или более единиц декодирования видеоданных в непрерывном порядке декодирования в буфере изображений.
[0098] Присутствие сообщения с SEI по синхронизации изображений в потоке битов может указываться в одном примере следующим образом: если CpbDpbDelaysPresentFlag равен 1, одно сообщение c SEI по синхронизации изображений может присутствовать в каждой единице доступа кодированной видеопоследовательности. В противном случае CpbDpbDelaysPresentFlag равен 0, и сообщения с SEI по синхронизации изображений не могут присутствовать ни в одной из единиц доступа кодированной видеопоследовательности.
[0099] В этом примере, элемент num_decoding_units_minus1 синтаксиса плюс 1 может указывать число единиц декодирования в единице доступа, с которой ассоциировано сообщение c SEI по синхронизации изображений. Когда sub_pic_cpb_flag равен 0, элемент num_decoding_units_minus1 синтаксиса может не присутствовать, и значение может задаваться или логически выводиться равным 0.
[00100] В этом примере, элемент cpb_removal_delay[i] синтаксиса может указывать, сколько тактов синхронизации следует ожидать после удаления из CPB первой единицы декодирования в единице доступа, ассоциированной с последним сообщением с SEI по периоду буферизации в предшествующей единице доступа, до удаления из CPB i-той единицы декодирования в единице доступа, ассоциированной с сообщением с SEI по синхронизации изображений. Это значение также может быть использовано для того, чтобы вычислять самое раннее время поступления данных единицы декодирования в CPB для HSS. Элемент синтаксиса может представлять собой код фиксированной длины, длина которого в битах задается посредством cpb_removal_delay_length_minus1+1; cpb_removal_delay[i] может представлять собой остаток счетчика по модулю 2(cpb_removal_delay_length_minus1+1).
[0101] Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента cpb_removal_delay[i] синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением с SEI по синхронизации изображений. Тем не менее, cpb_removal_delay[i] может указывать число тактов синхронизации относительно времени удаления первой единицы декодирования в предшествующей единице доступа, содержащей сообщение c SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0102] В этом примере, элемент dpb_output_delay синтаксиса может быть использован для того, чтобы вычислять время DPB-вывода изображения. Элемент dpb_output_delay синтаксиса может указыватьо, сколько тактов синхронизации следует ожидать после удаления последней единицы декодирования в единице доступа из CPB до того, как декодированное изображение выводится из DPB.
[0103] Изображение не может удаляться из 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.
[0104] Время вывода, извлекаемое из dpb_output_delay любого изображения, которое выводится из декодера с соответствием по синхронизации вывода, может предшествовать времени вывода, извлекаемому из dpb_output_delay всех изображений в любой последующей кодированной видеопоследовательности в порядке декодирования. Порядок вывода изображений, установленный посредством значений этого элемента синтаксиса, может быть порядком, идентичным порядку, установленному посредством значений PicOrderCnt. Для изображений, которые не выводятся посредством процесса "скачкообразного" вывода, поскольку они предшествуют, в порядке декодирования, IDR-изображению с no_output_of_prior_pics_flag, равным 1 или логически выведенным равным 1, времена вывода, извлекаемые из dpb_output_delay, могут увеличиваться с увеличением значения PicOrderCnt относительно всех изображений в идентичной кодированной видеопоследовательности. В альтернативном примере, новое сообщение c SEI, которое может называться "сообщением с SEI по синхронизации единиц декодирования", ассоциированным с единицей декодирования, может указываться, чтобы передавать задержку удаления из CPB для ассоциированной единицы декодирования.
[0105] Таким образом, посредством реализации любой комбинации примерных определений, примерная работа HRD, примерной работы буфера кодированных изображений, примерной синхронизации поступления потока битов, примерной синхронизации удаления единиц декодирования, примерного декодирования единицы декодирования, примерной работы буфера декодированных изображений, примерного удаления изображений из буфера декодированных изображений, примерного вывода изображений и примерной пометки и хранения текущего декодированного изображения и примерного синтаксиса и семантики для сигнализирования CPB-режима работы, видеокодер 20 и/или видеодекодер 30 может быть сконфигурирован с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0106] В качестве альтернативы технологиям, описанным выше, единица декодирования может задаваться следующим образом: "Единица доступа или поднабор единицы доступа. Если SubPicCpbFlag равен 0, единица декодирования представляет собой единицу доступа. В противном случае, единица декодирования включает в себя одну или более VCL NAL-единиц и ассоциированных не-VCL NAL-единиц в единице доступа. Для первой VCL NAL-единицы в единице доступа ассоциированные не-VCL NAL-единицы представляют собой не-VCL NAL-единицы в единице доступа и перед первой VCL NAL-единицей и NAL-единицы заполняющих данных, если таковые имеются, идущие сразу после первой не-VCL NAL-единицы. Для VCL NAL-единицы, которая не представляет собой первую VCL NAL-единицу в единице доступа, ассоциированные не-VCL NAL-единицы представляют собой NAL-единицы заполняющих данных, если таковые имеются, идущие сразу после не-VCL NAL-единицы".
[0107] В этом примере, операции гипотетического эталонного декодера (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.
[0108] Переменная SubPicCpbFlag может извлекаться следующим образом:
SubPicCpbFlag=SubPicCpbPreferredFlag&&sub_pic_cpb_params_present_flag (C-1)
[0109] Если SubPicCpbFlag равен 0, CPB может работать на уровне единицы доступа, и каждая единица декодирования может представлять собой единицу доступа. В противном случае, CPB может работать на уровне субизображения, и каждая единица декодирования может представлять собой поднабор единицы доступа.
[0110] Видеодекодер 30/108 может определять, что одна или более единиц декодирования содержат единицы доступа, посредством определения того, что флаг предпочтительного буфера кодированных изображений для субизображений (например, SubPicCpbPreferredFlag), имеет значение в нуль, или что флаг присутствия параметров буфера кодированных изображений для субизображений (например, sub_pic_cpb_params_present_flag) имеет значение в нуль.
[0111] HRD (например, видеокодер 20 и/или видеодекодер 30) может работать следующим образом. Данные, ассоциированные с единицами декодирования, которые протекают в CPB согласно указанному расписанию поступления, могут доставляться посредством HSS. В одном примере, данные, ассоциированные с каждой единицей декодирования, могут удаляться и декодироваться мгновенно посредством процесса мгновенного декодирования во времена удаления из CPB. Каждое декодированное изображение может быть размещено в DPB. Декодированное изображение может удаляться из DPB в более позднее из времени DPB-вывода или времени, когда оно становится больше ненужным для опорного элемента внешнего прогнозирования.
[0112] Арифметические операции, описанные в этом раскрытии, могут выполняться с вещественными значениями, так что ошибки округления не распространяются. Например, число битов в CPB непосредственно до или после удаления единицы декодирования не обязательно может быть целым числом.
[0113] Переменная tc может извлекаться следующим образом и называться "тактом синхронизации":
tc=num_units_in_tick÷time_scale (C-1)
[0114] Следующее может указываться для выражения ограничений в этом примере технологий этого раскрытия:
пусть единица n доступа является n-й единицей доступа в порядке декодирования, при этом первая единица доступа является единицей 0 доступа;
пусть изображение n является кодированным изображением или декодированным изображением единицы n доступа;
пусть единица m декодирования является m-й единицей декодирования в порядке декодирования, при этом первая единица декодирования является единицей 0 декодирования.
[0115] Операции буфера кодированных изображений (CPB) могут задаваться следующим образом. Технические требования в этом примере могут применяться независимо к каждому набору параметров CPB, который присутствует, а также к точкам соответствия типа I и типа II.
[0116] Относительно синхронизации поступления потока битов, HRD может быть инициализирован в любом из сообщений c SEI по периоду буферизации. До инициализации CPB может быть пустым. После инициализации, HRD не может быть инициализирован снова посредством последующих сообщений c SEI по периоду буферизации.
[0117] Каждая единица доступа может называться "соответствующей единицей n доступа", где число n идентифицирует конкретную единицу доступа. Единица доступа, которая ассоциирована с сообщением с SEI по периоду буферизации, которое инициализирует CPB, может называться "единицей 0 доступа". Значение n может увеличиваться на 1 для каждой следующей единицы доступа в порядке декодирования.
[0118] Каждая единица декодирования может называться, соответственно, "единицей m декодирования", где номер m идентифицирует конкретную единицу декодирования. Первая единица декодирования в порядке декодирования в единице 0 доступа может называться "единицей 0 декодирования". Значение m может увеличиваться на 1 для каждой последующей единицы декодирования в порядке декодирования.
[0119] В этом примере, если переменная 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 по периоду буферизации.
[0120] Дополнительно, время, в которое первый бит единицы n доступа начинает поступать в CPB, может называться "начальным временем tai(n) поступления". Начальное время поступления единиц декодирования может извлекаться следующим образом:
если единица декодирования представляет собой единицу 0 декодирования, tai(0)=0;
в противном случае (единица декодирования представляет собой единицу m декодирования с m>0), может применяться следующее:
если cbr_flag[SchedSelIdx] равен 1, начальное время поступления для единицы m декодирования может быть равным конечному времени поступления (которое извлекается ниже) единицы m-1 доступа, т.е.:
tai(m)=taf(m-1), (C-2)
в противном случае (cbr_flag[SchedSelIdx] равен 0), начальное время поступления для единицы m декодирования может извлекаться посредством следующего:
tai(m)=Max(taf(m-1), tai,earliest(m)), (C-3)
где tai,earliest(m) может извлекаться следующим образом:
если единица n декодирования не представляет собой первую единицу декодирования последующего периода буферизации, tai,earliest(m) может извлекаться следующим образом:
tai,earliest(m)=tr,n(m)-(InitCpbRemovalDelay[SchedSelIdx]+InitCpbRemovalDelayOffset[SchedSelIdx])÷90000, (C-4)
причем tr,n(m) является номинальным временем удаления единицы m декодирования из CPB;
в противном случае (единица m декодирования представляет собой первую единицу декодирования последующего периода буферизации), tai,earliest(m) может извлекаться следующим образом:
tai,earliest(m)=tr,n(m)-(InitCpbRemovalDelay[SchedSelIdx]÷90000) (C-5)
[0121] Конечное время taf поступления для единицы m декодирования может извлекаться посредством следующего:
taf(m)=tai(m)+b(m)÷BitRate[SchedSelIdx], (C-6)
где b(m) является размером в битах единицы m декодирования, подсчета битов VCL NAL-единиц и NAL-единиц заполняющих данных для точки соответствия типа I или всех битов потока битов типа II для точки соответствия типа II.
[0122] В некоторых примерах, значения 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].
[0123] Когда HSS выбирает значения BitRate[SchedSelIdx] или CpbSize[SchedSelIdx], которые отличаются от значений предыдущей единицы доступа, может применяться следующее:
переменная BitRate[SchedSelIdx] может активироваться во время tai(n);
переменная CpbSize[SchedSelIdx] может активироваться следующим образом:
если новое значение CpbSize[SchedSelIdx] превышает старый CPB-размер, оно может активироваться во время tai(n);
в противном случае новое значение CpbSize[SchedSelIdx] может активироваться во время удаления из CPB последней единицы декодирования единицы доступа, содержащей единицу m декодирования.
[0124] Когда переменная SubPicCpbFlag равна 1, начальное время tai(n) поступления в CPB единицы n доступа может задаваться равным начальному времени поступления в CPB первой единицы декодирования в единице n доступа, и конечное время taf(n) поступления в CPB единицы n доступа может задаваться равным конечному времени поступления в CPB последней единицы декодирования в единице n доступа. Когда SubPicCpbFlag равен 0, каждая единица декодирования может представлять собой единицу доступа, так что начальные и конечные времена поступления в CPB единицы n доступа могут представлять собой начальные и конечные времена поступления в CPB единицы m декодирования.
[0125] Нижеприведенное пояснение предоставляет пример для синхронизации удаления единицы декодирования и декодирования единицы декодирования. Если SubPicCpbFlag равен 0, переменная CpbRemovalDelay(m) может задаваться равной значению cpb_removal_delay, указываемого в сообщении c SEI по синхронизации изображений, ассоциированном с единицей доступа, которая представляет собой единицу m декодирования. В противном случае, переменная CpbRemovalDelay(m) может задаваться, равной значению du_cpb_removal_delay[i] для единицы m декодирования, указываемой в сообщении c SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит единицу m декодирования.
[0126] Когда единица m декодирования представляет собой единицу декодирования с m, равным 0 (первую единицу декодирования единицы доступа, которая инициализирует HRD), номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
tr,n(0)=InitCpbRemovalDelay[SchedSelIdx]÷90000 (C-7)
[0127] Когда единица m декодирования представляет собой первую единицу декодирования первой единицы доступа периода буферизации, который не инициализирует HRD, номинальное время удаления единицы декодирования из CPB может указываться посредством следующего:
tr,n(m)=tr,n(mb)+tc*CpbRemovalDelay(m), (C-8)
где tr,n(mb) является номинальным временем удаления первой единицы декодирования предыдущего периода буферизации.
[0128] Когда единица m декодирования представляет собой первую единицу декодирования периода буферизации, mb может задаваться равным m во время tr,n(m) удаления единицы m декодирования.
[0129] Номинальное время tr,n(m) удаления единицы m декодирования, которая не представляет собой первую единицу декодирования периода буферизации, может задаваться следующим образом:
tr,n(m)=tr,n(mb)+tc*CpbRemovalDelay(m), (C-9)
где tr,n(mb) является номинальным временем удаления первой единицы декодирования текущего периода буферизации.
[0130] Время удаления единицы m декодирования может указываться следующим образом:
Если low_delay_hrd_flag равен 0, или tr,n(m)>=taf(m), время удаления единицы m декодирования может указываться посредством следующего:
tr(m)=tr,n(m) (C-10)
В противном случае (low_delay_hrd_flag равен 1, и tr,n(m)<taf(m)), и время удаления единицы m декодирования может указываться посредством следующего:
tr(m)=tr,n(m)+tc*Ceil((taf(m)-tr,n(m))÷tc) (C-11)
Второй случай, в этом примере, указывает, что размер b(m) единицы m декодирования является настолько большим, что он предотвращает удаление в номинальное время удаления.
[0131] Когда SubPicCpbFlag равен 1, номинальное время tr,n(n) удаления из CPB единицы n доступа может задаваться равным нормальному времени удаления из CPB последней единицы декодирования в единице n доступа; время tr(n) удаления из CPB единицы n доступа может задаваться равным времени удаления из CPB последней единицы декодирования в единице n доступа. Когда SubPicCpbFlag равен 0, каждая единица m декодирования является единицей n доступа, в этом примере, и, следовательно, номинальное время удаления из CPB и время удаления из CPB единицы n доступа являются номинальным временем удаления из CPB и временем удаления из CPB единицы m декодирования. Во время удаления из CPB единицы m декодирования, в некоторых примерах, может быть мгновенно декодирована единица декодирования.
[0132] В этом примере, буфер декодированных изображений (DPB) может работать следующим образом. Буфер декодированных изображений может содержать один или более буферов для хранения изображений. Каждый из буферов для хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. До инициализации DPB может быть пустым (переменная DPB-заполненности может задаваться равной нулю). Следующие этапы этого примера могут происходить в перечисленной последовательности.
[0133] Во-первых, изображения могут удаляться из 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.
[0134] Когда no_output_of_prior_pics_flag равен 1 или логически выводится равным 1, все буферы для хранения изображений в DPB могут опустошаться без вывода изображений, которые они содержат, и DPB-заполненность может задаваться равной 0. (Последующая обработка, которая может выполняться, если no_output_of_prior_pics_flag имеет значение, которое не равно 1, дополнительно описывается ниже). Все изображения k в DPB, для которых следующие условия являются истинными, могут удаляться из DPB:
изображение k помечается как "не используется для ссылки";
изображение k имеет PicOutputFlag, равный 0, или его время DPB-вывода меньше или равно времени удаления из CPB первой единицы декодирования (обозначается в качестве единицы m декодирования) текущего изображения n; т.е. to,dpb(k)<=tr(m).
[0135] Когда изображение удаляется из DPB, DPB-заполненность может быть уменьшена на единицу. Для вывода изображений следующее может происходить мгновенно во время tr(n) удаления из CPB единицы n доступа:
[0136] Изображение n может считаться декодированным после того, как декодируется последняя единица декодирования изображения.
[0137] Когда изображение n имеет PicOutputFlag, равный 1, его время to,dpb(n) DPB-вывода может извлекаться посредством следующего:
to,dpb(n)=tr(n)+tc*dpb_output_delay(n), (C-12)
где dpb_output_delay(n) является значением dpb_output_delay, указываемого в сообщении c SEI по синхронизации изображений, ассоциированном с единицей n доступа.
[0138] Вывод текущего изображения может указываться следующим образом:
если PicOutputFlag равен 1, и to,dpb(n)=tr(n), текущее изображение может выводиться;
в противном случае, если PicOutputFlag равен 0, текущее изображение может не выводиться, но может быть сохранено в DPB;
в противном случае (PicOutputFlag равен 1, и to,dpb(n)>tr(n)), текущее изображение может выводиться позднее и может быть сохранено в DPB (как указано в подразделе C.3.3 HEVC WD6, модифицированном посредством этого раскрытия) и может выводиться во время to,dpb(n), если только не указано, что оно не должно выводиться, посредством декодирования или логического вывода no_output_of_prior_pics_flag, равного 1, во время, которое предшествует to,dpb(n). Другими словами, текущее изображение может быть сохранено в DPB и может выводиться позднее, например, во время to,dpb(n), если флаг отсутствия вывода предшествующих изображений не равен 1.
[0139] При выводе, изображение может быть кадрировано, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности.
[0140] Когда изображение n представляет собой изображение, которое выводится и не является последним изображением потока битов, который выводится, значение временного интервала Δto,dpb(n) DPB-вывода может задаваться следующим образом:
Δto,dpb(n)=to,dpb(nn)-to,dpb(n), (C-13)
где nn может указывать изображение, которое следует после изображения n в порядке вывода и имеет PicOutputFlag, равный 1, так что временной интервал Δto,dpb(n) DPB-вывода может задаваться как разность между временем DPB-вывода последующего изображения после изображения n в порядке вывода и временем DPB-вывода изображения n.
[0141] Для пометки и хранения текущего декодированного изображения следующее может быть реализовано мгновенно во время tr(n) удаления из CPB единицы n доступа: текущее декодированное изображение может быть сохранено в DPB в пустом буфере для хранения изображений, и DPB-заполненность может увеличиваться на единицу; если текущее изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки", в противном случае оно может помечаться как "не используется для ссылки".
[0142] Для работы относительно порядка вывода DPB буфер декодированных изображений может содержать один или более буферов для хранения изображений. Каждый из буферов для хранения изображений может содержать декодированное изображение, которое помечается как "используется для ссылки" или хранится для будущего вывода. При HRD-инициализации, DPB может быть пустым. Следующие этапы могут происходить в перечисленном порядке.
[0143] Изображения могут удаляться из DPB следующим образом. Удаление изображений из DPB до декодирования текущего изображения (но после синтаксического анализа заголовка слайса для первого слайса текущего изображения) может быть реализовано мгновенно, когда первая единица декодирования единицы доступа, содержащей текущее изображение, удаляется из CPB, и может продолжаться следующим образом.
[0144] Может активироваться процесс декодирования для набора опорных изображений, как указано в подразделе 8.3.4.3 HEVC WD6, модифицированном согласно этому раскрытию (как частично описано выше и как дополнительно описано следующим образом).
[0145] Если текущее изображение представляет собой 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 могут опустошаться без вывода изображений, которые они содержат;
в противном случае, буферы для хранения изображений, содержащие изображение, которые помечаются как "не требуется для вывода" и "не используется для ссылки", могут опустошаться (без вывода).
[0146] Когда любое из следующих условий является истинным, процесс "скачкообразного" вывода, указываемый в подразделе 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.
[0147] Могут выполняться следующие этапы: буферы для хранения изображений, содержащие изображение, которые помечаются как "не требуется для вывода" и "не используется для ссылки", могут опустошаться (без вывода); и все непустые буферы для хранения изображений в DPB могут опустошаться посредством повторной активации процесса "скачкообразного" вывода, указываемого ниже.
[0148] Следовательно, процесс "скачкообразного" вывода может активироваться в любом из следующих случаев:
текущее изображение представляет собой 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, модифицированном посредством этого раскрытия.
[0149] Процесс "скачкообразного" вывода может включать в себя следующие упорядоченные этапы:
1. Изображение, которое является первым для вывода, может быть выбрано в качестве изображения, имеющего наименьшее значение PicOrderCntVal из всех изображений в DPB, помеченных как "требуется для вывода".
2. Изображение кадрируется, с использованием прямоугольника кадрирования, указываемого в активном наборе параметров последовательности для изображения, кадрированное изображение может выводиться, и изображение может помечаться как "не требуется для вывода".
3. Если буфер для хранения изображений, который включает в себя изображение, которое кадрировано и выведено, содержит изображение, помеченное как "не используется для ссылки", буфер для хранения изображений может опустошаться.
[0150] Следующее может происходить мгновенно для декодирования, маркировки и хранения изображений, когда последняя единица декодирования единицы n доступа, содержащей текущее изображение, удаляется из CPB.
[0151] Текущее изображение может считаться декодированным после того, как декодируется последняя единица декодирования изображения. Текущее декодированное изображение может быть сохранено в пустом буфере для хранения изображений в DPB, и может применяться следующее:
если текущее декодированное изображение имеет PicOutputFlag, равный 1, оно может помечаться как "требуется для вывода";
в противном случае (текущее декодированное изображение имеет PicOutputFlag, равный 0), оно может помечаться как "не требуется для вывода".
[0152] Если текущее декодированное изображение представляет собой опорное изображение, оно может помечаться как "используется для ссылки"; в противном случае (текущее декодированное изображение представляет собой неопорное изображение), оно может помечаться как "не используется для ссылки".
[0153] Следовательно, процесс скачкообразного вывода может включать в себя: выбор изображения, имеющего наименьшее значение номера в порядке изображений (POC) из изображений в DPB, которые помечаются как "требуется для вывода", в качестве выбранного изображения; кадрирование выбранного изображения, как точно определено в активном наборе параметров последовательности для выбранного изображения, за счет этого формируя кадрированное изображение на основе выбранного изображения; вывод кадрированного изображения; и пометка выбранного изображения как "не требуется для вывода".
[0154] Элементы синтаксиса могут быть использованы для того, чтобы сигнализировать CPB-режим работы, с использованием семантики, заданной ниже. Синтаксис VUI-параметров и семантика могут быть изменены таким образом, что они являются такими, как показано в нижеприведенной таблице 3 (семантика существующих элементов синтаксиса не изменяется относительно HEVC WD6, в этом примере):
[0155] В примере таблицы 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.
[0156] Элементы синтаксиса также могут быть использованы для того, чтобы сигнализировать времена удаления из CPB единиц декодирования, с использованием семантики, описанной ниже. В этом примере, элементы синтаксиса могут быть сигнализированы в сообщении c SEI по периоду буферизации, например, в соответствии с примером таблицы 4:
[0157] В примере таблицы 4, сообщение c SEI по периоду буферизации включает в себя добавленное условное выражение относительно традиционного HEVC, которое дополнительно включает в себя, когда sub_pic_cpb_flag является истинным, два элемента синтаксиса добавляются, initial_du_cpb_removal_delay[SchedSelIdx] и initial_du_cpb_removal_delay_offset[SchedSelIdx]. Это условное выражение и добавленные элементы синтаксиса могут добавляться в одно или в оба из условных выражений для того, когда NalHrdBpPresentFlag является истинным, и/или когда VclHardBpPresentFlag является истинным.
[0158] Таблица 5 предоставляет альтернативный пример, в котором другое сообщение c SEI задается, чтобы сигнализировать начальную задержку удаления из CPB и смещение начальной задержки удаления из CPB для работы CPB на уровне субизображения:
[0159] В примере вышеприведенной таблицы 4, когда NalHrdBpPresentFlag или VclHrdBpPresentFlag равен 1, сообщение c SEI по периоду буферизации может быть ассоциировано с любой единицей доступа в потоке битов, и сообщение c SEI по периоду буферизации может быть ассоциировано с каждой IDR-единицей доступа, с каждой CRA-единицей доступа и с каждой единицей доступа, ассоциированной с сообщением с SEI для точки восстановления. В некоторых вариантах применения, может требоваться частое присутствие сообщения с SEI по периоду буферизации. В некоторых примерах, период буферизации может указываться в качестве набора единиц доступа между двумя экземплярами сообщения с SEI по периоду буферизации в порядке декодирования.
[0160] В примерах вышеприведенных таблиц 4 и 5, переменная seq_parameter_set_id может указывать набор параметров последовательности, который содержит HRD-атрибуты последовательности. Значение seq_parameter_set_id может быть равным значению seq_parameter_set_id в наборе параметров изображения, на который ссылается первичное кодированное изображение, ассоциированное с сообщением с SEI по периоду буферизации. В некоторых примерах, значение seq_parameter_set_id может быть в диапазоне от 0 до 31, включительно.
[0161] В примере вышеприведенной таблицы 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 кГц.
[0162] В примере вышеприведенной таблицы 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.
[0163] В примерах вышеприведенных таблиц 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 кГц.
[0164] В примерах вышеприведенных таблиц 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.
[0165] По всей кодированной видеопоследовательности сумма initial_du_cpb_removal_delay[SchedSelIdx] и initial_du_cpb_removal_delay_offset[SchedSelIdx] может быть постоянной для каждого значения SchedSelIdx.
[0166] Нижеприведенная таблица 6 предоставляет примерный синтаксис сообщений c SEI по синхронизации изображений:
[0167] В этом примере, сообщение c SEI по синхронизации изображений включает в себя добавленное условное выражение для sub_pic_cpb_flag, которое, когда является истинным, сигнализирует элемент num_decoding_units_minus1 синтаксиса, и цикл for, который сигнализирует, для каждой из единиц декодирования, соответствующие numb_nalus_in_du_minus1 и du_cpb_removal_delay. Альтернативно, преобразование NAL-единиц в каждую единицу декодирования может быть сигнализировано с использованием другого средства, например, посредством включения идентификатора единицы декодирования для каждой VCL NAL-единицы, например, в заголовке NAL-единицы, в заголовке слайса или в новом сообщении c SEI. Идентификатор декодирования для каждой не-VCL NAL-единицы может быть идентичным ассоциированной VCL NAL-единице.
[0168] Синтаксис сообщения с SEI по синхронизации изображений в примере таблицы 6 может зависеть от контента набора параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением с SEI по синхронизации изображений. Тем не менее, если сообщению с SEI по синхронизации изображений IDR-единицы доступа не предшествует сообщение c SEI по периоду буферизации в идентичной единице доступа, активация ассоциированного набора параметров последовательности (и, для IDR-изображений, которые не представляют собой первое изображение в потоке битов, определение того, что кодированное изображение представляет собой IDR-изображение) может не возникать до декодирования первой NAL-единицы кодированного слайса кодированного изображения. Поскольку NAL-единица кодированного слайса кодированного изображения может следовать после сообщения с SEI по синхронизации изображений в порядке NAL-единиц, здесь могут возникать случаи, в которых декодер сохраняет RBSP, содержащую сообщение c SEI по синхронизации изображений, до определения параметров параметра последовательности, который должен быть активным для кодированного изображения, и затем выполняет синтаксический анализ сообщения с SEI по синхронизации изображений.
[0169] Присутствие сообщения с SEI по синхронизации изображений, согласно примеру таблицы 6, в потоке битов может указываться следующим образом.
если CpbDpbDelaysPresentFlag равен 1, одно сообщение c SEI по синхронизации изображений может присутствовать в каждой единице доступа кодированной видеопоследовательности;
в противном случае (CpbDpbDelaysPresentFlag равен 0), сообщения с SEI по синхронизации изображений не должны присутствовать ни в одной из единиц доступа кодированной видеопоследовательности.
[0170] Переменная 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+1). Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента cpb_removal_delay синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для первичного кодированного изображения, ассоциированного с сообщением с SEI по синхронизации изображений. Тем не менее, cpb_removal_delay может указывать число тактов синхронизации относительно времени удаления предшествующей единицы доступа, содержащей сообщение c SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0171] Переменная dpb_output_delay может быть использована для того, чтобы вычислять время DPB-вывода изображения. Эта переменная может указывать, сколько тактов синхронизации следует ожидать после удаления последней единицы декодирования в единице доступа из CPB до того, как декодированное изображение выводится из DPB (см. подраздел C.2 HEVC WD6). В этом примере, изображение не может удаляться из DPB во время вывода, когда оно по-прежнему помечается как "используется для кратковременной ссылки" или "используется для долговременной ссылки". В этом примере, только одна переменная dpb_output_delay может указываться для декодированного изображения.
[0172] Длина элемента dpb_output_delay синтаксиса может быть задана в битах посредством dpb_output_delay_length_minus1+1. Когда max_dec_pic_buffering[max_temporal_layers_minus1] равен 0, dpb_output_delay также может быть равным 0.
[0173] Время вывода, извлекаемое из dpb_output_delay любого изображения, которое выводится из декодера с соответствием по синхронизации вывода, как указано в подразделе C.2 HEVC WD6, модифицированном посредством этого раскрытия, может предшествовать времени вывода, извлекаемому из dpb_output_delay всех изображений в любой последующей кодированной видеопоследовательности в порядке декодирования.
[0174] Порядок вывода изображений, установленный посредством значений этого элемента синтаксиса, может быть порядком, идентичным порядку, установленному посредством значений PicOrderCnt, как указано посредством подраздела C.5 HEVC WD6.
[0175] Для изображений, которые не выводятся посредством процесса "скачкообразного" вывода подраздела C.5 HEVC WD6, модифицированного посредством этого раскрытия, поскольку они предшествуют, в порядке декодирования, IDR-изображению с no_output_of_prior_pics_flag, равным 1 либо заданным или логически выведенным равными 1, времена вывода, извлекаемые из dpb_output_delay, могут увеличиваться с увеличением значения PicOrderCnt относительно всех изображений в идентичной кодированной видеопоследовательности.
[0176] Переменная num_decoding_units_minus1 плюс 1 может указывать число единиц декодирования в единице доступа, с которой ассоциировано сообщение c SEI по синхронизации изображений. Значение num_decoding_units_minus1 может быть, например, в диапазоне от 0 до X, включительно.
[0177] Переменная num_nalus_in_du_minus1[i] плюс 1 может указывать число NAL-единиц в i-й единице декодирования единицы доступа, с которой ассоциировано сообщение c SEI по синхронизации изображений. Значение num_nalus_in_du_minus1[i] может быть, например, в диапазоне от 0 до X, включительно.
[0178] Первая единица декодирования единицы доступа может включать в себя первые num_nalus_in_du_minus1[0]+1 последовательных NAL-единиц в порядке декодирования в единице доступа. I-тая (где i больше 0) единица декодирования единицы доступа может включать в себя num_nalus_in_du_minus1[i]+1 последовательных NAL-единиц, идущих сразу после последней NAL-единицы в предыдущей единице декодирования единицы доступа в порядке декодирования. Может быть, например по меньшей мере одна VCL NAL-единица в каждой единице декодирования.
[0179] Переменная 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+1). Значение cpb_removal_delay_length_minus1, которое определяет длину (в битах) элемента du_cpb_removal_delay[i] синтаксиса, может представлять собой значение cpb_removal_delay_length_minus1, кодированное в наборе параметров последовательности, который является активным для кодированного изображения, ассоциированного с сообщением с SEI по синхронизации изображений. Тем не менее, du_cpb_removal_delay[i] указывает число тактов синхронизации относительно времени удаления первой единицы декодирования в предшествующей единице доступа, содержащей сообщение c SEI по периоду буферизации, которая может представлять собой единицу доступа другой кодированной видеопоследовательности.
[0180] Фиг. 2 является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовывать технологии, связанные с сохранением одной или более единиц декодирования видеоданных в буфере изображений, получением соответствующего времени удаления из буфера для одной или более единиц декодирования, удалением единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодированием видеоданных, соответствующих удаленным единицам декодирования, в числе других функций, как описано в этом раскрытии. Видеокодер 20 может выполнять внутреннее и внешнее кодирование блоков в видеокадрах, включающих в себя единицы кодирования (CU) или суб-CU CU. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может упоминаться как любой из нескольких режимов пространственного сжатия, а внешние режимы, такие как однонаправленное прогнозирование (P-режим) или двунаправленное прогнозирование (B-режим), могут упоминаться как любой из нескольких режимов временного сжатия. Хотя некоторые компоненты для кодирования во внешнем режиме проиллюстрированы на фиг. 2, следует понимать, что видеокодер 20 дополнительно может включать в себя компоненты для кодирования во внутреннем режиме, к примеру, модуль 46 внутреннего прогнозирования. Дополнительные компоненты, которые также могут быть включены, не иллюстрируются на фиг. 2 для краткости и ясности.
[0181] Как показано на фиг. 2, видеокодер 20 принимает видеоблоки, включающие в себя текущий видеоблок, в видеокадре, который должен быть кодирован. В примере по фиг. 2, видеокодер 20 включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, память 64 опорных изображений, сумматор 50, модуль 52 преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования, буфер 90 и буфер 92 кодированных изображений. Для восстановления видеоблоков видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62.
[0182] Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, которая должна быть кодирована. Кадр или слайс может быть разделен на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют внешнее прогнозирующее кодирование принимаемого видеоблока относительно одного или более блоков в одном или более опорных кадров, чтобы предоставлять временное сжатие. Модуль 46 внутреннего прогнозирования также может выполнять внутреннее прогнозирующее кодирование принимаемого видеоблока относительно одного или более соседних блоков в идентичном кадре или слайсе, что и блок, который должен быть кодирован, чтобы предоставлять пространственное сжатие.
[0183] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренних или внешних, например, на основе результатов по ошибкам и может предоставлять результирующий внутренне или внешне кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного кадра.
[0184] Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения типично является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в пределах прогнозирующего опорного кадра (или другой кодированной единицы) относительно текущего блока, кодируемого в пределах текущего кадра (или другой кодированной единицы). Прогнозный блок представляет собой блок, для которого обнаруживается, что он практически совпадает с блоком, который должен быть кодирован, с точки зрения пикселной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей. Вектор движения также может указывать смещение сегмента макроблока. Компенсация движения может заключать в себе выборку или формирование прогнозного блока на основе вектора движения, определенного посредством оценки движения. Как отмечено выше, в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы.
[0185] В случае внешнего кодирования модуль 42 оценки движения вычисляет вектор движения для видеоблока внешне кодированного кадра посредством сравнения видеоблока с видеоблоками опорного кадра в памяти 64 опорных изображений. Модуль 44 компенсации движения также может интерполировать субцелочисленные пикселы опорного кадра, например, I-кадра или P-кадра. В качестве примера, векторы движения могут быть прогнозированы из двух списков опорных кадров: список 0, который включает в себя опорные кадры, имеющие порядок отображения ближе кодируемого текущего кадра, и список 1, который включает в себя опорные кадры, имеющие порядок отображения дальше кодируемого текущего кадра. Следовательно, данные, сохраненные в памяти 64 опорных изображений, могут быть организованы согласно этим двум спискам опорных кадров.
[0186] Модуль 42 оценки движения сравнивает блоки одного или более опорных кадров из памяти 64 опорных изображений с блоком, который должен быть кодирован, текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в памяти 64 опорных изображений включают в себя значения для субцелочисленных пикселов, вектор движения, вычисленный посредством модуля 42 оценки движения, может ссылаться на местоположение субцелочисленного пиксела опорного кадра. Модуль 42 оценки движения и/или модуль 44 компенсации движения также может быть сконфигурирован с возможностью вычислять значения для субцелочисленнопикселных позиций опорных кадров, сохраненных в памяти 64 опорных изображений, если значения для субцелочисленнопикселных позиций не сохраняются в памяти 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения. Блок опорного кадра, идентифицированный посредством вектора движения, может называться "прогнозным блоком".
[0187] Модуль 44 компенсации движения может вычислять прогнозирующие данные на основе прогнозного блока. Видеокодер 20 формирует остаточный видеоблок посредством вычитания прогнозирующих данных, предоставленных посредством модуля 44 компенсации движения, из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 преобразования может выполнять другие преобразования, к примеру, преобразования заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. В качестве других примеров, модуль 52 преобразования может выполнять вейвлет-преобразования, целочисленные преобразования, подполосные преобразования или другие типы преобразований. Модуль 52 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пикселной области в область преобразования, такую как частотная область. Модуль 54 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования.
[0188] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контентно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), энтропийное кодирование с сегментированием на интервалы вероятности (PIPE) или другую технологию энтропийного кодирования. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, кодированные видеоданные могут быть буферизованы или сохранены более или менее временно в буфере 92 кодированных изображений, переданы в другое устройство и/или заархивированы для последующей передачи или извлечения. В случае контекстно-адаптивного двоичного арифметического кодирования контекст может быть основан на соседних макроблоках.
[0189] В некоторых случаях, модуль 56 энтропийного кодирования или другой модуль видеокодера 20 может быть сконфигурирован с возможность выполнять другие функции кодирования, в дополнение к энтропийному кодированию. Например, модуль 56 энтропийного кодирования может быть сконфигурирован с возможностью определять значения шаблона кодированного блока (CBP) для макроблоков и сегментов. Кроме того, в некоторых случаях, модуль 56 энтропийного кодирования может выполнять кодирование по длинам серий коэффициентов в наибольшей единице кодирования (LCU) или суб-CU LCU. В частности, модуль 56 энтропийного кодирования может применять зигзагообразное сканирование или другой шаблон сканирования, чтобы сканировать коэффициенты преобразования в LCU или сегментировать и кодировать серии нулей для дополнительного сжатия. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут формировать единицы декодирования из кодированных видеоданных. Единицы декодирования могут представлять собой, например, субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут добавлять дополняющие данные для субизображений с различными размерами, чтобы достигать байтового выравнивания. Модуль 56 энтропийного кодирования также может составлять информацию заголовка с надлежащими элементами синтаксиса для передачи в кодированном потоке видеобитов. Например, информация заголовка может включать в себя служебные данные, указывающие, представляют собой единицы декодирования единицы доступа или субединицы доступа. Она может включать в себя передачу служебных сигналов значения для флага предпочтительного буфера кодированных изображений для субизображений, сигнализируемого в HRD-параметрах. Модуль 56 энтропийного кодирования и/или другие элементы видеокодера 20 также могут, например, добавлять элементы синтаксиса, к примеру, сообщения с SEI по периоду буферизации, служебные VUI-параметры, служебные данные, указывающие точки входа для различных субизображений и/или времена удаления из буфера для единиц декодирования.
[0190] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пикселной области, к примеру, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока с прогнозным блоком одного из кадров памяти 64 опорных изображений. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять субцелочисленнопикселные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в памяти 64 опорных изображений. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы внешне кодировать блок в последующем видеокадре.
[0191] Память 64 опорных изображений может включать в себя буфер 90. Буфер 90 может быть или включать в себя, или быть включен в запоминающее устройство, к примеру, в любое долговременное или энергозависимое память, допускающее сохранение данных, такое как синхронное динамическое оперативное память (SDRAM), встроенное динамическое оперативное память (eDRAM) или статическое оперативное память (SRAM). Буфер 90 может включать в себя буферы изображений и/или буферы декодированных изображений и может работать согласно любой комбинации примерных режимов работы буфера кодированных изображений и/или буфера декодированных изображений, описанных в этом раскрытии. Например, видеокодер 20 может выполнять управление шаблоном декодированного блока (DPB) с использованием буфера 90 и/или управление шаблоном кодированного блока (CPB) в буфере 92 кодированных изображений в соответствии с технологиями этого раскрытия.
[0192] Буфер 92 кодированных изображений может быть или включать в себя, или быть включен в запоминающее устройство, к примеру, в любое долговременное или энергозависимое память, допускающее сохранение данных, такое как синхронное динамическое оперативное память (SDRAM), встроенное динамическое оперативное память (eDRAM) или статическое оперативное память (SRAM). Хотя, показан как составляющий часть видеокодера 20, в некоторых примерах, буфер 92 кодированных изображений может представлять собой часть устройства, блока или модуля, внешнего для видеокодера 20. Например, буфер 92 кодированных изображений может представлять собой часть модуля планировщика потоков (планировщика доставки или гипотетического планировщика потоков (HSS)), внешнего для видеокодера 20. Видеокодер 20 может формировать единицы декодирования из кодированных видеоданных и предоставлять единицы декодирования в модуль планировщика потоков. В некоторых примерах, видеокодер 20 может формировать единицы декодирования с варьирующимися числами битов или варьирующимися числами блоков. Модуль планировщика потоков может реализовывать технологии этого раскрытия, чтобы отправлять единицы декодирования, включающие в себя субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов, в видеодекодер для декодирования во времена, которые могут указываться посредством полученного (например, сигнализируемого) времени удаления из буфера. В некоторых примерах, видеокодер 20 может формировать единицы декодирования, каждая из которых включает в себя число блоков кодирования, размещаемых непрерывно в порядке декодирования. Модуль планировщика потоков дополнительно может декапсулировать единицы доступа для того, чтобы извлекать одну или более единиц уровня абстракции сети (NAL), включающих в себя единицы декодирования. Аналогично, модуль планировщика потоков может декапсулировать NAL-единицы для того, чтобы извлекать единицы декодирования.
[0193] Видеокодер 20 может сохранять единицы доступа и удалять единицы доступа из буфера 92 кодированных изображений в соответствии с режимом работы гипотетического эталонного декодера (HRD), модифицированным посредством технологий этого раскрытия. Видеокодер 20 может применять HRD-параметры, включающие в себя начальную задержку удаления из CPB, CPB-размер, скорость передачи битов, начальную задержку DPB-вывода и DPB-размер, а также времена удаления из буфера для единиц декодирования и значения для флагов предпочтительного буфера кодированных изображений для субизображений для того, чтобы сигнализировать, например, что представляют собой единицы декодирования видеоданных единицы доступа или поднаборы единиц доступа. Видеокодер 20 может формировать сообщения с SEI в единицах доступа, которые сигнализируют периоды буферизации и времена удаления из буфера для единиц декодирования. Например, видеокодер 20 может предоставлять параметры информации применимости видео (VUI) с синтаксисом, который включает в себя CPB-флаг субизображения, такой как в примере вышеприведенной таблицы 1.
[0194] Единицы декодирования могут включать в себя субизображения общего изображения, и видеокодер 20 может включать времена удаления из буфера для каждого из субизображений общего изображения в сообщения с SEI для единиц доступа. Различные субизображения могут быть кодированы с помощью различных объемов данных, причем некоторые субизображения кодируются в различных числах битов или блоках, и видеокодер 20 может формировать надлежащее соответствующее время удаления из буфера для каждого из субизображений общего изображения. Видеокодер 20 также может кодировать некоторые изображения с субизображениями с идентичным размером данных. Другие компоненты также могут выполнять одну или более функций, приписанных выше видеокодеру 20. Например, модуль инкапсуляции устройства-источника (к примеру, устройство-источник 12 по фиг. 1) также может формировать сообщения с SEI, которые включают в себя любой из вышеуказанных параметров.
[0195] Следовательно, видеокодер 20 может предоставлять, что каждое субизображение может включать в себя число блоков кодирования кодированного изображения, непрерывных в порядке декодирования, и так, что блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока. Видеокодер 20 может предоставлять, что кодирование субизображений и выделение битов различным субизображениям в изображении могут выполняться без необходимости кодирования каждого субизображения (т.е. группы древовидных блоков) в одном изображении с идентичным числом битов. Видеокодер 20 может сигнализировать время удаления из CPB для каждого субизображения в потоке битов вместо извлечения времен удаления из CPB согласно сигнализируемым временам удаления из CPB на уровне изображения. Видеокодер 20 также может включать в себя несколько субизображений в слайсе и применять байтовое выравнивание в конце каждого субизображения. Видеокодер 20 также может сигнализировать точку входа каждого субизображения со значением, которое указывает байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Видеокодер 20 может применять любой один или более этих признаков в различных примерах в соответствии с этим раскрытием.
[0196] Местоположения, показанные для памяти 64 опорных изображений, буфера 90 и буфера 92 кодированных изображений на фиг. 2, служат в качестве иллюстрации. Память 64 опорных изображений, буфер 90 и буфер 92 кодированных изображений могут быть расположены в одном устройстве хранения данных или в любом числе различных устройств хранения данных. Устройства хранения данных могут включать в себя любую комбинацию энергозависимых и/или энергонезависимых считываемых компьютером носителей.
[0197] Таким образом, видеокодер 20 представляет пример видеокодера, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования, в числе других функций.
[0198] Фиг. 3 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере по фиг. 3, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 опорных изображений, сумматор 80, буфер 94 кодированных изображений и буфер 96. Видеодекодер 30, в некоторых примерах, может выполнять проход декодирования, в общем, взаимно-обратный относительно прохода кодирования, описанного относительно видеокодера 20 (фиг. 2). Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, принимаемых из модуля 70 энтропийного декодирования.
[0199] Модуль 72 компенсации движения может использовать векторы движения, принятые в потоке битов, чтобы идентифицировать прогнозный блок в опорных кадрах в памяти 82 опорных изображений. Модуль 74 внутреннего прогнозирования может использовать режимы внутреннего прогнозирования, принятые в потоке битов, чтобы формировать прогнозный блок из пространственно смежных блоков. Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные блочные коэффициенты, предоставленные в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, как задано посредством стандарта декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QPY квантования, вычисленного посредством кодера 20 для каждого макроблока, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться.
[0200] Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пикселной области. Модуль 72 компенсации движения формирует блоки с компенсацией движения, возможно выполняя интерполяцию на основе интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, которые должны использоваться для оценки движения с субпикселной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать интерполяционные фильтры, используемые посредством видеокодера 20 в ходе кодирования видеоблока, чтобы вычислять интерполированные значения для субцелочисленных пикселов опорного блока. Модуль 72 компенсации движения может определять интерполяционные фильтры, используемые посредством видеокодера 20 согласно принимаемой синтаксической информации, и использовать интерполяционные фильтры, чтобы формировать прогнозные блоки.
[0201] Модуль 72 компенсации движения использует часть из синтаксической информации для того, чтобы определять размеры блоков, используемых для того, как кодировать кадр(ы) кодированной видеопоследовательности, информации сегментов, которая описывает, как сегментируется каждый макроблок кадра кодированной видеопоследовательности, режимов, указывающих, как кодируется каждый сегмент, одного или более опорных кадров (и списков опорных кадров) для каждого внешне кодированного макроблока или сегмента, и другой информации, для того чтобы декодировать кодированную видеопоследовательность. Сумматор 80 суммирует остаточные блоки с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения или модуля 74 внутреннего прогнозирования, чтобы формировать декодированные блоки.
[0202] Память 82 опорных изображений может включать в себя буфер 96. Буфер 96 может быть или включать в себя запоминающее устройство, к примеру, в любое долговременное или энергозависимое память, допускающее сохранение данных, такое как синхронное динамическое оперативное память (SDRAM), встроенное динамическое оперативное память (eDRAM) или статическое оперативное память (SRAM). Буфер 96 может включать в себя один или более буферов изображений и/или один или более буферов декодированных изображений и может работать согласно любой комбинации примерных режимов работы буфера кодированных изображений и/или буфера декодированных изображений, описанных в этом раскрытии. Например, видеодекодер 30 может выполнять DPB-управление с использованием буфера 96 и/или CPB-управление в буфере 94 кодированных изображений в соответствии с технологиями этого раскрытия.
[0203] Буфер 94 кодированных изображений может быть реализован как запоминающее устройство, к примеру, в любое долговременное или энергозависимое память, допускающее сохранение данных, такое как синхронное динамическое оперативное память (SDRAM), встроенное динамическое оперативное память (eDRAM) или статическое оперативное память (SRAM). Буфер 94 кодированных изображений может работать согласно любой комбинации примерных режимов работы буфера кодированных изображений, раскрытых в данном документе.
[0204] Хотя, показан как составляющий часть видеодекодера 30, в некоторых примерах, буфер 94 кодированных изображений может представлять собой часть устройства, блока или модуля, внешнего для видеодекодера 30. Например, буфер 94 кодированных изображений может представлять собой часть модуля планировщика потоков, внешнего для видеодекодера 30. Модуль планировщика потоков может реализовывать технологии этого раскрытия, чтобы отправлять единицы декодирования, включающие в себя субизображения, к примеру, последовательность древовидных блоков, один или более слайсов, одну или более волн и/или один или более тайлов, в видеодекодер 30 для декодирования во времена, указываемые посредством полученного (например, сигнализируемого) времени удаления из буфера. Модуль планировщика потоков дополнительно может декапсулировать единицы доступа для того, чтобы извлекать одну или более единиц уровня абстракции сети (NAL), включающих в себя единицы декодирования. Аналогично, модуль планировщика потоков может декапсулировать NAL-единицы для того, чтобы извлекать единицы декодирования.
[0205] Видеодекодер 30 может принимать и сохранять единицы доступа и удалять единицы доступа из буфера 94 кодированных изображений в соответствии с режимом работы гипотетического эталонного декодера (HRD), модифицированным посредством технологий этого раскрытия. Видеодекодер 30 может декодировать и получать HRD-параметры, включающие в себя начальную задержку удаления из CPB, CPB-размер, скорость передачи битов, начальную задержку DPB-вывода и DPB-размер, а также времена удаления из буфера для единиц декодирования и значения для флагов предпочтительного буфера кодированных изображений для субизображений, который сигнализирует, например, что представляют собой единицы декодирования видеоданных единицы доступа или поднаборы единиц доступа. Видеодекодер 30 может декодировать и получать сообщения с SEI в единицах доступа, которые сигнализируют периоды буферизации и времена удаления из буфера для единиц декодирования. Например, видеодекодер 30 может декодировать и получать параметры информации применимости видео (VUI) с синтаксисом, который включает в себя CPB-флаг субизображения, такой как в примере вышеприведенной таблицы 1.
[0206] Единицы декодирования могут включать в себя субизображения общего изображения, и видеодекодер 30 может декодировать и получать времена удаления из буфера для каждого из субизображений общего изображения в сообщениях c SEI для единиц доступа. Различные субизображения могут быть кодированы с помощью различных объемов данных, причем некоторые субизображения кодируются в различных числах битов или блоках, и видеодекодер 30 может декодировать и получать надлежащее соответствующее время удаления из буфера для каждого из субизображений общего изображения. Видеодекодер 30 также может декодировать и получать некоторые изображения с субизображениями с идентичным размером данных.
[0207] Следовательно, видеодекодер 30 может декодировать и получать субизображения, которые могут включать в себя число блоков кодирования кодированного изображения, непрерывных в порядке декодирования, и так, что блок кодирования может быть идентичным древовидному блоку или поднабору древовидного блока. Видеодекодер 30, в некоторых примерах, может декодировать и получать времена удаления из CPB для каждого субизображения в потоке битов, вместо извлечения времен удаления из CPB согласно сигнализируемым временам удаления из CPB на уровне изображения. Видеодекодер 30 также может декодировать и получать несколько субизображений в слайсе и может принимать информацию байтового смещения, указывающую начальные точки для каждой единицы декодирования, чтобы определять, где начинается каждая единица декодирования, и декодировать, и получать информацию относительно дополнительного сигнала без данных или дополняющего сигнала, который предоставляет байтовое выравнивание в конце каждого субизображения. Видеодекодер 30 также может получать точку входа каждого субизображения со значением, которое указывает байтовое выравнивание по меньшей мере одного из субизображений в пределах большего набора видеоданных, такого как, например, слайс, тайл или кадр. Видеодекодер 30 может применять любой один или более этих признаков в различных примерах в соответствии с этим раскрытием.
[0208] Местоположения, показанные для памяти 82 опорных изображений, буфера 96 и буфера 94 кодированных изображений на фиг. 3, служат в качестве иллюстрации. Память 82 опорных изображений, буфер 96 и буфер 94 кодированных изображений могут быть расположены в одном устройстве хранения данных или в любом числе различных устройств хранения данных. Устройства хранения данных могут включать в себя любую комбинацию энергозависимых и/или энергонезависимых считываемых компьютером носителей.
[0209] Таким образом, видеодекодер 30 представляет пример видеокодера, сконфигурированного с возможностью сохранять одну или более единиц декодирования видеоданных в буфере изображений, получать соответствующее время удаления из буфера для одной или более единиц декодирования, удалять единицы декодирования из буфера изображений в соответствии с полученным временем удаления из буфера для каждой из единиц декодирования и кодировать видеоданные, соответствующие удаленным единицам декодирования.
[0210] Фиг. 4 является блок-схемой, иллюстрирующей примерное устройство-получатель 100, которое может реализовывать любые из технологий этого раскрытия. В этом примере, устройство-получатель 100 включает в себя интерфейс 102 ввода, планировщик 104 потоков, буфер 106 кодированных изображений, видеодекодер 108, буфер 110 декодированных изображений, модуль 112 рендеринга и интерфейс 114 вывода. Устройство-получатель 100 может практически соответствовать устройству-получателю 14 (фиг. 1). Интерфейс 102 ввода может содержать любой интерфейс ввода, допускающий прием кодированного потока битов видеоданных. Например, интерфейс 102 ввода может содержать приемник 26 и/или модем 28 так, как показано на фиг. 1, сетевой интерфейс, к примеру, проводной или беспроводной интерфейс, память или интерфейс запоминающего устройства, накопитель для считывания данных с диска, к примеру, интерфейс накопителя на оптических дисках или интерфейс магнитных носителей либо другой компонент интерфейса.
[0211] Интерфейс 102 ввода может принимать кодированный поток битов, включающий в себя видеоданные, и предоставлять поток битов в планировщик 104 потоков. В соответствии с технологиями этого раскрытия, планировщик 104 потоков извлекает единицы видеоданных, к примеру, единицы доступа и/или единицы декодирования, из потока битов и сохраняет извлеченные единицы в буфер 106 кодированных изображений. Таким образом, планировщик 104 потоков представляет примерную реализацию HSS, как пояснено в вышеприведенных примерах. Буфер 106 кодированных изображений может практически соответствовать буферу 94 кодированных изображений (фиг. 3), за исключением того, что как показано на фиг. 4, буфер 106 кодированных изображений является отдельным от видеодекодера 108. Буфер 106 кодированных изображений может быть отдельным или интегрированным в качестве части видеодекодера 108 в различных примерах.
[0212] Видеодекодер 108 включает в себя буфер 110 декодированных изображений. Видеодекодер 108 может практически соответствовать видеодекодеру 30 фиг. 1 и 3. Буфер 110 декодированных изображений может практически соответствовать буферу 96. Таким образом, видеодекодер 108 может декодировать единицы декодирования буфера 106 кодированных изображений в соответствии с технологиями этого раскрытия.
[0213] Кроме того, видеодекодер 108 может выводить декодированные изображения из буфера 110 декодированных изображений в соответствии с технологиями этого раскрытия, как пояснено выше. Видеодекодер 108 может передавать выходные изображения в модуль 112 рендеринга. Модуль 112 рендеринга может кадрировать изображения, как пояснено выше, в соответствии с технологиями этого раскрытия, затем передавать кадрированные изображения в интерфейс 114 вывода. Интерфейс 114 вывода, в свою очередь, может предоставлять кадрированные изображения в устройство отображения, которое может практически соответствовать устройству 32 отображения. Устройство отображения может представлять собой часть устройства-получателя 100 или может функционально соединяться с целевым устройством 100. Например, устройство отображения может содержать экран, сенсорный экран, проектор или другой модуль отображения, интегрированный с целевым устройством 100, либо может содержать отдельный дисплей, такой как телевизионный приемник, монитор, проектор, сенсорный экран или другое устройство, которое функционально соединяется с целевым устройством 100. Средства взаимосвязи могут содержать средства проводной или беспроводной связи, к примеру, посредством коаксиального кабеля, композитного видеокабеля, компонентного видеокабеля, кабеля на основе мультимедийного интерфейса высокой четкости (HDMI), радиочастотной широковещательной передачи или других средств проводной или беспроводной связи.
[0214] Фиг. 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 и/или другие устройства или элементы также могут выполнять различные или дополнительные функции в других примерах.
[0215] Фиг. 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).
[0216] Например, если видеодекодер 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 может кодировать для поднаборов единиц доступа.
[0217] Фиг. 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).
[0218] Если какое-либо из указанных условий (302 и 304 или 306 или 308) удовлетворяется, видеодекодер 30/108 может выполнять процесс скачкообразного вывода следующим образом. Видеодекодер 30/108 может выбирать изображение, имеющее наименьшее значение номера в порядке изображений (POC) из изображений в DPB, которые помечаются как "требуется для вывода", в качестве выбранного изображения (312). Видеодекодер 30/108 может кадрировать выбранное изображение, как точно определено в активном наборе параметров последовательности для выбранного изображения, за счет этого формируя кадрированное изображение на основе выбранного изображения (314). Видеодекодер 30/108 может выводить кадрированное изображение (316). Видеодекодер 30/108 может помечать выбранное изображение как "не требуется для вывода" (318).
[0219] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по считываемому компьютером носителю и выполнены посредством аппаратного процессора. Машиночитаемые носители могут включать в себя считываемые компьютером носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальному считываемому компьютером носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0220] В качестве примера, а не ограничения, эти считываемые компьютером носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть считываемым компьютером носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что считываемые компьютером носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-Ray-диск, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число считываемых компьютером носителей.
[0221] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0222] Технологии этого раскрытия могут быть реализованы в широком спектре устройств или аппаратов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0223] Описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.
Изобретение относится к области декодирования видеоданных. Технический результат – обеспечение уменьшения задержки при декодировании видеоданных. Способ декодирования видеоданных содержит этапы, на которых: сохраняют множество единиц декодирования, ассоциированных с единицей доступа из видеоданных в буфере изображений, причем каждая единица декодирования из упомянутого множества является подмножеством единицы доступа; получают соответствующее время удаления из буфера для каждой хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования; удаляют упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера; и кодируют видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, при этом кодирование видеоданных содержит этап, на котором декодируют упомянутое множество удаленных единиц декодирования. 4 н. и 79 з.п. ф-лы, 7 ил., 6 табл.
1. Способ декодирования видеоданных, при этом способ содержит этапы, на которых:
- сохраняют множество единиц декодирования, ассоциированных с единицей доступа из видеоданных в буфере изображений, каждая единица декодирования из упомянутого множества является подмножеством единицы доступа и каждая единица декодирования из упомянутого множества содержит по меньшей мере одну единицу уровня абстракции сети (NAL) уровня видеокодирования (VCL) упомянутой единицы доступа и любую не-VCL NAL-единицу, которая ассоциирована с упомянутой по меньшей мере одной VCL NAL-единицей;
- получают соответствующее время удаления из буфера для каждой хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, при этом получение соответствующего времени удаления из буфера для соответствующей хранимой единицы декодирования содержит этап, на котором принимают соответствующую сигнализируемую информацию, указывающую соответствующее время удаления из буфера для упомянутой соответствующей хранимой единицы декодирования;
- удаляют упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера; и
- кодируют видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, при этом кодирование видеоданных содержит этап, на котором декодируют упомянутое множество удаленных единиц декодирования.
2. Способ по п. 1, в котором этап, на котором сохраняют упомянутое множество единиц декодирования в буфере изображений, содержит этап, на котором сохраняют упомянутое множество единиц декодирования из видеоданных в непрерывном порядке декодирования в буфере изображений.
3. Способ по п. 2, дополнительно содержащий этап, на котором принимают упомянутое множество единиц декодирования из видеоданных в непрерывном порядке декодирования до сохранения упомянутого множества принятых единиц декодирования в буфере изображений.
4. Способ по п. 1, в котором буфером изображений является буфер кодированных изображений.
5. Способ по п. 4, при этом способ дополнительно содержит этап, на котором удаляют первую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений до удаления второй единицы декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений, при этом первая единица декодирования и вторая единица декодирования содержат соответствующие подмножества упомянутой единицы доступа.
6. Способ по п. 1, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, дополнительно содержит сигнализируемое значение, указывающее число единиц уровня абстракции сети (NAL), включенных в соответствующую хранимую единицу декодирования.
7. Способ по п. 1, в котором упомянутое множество единиц декодирования содержит множество субизображений общего изображения и при этом этап, на котором принимают соответствующую сигнализируемую информацию, указывающую соответствующее время удаления из буфера, содержит этап, на котором принимают соответствующее сигнализируемое значение, указывающее время удаления из буфера для каждого из упомянутых субизображений общего изображения.
8. Способ по п. 1, в котором буфером изображений является буфер кодированных изображений (СРВ) и при этом этап, на котором принимают соответствующую сигнализируемую информацию, указывающую время удаления из буфера, содержит этап, на котором принимают соответствующие сигнализируемые значения, указывающие одно или более из начальной задержки удаления из СРВ на уровне единицы доступа, смещения начальной задержки удаления из СРВ на уровне единицы доступа, начальной задержки удаления из СРВ на уровне субизображения и смещения начальной задержки удаления из СРВ на уровне субизображения.
9. Способ по п. 1, в котором соответствующую сигнализируемую информацию, указывающую время удаления из буфера, включают в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации изображений.
10. Способ по п. 1, в котором соответствующую сигнализируемую информацию, указывающую время удаления из буфера, включают в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации единиц декодирования.
11. Способ по п. 1, в котором этап, на котором удаляют упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера, содержит этап, на котором удаляют по меньшей мере одну хранимую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера изображений после того, как прошло соответствующее полученное время удаления из буфера для упомянутой по меньшей мере одной хранимой единицы декодирования с момента сохранения упомянутой по меньшей мере одной хранимой единицы декодирования в буфере изображений.
12. Способ по п. 1, в котором каждая из упомянутого множества хранимых единиц декодирования содержит одно или более соответствующих субизображений.
13. Способ по п. 12, дополнительно содержащий этап, на котором принимают сигнализируемое значение, указывающее байтовое выравнивание по меньшей мере одного субизображения из упомянутого одного или более соответствующих субизображений в большем наборе видеоданных, причем этот больший набор видеоданных содержит упомянутое по меньшей мере одно субизображение.
14. Способ по п. 13, в котором больший набор видеоданных содержит по меньшей мере одно из единицы доступа, подмножества единицы доступа, изображения, кадра, слайса, волны или тайла.
15. Способ по п. 12, в котором каждое субизображение из упомянутого одного или более субизображений соответствует по меньшей мере одному из одной или более последовательностей блоков видеоданных, одного или более слайсов, одной или более волн, одного или более тайлов или одной или более единиц уровня абстракции сети (NAL).
16. Способ по п. 1, в котором этап, на котором получают соответствующее время удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, содержит выполнение одного из этапов, на которых:
- основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования видеоданных, определяют, что время удаления из буфера содержит значение задержки удаления из буфера кодированных изображений, точно определяемое в сообщении с дополнительной улучшающей информацией (SEI) по периоду буферизации, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования; или
- основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования видеоданных, при этом соответствующая единица декодирования содержит порядковую i-ю единицу декодирования, где i>0, определяют, что время удаления из буфера содержит задержку [i] удаления из буфера кодированных изображений единицы декодирования, точно определяемую в сообщении с SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования.
17. Способ по п. 1, в котором этап, на котором получают соответствующее время удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, содержит выполнение одного из этапов, на которых:
- основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования единицы доступа видеоданных, определяют, что номинальное время удаления для единицы декодирования содержит значение начальной задержки удаления из буфера кодированных изображений, деленное на 90000; или
- основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования единицы доступа, при этом единица декодирования содержит порядковую m-ю единицу декодирования, где m>0, единицы доступа, определяют, что номинальное время удаления для единицы декодирования содержит номинальное время удаления порядковой первой единицы декодирования предыдущего периода буферизации плюс такт синхронизации, умноженный на задержку удаления из буфера кодированных изображений, ассоциированную с этой порядковой m-й единицей декодирования.
18. Способ по п. 1, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа блоков кодирования и при этом этап, на котором кодируют видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, содержит этап, на котором кодируют эти различные числа блоков кодирования в упомянутых по меньшей мере двух хранимых единицах декодирования.
19. Способ по п. 1, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа битов и при этом этап, на котором кодируют видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, содержит этап, на котором кодируют эти различные числа битов в упомянутых по меньшей мере двух хранимых единицах декодирования.
20. Устройство для декодирования видеоданных, причем устройство содержит:
запоминающее устройство, сконфигурированное с возможностью хранения по меньшей мере части видеоданных; и
видеодекодер, сконфигурированный с возможностью осуществления операций, на которых:
- сохраняют множество единиц декодирования, ассоциированных с единицей доступа из видеоданных в буфере изображений, каждая единица декодирования из упомянутого множества является подмножеством единицы доступа и каждая единица декодирования из упомянутого множества содержит по меньшей мере одну единицу уровня абстракции сети (NAL) уровня видеокодирования (VCL) упомянутой единицы доступа и любую не-VCL NAL-единицу, которая ассоциирована с упомянутой по меньшей мере одной VCL NAL-единицей;
- получают соответствующее время удаления из буфера для каждой хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, при этом для получения соответствующего времени удаления из буфера для соответствующей хранимой единицы декодирования видеодекодер сконфигурирован с возможностью осуществления операции, на которой принимают соответствующую сигнализируемую информацию, указывающую соответствующее время удаления из буфера для упомянутой соответствующей хранимой единицы декодирования;
- удаляют упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера; и
- кодируют видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, при этом для кодирования видеоданных видеодекодер сконфигурирован с возможностью осуществления операции, на которой декодируют упомянутое множество удаленных единиц декодирования.
21. Устройство по п. 20, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой сохраняют упомянутое множество единиц декодирования видеоданных в непрерывном порядке декодирования в буфере изображений.
22. Устройство по п. 21, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой принимают упомянутое множество единиц декодирования видеоданных в непрерывном порядке декодирования до сохранения упомянутого множества принятых единиц декодирования в буфере изображений.
23. Устройство по п. 20, в котором буфером изображений является буфер кодированных изображений.
24. Устройство по п. 23, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой удаляют первую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений до удаления второй единицы декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений, при этом первая единица декодирования и вторая единица декодирования содержат соответствующие подмножества упомянутой единицы доступа.
25. Устройство по п. 20, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, дополнительно содержит сигнализируемое значение, указывающее число единиц уровня абстракции сети (NAL), включенных в соответствующую хранимую единицу декодирования.
26. Устройство по п. 20, при этом упомянутое множество единиц декодирования содержит множество субизображений общего изображения и при этом декодер дополнительно сконфигурирован с возможностью осуществления операции, на которой принимают соответствующее сигнализируемое значение, указывающее время удаления из буфера для каждого из субизображений общего изображения.
27. Устройство по п. 20, в котором буфером изображений является буфер кодированных изображений (СРВ) и при этом декодер дополнительно сконфигурирован с возможностью осуществления операции, на которой принимают соответствующие сигнализируемые значения, указывающие одно или более из начальной задержки удаления из СРВ на уровне единицы доступа, смещения начальной задержки удаления из СРВ на уровне единицы доступа, начальной задержки удаления из СРВ на уровне субизображения и смещения начальной задержки удаления из СРВ на уровне субизображения.
28. Устройство по п. 20, в котором декодер дополнительно сконфигурирован с возможностью осуществления операции, на которой соответствующую сигнализируемую информацию, указывающую время удаления из буфера, получают из сообщения с дополнительной улучшающей информацией (SEI) по синхронизации изображений.
29. Устройство по п. 20, в котором декодер дополнительно сконфигурирован с возможностью осуществления операции, на которой соответствующую сигнализируемую информацию, указывающую время удаления из буфера, получают из сообщения с дополнительной улучшающей информацией (SEI).
30. Устройство по п. 20, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой удаляют по меньшей мере одну хранимую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера изображений после того, как прошло соответствующее полученное время удаления из буфера для упомянутой по меньшей мере одной хранимой единицы декодирования с момента сохранения упомянутой по меньшей мере одной хранимой единицы декодирования в буфере изображений.
31. Устройство по п. 20, в котором каждая из упомянутого множества хранимых единиц декодирования содержит одно или более соответствующих субизображений.
32. Устройство по п. 31, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой принимают сигнализируемое значение, указывающее байтовое выравнивание по меньшей мере одного субизображения из упомянутого одного или более соответствующих субизображений в большем наборе видеоданных, причем этот больший набор видеоданных содержит упомянутое по меньшей мере одно субизображение.
33. Устройство по п. 32, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой принимают упомянутый больший набор видеоданных в качестве по меньшей мере одного из единицы доступа, подмножества единицы доступа, изображения, кадра, слайса, волны или тайла.
34. Устройство по п. 31, в котором видеодекодер сконфигурирован с возможностью осуществления операции, на которой принимают каждое субизображение из упомянутого одного или более субизображений, соответствующее по меньшей мере одному из одной или более последовательностей блоков видеоданных, одного или более слайсов, одной или более волн, одного или более тайлов или одной или более единиц уровня абстракции сети (NAL).
35. Устройство по п. 20, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операций, на которых:
- определяют, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования видеоданных, что время удаления из буфера содержит значение задержки удаления из буфера кодированных изображений, точно определенное в сообщении с дополнительной улучшающей информацией (SEI) по периоду буферизации, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования; и
- определяют, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования видеоданных, при этом соответствующая единица декодирования содержит порядковую i-ю единицу декодирования, где i>0, что время удаления из буфера содержит задержку удаления из буфера кодированных изображений единицы декодирования, точно определенную в сообщении с SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования.
36. Устройство по п. 20, в котором видеодекодер дополнительно сконфигурирован с возможностью осуществления операций, на которых:
- определяют, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования единицы доступа видеоданных, что номинальное время удаления для единицы декодирования содержит значение начальной задержки удаления из буфера кодированных изображений, деленное на 90000; и
- определяют, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования единицы доступа, при этом единица декодирования содержит порядковую m-ю единицу декодирования, где m>0, единицы доступа, что номинальное время удаления для единицы декодирования содержит номинальное время удаления порядковой первой единицы декодирования предыдущего периода буферизации плюс такт синхронизации, умноженный на задержку удаления из буфера кодированных изображений, ассоциированную с этой порядковой m-й единицей декодирования.
37. Устройство по п. 20, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа блоков кодирования и при этом видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой кодируют эти различные числа блоков кодирования в упомянутых по меньшей мере двух хранимых единицах декодирования.
38. Устройство по п. 20, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа битов и при этом видеодекодер сконфигурирован с возможностью осуществления операции, на которой кодируют эти различные числа битов в упомянутых по меньшей мере двух хранимых единицах декодирования.
39. Устройство по п. 20, при этом устройство содержит по меньшей мере одно из:
- одной или более интегральных схем;
- одного или более микропроцессоров;
- одного или более процессоров цифровых сигналов (DSP);
- одной или более программируемых пользователем вентильных матриц (FPGA);
- настольного компьютера;
- переносного компьютера;
- планшетного компьютера;
- телефона;
- телевизора;
- камеры;
- устройства отображения;
- цифрового медиаплеера;
- видеоигровой консоли;
- устройства потокового видео; или
- устройства беспроводной связи.
40. Устройство по п. 20, в котором буфером изображений является буфер кодированных изображений и при этом видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой сохраняют одно или более декодированных изображений в буфере декодированных изображений.
41. Устройство по п. 20, в котором буфером изображений является буфер кодированных изображений и при этом видеодекодер дополнительно сконфигурирован с возможностью осуществления операции, на которой сохраняют кодированные видеоданные в буфере кодированных изображений.
42. Устройство по п. 20, в котором буфером изображений является буфер кодированных изображений и устройство дополнительно содержит модуль планирования потока, сконфигурированный с возможностью сохранять кодированные видеоданные в буфер кодированных изображений.
43. Устройство по п. 20, дополнительно содержащее устройство отображения, сконфигурированное с возможностью вывода по меньшей мере части видеоданных.
44. Аппаратное устройство для декодирования видеоданных, причем аппаратное устройство содержит:
- средство для сохранения множества единиц декодирования, ассоциированных с единицей доступа из видеоданных в буфере изображений, каждая единица декодирования из упомянутого множества является подмножеством единицы доступа и каждая единица декодирования из упомянутого множества содержит по меньшей мере одну единицу уровня абстракции сети (NAL) уровня видеокодирования (VCL) упомянутой единицы доступа и любую не-VCL NAL-единицу, которая ассоциирована с упомянутой по меньшей мере одной VCL NAL-единицей;
- средство для получения соответствующего времени удаления из буфера для каждой хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, при этом средство для получения соответствующего времени удаления из буфера для соответствующей хранимой единицы декодирования содержит средство для приема соответствующей сигнализируемой информации, указывающей соответствующее время удаления из буфера для упомянутой соответствующей хранимой единицы декодирования;
- средство для удаления упомянутого множества хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера; и
- средство для кодирования видеоданных, соответствующих упомянутому множеству удаленных единиц декодирования, при этом средство для кодирования видеоданных содержит средство для декодирования упомянутого множества удаленных единиц декодирования.
45. Аппаратное устройство по п. 44, в котором средство для сохранения упомянутого множества единиц декодирования в буфере изображений дополнительно содержит средство для сохранения упомянутого множества единиц декодирования из видеоданных в непрерывном порядке декодирования в буфере изображений.
46. Аппаратное устройство по п. 45, дополнительно содержащее средство для приема упомянутого множества единиц декодирования видеоданных в непрерывном порядке декодирования до сохранения упомянутого принятого множества единиц декодирования в буфере изображений.
47. Аппаратное устройство по п. 44, в котором буфером изображений является буфер кодированных изображений.
48. Аппаратное устройство по п. 47, дополнительно содержащее средство для удаления первой единицы декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений до удаления второй единицы декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений, при этом первая единица декодирования и вторая единица декодирования содержат соответствующие подмножества упомянутой единицы доступа.
49. Аппаратное устройство по п. 44, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, дополнительно содержит сигнализируемое значение, указывающее число единиц уровня абстракции сети (NAL), включенных в соответствующую хранимую единицу декодирования.
50. Аппаратное устройство по п. 44, при этом упомянутое множество единиц декодирования содержит множество субизображений общего изображения и при этом средство для приема соответствующего сигнализируемого значения, указывающего соответствующее время удаления из буфера, содержит средство для приема соответствующего сигнализируемого значения, указывающего время удаления из буфера для каждого из субизображений общего изображения.
51. Аппаратное устройство по п. 44, в котором буфером изображений является буфер кодированных изображений (СРВ) и при этом средство для приема соответствующей сигнализируемой информации, указывающей время удаления из буфера, содержит средство для приема соответствующих сигнализируемых значений, указывающих одно или более из начальной задержки удаления из СРВ на уровне единицы доступа, смещения начальной задержки удаления из СРВ на уровне единицы доступа, начальной задержки удаления из СРВ на уровне субизображения или смещения начальной задержки удаления из СРВ на уровне субизображения.
52. Аппаратное устройство по п. 44, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, включена в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации изображений.
53. Аппаратное устройство по п. 44, в котором соответствующая сигнализируемая информацию, указывающая время удаления из буфера, включена в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации единиц декодирования.
54. Аппаратное устройство по п. 44, в котором средство для удаления упомянутого множества хранимых единиц декодирования из буфера изображений в соответствии с полученными моментами времени удаления из буфера содержит средство для удаления по меньшей мере одной хранимой единицы декодирования упомянутого множества хранимых единиц декодирования из буфера изображений после того, как прошло соответствующее полученное время удаления из буфера для упомянутой по меньшей мере одной хранимой единицы декодирования с момента сохранения упомянутой по меньшей мере одной хранимой единицы декодирования в буфере изображений.
55. Аппаратное устройство по п. 44, при этом каждая из упомянутого множества хранимых единиц декодирования содержит одно или более соответствующих субизображений.
56. Аппаратное устройство по п. 55, дополнительно содержащее средство для приема сигнализируемого значения, указывающего байтовое выравнивание по меньшей мере одного субизображения из упомянутого одного или более соответствующих субизображений в большем наборе видеоданных, причем этот больший набор видеоданных содержит упомянутое по меньшей мере одно субизображение.
57. Аппаратное устройство по п. 56, в котором больший набор видеоданных содержит по меньшей мере одно из единицы доступа, подмножества единицы доступа, изображения, кадра, слайса, волны или тайла.
58. Аппаратное устройство по п. 55, в котором каждое субизображение из упомянутого одного или более субизображений соответствует по меньшей мере одному из одной или более последовательностей блоков видеоданных, одного или более слайсов, одной или более волн, одного или более тайлов или одной или более единиц уровня абстракции сети (NAL).
59. Аппаратное устройство по п. 44, в котором средство для получения соответствующего времени удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования содержит одно из:
- средства для определения, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования видеоданных, того, что время удаления из буфера содержит значение задержки удаления из буфера кодированных изображений, точно определенное в сообщении с дополнительной улучшающей информацией (SEI) по периоду буферизации, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования; или
- средства для определения, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования видеоданных, при этом соответствующая единица декодирования содержит порядковую i-ю единицу декодирования, где i>0, того, что время удаления из буфера содержит задержку [i] удаления из буфера кодированных изображений единицы декодирования, точно определенную в сообщении с SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования.
60. Аппаратное устройство по п. 44, в котором средство для получения соответствующего времени удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования содержит одно из:
- средства для определения, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования единицы доступа видеоданных, того, что номинальное время удаления для единицы декодирования содержит значение начальной задержки удаления из буфера кодированных изображений, деленное на 90000; и
- средства для определения, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования единицы доступа, при этом единица декодирования, содержит порядковую m-ю единицу декодирования, где m>0, единицы доступа, того, что номинальное время удаления для единицы декодирования содержит номинальное время удаления порядковой первой единицы декодирования предыдущего периода буферизации плюс такт синхронизации, умноженный на задержку удаления из буфера кодированных изображений, ассоциированную с этой порядковой m-й единицей декодирования.
61. Аппаратное устройство по п. 44, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа блоков кодирования и при этом средство для кодирования видеоданных, соответствующих упомянутому множеству удаленных единиц декодирования, содержит средство для кодирования этих различных чисел блоков кодирования в упомянутых по меньшей мере двух хранимых единицах декодирования.
62. Аппаратное устройство по п. 44, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа битов и при этом средство для кодирования видеоданных, соответствующих упомянутому множеству удаленных единиц декодирования, содержит средство для кодирования этих различных чисел битов в упомянутых по меньшей мере двух хранимых единицах декодирования.
63. Аппаратное устройство по п. 44, при этом аппаратное устройство содержит по меньшей мере одно из:
- одной или более интегральных схем;
- одного или более микропроцессоров;
- одного или более процессоров цифровых сигналов (DSP);
- одной или более программируемых пользователем вентильных матриц (FPGA);
- настольного компьютера;
- переносного компьютера;
- планшетного компьютера;
- телефона;
- телевизора;
- камеры;
- устройства отображения;
- цифрового медиаплеера;
- видеоигровой консоли;
- устройства потокового видео; или
- устройства беспроводной связи.
64. Аппаратное устройство по п. 44, дополнительно содержащее средство для вывода по меньшей мере части видеоданных для отображения.
65. Считываемый компьютером носитель, хранящий исполняемый компьютером код, который при исполнении побуждает один или более процессоров устройства декодирования видео:
- сохранять множество единиц декодирования, ассоциированных с единицей доступа из видеоданных в буфере изображений, причем единицы декодирования являются подмножествами единиц доступа и каждая единица декодирования из упомянутого множества содержит по меньшей мере одну единицу уровня абстракции сети (NAL) уровня видеокодирования (VCL) упомянутой единицы доступа и любую не-VCL NAL-единицу, которая ассоциирована с упомянутой по меньшей мере одной VCL NAL-единицей;
- получать соответствующее время удаления из буфера для каждой хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, при этом инструкции, которые побуждают упомянутый один или более процессоров получать соответствующее время удаления из буфера, содержат инструкции, которые побуждают упомянутый один или более процессоров принимать соответствующую сигнализируемую информацию, указывающую соответствующее время удаления из буфера для упомянутой соответствующей хранимой единицы декодирования;
- удалять упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера; и
- кодировать видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, при этом инструкции, которые побуждают упомянутый один или более процессоров кодировать видеоданные, содержат инструкции, которые побуждают упомянутый один или более процессоров декодировать упомянутое множество удаленных единиц декодирования.
66. Считываемый компьютером носитель по п. 65, в котором исполняемый компьютером код дополнительно содержит инструкции, которые при исполнении побуждают упомянутый один или более процессоров сохранять упомянутое множество единиц декодирования видеоданных в непрерывном порядке декодирования в буфере изображений.
67. Считываемый компьютером носитель по п. 66, в котором исполняемый компьютером код дополнительно содержит инструкции, которые при исполнении побуждают упомянутый один или более процессоров принимать упомянутое множество единиц декодирования видеоданных в непрерывном порядке декодирования до сохранения упомянутой принятой одной или более единиц декодирования в буфере изображений.
68. Считываемый компьютером носитель по п. 65, в котором буфером изображений является буфер кодированных изображений.
69. Считываемый компьютером носитель по п. 68, в котором исполняемый компьютером код дополнительно содержит инструкции, которые при исполнении побуждают упомянутый один или более процессоров удалять первую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений до удаления второй единицы декодирования упомянутого множества хранимых единиц декодирования из буфера кодированных изображений, при этом первая единица декодирования и вторая единица декодирования содержат соответствующие подмножества упомянутой единицы доступа.
70. Считываемый компьютером носитель по п. 65, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, содержит сигнализируемое значение, указывающее число единиц уровня абстракции сети (NAL), включенных в соответствующую хранимую единицу декодирования.
71. Считываемый компьютером носитель по п. 65, при этом упомянутое множество единиц декодирования содержит множество субизображений общего изображения и при этом инструкции, которые побуждают упомянутый один или более процессоров принимать соответствующую сигнализируемую информацию, указывающую соответствующее время удаления из буфера, содержат инструкции, которые побуждают упомянутый один или более процессоров принимать соответствующее сигнализируемое значение, указывающее время удаления из буфера для каждого из субизображений общего изображения.
72. Считываемый компьютером носитель по п. 65, в котором буфером изображений является буфер кодированных изображений (СРВ) и при этом инструкции, которые побуждают упомянутый один или более процессоров принимать соответствующую сигнализируемую информацию, указывающую время удаления из буфера, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров принимать соответствующие сигнализируемые значения, указывающие одно или более из начальной задержки удаления из СРВ на уровне единицы доступа, смещения начальной задержки удаления из СРВ на уровне единицы доступа, начальной задержки удаления из СРВ на уровне субизображения и смещения начальной задержки удаления из СРВ на уровне субизображения.
73. Считываемый компьютером носитель по п. 65, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, включена в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации изображений.
74. Считываемый компьютером носитель по п. 65, в котором соответствующая сигнализируемая информация, указывающая время удаления из буфера, включена в сообщение с дополнительной улучшающей информацией (SEI) по синхронизации единиц декодирования.
75. Считываемый компьютером носитель по п. 65, в котором инструкции, которые побуждают упомянутый один или более процессоров удалять упомянутое множество хранимых единиц декодирования из буфера изображений в соответствии с полученным временем удаления из буфера, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров удалять по меньшей мере одну хранимую единицу декодирования упомянутого множества хранимых единиц декодирования из буфера изображений после того, как прошло соответствующее полученное время удаления из буфера для упомянутой по меньшей мере одной хранимой единицы декодирования с момента сохранения упомянутой по меньшей мере одной хранимой единицы декодирования в буфере изображений.
76. Считываемый компьютером носитель по п. 65, при этом каждая из упомянутого множества хранимых единиц декодирования содержит одно или более соответствующих субизображений.
77. Считываемый компьютером носитель по п. 76, в котором исполняемый компьютером код дополнительно содержит инструкции, которые при исполнении побуждают упомянутый один или более процессоров принимать сигнализируемое значение, указывающее байтовое выравнивание по меньшей мере одного субизображения из упомянутого одного или более соответствующих субизображений в большем наборе видеоданных, причем этот больший набор видеоданных содержит упомянутое по меньшей мере одно субизображение.
78. Считываемый компьютером носитель по п. 77, в котором больший набор видеоданных содержит по меньшей мере одно из единицы доступа, подмножества единицы доступа, изображения, кадра, слайса, волны или тайла.
79. Считываемый компьютером носитель по п. 76, в котором каждое субизображение из упомянутого одного или более субизображений соответствует по меньшей мере одному из одной или более последовательностей блоков видеоданных, одного или более слайсов, одной или более волн, одного или более тайлов или одной или более единиц уровня абстракции сети (NAL).
80. Считываемый компьютером носитель по п. 65, в котором инструкции, которые побуждают упомянутый один или более процессоров получать соответствующее время удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров осуществлять одно из:
- определения, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования видеоданных, того, что время удаления из буфера содержит значение задержки удаления из буфера кодированных изображений, точно определенное в сообщении с дополнительной улучшающей информацией (SEI) по периоду буферизации, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования; или
- определения, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования видеоданных, при этом соответствующая единица декодирования содержит порядковую i-ю единицу декодирования, где i>0, того, что время удаления из буфера содержит задержку [i] удаления из буфера кодированных изображений единицы декодирования, точно определенную в сообщении с SEI по синхронизации изображений, ассоциированном с единицей доступа, которая содержит эту соответствующую единицу декодирования.
81. Считываемый компьютером носитель по п. 65, в котором инструкции, которые побуждают упомянутый один или более процессоров получать соответствующее время удаления из буфера для соответствующей хранимой единицы декодирования из упомянутого множества хранимых единиц декодирования, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров осуществлять одно из:
- определения, основываясь на том, что соответствующая единица декодирования содержит порядковую первую единицу декодирования единицы доступа видеоданных, того, что номинальное время удаления для единицы декодирования содержит значение начальной задержки удаления из буфера кодированных изображений, деленное на 90000; и
- определения, основываясь на том, что соответствующая единица декодирования не содержит упомянутой порядковой первой единицы декодирования единицы доступа, при этом единица декодирования содержит порядковую m-ю единицу декодирования, где m>0, единицы доступа, того, что номинальное время удаления для единицы декодирования содержит номинальное время удаления порядковой первой единицы декодирования предыдущего периода буферизации плюс такт синхронизации, умноженный на задержку удаления из буфера кодированных изображений, ассоциированную с этой порядковой m-й единицей декодирования.
82. Считываемый компьютером носитель по п. 65, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа блоков кодирования и при этом инструкции, которые побуждают упомянутый один или более процессоров кодировать видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров кодировать эти различные числа блоков кодирования в упомянутых по меньшей мере двух хранимых единицах декодирования.
83. Считываемый компьютером носитель по п. 65, в котором по меньшей мере две хранимые единицы декодирования из упомянутого множества хранимых единиц декодирования включают в себя различные числа битов и при этом инструкции, которые побуждают упомянутый один или более процессоров кодировать видеоданные, соответствующие упомянутому множеству удаленных единиц декодирования, содержат инструкции, которые при исполнении побуждают упомянутый один или более процессоров кодировать эти различные числа битов в упомянутых по меньшей мере двух хранимых единицах декодирования.
Пломбировальные щипцы | 1923 |
|
SU2006A1 |
Колосоуборка | 1923 |
|
SU2009A1 |
Способ приготовления лака | 1924 |
|
SU2011A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
KIMIHIRO KAZUI et al., "Market needs and practicality of sub-picture based CPB operation", Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 8th Meeting: San Jose, CA, USA, 1-10 February, 2012, Document: JCTVC-H215, 4 c., опубл | |||
Выбрасывающий ячеистый аппарат для рядовых сеялок | 1922 |
|
SU21A1 |
RU 2010119448 А, 27.11.2011. |
Авторы
Даты
2017-09-05—Публикация
2013-02-26—Подача