УЛУЧШЕННЫЙ ЛОГИЧЕСКИЙ ВЫВОД В ВИДЕОКОДИРОВАНИИ
IMPROVED LOGIC OUTPUT IN VIDEO ENCODING

ОБЛАСТЬ ТЕХНИКИ
[0001] Данное раскрытие сущности изобретения относится к области кодирования и сжатия видео, включающей в себя как одноуровневое видеокодирование, так и многоуровневое видеокодирование. Многоуровневое видеокодирование может включать в себя масштабируемое видеокодирование (scalable video coding-SVC), многовидовое видеокодирование (multiview video coding-MVC), трехмерное видеокодирование (3D video coding-3DV), и т.д.
УРОВЕНЬ ТЕХНИКИ
[0002] Цифровые видеовозможности могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые секретари (personal digital assistant-PDA), ноутбуки или настольные компьютеры, цифровые камеры, устройства цифровой записи, цифровые медиаплееры, видео игровые устройства, игровые видеоконсоли, сотовые или спутниковые радиотелефоны, устройства видео телеконференций и т.п. Цифровые видео устройства реализуют технологии сжатия видео, такие как технологии, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Улучшенное видеокодирование (Advanced Video Coding-AVC), стандарте Высокоэффективного видеокодирования (High Efficiency Video Coding - HEVC), и расширениях этих стандартов. Видео устройства могут передавать, принимать, кодировать, декодировать, и/или хранить цифровую видеоинформацию более эффективно при реализации таких технологий видеокодирования.
[0003] Технологии сжатия видео выполняют пространственное (внутреннее по отношению к изображению) предсказание и/или временное (внешнее по отношению к изображению) предсказание, для уменьшения или удаления избыточности, присущей видео последовательностям. Для блочного видеокодирования, видео срез (например, видео кадр, часть видео кадра, и т.д.) может быть разделен на видеоблоки, которые могут также называться древовидными блоками, блоками кодирования (coding unit-CU) или узлами кодирования. Видеоблоки в срезе изображения с внутренним кодированием (intra-coded-I) кодируют с использованием пространственного предсказания в отношении опорных отсчетов в соседних блоках в том же изображении. Видеоблоки в срезе изображения с внешним кодированием (P или B) могут использовать пространственное предсказание в отношении опорных отсчетов в соседних блоках в том же изображении или временное предсказание в отношении опорных отсчетов в других опорных изображениях. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.
[0004] Пространственное или временное предсказание имеет результатом предиктивный блок для блока, подлежащего кодированию. Остаточные данные представляют пиксельные различия между исходным блоком, подлежащим кодированию, и предиктивным блоком. Блок с внешним кодированием кодируют согласно вектору движения, который указывает на блок опорных отсчетов, образующих предиктивный блок, и остаточным данным, указывающим на различие между кодируемым блоком и предиктивным блоком. Блок с внутренним кодированием кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что обеспечивает в результате остаточные коэффициенты преобразования, которые, затем, могут быть квантованы. Квантованные коэффициенты преобразования, исходно расположенные в двумерной матрице, могут быть просканированы для создания одномерного вектора коэффициентов преобразования, и может быть применено энтропийное кодирование для обеспечения еще большего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] Масштабируемое видеокодирование (Scalable video coding-SVC) относится к видеокодированию, в котором используют базовый уровень (base layer-BL), иногда называемый опорным уровнем (reference layer-RL), и один или более масштабируемых улучшенных уровней (enhancement layer-EL). В SVC, базовый уровень может переносить видеоданные с базовым уровнем качества. Один или более улучшенных уровней могут переносить дополнительные видеоданные для поддержки, например, более высокого пространственного, временного уровня и/или уровня отношения сигнал-шум (signal-to-noise-SNR). Улучшенные уровни могут быть определены относительно ранее кодированного уровня. Например, нижний уровень может служить в качестве BL, в то время как верхний уровень может служить в качестве EL. Средние уровни могут служить в качестве либо EL, либо RL, либо в обоих качествах. Например, средний уровень (например, уровень, который не является ни самым нижним уровнем, ни самым высоким уровнем) может быть EL для уровней ниже этого среднего уровня, таких как базовый уровень или любые промежуточные улучшенные уровни, и, в то же время, может служить в качестве RL для одного или более улучшенных уровней выше среднего уровня. Подобным образом, в многовидовом или трехмерном расширении стандарта HEVC, могут быть многочисленные виды, и информация одного вида может быть использована для кодирования (например, кодирования или декодирования) информации другого вида (например, оценки движения, предсказания вектора движения и/или других избыточностей).
[0006] Аппарат для кодирования видеоинформации, согласно некоторым аспектам, включает в себя память и процессор. Блок памяти выполнен с возможностью хранения видеоинформации, связанной с текущим уровнем. Процессор выполнен с возможностью: получения по меньшей мере одного из формата цветности текущего изображения текущего уровня, подлежащего декодированию, битовой глубины отсчетов яркости текущего изображения или битовой глубины отсчетов цветности текущего изображения, причем текущее изображение является изображением внутренней точки произвольного доступа (IRAP), которое начинает новую кодированную видео последовательность (CVS); получения по меньшей мере одного из формата цветности предшествующего изображения текущего уровня, которое было декодировано, битовой глубины отсчетов яркости предшествующего изображения или битовой глубины отсчетов цветности предшествующего изображения; и определения значения первого флага, связанного с текущим изображением, причем первый флаг указывает на то, должны ли быть выведены изображения в буфере декодированных изображений (DPB), причем определение значения первого флага основано по меньшей мере на одном из: (1) формата цветности текущего изображения и формата цветности предшествующего изображения, (2) битовой глубины отсчетов яркости текущего изображения и битовой глубины отсчетов яркости предшествующего изображения, или (3) битовой глубины отсчетов цветности текущего изображения и битовой глубины отсчетов цветности предшествующего изображения.
[0007] Каждая из систем, способов и устройств данного раскрытия сущности изобретения имеет некоторые инновационные аспекты, причем ни одна из них не отвечает исключительно за желательные характерные признаки, описанные здесь. Подробности одного или более примеров приведены в сопутствующих чертежах и нижеследующем описании, которые не предназначены для ограничения полного объема идей изобретения, описанных здесь. Другие признаки, задачи, и преимущества данного изобретения будут понятны из описания изобретения и чертежей, а также из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Фиг. 1А является блок-схемой, иллюстрирующей пример системы видеокодирования и декодирования, которая может использовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0009] Фиг. 1B является блок-схемой, иллюстрирующей другую иллюстративную систему видеокодирования и декодирования, которая может выполнить технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0010] Фиг. 2А является блок-схемой, иллюстрирующей пример видеокодера, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0011] Фиг. 2В является блок-схемой, иллюстрирующей пример видеокодера, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0012] Фиг. 3А является блок-схемой, иллюстрирующей пример видеодекодера, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0013] Фиг. 3В является блок-схемой, иллюстрирующей пример видеодекодера, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения.
[0014] Фиг. 4 является блок-схемой, иллюстрирующей иллюстративную конфигурацию изображений в разных уровнях, согласно одному варианту осуществления данного раскрытия сущности изобретения.
[0015] Фиг. 5 является последовательностью операций, иллюстрирующей способ кодирования видеоинформации, согласно одному варианту осуществления данного раскрытия сущности изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0016] В общем, данное раскрытие сущности изобретения относится к одноуровневому кодированию, а также к межуровневому предсказанию для масштабируемого видеокодирования в контексте усовершенствованных видеокодеков, такого как HEVC (Высокоэффективное видеокодирование). Более конкретно, данное раскрытие сущности изобретения относится к системам и способам для улучшения производительности межуровневого предсказания в расширении масштабируемого видеокодирования HEVC, которое может называться SHVC.
[0017] В нижеследующем описании, описаны технологии H.264/ Улучшенного видеокодирования (AVC), относящиеся к некоторым вариантам осуществления; также описан стандарт HEVC и соответствующие технологии. В то время как некоторые варианты осуществления описаны здесь в контексте стандартов HEVC и/или H.264, специалисты в данной области техники могут понять, что системы и способы, описанные здесь, могут быть применимыми для любого подходящего стандарта кодирования. Например, варианты осуществления, описанные здесь, могут быть применимыми для одного или более следующих стандартов: стандарта H.261 Сектора стандартизации телекоммуникаций (Telecommunication Standardization Sector-ITU-T) Международного союза по телекоммуникациям (International Telecommunication Union - ITU), стандарта Группы экспертов по кинематографии (Moving Picture Experts Group-MPEG) MPEG-1 Visual Международной организации по стандартизации (International Organization for Standardization - ISO) и Международной электротехнической комиссии (International Electrotechnical Commission-IEC) (ISO/IEC), 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), включая его расширения для Масштабируемого видеокодирования (Scalable Video Coding-SVC) и Многовидового видеокодирования (Multiview Video Coding-MVC).
[0018] HEVC, в общем, во многих отношениях следует общим принципам предшествующих стандартов видеокодирования. Блок предсказания в HEVC отличается от блоков предсказания (например, макроблока) в некоторых предшествующих стандартах видеокодирования. Фактически, концепция макроблока не существует в HEVC в том виде, как она понимается в некоторых предшествующих стандартах видеокодирования. Макроблок заменен иерархической структурой на основе схемы квадродерева, которая может обеспечить высокую гибкость, среди прочих возможных преимуществ. Например, в пределах схемы HEVC, определены три типа блоков, блок кодирования (coding unit-CU), блок предсказания (Prediction Unit-PU), и блок преобразования (Transform Unit-TU). CU может относиться к базовому блоку области разбиения. CU можно считать аналогичным концепции макроблока, но HEVC не ограничивает максимальный размер CU и может разрешить рекурсивное разбиение на четыре CU равного размера для улучшения адаптивности контента. PU можно считать базовым блоком внешнего/внутреннего предсказания, и единственный PU может содержать многочисленные части произвольной формы для эффективного кодирования нерегулярных образцов изображений. TU можно считать базовым блоком преобразования. TU может быть определен независимо от PU; однако, размер TU может быть ограничен размером CU, к которому TU относится. Это разделение блоковой структуры на три разных концепции может обеспечить оптимизацию каждого блока согласно соответствующей роли блока, что в результате может обеспечить улучшенную эффективность кодирования.
[0019] Только в целях иллюстрации, некоторые варианты осуществления, описанные здесь, описаны с использованием примеров, включающих в себя только два уровня (например, более низкий уровень, такой как базовый уровень, и более высокий уровень, такой как улучшенный уровень) видеоданных. «Уровень» видеоданных может, в общем, относиться к последовательности изображений, имеющих по меньшей мере одну общую характеристику, такую как вид, частота кадров, разрешение, и т.п. Например, уровень может включать в себя видеоданные, связанные с конкретным видом (например, перспективой) многовидовых видеоданных. В качестве другого примера, уровень может включать в себя видеоданные, связанные с конкретным уровнем масштабируемых видеоданных. Таким образом, данное раскрытие сущности изобретения может взаимозаменяемо относиться к уровню и виду видеоданных. А именно, вид видеоданных может называться уровнем видеоданных, а уровень видеоданных может называться видом видеоданных. Дополнительно, многоуровневый кодек (также называемый многоуровневым видеокодером или многоуровневым кодером-декодером) может одновременно относиться к многовидовому кодеку или масштабируемому кодеку (например, кодеку, выполненному с возможностью кодировании и/или декодирования видеоданных с использованием MV-HEVC, 3D-HEVC, SHVC, или другой технологии многоуровневого кодирования). Видеокодирование и видео декодирование могут оба, в общем, называться видеокодированием. Следует понимать, что такие примеры могут быть применимы к конфигурациям, включающим в себя многочисленные базовые уровни и/или улучшенные уровни. Дополнительно, для легкости объяснения, нижеследующее раскрытие сущности изобретения включает в себя термины «кадры» или «блоки» со ссылкой на некоторые варианты осуществления. Однако, эти термины не предназначены для ограничения. Например, технологии, описанные ниже, могут быть использованы с любыми подходящими видеоблоками, такими как блоки (например, CU, PU, TU, макроблоки, и т.д.), срезы, кадры, и т.д.
СТАНДАРТЫ ВИДЕОКОДИРОВАНИЯ
[0020] Цифровое изображение, такое как видеоизображение, телевизионное изображение, неподвижное изображение или изображение, генерируемое устройством видео записи или компьютером, может состоять из пикселов или отсчетов, расположенных в горизонтальных и вертикальных линиях. Количество пикселов в единственном изображении имеет обычно порядок десятков тысяч. Каждый пиксел обычно содержит информацию о яркости и цветности. Без сжатия, полное количество информации, подлежащее передаче от кодера изображения к декодеру изображения, может сделать невозможной передачу изображения в режиме реального времени. Для уменьшения количества информации, подлежащей передаче, было разработано несколько разных способов сжатия, таких как стандарты JPEG, MPEG и H.263.
[0021] Стандарты видеокодирования включают в себя 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.
[0022] Дополнительно, Объединенной командой разработчиков в области видеокодирования (Joint Collaboration Team on Video Coding - JCT-VC) Группы экспертов видеокодирования (Video Coding Experts Group - VCEG) ITU-T и Группы экспертов по кинематографии (Moving Picture Experts Group - MPEG) разрабатывается новый стандарт видеокодирования, а именно, стандарт Высокоэффективного видеокодирования (High Efficiency Video Coding - HEVC). Полной ссылкой на Предварительную версию 10 HEVC (HEVC Draft 10) является документ JCTVC-L1003, Bross и др., “High Efficiency Video Coding (HEVC) Text Specification Draft 10,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 12th Meeting: Geneva, Switzerland, 14 января, 2013–23 января, 2013. Многовидовое расширение для HEVC, а именно, MV-HEVC, и масштабируемое расширение для HEVC, а именно, SHVC, также разрабатывается JCT-3V (Объединенной командой разработчиков в области разработки расширения трехмерного видеокодирования (Joint Collaborative Team on 3D Video Coding Extension Development) ITU-T/ISO/IEC) и JCT-VC, соответственно.
КРАТКОЕ ОПИСАНИЕ
[0023] Изображения внутренних точек произвольного доступа (IRAP) могут обеспечить точки произвольного доступа для декодирования битового потока. Декодер может начать декодирование битового потока с декодирования IRAP-изображения без необходимости декодирования изображений, которые предшествуют IRAP-изображению. Во время декодирования IRAP-изображения, буфер декодированных изображений (DPB) может иметь некоторое количество декодированных изображений в буфере. Если вывод существующих в DPB изображений может повлиять на производительность декодера (например, в DPB существует слишком много изображений для вывода к декодеру), то может быть необходимым удаление таких существующих изображений без их вывода (например, сброс существующих изображений).
[0024] Переменная NoOutputOfPriorPicsFlag (флаг ограничения вывода предшествующих изображений) может указывать, при декодировании IRAP-изображения, должны ли быть выведены изображения в DPB перед удалением из DPB. Например, при декодировании IRAP-изображения, значение NoOutputOfPriorPicsFlag может быть установлено равным 1, когда изображения в DPB не должны быть выведены перед удалением. Значение NoOutputOfPriorPicsFlag может быть определено на основе соответствующего элемента синтаксиса и/или различных условий и информации. В ранних версиях HEVC, SHVC, и MV-HEVC (например, Рабочей версии 4 SHVC и Рабочей версии 6 MV-HEVC), NoOutputOfPriorPicsFlag может быть установлен равным 1, когда пространственное разрешение или количество элементов памяти изображения изменяется. Посредством установления NoOutputOfPriorPicsFlag равным 1, декодер может управлять величиной памяти, доступной в DPB, посредством удаления изображений в DPB, при необходимости. Однако, на величину памяти, необходимую в DPB, можно также повлиять посредством изменений формата цветности и/или битовой глубины изображений.
[0025] Для решения этих и других задач, технологии, согласно некоторым аспектам, могут учитывать формат цветности и/или битовую глубину изображений при определении значения NoOutputOfPriorPicsFlag для IRAP-изображений. Например, эти технологии могут определить, является ли формат цветности и/или битовая глубина текущего изображения в текущем уровне, подлежащего декодированию, отличным от формата цветности и/или битовой глубины предшествующего изображения в текущем уровне. Формат цветности и/или битовая глубина текущего изображения и предшествующего изображения могут быть получены из активного в данный момент Набора параметров последовательности (SPS) и SPS, который был активным при декодировании предшествующего изображения, соответственно. Если существуют изменения в формате цветности или битовой глубине, то значение NoOutputOfPriorPicsFlag может быть установлено равным 1, для инициирования удаления изображений в DPB без вывода этих изображений.
[0026] Посредством учета изменений в формате цветности и/или битовой глубине изображений, данные технологии могут определить значение NoOutputOfPriorPicsFlag более точно. Например, данные технологии могут лучше предсказать ситуации, которые могут потребовать дополнительной памяти в буфере.
СИСТЕМА ВИДЕОКОДИРОВАНИЯ
[0027] Различные аспекты новых систем, аппаратов, и способов описаны здесь более полно со ссылкой на сопутствующие чертежи. Данное раскрытие сущности изобретения может быть, однако, осуществлено во многих разных формах, и оно не должно толковаться в качестве ограничения для любой конкретной структуры или функции, представленной в данном раскрытии сущности изобретения. Напротив, эти аспекты обеспечены таким образом, чтобы данное раскрытие сущности изобретения было обстоятельным и полным, и полностью передавало объем данного раскрытия сущности изобретения специалистам в данной области техники. На основе указаний, приведенных здесь, специалистам в данной области техники будет понятно, что предполагается, что объем данного раскрытия сущности изобретения охватывает любой аспект новых систем, аппаратов, и способов, описанных здесь, реализованный независимо или в комбинации с другим аспектом данного раскрытия сущности изобретения. Например, аппарат может быть реализован или способ может быть осуществлен на практике с использованием любого количества аспектов, изложенных здесь. Дополнительно, предполагается, что объем данного раскрытия сущности изобретения охватывает такой аппарат или способ, который осуществлен на практике с использованием другой структуры, функциональности, или структуры или функциональности, дополнительных или отличных по отношению к различным аспектам данного раскрытия сущности изобретения, изложенным здесь. Следует понимать, что любой аспект, описанный здесь, может быть осуществлен посредством одного или более пунктов формулы изобретения.
[0028] Хотя здесь описаны конкретные аспекты, многие изменения и перестановки этих аспектов попадают в объем данного раскрытия сущности изобретения. Хотя упомянуты некоторые выгоды и преимущества предпочтительных аспектов, предполагается, что объем данного раскрытия сущности изобретения не ограничен конкретными выгодами, вариантами использования, или целями. Напротив, предполагается, что аспекты данного раскрытия сущности изобретения являются вполне применимыми для разных беспроводных технологий, системных конфигураций, сетей, и протоколов передачи данных, некоторые из которых проиллюстрированы в качестве примера на фигурах и в нижеследующем описании предпочтительных аспектов. Подробное описание и чертежи только иллюстрируют, а не ограничивают данное раскрытие сущности изобретения, причем объем данного раскрытия сущности изобретения определен прилагаемой формулой изобретения и ее эквивалентами.
[0029] Прилагаемые чертежи иллюстрируют примеры. Элементы, указанные ссылочными позициями в прилагаемых чертежах, соответствуют элементам, указанным подобными ссылочными позициями в нижеследующем описании. В данном раскрытии сущности изобретения, то, что элементы имеют наименования, которые начинаются с порядковых числительных (например, «первый», «второй», «третий», и т.д.), не обязательно предполагает, что эти элементы имеют конкретный порядок. Напротив, такие порядковые числительные используются только для ссылки на разные элементы того же или подобного типа.
[0030] Фиг. 1А является блок-схемой, которая иллюстрирует иллюстративную систему 10 видеокодирования, которая может использовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения. При использовании в данном описании, термин «видеокодер» относится, в общем, как к видеокодерам, так и к видеодекодерам. В данном раскрытии сущности изобретения, термины «видеокодирование» или «кодирование» могут относиться, в общем, к видеокодированию и видео декодированию. Дополнительно к видеокодерам и видеодекодерам, аспекты, описанные в данной заявке, могут быть распространены на другие соответствующие устройства, такие как транскодеры (например, устройства, которые могут декодировать битовый поток и повторно кодировать другой битовый поток) и промежуточные устройства (например, устройства, которые могут модифицировать, преобразовывать, и/или иным образом обрабатывать битовый поток).
[0031] Как показано на фиг. 1А, система 10 видеокодирования включает в себя исходное устройство 12, которое генерирует кодированные видеоданные, подлежащие декодированию позже, посредством целевого устройства 14. В примере фиг. 1А, исходное устройство 12 и целевое устройство 14 являются отдельными устройствами. Следует отметить, однако, что исходное и целевое устройства 12, 14 могут находиться на одном и том же устройстве или могут быть частью одного и того же устройства, как показано в примере фиг. 1В.
[0032] Со ссылкой еще раз на фиг. 1А, исходное устройство 12 и целевое устройство 14 могут, соответственно, содержать любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (например, ПК-блокнот), планшетные компьютеры, телевизионные приставки, мобильные телефоны, такие как так называемые «смартфоны», так называемые «интеллектуальные» планшеты, телевизоры, камеры, устройства отображения, цифровые медиаплееры, игровые видеоконсоли, устройство потокового видео, и т.п. В некоторых случаях, исходное устройство 12 и целевое устройство 14 могут быть снабжены средствами для беспроводной связи.
[0033] Целевое устройство 14 может принимать, через канал 16, кодированные видеоданные, подлежащие декодированию. Канал 16 может содержать любой тип среды или устройства, способный перемещать кодированные видеоданные от исходного устройства 12 к целевому устройству 14. В примере фиг. 1А, канал 16 может содержать среду передачи данных для обеспечения исходному устройству 12 возможности передачи кодированных видеоданных к целевому устройству 14 в режиме реального времени. Кодированные видеоданные могут быть промодулированы согласно стандарту связи, например, протоколу беспроводной связи, и могут быть переданы к целевому устройству 14. Среда передачи данных может содержать любую беспроводную или проводную среду передачи данных, например, радиочастотный (RF) спектр или одну или более физических линий передачи данных. Среда передачи данных может быть частью сети на основе пакетов, такой как локальная сеть, широкомасштабная сеть, или глобальная сеть, такая как интернет. Среда передачи данных может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть использовано для облегчения передачи данных от исходного устройства 12 к целевому устройству 14.
[0034] Альтернативно, кодированные данные могут быть выведены из выходного интерфейса 22 в необязательное запоминающее устройство 31. Подобным образом, к кодированным данным может быть осуществлен доступ из запоминающего устройства 31 посредством входного интерфейса 28, например, целевого устройства 14. Запоминающее устройство 31 может включать в себя любую из множества запоминающих сред распределенного или локального доступа, таких как накопитель на жестких дисках, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые запоминающие среды для хранения кодированных видеоданных. В дополнительном примере, запоминающее устройство 31 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить кодированные видеоданные, генерируемые исходным устройством 12. Целевое устройство 14 может осуществлять доступ к хранящимся видеоданным из запоминающего устройства 31 посредством потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, способным хранить кодированные видеоданные и передавать эти кодированные видеоданные к целевому устройству 14. Иллюстративные файловые серверы включают в себя web-сервер (например, для web-сайта), сервер Протокола передачи файлов (File Transfer Protocol-FTP), устройства для Устройства хранения данных, подключаемого к сети (network attached storage-NAS), или локальный диск. Целевое устройство 14 может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, включая интернет- соединение. Это соединение может включать в себя беспроводной канал (например, соединение по беспроводной локальной сети (wireless local area network-WLAN), проводное соединение (например, цифровую абонентскую линию (digital subscriber line - DSL), кабельный модем, и т.д.), или их комбинацию, которые подходят для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных из запоминающего устройства 31 может быть потоковой передачей, передачей с помощью загрузки, или их комбинацией.
[0035] Технологии данного раскрытия сущности изобретения не ограничены беспроводными применениями или конфигурациями. Эти технологии могут быть применены в видеокодировании для поддержки любого из множества мультимедийных применений, например, для трансляции эфирного телевидения, для трансляции кабельного телевидения, трансляции спутникового телевидения, передачи потокового видео, например, через интернет (например, динамической адаптивной потоковой передачи с использованием Протокола передачи гипертекста (Hypertext Transfer Protocol - HTTP), и т.д.), кодирования цифрового видео для хранения в запоминающей среде, декодирования цифрового видео, хранящегося в запоминающей среде, или других применений. В некоторых примерах, система 10 видеокодирования может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видео для поддержки применений, таких как потоковая передача видео, воспроизведение видео, трансляция видео, и/или видео телефония.
[0036] В примере фиг. 1А, исходное устройство 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях, выходной интерфейс 22 может включать в себя модулятор/ демодулятор (модем) и/или передатчик. В исходном устройстве 12, источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видео камеру, видео архив, содержащий ранее захваченные видео, интерфейс передачи видео для приема видео от поставщика видео контента, и/или компьютерную графическую систему для генерации компьютерных графических данных в виде исходного видео, или комбинацию таких источников. В качестве одного примера, если источник 18 видео является видео камерой, то исходное устройство 12 и целевое устройство 14 могут образовать так называемые «камерофоны» или «видеофоны», показанные в примере фиг. 1В. Однако, технологии, описанные в данном раскрытии сущности изобретения, могут быть применены для общего видеокодирования, и могут быть применены для беспроводных и/или проводных применений.
[0037] Захваченное, предварительно захваченное, или сгенерированное компьютером видео может быть закодировано посредством видеокодера 20. Кодированные видеоданные могут быть переданы к целевому устройству 14 через выходной интерфейс 22 исходного устройства 12. Кодированные видеоданные могут быть также (или альтернативно) сохранены на запоминающем устройстве 31 для осуществления доступа позже, посредством целевого устройства 14 или других устройств, для декодирования и/или воспроизведения. Видеокодер 20, показанный на фиг. 1А и 1В, может содержать видеокодер 20, показанный на фиг. 2А, видеокодер 23, показанный на фиг. 2В, или любой другой видеокодер, описанный здесь.
[0038] В примере фиг. 1А, целевое устройство 14 включает в себя входной интерфейс 28, видеодекодер 30, и устройство 32 отображения. В некоторых случаях, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 целевого устройства 14 может принимать кодированные видеоданные по каналу 16 и/или из запоминающего устройства 31. Кодированные видеоданные, передаваемые по каналу 16, или обеспечиваемые на запоминающем устройстве 31, могут включать в себя множество элементов синтаксиса, генерируемых видеокодером 20 для использования видеодекодером, таким как видеодекодер 30, при декодировании видеоданных. Такие элементы синтаксиса могут быть включены в кодированные видеоданные, передаваемые в среде передачи данных, или хранящиеся на файловом сервере. Видеодекодер 30, показанный на фиг. 1А и 1В, может содержать видеодекодер 30, показанный на фиг. 3А, видеодекодер 33, показанный на фиг. 3В, или любой другой видеодекодер, описанный здесь.
[0039] Устройство 32 отображения может быть встроено в целевое устройство 14 или может быть внешним по отношению к нему. В некоторых примерах, целевое устройство 14 может включать в себя встроенное устройство отображения, а также может быть выполнено с возможностью взаимодействия с внешним устройством отображения. В других примерах, целевое устройство 14 может быть устройством отображения. В общем, устройство 32 отображения отображает декодированные видеоданные для пользователя, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (liquid crystal display-LCD), плазменный дисплей, дисплей на органических светодиодах (organic light emitting diode-OLED), или другой тип устройства отображения.
[0040] Согласно соответствующим аспектам, фиг. 1В показывает иллюстративную систему 10′ видеокодирования и декодирования, в которой исходное и целевое устройства 12, 14 находятся на устройстве 11 или являются его частью. Устройство 11 может быть мобильным телефоном, таким как «смартфон» и т.п. Устройство 11 может включать в себя необязательное управляющее/обрабатывающее устройство 13, функционально связанное с исходным и целевым устройствами 12, 14. Система 10′ фиг. 1В может дополнительно включать в себя блок 21 видео обработки между видеокодером 20 и выходным интерфейсом 22. В некоторых реализациях, блок 21 видео обработки является отдельным блоком, как показано на фиг. 1В; однако, в других реализациях, блок 21 видео обработки может быть реализован в виде части видеокодера 20 и/или управляющего/обрабатывающего устройства 13. Система 10′ может также включать в себя необязательное устройство 29 отслеживания, которое может отслеживать интересующий объект в видео последовательности. Интересующий объект, подлежащий отслеживанию, может быть сегментирован посредством технологии, описанной в связи с одним или более аспектами данного раскрытия сущности изобретения. Согласно соответствующим аспектам, отслеживание может быть выполнено посредством только устройства отображения 32, или совместно с устройством 29 отслеживания. Система 10′ фиг. 1В и ее компоненты являются, в других отношениях, подобными системе 10 фиг. 1А и ее компонентам.
[0041] Видеокодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как HEVC, и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видеокодер 20 и видеодекодер 30 могут функционировать согласно другим специализированным или промышленным стандартам, таким как стандарт ITU-T H.264, альтернативно называемый MPEG 4, Часть 10, AVC, или согласно расширениям таких стандартов. Технологии данного раскрытия сущности изобретения, однако, не ограничены никакими конкретными стандартами кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.
[0042] Хотя это и не показано в примерах фиг. 1А и 1В, каждый их видеокодера 20 и видеодекодера 30 может быть объединен со звуковым кодером или декодером, и может включать в себя соответствующие MUX-DEMUX-блоки, или другое аппаратное обеспечение или программное обеспечение, для обработки кодирования как звука, так и видео в общем потоке данных или отдельных потоках данных. При необходимости, в некоторых примерах, MUX-DEMUX-блоки могут соответствовать протоколу мультиплексирования ITU H.223, или другим протоколам, таким как Протокол пользовательских дейтаграмм (user datagram protocol-UDP).
[0043] Каждый из видеокодера 20 и видеодекодера 30 может быть реализован в виде любой из множества подходящих схем кодера, например, схем с использованием одного или более микропроцессоров, цифровых сигнальных процессоров (digital signal processor-DSP), специализированных интегральных схем (application specific integrated circuit-ASIC), матриц программируемых логических вентилей (field programmable gate array-FPGA), дискретных логических схем, программного обеспечения, аппаратного обеспечения, аппаратно-программного обеспечения или любой их комбинации. При частичной реализации этих технологий в программном обеспечении, некоторое устройство может хранить команды для программного обеспечения в подходящем некратковременном компьютерно-читаемом носителе, и может исполнять эти команды в аппаратном обеспечении с использованием одного или более процессоров, для выполнения технологий данного раскрытия сущности изобретения. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть встроен в виде части объединенного кодера/ декодера (кодека) в соответствующее устройство.
ПРОЦЕСС ВИДЕОКОДИРОВАНИЯ
[0044] Как кратко упомянуто выше, видеокодер 20 кодирует видеоданные. Видеоданные могут содержать одно или более изображений. Каждое из изображений является неподвижным изображением, образующим часть видео. В некоторых примерах, изображение может называться видео «кадром». Когда видеокодер 20 кодирует видеоданные, видеокодер 20 может сгенерировать битовый поток. Битовый поток может включать в себя последовательность битов, которые образуют кодированное представление видеоданных. Битовый поток может включать в себя кодированные изображения и соответствующие данные. Кодированное изображение является кодированным представлением изображения.
[0045] Для генерации битового потока, видеокодер 20 может выполнить операции кодирования в отношении каждого изображения в видеоданных. Когда видеокодер 20 выполняет операции кодирования в отношении изображений, видеокодер 20 может сгенерировать последовательность кодированных изображений и соответствующих данных. Соответствующие данные могут включать в себя наборы параметров видео (video parameter set-VPS), наборы параметров последовательности (SPS), наборы параметров изображений (picture parameter set-PPS), наборы параметров адаптации (adaptation parameter set-APS), и другие структуры синтаксиса. SPS может содержать параметры, применимые к нулевому или большему количеству последовательностей изображений. PPS может содержать параметры, применимые к нулевому или большему количеству изображений. APS может содержать параметры, применимые к нулевому или большему количеству изображений. Параметры в APS могут быть параметрами, которые могут измениться с большей вероятностью, чем параметры в PPS.
[0046] Для генерации кодированного изображения, видеокодер 20 может разделить изображение на видеоблоки равного размера. Видеоблок может быть двухмерной матрицей отсчетов. Каждый из видеоблоков связан с древовидным блоком. В некоторых примерах, древовидный блок может называться самым большим блоком кодирования (largest coding unit-LCU). Древовидные блоки HEVC могут быть в широком смысле аналогичными макроблокам предшествующих стандартов, таких как H.264/AVC. Однако, древовидный блок не обязательно ограничен конкретным размером и может включать в себя один или более блоков кодирования (CU). Видеокодер 20 может использовать разделение квадродерева, для разделения видеоблоков древовидных блоков на видеоблоки, связанные с CU, отсюда происходит наименование «древовидные блоки».
[0047] В некоторых примерах, видеокодер 20 может разделить изображение на множество срезов. Каждый из срезов может включать в себя целое число CU. В некоторых примерах, срез содержит целое число древовидных блоков. В некоторых примерах, граница среза может находиться в пределах древовидного блока.
[0048] В качестве части выполнения операции кодирования в отношении изображения, видеокодер 20 может выполнить операции кодирования в отношении каждого среза изображения. Когда видеокодер 20 выполняет операцию кодирования в отношении среза, видеокодер 20 может сгенерировать кодированные данные, связанные со срезом. Кодированные данные, связанные со срезом, могут называться «кодированным срезом».
[0049] Для генерации кодированного среза, видеокодер 20 может выполнить операции кодирования в отношении каждого древовидного блока в срезе. Когда видеокодер 20 выполняет операцию кодирования в отношении древовидного блока, видеокодер 20 может сгенерировать кодированный древовидный блок. Кодированный древовидный блок может содержать данные, представляющие кодированную версию древовидного блока.
[0050] Когда видеокодер 20 генерирует кодированный срез, видеокодер 20 может выполнить операции кодирования (например, кодирование) в отношении древовидных блоков в срезе, согласно растровому порядку сканирования. Например, видеокодер 20 может закодировать древовидные блоки среза в порядке продвижения слева направо по самому верхнему ряду древовидных блоков в срезе, затем, слева направо по следующему более низкому ряду древовидных блоков, и т.д., до тех пор, пока видеокодер 20 не закодирует каждый из древовидных блоков в срезе.
[0051] В результате кодирования древовидных блоков согласно растровому порядку сканирования, древовидные блоки выше и левее данного древовидного блока могут быть закодированы, а древовидные блоки ниже и правее данного древовидного блока могут еще не быть закодированными. Соответственно, видеокодер 20 может осуществить доступ к информации, сгенерированной при кодировании древовидных блоков выше и левее данного древовидного блока, при кодировании данного древовидного блока. Однако, видеокодер 20 не может осуществить доступ к информации, сгенерированной при кодировании древовидных блоков ниже и правее данного древовидного блока, при кодировании данного древовидного блока.
[0052] Для генерации кодированного древовидного блока, видеокодер 20 может рекурсивно выполнять разделение квадродерева в отношении видеоблока древовидного блока, для разделения видеоблока на все меньшие и меньшие видеоблоки. Каждый из меньших видеоблоков может быть связан с другим CU. Например, видеокодер 20 может разделить видеоблок древовидного блока на четыре субблока равного размера, разделить один или более субблоков на четыре суб-субблока равного размера, и т.д. Разделенный CU может быть CU, видеоблок которого разделен на видеоблоки, связанные с другими CU. Неразделенный CU может быть CU, видеоблок которого не разделен на видеоблоки, связанные с другими CU.
[0053] Один или более элементов синтаксиса в битовом потоке могут указывать на максимальное количество раз, которое видеокодер 20 может делить видеоблок древовидного блока. Видеоблок CU может быть квадратным по форме. Размер видеоблока CU (например, размер CU) может быть в диапазоне от 8*8 пикселов вплоть до размера видеоблока древовидного блока (например, размера древовидного блока), с максимальным количеством 64*64 пиксела или более.
[0054] Видеокодер 20 может выполнить операции кодирования (например, кодирование) в отношении каждого CU древовидного блока, согласно z-образному порядку сканирования. Другими словами, видеокодер 20 может закодировать верхний левый CU, верхний правый CU, нижний левый CU, и, затем, нижний правый CU, при таком порядке. Когда видеокодер 20 выполняет операцию кодирования в отношении разделенного CU, видеокодер 20 может закодировать CU, связанные с субблоками видеоблока разделенного CU, согласно z-образному порядку сканирования. Другими словами, видеокодер 20 может закодировать CU, связанный с верхним левым субблоком, CU, связанный с верхним правым субблоком, CU, связанный с нижним левым субблоком, и, затем, CU, связанный с нижним правым субблоком, при таком порядке.
[0055] В результате кодирования CU древовидного блока согласно z-образному порядку сканирования, могут быть закодированы CU выше, выше-и-левее, выше-и-правее, левее, и ниже-и-левее данного CU. CU ниже и правее данного CU могут еще не быть закодированными. Соответственно, видеокодер 20 может осуществить доступ к информации, сгенерированной при кодировании некоторых CU, которые находятся рядом с данным CU, при кодировании данного CU. Однако, видеокодер 20 не может осуществить доступ к информации, сгенерированной при кодировании других CU, которые находятся рядом с данным CU, при кодировании данного CU.
[0056] Когда видеокодер 20 кодирует неразделенный CU, видеокодер 20 может сгенерировать один или более блоков предсказания (PU) для CU. Каждый из PU CU может быть связан с другим видеоблоком в пределах видеоблока CU. Видеокодер 20 может сгенерировать предсказанный видеоблок для каждого PU CU. Предсказанный видеоблок PU может быть блоком отсчетов. Видеокодер 20 может использовать внутреннее предсказание или внешнее предсказание для генерации предсказанного видеоблока для PU.
[0057] Когда видеокодер 20 использует внутреннее предсказание для генерации предсказанного видеоблока PU, видеокодер 20 может сгенерировать предсказанный видеоблок PU на основе декодированных отсчетов изображения, связанного с PU. Если видеокодер 20 использует внутреннее предсказание для генерации предсказанных видеоблоков PU CU, то CU является внутренне-предсказанным CU. Когда видеокодер 20 использует внешнее предсказание для генерации предсказанного видеоблока PU, видеокодер 20 может сгенерировать предсказанный видеоблок PU на основе декодированных отсчетов одного или более изображений, отличных от изображения, связанного с PU. Если видеокодер 20 использует внешнее предсказание для генерации предсказанных видеоблоков PU CU, то CU является внешне-предсказанным CU.
[0058] Кроме того, когда видеокодер 20 использует внешнее предсказание для генерации предсказанного видеоблока для PU, видеокодер 20 может сгенерировать информацию о движении для PU. Информация о движении для PU может указывать на один или более опорных блоков PU. Каждый опорный блок PU может быть видеоблоком в пределах опорного изображения. Опорное изображение может быть изображением, отличным от изображения, связанного с PU. В некоторых примерах, опорный блок PU может также называться «опорным отсчетом» PU. Видеокодер 20 может сгенерировать предсказанный видеоблок для PU на основе опорных блоков PU.
[0059] После генерации видеокодером 20 предсказанных видеоблоков для одного или более PU CU, видеокодер 20 может сгенерировать остаточные данные для CU на основе предсказанных видеоблоков для PU CU. Остаточные данные для CU могут указывать на различия между отсчетами в предсказанных видеоблоках для PU CU и исходным видеоблоком CU.
[0060] Кроме того, в качестве части выполнения операции кодирования в отношении неразделенного CU, видеокодер 20 может выполнить рекурсивное разделение квадродерева в отношении остаточных данных CU, для разделения остаточных данных CU на один или более блоков остаточных данных (например, остаточных видеоблоков), связанных с блоками преобразования (TU) CU. Каждый TU CU может быть связан с другим остаточным видеоблоком.
[0061] Видеокодер 20 может применять одно или более преобразований для остаточных видеоблоков, связанных с TU, для генерации блоков коэффициентов преобразования (например, блоков коэффициентов преобразования), связанных с TU. Концептуально, блок коэффициентов преобразования может быть двухмерной (2D) матрицей коэффициентов преобразования.
[0062] После генерации блока коэффициентов преобразования, видеокодер 20 может выполнить процесс квантования в отношении блока коэффициентов преобразования. Квантование, в общем, относится к процессу, в котором коэффициенты преобразования квантуют для уменьшения, насколько возможно, количества данных, используемых для представления коэффициентов преобразования, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами преобразования. Например, n-битный коэффициент преобразования может быть округлен в меньшую сторону до m-битного коэффициента преобразования, во время квантования, где n является большим, чем m.
[0063] Видеокодер 20 может связать каждый CU со значением параметра квантования (quantization parameter-QP). Значение QP, связанное с CU, может определить, как видеокодер 20 квантует блоки коэффициентов преобразования, связанные с CU. Видеокодер 20 может настроить степень квантования, применяемую к блокам коэффициентов преобразования, связанным с CU, посредством настройки значения QP, связанного с CU.
[0064] После квантования видеокодером 20 блока коэффициентов преобразования, видеокодер 20 может сгенерировать наборы элементов синтаксиса, которые представляют коэффициенты преобразования в квантованном блоке коэффициентов преобразования. Видеокодер 20 может применять операции энтропийного кодирования, такие как операции Контекстно-адаптивного двоично-арифметического кодирования (Context Adaptive Binary Arithmetic Coding-CABAC), к некоторым из этих элементов синтаксиса. Также, могут быть использованы другие технологии энтропийного кодирования, такие как Контекстно-адаптивное кодирование с переменной длиной (content adaptive variable length coding-CAVLC), энтропийное кодирование с разделением интервала вероятности (probability interval partitioning entropy-PIPE), или другие виды двоичного арифметического кодирования.
[0065] Битовый поток, генерируемый видеокодером 20, может включать в себя последовательность блоков Уровня сетевой абстракции (Network Abstraction Layer-NAL). Каждый из блоков NAL может быть структурой синтаксиса, содержащей указание на тип данных в блоке NAL и байты, содержащие данные. Например, блок NAL может содержать данные, представляющие набор параметров видео, набор параметров последовательности, набор параметров изображения, кодированный срез, дополнительную расширенную информацию (supplemental enhancement information - SEI), разделитель блока доступа, данные заполнителя, или другой тип данных. Данные в блоке NAL могут включать в себя различные структуры синтаксиса.
[0066] Видеодекодер 30 может принимать битовый поток, генерируемый видеокодером 20. Битовый поток может включать в себя кодированное представление видеоданных, закодированных видеокодером 20. Когда видеодекодер 30 принимает битовый поток, видеодекодер 30 может выполнить операцию синтаксического анализа в отношении битового потока. Когда видеодекодер 30 выполняет операцию синтаксического анализа, видеодекодер 30 может извлечь элементы синтаксиса из битового потока. Видеодекодер 30 может восстановить изображения видеоданных на основе элементов синтаксиса, извлеченных из битового потока. Процесс для восстановления видеоданных на основе элементов синтаксиса может быть, в общем, обратным по отношению к процессу, выполняемому видеокодером 20 для генерации элементов синтаксиса.
[0067] После извлечения видеодекодером 30 элементов синтаксиса, связанных с CU, видеодекодер 30 может сгенерировать предсказанные видеоблоки для PU CU, на основе элементов синтаксиса. Дополнительно, видеодекодер 30 может выполнить обратное квантование блоков коэффициентов преобразования, связанных с TU CU. Видеодекодер 30 может выполнить обратные преобразования в отношении блоков коэффициентов преобразования для восстановления остаточных видеоблоков, связанных с TU CU. После генерации предсказанных видеоблоков и восстановления остаточных видеоблоков, видеодекодер 30 может восстановить видеоблок CU на основе предсказанных видеоблоков и остаточных видеоблоков. Таким образом, видеодекодер 30 может восстановить видеоблоки CU на основе элементов синтаксиса в битовом потоке.
ВИДЕОКОДЕР
[0068] Фиг. 2А является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения. Видеокодер 20 может быть выполнен с возможностью обработки единственного уровня видео кадра, например, для HEVC. Дополнительно, видеокодер 20 может быть выполнен с возможностью выполнения любой или всех технологий данного раскрытия сущности изобретения, включая, но не ограничиваясь этим, способы логического вывода NoOutputOfPriorPicsFlag и соответствующие процессы, описанные более подробно выше и ниже в отношении фиг. 4 и 5. В качестве одного примера, блок 100 обработки предсказаний может быть выполнен с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения. В другом варианте осуществления, видеокодер 20 включает в себя необязательный блок 128 межуровневого предсказания, который выполнен с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения. В других вариантах осуществления, межуровневое предсказание может быть выполнено посредством блока 100 обработки предсказаний (например, блока 121 внешнего предсказания и/или блока 126 внутреннего предсказания), причем в этом случае, блок 128 межуровневого предсказания может быть опущен. Однако, аспекты данного раскрытия сущности изобретения этим не ограничены. В некоторых примерах, технологии, описанные в данном раскрытии сущности изобретения, могут совместно использоваться различными компонентами видеокодера 20. В некоторых примерах, дополнительно или альтернативно, процессор (не показан) может быть выполнен с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения.
[0069] В целях объяснения, данное раскрытие сущности изобретения описывает видеокодер 20 в контексте кодирования HEVC. Однако, технологии данного раскрытия сущности изобретения могут быть применимыми к другим стандартам или способам кодирования. Пример, показанный на фиг. 2А, предназначен только для одноуровневого кодека. Однако, как будет описано дополнительно в отношении фиг. 2В, некоторые или все видеокодеры 20 могут быть сдвоены для обработки многоуровневого кодека.
[0070] Видеокодер 20 может выполнить внутреннее и внешнее кодирование видеоблоков в пределах видео срезов. Внутреннее кодирование основано на пространственном предсказании для уменьшения или удаления пространственной избыточности в видео в пределах данного видео кадра или изображения. Внешнее кодирование основано на временном предсказании для уменьшения или удаления временной избыточности в видео в пределах соседних кадров или изображений видео последовательности. Внутренний режим (I-режим) может относиться к любому из нескольких режимов пространственного кодирования. Внешние режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного кодирования.
[0071] В примере фиг. 2А, видеокодер 20 включает в себя множество функциональных компонентов. Функциональные компоненты видеокодера 20 включают в себя блок 100 обработки предсказаний, блок 102 остаточной генерации, блок 104 обработки преобразования, блок 106 квантования, блок 108 обратного квантования, блок 110 обратного преобразования, блок 112 восстановления, блок 113 фильтрации, буфер 114 декодированных изображений, и блок 116 энтропийного кодирования. Блок 100 обработки предсказаний включает в себя блок 121 внешнего предсказания, блок 122 оценки движения, блок 124 компенсации движения, блок 126 внутреннего предсказания, и блок 128 межуровневого предсказания. В других примерах, видеокодер 20 может включать в себя больше, меньше функциональных компонентов, или другие функциональные компоненты. Кроме того, блок 122 оценки движения и блок 124 компенсации движения могут быть высокоинтегрированными, но представлены в примере фиг. 2А отдельно в целях объяснения.
[0072] Видеокодер 20 может принимать видеоданные. Видеокодер 20 может принимать видеоданные от различных источников. Например, видеокодер 20 может принимать видеоданные от источника 18 видео (например, показанного на фиг. 1А или 1В) или от другого источника. Видеоданные могут представлять собой последовательность изображений. Для кодирования видеоданных, видеокодер 20 может выполнить операцию кодирования в отношении каждого из изображений. В качестве части выполнения операции кодирования в отношении изображения, видеокодер 20 может выполнить операции кодирования в отношении каждого среза изображения. В качестве части выполнения операции кодирования в отношении среза, видеокодер 20 может выполнить операции кодирования в отношении древовидных блоков в срезе.
[0073] В качестве части выполнения операции кодирования в отношении древовидного блока, блок 100 обработки предсказаний может выполнить разделение квадродерева в отношении видеоблока древовидного блока, для разделения видеоблока на все меньшие и меньшие видеоблоки. Каждый из меньших видеоблоков может быть связан с другим CU. Например, блок 100 обработки предсказаний может разделить видеоблок древовидного блока на четыре субблока равного размера, разделить один или более субблоков на четыре суб-субблока равного размера, и т.д.
[0074] Размеры видеоблоков, связанных с CU, могут быть в диапазоне от 8*8 отсчетов вплоть до размера древовидного блока с максимальным количеством 64*64 пиксела или более. В данном раскрытии сущности изобретения, “N*N” и “N на N” могут быть использованы взаимозаменяемо в отношении размеров видеоблока в отсчетах, в отношении вертикальных и горизонтальных размеров, например, «16*16» отсчетов или «16 на 16» отсчетов. В общем, видеоблок 16*16 имеет шестнадцать отсчетов в вертикальном направлении (y=16) и шестнадцать отсчетов в горизонтальном направлении (x=16). Подобным образом, блок N*N, в общем, имеет N отсчетов в вертикальном направлении и N отсчетов в горизонтальном направлении, где N представляет собой неотрицательное целое значение.
[0075] Кроме того, в качестве части операции кодирования в отношении древовидного блока, блок 100 обработки предсказаний может сгенерировать иерархическую структуру данных квадродерева для древовидного блока. Например, древовидный блок может соответствовать корневому узлу структуры данных квадродерева. Если блок 100 обработки предсказаний разделяет видеоблок древовидного блока на четыре субблока, то корневой узел имеет четыре узла-потомка в структуре данных квадродерева. Каждый из узлов-потомков соответствует CU, связанному с одним из субблоков. Если блок 100 обработки предсказаний разделяет один из субблоков на четыре суб-субблока, то узел, соответствующий CU, связанному с субблоком, может иметь четыре узла-потомка, каждый из которых соответствует CU, связанному с одним из суб-субблоков.
[0076] Каждый узел структуры данных квадродерева может содержать данные синтаксиса (например, элементы синтаксиса) для соответствующего древовидного блока или CU. Например, узел в квадродереве может включать в себя флаг расщепления, который указывает на то, разделен (например, расщеплен) ли видеоблок CU, соответствующего этому узлу, на четыре субблока. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, расщеплен ли видеоблок CU на субблоки. CU, видеоблок которого не разделен, может соответствовать оконечному узлу в структуре данных квадродерева. Кодированный древовидный блок может включать в себя данные на основе структуры данных квадродерева для соответствующего древовидного блока.
[0077] Видеокодер 20 может выполнить операции кодирования в отношении каждого неразделенного CU древовидного блока. Когда видеокодер 20 выполняет операцию кодирования в отношении неразделенного CU, видеокодер 20 генерирует данные, представляющие кодированное представление неразделенного CU.
[0078] В качестве части выполнения операции кодирования в отношении CU, блок 100 обработки предсказаний может разделить видеоблок среди одного или более PU CU. Видеокодер 20 и видеодекодер 30 могут поддерживать различные размеры PU. Предполагая, что размер конкретного CU составляет 2N*2N, видеокодер 20 и видеодекодер 30 могут поддерживать размеры PU, равные 2N*2N или N*N, и внешнее предсказание в симметричных размерах PU, равных 2N*2N, 2N*N, N*2N, N*N, 2N*NU, nL*2N, nR*2N, или подобных. Видеокодер 20 и видеодекодер 30 могут также поддерживать несимметричное разделение для размеров PU, равных 2N*NU, 2N*ND, nL*2N, и nR*2N. В некоторых примерах, блок 100 обработки предсказаний может выполнить геометрическое разделение, для разделения видеоблока CU среди PU CU вдоль границы, которая не пресекается со сторонами видеоблока CU под прямыми углами.
[0079] Блок 121 внешнего предсказания может выполнить внешнее предсказание в отношении каждого PU CU. Внешнее предсказание может обеспечить временное сжатие. Для выполнения внешнего предсказания в отношении PU, блок 122 оценки движения может сгенерировать информацию о движении для PU. Блок 124 компенсации движения может сгенерировать предсказанный видеоблок для PU на основе информации о движении и декодированных отсчетов изображений, отличных от изображения, связанного с CU (например, опорных изображений). В данном раскрытии сущности изобретения, предсказанный видеоблок, генерируемый блоком 124 компенсации движения, может называться внешне-предсказанным видеоблоком.
[0080] Срезы могут быть I-срезами, P-срезами, или B-срезами. Блок 122 оценки движения и блок 124 компенсации движения могут выполнить разные операции для PU CU в зависимости от того, находится ли PU в I-срезе, P-срезе, или B-срезе. В I-срезе, все PU являются внутренне-предсказанными. Следовательно, если PU находится в I-срезе, то блок 122 оценки движения и блок 124 компенсации движения не выполняют внешнее предсказание в отношении PU.
[0081] Если находится в P-срезе, то изображение, содержащее PU, связывают со списком опорных изображений, называемым «списком 0». Каждое из опорных изображений в списке 0 содержит отсчеты, которые могут быть использованы для внешнего предсказания других изображений. Когда блок 122 оценки движения выполняет операцию оценки движения в отношении PU в P-срезе, блок 122 оценки движения может осуществлять поиск опорного блока для PU в опорных изображениях в списке 0. Опорный блок PU может быть набором отсчетов, например, блоком отсчетов, который наиболее точно соответствует отсчетам в видеоблоке PU. Блок 122 оценки движения может использовать множество метрик для определения того, насколько точно набор отсчетов в опорном изображении соответствует отсчетам в видеоблоке PU. Например, блок 122 оценки движения может определить, насколько точно набор отсчетов в опорном изображении соответствует отсчетам в видеоблоке PU, посредством Суммы абсолютных разностей (sum of absolute difference-SAD), Суммы квадратов разностей (sum of square difference-SSD), или других разностных метрик.
[0082] После идентификации опорного блока PU в P-срезе, блок 122 оценки движения может сгенерировать опорный индекс, который указывает на опорное изображение в списке 0, содержащее опорный блок и вектор движения, который указывает на пространственное смещение между PU и опорным блоком. В различных примерах, блок 122 оценки движения может сгенерировать векторы движения с изменяемой степенью точности. Например, блок 122 оценки движения может сгенерировать векторы движения с точностью, равной одной четверти отсчета, одной восьмой отсчета, или другой доли отсчета. В случае точности, равной доле отсчета, значения опорных блоков могут быть интерполированы на основании значений отсчетов в целочисленных позициях в опорном изображении. Блок 122 оценки движения может вывести опорный индекс и вектор движения в качестве информации о движении PU. Блок 124 компенсации движения может сгенерировать предсказанный видеоблок PU на основе опорного блока, идентифицированного посредством информации о движении PU.
[0083] Если PU находится в B-срезе, то изображение, содержащее PU, может быть связано с двумя списками опорных изображений, называемыми «списком 0» и «списком 1». В некоторых примерах, изображение, содержащее B-срез, может быть связано с комбинацией списков, которая является комбинацией списка 0 и списка 1.
[0084] Кроме того, если PU находится в B-срезе, то блок 122 оценки движения может выполнить однонаправленное предсказание или двунаправленное предсказание для PU. Когда блок 122 оценки движения выполняет однонаправленное предсказание для PU, блок 122 оценки движения может осуществлять поиск опорного блока для PU в опорных изображениях списка 0 или списка 1. Блок 122 оценки движения может, затем, сгенерировать опорный индекс, который указывает на опорное изображение в списке 0 или списке 1, которое содержит опорный блок и вектор движения, который указывает на пространственное смещение между PU и опорным блоком. Блок 122 оценки движения может вывести опорный индекс, индикатор направления предсказания, и вектор движения, в качестве информации о движении PU. Индикатор направления предсказания может указывать на то, в списке 0 или в списке 1 находится опорное изображение, на которое указывает опорный индекс. Блок 124 компенсации движения может сгенерировать предсказанный видеоблок PU на основе опорного блока, указанного посредством информации о движении PU.
[0085] Когда блок 122 оценки движения выполняет двунаправленное предсказание для PU, блок 122 оценки движения может осуществлять поиск опорного блока для PU в опорных изображениях в списке 0, а также может осуществлять поиск другого опорного блока для PU в опорных изображениях в списке 1. Блок 122 оценки движения может, затем, сгенерировать опорные индексы, которые указывают на опорные изображения в списке 0 и списке 1, содержащие опорные блоки и векторы движения, которые указывают на пространственные смещения между опорными блоками и PU. Блок 122 оценки движения может вывести опорные индексы и векторы движения PU в качестве информации о движении PU. Блок 124 компенсации движения может сгенерировать предсказанный видеоблок PU на основе опорных блоков, указанных посредством информации о движении PU.
[0086] В некоторых примерах, блок 122 оценки движения не выводит полный набор информации о движении для PU для блока 116 энтропийного кодирования. Напротив, блок 122 оценки движения может сигнализировать информацию о движении PU со ссылкой на информацию о движении другого PU. Например, блок 122 оценки движения может определить, что информация о движении PU является в достаточной степени подобной информации о движении соседнего PU. В этом примере, блок 122 оценки движения может указать, в структуре синтаксиса, связанной с PU, значение, которое указывает видеодекодеру 30 на то, что PU имеет такую же информацию о движении, как соседний PU. В другом примере, блок 122 оценки движения может идентифицировать, в структуре синтаксиса, связанной с PU, соседний PU и разность векторов движения (motion vector difference-MVD). Разность векторов движения указывает на различие между вектором движения PU и вектором движения указанного соседнего PU. Видеодекодер 30 может использовать вектор движения указанного соседнего PU и разность векторов движения для определения вектора движения PU. Со ссылкой на информацию о движении первого PU при сигнализации информации о движении второго PU, видеокодер 20 может сигнализировать информацию о движении второго PU с использованием меньшего количества битов.
[0087] Как дополнительно описано ниже со ссылкой на фиг. 5, блок 100 обработки предсказаний может быть выполнен с возможностью кодирования (например, кодирования или декодирования) PU (или любых других блоков опорного уровня и/или улучшенного уровня или видеоблоков) посредством выполнения способов, показанных на фиг. 5. Например, блок 121 внешнего предсказания (например, через блок 122 оценки движения и/или блок 124 компенсации движения), блок 126 внутреннего предсказания, или блок 128 межуровневого предсказания, могут быть выполнены с возможностью выполнения способов, показанных на фиг. 5, либо все вместе, либо по-отдельности.
[0088] В качестве части выполнения операции кодирования в отношении CU, блок 126 внутреннего предсказания может выполнить внутреннее предсказание в отношении PU CU. Внутреннее предсказание может обеспечить пространственное сжатие. Когда блок 126 внутреннего предсказания выполняет внутреннее предсказание в отношении PU, блок 126 внутреннего предсказания может сгенерировать данные предсказания для PU на основе декодированных отсчетов других PU в том же изображении. Данные предсказания для PU могут включать в себя предсказанный видеоблок и различные элементы синтаксиса. Блок 126 внутреннего предсказания может выполнить внутреннее предсказание в отношении PU в I-срезах, P-срезах, и B-срезах.
[0089] Для выполнения внутреннего предсказания в отношении PU, блок 126 внутреннего предсказания может использовать многочисленные режимы внутреннего предсказания, для генерации многочисленных наборов данных предсказания для PU. Когда блок 126 внутреннего предсказания использует режим внутреннего предсказания для генерации набора данных предсказания для PU, блок 126 внутреннего предсказания может распространить отсчеты из видеоблоков соседних PU через видеоблок данного PU в направлении и/или согласно градиенту, связанному с режимом внутреннего предсказания. Соседние PU могут быть выше, выше и правее, выше и левее, или левее PU, что предполагает порядок кодирования слева направо и сверху вниз, для PU, CU, и древовидных блоков. Блок 126 внутреннего предсказания может использовать различные количества режимов внутреннего предсказания, например, 33 направленных режима внутреннего предсказания, в зависимости от размера PU.
[0090] Блок 100 обработки предсказаний может выбрать данные предсказания для PU среди данных предсказания, генерируемых блоком 124 компенсации движения для PU, или данных предсказания, генерируемых блоком 126 внутреннего предсказания для PU. В некоторых примерах, блок 100 обработки предсказаний выбирает данные предсказания для PU на основе метрик скорости/ искажений наборов данных предсказания.
[0091] Если блок 100 обработки предсказаний выбирает данные предсказания, генерируемые блоком 126 внутреннего предсказания, то блок 100 обработки предсказаний может сигнализировать режим внутреннего предсказания, который был использован для генерации данных предсказания для PU, например, выбранный режим внутреннего предсказания. Блок 100 обработки предсказаний может сигнализировать выбранный режим внутреннего предсказания различными способами. Например, может оказаться вероятным, что выбранный режим внутреннего предсказания является таким же, как режим внутреннего предсказания соседнего PU. Другими словами, режим внутреннего предсказания соседнего PU может быть наиболее вероятным режимом для текущего PU. Таким образом, блок 100 обработки предсказаний может сгенерировать элемент синтаксиса для указания на то, что выбранный режим внутреннего предсказания является таким же, как режим внутреннего предсказания соседнего PU.
[0092] Как описано выше, видеокодер 20 может включать в себя блок 128 межуровневого предсказания. Блок 128 межуровневого предсказания выполнен с возможностью предсказания текущего блока (например, текущего блока в EL), с использованием одного или более разных уровней, которые доступны в SVC (например, базового или опорного уровня). Такое предсказание может называться межуровневым предсказанием. Блок 128 межуровневого предсказания использует способы предсказания для уменьшения межуровневой избыточности, посредством этого улучшая эффективность кодирования и уменьшая потребность в вычислительных ресурсах. Некоторые примеры межуровневого предсказания включают в себя межуровневое внутреннее предсказание, межуровневое предсказание движения, и межуровневое остаточное предсказание. Межуровневое внутреннее предсказание использует восстановление расположенных рядом блоков в базовом уровне для предсказания текущего блока в улучшенном уровне. Межуровневое предсказание движения использует информацию о движении базового уровня для предсказания движения в улучшенном уровне. Межуровневое остаточное предсказание использует остаток базового уровня для предсказания остатка улучшенного уровня. Каждая из схем межуровневого предсказания описана ниже более подробно.
[0093] После выбора блоком 100 обработки предсказаний данных предсказания для PU CU, блок 102 остаточной генерации может сгенерировать остаточные данные для CU посредством вычитания (например, указанного знаком минус) предсказанных видеоблоков PU CU из видеоблока CU. Остаточные данные CU могут включать в себя двухмерные остаточные видеоблоки, которые соответствуют разным компонентам отсчетов в видеоблоке CU. Например, остаточные данные могут включать в себя остаточный видеоблок, который соответствует разностям между компонентами яркости отсчетов в предсказанных видеоблоках PU CU и компонентами яркости отсчетов в исходном видеоблоке CU. Дополнительно, остаточные данные CU могут включать в себя остаточные видеоблоки, которые соответствуют разностям между компонентами цветности отсчетов в предсказанных видеоблоках PU CU и компонентами цветности отсчетов в исходном видеоблоке CU.
[0094] Блок 100 обработки предсказаний может выполнить разделение квадродерева, для разделения остаточных видеоблоков CU на субблоки. Каждый неразделенный остаточный видеоблок может быть связан с другим TU CU. Размеры и позиции остаточных видеоблоков, связанных с TU CU, могут или не могут быть основаны на размерах и позициях видеоблоков, связанных с PU CU. Структура квадродерева, известная как «остаточное квадродерево» (“residual quad tree”-RQT), может включать в себя узлы, связанные с каждым из остаточных видеоблоков. TU CU могут соответствовать оконечным узлам RQT.
[0095] Блок 104 обработки преобразования может сгенерировать один или более блоков коэффициентов преобразования для каждого TU CU, посредством применения одного или более преобразований к остаточному видеоблоку, связанному с TU. Каждый из блоков коэффициентов преобразования может быть двухмерной матрицей коэффициентов преобразования. Блок 104 обработки преобразования может применять различные преобразования к остаточному видеоблоку, связанному с TU. Например, блок 104 обработки преобразования может применять дискретное косинусное преобразование (discrete cosine transform-DCT), направленное преобразование, или концептуально подобное преобразование к остаточному видеоблоку, связанному с TU.
[0096] После генерации блоком 104 обработки преобразования блока коэффициентов преобразования, связанного с TU, блок 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования. Блок 106 квантования может квантовать блок коэффициентов преобразования, связанный с TU CU, на основе значения QP, связанного с CU.
[0097] Видеокодер 20 может связать значение QP с CU различными способами. Например, видеокодер 20 может выполнить анализ скорости-искажений в отношении древовидного блока, связанного с CU. В анализе скорости-искажений, видеокодер 20 может сгенерировать многочисленные кодированные представления древовидного блока посредством выполнения операции кодирования много раз в отношении древовидного блока. Видеокодер 20 может связать разные значения QP с CU, когда видеокодер 20 генерирует разные кодированные представления древовидного блока. Видеокодер 20 может сигнализировать о том, что данное значение QP связано с CU, когда данное значение QP связано с CU в кодированном представлении древовидного блока, которое имеет самую низкую метрику скорости передачи битов и искажений.
[0098] Блок 108 обратного квантования и блок 110 обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов преобразования, соответственно, для восстановления остаточного видеоблока на основании блока коэффициентов преобразования. Блок 112 восстановления может добавить восстановленный остаточный видеоблок к соответствующим отсчетам из одного или более предсказанных видеоблоков, сгенерированных блоком 100 обработки предсказаний, для создания восстановленного видеоблока, связанного с TU. Посредством восстановления видеоблоков для каждого TU CU таким образом, видеокодер 20 может восстановить видеоблок CU.
[0099] После восстановления блоком 112 восстановления видеоблока CU, блок 113 фильтрации может выполнить операцию деблокирования для уменьшения артефактов блокирования в видеоблоке, связанном с CU. После выполнения одной или более операций деблокирования, блок 113 фильтрации может сохранить восстановленный видеоблок CU в буфере 114 декодированных изображений. Блок 122 оценки движения и блок 124 компенсации движения могут использовать опорное изображение, которое содержит восстановленный видеоблок, для выполнения внешнего предсказания в отношении PU последующих изображений. Дополнительно, блок 126 внутреннего предсказания может использовать восстановленные видеоблоки в буфере 114 декодированных изображений для выполнения внутреннего предсказания в отношении PU в таком же изображении, как CU.
[00100] Блок 116 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 20. Например, блок 116 энтропийного кодирования может принимать блоки коэффициентов преобразования от блока 106 квантования и может принимать элементы синтаксиса от блока 100 обработки предсказаний. Когда блок 116 энтропийного кодирования принимает данные, блок 116 энтропийного кодирования может выполнить одну или более операций энтропийного кодирования для генерации энтропийно кодированных данных. Например, видеокодер 20 может выполнить операцию Контекстно-адаптивного кодирования с переменной длиной (CAVLC), операцию CABAC, операцию кодирования с переменной-переменной (variable-to-variable-V2V) длиной, операцию Синтаксического контекстно-адаптивного двоично-арифметического кодирования (syntax-based context-adaptive binary arithmetic coding-SBAC), операцию Энтропийного кодирования с разделением интервала вероятности (PIPE), или другой тип операции энтропийного кодирования в отношении данных. Блок 116 энтропийного кодирования может вывести битовый поток, который включает в себя энтропийно кодированные данные.
[00101] В качестве части выполнения операции энтропийного кодирования в отношении данных, блок 116 энтропийного кодирования может выбрать контекстную модель. Если блок 116 энтропийного кодирования выполняет операцию CABAC, то контекстная модель может указывать на оценки вероятностей конкретных бинов, имеющих конкретные значения. В контексте CABAC, термин «бин» используют в отношении бита бинаризованной версии элемента синтаксиса.
МНОГОУРОВНЕВЫЙ ВИДЕОКОДЕР
[00102] Фиг. 2В является блок-схемой, иллюстрирующей пример многоуровневого видеокодера 23 (также называемого видеокодером 23), который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения. Видеокодер 23 может быть выполнен с возможностью обработки многоуровневых видео кадров, например, для SHVC и многовидового кодирования. Дополнительно, видеокодер 23 может быть выполнен с возможностью выполнения любой или всех технологий данного раскрытия сущности изобретения.
[00103] Видеокодер 23 включает в себя видеокодер 20А и видеокодер 20В, каждый из которых может быть выполнен в виде видеокодера 20 и может выполнять функции, описанные выше в отношении видеокодера 20. Дополнительно, как указано посредством повторного использования ссылочных позиций, видеокодеры 20А и 20В могут включать в себя по меньшей мере некоторые из систем и подсистем видеокодера 20. Хотя показано, что видеокодер 23 включает в себя два видеокодера 20А и 20В, видеокодер 23 этим не ограничен и может включать в себя любое количество уровней видеокодеров 20. В некоторых вариантах осуществления, видеокодер 23 может включать в себя видеокодер 20 для каждого изображения или кадра в блоке доступа. Например, блок доступа, который включает в себя пять изображений, может быть обработан или закодирован посредством видеокодера, который включает в себя пять уровней кодеров. В некоторых вариантах осуществления, видеокодер 23 может включать в себя большее количество уровней кодеров, чем количество кадров в блоке доступа. В некоторых таких случаях, некоторые из уровней видеокодеров могут быть неактивными при обработке некоторых блоков доступа.
[00104] Дополнительно к видеокодерам 20А и 20В, видеокодер 23 может включать в себя блок 90 перевыборки. Блок 90 перевыборки может, в некоторых случаях, повысить дискретизацию базового уровня принятого видео кадра, например, для создания улучшенного уровня. Блок 90 перевыборки может повысить дискретизацию конкретной информации, связанной с принятым базовым уровнем кадра, а не другой информации. Например, блок 90 перевыборки может повысить дискретизацию пространственного размера или количества пикселов базового уровня, а количество срезов или порядок изображений может остаться неизменным. В некоторых случаях, блок 90 перевыборки может не обрабатывать принятое видео и/или может быть необязательным. Например, в некоторых случаях, блок 100 обработки предсказаний может выполнить повышение дискретизации. В некоторых вариантах осуществления, блок 90 перевыборки выполнен с возможностью повышения дискретизации уровня и реорганизации, переопределения, модификации, или настройки одного или более срезов в соответствии с набором правил в отношении границ срезов и/или правил растрового сканирования. Хотя первоначально описано, что блок 90 перевыборки повышает дискретизацию базового уровня, или более низкого уровня в блоке доступа, в некоторых случаях, блок 90 перевыборки может понижать дискретизацию уровня. Например, если во время потоковой передачи полоса частот уменьшается, то кадр может быть подвергнут понижающей дискретизации вместо повышающей дискретизации.
[00105] Блок 90 перевыборки может быть выполнен с возможностью приема изображения или кадра (или информации об изображении, связанной с изображением) из буфера 114 декодированных изображений кодера более низкого уровня (например, видеокодера 20А) и повышения дискретизации изображения (или принятой информации об изображении). Это повышенное по дискретизации изображение может быть, затем, обеспечено для блока 100 обработки предсказаний кодера более высокого уровня (например, видеокодера 20В), выполненного с возможностью кодирования изображения в том же блоке доступа, что и кодер более низкого уровня. В некоторых случаях, кодер более высокого уровня является одним уровнем, удаленным из кодера более низкого уровня. В других случаях, может существовать один или более кодеров более высокого уровня между видеокодером уровня 0 и кодером уровня 1 фиг. 2В.
[00106] В некоторых случаях, блок 90 перевыборки может быть опущен или обойден. В таких случаях, изображение из буфера 114 декодированных изображений видеокодера 20А может быть обеспечено напрямую, или по меньшей мере без обеспечения для блока 90 перевыборки, для блока 100 обработки предсказаний видеокодера 20В. Например, если видеоданные, обеспеченные для видеокодера 20В, и опорное изображение из буфера 114 декодированных изображений видеокодера 20А имеют одинаковый размер или разрешение, то опорное изображение может быть обеспечено для видеокодера 20В без какой-либо перевыборки.
[00107] В некоторых вариантах осуществления, видеокодер 23 понижает дискретизацию видеоданных, подлежащих обеспечению для кодера более низкого уровня, с использованием блока 94 понижения дискретизации, перед обеспечением видеоданных для видеокодера 20А. Альтернативно, блок 94 понижения дискретизации может быть блоком 90 перевыборки, способным повышать дискретизацию или понижать дискретизацию видеоданных. В других вариантах осуществления, блок 94 понижения дискретизации может быть опущен.
[00108] Как показано на фиг. 2В, видеокодер 23 может дополнительно включать в себя мультиплексор 98 (сокр. mux). Мультиплексор 98 может выводить объединенный битовый поток из видеокодера 23. Объединенный битовый поток может быть создан посредством взятия битовых потоков от каждого из видеокодеров 20А и 20В и смены их в зависимости от того, какой битовый поток выводится в данный момент времени. В то время как в некоторых случаях биты этих двух (или более, в случае более чем двух уровней видеокодеров) битовых потоков могут сменяться по одному биту в некоторый момент времени, во многих случаях битовые потоки объединяют по-другому. Например, выходной битовый поток может быть создан посредством смены одного блока выбранного битового потока в некоторый момент времени. В другом примере, выходной битовый поток может быть создан посредством вывода блоков от каждого из видеокодеров 20А и 20В в соотношении не-1:1. Например, два блока могут быть выведены из видеокодера 20В, для каждого блока, выведенного из видеокодера 20А. В некоторых вариантах осуществления, выходной поток от мультиплексора 98 может быть предварительно запрограммирован. В других вариантах осуществления, мультиплексор 98 может объединить битовые потоки от видеокодеров 20А и 20В, на основе управляющего сигнала, принимаемого от системы, внешней по отношению к видеокодеру 23, например, от процессора на исходном устройстве, включающем в себя исходное устройство 12. Управляющий сигнал может быть сгенерирован на основе разрешения или скорости передачи битов видео от источника 18 видео, на основе полосы частот канала 16, на основе подписки, связанной с пользователем (например, платной подписки относительно бесплатной подписки), или на основе любого другого фактора для определения необходимого разрешения на выходе видеокодера 23.
ВИДЕОДЕКОДЕР
[00109] Фиг. 3А является блок-схемой, иллюстрирующей пример видеодекодера 30, который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения. Видеодекодер 30 может быть выполнен с возможностью обработки единственного уровня видео кадра, например, для HEVC. Дополнительно, видеодекодер 30 может быть выполнен с возможностью выполнения любой или всех технологий данного раскрытия сущности изобретения, включая, но не ограничиваясь этим, способы логического вывода NoOutputOfPriorPicsFlag и соответствующие процессы, описанные более подробно выше и ниже в отношении фиг. 4 и 5. В качестве одного примера, блок 162 компенсации движения и/или блок 164 внутреннего предсказания могут быть выполнены с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения. В одном варианте осуществления, видеодекодер 30 может, необязательно, включать в себя блок 166 межуровневого предсказания, который выполнен с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения. В других вариантах осуществления, межуровневое предсказание может быть выполнено посредством блока 152 обработки предсказаний (например, блока 162 компенсации движения и/или блока 164 внутреннего предсказания), причем в этом случае блок 166 межуровневого предсказания может быть опущен. Однако, аспекты данного раскрытия сущности изобретения этим не ограничены. В некоторых примерах, технологии, описанные в данном раскрытии сущности изобретения, могут совместно использоваться различными компонентами видеодекодера 30. В некоторых примерах, дополнительно или альтернативно, процессор (не показан) может быть выполнен с возможностью выполнения любой или всех технологий, описанных в данном раскрытии сущности изобретения.
[00110] В целях объяснения, данное раскрытие сущности изобретения описывает видеодекодер 30 в контексте кодирования HEVC. Однако, технологии данного раскрытия сущности изобретения могут быть применимыми к другим стандартам или способам кодирования. Пример, показанный на фиг. 3А, предназначен только для одноуровневого кодека. Однако, как будет описано дополнительно в отношении фиг. 3В, некоторые или все видеодекодеры 30 могут быть сдвоены для обработки многоуровневого кодека.
[00111] В примере фиг. 3А, видеодекодер 30 включает в себя множество функциональных компонентов. Функциональные компоненты видеодекодера 30 включают в себя блок 150 энтропийного декодирования, блок 152 обработки предсказаний, блок 154 обратного квантования, блок 156 обратного преобразования, блок 158 восстановления, блок 159 фильтрации, и буфер 160 декодированных изображений. Блок 152 обработки предсказаний включает в себя блок 162 компенсации движения, блок 164 внутреннего предсказания, и блок 166 межуровневого предсказания. В некоторых примерах, видеодекодер 30 может выполнить цикл декодирования, в общем, обратный по отношению к циклу кодирования, описанному в отношении видеокодера 20 фиг. 2А. В других примерах, видеодекодер 30 может включать в себя больше, меньше функциональных компонентов, или другие функциональные компоненты.
[00112] Видеодекодер 30 может принимать битовый поток, который содержит кодированные видеоданные. Битовый поток может включать в себя множество элементов синтаксиса. Когда видеодекодер 30 принимает битовый поток, блок 150 энтропийного декодирования может выполнить операцию синтаксического анализа в отношении битового потока. В результате выполнения операции синтаксического анализа в отношении битового потока, блок 150 энтропийного декодирования может извлечь элементы синтаксиса из битового потока. В качестве части выполнения операции синтаксического анализа, блок 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные элементы синтаксиса в битовом потоке. Блок 152 обработки предсказаний, блок 154 обратного квантования, блок 156 обратного преобразования, блок 158 восстановления, и блок 159 фильтрации могут выполнить операцию восстановления, которая генерирует декодированные видеоданные на основе элементов синтаксиса, извлеченных из битового потока.
[00113] Как описано выше, битовый поток может содержать последовательность блоков NAL. Блоки NAL битового потока могут включать в себя блоки NAL набора параметров видео, блоки NAL набора параметров последовательности, блоки NAL набора параметров изображения, блоки NAL SEI, и т.д. В качестве части выполнения операции синтаксического анализа в отношении битового потока, блок 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые извлекают и энтропийно декодируют наборы параметров последовательности из блоков NAL набора параметров последовательности, наборы параметров изображений из блоков NAL набора параметров изображения, данные SEI из блоков NAL SEI, и т.д.
[00114] Дополнительно, блоки NAL битового потока могут включать в себя блоки NAL кодированных срезов. В качестве части выполнения операции синтаксического анализа в отношении битового потока, блок 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые извлекают и энтропийно декодируют кодированные срезы из блоков NAL кодированных срезов. Каждый из кодированных срезов может включать в себя заголовок среза и данные среза. Заголовок среза может содержать элементы синтаксиса, относящиеся к срезу. Элементы синтаксиса в заголовке среза могут включать в себя элемент синтаксиса, который идентифицирует набор параметров изображения, связанный с изображением, которое содержит этот срез. Блок 150 энтропийного декодирования может выполнить операции энтропийного декодирования, такие как операции декодирования CABAC, в отношении элементов синтаксиса в заголовке кодированного среза, для восстановления заголовка среза.
[00115] В качестве части извлечения данных среза из блоков NAL кодированного среза, блок 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые извлекают элементы синтаксиса из кодированных CU в данных среза. Извлекаемые элементы синтаксиса могут включать в себя элементы синтаксиса, связанные с блоками коэффициентов преобразования. Блок 150 энтропийного декодирования может, затем, выполнить операции декодирования CABAC в отношении некоторых из элементов синтаксиса.
[00116] После выполнения блоком 150 энтропийного декодирования операции синтаксического анализа в отношении неразделенного CU, видеодекодер 30 может выполнить операцию восстановления в отношении неразделенного CU. Для выполнения операции восстановления в отношении неразделенного CU, видеодекодер 30 может выполнить операцию восстановления в отношении каждого TU CU. Посредством выполнения операции восстановления для каждого TU CU, видеодекодер 30 может восстановить остаточный видеоблок, связанный с CU.
[00117] В качестве части выполнения операции восстановления в отношении TU, блок 154 обратного квантования может обратно квантовать, например, деквантовать, блок коэффициентов преобразования, связанный с TU. Блок 154 обратного квантования может обратно квантовать блок коэффициентов преобразования способом, подобным процессам обратного квантования, предлагаемым для HEVC, или определенным в стандарте декодирования H.264. Блок 154 обратного квантования может использовать параметр квантования QP, вычисленный видеокодером 20 для CU блока коэффициентов преобразования, для определения степени квантования и, таким образом, степени обратного квантования, которая должна быть применена блоком 154 обратного квантования.
[00118] После обратного квантования блоком 154 обратного квантования блока коэффициентов преобразования, блок 156 обратного преобразования может сгенерировать остаточный видеоблок для TU, связанного с блоком коэффициентов преобразования. Блок 156 обратного преобразования может применить обратное преобразование к блоку коэффициентов преобразования для генерации остаточного видеоблока для TU. Например, блок 156 обратного преобразования может применить обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (Karhunen-Loeve transform-KLT), обратное вращательное преобразование, обратное направленное преобразование, или другое обратное преобразование к блоку коэффициентов преобразования. В некоторых примерах, блок 156 обратного преобразования может определить обратное преобразование для применения к блоку коэффициентов преобразования на основе сигнализации от видеокодера 20. В таких примерах, блок 156 обратного преобразования может определить обратное преобразование на основе сигнализируемого преобразования в корневом узле квадродерева для древовидного блока, связанного с блоком коэффициентов преобразования. В другом примере, блок 156 обратного преобразования может логически вывести обратное преобразование на основании одной или более характеристик кодирования, таких как размер блока, режим кодирования, и т.п. В некоторых примерах, блок 156 обратного преобразования может применить каскадное обратное преобразование.
[00119] В некоторых примерах, блок 162 компенсации движения может улучшить предсказанный видеоблок PU посредством выполнения интерполяции на основе фильтров интерполяции. Идентификаторы для фильтров интерполяции, подлежащих использованию для компенсации движения с суб-отсчетной точностью, могут быть включены в элементы синтаксиса. Блок 162 компенсации движения может использовать такие же фильтры интерполяции, как те, которые использует видеокодер 20 во время генерации предсказанного видеоблока PU, для вычисления интерполированных значений для суб-целочисленных отсчетов опорного блока. Блок 162 компенсации движения может определить фильтры интерполяции, используемые видеокодером 20, согласно принятой синтаксической информации, и может использовать эти фильтры интерполяции для создания предсказанного видеоблока.
[00120] Как дополнительно описано ниже со ссылкой на фиг. 5, блок 152 обработки предсказаний может кодировать (например, кодировать или декодировать) PU (или любые другие блоки опорного уровня и/или улучшенного уровня или видеоблоки), посредством выполнения способов, показанных на фиг. 5. Например, блок 162 компенсации движения, блок 164 внутреннего предсказания, или блок 166 межуровневого предсказания могут быть выполнены с возможностью выполнения способов, показанных на фиг. 5, либо все вместе, либо по отдельности.
[00121] Если PU кодируют с использованием внутреннего предсказания, то блок 164 внутреннего предсказания может выполнить внутреннее предсказание для генерации предсказанного видеоблока для PU. Например, блок 164 внутреннего предсказания может определить режим внутреннего предсказания для PU на основе элементов синтаксиса в битовом потоке. Битовый поток может включать в себя элементы синтаксиса, которые блок 164 внутреннего предсказания может использовать для определения режима внутреннего предсказания для PU.
[00122] В некоторых примерах, элементы синтаксиса могут указывать на то, что блок 164 внутреннего предсказания должен использовать режим внутреннего предсказания другого PU для определения режима внутреннего предсказания текущего PU. Например, может быть вероятным, что режим внутреннего предсказания текущего PU является таким же, как режим внутреннего предсказания соседнего PU. Другими словами, режим внутреннего предсказания соседнего PU может быть наиболее вероятным режимом для текущего PU. Следовательно, в этом примере, битовый поток может включать в себя малый элемент синтаксиса, который указывает на то, что режим внутреннего предсказания PU является таким же, как режим внутреннего предсказания соседнего PU. Блок 164 внутреннего предсказания может, затем, использовать режим внутреннего предсказания для генерации данных предсказания (например, предсказанных отсчетов) для PU, на основе видеоблоков пространственно соседних PU.
[00123] Как описано выше, видеодекодер 30 может также включать в себя блок 166 межуровневого предсказания. Блок 166 межуровневого предсказания выполнен с возможностью предсказания текущего блока (например, текущего блока в EL), с использованием одного или более разных уровней, которые доступны в SVC (например, базового или опорного уровня). Такое предсказание может называться межуровневым предсказанием. Блок 128 межуровневого предсказания использует способы предсказания для уменьшения межуровневой избыточности, посредством этого улучшая эффективность кодирования и уменьшая потребность в вычислительных ресурсах. Некоторые примеры межуровневого предсказания включают в себя межуровневое внутреннее предсказание, межуровневое предсказание движения, и межуровневое остаточное предсказание. Межуровневое внутреннее предсказание использует восстановление расположенных рядом блоков в базовом уровне для предсказания текущего блока в улучшенном уровне. Межуровневое предсказание движения использует информацию о движении базового уровня для предсказания движения в улучшенном уровне. Межуровневое остаточное предсказание использует остаток базового уровня для предсказания остатка улучшенного уровня. Каждая из схем межуровневого предсказания описана ниже более подробно.
[00124] Блок 158 восстановления может использовать остаточные видеоблоки, связанные с TU CU, и предсказанные видеоблоки PU CU, например, либо данные внутреннего предсказания, либо данные внешнего предсказания, при необходимости, для восстановления видеоблока CU. Таким образом, видеодекодер 30 может сгенерировать предсказанный видеоблок и остаточный видеоблок на основе элементов синтаксиса в битовом потоке и может сгенерировать видеоблок на основе предсказанного видеоблока и остаточного видеоблока.
[00125] После восстановления блоком 158 восстановления видеоблока CU, блок 159 фильтрации может выполнить операцию деблокирования для уменьшения артефактов блокирования, связанных с CU. После выполнения блоком 159 фильтрации операции деблокирования для уменьшения артефактов блокирования, связанных с CU, видеодекодер 30 может сохранить видеоблок CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может обеспечить опорные изображения для последующей компенсации движения, внутреннего предсказания, и представления на устройстве отображения, таком как устройство 32 отображения фиг. 1А или 1В. Например, видеодекодер 30 может выполнить, на основе видеоблоков в буфере 160 декодированных изображений, операции внутреннего предсказания или внешнего предсказания в отношении PU других CU.
МНОГОУРОВНЕВЫЙ ДЕКОДЕР
[00126] Фиг. 3В является блок-схемой, иллюстрирующей пример многоуровневого видеодекодера 33 (также называемого просто видеодекодером 33), который может реализовать технологии согласно аспектам, описанным в данном раскрытии сущности изобретения. Видеодекодер 33 может быть выполнен с возможностью обработки многоуровневых видео кадров, например, для SHVC и многовидового кодирования. Дополнительно, видеодекодер 33 может быть выполнен с возможностью выполнения любой или всех технологий данного раскрытия сущности изобретения.
[00127] Видеодекодер 33 включает в себя видеодекодер 30А и видеодекодер 30В, каждый из которых может быть выполнен в виде видеодекодера 30 и может выполнять функции, описанные выше в отношении видеодекодера 30. Дополнительно, как указано посредством повторного использования ссылочных позиций, видеодекодеры 30А и 30В могут включать в себя по меньшей мере некоторые из систем и подсистем видеодекодера 30. Хотя показано, что видеокодер 33 включает в себя два видеодекодера 30А и 30В, видеодекодер 33 этим не ограничен и может включать в себя любое количество уровней видеодекодеров 30. В некоторых вариантах осуществления, видеодекодер 33 может включать в себя видеодекодер 30 для каждого изображения или кадра в блоке доступа. Например, блок доступа, который включает в себя пять изображений, может быть обработан или декодирован посредством видеодекодера, который включает в себя пять уровней декодеров. В некоторых вариантах осуществления, видеодекодер 33 может включать в себя большее количество уровней декодеров, чем количество кадров в блоке доступа. В некоторых таких случаях, некоторые из уровней видеодекодеров могут быть неактивными при обработке некоторых блоков доступа.
[00128] Дополнительно к видеодекодерам 30А и 30В, видеодекодер 33 может включать в себя блок 92 повышения дискретизации. В некоторых вариантах осуществления, блок 92 повышения дискретизации может повысить дискретизацию базового уровня принятого видео кадра для создания улучшенного уровня, подлежащего добавлению к списку опорных изображений для кадра или блока доступа. Этот улучшенный уровень может быть сохранен в буфере 160 декодированных изображений. В некоторых вариантах осуществления, блок 92 повышения дискретизации может включать в себя некоторые или все варианты осуществления, описанные в отношении блока 90 перевыборки фиг. 2А. В некоторых вариантах осуществления, блок 92 повышения дискретизации выполнен с возможностью повышения дискретизации уровня и реорганизации, переопределения, модификации, или настройки одного или более срезов в соответствии с набором правил в отношении границ срезов и/или правил растрового сканирования. В некоторых случаях, блок 92 повышения дискретизации может быть блоком перевыборки, выполненным с возможностью повышения дискретизации и/или понижения дискретизации уровня принятого видео кадра.
[00129] Блок 92 повышения дискретизации может быть выполнен с возможностью приема изображения или кадра (или информации об изображении, связанной с изображением) из буфера 160 декодированных изображений декодера более низкого уровня (например, видеодекодера 30А) и повышения дискретизации изображения (или принятой информации об изображении). Это повышенное по дискретизации изображение может быть, затем, обеспечено для блока 152 обработки предсказаний декодера более высокого уровня (например, видеодекодера 30В), выполненного с возможностью декодирования изображения в том же блоке доступа, что и декодер более низкого уровня. В некоторых случаях, декодер более высокого уровня на один уровень смещен относительно декодера более низкого уровня. В других случаях, могут существовать один или более декодеров более высокого уровня между декодером уровня 0 и декодером уровня 1 фиг. 3В.
[00130] В некоторых случаях, блок 92 повышения дискретизации может быть опущен или обойден. В таких случаях, изображение из буфера 160 декодированных изображений видеодекодера 30А может быть обеспечено напрямую, или по меньшей мере без обеспечения для блока 92 повышения дискретизации, для блока 152 обработки предсказаний видеодекодера 30В. Например, если видеоданные, обеспеченные для видеодекодера 30В, и опорное изображение из буфера 160 декодированных изображений видеодекодера 30А имеют одинаковый размер или разрешение, то опорное изображение может быть обеспечено для видеодекодера 30В без повышения дискретизации. Дополнительно, в некоторых вариантах осуществления, блок 92 повышения дискретизации может быть блоком 90 перевыборки, выполненным с возможностью повышения дискретизации или понижения дискретизации опорного изображения, принятого из буфера 160 декодированных изображений видеодекодера 30А.
[00131] Как показано на фиг. 3В, видеодекодер 33 может дополнительно включать в себя демультиплексор 99 (сокр. demux). Демультиплексор 99 может разделить кодированный битовый поток видео на многочисленные битовые потоки, причем каждый битовый поток, выводимый демультиплексором 99, обеспечен для разного видеодекодера 30А и 30В. Многочисленные битовые потоки могут быть созданы при приеме битового потока, и каждый из видеодекодеров 30А и 30В принимает участок битового потока в данный момент времени. В то время как в некоторых случаях биты из битового потока, принимаемого демультиплексором 99, могут сменяться по одному биту в некоторый момент времени для каждого их видеодекодеров (например, видеодекодеров 30А и 30В в примере фиг. 3В), во многих случаях битовый поток разделяют по-другому. Например, битовый поток может быть разделен посредством смены видеодекодера, принимающего один блок битового потока в некоторый момент времени. В другом примере, битовый поток может быть разделен в соотношении не-1:1 блоков для каждого из видеодекодеров 30А и 30В. Например, два блока могут быть обеспечены для видеодекодера 30В, для каждого блока, обеспеченного для видеодекодера 30А. В некоторых вариантах осуществления, разделение битового потока демультиплексором 99 может быть предварительно запрограммировано. В других вариантах осуществления, демультиплексор 99 может разделить битовый поток на основе управляющего сигнала, принимаемого от системы, внешней по отношению к видеодекодеру 33, например, от процессора на целевом устройстве, включающем в себя целевой модуль 14. Управляющий сигнал может быть сгенерирован на основе разрешения или скорости передачи битов видео из входного интерфейса 28, на основе полосы частот канала 16, на основе подписки, связанной с пользователем (например, платной подписки относительно бесплатной подписки), или на основе любого другого фактора для определения разрешения, которое может быть получено видеодекодером 33.
ИЗОБРАЖЕНИЯ ВНУТРЕННИХ ТОЧЕК ПРОИЗВОЛЬНОГО ДОСТУПА (IRAP)
[00132] Некоторые схемы видеокодирования могут обеспечить различные точки произвольного доступа на всем протяжении битового потока таким образом, чтобы битовый поток мог быть декодирован, начиная с любой из этих точек произвольного доступа, без необходимости декодирования каких-либо изображений, которые предшествуют этим точкам произвольного доступа в битовом потоке. В таких схемах видеокодирования, все изображения, которые следуют за точкой произвольного доступа в порядке вывода (например, включая те изображения, которые находятся в том же блоке доступа, что и изображение, обеспечивающее точку произвольного доступа), могут быть корректно декодированы без использования каких-либо изображений, которые предшествуют точке произвольного доступа. Например, даже если участок битового потока потерян во время передачи или во время декодирования, декодер может продолжить декодирование битового потока со следующей точки произвольного доступа. Обеспечение произвольного доступа может облегчить, например, динамические потоковые услуги, операции поиска, переключение каналов, и т.д.
[00133] В некоторых схемах кодирования, такие точки произвольного доступа могут быть обеспечены посредством изображений, которые называются изображениями внутренних точек произвольного доступа (IRAP). Например, точка произвольного доступа (например, обеспеченная посредством IRAP-изображения улучшенного уровня) в улучшенном уровне («уровнеА»), содержащаяся в блоке доступа (“auA”) может обеспечить специфический для уровня произвольный доступ таким образом, чтобы для каждого опорного уровня («уровняВ») уровняА (например, опорного уровня, который является уровнем, который используют для предсказания уровняА), имеющего точку произвольного доступа, содержащуюся в блоке доступа (“auB”), который находится в уровнеВ и предшествует auA в порядке декодирования (или точке произвольного доступа, содержащейся в auA), изображения в уровнеА, которые следуют за auB в порядке вывода (включая те изображения, которые находятся в auB), были корректно декодируемыми без необходимости декодировать какие-либо изображения в уровнеА, которые предшествуют auB.
[00134] IRAP-изображения могут быть закодированы с использованием внутреннего предсказания (например, закодированы без ссылки на другие изображения), и могут включать в себя, например, изображения с мгновенным обновлением декодирования (instantaneous decoding refresh-IDR), изображения чистого произвольного доступа (clean random access-CRA), и изображения доступа при разрыве связи (broken link access-BLA). Когда в битовом потоке существует IDR-изображение, все изображения, которые предшествуют IDR-изображению в порядке декодирования, не используются для предсказания изображениями, которые следуют за IDR-изображением в порядке декодирования. Когда в битовом потоке существует CRA-изображение, изображения, которые следуют за CRA-изображением, могут или не могут использовать изображения, которые предшествуют CRA-изображению в порядке декодирования для предсказания. Те изображения, которые следуют за CRA-изображением в порядке декодирования, но используют изображения, которые предшествуют CRA-изображению в порядке декодирования, могут называться изображениями c Пропущенным указанием произвольного доступа (random access skipped leading-RASL). Другим типом изображения, которое следует за IRAP-изображением в порядке декодирования и предшествует IRAP-изображению в порядке вывода, является изображение с Декодируемым указанием произвольного доступа (random access decodable leading-RADL), которое может не содержать ссылок на какие-либо изображения, которые предшествуют IRAP-изображению в порядке декодирования. RASL-изображения могут быть отброшены декодером, если изображения, которые предшествуют CRA-изображению, являются недоступными. BLA-изображение указывает декодеру на то, что изображения, которые предшествуют BLA-изображению, могут быть недоступными для декодера (например, вследствие того, что два битовых потока соединены вместе, и BLA-изображение является первым изображением второго битового потока в порядке декодирования). Блок доступа (например, группа изображений, состоящая из всех кодированных изображений, связанных с одним и тем же моментом времени вывода, в многочисленных уровнях), содержащий изображение базового уровня (например, изображение, имеющее значение ID уровня, равное 0), которое является IRAP-изображением, может называться блоком доступа IRAP.
МЕЖУРОВНЕВОЕ ВЫРАВНИВАНИЕ IRAP-ИЗОБРАЖЕНИЙ
[00135] В SVC, IRAP-изображения могут не требовать выравнивания (например, обеспечения в том же блоке доступа) между разными уровнями. Например, если бы требовалось выравнивание IRAP-изображений, то любой блок доступа, содержащий по меньшей мере одно IRAP-изображение, содержал бы только IRAP-изображения. С другой стороны, если бы не требовалось выравнивание IRAP-изображений, то, в единственном блоке доступа, одно изображение (например, в первом уровне) могло бы быть IRAP-изображением, а другое изображение (например, во втором уровне) могло бы быть не-IRAP-изображением. Наличие таких невыровненных IRAP-изображений в битовом потоке может обеспечить некоторые преимущества. Например, в двухуровневом битовом потоке, если в базовом уровне имеется больше IRAP-изображений, чем в улучшенном уровне, то в применениях, связанных с широковещанием и многоадресным вещанием, могут быть обеспечены малая задержка настройки и высокая эффективность кодирования.
[00136] В некоторых схемах видеокодирования, счетчик очередности изображений (picture order count-POC) может быть использован для отслеживания порядка отображения декодированных изображений. Некоторые из таких схем кодирования могут вызвать переустановку значений POC (например, установку в нулевое значение или установку в некоторое значение, сигнализированное в битовом потоке) всегда, когда некоторые типы изображений появляются в битовом потоке. Например, значения POC некоторых IRAP-изображений могут быть переустановлены, что также обеспечивает переустановку значений POC других изображений, предшествующих этим IRAP-изображениям в порядке декодирования. Это может быть проблематичным, когда не требуется выравнивание IRAP-изображений между разными уровнями. Например, когда одно изображение (“picA”) является IRAP-изображением, а другое изображение (“picB”) в том же блоке доступа не является IRAP-изображением, значение POC некоторого изображения (“picC”), которое переустановлено вследствие того, что picA является IRAP-изображением, в уровне, содержащем picA, может быть отличным от значения POC некоторого изображения (“picD”), которое не переустановлено, в уровне, содержащем picB, причем picC и picD находятся в одном и том же блоке доступа. Это обеспечивает то, что picC и picD имеют разные значения POC, даже несмотря на то, что они относятся к одному и тому же блоку доступа (например, одному и тому же моменту времени вывода). Таким образом, в этом примере, процесс получения, для получения значений POC picC и picD, может быть модифицирован для создания значений POC, которые соответствуют определению значений POC и блоков доступа.
Изображение инициализации уровня (LIP)
[00137] В некоторых схемах кодирования, изображение инициализации уровня («LIP-изображение») может быть определено как изображение, которое является IRAP-изображением, которое имеет флаг NoRaslOutputFlag (например, флаг, который указывает на то, что RASL-изображения не подлежат выводу, при установлении его равным 1, и который указывает на то, что RASL-изображения подлежат выводу, при установлении его равным 0), установленный равным 1, или как изображение, которое содержится в начальном блоке доступа IRAP, который является блоком доступа IRAP, в котором изображение базового уровня (например, изображение, имеющее ID уровня, равный 0, или наименьший ID уровня, определенный в битовом потоке) имеет NoRaslOutputFlag, установленный равным 1.
[00138] В некоторых вариантах осуществления, SPS может быть активирован в каждом LIP-изображении. Например, каждое IRAP-изображение, которое имеет NoRaslOutputFlag, установленный равным 1, или каждое изображение, которое содержится в начальном блоке доступа IRAP, может иметь новый SPS, который может быть отличным (например, задающим другие разрешения изображений, и т.д.) от SPS, который был активирован ранее. Однако, в случае, когда LIP-изображение не является IRAP-изображением (например, любым изображением, содержащимся в начальном блоке доступа IRAP), и изображение базового уровня в начальном блоке доступа IRAP является IDR-изображением с флагом NoClrasOutputFlag (например, флагом, который указывает на то, что межуровневые изображения с пропущенным указанием произвольного доступа не подлежат выводу, при установлении его равным 1, и указывает на то, что межуровневые изображения с пропущенным указанием произвольного доступа подлежат выводу, при установлении его равным 0), установленным равным 0, LIP-изображению не должна быть разрешена активация нового SPS. Если новый SPS активирован при таком LIP-изображении, то в этом случае, конкретно, когда контент SPS RBSP нового SPS является отличным от контента SPS RBSP, который был активным ранее, до начального блока доступа IRAP, могут возникнуть проблемы с различением разрешений изображений и отказоустойчивостью. Например, новый SPS может обновить разрешение и использовать временное предсказание в отношении изображений разных размеров.
ВЫТАЛКИВАНИЕ И СБРОС ИЗОБРАЖЕНИЙ
[00139] Изображения, которые декодированы (например, таким образом, что они могут быть отображены или использованы для предсказания других изображений), хранятся в буфере декодированных изображений (DPB). Изображения, которые подлежат выводу, могут быть помечены как «подлежащие выводу», а изображения, которые подлежат использованию для предсказания других изображений, могут быть помечены как «используемые в качестве ссылки». Декодированные изображения, которые не помечены ни как «подлежащие выводу», ни как «используемые в качестве ссылки» (например, изображения, которые были сначала помечены как «используемые в качестве ссылки» или «подлежащие выводу», но затем были помечены как «неиспользуемые в качестве ссылки» или «неподлежащие выводу») могут присутствовать в DPB до тех пор, пока они не будут удалены в процессе декодирования. В совместимых декодерах порядка вывода, процесс удаления изображений из DPB часто следует сразу за выводом изображений, которые помечены как «подлежащие выводу». Этот процесс вывода и последующего удаления может называться «выталкиванием» («bumping»).
[00140] Существуют также ситуации, когда декодер может удалить изображения в DPB без вывода, даже если эти изображения помечены как «подлежащие выводу». Здесь, для легкости описания, декодированные изображения, которые находятся в DPB во время декодирования IRAP-изображения (независимо от того, помечены декодированные изображения как «подлежащие выводу» или как «используемые в качестве ссылки»), называются «запаздывающими DPB-изображениями», связанными с IRAP-изображением или «соответствующими запаздывающими DPB-изображениями» IRAP-изображения. Некоторые примеры таких ситуаций, в контексте HEVC, описаны ниже.
[00141] В одном примере, когда CRA-изображение с NoRaslOutputFlag, имеющим значение «1», присутствует в середине битового потока (например, является не первым изображением в битовом потоке), запаздывающие DPB-изображения, связанные с CRA-изображением, могут не быть выведены и могут быть удалены из DPB. Такие ситуации могут встречаться точках соединения, где два битовых потока соединены вместе и первое изображение последнего битового потока является CRA-изображением с NoRaslOutputFlag, имеющим значение «1». В другом примере, когда IRAP-изображение picA, которое имеет NoRaslOutputFlag, имеющий значение «1», и которое не является CRA-изображением (например, является IDR-изображением), присутствует в середине битового потока, и разрешение изображения изменяется у picA (например, при активации нового SPS), соответствующие запаздывающие DPB-изображения picA могут быть удалены из DPB до их вывода, поскольку если соответствующие запаздывающие DPB-изображения продолжат занимать DPB, то декодирование изображений, начинающихся от picA, может стать проблематичным, например, вследствие переполнения буфера. В этом случае, значение no_output_of_prior_pics_flag (например, флага, который указывает на то, что изображения, которые были ранее декодированы и сохранены в DPB, должны быть удалены из DPB без вывода, при установлении его равным 1, и указывает на то, что изображения, которые были ранее декодированы и сохранены в DPB, не должны быть удалены из DPB без вывода, при установлении его равным 0), связанного с picA, должно быть установлено кодером или соединителем равным «1», или декодером может быть получено, что NoOutputOfPriorPicsFlag (например, полученное значение, которое может быть определено на основе информации, включенной в битовый поток) имеет значение «1», для сброса запаздывающих изображений без вывода из DPB. Операция соединения дополнительно описана ниже со ссылкой на фиг. 4.
[00142] Этот процесс удаления соответствующих запаздывающих DPB-изображений из DPB без вывода может называться «сбросом». Даже в ситуациях, не описанных выше, IRAP-изображение может задать значение no_output_of_prior_pics_flag равным «1», так чтобы декодер сбрасывал соответствующие запаздывающие DPB-изображения IRAP-изображения.
БИТОВЫЙ ПОТОК, ВКЛЮЧАЮЩИЙ В СЕБЯ ТОЧКУ СОЕДИНЕНИЯ
[00143] Со ссылкой на фиг. 4, будет описан иллюстративный битовый поток, имеющий точку соединения. Фиг. 4 показывает многоуровневый битовый поток 400, созданный посредством соединения битовых потоков 410 и 420. Битовый поток 410 включает в себя улучшенный уровень (EL) 410A и базовый уровень a (BL) 410B, а битовый поток 420 включает в себя EL 420A и BL 420B. EL 410A включает в себя EL-изображение 412A, а BL 410B включает в себя BL-изображение 412B. EL 420A включает в себя EL-изображения 422A, 424A, и 426A, а BL 420B включает в себя BL-изображения 422B, 424B, и 426B. Многоуровневый битовый поток 400 дополнительно включает в себя блоки доступа (AU) 430-460. AU 430 включает в себя EL-изображение 412A и BL-изображение 412B, AU 440 включает в себя EL-изображение 422A и BL-изображение 422B, AU 450 включает в себя EL-изображение 424A и BL-изображение 424B, и AU 460 включает в себя EL-изображение 426A и BL-изображение 426B. В примере фиг. 4, BL-изображение 422B является IRAP-изображением, а соответствующее EL-изображение 422A в AU 440 является конечным изображением (например, не-IRAP-изображением) и, соответственно, AU 440 является невыровненным IRAP AU. Также, следует отметить, что AU 440 является блоком доступа, который следует сразу за точкой 470 соединения.
[00144] Хотя пример фиг. 4 показывает случай, когда два разных битовых потока соединены вместе, в некоторых вариантах осуществления, точка соединения может присутствовать, когда участок битового потока удален. Например, битовый поток может иметь участки A, B, и C, причем участок В находится между участками А и С. Если участок В удален из битового потока, то оставшиеся участки А и С могут быть соединены вместе, и точка, в которой они соединены вместе, может называться точкой соединения. В общем, точка соединения, описываемая в данной заявке, можно считать, присутствует, когда один или более сигнализируемых или получаемых параметров или флагов имеют заданные значения. Например, без приема конкретного указания на то, что точка соединения существует в конкретном местоположении, декодер может определить значение флага (например, NoClrasOutputFlag), и выполнить одну или более технологий, описанных в данной заявке, на основе значения флага.
СБРОС ИЗОБРАЖЕНИЙ В МНОГОУРОВНЕВОМ КОНТЕКСТЕ
[00145] Процесс сброса изображений также является уместным в многоуровневых битовых потоках. Более конкретно, он является уместным для всех изображений, которые относятся к начальному блоку доступа IRAP, а также для IRAP-изображений, которые не находятся в начальном блоке доступа IRAP. Как описано выше, в некоторых существующих реализациях, таких как SHVC и MV-HEVC, блок доступа IRAP может быть определен как блок доступа, содержащий IRAP-изображение, которое имеет nuh_layer_id, имеющий значение “0” (независимо от того, являются ли другие изображения в блоке доступа IRAP-изображениями), и начальный блок доступа IRAP может быть определен как блок доступа, содержащий IRAP-изображение, которое имеет nuh_layer_id, имеющий значение “0”, и которое имеет NoRaslOutputFlag, имеющий значение “1” (снова, независимо от того, являются ли другие изображения в блоке доступа IRAP-изображениями).
[00146] При возможности наличия невыровненных IRAP-изображений в блоках доступа (например, блок доступа может содержать как IRAP-изображения, так и не-IRAP-изображения) в SHVC и MV-HEVC, ситуации, описанные в предшествующей секции в контексте HEVC, могут происходить в разных уровнях битового потока SHVC/MV-HEVC. Например, CRA-изображение picA, которое имеет NoRaslOutputFlag, имеющий значение “1”, может присутствовать в улучшенном уровне в середине битового потока (например, не в первом блоке доступа битового потока), который начинается с начального блока доступа IRAP, который не имеет CRA-изображения в том же уровне, что и picA. Также, изменение разрешения изображения может происходить у IRAP-изображений в улучшенном уровне в блоке доступа, где разрешение базового уровня не изменяется, или наоборот. Подобные ситуации могут возникать для разных размеров DPB.
СБРОС ИЗОБРАЖЕНИЙ В SVC И MVC
[00147] Вследствие одноконтурной конструкции кодирования SVC, только одно восстановленное изображение на блок доступа вставляют в DPB, за исключением случаев, когда используют так называемую среднезернистую масштабируемость (medium-granular scalability-MGS) (в этом случае в DPB могут храниться два декодированных изображения из так называемых блоков доступа ключевых изображений). Однако, в каждом блоке доступа может быть выведено только декодированное изображение самого высокого уровня. Операции для управления DPB, включая сброс изображений, таким образом, имеют отношение только к изображениям в самом высоком уровне, главным образом, поскольку не требуется, чтобы декодированное изображение базового уровня присутствовало в DPB для предсказания улучшенного уровня.
[00148] В MVC, более чем один вид может быть целевым выходным видом, и декодированные компоненты вида должны быть обеспечены для предсказания компонентов вида в другом уровне, даже если они не являются необходимыми для предсказания компонентов вида в том же уровне. Таким образом, компоненты вида из более чем одного вида могут присутствовать в DPB. Флаг no_output_of_prior_pics_flag сигнализируют для каждого IDR компонента вида (например, IDR компонент вида не-базового вида сигнализируют с использованием non_idr_flag, имеющего значение “0”), и сброс компонентов вида является специфическим для уровня (или специфическим для вида). В MVC, для простоты, IDR компоненты вида в блоке доступа в MVC являются выровненными. Например, если один компонент вида в блоке доступа является IDR компонентом вида, то все компоненты вида в этом блоке доступа также являются IDR компонентами вида. Следовательно, операцию сброса также выполняют по всем видам в битовом потоке, даже несмотря но то, что операция может быть специфической для вида/ уровня.
СБРОС ИЗОБРАЖЕНИЙ В SHVC И MV-HEVC
[00149] Когда сброс происходит в текущей конструкции в SHVC и MV-HEVC, все изображения в DPB удаляют без вывода (например, отображения). Невозможно, чтобы сбрасывались изображения только одного уровня в битовом потоке (за исключением тривиального случая, когда только базовый уровень присутствует в битовом потоке), таким образом, сброс не является специфическим для уровня.
СОГЛАСОВАНИЕ СИНХРОНИЗАЦИИ ВЫВОДА
[00150] В некоторых реализациях (например, SHVC, MV-HEVC, и т.д.), таких как Рабочая версия (Working Draft-WD) 3 SHVC и Рабочая версия 5 MV-HEVC, вывод и удаление изображений из DPB для согласования синхронизации вывода выполняют, как описано ниже. Участки, уместные для процесса сброса, выделены курсивом. В примере, приведенном ниже, инициированное удаление изображений является специфическим для каждого уровня, как указано в Секции F.13.3.2 спецификации HEVC.
<b>ТАБЛИЦА 1</b>
Согласование синхронизации вывода в SHVC WD 3 и MV-HEVC WD 5
C.3.2 Удаление изображений из DPBУдаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит немедленно в CPB момент времени удаления первого блока декодирования блока доступа n (содержащего текущее изображение) и происходит следующим образом:- Инициируют процесс декодирования для RPS, как указано в подпункте 8.3.2.- Когда текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, и оно не является изображением 0, применяют следующие упорядоченные этапы:1. Переменную NoOutputOfPriorPicsFlag получают для тестируемого декодера следующим образом:- Если текущее изображение является CRA-изображением, то NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).- Иначе, если значение pic_width_in_luma_samples (ширина_изображения_в_отсчетах_яркости), pic_height_in_luma_samples (высота_изображения_в_отсчетах_яркости), или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученных из SPS, активного для предшествующего изображения, то NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 тестируемым декодером, независимо от значения no_output_of_prior_pics_flag.Примечание – Хотя установление NoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag является предпочтительным в этих условиях, тестируемому декодеру разрешено установить NoOutputOfPriorPicsFlag равным 1, в этом случае.- Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяют для HRD таким образом, что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображений в DPB очищают без вывода изображений, которые они содержат, и степень заполнения DPB устанавливают равной 0.- Когда оба следующих условия являются истинными для любых изображений k в DPB, все такие изображения k в DPB удаляют из DPB:- изображение k помечено как «неиспользуемое в качестве ссылки»,- изображение k имеет PicOutputFlag, равный 0, или его DPB момент времени вывода является меньшим или равным CPB моменту времени удаления первого блока декодирования (обозначенного как блок декодирования m) текущего изображения n; т.е., DpbOutputTime[k] является меньшим или равным CpbRemovalTime(m),- для каждого изображения, которое удаляют из DPB, степень заполнения DPB уменьшают на единицу.F.13.3.2 Удаление изображений из DPBСпецификации в подпункте C.3.2 применяют отдельно для каждого набора декодированных изображений с конкретным значением nuh_layer_id с использованием следующих модификаций.- Заменить «Удаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит немедленно в CPB момент времени удаления первого блока декодирования блока доступа n (содержащего текущее изображение) и происходит следующим образом:» выражением «Удаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит немедленно в CPB момент времени удаления первого блока декодирования изображения n (содержащего текущее изображение) и происходит следующим образом:»
СОГЛАСОВАНИЕ ПОРЯДКА ВЫВОДА
[00151] В некоторых реализациях (например, SHVC, MV-HEVC, и т.д.), вывод и удаление изображений из DPB для согласования порядка вывода выполняют, как описано ниже. Участки, уместные для процесса сброса, выделены курсивом. В примере, приведенном ниже, удаление изображений, при инициировании, выполняют для всех уровней.
<b>ТАБЛИЦА 2</b>
Согласование порядка вывода в SHVC WD 3 и MV-HEVC WD 5
F.13.5.2.2 Вывод и удаление изображений из DPBВывод и удаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка среза первого среза текущего изображения) происходит немедленно, когда первый блок декодирования текущего изображения удаляют из CPB, и происходит следующим образом:Инициируют процесс декодирования для RPS, как указано в подпункте 8.3.2.- Если текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, и с nuh_layer_id, равным 0, и оно не является изображением 0, то применяют следующие упорядоченные этапы:1. Переменную NoOutputOfPriorPicsFlag получают для тестируемого декодера следующим образом:- Если текущее изображение является CRA-изображением, то NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).- Иначе, если значение pic_width_in_luma_samples, pic_height_in_luma_samples, или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученных из SPS, активного для предшествующего изображения, то NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 тестируемым декодером, независимо от значения no_output_of_prior_pics_flag.Примечание – Хотя установление NoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag является предпочтительным в этих условиях, тестируемому декодеру разрешено установить NoOutputOfPriorPicsFlag равным 1, в этом случае.- Иначе, NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяют для HRD следующим образом:- Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображений в DPB очищают без вывода изображений, которые они содержат, и степень заполнения DPB устанавливают равной 0.- Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображений, содержащие изображение, которое помечено как «не подлежащее выводу» и «неиспользуемое в качестве ссылки», очищают (без вывода), и все непустые буферы хранения изображений в DPB очищают посредством повторного инициирования процесса «выталкивания», указанного в подпункте F.13.5.2.4, и степень заполнения DPB устанавливают равной 0.- Иначе (текущее изображение не является IRAP-изображением с NoOutputOfPriorPicsFlag, равным 1, или с nuh_layer_id, не равным 0), все буферы хранения изображений, содержащие изображение, которое помечено как «не подлежащее выводу» и «неиспользуемое в качестве ссылки», очищают (без вывода). Для каждого буфера хранения изображений, который очищают, степень заполнения DPB уменьшают на единицу. Переменную currLayerId устанавливают равной nuh_layer_id текущего декодированного изображения и, когда одно или более из следующих условий являются истинными, повторно инициируют процесс «выталкивания», указанный в подпункте F.13.5.2.4, при дополнительном уменьшении степени заполнения DPB на единицу для каждого дополнительного буфера хранения изображений, который очищают, пока все следующие условия не станут ложными: - Количество изображений с nuh_layer_id, равным currLayerId, в DPB, которые помечены как «подлежащие выводу», является большим, чем sps_max_num_reorder_pics[HighestTid] из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId (когда currLayerId не равен 0).- sps_max_latency_increase_plus1[HighestTid] активного SPS (когда currLayerId равен 0) или из SPS активного уровня для значения currLayerId, не равно 0, и существует по меньшей мере одно изображение с nuh_layer_id, равным currLayerId, в DPB, которое помечено как «подлежащее выводу», для которого соответствующая переменная PicLatencyCount[currLayerId] является большей или равной, чем SpsMaxLatencyPictures[HighestTid], полученная из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для данного значения currLayerId.- Количество изображений с nuh_layer_id, равным currLayerId, в DPB, является большим или равным sps_max_dec_pic_buffering_minus1[ HighestTid ] + 1 из активного SPS (когда currLayerId равен 0) или из SPS активного уровня для данного значения currLayerId.
Сравнение согласования синхронизации вывода и согласования порядка вывода
[00152] Как описано выше, согласование синхронизации вывода и согласование порядка вывода могут не обеспечивать одинаковое поведение сброса. Например, для декодеров с согласованием синхронизации вывода, сброс инициируют для каждого изображения в уровне, которое не является первым изображением уровня в битовом потоке, и которое имеет NoRaslOutputFlag, имеющий значение «1». Когда инициирован сброс, все декодированные изображения этого уровня, в DPB, сбрасывают. С другой стороны, для декодеров с согласованием порядка вывода, сброс инициируют только для изображения в базовом уровне, которое не является первым изображением в битовом потоке, и которое имеет NoRaslOutputFlag, имеющий значение «1». Когда инициирован сброс, все декодированные изображения всех уровней в DPB сбрасывают.
[00153] В битовом потоке, имеющем два уровня, когда LIP-изображение в EL, которое является IRAP-изображением и не относится к IRAP AU, активирует другое разрешение, и разрешение BL не может измениться в этом AU вследствие того, что BL-изображение находится в не-IRAP-AU (например, является не-IRAP-изображением), может потребоваться специфический для уровня сброс изображений. Здесь, только изображения из EL, а не из BL, подлежат сбросу. Этот признак недоступен для согласования порядка вывода.
[00154] В битовом потоке, имеющем два уровня, в случае, когда блок доступа включает в себя BL-изображение, которое является IDR-изображением, и EL-изображение, которое является не-IRAP-изображением, разрешение BL-изображения может быть обновлено в блоке доступа, тогда как разрешение EL-изображения не обновляют. В этом случае, сброс должен быть выполнен только для изображений из BL, а EL-изображения не должны быть сброшены. Этот признак недоступен для согласования порядка вывода.
Сигнализация флага указания вывода предшествующих изображений
[00155] В некоторых вариантах осуществления, переменную NoOutputOfPriorPicsFlag (например, значение, получаемое декодером для определения, при декодировании IRAP-изображения, выводить или нет изображения в DPB перед сбросом DPB) получают на основе no_output_of_prior_pics_flag и других условий. Например, no_output_of_prior_pics_flag может быть значением, которое сигнализируют в битовом потоке, тогда как NoOutputOfPriorPicsFlag может быть значением, получаемым кодером на основе информации, включенной в битовый поток. Декодер может получить значение NoOutputOfPriorPicsFlag на основе значения no_output_of_prior_pics_flag и других условий, и, затем, использовать полученное значение NoOutputOfPriorPicsFlag для определения того, выводить изображения или нет. В некоторых вариантах осуществления, флаг NoOutputOfPriorPicsFlag может указывать на то, содержит ли текущий блок доступа точку соединения, в которой два разных битовых потока соединены вместе.
[00156] В некоторых вариантах осуществления, NoClrasOutputFlag и NoRaslOutputFlag могут быть переменными, получаемыми на основе информации, включенной в битовый поток. Например, NoRaslOutputFlag может быть получен для каждого IRAP-изображения (например, в BL и/или EL), а NoClrasOutputFlag может быть получен только для изображений самого низкого уровня (например, BL-изображений). Значение каждого из NoClrasOutputFlag и NoRaslOutputFlag может указывать на то, что некоторые изображения в битовом потоке могут не быть корректно декодируемыми, вследствие недоступности некоторых опорных изображений. Такая недоступность опорных изображений может возникнуть в точках произвольного доступа. Изображения с межуровневым пропуском произвольного доступа (cross-layer random access skip-CL-RAS) являются, некоторым образом, многоуровневым эквивалентом RASL-изображений. Если декодер начинает декодирование битового потока в точке произвольного доступа (например, в блоке доступа, имеющем BL IRAP-изображение), и EL-изображение в блоке доступа не является IRAP-изображением, то тогда EL-изображение является CL-RAS-изображением. Все изображения в EL могут быть CL-RAS-изображениями (например, декодируемыми, но некорректно декодируемыми), пока IRAP-изображение не встретится в EL. При обеспечении такого EL IRAP-изображения в битовом потоке, EL, можно сказать, инициализируется.
[00157] Например, в примере фиг. 4, EL-изображение 422А может быть LIP-изображением, которое не является IRAP-изображением, а BL-изображение 422B может быть IRAP-изображением, которое имеет флаг NoClrasOutputFlag, связанный с ним. В этом примере, значение NoOutputOfPriorPicsFlag, связанного с EL-изображением 422A может быть логически выведен на основе значения NoClrasOutputFlag, связанного с BL-изображением 422B. Например, если NoClrasOutputFlag имеет значение «1», то NoOutputOfPriorPicsFlag для EL-изображения 422A может быть также установлен равным «1», что обеспечит то, что изображения в DPB не подлежат выводу перед их удалением из DPB. С другой стороны, если NoClrasOutputFlag имеет значение «0», то NoOutputOfPriorPicsFlag для EL-изображения 422A может быть также установлен равным «0», что обеспечит то, что изображения в DPB подлежат удалению из DPB после вывода.
УЛУЧШЕННЫЙ ЛОГИЧЕСКИЙ ВЫВОД NoOutputOfPriorPicsFlag
[00158] Как объяснено выше, изображения внутренней точки произвольного доступа (IRAP) могут обеспечить точки произвольного доступа для декодирования битового потока. Декодер может начать декодирование битового потока посредством декодирования IRAP-изображения без необходимости декодирования изображений, которые предшествуют IRAP-изображению. Во время декодирования IRAP-изображения, буфер декодированных изображений (DPB) может иметь некоторое количество декодированных изображений. Изображения, которые были декодированы из битового потока, хранятся в DPB. Декодированные изображения в DPB могут включать в себя изображения, которые помечены как «подлежащие выводу», или изображения, которые помечены как «используемые в качестве ссылки». Декодированные изображения в DPB могут также включать в себя изображения, которые не помечены ни как «подлежащие выводу», ни как «используемые в качестве ссылки»; такие декодированные изображения присутствуют в DPB до тех пор, пока они не будут удалены в процессе декодирования. Если вывод существующих изображений в DPB может повлиять на производительность декодера (например, слишком много изображений существует в DPB для вывода декодером), может быть необходимо удаление таких существующих изображений без их вывода (например, сброс существующих изображений). Не-удаление существующих изображений в DPB, как необходимо, может привести к переполнению буфера или задержке в декодировании и выводе последующих изображений.
[00159] Переменная NoOutputOfPriorPicsFlag может указывать, при декодировании IRAP-изображения, должны ли быть выведены изображения в DPB перед удалением из DPB. При декодировании IRAP-изображения, значение NoOutputOfPriorPicsFlag может быть установлено равным 1, когда изображения в DPB не должны быть выведены перед удалением. Альтернативно, при декодировании IRAP-изображения, значение NoOutputOfPriorPicsFlag может быть установлено равным 0, когда изображения в DPB должны быть выведены перед удалением. Значение NoOutputOfPriorPicsFlag может быть определено на основе соответствующего элемента синтаксиса и/или различных условий и информации. Элемент синтаксиса no_output_of_prior_pics_flag может быть принят в битовом потоке, и декодер может установить значение NoOutputOfPriorPicsFlag равным декодированному значению no_output_of_prior_pics_flag. Или, значение NoOutputOfPriorPicsFlag может быть получено или логически выведено на основе различных условий. Например, в ранних версиях SHVC и MV-HEVC (например, Рабочей версии 4 SHVC и Рабочей версии 6 MV-HEVC), NoOutputOfPriorPicsFlag может быть установлен равным 1, когда пространственное разрешение или количество элементов памяти изображения изменяется. Посредством установления NoOutputOfPriorPicsFlag равным 1, декодер может управлять величиной памяти, доступной в DPB, посредством удаления изображений в DPB, при необходимости. Однако, на величину памяти, необходимую в DPB, можно также повлиять посредством изменений формата цветности и/или битовой глубины изображений. Если не рассматривать худший случай или максимальный формат цветности или битовую глубину, то необеспечение учета формата цветности и/или битовой глубины может привести к неоптимальной величине памяти для DPB.
[00160] Для решения этих и других задач, данные технологии, согласно некоторым аспектам, могут учитывать формат цветности и/или битовую глубину изображений при определении значения NoOutputOfPriorPicsFlag для IRAP-изображений. Например, эти технологии могут определить, являются ли формат цветности и/или битовая глубина текущего изображения в текущем уровне, подлежащего декодированию, отличными от формата цветности и/или битовой глубины предшествующего изображения в текущем уровне. Формат цветности и/или битовая глубина текущего изображения и предшествующего изображения могут быть получены из активного в данный момент Набора параметров последовательности (SPS) и SPS, который был активным при декодировании предшествующего изображения, соответственно. Битовая глубина изображения может включать в себя битовую глубину для компонента яркости изображения и битовую глубину для компонента цветности изображения. Если существуют изменения в формате цветности или битовой глубине, то значение NoOutputOfPriorPicsFlag может быть установлено равным 1, для инициирования удаления изображений в DPB без вывода этих изображений. В одном примере, если битовая глубина отсчетов яркости изменяется с 8 битов до 16 битов, то может быть необходимым сброс изображений в DPB для обеспечения большей доступной памяти в DPB.
[00161] Посредством учета изменений в формате цветности и/или битовой глубине изображений, данные технологии могут определить значение NoOutputOfPriorPicsFlag более точно, и может быть указано оптимальное значение размера DPB, которое необходимо и достаточно для декодирования битового потока. Например, данные технологии могут лучше предсказать ситуации, которые могут потребовать дополнительной памяти в буфере. Дополнительно к изменениям в количестве элементов памяти изображения и пространственном разрешении, DPB сбрасывают для обеспечения большей памяти, доступной при изменении формата цветности или битовой глубины.
[00162] Некоторые подробности, относящиеся к логическому выводу NoOutputOfPriorPicsFlag, дополнительно объяснены ниже. Различные термины, использованные в данном описании, являются широкими по значению терминами, имеющими свой обычный смысл.
ИЛЛЮСТРАТИВНЫЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ
[00163] Вышеупомянутые технологии могут быть реализованы, как показано в следующем примере. Этот пример обеспечен в контексте более ранних версий SHVC и MV-HEVC (например, SHVC WD 4 и MV-HEVC WD 6). Отличия от более ранних версий SHVC и MV-HEVC выделены курсивом. Секция C.3.2 описывает DPB-операции синхронизации вывода в отношении удаления изображений в SHVC WD 4 и MV-HEVC WD 6. Секция C.5.2.2 описывает DPB-операции порядка вывода в отношении удаления изображений в SHVC WD 4 и MV-HEVC WD 6. Первое ответвление «Иначе» в каждой секции относится к логическому выводу NoOutputOfPriorPicsFlag на основе формата цветности и битовой глубины изображений.
<b>ТАБЛИЦА 3</b>
Иллюстративный вариант осуществления
C.3.2 Удаление изображений из DPBКогда текущее изображение не является изображением 0 в текущем уровне, удаление изображений в текущем уровне из DPB перед декодированием текущего изображения, т.е., изображения n, но после синтаксического анализа заголовка среза первого среза текущего изображения, происходит немедленно в CPB момент времени удаления первого блока декодирования текущего изображения и происходит следующим образом:- Инициируют процесс декодирования для RPS, как указано в подпункте 8.3.2.- Когда текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, или изображение базового уровня в текущем блоке доступа является IRAP-изображением с NoRaslOutputFlag, равным 1, и NoClrasOutputFlag равен 1, применяют следующие упорядоченные этапы:1. Переменную NoOutputOfPriorPicsFlag получают для тестируемого декодера следующим образом:- Если текущее изображение является CRA-изображением с NoRaslOutputFlag, равным 1, то NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).- Иначе, если текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, и значение pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS для текущего уровня, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученных из SPS, который был активным для текущего уровня при декодировании предшествующего изображения в текущем уровне, то NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 тестируемым декодером, независимо от значения no_output_of_prior_pics_flag.Примечание – Хотя установление NoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag является предпочтительным в этих условиях, тестируемому декодеру разрешено установить NoOutputOfPriorPicsFlag равным 1, в этом случае.- Иначе, если текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, то NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.- Иначе (текущее изображение не является IRAP-изображением с NoRaslOutputFlag, равным 1, изображение базового уровня в текущем блоке доступа является IRAP-изображением с NoRaslOutputFlag, равным 1, и NoClrasOutputFlag равен 1), NoOutputOfPriorPicsFlag устанавливают равным 1.2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяют для HRD, таким образом, что когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображений в DPB очищают без вывода изображений, которые они содержат, и степень заполнения DPB устанавливают равной 0.- Когда оба следующих условия являются истинными для любых изображений k в DPB, все такие изображения k в DPB удаляют из DPB:- изображение k помечено как «неиспользуемое в качестве ссылки»,- изображение k имеет PicOutputFlag, равный 0, или его DPB момент времени вывода является меньшим или равным CPB моменту времени удаления первого блока декодирования (обозначенного как блок декодирования m) текущего изображения n; т.е., DpbOutputTime[k] является меньшим или равным CpbRemovalTime(m),- для каждого изображения, которое удаляют из DPB, степень заполнения DPB уменьшают на единицу.C.5.2.2 Вывод и удаление изображений из DPBКогда текущее изображение не является изображением 0 в текущем уровне, вывод и удаление изображений в текущем уровне из DPB перед декодированием текущего изображения, т.е., изображения n, но после синтаксического анализа заголовка среза первого среза текущего изображения, происходит немедленно, когда первый блок декодирования текущего изображения удаляют из CPB, и происходит следующим образом:- Инициируют процесс декодирования для RPS, как указано в подпункте 8.3.2.- Если текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, или изображение базового уровня в текущем блоке доступа является IRAP-изображением с NoRaslOutputFlag, равным 1, и NoClrasOutputFlag равен 1, применяют следующие упорядоченные этапы:1. Переменную NoOutputOfPriorPicsFlag получают для тестируемого декодера следующим образом:- Если текущее изображение является CRA-изображением с NoRaslOutputFlag, равным 1, то NoOutputOfPriorPicsFlag устанавливают равным 1 (независимо от значения no_output_of_prior_pics_flag).- Иначе, если текущее изображения является IRAP-изображением с NoRaslOutputFlag, равным 1, и значение pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, или sps_max_dec_pic_buffering_minus1[HighestTid], полученное из активного SPS для текущего уровня, отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, bit_depth_luma_minus8, bit_depth_chroma_minus8, или sps_max_dec_pic_buffering_minus1[HighestTid], соответственно, полученных из SPS, который был активным для текущего уровня при декодировании предшествующего изображения в текущем уровне, то NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 тестируемым декодером, независимо от значения no_output_of_prior_pics_flag.Примечание – Хотя установление NoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag является предпочтительным в этих условиях, тестируемому декодеру разрешено установить NoOutputOfPriorPicsFlag равным 1, в этом случае.- Иначе, если текущее изображение является IRAP-изображением с NoRaslOutputFlag, равным 1, то NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.- Иначе (текущее изображение не является IRAP-изображением с NoRaslOutputFlag, равным 1, изображение базового уровня в текущем блоке доступа является IRAP-изображением с NoRaslOutputFlag, равным 1, и NoClrasOutputFlag равен 1), NoOutputOfPriorPicsFlag устанавливают равным 1.2. Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяют для HRD следующим образом:- Если NoOutputOfPriorPicsFlag равен 1, все буферы хранения изображений в суб-DPB очищают без вывода изображений, которые они содержат, и степень заполнения суб-DPB устанавливают равной 0.- Иначе (NoOutputOfPriorPicsFlag равен 0), все буферы хранения изображений, содержащие изображение, которое помечено как «не подлежащее выводу» и «неиспользуемое в качестве ссылки», очищают (без вывода), и все непустые буферы хранения изображений в суб-DPB очищают посредством повторного инициирования процесса «выталкивания», указанного в подпункте C.5.2.4, и степень заполнения суб-DPB устанавливают равной 0.- Иначе, все буферы хранения изображений, которые содержат изображение в текущем уровне, и которые помечены как «не подлежащие выводу» и «неиспользуемые в качестве ссылки», очищают (без вывода). Для каждого буфера хранения изображений, который очищают, степень заполнения DPB уменьшают на единицу. Когда одно или более из следующих условий являются истинными, повторно инициируют процесс «выталкивания», указанный в подпункте C.5.2.4, при дополнительном уменьшении степени заполнения суб-DPB на единицу для каждого дополнительного буфера хранения изображений, который очищают, пока все следующие условия не станут ложными: - Количество блоков доступа, которые содержат по меньшей мере одно декодированное изображение в DPB, помеченное как «подлежащее выводу», является большим, чем MaxNumReorderPics.- MaxLatencyIncreasePlus1 не равна 0, и существует по меньшей мере один блок доступа, который содержит по меньшей мере одно декодированное изображение в DPB, помеченное как «подлежащее выводу», для которого соответствующая переменная PicLatencyCount является большей или равной MaxLatencyPictures.- Количество изображений в текущем уровне в суб-DPB является большим или равным MaxDecPicBufferingMinus1+1.
[00164] Согласно некоторым вариантам осуществления, элементы синтаксиса и переменные, используемые в логическом выводе NoOutputOfPriorPicsFlag, могут относиться к следующему:
- Элемент синтаксиса pic_width_in_luma_samples относится к ширине изображения в единицах отсчетов яркости.
- Элемент синтаксиса pic_height_in_luma_samples относится к высоте изображения в единицах отсчетов яркости.
- Элемент синтаксиса chroma_format_idc относится к формату цветности изображения.
- Элемент синтаксиса bit_depth_luma_minus8 относится к битовой глубине отсчетов яркости изображения минус 8 битов.
- Элемент синтаксиса bit_depth_chroma_minus8 относится к битовой глубине отсчетов цветности изображения минус 8 битов.
- Элемент синтаксиса sps_max_dec_pic_buffering_minus1[HighestTid] относится к количеству элементов памяти для изображений, которое необходимо для декодирования уровня кодированной видео последовательности.
[00165] Вышеупомянутые элементы синтаксиса могут быть получены из активного SPS для текущего уровня в связи с текущим изображением текущего уровня, который декодируется. Вышеупомянутые элементы синтаксиса могут быть также получены в связи с предшествующим изображением текущего уровня из SPS, который был активным для текущего уровня, когда декодировалось предшествующее изображение. Предшествующее изображение может быть изображением в текущем уровне, которое предшествует текущему изображению в порядке декодирования.
[00166] Если изображение является IRAP-изображением, и значение NoRaslOutputFlag равно 1 для IRAP-изображения, то значение NoOutputOfPriorPicsFlag может быть установлено равным 1, если какие-либо значения вышеупомянутых элементов синтаксиса для текущего изображения отличаются от значений соответствующих элементов синтаксиса для предшествующего изображения. Переменная NoRaslOutputFlag может указывать на то, выводятся ли какие-либо изображения с Пропущенным указанием произвольного доступа (RASL), связанные с текущим изображением. Если NoRaslOutputFlag равен 1, то некоторые опорные изображения, на которые RASL-изображения ссылаются для внешнего предсказания, могут не присутствовать, и таким образом, RASL-изображения не должны быть выведены/ отображены. Как объяснено выше, RASL-изображения могут ссылаться на указывающие изображения, связанные с IRAP-изображением, которые не должны быть выведены/отображены, если декодирование битового потока начинается с данного IRAP-изображения. Декодер может сравнить каждый элемент синтаксиса текущего изображения с соответствующим элементом синтаксиса предшествующего изображения, и, если значение какого-либо элемента синтаксиса изменилось, NoOutputOfPriorPicsFlag может быть установлен равным 1, независимо от того, какое значение имеет элемент синтаксиса no_output_of_prior_pics_flag. Как указано в тексте спецификации, может быть предпочтительным установление значения NoOutputOfPriorPicsFlag равным значению элемента синтаксиса no_output_of_prior_pics_flag. Но декодеру разрешено устанавливать значение NoOutputOfPriorPicsFlag равным 1, при необходимости. Например, в некоторых случаях, размер DPB является достаточно большим для того, чтобы, даже если значение первого флага установлено равным декодированному значению no_output_of_prior_pics_flag, переполнение размера DPB не могло произойти. В таких случаях, может быть предпочтительным разрешить декодеру выбрать между установлением значения первого флага равным 1 и установлением значения первого флага равным декодированному значению no_output_of_prior_pics_flag.
[00167] В одном варианте осуществления, значение chroma_format_idc изменяется от предшествующего изображения к текущему изображению. Как объяснено выше, значения элементов синтаксиса получают из SPS для текущего уровня, который является активным при декодировании текущего изображения текущего уровня, и SPS для текущего уровня, который был активным при декодировании предшествующего изображения текущего уровня. Когда значение chroma_format_idc текущего изображения и значение chroma_format_idc предшествующего изображения являются разными, декодер устанавливает значение NoOutputOfPriorPicsFlag равным 1, независимо от того, какое значение имеет элемент синтаксиса no_output_of_prior_pics_flag.
[00168] В другом варианте осуществления, значение bit_depth_luma_minus8 изменяется от предшествующего изображения к текущему изображению. Когда значение bit_depth_luma_minus8 текущего изображения и значение bit_depth_luma_minus8 предшествующего изображения являются разными, декодер устанавливает значение NoOutputOfPriorPicsFlag равным 1, независимо от того, какое значение имеет элемент синтаксиса no_output_of_prior_pics_flag.
[00169] В другом варианте осуществления, значение bit_depth_chroma_minus8 изменяется от предшествующего изображения к текущему изображению. Когда значение bit_depth_chroma_minus8 текущего изображения и значение bit_depth_chroma_minus8 предшествующего изображения являются разными, декодер устанавливает значение NoOutputOfPriorPicsFlag равным 1, независимо от того, какое значение имеет элемент синтаксиса no_output_of_prior_pics_flag.
[00170] В общем, большая величина памяти необходима в DPB, когда значение вышеупомянутых элементов синтаксиса увеличивается от предшествующего изображения к текущему изображению, а не тогда, когда значение вышеупомянутых элементов синтаксиса уменьшается. Однако, декодер может получить достаточную величину памяти в DPB посредством удаления изображений в DPB без вывода, всегда, когда значения вышеупомянутых элементов синтаксиса изменяются, как при увеличении, так и при уменьшении. Таким образом, дополнительная память может быть освобождена в DPB с использованием одного условного этапа, а не с использованием многочисленных этапов для рассмотрения того, увеличилось или уменьшилось значение элементов синтаксиса. Проверка изменений в значениях элементов синтаксиса, вместо определения того, увеличились или уменьшились эти значения, может сделать процесс логического вывода для NoOutputOfPriorPicsFlag более эффективным.
СПОСОБ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ NoOutputOfPriorPicsFlag
[00171] Фиг. 5 является последовательностью операций, иллюстрирующей способ кодирования видеоинформации, согласно одному варианту осуществления данного раскрытия сущности изобретения. Этот способ относится к определению значения флага (например, NoOutputOfPriorPicsFlag), который указывает на то, должны ли быть выведены изображения в буфере декодированных изображений. Процесс 500 может быть выполнен кодером (например, кодером, показанным на фиг. 2А, 2В, и т.д.), декодером (например, декодером, показанным на фиг. 3A, 3B, и т.д.), или любым другим компонентом, в зависимости от варианта осуществления. Блоки процесса 500 описаны в отношении декодера 33 на фиг. 3В, но процесс 500 может быть выполнен другими компонентами, такими как кодер, как упомянуто выше. Видеодекодер 30В уровня 1 декодера 33 и/или декодер 30А уровня 0 декодера 33 могут выполнить процесс 500, в зависимости от варианта осуществления. Все варианты осуществления, описанные в отношении фиг. 5, могут быть реализованы отдельно, или в комбинации друг с другом. Некоторые подробности, относящиеся к процессу 500, объяснены выше, например, со ссылкой на фиг. 4.
[00172] Процесс 500 начинается с блока 501. Декодер 33 может включать в себя память (например, буфер 160 декодированных изображений) для хранения видеоинформации, связанной с текущим уровнем для декодирования.
[00173] В блоке 502, декодер 33 получает формат цветности текущего изображения текущего уровня, подлежащего декодированию, битовую глубину отсчетов цветности текущего изображения, и битовую глубину отсчета яркости текущего изображения. Текущее изображение может быть изображением внутренней точки произвольного доступа (IRAP), которое начинает новую кодированную видео последовательность (CVS). Формат цветности текущего изображения, битовая глубина отсчетов яркости текущего изображения и битовая глубина отсчетов цветности текущего изображения могут быть получены из первого набора параметров последовательности (SPS), который является активным для текущего уровня в момент времени декодирования текущего изображения.
[00174] На то, что текущее изображение начинает новую CVS, может указывать флаг, связанный с текущим изображением, указывающий на то, что изображения с пропущенным указанием произвольного доступа (RASL) не должны быть выведены. Если флаг является разрешающим, то этот флаг указывает на то, что текущее изображение начинает новую CVS; если флаг не является разрешающим, то этот флаг указывает на то, что текущее изображение не начинает новую CVS. Этот флаг может быть таким же, как NoOutputOfPriorPicsFlag, или подобным ему. Например, NoRaslOutputFlag может быть установлен равным 1 для указания на то, что текущее изображение начинает новую CVS.
[00175] В блоке 503, декодер 33 получает формат цветности предшествующего изображения текущего уровня, которое было декодировано, битовую глубину отсчетов цветности предшествующего изображения и битовую глубину отсчетов яркости предшествующего изображения. Формат цветности предшествующего изображения, битовая глубина отсчетов яркости предшествующего изображения и битовая глубина отсчетов цветности предшествующего изображения могут быть получены из второго SPS, который был активным для текущего уровня в момент времени декодирования предшествующего изображения.
[00176] В некоторых вариантах осуществления, соответствующие значения битовой глубины отсчетов яркости текущего изображения, битовой глубины отсчетов цветности текущего изображения, битовой глубины отсчетов яркости предшествующего изображения и битовой глубины отсчетов цветности предшествующего изображения указаны в виде соответствующих фактических значений битовой глубины минус 8 битов. Например, битовую глубину отсчетов яркости текущего изображения обеспечивают посредством значения элемента синтаксиса bit_depth_luma_minus8, где bit_depth_luma_minus8 представляет собой фактическое значение битовой глубины отсчетов яркости текущего изображения минус 8 битов.
[00177] В блоке 504, декодер 33 определяет значение первого флага, связанного с текущим изображением, указывающего на то, должны ли быть выведены изображения в буфере декодированных изображений (DPB). Декодер 33 может определить значение первого флага на основе: (1) формата цветности текущего изображения и формата цветности предшествующего изображения, (2) битовой глубины отсчетов цветности текущего изображения и битовой глубины отсчетов цветности предшествующего изображения, или (3) битовой глубины отсчетов яркости текущего изображения и битовой глубины отсчетов цветности предшествующего изображения. Первый флаг может быть NoOutputOfPriorPicsFlag, объясненным выше, или подобным ему.
[00178] В некоторых вариантах осуществления, в ответ на определение того, что (4) формат цветности текущего изображения и формат цветности предшествующего изображения являются разными, (5) битовая глубина отсчетов яркости текущего изображения и битовая глубина отсчетов яркости предшествующего изображения являются разными, или (6) битовая глубина отсчетов цветности текущего изображения и битовая глубина отсчетов цветности предшествующего изображения являются разными, декодер 33 устанавливает значение первого флага равным 1. Значение 1 обеспечено в качестве примера в иллюстративных целях, и декодер 33 может использовать любое значение, указывающее на то, что первый флаг является разрешающим, при необходимости. Когда первый флаг является разрешающим, изображения в DPB удаляют, но не выводят.
[00179] В других вариантах осуществления декодер 33 декодирует элемент синтаксиса, связанный с текущим изображением в битовом потоке, который указывает на то, должны ли быть выведены изображения в DPB. В ответ на определение того, что (4) формат цветности текущего изображения и формат цветности предшествующего изображения являются разными, (5) битовая глубина отсчетов яркости текущего изображения и битовая глубина отсчетов яркости предшествующего изображения являются разными, или (6) битовая глубина отсчетов цветности текущего изображения и битовая глубина отсчетов цветности предшествующего изображения являются разными, декодер 33 устанавливает значение первого флага равным декодированному значению элемента синтаксиса. Например, элемент синтаксиса является no_output_of_prior_pics_flag, и даже если существуют изменения в формате цветности, битовой глубине яркости или битовой глубине цветности между предшествующим изображением и текущим изображением, декодер 33 устанавливает значение первого флага равным декодированному значению no_output_of_prior_pics_flag.
[00180] В некоторых вариантах осуществления, декодер 33 получает ширину текущего изображения, высоту текущего изображения и количество элементов памяти изображения, связанных с текущим изображением. Ширину текущего изображения и высоту текущего изображения указывают в единицах отсчетов яркости, а количество элементов памяти изображения, связанное с текущим изображением указывает на минимальный размер DPB, необходимый для декодирования текущего уровня в кодированной видео последовательности, начинающейся с текущего изображения. Количество элементов памяти может быть указано для CVS и сигнализировано в SPS. Для каждой CVS и конкретного уровня, может действовать только один SPS. Декодер 33 также получает ширину предшествующего изображения, высоту предшествующего изображения и количество элементов памяти изображения, связанных с предшествующим изображением. Ширину предшествующего изображения и высоту предшествующего изображения указывают в единицах отсчетов яркости, а количество элементов памяти изображения, связанных с предшествующим изображением, указывает на минимальный размер DPB, необходимый для декодирования текущего уровня в кодированной видео последовательности, оканчивающейся на предшествующем изображении. Ширина текущего изображения, высота текущего изображения и количество элементов памяти изображения, связанных с текущим изображением, могут быть получены из первого набора параметров последовательности (SPS), который является активным для текущего уровня в момент времени декодирования текущего изображения. Ширина предшествующего изображения, высота предшествующего изображения и количество элементов памяти изображения, связанных с предшествующим изображением, могут быть получены из второго SPS, который был активным для текущего уровня в момент времени декодирования предшествующего изображения.
[00181] В одном варианте осуществления, в ответ на определение того, что (7) ширина текущего изображения и ширина предшествующего изображения являются разными, (8) высота текущего изображения и высота предшествующего изображения являются разными, или (9) количество элементов памяти изображения, связанных с текущим изображением, и количество элементов памяти изображения, связанных с предшествующим изображением, являются разными, декодер 33 устанавливает значение первого флага равным 1.
[00182] В другом варианте осуществления, декодер 33 декодирует элемент синтаксиса, связанный с текущим изображением, в битовом потоке, который указывает на то, должны ли быть выведены изображения в DPB (например, no_output_of_prior_pics_flag). В ответ на определение того, что (7) ширина текущего изображения и ширина предшествующего изображения являются разными, (8) высота текущего изображения и высота предшествующего изображения являются разными, или (9) количество элементов памяти изображения, связанных с текущим изображением, и количество элементов памяти изображения, связанных с предшествующим изображением, являются разными, декодер 33 устанавливает значение первого флага равным декодированному значению элемента синтаксиса.
[00183] Процесс 500 заканчивается блоком 505. Блоки могут быть добавлены и/или опущены в процессе 500, в зависимости от варианта осуществления, и блоки процесса 500 могут быть выполнены в разных порядках, в зависимости от варианта осуществления.
[00184] Любые признаки и/или варианты осуществления, описанные в отношении логического вывода NoOutputOfPriorPicsFlag в данном раскрытии сущности изобретения, могут быть реализованы отдельно или в любой их комбинации. Например, любые признаки и/или варианты осуществления, описанные в связи с фиг. 1-4 и другими частями данного раскрытия сущности изобретения, могут быть реализованы в любой комбинации с любыми признаками и/или вариантами осуществления, описанными в связи с фиг. 5, и наоборот.
[00185] Информация и сигналы, описанные здесь, могут быть представлены с использованием любых из множества разных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы, и микросхемы, на которые может быть сделана ссылка в приведенном выше описании, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами, или любой их комбинацией.
[00186] Различные иллюстративные логические блоки, схемы, и этапы алгоритмов, описанные в связи с вариантами осуществления, описанными здесь, могут быть реализованы в виде электронного аппаратного обеспечения, компьютерного программного обеспечения, или их комбинации. Для ясной иллюстрации этой взаимозаменяемости аппаратного обеспечения и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы, и этапы были описаны выше в общем виде в отношении их функциональности. Реализация такой функциональности в виде аппаратного обеспечения или программного обеспечения зависит от конкретного применения и конструкционных ограничений, налагаемых на всю систему. Специалисты в данной области техники могут реализовать описанную функциональность различными способами для каждого конкретного применения, но такие решения по реализации не должны интерпретироваться в качестве выхода за рамки объема данного изобретения.
[00187] Технологии, описанные здесь, могут быть реализованы в аппаратном обеспечении, программном обеспечении, аппаратно-программном обеспечении, или в любой их комбинации. Такие технологии могут быть реализованы в любых из множества устройств, таких как компьютеры общего назначения, мобильные трубки устройств беспроводной связи, или устройства на основе интегральных схем, имеющие многочисленные применения, включающие в себя применение в мобильных трубках устройств беспроводной связи и других устройствах. Любые признаки, описанные в виде модулей или компонентов, могут быть реализованы вместе в интегрированном логическом устройстве или отдельно в виде дискретных, но взаимосвязанных логических устройств. При реализации в программном обеспечении, данные технологии могут быть реализованы, по меньшей мере частично, посредством машиночитаемой запоминающей среды, содержащей программный код, включающий в себя команды, которые, при исполнении, выполняют один или более способов, описанных выше. Машиночитаемая запоминающая среда может образовывать часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Компьютерно-читаемый носитель может содержать память или носители данных, такие как память с произвольным доступом (random access memory - RAM), такая как синхронная динамическая память с произвольным доступом (synchronous dynamic random access memory-SDRAM), постоянное запоминающее устройство (read-only memory-ROM), память с произвольным доступом с неразрушающим считыванием (non-volatile random access memory-NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (electrically erasable programmable read-only memory-EEPROM), флэш-память, магнитные или оптические носители данных, и т.п. Данные технологии, дополнительно или альтернативно, могут быть реализованы, по меньшей мере частично, посредством компьютерно-читаемой среды передачи данных, такой как распространяемые сигналы или волны, которая переносит или передает программный код в виде команд или структур данных, к которым может быть осуществлен доступ и которые могут быть считаны и/или исполнены компьютером.
[00188] Программный код может быть исполнен процессором, который может включать в себя один или более процессоров, таких как один или более цифровых сигнальных процессоров (digital signal processor - DSP), микропроцессоров общего назначения, специализированных интегральных схем (application specific integrated circuit-ASIC), матриц программируемых логических вентилей (field programmable logic array-FPGA), или других эквивалентных интегральных или дискретных логических схем. Такой процессор может быть выполнен с возможностью выполнения любых технологий, описанных в данном раскрытии сущности изобретения. Процессор общего назначения может быть микропроцессором; но альтернативно, процессор может быть любым общепринятым процессором, контроллером, микроконтроллером, или конечным автоматом. Процессор может быть также реализован в виде комбинации вычислительных устройств, например, комбинации DSP и микропроцессора, множества микропроцессоров, одного или более микропроцессоров, соединенных с ядром DSP, или в виде любой другой такой конфигурации. Таким образом, термин «процессор», используемый здесь, может относиться к любой вышеупомянутой структуре, любой комбинации вышеупомянутых структур, или любой другой структуре или устройству, подходящему для реализации технологий, описанных здесь. Дополнительно, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в пределах специальных модулей программного обеспечения или модулей аппаратного обеспечения, выполненных с возможностью кодирования и декодирования, или встроенных в объединенный видеокодер-декодер (кодек). Также, данные технологии могут быть полностью реализованы в одной или более схемах или логических элементах.
[00189] Технологии данного раскрытия сущности изобретения могут быть реализованы в широком множестве устройств или аппаратов, включая беспроводную мобильную трубку, интегральную схему (IC) или набор IC (например, комплект интегральных схем). Различные компоненты, модули, или блоки описаны в данном раскрытии сущности изобретения для выделения функциональных аспектов устройств, выполненных с возможностью выполнения описанных технологий, но не обязательно требующих реализации посредством разных аппаратных блоков. Напротив, как описано выше, различные блоки могут быть объединены в аппаратном блоке кодека или обеспечены в виде набора взаимосвязанных аппаратных блоков, включающих в себя один или более процессоров, описанных выше, в сочетании с подходящим программным обеспечением и/или аппаратно-программным обеспечением.
[00190] Были описаны различные варианты осуществления данного раскрытия сущности изобретения. Эти и другие варианты осуществления находятся в пределах объема нижеследующей формулы изобретения.