РАСШИРЕНИЕ ЗАГОЛОВКА ВЫРЕЗКИ ДЛЯ ТРЕХМЕРНОГО ВИДЕО ДЛЯ ПРОГНОЗИРОВАНИЯ ЗАГОЛОВКОВ ВЫРЕЗОК
SLICE HEADER THREE-DIMENSIONAL VIDEO EXTENSION FOR SLICE HEADER PREDICTION

[0001] Данная заявка испрашивает приоритет по предварительным заявкам на патент США № 61/510,738, поданной 22 июля 2011 года, № 61/522,584, поданной 11 августа 2011 года, № 61/563,772, поданной 26 ноября 2011 года, № 61/595,612, поданной 6 февраля 2012 года, № 61/624,031, поданной 13 апреля 2012 года, и № 61/637,212, поданной 23 апреля 2012 года, каждая из которых настоящим полностью содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие сущности относится к области техники кодирования видео, например, к кодированию трехмерных видеоданных.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающих в себя цифровые телевизоры, системы цифровой прямой широковещательной передачи, устройства беспроводной связи, такие как переносные радиотелефоны, беспроводные широковещательные системы, персональные цифровые устройства (PDA), дорожные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства для видеоигр, консоли для видеоигр и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видеоизображения, как MPEG-2, MPEG-4 или H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), чтобы более эффективно передавать и принимать цифровое видео. Технологии сжатия видеоизображений выполняют пространственное и временное прогнозирование для того, чтобы уменьшать или удалять избыточность, присутствующую в видеопоследовательностях.
[0004] Технологии сжатия видео выполняют пространственное прогнозирование и/или временное прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присутствующую в видеопоследовательностях. Для кодирования видео на основе блоков видеокадр или вырезка может быть сегментирована на макроблоки. Каждый макроблок может быть дополнительно сегментирован. Макроблоки во внутренне кодированном (I-) кадре или вырезке кодируются с использованием пространственного прогнозирования относительно соседних макроблоков. Макроблоки во взаимно кодированном (P- или B-) кадре или вырезке могут использовать пространственное прогнозирование относительно соседних макроблоков в идентичном кадре или вырезки либо временное прогнозирование относительно других опорных кадров.
[0005] После того, как видеоданные кодированы, видеоданные могут быть пакетированы для передачи или хранения. Видеоданные могут ассемблироваться в видеофайл, соответствующий любому из множества стандартов, таких как базовый формат мультимедийных файлов Международной организации по стандартизации (ISO) и его расширения, к примеру, AVC.
[0006] Прилагаются усилия для того, чтобы разрабатывать новые стандарты кодирования видео на основе H.264/AVC. Один такой стандарт представляет собой стандарт масштабируемого кодирования видео (SVC), который является масштабируемым расширением H.264/AVC. Другой стандарт представляет собой кодирование многовидового видео (MVC), которое становится многовидовым расширением H.264/AVC. Совместный проект MVC описан в документе JVT-AB204 "Joint Draft 8.0 on Multiview Video Coding", 28th JVT meeting, Ганновер, Германия, июль 2008 года, доступном по адресу http://wftp3.itu.int/av-arch/jvt-site/2008_07_Hannover/JVT-AB204.zip. Версия AVC-стандарта описывается в документе JVT-AD007 "Editors' draft revision to ITU-T Rec. H.264 ISO/IEC 14496-10 Advanced Video Coding - in preparation for ITU-T SG 16 AAP Consent (in integrated form)", 30th JVT meeting, Женева, CH, февраль 2009 года", доступном по адресу http://wftp3.itu.int/av-arch/jvt-site/2009_01_Geneva/JVT-AD007.zip. Этот документ интегрирует SVC и MVC в технических требованиях AVC.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0007] В общем, это раскрытие сущности описывает технологии для поддержки рендеринга трехмерного видео. В частности, технологии этого раскрытия сущности относятся к кодированию и декодированию трехмерного видеоконтента. Это раскрытие сущности также предлагает технологии передачи служебных сигналов для единиц кодированных блоков видеоданных. Например, это раскрытие сущности предлагает многократное использование элементов синтаксиса, включенных в заголовок вырезки компонентов видов текстуры для соответствующих компонентов видов глубины и наоборот. Кроме того, это раскрытие предполагает повторное использование элементов синтаксиса в информации заголовка, например, информации заголовка вырезки компонентов видов глубины для компонентов видов текстуры.
[0008] В трехмерном кодеке компонент вида для каждого вида видеоданных в конкретный момент времени может включать в себя компонент вида текстуры и компонент вида глубины. Компонент вида текстуры может включать в себя компоненты яркости (Y) и компоненты цветности (Cb и Cr). Компоненты сигнала яркости (яркости) и цветности (цвета) совместно упоминаются в данном документе в качестве компонентов "текстуры". Компонент вида глубины может быть из карты глубины изображения. При рендеринге трехмерных изображений карты глубины включают в себя компоненты глубины, которые представляют значения глубины, например, для соответствующих компонентов текстуры. Компоненты видов глубины могут использоваться для формирования виртуальных видов с заданной перспективы просмотра.
[0009] Элементы синтаксиса для компонентов глубины и компонентов текстуры могут быть переданы в служебных сигналах с единицей кодированного блока. Единицы кодированных блоков, также упоминаемые просто в качестве "кодированных блоков" в этом раскрытии сущности, могут соответствовать макроблокам в ITU-T H.264/AVC (усовершенствованное кодирование видео) или единицам кодирования стандарта высокоэффективного кодирования видео (HEVC).
[0010] В одном аспекте, способ кодирования видеоданных включает в себя кодирование одного или более блоков видеоданных, представляющих информацию текстуры, по меньшей мере, части кадра видеоданных. Способ дополнительно включает в себя обработку вырезки текстуры для компонента вида текстуры текущего вида, ассоциированного с единицей доступа, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий набор элементов синтаксиса, представляющих характеристики вырезки текстуры. Способ также включает в себя кодирование информации глубины, представляющей значения глубины, по меньшей мере, для части кадра. Способ дополнительно включает в себя обработку вырезки глубины для компонента вида глубины, соответствующего компоненту вида текстуры вида, причем вырезка глубины содержит кодированную информацию глубины и заголовок вырезки глубины, содержащий набор элементов синтаксиса, представляющих характеристики вырезки глубины. Обработка вырезки текстуры или вырезки глубины дополнительно может включать в себя прогнозирование, по меньшей мере, одного элемента синтаксиса, по меньшей мере, из одного из набора элементов синтаксиса, представляющих характеристики вырезки текстуры, или набора элементов синтаксиса, представляющих характеристики вырезки глубины, из заголовка опорной вырезки, соответственно, при этом заголовок опорной вырезки предоставляется из компонента вида идентичной единицы доступа.
[0011] В другом аспекте, это раскрытие сущности описывает устройство для кодирования данных. Устройство включает в себя блок, связанный с кодированием видео, сконфигурированный с возможностью кодировать один или более блоков видеоданных, представляющих информацию текстуры, по меньшей мере, части кадра видеоданных, обрабатывать вырезку текстуры для компонента вида текстуры текущего вида, ассоциированного с единицей доступа, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий набор элементов синтаксиса, представляющих характеристики вырезки текстуры, кодировать информацию глубины, представляющую значения глубины, по меньшей мере, для части кадра, и обрабатывать вырезку глубины для компонента вида глубины, соответствующего компоненту вида текстуры вида, причем вырезка глубины содержит кодированную информацию глубины и заголовок вырезки глубины, содержащий набор элементов синтаксиса, представляющих характеристики вырезки глубины, при этом обработка вырезки текстуры или вырезки глубины содержит прогнозирование, по меньшей мере, одного элемента синтаксиса, по меньшей мере, из одного из набора элементов синтаксиса, представляющих характеристики вырезки текстуры, или набора элементов синтаксиса, представляющих характеристики вырезки глубины, из заголовка опорной вырезки, соответственно, при этом заголовок опорной вырезки предоставляется из компонента вида идентичной единицы доступа.
[0012] В еще одном аспекте, это раскрытие сущности описывает компьютерный программный продукт, который может быть сконфигурирован с возможностью осуществлять одну или более описанных технологий. Компьютерный программный продукт включает в себя компьютерно-читаемый носитель хранения данных, содержащий сохраненные на нем инструкции, которые при выполнении инструктируют процессору устройства кодирования видео кодировать один или более блоков видеоданных, представляющих информацию текстуры, по меньшей мере, части кадра видеоданных. Инструкции дополнительно инструктируют процессору обрабатывать вырезку текстуры для компонента вида текстуры текущего вида, ассоциированного с единицей доступа, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий набор элементов синтаксиса, представляющих характеристики вырезки текстуры. Инструкции дополнительно инструктируют процессору кодировать информацию глубины, представляющую значения глубины, по меньшей мере, для части кадра. Кроме того, инструкции дополнительно инструктируют процессору обрабатывать вырезку глубины для компонента вида глубины, соответствующего компоненту вида текстуры вида, причем вырезка глубины содержит кодированную информацию глубины и заголовок вырезки глубины, содержащий набор элементов синтаксиса, представляющих характеристики вырезки глубины, при этом обработка вырезки текстуры или вырезки глубины содержит прогнозирование, по меньшей мере, одного элемента синтаксиса, по меньшей мере, из одного из набора элементов синтаксиса, представляющих характеристики вырезки текстуры, или набора элементов синтаксиса, представляющих характеристики вырезки глубины, из заголовка опорной вырезки, соответственно, при этом заголовок опорной вырезки предоставляется из компонента вида идентичной единицы доступа.
[0013] В другом аспекте, описывается устройство для обработки видеоданных, которое включает в себя средство для кодирования одного или более блоков видеоданных, представляющих информацию текстуры, по меньшей мере, части кадра видеоданных. Устройство дополнительно включает в себя средство для обработки вырезки текстуры для компонента вида текстуры текущего вида, ассоциированного с единицей доступа, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий набор элементов синтаксиса, представляющих характеристики вырезки текстуры, и средство для кодирования информации глубины, представляющей значения глубины, по меньшей мере, для части кадра. Устройство дополнительно включает в себя средство для обработки вырезки глубины для компонента вида глубины, соответствующего компоненту вида текстуры вида, причем вырезка глубины содержит кодированную информацию глубины и заголовок вырезки глубины, содержащий набор элементов синтаксиса, представляющих характеристики вырезки глубины, при этом средство для обработки вырезки текстуры или вырезки глубины содержит средство для прогнозирования, по меньшей мере, одного элемента синтаксиса, по меньшей мере, из одного из набора элементов синтаксиса, представляющих характеристики вырезки текстуры, или набора элементов синтаксиса, представляющих характеристики вырезки глубины, из заголовка опорной вырезки, соответственно, при этом заголовок опорной вырезки предоставляется из компонента вида идентичной единицы доступа.
[0014] Технологии, описанные в данном раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. Если реализованы в программном обеспечении, программное обеспечение выполняться в процессоре, который может означать один или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP), либо в другой эквивалентной интегральной или дискретной логической схеме. Программное обеспечение, содержащее инструкции, чтобы осуществлять технологии, может быть первоначально сохранено в компьютерно-читаемом носителе и загружено и выполнено посредством процессора.
[0015] Это раскрытие сущности также предполагает компьютерно-читаемые носители, содержащие инструкции для того, чтобы инструктировать процессору осуществлять любую из множества технологий, описанных в данном раскрытии сущности. В некоторых случаях, компьютерно-читаемый носитель может формировать часть компьютерного программного продукта, который может продаваться производителям и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель, а в некоторых случаях также может включать в себя упаковку.
[0016] Подробности одного или более вариантов осуществления данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества технологий, описанных в данном раскрытии сущности, должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0017] Фиг. 1 является блок-схемой, иллюстрирующей один пример системы кодирования и декодирования видео, согласно технологиям настоящего раскрытия сущности.
[0018] Фиг. 2 является блок-схемой, подробнее иллюстрирующей пример видеокодера по фиг. 1, согласно технологиям настоящего раскрытия сущности.
[0019] Фиг. 3 является принципиальной схемой, иллюстрирующей примерный порядок многовидового декодирования согласно технологиям настоящего раскрытия сущности.
[0020] Фиг. 4 является схемой одного примера структуры MVC-прогнозирования для кодирования многовидового видео, согласно технологиям настоящего раскрытия сущности.
[0021] Фиг. 5 является блок-схемой, подробнее иллюстрирующей пример видеодекодера по фиг. 1, согласно технологиям настоящего раскрытия сущности.
[0022] Фиг. 6 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу блока, связанного с кодированием видео, согласно технологиям настоящего раскрытия сущности.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0023] Это раскрытие сущности описывает технологии, которые кодер может применять, и декодер может использовать, по меньшей мере, в ходе стадии взаимного прогнозирования, по меньшей мере, процесса кодирования или декодирования видео. Описанные технологии связаны с кодированием трехмерного ("трехмерного") видеоконтента. Трехмерный видеоконтент может быть представлен, например, в качестве кодированных блоков многовидового видео плюс глубины (MVD). Иными словами, эти технологии могут применяться для того, чтобы кодировать или декодировать поток битов, напоминающий поток битов для кодирования многовидового видео (MVC), при этом любые или все виды MVC-потока битов дополнительно могут включать в себя информацию глубины. Как описано в данном документе, передача в служебных сигналах имеет место в кодированном потоке битов.
[0024] Более конкретно, некоторые технологии согласно этому раскрытию сущности заключают в себе прием, по меньшей мере, одного двумерного изображения, имеющего компоненты видов текстуры и компоненты видов глубины. Некоторые компоненты видов текстуры и компоненты видов глубины могут быть кодированы вместе в один кодированный блок или в качестве отдельных блоков. Изображение может быть разбито на вырезки (фрагменты данных) изображений. Элементы синтаксиса для кодирования компонентов видов текстуры могут быть переданы в служебных сигналах в заголовке вырезки. Некоторые элементы синтаксиса для компонентов видов глубины могут быть прогнозированы из элементов синтаксиса для компонентов видов текстуры, соответствующих компонентам видов глубины. Технологии этого раскрытия сущности относятся к кодированию, декодированию и передаче в служебных сигналах данных, используемых для того, чтобы подготавливать посредством рендеринга трехмерные видеоданные из двумерных видеоданных на основе оцененных данных карты глубины для двумерных видеоданных. В некоторых примерах, компоненты видов текстуры кодируются с использованием технологий, отличных от технологий, используемых для кодирования информации глубины. В этом раскрытии сущности, термин "кодирование" может означать любое или оба из кодирования и декодирования.
[0025] Преобразование видео на основе оценки глубины и синтеза виртуальных видов используется для того, чтобы создавать трехмерные изображения, к примеру, для трехмерных видеоприложений. В частности, виртуальные виды сцены могут быть использованы для того, чтобы создавать трехмерный вид сцены. Формирование виртуального вида сцены на основе существующего вида сцены традиционно достигается посредством оценки значений глубины объектов перед синтезированием виртуального вида. Оценка глубины является процессом оценки абсолютных или относительных расстояний между объектами и плоскостью камеры от стереопар или моноскопического контента. При использовании в данном документе, информация глубины включает в себя информацию, полезную при обработке трехмерного видео, к примеру, карту глубины (например, значения глубины на попиксельной основе) или параллактическую карту (например, горизонтальную диспаратность на попиксельной основе).
[0026] Оцененная информация глубины, обычно представленная посредством карты глубины изображений на основе уровня градаций серого, может быть использована для того, чтобы формировать произвольный угол для виртуальных видов с использованием технологий рендеринга на основе изображений глубины (DIBR). По сравнению с традиционными системами трехмерного телевидения (3DTV), в которых многовидовые последовательности сталкиваются со сложностями при эффективном межвидовом сжатии, система на основе карт глубины может сокращать потребление полосы пропускания посредством передачи только одного или нескольких видов вместе с картой(ами) глубины, которая может быть эффективно кодирована. Карта(ы) глубины, используемая в преобразовании на основе карт глубины, может быть управляемой (например, посредством масштабирования) конечными пользователями до того, как карта(ы) глубины используется в синтезе видов. Настраиваемые виртуальные виды могут быть сформированы с различной величиной воспринимаемой глубины. Кроме того, оценка глубины может быть выполнена с использованием моноскопического видео, в котором доступен только один двумерный контент видов.
[0027] Некоторые технологии этого раскрытия сущности описываются в отношении расширения кодирования многовидового видео (MVC) в стандарте H.264/AVC (усовершенствованное кодирование видео). Новейший совместный проект MVC описывается в документе JVT-AD007 "Editors' draft revision to ITU-T Rec. H.264 | ISO/IEC 14496-10 Advanced Video Coding", 30th JVT meeting, Geneva, Switzerland, январь-февраль 2009 года, доступном по адресу http://wftp3.itu.int/av-arch/jvt-site/2009_01_Geneva/JVT-AD007, который настоящим содержится по ссылке в данном документе. Хотя нижеприведенное описание приводится с точки зрения H.264/AVC, следует понимать, что технологии этого раскрытия сущности могут быть применимыми для использования с другими процессами кодирования многовидового видео или с будущими многовидовыми o по отношению к текущим предлагаемым стандартам кодирования видео.
[0028] В H.264/AVC, каждая единица уровня абстракции сети (NAL), если содержит кодированные видеоданные, имеет заголовок вырезки. Заголовок вырезки может содержать следующую информацию: адрес вырезки, местоположение начального макроблока, типа вырезки, набор параметров изображения (PPS), который должен быть использован, и параметр дельта-квантования (QP) между начальным QP вырезки и QP, передаваемым в служебных сигналах в PPS, порядок опорных изображений (frame_num) и порядок отображения текущего изображения (например, номер в последовательности изображений (POC)), связанные с составлением списков опорных изображений элементы синтаксиса, связанные с операциями управления запоминающим устройством элементы синтаксиса, связанные со взвешенным прогнозированием элементы синтаксиса.
[0029] Технологии, описанные в данном документе, могут применяться для того, чтобы прогнозировать элементы синтаксиса для компонента вида глубины из элементов синтаксиса, сохраненных в заголовке вырезки для совместно размещенных компонентов видов текстуры идентичного вида. Например, значения для элементов синтаксиса, которые являются общими для вырезки глубины и вырезки текстуры, могут быть включены в заголовок вырезки для компонентов видов текстуры, но не в вырезки для ассоциированных компонентов видов глубины. Иными словами, видеокодер или декодер могут кодировать элементы синтаксиса, которые являются общими для вырезки глубины и вырезки текстуры, в заголовке вырезки для компонентов видов текстуры, которые не присутствуют в заголовке вырезки для компонентов видов глубины. Например, первое значение может задаваться для первого элемента синтаксиса в заголовке вырезки для компонентов видов текстуры. Заголовок вырезки для компонентов видов глубины также совместно использует первый элемент синтаксиса, что означает то, что первый элемент синтаксиса является общим как для заголовка вырезки текстуры, так и для заголовка вырезки глубины. Первый элемент синтаксиса для компонентов видов глубины имеет второе значение. Тем не менее, заголовок вырезки для компонента вида глубины не включает в себя первый элемент синтаксиса. Согласно технологиям, описанным в данном документе, второе значение первого элемента синтаксиса может быть прогнозировано из первого значения.
[0030] Это раскрытие сущности представляет следующие технологии для прогнозирования заголовков вырезок. Согласно одному примеру раскрытия сущности, прогнозирование управляется на уровне заголовка вырезки, и заголовок опорной вырезки может задаваться в качестве компонента вида в идентичном виде единицы доступа, идентичной единице доступа текущего вида, или AVC-совместимого базового вида текстуры единицы доступа, идентичной единице доступа текущего вида.
[0031] В другом примере, заголовок опорной вырезки компонента вида глубины может быть либо заголовком вырезки компонента вида текстуры в идентичном виде, либо заголовком вырезки компонента вида глубины первого вида в порядке декодирования. В другом примере, идентификатор индекса порядка в дельта-виде может передаваться в служебных сигналах, чтобы указывать то, из какого вида в идентичной единице доступа прогнозируется заголовок вырезки.
[0032] В некоторых примерах, флаг может передаваться в служебных сигналах, чтобы указывать то, предоставляется заголовок опорной вырезки из компонента вида глубины или из компонента вида текстуры конкретного вида. В другом примере, элементы синтаксиса в расширении заголовка вырезки, если присутствуют в заголовке вырезки, могут быть переупорядочены таким способом, который отличается от элементов синтаксиса заголовка вырезки в заголовке AVC-вырезки.
[0033] В еще одном другом примере, могут избирательно прогнозироваться элементы slice_type, num_ref_idx_l0_active_minus1, num_ref_idx_l1_active_minus1 синтаксиса и модификация списков опорных изображений. Иными словами, они могут прогнозироваться или не прогнозироваться на основе флага управления в каждом 3DV-расширении заголовка вырезки. Когда активируется прогнозирование модификации списков опорных изображений, может быть возможным уточнять модификацию списков опорных изображений на основе новой введенной синтаксической таблицы для исключения или вставки в списки опорных изображений.
[0034] В другом примере раскрытия сущности, после того, как указан компонент вида глубины или текстуры, идентификатор вырезки для вырезки данного компонента вида в единице доступа может дополнительно передаваться в служебных сигналах. В некоторых примерах, единица доступа, содержащая вырезку данного компонента вида, может быть идентичной единицей доступа, соответствующей компоненту вида глубины или текстуры.
[0035] В другом примере раскрытия сущности, идентификатор вырезки может передаваться в служебных сигналах для каждой вырезки каждого компонента вида. Идентификатор вырезки может передаваться в служебных сигналах либо в заголовке вырезки, либо в заголовке NAL-единицы. Дополнительно, вышеуказанные индикаторы могут передаваться в служебных сигналах в 3DV-расширении заголовка вырезки.
[0036] Технологии раскрытия сущности могут использовать взаимное кодирование на основе блоков. Взаимное кодирование на основе блоков является технологией кодирования, которая основана на временном прогнозировании для того, чтобы уменьшать или удалять временную избыточность между видеоблоками последовательных кодированных единиц видеопоследовательности. Кодированные единицы могут содержать видеокадры, вырезки видеокадров, группы изображений или другую заданную единицу кодированных видеоблоков. Для взаимного кодирования, видеокодер выполняет оценку движения и компенсацию движения для того, чтобы оценивать движение между видеоблоками двух или более смежных кодированных единиц. С использованием технологий для оценки движения видеокодер формирует векторы движения, которые указывают смещение видеоблоков относительно соответствующих прогнозных видеоблоков в одном или более опорных кадров или других кодированных единиц. С использованием технологий для компенсации движения видеокодер использует векторы движения для того, чтобы формировать прогнозные видеоблоки из одного или более опорных кадров или других кодированных единиц. После компенсации движения видеокодер вычисляет остаточные видеоблоки посредством вычитания прогнозных видеоблоков из кодируемых исходных видеоблоков.
[0037] Компоненты опорных видов (RVC) могут включать в себя несколько вырезок текстуры или глубины. В некоторых примерах, в которых компоненты опорных видов содержат несколько вырезок, совместно размещенная вырезка может быть использована при определении элементов синтаксиса текущей вырезки. Альтернативно, первая вырезка в RVC может быть использована для того, чтобы определять элементы синтаксиса текущей вырезки. В других примерах, другая вырезка в RVC может быть использована для того, чтобы определять общие элементы синтаксиса текущей вырезки.
[0038] Фиг. 1 является блок-схемой, иллюстрирующей один пример системы 10 кодирования и декодирования видео, согласно технологиям настоящего раскрытия сущности. Как показано в примере по фиг. 1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 16 через линию 15 связи. Линия 15 связи может содержать любой тип носителя или устройства, допускающего перенос кодированных видеоданных из исходного устройства 12 в целевое устройство 16. В одном примере, линия 15 связи содержит среду связи, чтобы предоставлять возможность исходному устройству 12 передавать кодированные видеоданные непосредственно в целевое устройство 14 в реальном времени. Кодированные видеоданные могут быть модулированы согласно стандарту связи, такому как протокол беспроводной связи, и переданы в целевое устройство 16. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 12 в целевое устройство 16.
[0039] Исходное устройство 12 и целевое устройство 16 могут содержать любое из широкого диапазона устройств. В некоторых примерах, одно или оба из исходного устройства 12 и целевого устройства 16 могут содержать устройства беспроводной связи, к примеру, беспроводные телефоны, так называемые сотовые или спутниковые радиотелефоны либо любые беспроводные устройства, которые могут передавать видеоинформацию по линии 15 связи, когда линия 15 связи является беспроводной. Тем не менее, технологии этого раскрытия сущности, которые относятся к кодированию блоков видеоданных, которые включают в себя информацию текстуры и глубины, не обязательно ограничены приложениями или настройками беспроводной связи. Технологии также могут быть применимыми в широком диапазоне других настроек и устройств, в том числе устройств, которые обмениваются данными через физические провода, оптоволокно или другие физические или беспроводные среды. Помимо этого, технологии кодирования или декодирования также могут применяться в автономном устройстве, которое не обязательно обменивается данными с любым другим устройством. Например, видеодекодер 28 может постоянно размещаться в цифровом мультимедийном проигрывателе или другом устройстве и принимать кодированные видеоданные через потоковую передачу, загрузку или носители хранения данных. Следовательно, иллюстрация исходного устройства 12 и целевого устройства 14 как поддерживающих связь друг с другом описывается в целях иллюстрации примерной реализации и не должна считаться ограничением в отношении технологий, описанных в этом раскрытии сущности, которые могут быть применимыми к кодированию видео в целом во множестве окружений, вариантов применения или реализаций.
[0040] Альтернативно, кодированные данные могут выводиться из интерфейса 24 вывода в устройство 17 хранения данных. Аналогично, доступ к кодированным данным может осуществляться из устройства 17 хранения данных посредством видеодекодера 28. Устройство 17 хранения данных может включать в себя любой из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных. В дополнительном примере, устройство 17 хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может хранить кодированное видео, сформированное посредством исходного устройства 12. Целевое устройство 16 может осуществлять доступ к сохраненным видеоданным из устройства 17 хранения данных через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 16. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Целевое устройство 16 может осуществлять доступ к кодированным видеоданным через любое стандартное подключение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем и т.д.) или комбинацию означенного, которая является подходящей для того, чтобы осуществлять доступ к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из устройства 17 хранения данных может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного.
[0041] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 20, процессор 21 глубины, видеокодер 22 и интерфейс 24 вывода. Целевое устройство 16 включает в себя интерфейс 26 ввода, видеодекодер 28 и устройство 30 отображения. В соответствии с этим раскрытием сущности, видеокодер 22 исходного устройства 12 может быть сконфигурирован с возможностью применять одну или более технологий этого раскрытия сущности как часть процесса кодирования видео. Аналогично, видеодекодер 28 целевого устройства 16 может быть сконфигурирован с возможностью применять одну или более технологий этого раскрытия сущности как часть процесса декодирования видео.
[0042] Видеокодер 22 также может применять процессы преобразования, квантования и энтропийного кодирования для того, чтобы дополнительно уменьшать скорость передачи битов, ассоциированную с передачей остаточных блоков. Технологии преобразования могут содержать дискретные косинусные преобразования (DCT) или концептуально аналогичные процессы. Альтернативно, могут использоваться вейвлет-преобразования, целочисленные преобразования или другие типы преобразований. В DCT-процессе, в качестве примера, набор пиксельных значений преобразуется в коэффициенты преобразования, которые представляют энергию пиксельных значений в частотной области. Видеокодер 22 также может квантовать коэффициенты преобразования, что может, в общем, заключать в себе процесс, который уменьшает число битов, ассоциированное с соответствующим коэффициентом преобразования. Энтропийное кодирование может включать в себя один или более процессов, которые совместно сжимают данные для вывода в поток битов, при этом сжатые данные могут включать в себя, например, последовательность режимов кодирования, информацию движения, шаблоны кодированных блоков и квантованные коэффициенты преобразования. Примеры энтропийного кодирования включают в себя, но не только, контекстно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).
[0043] Кодированный видеоблок может быть представлен посредством информации прогнозирования, которая может быть использована для того, чтобы создавать или идентифицировать прогнозный блок и остаточный блок данных, который может применяться к прогнозному блоку, чтобы воссоздавать исходный блок. Информация прогнозирования может содержать один или более векторов движения, которые используются для того, чтобы идентифицировать прогнозный блок данных. С использованием векторов движения видеодекодер 28 может иметь возможность восстанавливать прогнозные блоки, которые использованы для того, чтобы кодировать остаточные блоки. Таким образом, с учетом набора остаточных блоков и набора векторов движения (и, возможно, некоторого дополнительного синтаксиса), видеодекодер 28 может восстанавливать видеокадр, который первоначально кодирован. Взаимное кодирование на основе оценки движения и компенсации движения позволяет достигать относительно большой величины сжатия без чрезмерных потерь данных, поскольку последовательные видеокадры или другие типы кодированных единиц зачастую являются аналогичными. Кодированная видеопоследовательность может содержать блоки остаточных данных, векторы движения (при кодировании с взаимным прогнозированием), индикаторы относительно режимов внутреннего прогнозирования для внутреннего прогнозирования и элементы синтаксиса.
[0044] Видеокодер 22 также может использовать технологии внутреннего прогнозирования для того, чтобы кодировать видеоблоки относительно соседних видеоблоков общего кадра или вырезки. Таким образом, видеокодер 22 пространственно прогнозирует блоки. Видеокодер 22 может быть сконфигурирован с множеством режимов внутреннего прогнозирования, которые, в общем, соответствуют различным направлениям пространственного прогнозирования. Аналогично оценке движения, видеокодер 22 может быть сконфигурирован с возможностью выбирать режим внутреннего прогнозирования на основе компонента сигнала яркости блока, затем многократно использовать режим внутреннего прогнозирования для того, чтобы кодировать компоненты сигнала цветности блока. Кроме того, в соответствии с технологиями этого раскрытия сущности, видеокодер 22 может многократно использовать режим внутреннего прогнозирования для того, чтобы кодировать компонент глубины блока.
[0045] Посредством многократного использования информации движения и режима внутреннего прогнозирования для того, чтобы кодировать компонент глубины блока, эти технологии могут упрощать процесс кодирования карт глубины. Кроме того, технологии, описанные в данном документе, могут повышать эффективность потока битов. Иными словами, поток битов должен указывать некоторые элементы синтаксиса только один раз в заголовке вырезки для компонента вида текстуры, а не сообщать в служебных сигналах дополнительный элемент синтаксиса в заголовке вырезки для вырезки компонентов видов глубины.
[0046] Необязательно, компонент вида текстуры также может многократно использовать свой соответствующий компонент вида глубины аналогичным образом.
[0047] Так же, проиллюстрированная система 10 по фиг. 1 является просто одним примером. Различные технологии этого раскрытия сущности могут выполняться посредством любого устройства кодирования, которое поддерживает прогнозирующее кодирование на основе блоков, или любого устройства декодирования, которое поддерживает прогнозирующее декодирование на основе блоков. Исходное устройство 12 и целевое устройство 16 представляют собой просто примеры таких устройств кодирования, при этом исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 16. В некоторых случаях, устройства 12 и 16 могут работать практически симметрично так, что каждое из устройств 12 и 16 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12 и 16, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0048] Видеоисточник 20 исходного устройства 12 включает в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопередачу от поставщика видеосодержимого. Альтернативно, видеоисточник 20 может формировать данные на основе компьютерной графики в качестве исходного видео или комбинации передаваемого вживую видео, заархивированного видео и/или машиногенерируемого видео. В некоторых случаях, если видеоисточник 20 является видеокамерой, исходное устройство 12 и целевое устройство 16 могут формировать так называемые камерофоны или видеотелефоны либо другие мобильные устройства, сконфигурированные с возможностью обрабатывать видеоданные, к примеру, планшетные вычислительные устройства. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 22. Видеоисточник 20 захватывает вид и перенаправляет его в процессор 21 глубины.
[0049] Видеоисточник 20 отправляет вид 2 в процессор 21 глубины для вычисления изображения глубины для объектов в виде 2. В некоторых примерах, вид 2 содержит несколько видов. Изображение глубины определяется для объектов в виде 2, захваченном посредством видеоисточника 20. Процессор 21 глубины сконфигурирован с возможностью автоматически вычислять значения глубины для объектов в изображении вида 2. Например, процессор 21 глубины вычисляет значения глубины для объектов на основе информации яркости. В некоторых примерах, процессор 21 глубины сконфигурирован с возможностью принимать информацию глубины от пользователя. В некоторых примерах, видеоисточник 20 захватывает два вида сцены при различных перспективах и затем вычисляет информацию глубины для объектов в сцене на основе диспаратности между объектами в двух видах. В различных примерах, видеоисточник 20 содержит стандартную двумерную камеру, систему с двумя камерами, которая предоставляет стереоскопический вид сцены, матрицу камер, которая захватывает несколько видов сцены, или камеру, которая захватывает информацию одного вида плюс глубины.
[0050] Процессор 21 глубины отправляет компоненты 4 видов текстуры и компоненты 6 видов глубины в видеокодер 22. Процессор 21 глубины также может отправлять вид 2 непосредственно в видеокодер 22. Информация 6 глубины содержит изображение карты глубины для вида 2. Изображение карты глубины может содержать карту значений глубины для каждой области пикселов, ассоциированных с областью (например, блоком, вырезкой или кадром), которая должна отображаться. Область пикселов включает в себя один пиксел или группу из одного или более пикселов. Некоторые примеры карт глубины имеют один компонент глубины в расчете на пиксел. В других примерах, предусмотрено несколько компонентов глубины в расчете на пиксел. Карты глубины могут быть кодированы способом, практически аналогичным данным текстуры, например, с использованием внутреннего прогнозирования или взаимного прогнозирования относительно других ранее кодированных данных глубины. В других примерах, карты глубины кодируются способом, отличным от способа, которым кодируются данные текстуры.
[0051] Карта глубины может быть оценена в некоторых примерах. Когда присутствуют несколько видов, стереосогласование может быть использовано для того, чтобы оценивать карты глубины. Тем не менее, при преобразовании из двумерной в трехмерную форму, оценка глубины может быть более затруднительной. Несмотря на это, карта глубины, оцененная посредством различных способов, может использоваться для трехмерного рендеринга на основе рендеринга на основе изображений глубины (DIBR).
[0052] Хотя видеоисточник 20 может включать в себя несколько видов сцены, и процессор 21 глубины может вычислять информацию глубины на основе нескольких видов, исходное устройство 12 может, в общем, передавать информацию одного вида плюс глубины для каждого вида сцены.
[0053] Когда вид 2 является цифровым неподвижным изображением, видеокодер 22 может быть сконфигурирован с возможностью кодировать вид 2 в качестве, например, изображения в формате Совместной экспертной группы по фотографии (JPEG). Когда вид 2 является кадром видеоданных, видеокодер 22 сконфигурирован с возможностью кодировать первый вид 50 согласно такому стандарту кодирования видео, как, например, MPEG-1 Visual Экспертной группы по киноизображению (MPEG), Международной организации по стандартизации (ISO)/Международной электротехнической комиссии (IEC), ISO/IEC MPEG-2 Visual, ISO/IEC MPEG-4 Visual, H.261 Международного союза по телекоммуникациям (ITU), ITU-T H.262, ITU-T H.263, H.264/MPEG-4 ITU-T, стандарт усовершенствованного кодирования видео (AVC) H.264, разрабатываемый стандарт высокоэффективного кодирования видео (HEVC) (также называемый H.265) или другие стандарты кодирования видео. Видеокодер 22 может включать в себя информацию 6 глубины вместе с кодированным изображением, чтобы формировать кодированный блок 8, который включает в себя кодированные данные изображений вместе с информацией 6 глубины. Видеокодер 22 передает кодированный блок 8 в интерфейс 24 вывода. Кодированный блок 8 может быть передан в интерфейс 26 ввода в потоке битов, включающем в себя служебную информацию, вместе с кодированным блоком 8 по линии 15 связи.
[0054] Информация кодированного видео включает в себя компоненты 4 текстуры и информацию 6 глубины. Компоненты 4 текстуры могут включать в себя компоненты яркости (сигнала яркости) и цветности (сигнала цветности) видеоинформации. Компоненты сигнала яркости, в общем, описывают яркость, в то время как компоненты сигнала цветности, в общем, описывают оттенки цвета. Процессор 21 глубины извлекает информацию 6 глубины из карты глубины вида 2. Видеокодер 22 может кодировать компоненты 4 видов текстуры и компоненты 6 видов глубины в один кодированный блок 8 кодированных видеоданных. Аналогично, видеокодер 22 может кодировать блок таким образом, что информация движения или режима внутреннего прогнозирования для компонента сигнала яркости многократно используется для компонентов сигнала цветности и компонента глубины. Элементы синтаксиса, используемые для компонентов видов текстуры, могут быть использованы для того, чтобы прогнозировать аналогичные элементы синтаксиса для компонентов видов глубины.
[0055] В некоторых примерах, компонент вида карты глубины не может быть кодирован с использованием технологий межвидового прогнозирования, даже когда соответствующий компонент вида текстуры кодируется с использованием технологий межвидового прогнозирования. Например, компонент вида карты глубины может быть прогнозирован с использованием внутривидового прогнозирования, когда соответствующий компонент вида текстуры прогнозируется с использованием межвидового прогнозирования. Например, межвидовое прогнозирование компонента вида текстуры прогнозирует информацию видов текстуры из данных другого вида в качестве вида, соответствующего компоненту вида текстуры. Напротив, информация видов глубины для внутривидового прогнозирования прогнозирует информацию глубины из данных вида, идентичного виду, соответствующему информации видов глубины.
[0056] Несмотря на использование различных технологий прогнозирования, некоторые элементы синтаксиса для компонента вида карты глубины могут быть прогнозированы из соответствующих элементов синтаксиса в заголовке вырезки соответствующего компонента вида текстуры или наоборот. Тем не менее, информация заголовка вырезки для компонента вида карты глубины может содержать информацию, связанную с составлением списков опорных изображений. Иными словами, информация, связанная с составлением списков опорных изображений, может быть передана в служебных сигналах в заголовке вырезки для компонента вида карты глубины. Например, число опорных изображений, которые используются и индикатор того, какие опорные изображения используются для того, чтобы прогнозировать компонент вида карты глубины, могут быть переданы в служебных сигналах в заголовке вырезки для компонента вида карты глубины. Аналогичная информация также может быть передана в служебных сигналах в заголовке вырезки для соответствующего компонента вида текстуры.
[0057] В некоторых примерах, исходное устройство 12 включает в себя модем, который модулирует кодированный блок 8 согласно стандарту связи, такому как, например, к множественный доступ с кодовым разделением каналов (CDMA) или другой стандарт связи. Модем 27 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью модуляции сигналов. Интерфейс 24 вывода может включать в себя схемы, спроектированные с возможностью передачи данных, включающие в себя усилители, фильтры и одну или более антенн. Кодированный блок 8 передается в целевое устройство 16 через интерфейс 24 вывода и линию 15 связи. В некоторых примерах, вместо передачи по каналу связи, исходное устройство 12 сохраняет кодированные видеоданные, включающие в себя блоки, имеющие компоненты текстуры и глубины, на устройство 32 хранения данных, к примеру, на цифровой видеодиск (DVD), Blu-Ray-диск, флэш-накопитель и т.п.
[0058] Интерфейс 26 ввода целевого устройства 16 принимает информацию по линии 15 связи. В некоторых примерах, целевое устройство 16 включает в себя модем, который демодулирует информацию. Аналогично интерфейсу 24 вывода, интерфейс 26 ввода может включать в себя схемы, спроектированные с возможностью приема данных, в том числе усилители, фильтры и одну или более антенн. В некоторых случаях, интерфейс 24 вывода и/или интерфейс 26 ввода может быть включено в один компонент приемо-передающего устройства, который включает в себя как приемную, так и передающую схему. Модем 27 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, спроектированные с возможностью демодуляции сигналов. В некоторых случаях, модем может включать в себя компоненты для выполнения как модуляции, так и демодуляции.
[0059] С другой стороны, процесс кодирования видео, выполняемый посредством видеокодера 22, может реализовывать одну или более технологий, описанных в данном документе, в ходе взаимного прогнозирующего кодирования, которое может включать в себя оценку движения и компенсацию движения, а также внутреннее прогнозирующее кодирование. Процесс декодирования видео, выполняемый посредством видеодекодера 28, также может выполнять такие технологии в ходе стадии компенсации движения процесса декодирования.
[0060] Термин "кодер" используется в данном документе, чтобы означать специализированное компьютерное устройство или аппарат, который выполняет кодирование видео или декодирование видео. Термин "кодер", в общем, означает любое из видеокодера, видеодекодера или комбинированного кодера/декодера (кодека). Термин "кодирование" означает кодирование или декодирование. Термины "кодированный блок", "единица кодированного блока" или "кодированная единица" могут означать любую независимо декодируемую единицу видеокадра, к примеру, целый кадр, вырезку кадра, блок видеоданных или другую независимо декодируемую единицу, заданную согласно используемым технологиям кодирования.
[0061] Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества из одного или более устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения. В некоторых примерах, устройство 30 отображения соответствует устройству, допускающему трехмерное воспроизведение. Например, устройство 30 отображения может содержать стереоскопическое отображение, которое используется вместе с защитными очками, носимыми зрителем. Защитные очки могут содержать активные очки, когда устройство 30 отображения быстро чередуется между изображениями различных видов синхронно с попеременным закрытием линз активных очков. Альтернативно, защитные очки могут содержать пассивные очки, когда устройство 30 отображения отображает изображения из различных видов одновременно, и пассивные очки могут включать в себя поляризованные линзы, которые, в общем, поляризуются в ортогональных направлениях с тем, чтобы фильтровать между различными видами.
[0062] В примере по фиг. 1, линия 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Линия 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Линия 15 связи, в общем, представляет любую подходящую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16. Линия 15 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть применимым для того, чтобы упрощать передачу данных из исходного устройства 12 в целевое устройство 16.
[0063] Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видео, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG4, часть 10, усовершенствованное кодирование видео (AVC). Дополнительные стандарты сжатия видео, которые основаны на стандарте ITU H.264/AVC, который может быть использован посредством видеокодера 22 и видеодекодера 28, включают в себя стандарт масштабируемого кодирования видео (SVC), который является масштабируемым расширением стандарта ITU H.264/AVC. Другой стандарт, согласно которому могут работать видеокодер 22 и видеодекодер 28, включает в себя стандарт кодирования многовидового видео (MVC), который является многовидовым расширением стандарта ITU H.264/AVC. Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования видео.
[0064] В некоторых аспектах, видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером, соответственно, и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование аудио и видео в общем потоке данных или в отдельных потоках данных. Если применимо, блоки мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0065] Видеокодер 22 и видеодекодер 28 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Когда любые из технологий этого раскрытия сущности реализуются в программном обеспечении, устройство реализации дополнительно может включать в себя аппаратные средства для сохранения и/или выполнения инструкций для программного обеспечения, например, запоминающее устройство для сохранения инструкций и один или более модулей обработки для выполнения инструкций. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодека, который включает в себя возможности кодирования и декодирования в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п.
[0066] Видеопоследовательность типично включает в себя последовательность видеокадров, также называемых в качестве видеоизображений. Видеокодер 22 управляет видеоблоками в пределах отдельных видеокадров с тем, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или варьирующийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает в себя последовательность из одной или более вырезок. В стандарте ITU-T H.264, например, каждая вырезка включает в себя последовательность макроблоков, которые могут компоноваться в субблоки. Стандарт H.264 поддерживает внутреннее прогнозирование при различных размерах блоков для кодирования двумерного видео, таких как 16x16, 8x8, 4x4 для компонентов сигнала яркости и 8x8 для компонентов сигнала цветности, а также взаимное прогнозирование при различных размерах блоков, таких как 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 и 4x4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. Видеоблоки могут содержать блоки пиксельных данных или блоки коэффициентов преобразования, к примеру, после процесса преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичный процесс преобразования. Эти технологии могут быть расширены на трехмерное видео.
[0067] Двумерные макроблоки стандарта ITU-T H.264 могут быть расширены до трехмерного формата посредством кодирования информации глубины из карты глубины или параллактической карты вместе с ассоциированными компонентами сигнала яркости и сигнала цветности (т.е. компонентами текстуры) для этого видеокадра или вырезки. Параллактическое преобразование (также называемое преобразованием виртуального смещения или преобразованием смещения) смещает компоненты видов текстуры в пиксельном местоположении на основе функции угла от обзора и карты высоты в пиксельном местоположении. Видеокодер 22 может кодировать информацию глубины в качестве монохроматического видео.
[0068] Чтобы кодировать видеоблоки, к примеру, кодированный блок, видеокодер 22 выполняет внутреннее или взаимное прогнозирование для того, чтобы формировать один или более прогнозных блоков. Видеокодер 22 вычитает прогнозные блоки из исходных видеоблоков, которые должны быть кодированы, чтобы формировать остаточные блоки. Таким образом, остаточные блоки могут представлять попиксельные разности между кодируемыми блоками и прогнозными блоками. Видеокодер 22 может выполнять преобразование для остаточных блоков для того, чтобы формировать блоки коэффициентов преобразования. После технологий внутреннего или взаимного прогнозирующего кодирования и преобразования, видеокодер 22 может квантовать коэффициенты преобразования. Квантование, в общем, означает процесс, в котором коэффициенты квантуются, чтобы, возможно, уменьшать объем данных, используемый для того, чтобы представлять коэффициенты. После квантования, энтропийное кодирование может выполняться согласно технологии энтропийного кодирования, такой как контекстно-адаптивное кодирование переменной длины (CAVLC) или контекстно-адаптивное двоичное арифметическое кодирование (CABAC). Дополнительные подробности процесса кодирования, выполняемого посредством видеокодера 22, описываются ниже относительно фиг. 2.
[0069] В данный момент проводится работа, нацеленная на разработку нового стандарта кодирования видео, на сегодня называемого "стандартом высокоэффективного кодирования видео (HEVC)". Разрабатываемый стандарт также упоминается как H.265. Работа по стандартизации основана на модели устройства кодирования видео, называемой "тестовой моделью HEVC (HM)". HM предполагает несколько дополнительных возможностей устройств кодирования видео по сравнению с устройствами согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 включает в себя девять режимов внутреннего прогнозирующего кодирования, HM включает в себя целых тридцать три режима внутреннего прогнозирующего кодирования. HEVC может быть расширено таким образом, что оно поддерживает технологии информации заголовка вырезки, как описано в данном документе.
[0070] HM ссылается на блок видеоданных в качестве единицы кодирования (CU). Синтаксические данные в потоке битов могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей единицей кодирования с точки зрения числа пикселов. В общем, CU имеет назначение, аналогичное назначению макроблока H.264 за исключением того, что CU не имеет различия размера. Кодированный блок может представлять собой CU согласно HM-стандарту. Таким образом, CU может разбиваться на суб-CU. В общем, ссылки в этом раскрытии сущности на CU могут ссылаться на наибольшую единицу кодирования (LCU) изображения или суб-CU LCU. LCU может разбиваться на суб-CU, и каждая суб-CU может разбиваться на суб-CU. Синтаксические данные для потока битов могут задавать максимальное число раз, которое может разбиваться LCU, что называется "CU-глубиной". Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Это раскрытие сущности также использует термин "блок", чтобы ссылаться на любую из CU, единицы прогнозирования (PU) или единицы преобразования (TU).
[0071] LCU может быть ассоциирована со структурой данных в виде дерева квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует LCU. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб-CU. Каждый узел структуры данных в виде дерева квадрантов может включать в себя синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть заданы рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU.
[0072] CU, которая не разбивается, может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет всю или часть соответствующей CU и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего прогнозирования для PU. В качестве другого примера, когда PU кодируется во взаимном режиме, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Вектор движения также может обрабатываться как имеющий различные разрешения для компонентов видов текстуры и компонентов видов глубины. Данные для CU, задающей PU, также могут описывать, например, сегментирование CU на одну или более PU. Режимы секционирования могут отличаться между тем, является CU некодированной, кодированной в режиме внутреннего прогнозирования или кодированной в режиме взаимного прогнозирования.
[0073] CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). После прогнозирования с использованием PU, видеокодер 22 может вычислять остаточное значение для части CU, соответствующей PU. Остаточное значение может быть преобразовано, сканировано и квантовано. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше соответствующих PU для идентичной CU. В некоторых примерах, максимальный размер TU может соответствовать размеру соответствующей CU.
[0074] Как отмечено выше, внутреннее прогнозирование включает в себя прогнозирование PU текущей CU изображения из ранее кодированных CU идентичного изображения. Более конкретно, видеокодер 22 может внутренне прогнозировать текущую CU изображения с использованием конкретного режима внутреннего прогнозирования. HM-кодер может быть сконфигурирован с тридцатью тремя режимами внутреннего прогнозирования. Следовательно, для того чтобы поддерживать преобразование "один-к-одному" между режимами направленного внутреннего прогнозирования и направленными преобразованиями, HM-кодеры и декодеры должны сохранять 66 матриц для каждого поддерживаемого размера преобразования. Кроме того, размеры блоков, для которых поддерживаются все тридцать три режима внутреннего прогнозирования, могут быть относительно большими блоками, например, 32x32 пикселов, 64x64 пикселов или даже больше.
[0075] В целевом устройстве 16 видеодекодер 28 принимает кодированные видеоданные 8. Видеодекодер 28 энтропийно декодирует принятые кодированные видеоданные 8, к примеру, кодированный блок, согласно технологии энтропийного кодирования, такой как CAVLC или CABAC, чтобы получать квантованные коэффициенты. Видеодекодер 28 применяет функции обратного квантования (деквантования) и обратного преобразования для того, чтобы восстанавливать остаточный блок в пиксельной области. Видеодекодер 28 также формирует прогнозный блок на основе управляющей информации или синтаксической информации (к примеру, режим кодирования, векторы движения, синтаксис, который задает коэффициенты фильтрации, и т.п.), включенной в кодированные видеоданные. Видеодекодер 28 вычисляет сумму прогнозного блока и восстановленного остаточного блока с тем, чтобы формировать восстановленный видеоблок для отображения. Дополнительные подробности примерного процесса декодирования, выполняемого посредством видеодекодера 28, описываются ниже относительно фиг. 5.
[0076] Как описано в данном документе, Y может представлять яркость, Cb и Cr могут представлять два различных значения цветности трехмерного цветового пространства YCbCr (например, синий и красный оттенки), и D может представлять информацию глубины. В некоторых примерах, каждое пиксельное местоположение может фактически задавать три пиксельных значения для трехмерного цветового пространства и одно пиксельное значение для глубины пиксельного местоположения. В других примерах, могут быть различные числа компонентов сигнала яркости в расчете на компонент сигнала цветности. Например, может быть четыре предусмотрено компонента сигнала яркости в расчете на компонент сигнала цветности. Дополнительно, компоненты глубины и текстуры могут иметь различные разрешения. В данном примере, может не быть взаимосвязи "один-к-одному" между компонентами видов текстуры (например, компонентами сигнала яркости) и компонентами видов глубины. Тем не менее, технологии этого раскрытия сущности, могут означать прогнозирование относительно одной размерности для простоты. В степени, в которой технологии описываются относительно пиксельных значений в одной размерности, аналогичные технологии могут быть расширены на другие размерности. В частности, в соответствии с одним аспектом этого раскрытия сущности, видеокодер 22 и/или видеодекодер 28 могут получать блок пикселов, при этом блок пикселов включает в себя компоненты видов текстуры и компоненты видов глубины.
[0077] В некоторых примерах, видеокодер 22 и видеодекодер 28 могут использовать одну или более технологий интерполяционной фильтрации в ходе компенсации движения. Иными словами, видеокодер 22 и/или видеодекодер 28 могут применять интерполяционный фильтр для поддержки фильтра, содержащего наборы полноцелочисленнопиксельных позиций.
[0078] Видеодекодер 28 целевого устройства 16 принимает один или более кодированных блоков как часть кодированного потока видеобитов вместе с дополнительной информацией, включающей в себя элементы синтаксиса, связанные с компонентами видов текстуры. Видеодекодер 28 может подготавливать посредством рендеринга видеоданные для трехмерного воспроизведения на основе кодированного блока 8 и элементов синтаксиса. В соответствии с технологиями этого раскрытия сущности и как подробнее поясняется ниже, элементы синтаксиса, передаваемые в служебных сигналах для компонентов 4 видов текстуры, могут быть использованы для того, чтобы прогнозировать элементы синтаксиса для компонентов 6 видов глубины. Элементы синтаксиса могут быть переданы в служебных сигналах в заголовке вырезки для компонентов 4 видов текстуры. Соответствующие элементы синтаксиса для компонентов 6 видов глубины могут быть определены из связанных элементов синтаксиса для компонентов 4 видов текстуры.
[0079] Некоторые элементы синтаксиса для компонентов 6 видов глубины могут передаваться в служебных сигналах в заголовке вырезки для компонентов 4 видов текстуры. Альтернативно, некоторые элементы синтаксиса для компонентов 4 видов текстуры могут передаваться в служебных сигналах в заголовке вырезки для компонентов 6 видов глубины. В одном примере, видеокодер 22 исходного устройства 12 может быть сконфигурирован с возможностью прогнозировать элемент синтаксиса для заголовка вырезки текущего вида из заголовка опорной вырезки и кодировать текущий вид на основе прогнозных элементов синтаксиса. В другом примере раскрытия сущности, видеодекодер 30 целевого устройства 16 может быть сконфигурирован с возможностью прогнозировать элемент синтаксиса для заголовка вырезки текущего вида из заголовка опорной вырезки и кодировать текущий вид на основе прогнозных элементов синтаксиса.
[0080] Технологии этого раскрытия сущности описывают 3DV-расширение заголовка вырезки. Технологии могут применяться для того, чтобы прогнозировать элементы синтаксиса для компонента вида глубины из элементов синтаксиса, сохраненных в заголовке вырезки для совместно размещенных компонентов видов текстуры идентичного вида и идентичной единицы доступа. Единица доступа может представлять собой единицу уровня абстракции сети (NAL), которая включает в себя компоненты видов текстуры и соответствующие компоненты видов глубины. Прогнозирование элементов синтаксиса может управляться на уровне заголовка вырезки. Некоторые элементы синтаксиса в заголовке вырезки либо компонента вида глубины, либо компонента вида текстуры могут быть прогнозированы из заголовка опорной вырезки.
[0081] В одном примере, заголовок опорной вырезки предоставляется либо из компонента вида в идентичном виде единицы доступа, идентичной единице доступа прогнозных элементов синтаксиса, либо из совместимого с усовершенствованным кодированием видео (AVC) базового вида текстуры идентичной единицы доступа. Альтернативно, заголовок опорной вырезки компонента вида глубины представляет собой либо заголовок вырезки компонента вида текстуры идентичного вида, либо заголовок вырезки компонента вида глубины первого вида в порядке декодирования. Идентификатор индекса порядка в дельта-виде может передаваться в служебных сигналах, чтобы указывать то, из какого вида прогнозируется заголовок вырезки в идентичной единице доступа. В дополнительных примерах, может передаваться в служебных сигналах флаг, который указывает то, предоставляется заголовок опорной вырезки из компонента вида глубины или из компонента вида текстуры. Конкретный вид также может передаваться в служебных сигналах в кодированном потоке битов.
[0082] Другие расширения для прогнозирования заголовков вырезок могут включать в себя размещение элементов синтаксиса заголовка вырезки в порядке, отличном от порядка, используемого для элементов синтаксиса заголовка вырезки в заголовке AVC-вырезки. В других примерах, флаг управления в каждом 3DV-расширении заголовка вырезки может указывать то, прогнозируются или нет slice_type, num_ref_idx_l0_active_minus1, num_ref_idx_l1_active_minus1 и модификация списков опорных изображений. В некоторых технологиях, когда активируется прогнозирование модификации списков опорных изображений, модификация списков опорных изображений может быть уточнена на основе новой введенной синтаксической таблицы для исключения или вставки в списки опорных изображений.
[0083] В некоторых примерах, вышеописанные флаги или другие индикаторы передаются в служебных сигналах только в 3DV-расширении заголовка вырезки. После того, как указан компонент вида глубины или текстуры, идентификатор вырезки для вырезки данного компонента вида в единице доступа может дополнительно передаваться в служебных сигналах. Кроме того, идентификатор вырезки может передаваться в служебных сигналах для каждой вырезки каждого компонента вида либо в заголовке вырезки, либо в соответствующем заголовке единицы уровня абстракции сети (NAL).
[0084] Фиг. 2 является блок-схемой, подробнее иллюстрирующей пример видеокодера 22 по фиг. 1. Видеокодер 22 кодирует единицы блоков, которые передают в служебных сигналах элементы синтаксиса для компонентов видов текстуры, которые могут быть использованы для того, чтобы прогнозировать элементы синтаксиса для компонентов видов глубины, согласно технологиям этого раскрытия сущности. Видеокодер 22 является одним примером специализированного компьютерного видеоустройства или аппарата, упоминаемого в данном документе как "кодер". Как показано на фиг. 2, видеокодер 22 соответствует видеокодеру 22 исходного устройства 12. Тем не менее, в других примерах, видеокодер 22 может соответствовать другому устройству. В дополнительных примерах, другие модули (такие как, например, другие кодеры/декодеры (кодеки)) также могут осуществлять технологии, аналогичные технологиям, осуществляемым посредством видеокодера 22.
[0085] Видеокодер 22 может выполнять, по меньшей мере, одно из внутреннего и взаимного кодирования блоков в пределах видеокадров, хотя компоненты внутреннего кодирования не показаны на фиг. 2 для простоты иллюстрации. Внутреннее кодирование основано на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре. Взаимное кодирование основано на временном прогнозировании, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может означать режим пространственного сжатия. Взаимные режимы, к примеру, прогнозирование (P-режим) или двунаправленный (B-режим), могут означать режимы временного сжатия. Технологии этого раскрытия сущности применяются в ходе взаимного кодирования и внутреннего кодирования. Тем не менее, для простоты иллюстрации, модули внутреннего кодирования, такие как модуль пространственного прогнозирования, не иллюстрируются на фиг. 2.
[0086] Как показано на фиг. 2, видеокодер 22 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В одном примере, видеокодер 22 принимает компоненты 4 видов текстуры и компоненты 6 видов глубины. В другом примере, видеокодер принимает вид 2 из видеоисточника 20.
[0087] В примере по фиг. 2, видеокодер 22 включает в себя процессор 32 прогнозирования для единиц прогнозирующего кодирования (MCU), модуль 33 обработки многовидового видео плюс глубины (MVD), запоминающее устройство 34, первый сумматор 48, процессор 38 преобразования, модуль 40 квантования и модуль 46 энтропийного кодирования. Для восстановления видеоблоков видеокодер 22 также включает в себя модуль 42 обратного квантования, процессор 44 обратного преобразования, второй сумматор 51 и модуль 43 удаления блочности. Модуль 43 удаления блочности является фильтром удаления блочности, который фильтрует границы блоков для того, чтобы удалять артефакты блочности из восстановленного видео. Если включен в видеокодер 22, модуль 43 удаления блочности типично должен фильтровать вывод второго сумматора 51. Модуль 43 удаления блочности может определять информацию удаления блочности для одного или более компонентов видов текстуры. Модуль 43 удаления блочности также может определять информацию удаления блочности для компонента карты глубины. В некоторых примерах, информация удаления блочности для одного или более компонентов текстуры может отличаться от информации удаления блочности для компонента карты глубины. В одном примере, как показано на фиг. 2, процессор 38 преобразования представляет функциональный блок, в противоположность "TU" в терминах HEVC.
[0088] Модуль 33 обработки многовидового видео плюс глубины (MVD) принимает один или более видеоблоков (помечены как "видеоблок" на фиг. 2) содержащих компоненты текстуры и информацию глубины, к примеру, компоненты 4 видов текстуры и компоненты 6 видов глубины. MVD-модуль 33 предоставляет функциональность для видеокодера 22 для того, чтобы кодировать компоненты глубины в единице блока. MVD-модуль 33 отправляет компоненты видов текстуры и компоненты видов глубины, комбинированными или по отдельности, в процессор 32 прогнозирования в формате, который позволяет процессору 32 прогнозирования обрабатывать информацию глубины. MVD-модуль 33 также может передавать в служебных сигналах в процессор 38 преобразования то, что компоненты видов глубины включаются в видеоблок. В других примерах, каждый модуль видеокодера 22, к примеру, процессор 32 прогнозирования, процессор 38 преобразования, модуль 40 квантования, модуль 46 энтропийного кодирования и т.д., содержит функциональность для того, чтобы обрабатывать информацию глубины в дополнение к компонентам видов текстуры.
[0089] В общем, видеокодер 22 кодирует информацию глубины способом, аналогичным информации цветности, так что модуль 37 компенсации движения сконфигурирован с возможностью многократно использовать векторы движения, вычисленные для компонента сигнала яркости блока при вычислении прогнозированного значения для компонента глубины идентичного блока. Аналогично, модуль внутреннего прогнозирования видеокодера 22 может быть сконфигурирован с возможностью использовать режим внутреннего прогнозирования, выбранный для компонента сигнала яркости (т.е. на основе анализа компонента сигнала яркости), при кодировании компонента вида глубины с использованием внутреннего прогнозирования.
[0090] Процессор 32 прогнозирования включает в себя модуль 35 оценки движения (ME) и модуль 37 компенсации движения (MC). Процессор 32 прогнозирования прогнозирует информацию глубины для пиксельных местоположений, а также для компонентов текстуры. Один или более интерполяционных фильтров 39 (упоминаемых в данном документе в качестве "фильтра 39") могут быть включены в процессор 32 прогнозирования и могут активироваться посредством одного или обоих из ME-модуля 35 и MC-модуля 37 для того, чтобы выполнять интерполяцию как часть оценки движения и/или компенсации движения. Интерполяционный фильтр 39 может фактически представлять множество различных фильтров, чтобы упрощать множество различных типов интерполяционной и аналогичной интерполяционной фильтрации. Таким образом, процессор 32 прогнозирования может включать в себя множество интерполяционных или аналогичных интерполяционным фильтров.
[0091] В ходе процесса кодирования видеокодер 22 принимает видеоблок, который должен кодироваться (помечен как "видеоблок" на фиг. 2), и процессор 32 прогнозирования выполняет кодирование с взаимным прогнозированием для того, чтобы формировать прогнозный блок (помечен как "прогнозный блок" на фиг. 2). Прогнозный блок включает в себя как компоненты видов текстуры, так и информацию видов глубины. В частности, ME-модуль 35 может выполнять оценку движения для того, чтобы идентифицировать прогнозный блок в запоминающем устройстве 34, и MC-модуль 37 может выполнять компенсацию движения для того, чтобы формировать прогнозный блок.
[0092] Оценка движения типично считается процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение прогнозного блока в пределах прогнозного или опорного кадра (или другой кодированной единицы, к примеру, вырезки) относительно блока, который должен быть кодирован в пределах текущего кадра (или другой кодированной единицы). Вектор движения может иметь полноцелочисленную или субцелочисленную пиксельную точность. Например, как горизонтальный компонент, так и вертикальный компонент вектора движения могут иметь соответствующие полноцелочисленные компоненты и субцелочисленные компоненты. Опорный кадр (или часть кадра) может временно находиться до или после видеокадра (или части видеокадра), которому принадлежит текущий видеоблок. Компенсация движения типично считается процессом выборки или формирования прогнозного блока из запоминающего устройства 34, который может включать в себя интерполяцию или иное формирование фильтрованных прогнозирующих данных на основе вектора движения, определенного посредством оценки движения.
[0093] ME-модуль 35 вычисляет, по меньшей мере, один вектор движения для видеоблока, который должен кодироваться, посредством сравнения видеоблока с опорными блоками одного или более опорных кадров (к примеру, предыдущего и/или последующего кадра). Данные для опорных кадров могут быть сохранены в запоминающем устройстве 34. ME-модуль 35 может выполнять оценку движения с дробнопиксельной точностью, иногда называемой дробнопиксельной, дробнопельной, субцелочисленной или субпиксельной оценкой движения. При дробнопиксельной оценке движения ME-модуль 35 вычисляет вектор движения, который указывает смещение в местоположение, отличное от целопиксельного местоположения. Таким образом, вектор движения может иметь дробнопиксельную точность, например, точность в одну вторую пиксела, точность в одну четвертую пиксела, точность в одну восьмую пиксела или другие дробнопиксельные точности. Таким образом, дробнопиксельная оценка движения дает возможность процессору 32 прогнозирования оценивать движение с более высокой точностью, чем целопиксельные (или полнопиксельные) местоположения, и в силу этого процессор 32 прогнозирования формирует более точный прогнозный блок. Дробнопиксельная оценка движения дает возможность процессору 32 прогнозирования прогнозировать информацию глубины при первом разрешении и прогнозировать компоненты текстуры при втором разрешении. Например, компоненты текстуры прогнозируются с полнопиксельной точностью, тогда как информация глубины прогнозируется с точностью в одну вторую пиксела. В других примерах, другие разрешения вектора движения могут использоваться для информации глубины и компонентов текстуры.
[0094] ME-модуль 35 может активировать один или более фильтров 39 для всех необходимых интерполяций в ходе процесса оценки движения. В некоторых примерах, запоминающее устройство 34 может сохранять интерполированные значения для субцелочисленных пикселов, которые могут быть вычислены, например, посредством сумматора 51 с использованием фильтров 39. Например, сумматор 51 может применять фильтры 39 к восстановленным блокам, которые должны быть сохранены в запоминающем устройстве 34.
[0095] После того как процессор 32 прогнозирования формирует прогнозный блок, видеокодер 22 формирует остаточный видеоблок (помечен как "остаточный блок" на фиг. 2) посредством вычитания прогнозного блока из кодируемого исходного видеоблока. Это вычитание может выполняться между компонентами текстуры в исходном видеоблоке и компонентами текстуры в прогнозном блоке, а также для информации глубины в исходном видеоблоке или карты глубины из информации глубины в прогнозном блоке. Сумматор 48 представляет компонент или компоненты, которые выполняют эту операцию вычитания.
[0096] Процессор 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Следует понимать, что процессор 38 преобразования представляет компонент видеокодера 22, который применяет преобразование к остаточным коэффициентам блока видеоданных, в отличие от TU CU, как задано посредством HEVC. Процессор 38 преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые являются концептуально аналогичными DCT. Такие преобразования включают в себя, например, направленные преобразования (к примеру, преобразования на основе теоремы Карунена-Лоэва), вейвлет-преобразования, целочисленные преобразования, подполосные преобразования или другие типы преобразований. В любом случае, процессор 38 преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Процессор 38 преобразования может применять идентичный тип преобразования как к компонентам текстуры, так и к информации глубины в соответствующих остаточных блоках. Предусмотрены отдельные остаточные блоки для каждого компонента текстуры и глубины. Преобразование преобразует остаточную информацию из пиксельной области в частотную область.
[0097] Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Модуль 40 квантования может квантовать остаток кодирования изображений глубины. После квантования, модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 46 энтропийного кодирования может выполнять CAVLC, CABAC или другую технологию энтропийного кодирования.
[0098] Модуль 46 энтропийного кодирования также может кодировать один или более векторов движения и поддерживать информацию, полученную из процессора 32 прогнозирования или другого компонента видеокодера 22, такого как модуль 40 квантования. Один или более прогнозных элементов синтаксиса могут включать в себя режим кодирования, данные для одного или более векторов движения (например, горизонтальные и вертикальные компоненты, идентификаторы опорных списков, индексы списков и/или служебную информацию по разрешению векторов движения), индикатор относительно используемой технологии интерполяции, набор коэффициентов фильтрации, индикатор относительного разрешения изображения глубины по сравнению с разрешением компонента сигнала яркости, матрицу квантования для остатка кодирования изображений глубины, информацию удаления блочности для изображения глубины или другую информацию, ассоциированную с формированием прогнозного блока. Эти прогнозные элементы синтаксиса могут быть включены на уровне последовательности или на уровне изображения.
[0099] Один или более элементов синтаксиса также могут включать в себя разность параметров квантования (QP) между компонентом сигнала яркости и компонентом глубины. QP-разность может быть передана в служебных сигналах на уровне вырезки и может быть включена в заголовок вырезки для компонентов видов текстуры. Другие элементы синтаксиса также могут быть переданы в служебных сигналах на уровне единиц кодированных блоков, включающие в себя шаблон кодированного блока для компонента вида глубины, дельта-QP для компонента вида глубины, разность векторов движения или другую информацию, ассоциированную с формированием прогнозного блока. Разность векторов движения может быть передана в служебных сигналах в качестве дельта-значения между целевым вектором движения и вектором движения компонентов текстуры или в качестве дельта-значения между целевым вектором движения (т.е. вектором движения кодируемого блока) и предиктором из соседних векторов движения для блока (например, PU CU). После энтропийного кодирования посредством модуля 46 энтропийного кодирования, кодированное видео и элементы синтаксиса могут быть переданы в другое устройство или заархивированы (например, в запоминающем устройстве 34) для последующей передачи или извлечения.
[0100] Модуль 42 обратного квантования и процессор 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельной области, к примеру, для последующего использования в качестве опорного блока. Восстановленный остаточный блок (помечен как "восстановленный остаточный блок" на фиг. 2) может представлять восстановленную версию остаточного блока, отправленного в процессор 38 преобразования. Восстановленный остаточный блок может отличаться от остаточного блока, сформированного посредством сумматора 48, вследствие потери детальности, вызываемой посредством операций квантования и обратного квантования. Сумматор 51 суммирует восстановленный остаточный блок с блоком прогнозирования с компенсацией движения, сформированным посредством процессора 32 прогнозирования, для того чтобы формировать восстановленный видеоблок для хранения в запоминающем устройстве 34. Восстановленный видеоблок может использоваться посредством процессора 32 прогнозирования в качестве опорного блока, который может использоваться для того, чтобы затем кодировать единицу блока в последующем видеокадре или последующей кодированной единице.
[0101] Таким образом, видеокодер 22 представляет пример видеокодера, сконфигурированного с возможностью принимать единицу кодированного блока, содержащую компонент вида, указывающий вид изображения, при этом компонент вида содержит один или более компонентов видов текстуры и компонент вида глубины, формировать заголовок вырезки текстуры для одного или более компонентов видов текстуры, включающих в себя элементы синтаксиса текстуры, при этом элементы синтаксиса глубины для компонента вида глубины могут быть определены из элементов синтаксиса текстуры в заголовке вырезки текстуры.
[0102] В некоторых случаях, информация, связанная с кодированием компонентов видов текстуры и компонентов видов глубины, указывается в качестве одного или более элементов синтаксиса для включения в кодированный поток битов. В некоторых примерах, заголовок вырезки глубины содержит элементы синтаксиса, включающие в себя, по меньшей мере, одно из местоположения адреса вырезки стартового макроблока, типа вырезки, набора параметров изображения (PPS), который должен быть использован, дельта-QP между начальным QP вырезки и QP, передаваемым в служебных сигналах в PPS, порядка опорных изображений (представленного в качестве frame_num) и порядка отображения текущего изображения (POC). Заголовок вырезки глубины также может содержать, по меньшей мере, одно из составления списков опорных изображений и связанных элементов синтаксиса, операции управления запоминающим устройством и связанных элементов синтаксиса и взвешенного прогнозирования и связанных элементов синтаксиса.
[0103] Фиг. 3 является принципиальной схемой, иллюстрирующей примерный порядок многовидового декодирования согласно технологиям настоящего раскрытия сущности. Типичный порядок декодирования MVC (т.е. порядок потока битов) показан на фиг. 3. Компоновка порядка декодирования упоминается как кодирование сначала по времени. Каждая единица доступа задается так, что она содержит кодированные изображения всех видов для одного выходного момента времени. Заметим, что порядок декодирования единиц доступа может не быть идентичным порядку вывода или отображения.
[0104] Фиг. 4 является схемой одного примера структуры MVC-прогнозирования для кодирования многовидового видео. MVC является расширением H.264/AVC. Фиг. 4 иллюстрирует типичную структуру MVC-прогнозирования (включающую в себя как межкадровое прогнозирование в пределах каждого вида, так и межвидовое прогнозирование) для кодирования многовидового видео. Структура MVC-прогнозирования включает в себя как межкадровое прогнозирование в пределах каждого вида, так и межвидовое прогнозирование. На фиг. 4, прогнозирования указываются посредством стрелок, при этом указываемый объект использует указывающий объект для опорного элемента прогнозирования. Структура MVC-прогнозирования по фиг. 4 может быть использована в сочетании с компоновкой порядка первого по времени декодирования. В порядке первого по времени декодирования каждая единица доступа может быть задана так, что она содержит кодированные изображения всех видов для одного выходного момента времени. Порядок декодирования единиц доступа может не быть идентичным порядку вывода или отображения.
[0105] В MVC, межвидовое прогнозирование поддерживается посредством компенсации движения на основе диспаратности, которая использует синтаксис компенсации движения H.264/AVC, но дает возможность размещения изображения в другом виде в качестве опорного изображения. Кодирование двух видов также может поддерживаться посредством MVC. MVC-кодер может получать более двух представлений в качестве трехмерного видеоввода, и MVC-декодер может декодировать многовидовое представление. Модуль рендеринга с MVC-декодером может декодировать трехмерный видеоконтент с несколькими видами.
[0106] Изображения в идентичной единице доступа (т.е. с идентичным моментом времени) могут межвидово прогнозироваться в MVC. При кодировании изображения в одном из небазовых видов, изображение может добавляться в список опорных изображений, если оно находится в другом виде, но в идентичный момент времени. Опорное изображение межвидового прогнозирования может быть помещено в любую позицию списка опорных изображений, точно так же, как любое опорное изображение взаимного прогнозирования.
[0107] Как показано на фиг. 4, компонент вида может использовать компоненты вида в других видах для ссылки. В MVC, межвидовое прогнозирование может быть реализовано так, как будто компонент вида в другом виде является опорным элементом взаимного прогнозирования. Потенциальные межвидовые опорные элементы могут быть переданы в служебных сигналах в MVC-расширении набора параметров последовательности (SPS). Потенциальные межвидовые опорные элементы могут быть модифицированы посредством процесса составления списков опорных изображений, который обеспечивает гибкое упорядочение опорных элементов взаимного прогнозирования или межвидового прогнозирования. Таблица 1 ниже показывает пример SPS MVC-расширения.
Таблица 1
Пример SPS MVC-расширения
seq_parameter_set_mvc_extension(){
C
Дескриптор
num_views_minus1
0
ue(v)
for(i=0; i<=num_views_minus1; i++)
view_id[i]
0
ue(v)
for(i=1; i<=num_views_minus1; i++){
num_anchor_refs_l0[i]
0
ue(v)
for(j=0; j<num_anchor_refs_l0[i]; j++)
anchor_ref_l0[i][j]
0
ue(v)
num_anchor_refs_l1[i]
0
ue(v)
for(j=0; j<num_anchor_refs_l1[i]; j++)
anchor_ref_l1[i][j]
0
ue(v)
}
for(i=1; i<=num_views_minus1; i++){
num_non_anchor_refs_l0[i]
0
ue(v)
for(j=0; j<num_non_anchor_refs_l0[i]; j++)
non_anchor_ref_l0[i][j]
0
ue(v)
num_non_anchor_refs_l1[i]
0
ue(v)
for(j=0; j<num_non_anchor_refs_l1[i]; j++)
non_anchor_ref_l1[i][j]
0
ue(v)
}
num_level_values_signalled_minus1
0
ue(v)
for(i=0; i<=num_level_values_signalled_minus1; i++){
level_idc[i]
0
u(8)
num_applicable_ops_minus1[i]
0
ue(v)
for(j=0; j<=num_applicable_ops_minus1[i]; j++){
applicable_op_temporal_id[ i ][ j ]
0
u(3)
applicable_op_num_target_views_minus1[i][j]
0
ue(v)
for(k=0; k<=applicable_op_num_target_views_minus1[i] [j]; k++)
applicable_op_target_view_id[i][j][k]
0
ue(v)
applicable_op_num_views_minus1[i][j]
0
ue(v)
}
}
}
[0108] Напротив, в HEVC заголовок вырезки соответствует принципу проектирования, аналогичному принципу проектирования из H.264/AVC. Концептуально, как HEVC, так и H.264/AVC включают в себя уровень кодирования видео (VCL) и уровень абстракции сети (NAL). VCL включает в себя всю низкоуровневую обработку сигналов, включающую в себя сегментацию на блоки, взаимное и внутреннее прогнозирование, кодирование на основе преобразования, энтропийное кодирование, контурную фильтрацию и т. п. NAL инкапсулирует кодированные данные и ассоциированную информацию в NAL-единицы, формат, который является оптимизированным для систем передачи видео и видеоприложений. Дополнительно, заголовок HEVC-вырезки может содержать синтаксис параметров адаптивного контурного фильтра (ALF) в текущих технических требованиях HEVC. В некоторых примерах, заголовок вырезки глубины содержит один или более параметров адаптивного контурного фильтра.
[0109] Аналогично H.264/AVC, HEVC-поток битов включает в себя определенное число единиц доступа, причем каждая единица доступа включает в себя кодированные данные, ассоциированные с изображением, которое имеет различное время захвата или представления.
[0110] Каждая единица доступа разделяется на NAL-единицы, включающие в себя одну или более VCL NAL-единиц (т.е. кодированных NAL-единиц вырезок) и ноль или более не-VCL NAL-единиц, например, NAL-единиц наборов параметров или NAL-единиц дополнительной улучшающей информации (SEI). Каждая NAL-единица включает в себя заголовок NAL-единицы и рабочие данные NAL-единицы. Доступ к информации в заголовке NAL-единицы может осуществляться посредством медиашлюзов, также известных как мультимедийно-ориентированные сетевые элементы (MANE), для интеллектуальных мультимедийно-ориентированных операций для потока, таких как адаптация потока.
[0111] Отличие HEVC по сравнению с H.264/AVC заключается в структуре кодирования в изображении. В HEVC, каждое изображение разделяется на древовидные блоки вплоть до выборок сигнала яркости 64x64. Древовидные блоки могут рекурсивно разбиваться на меньшие единицы кодирования (CU) с использованием общей структуры сегментации на дерево квадрантов. CU дополнительно могут разбиваться на единицы прогнозирования (PU) и единицы преобразования (TU). Единицы прогнозирования (PU) могут использоваться для внутреннего и взаимного прогнозирования. Единицы преобразования могут быть заданы для преобразования и квантования. HEVC включает в себя целочисленные преобразования для определенного числа TU-размеров.
[0112] Прогнозирующе кодированные изображения могут включать в себя унипрогнозированные и бипрогнозированные вырезки. Гибкость в создании структур кодирования изображений является примерно сравнимой с H.264/AVC. VCL в HEVC-кодере формирует (и в HEVC-декодере потребляет) синтаксические структуры, спроектированные с возможностью адаптации к размерам максимальных единиц передачи (MTU), обычно применяемым в IP-сетях, независимо от размера кодированного изображения. Сегментация изображений может осуществляться через вырезки. Закладывается принцип "вырезок со сверхвысокой степенью детализации" (FGS), который дает возможность создания границ вырезки в древовидном блоке.
[0113] Аналогично H.264/AVC, внутриконтурная фильтрация для удаления блочности может применяться к восстановленному изображению. HEVC также включает в себя два внутриконтурных фильтра, которые могут применяться после фильтрации для удаления блочности: дискретизированное адаптивное смещение (SAO) и адаптивный контурный фильтр (ALF).
[0114] Другое отличие HEVC по сравнению с H.264/AVC заключается в доступности инструментальных средств кодирования на основе VCL, которые спроектированы с возможностью обеспечивать обработку для высокоуровневых параллельных архитектур. Обычные вырезки, как в HEVC, так и в H.264/AVC, могут использоваться для цели параллельной обработки. Помимо обычных вырезок, доступны три новых инструментальных средства параллельной обработки, а именно, энтропийные вырезки, мозаичные фрагменты и волновая параллельная обработка.
[0115] Разрабатываемый в настоящее время стандарт высокоэффективного кодирования видео (HEVC) также использует заголовки вырезок. В HEVC, заголовок вырезки соответствует принципу проектирования, идентичному принципу проектирования из H.264/AVC. Заголовок вырезки в HEVC также содержит синтаксис параметров адаптивного контурного фильтра (ALF). Тем не менее, неочевидно то, должны или нет параметры адаптивного контурного фильтра помещаться в заголовок вырезки.
[0116] Текущее составление заголовка вырезки в H.264/MVC и HEVC представляет некоторые недостатки. Например, некоторые элементы синтаксиса не являются облегченными, но обеспечение возможности использования технологий прогнозирования для всех "необлегченных" элементов синтаксиса может не быть преимущественным. Например, прогнозирование всей синтаксической таблицы для модификации списков опорных изображений может не быть преимущественным. Помимо этого, прогнозирование заголовков вырезок для идентичных компонентов видов не всегда может обеспечивать требуемую эффективность.
[0117] В контексте технологий этого раскрытия сущности, прогнозирование синтаксиса для элементов синтаксиса заголовка вырезки может влечь за собой копирование или вставку элементов синтаксиса из другого заголовка вырезки (например, заголовка опорной вырезки) для использования посредством заголовка текущей вырезки. Элементы синтаксиса, которые должны копироваться или вставляться, могут быть обозначены посредством флага или индекса. Помимо этого, флаг или индекс может обозначать заголовок опорной вырезки.
[0118] В 3DV-кодеке, компонент вида для каждого вида в конкретный момент времени может включать в себя компонент вида текстуры и компонент вида глубины. Структура вырезки может использоваться для целей обеспечения устойчивости к ошибкам. Тем не менее, компонент вида глубины может быть значимым только тогда, когда соответствующий компонент вида текстуры корректно принимается. При включении всех элементов синтаксиса для компонента вида глубины, заголовок вырезки для NAL-единицы компонента вида глубины может быть относительно большим. Размер заголовка вырезки глубины может быть сокращен посредством прогнозирования некоторых элементов синтаксиса из элементов синтаксиса в заголовке вырезки текстуры для компонентов видов текстуры. Кроме того, размер заголовка вырезки для вида может быть уменьшен посредством прогнозирования некоторых элементов синтаксиса из элементов синтаксиса другого вида.
[0119] Поток битов может быть использован для того, чтобы передавать единицы блоков многовидового видео плюс глубины и элементы синтаксиса, например, между исходным устройством 12 и целевым устройством 16 по фиг. 1. Поток битов может соответствовать стандарту кодирования ITU H.264/AVC и, в частности, подчиняется структуре потока битов для кодирования многовидового видео (MVC). Иными словами, в некоторых примерах, поток битов соответствует MVC-расширению H.264/AVC. В других примерах, поток битов соответствует многовидовому расширению HEVC или многовидовому расширению другого стандарта. В еще одних других примерах, используются другие стандарты кодирования.
[0120] Типичная компоновка порядка MVC-потока битов (порядка декодирования) представляет собой кодирование сначала по времени. Каждая единица доступа задается так, что она содержит кодированные изображения всех видов для одного выходного момента времени. Порядок декодирования единиц доступа может быть идентичным или не идентичным порядку вывода или отображения. Типично, MVC-прогнозирование может включать в себя как межкадровое прогнозирование в пределах каждого вида, так и межвидовое прогнозирование. В MVC, межвидовое прогнозирование может поддерживаться посредством компенсации движения на основе диспаратности, которая использует синтаксис компенсации движения H.264/AVC, но дает возможность использования изображения в другом виде в качестве опорного изображения.
[0121] Кодирование двух видов поддерживается посредством MVC. Одно из преимуществ MVC заключается в том, что MVC-кодер может получать более двух представлений в качестве трехмерного видеоввода, и MVC-декодер может декодировать два вида в многовидовое представление. Таким образом, модуль рендеринга с MVC-декодером может обрабатывать трехмерный видеоконтент как имеющий несколько видов. Ранее, MVC не обрабатывал ввод карту глубины с вводимыми, аналогично H.264/AVC, сообщениями с дополнительной улучшающей информацией (SEI) (стереоинформацией или пространственными перемежающимися изображениями).
[0122] В стандарте H.264/AVC задаются единицы уровня абстракции сети (NAL), чтобы предоставлять "оптимизированное для использования в сети" представление видео, нацеленное на такие варианты применения, как видеотелефония, хранение данных или потоковое видео. NAL-единицы могут классифицироваться на NAL-единицы уровня кодирования видео (VCL) и не-VCL NAL-единицы. VCL-единицы могут содержать основной механизм сжатия и содержать уровни блока, макроблока (MB) и вырезки. Другие NAL-единицы являются не-VCL NAL-единицами.
[0123] В примере кодирования двумерного видео каждая NAL-единица содержит однобайтовый заголовок NAL-единицы и рабочие данные варьирующегося размера. Пять битов используются для того, чтобы указывать тип NAL-единицы. Три бита используются для nal_ref_idc, который указывает то, насколько важной является NAL-единица с точки зрения возможности обращения посредством других изображений (NAL-единиц). Например, задание nal_ref_idc равным 0 означает то, что NAL-единица не используется для взаимного прогнозирования. Поскольку H.264/AVC расширяется так, что он включает в себя кодирование трехмерного видео, к примеру, стандарт масштабируемого кодирования видео (SVC), заголовок NAL может быть аналогичным заголовку двумерного сценария. Например, один или более битов в заголовке NAL-единицы используются для того, чтобы идентифицировать то, что NAL-единица является четырехкомпонентной NAL-единицей.
[0124] Заголовки NAL-единиц также могут использоваться для MVC NAL-единиц. Тем не менее, в MVC, структура заголовка NAL-единицы может сохраняться за исключением NAL-единиц префикса и MVC-кодированных NAL-единиц вырезок. MVC-кодированные NAL-единицы вырезок могут содержать четырехбайтовый заголовок и рабочие данные NAL-единицы, которые могут включать в себя единицу блока, такую как кодированный блок 8 по фиг. 1. Элементы синтаксиса в заголовке MVC NAL-единицы могут включать в себя priority_id, temporal_id, anchor_pic_flag, view_id, non_idr_flag и inter_view_flag. В других примерах, другие элементы синтаксиса включаются в заголовок MVC NAL-единицы.
[0125] Элемент anchor_pic_flag синтаксиса может указывать то, является изображение прикрепленным изображением или неприкрепленным изображением. Прикрепленные изображения и все изображения, следующие за ними в порядке вывода (т.е. в порядке отображения), могут быть корректно декодированы без декодирования предыдущих изображений в порядке декодирования (т.е. в порядке потока битов) и в силу этого могут быть использованы в качестве точек произвольного доступа. Прикрепленные изображения и неприкрепленные изображения могут иметь различные зависимости, обе из которых могут быть переданы в служебных сигналах в наборе параметров последовательности.
[0126] Структура потока битов, заданная в MVC, может отличаться посредством двух элементов синтаксиса: view_id и temporal_id. Элемент view_id синтаксиса может указывать идентификатор каждого вида. Этот идентификатор в заголовке NAL-единицы обеспечивает простую идентификацию NAL-единиц в декодере и быстрый доступ для декодированных видов для отображения. Элемент temporal_id синтаксиса может указывать иерархию временной масштабируемости либо, косвенно, частоту кадров. Например, рабочая точка, включающая в себя NAL-единицы с меньшим максимальным значением temporal_id, может иметь более низкую частоту кадров, чем рабочая точка с большим максимальным значением temporal_id. Кодированные изображения с более высоким значением temporal_id типично зависят от кодированных изображений с более низкими значениями temporal_id в виде, но могут вообще не зависеть от кодированных изображений с более высоким temporal_id.
[0127] Элементы view_id и temporal_id синтаксиса в заголовке NAL-единицы могут использоваться для извлечения и адаптации потока битов. Элемент priority_id синтаксиса может быть, главным образом, использован для простого процесса адаптации потока битов с одним трактом. Элемент inter_view_flag синтаксиса может указывать то, должна или нет эта NAL-единица использоваться для межвидового прогнозирования другой NAL-единицы в другом виде.
[0128] MVC также может использовать наборы параметров последовательности (SPS) и включать в себя SPS MVC-расширение. Наборы параметров используются для передачи служебных сигналов в H.264/AVC. Наборы параметров последовательности содержат информацию заголовка уровня последовательности. Наборы параметров изображения (PPS) содержат нечасто изменяющуюся информацию заголовка уровня изображения. В наборах параметров эта нечасто изменяющаяся информация не всегда повторяется для каждой последовательности или изображения, и как следствие, повышается эффективность кодирования. Кроме того, использование наборов параметров обеспечивает внеполосную передачу информации заголовка, исключая необходимость избыточных передач для устойчивости к ошибкам. В некоторых примерах внеполосной передачи NAL-единицы из набора параметров передаются на канале, отличном от канала для других NAL-единиц. В MVC, зависимость от вида может быть передана в служебных сигналах в SPS MVC-расширении. Все межвидовое прогнозирование может выполняться в пределах объема, указываемого посредством SPS MVC-расширения.
[0129] В некоторых предшествующих технологиях кодирования трехмерного видео контент кодируется таким образом, что цветовые компоненты, например, в цветовом пространстве YCbCr, кодируются в одной или более NAL-единиц, в то время как изображение глубины кодируется в одной или более отдельных NAL-единиц. Тем не менее, когда ни одна NAL-единица не содержит кодированные выборки изображений текстуры и глубины единицы доступа, могут возникать несколько проблем. Например, в декодере трехмерного видео предполагается, что после декодирования изображения текстуры и глубины каждого кадра, рендеринг вида на основе карты глубины и текстуры активируется с тем, чтобы формировать виртуальные виды. Если NAL-единица изображения глубины и NAL-единица текстуры для единицы доступа кодируются последовательным способом, рендеринг вида может не начинаться до тех пор, пока вся единица доступа не будет декодирована. Это может приводить к увеличению времени, которое требуется для подготовки посредством рендеринга трехмерного видео.
[0130] Кроме того, изображение текстуры и ассоциированное изображение карты глубины могут совместно использовать некоторую информацию на различных уровнях в кодеке, например, на уровне последовательности, уровне изображения, уровне вырезки и уровне блока. Кодирование этой информации в две NAL-единицы может создавать дополнительную нагрузку по реализации при совместном использовании или прогнозировании информации. Таким образом, кодер, возможно, должен выполнять оценку движения для кадра два раза, один раз для текстуры и еще раз для карты глубины. Аналогично, декодер, возможно, должен выполнять компенсацию движения два раза для кадра.
[0131] Как описано в данном документе, в существующие стандарты, такие как MVC, добавляются технологии с тем, чтобы поддерживать трехмерное видео. Многовидовое видео плюс глубина (MVD) может добавляться в MVC для обработки трехмерного видео. Технологии кодирования трехмерного видео могут включать в себя большую гибкость и расширяемость для существующих видеостандартов, например, для плавного изменения угла обзора или регулирования восприятия сходимости или глубины обратно или вперед, что может быть основано, например, на технических требованиях устройств или настройках пользователя. Стандарты кодирования также могут быть расширены таким образом, чтобы использовать карты глубины для формирования виртуальных видов в трехмерном видео.
[0132] Следующие таблицы показывают примерные элементы синтаксиса для реализации технологий этого раскрытия сущности.
Таблица 2
3DV-расширение заголовка вырезки
slice_header_3DV_extension(){
C
Дескриптор
if (pred_slice_header_depth_idc = =0)
slice_header()
else{
if (pred_slice_header_depth_idc = = 2)
first_mb_in_slice
2
ue(v)
pic_parameter_set_id
2
ue(v)
ref_pic_list_inherit_flag
2
u(1)
ref_pic_inside_view_or_base_view_flag
2
u(1)
if (!ref_pic_list_inherit_flag){
if(slice_type = = P | | slice_type = = SP | | slice_type = = B){
num_ref_idx_active_override_flag
2
u(1)
if(num_ref_idx_active_override_flag){
num_ref_idx_l0_active_minus1
2
ue(v)
if(slice_type = = B)
num_ref_idx_l1_active_minus1
2
ue(v)
}
}
if(slice_type % 5 !=2 && slice_type % 5 !=4)
ref_pic_list_exclusion_or_insertion(0, abs(NumRef0Delta))
if(slice_type % 5 = = 1)
ref_pic_list_exclusion_or_insertion(1, abs(NumRef1Delta))
ref_pic_list_3vc_modification()
2
}
slice_qp_delta
2
se(v)
}
}
[0133] Элемент ref_pic_list_inherit_flag синтаксиса, равный 1, указывает то, что связанные с составлением списков опорных изображений элементы синтаксиса являются идентичными элементам синтаксиса в заголовке опорной вырезки. Элемент ref_pic_list_inherit_flag синтаксиса, равный 0, указывает то, что связанные с составлением списков опорных изображений элементы синтаксиса могут не быть идентичными элементам синтаксиса в заголовке опорной вырезки и дополнительно могут присутствовать в этом заголовке вырезки.
[0134] Элемент ref_pic_inside_view_or_base_view_flag синтаксиса, равный 1, указывает то, что заголовок опорной вырезки является заголовком вырезки из компонента вида текстуры или глубины, который уже присутствует в компоненте текущего вида идентичной единицы доступа. Ref_pic_inside_view_or_base_view_flag, равный 0, указывает то, что заголовок опорной вырезки является заголовком вырезки AVC-совместимого базового вида (текстуры).
[0135] В качестве другого примера, ref_pic_inside_view_or_base_view_flag, равный 1, может указывать то, что заголовок опорной вырезки является заголовком вырезки компонента вида глубины базового вида. Когда ref_pic_inside_view_or_base_view_flag равен 0, вводится дополнительный флаг, чтобы передавать в служебных сигналах то, является заголовок опорной вырезки заголовком вырезки текстуры или глубины базового вида.
[0136] Элемент NumRefxDelta синтаксиса извлекается как равный разности между значением num_ref_idx_lx_active_minus1, передаваемого в служебных сигналах в заголовке текущей вырезки, и значением num_ref_idx_lx_active_minus1 в заголовке опорной вырезки.
Таблица 3
Элемент синтаксиса для исключения или вставки в списки опорных изображений
ref_pic_list_exclusion_or_insertion (x, N){
C
Дескриптор
ref_pic_list_insetion_lx
2
u(1)
if (!ref_pic_list_insetion_lx){
ref_pic_list_exclusing_lx
2
u(1)
excluding_from_begining_or_ending_lx
2
u(1)
else {
inserting_from_begining_or_ending_lx
2
u(1)
for (i=0 ; i<N ; i ++){
modification_of_pic_nums_idc
2
ue(v)
if(modification_of_pic_nums_idc= =0 | |modification_of_pic_nums_idc = = 1)
abs_diff_pic_num_minus1
2
ue(v)
else if(modification_of_pic_nums_idc = =2)
long_term_pic_num
2
ue(v)
else if (modification_of_pic_nums_idc= =4 | | modification_of_pic_nums_idc = = 5)
abs_diff_view_idx_minus1
2
ue(v)
}
}
}
[0137] Элемент ref_pic_list_insertion_lx синтаксиса, равный 1, указывает то, что опорные изображения RefPicListx добавляются в RefPicListx, составляемый согласно элементам синтаксиса заголовка опорной вырезки. Элемент ref_pic_list_insertion_lx синтаксиса, равный 0, указывает то, что опорные изображения RefPicListx не добавляются в RefPicListx, составляемый согласно элементам синтаксиса заголовка опорной вырезки.
[0138] Элемент excluding_from_begining_or_ending_lx синтаксиса, равный 1, указывает то, что опорные изображения RefPicListx исключаются из RefPicListx, составляемого согласно элементам синтаксиса заголовка опорной вырезки. Элемент excluding_from_begining_or_ending_lx синтаксиса, равный 0, указывает то, что синтаксис для модификации опорных изображений может передаваться в служебных сигналах для RefPicListx. Таким образом, составление списков опорных изображений для RefPicListx основано на передаваемом в служебных сигналах синтаксисе в этом заголовке вырезки. Если не присутствует, этот флаг логически выводится как равный 0.
[0139] Элемент NewRPLRFlagx синтаксиса задается следующим образом:
if (ref_pic_list_inserion_lx) NewRPLRFlagx=false;
else if (ref_pic_list_exclusing_lx) NewRPLRFlagx=false;
else NewRPLRFlagx=true
[0140] Процесс декодирования для вставки в списки опорных изображений является аналогичным модификации списков опорных изображений (RPLM) с начальным picNumber, заданным следующим образом. Если опорные изображения вставляются в начале списка (сформированного посредством синтаксиса в заголовке опорной вырезки), picNumber задается идентичным начальному номеру новой RPLM. Если опорные изображения вставляются в конце списка, picNumber задается равным номеру последнего переупорядоченного кадра на основе RPLM.
Таблица 4
Элементы синтаксиса для модификации списков опорных изображений
ref_pic_list_3vc_modification(){
C
Дескриптор
if(slice_type % 5 !=2 && slice_type % 5 !=4&& ! NewRPLRFlag0){
ref_pic_list_modification_flag_l0
2
u(1)
if(ref_pic_list_modification_flag_l0)
do {
modification_of_pic_nums_idc
2
ue(v)
if(modification_of_pic_nums_idc = = 0 | |modification_of_pic_nums_idc = = 1)
abs_diff_pic_num_minus1
2
ue(v)
else if(modification_of_pic_nums_idc = = 2)
long_term_pic_num
2
ue(v)
else if (modification_of_pic_nums_idc = = 4 | |modification_of_pic_nums_idc = = 5)
abs_diff_view_idx_minus1
2
ue(v)
} while(modification_of_pic_nums_idc != 3)
}
if(slice_type % 5= =1 && ! NewRPLRFlag1)){
ref_pic_list_modification_flag_l1
2
u(1)
if(ref_pic_list_modification_flag_l1)
do {
modification_of_pic_nums_idc
2
ue(v)
if(modification_of_pic_nums_idc = = 0 | |modification_of_pic_nums_idc = = 1)
abs_diff_pic_num_minus1
2
ue(v)
else if(modification_of_pic_nums_idc = =2)
long_term_pic_num
2
ue(v)
else if (modification_of_pic_nums_idc= =4 | |modification_of_pic_nums_idc = = 5)
abs_diff_view_idx_minus1
2
ue(v)
} while(modification_of_pic_nums_idc != 3)
}
}
[0141] Таблица 5 иллюстрирует другое примерное 3DV-расширение заголовка вырезки.
Таблица 5
3DV-расширение заголовка вырезки
slice_header(){
C
Дескриптор
first_mb_in_slice
2
ue(v)
slice_type
2
ue(v)
pic_parameter_set_id
2
ue(v)
slice_id
2
ue(v)
if(slice_header_prediction_idc != 0){
ref_pic_list_inherit_flag
2
u(1)
delta_view_idx
2
ue(v)
if (delta_view_idx>0 )
from_texture_depth_flag
2
u(1)
slice_id_in_ref_view_component
2
ue(v)
if (! ref_pic_list_inherit_flag){
if(slice_type = = P | | slice_type = = SP| | slice_type = = B){
num_ref_idx_active_override_flag
2
u(1)
if(num_ref_idx_active_override_flag) {
num_ref_idx_l0_active_minus1
2
ue(v)
if(slice_type = = B)
num_ref_idx_l1_active_minus1
2
ue(v)
}
}
ref_pic_list_mvc_modification( )
2
}
slice_qp_delta
2
se(v)
} else {
if(separate_colour_plane_flag = = 1)
colour_plane_id
2
u(2)
frame_num
2
u(v)
if(!frame_mbs_only_flag) {
field_pic_flag
2
u(1)
if(field_pic_flag)
bottom_field_flag
2
u(1)
}
if(IdrPicFlag)
idr_pic_id
2
ue(v)
if(pic_order_cnt_typ = =0){
pic_order_cnt_lsb
2
u(v)
if(bottom_field_pic_order_in_frame_present_flag && !field_pic_flag)
delta_pic_order_cnt_bottom
2
se(v)
}
if(pic_order_cnt_type= =1 && !delta_pic_order_always_zero_flag){
delta_pic_order_cnt[0]
2
se(v)
if(bottom_field_pic_order_in_frame_present_flag && !field_pic_flag)
delta_pic_order_cnt[1]
2
se(v)
}
if(redundant_pic_cnt_present_flag)
redundant_pic_cnt
2
ue(v)
if(slice_type = = B)
direct_spatial_mv_pred_flag
2
u(1)
if(slice_type = =P | | slice_type = = SP | | slice_type = = B){
num_ref_idx_active_override_flag
2
u(1)
if(num_ref_idx_active_override_flag){
num_ref_idx_l0_active_minus1
2
ue(v)
if(slice_type = = B)
num_ref_idx_l1_active_minus1
2
ue(v)
}
}
if(nal_unit_type = =20 | | ( nal_unit_type = = 21 && DepthFlag))
ref_pic_list_mvc_modification( )/* задается в приложении H */
2
else if(nal_unit_type= =21 && DepthFlag==0)
/* еще не принято решение, какой синтаксис модификации списка опрных изображений и процесс декодирования использовать */
else
ref_pic_list_modification( )
2
if((weighted_pred_flag && ( slice_type= =P | | slice_type= =SP ) ) | |( weighted_bipred_idc= =1 && slice_type= =B))
pred_weight_table()
2
if(nal_ref_idc != 0)
dec_ref_pic_marking()
2
if(entropy_coding_mode_flag && slice_type != I && slice_type != SI)
cabac_init_idc
2
ue(v)
slice_qp_delta
2
se(v)
if(slice_type= =SP | | slice_type= =SI){
if(slice_type = = SP)
sp_for_switch_flag
2
u(1)
slice_qs_delta
2
se(v)
}
if(deblocking_filter_control_present_flag){
disable_deblocking_filter_idc
2
ue(v)
if(disable_deblocking_filter_idc != 1){
slice_alpha_c0_offset_div2
2
se(v)
slice_beta_offset_div2
2
se(v)
}
}
if(num_slice_groups_minus1>0 && slice_group_map_type>=3 && slice_group_map_type <= 5)
slice_group_change_cycle
2
u(v)
if (nal_unit_type = = 21 && ( slice_type != I && slice_type != SI)){
if(DepthFlag )
depth_weighted_pred_flag
2
u(1)
else
dmvp_flag
2
u(1)
}
}
}
[0142] Следует отметить, что каждый компонент вида может быть либо предварительно задан, либо передан в служебных сигналах в наборе параметров последовательности. Иными словами, каждый компонент вида может быть предварительно задан или передан в служебных сигналах в SPS независимо от того, является он компонентом вида текстуры или компонентом вида глубины.
[0143] Элемент delta_view_idx синтаксиса указывает то, из какого индекса порядка видов компонента вида прогнозируется заголовок текущей вырезки. VOIdx (индекс порядка видов) текущего вида минус delta_view_idx является индексом порядка видов для компонента опорного вида. Когда delta_view_idx равен 0, компонент опорного вида является предыдущим кодированным видеокомпонентом идентичного вида в идентичной единице доступа. Компонент опорного вида, если находится в другом виде (к примеру, в виде A), другой вид (вид A) должен быть зависимым видом от текущего вида. Другой вид (вид A) должен быть видом, прямо или косвенно зависимым от текущего вида.
[0144] Флаг, from_texture_depth_flag, может быть включен в заголовок вырезки. Когда from_texture_depth_flag равен 1, указывается то, что компонент опорного вида является компонентом вида текстуры. Когда from_texture_depth_flag равен 0, указывается то, что компонент опорного вида является компонентом вида глубины.
[0145] Элемент slice_id_in_ref_view_component синтаксиса указывает идентификатор вырезки в компоненте опорного вида. Когда заголовок вырезки прогнозируется из компонента вида, который принадлежит текстуре базового вида, slice_id_in_ref_view_component должен быть равным 0.
[0146] Элемент slice_id синтаксиса указывает идентификатор текущей вырезки в компоненте текущего вида. Значение slice_id может быть равным 0 для вырезки, включающей в себя верхний левый блок кодирования. Значение slice_id может увеличиваться на единицу для каждой вырезки в порядке декодирования.
[0147] Альтернативно, в некоторых примерах, вышеуказанное условие "if (delta_view_idx>0)" может удаляться из синтаксической таблицы. В этом случае, from_texture_depth_flag может всегда передаваться в служебных сигналах.
[0148] Альтернативно, элемент slice_id синтаксиса может дополнительно передаваться в служебных сигналах для любого компонента вида, который не является текстурой базового вида.
[0149] Альтернативно, значение slice_id, возможно, должно быть различным только для каждой вырезки в компоненте вида. В данном примере, slice_id, возможно, не должен быть равен 0 для вырезки, включающей в себя верхний левый блок кодирования.
[0150] Далее описывается общий процесс кодирования видео согласно H.264/AVC. Видеопоследовательность типично включает в себя серии видеокадров. Группы изображений (GOP), в общем, содержат последовательность из одного или более видеокадров. GOP может включать в себя в заголовке GOP, заголовке одного или более кадров GOP или в другом месте синтаксические данные, которые описывают число кадров, включенных в GOP. Каждый кадр может включать в себя синтаксические данные кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер и декодеры типично управляют видеоблоками в пределах отдельных видеокадров с тем, чтобы кодировать и/или декодировать видеоданные. Видеоблок может соответствовать макроблоку или сегменту макроблока. Видеоблоки могут иметь фиксированный или варьирующийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя множество вырезок. Каждая вырезка может включать в себя множество макроблоков, которые могут размещаться в сегментах, также называемых "субблоками".
[0151] В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16x16, 8x8 или 4x4 для компонентов сигнала яркости и 8x8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 и 4x4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. В этом раскрытии сущности, "NxN" и "NxN" могут быть использованы взаимозаменяемо для того, чтобы ссылаться на размеры пиксела блока с точки зрения размеров по вертикали и горизонтали, например, 16x16 пикселов или 16x16 пикселов. В общем, блок 16x16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок NxN, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселов, причем M не обязательно равно N.
[0152] Размеры блоков, которые меньше 16x16, могут упоминаться в качестве сегментов макроблока 16x16. Видеоблоки могут содержать блоки пикселных данных в пикселной области или блоки коэффициентов преобразования в области преобразования, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование, к остаточным данным видеоблоков, представляющим пикселные разности между кодированными видеоблоками и прогнозными видеоблоками. В некоторых случаях, видеоблок может содержать блоки квантованных коэффициентов преобразования в области преобразования.
[0153] Меньшие видеоблоки могут иметь лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, макроблоки и различные сегменты, иногда называемые "субблоками", могут считаться видеоблоками. Помимо этого, вырезка может считаться множеством видеоблоков, таких как макроблоки и/или субблоки. Каждая вырезка может быть независимо декодируемой единицей видеокадра. Альтернативно, сами кадры могут быть декодируемыми единицами, или другие части кадра могут быть заданы как декодируемые единицы. Термин "кодированная единица" может означать любую независимо декодируемую единицу видеокадра, такую как весь кадр, вырезка кадра, группа изображений (GOP), также называемая "последовательностью", или другая независимо декодируемая единица, заданная согласно применимым технологиям кодирования.
[0154] После внутреннего прогнозирующего или взаимного прогнозирующего кодирования для того, чтобы формировать прогнозирующие данные и остаточные данные, и после преобразований (таких как целочисленное преобразование 4x4 или 8x8, используемое в H.264/AVC, или дискретное косинусное преобразование (DCT)), применяемых к остаточным данным для того, чтобы формировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[0155] После квантования энтропийное кодирование квантованных данных может выполняться, например, согласно контентно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), энтропийному кодированию на основе сегментирования на интервалы вероятности (PIPE) или другой технологии энтропийного кодирования. Модуль обработки, сконфигурированный для энтропийного кодирования, или другой модуль обработки может выполнять другие функции обработки, такие как кодирование по длинам серий нулей квантованных коэффициентов и/или формирование синтаксической информации, такой как значения шаблона кодированного блока (CBP), тип макроблока, режим кодирования, максимальный размер макроблока для кодированной единицы (к примеру, кадра, вырезки, макроблока или последовательности) и т.п.
[0156] Видеокодер дополнительно может формировать синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и/или синтаксические данные на основе GOP, для видеодекодера, например, в заголовке кадра, в заголовке блока, в заголовке вырезки или в GOP-заголовке. Синтаксические GOP-данные могут описывать число кадров в соответствующей GOP, и синтаксические данные кадров могут указывать режим кодирования/прогнозирования, используемый для того, чтобы кодировать соответствующий кадр. Видеодекодер может интерпретировать и использовать синтаксические данные в процессе декодирования.
[0157] В H.264/AVC, кодированные видеобиты организуются в единицы уровня абстракции сети (NAL), которые предоставляют "оптимизированное для использования в сети" представление видео, нацеленное на такие варианты применения, как видеотелефония, хранение данных, широковещательная передача данных или потоковая передача данных. NAL-единицы могут классифицироваться на NAL-единицы уровня кодирования видео (VCL) и не-VCL NAL-единицы. VCL-единицы содержат основной механизм сжатия и содержат уровни блока, MB и вырезки. Другие NAL-единицы являются не-VCL NAL-единицами.
[0158] Каждая NAL-единица содержит 1-байтовый заголовок NAL-единицы. Пять битов используются для того, чтобы указывать тип NAL-единицы, и три бита используются для nal_ref_idc, указывающего то, насколько важной является NAL-единица с точки зрения того обращения посредством других изображений (NAL-единиц). Это значение, равное 0, означает то, что NAL-единица не используется для взаимного прогнозирования.
[0159] Наборы параметров содержат информацию заголовка уровня последовательности в наборах параметров последовательности (SPS) и нечасто изменяющуюся информацию заголовка уровня изображения в наборах параметров изображения (PPS). В наборах параметров эта нечасто изменяющаяся информация не обязательно должна повторяться для каждой последовательности или изображения, и как следствие, повышается эффективность кодирования. Кроме того, использование наборов параметров обеспечивает внеполосную передачу информации заголовка, исключая необходимость избыточных передач для устойчивости к ошибкам. При внеполосной передаче NAL-единицы наборов параметров могут передаваться на канале, отличном от канала для других NAL-единиц.
[0160] В MVC, межвидовое прогнозирование поддерживается посредством компенсации на основе диспаратности, которая использует синтаксис компенсации движения H.264/AVC, но дает возможность использования изображения в другом виде в качестве опорного изображения. Иными словами, изображения в MVC могут межвидово прогнозироваться и кодироваться. Векторы диспаратности могут использоваться для межвидового прогнозирования способом, аналогичным векторам движения при временном прогнозировании. Тем не менее, вместо предоставления индикатора относительно движения, векторы диспаратности указывают смещение данных в прогнозированном блоке относительно опорного кадра другого вида, чтобы учитывать горизонтальное смещение перспективы камеры для общей сцены. Таким образом, модуль компенсации движения может выполнять компенсацию на основе диспаратности для межвидового прогнозирования.
[0161] Как упомянуто выше, в H.264/AVC, NAL-единица включает в себя 1-байтовый заголовок и рабочие данные варьирующегося размера. В MVC, эта структура сохраняется за исключением NAL-единиц префикса и MVC-кодированных NAL-единиц вырезок, которые включают в себя 4-байтовый заголовок и рабочие данные NAL-единицы. Элементы синтаксиса в заголовке MVC NAL-единицы включают в себя priority_id, temporal_id, anchor_pic_flag, view_id, non_idr_flag и inter_view_flag.
[0162] Элемент anchor_pic_flag синтаксиса указывает то, является изображение прикрепленным изображением или неприкрепленным изображением. Прикрепленные изображения и все изображения, следующие за ними в порядке вывода (т.е. в порядке отображения), могут быть корректно декодированы без декодирования предыдущих изображений в порядке декодирования (т.е. в порядке потока битов) и в силу этого могут быть использованы в качестве точек произвольного доступа. Прикрепленные изображения и неприкрепленные изображения могут иметь различные зависимости, обе из которых передаются в служебных сигналах в наборе параметров последовательности.
[0163] Структура потока битов, заданная в MVC, отличается посредством двух элементов синтаксиса: view_id и temporal_id. Элемент view_id синтаксиса указывает идентификатор каждого вида. Этот индикатор в заголовке NAL-единицы обеспечивает простую идентификацию NAL-единиц в декодере и быстрый доступ для декодированных видов для отображения. Элемент temporal_id синтаксиса указывает иерархию временной масштабируемости либо, косвенно, частоту кадров. Рабочая точка, включающая в себя NAL-единицы с меньшим максимальным значением temporal_id, имеет более низкую частоту кадров, чем рабочая точка с большим максимальным значением temporal_id. Кодированные изображения с более высоким значением temporal_id типично зависят от кодированных изображений с более низкими значениями temporal_id в виде, но не зависят от кодированных изображений с более высоким temporal_id.
[0164] Элементы view_id и temporal_id синтаксиса в заголовке NAL-единицы используются для извлечения и адаптации потока битов. Другим элементом синтаксиса в заголовке NAL-единицы является priority_id, который используется для простого процесса адаптации потока битов с одним трактом. Иными словами, устройство, принимающее или извлекающее поток битов, может использовать значение priority_id для того, чтобы определять приоритеты между NAL-единицами при предварительной обработке извлечения и адаптации потока битов, что дает возможность отправки одного потока битов в несколько целевых устройств с варьирующимися характеристиками кодирования и рендеринга.
[0165] Элемент inter_view_flag синтаксиса указывает то, должна или нет NAL-единица использоваться для межвидового прогнозирования другой NAL-единицы в другом виде.
[0166] В MVC, зависимость от вида передается в служебных сигналах в SPS MVC-расширении. Все межвидовое прогнозирование выполняется в пределах объема, указываемого посредством SPS MVC-расширения. Зависимость от вида указывает то, зависит или нет вид от другого вида, например, для межвидового прогнозирования. Если первый вид прогнозируется из данных второго вида, считается, что первый вид является зависимым от второго вида. Нижеприведенная таблица 6 представляет пример MVC-расширения для SPS.
Таблица 6
seq_parameter_set_mvc_extension(){
C
Дескриптор
num_views_minus1
0
ue(v)
for(i=0; i<= num_views_minus1; i++)
view_id[i]
0
ue(v)
for(i=1; i<= num_views_minus1; i++){
num_anchor_refs_l0[i]
0
ue(v)
for(j=0; j<num_anchor_refs_l0[i]; j++)
anchor_ref_l0[i][j]
0
ue(v)
num_anchor_refs_l1[i]
0
ue(v)
for(j=0; j<num_anchor_refs_l1[i]; j++)
anchor_ref_l1[i][j]
0
ue(v)
}
for(i=1; i<= num_views_minus1; i++){
num_non_anchor_refs_l0[i]
0
ue(v)
for(j=0; j<num_non_anchor_refs_l0[i]; j++)
non_anchor_ref_l0[i][j]
0
ue(v)
num_non_anchor_refs_l1[i]
0
ue(v)
for(j=0; j<num_non_anchor_refs_l1[i]; j++)
non_anchor_ref_l1[i][j]
0
ue(v)
}
num_level_values_signalled_minus1
0
ue(v)
for(i=0; i<= num_level_values_signalled_minus1; i++){
level_idc[i]
0
u(8)
num_applicable_ops_minus1[i]
0
ue(v)
for(j=0; j<=num_applicable_ops_minus1[i]; j++){
applicable_op_temporal_id[i][j]
0
u(3)
applicable_op_num_target_views_minus1[i][j]
0
ue(v)
for(k=0; k<= applicable_op_num_target_views_minus1[i][j]; k++)
applicable_op_target_view_id[i][j][k]
0
ue(v)
applicable_op_num_views_minus1[i][j]
0
ue(v)
}
}
}
[0167] Фиг. 5 является блок-схемой, подробнее иллюстрирующей пример видеодекодера 28 по фиг. 1, согласно технологиям настоящего раскрытия сущности. Видеодекодер 28 является одним примером специализированного компьютерного видеоустройства или аппарата, упоминаемого в данном документе как "кодер". Как показано на фиг. 5, видеодекодер 28 соответствует видеодекодеру 28 целевого устройства 16. Тем не менее, в других примерах, видеодекодер 28 соответствует другому устройству. В дополнительных примерах, другие модули (такие как, например, другие кодеры/декодеры (кодеки)) также могут осуществлять технологии, аналогичные технологиям видеодекодера 28.
[0168] Видеодекодер 28 включает в себя модуль 52 энтропийного декодирования, который энтропийно декодирует принимаемый поток битов, чтобы формировать квантованные коэффициенты и элементы синтаксиса прогнозирования. Поток битов включает в себя кодированные блоки, имеющие компоненты текстуры и компонент глубины для каждого пиксельного местоположения, чтобы подготавливать посредством рендеринга трехмерное видео и элементы синтаксиса. Прогнозные элементы синтаксиса включают в себя, по меньшей мере, одно из режима кодирования, одного или более векторов движения, информации, идентифицирующей используемую технологию интерполяции, коэффициентов для использования в интерполяционной фильтрации и другой информации, ассоциированной с формированием прогнозного блока.
[0169] Прогнозные элементы синтаксиса, например коэффициенты, перенаправляются в процессор 55 прогнозирования. Процессор 55 прогнозирования включает в себя модуль 66 прогнозирования синтаксиса глубины. Если прогнозирование используется для того, чтобы кодировать коэффициенты относительно коэффициентов неперестраиваемого фильтра либо относительно друг друга, процессор 55 прогнозирования декодирует элементы синтаксиса, чтобы задавать фактические коэффициенты. Модуль 66 прогнозирования синтаксиса глубины прогнозирует элементы синтаксиса глубины для компонентов видов глубины из элементов синтаксиса текстуры для компонентов видов текстуры.
[0170] Если квантование применяется к какому-либо из прогнозных элементов синтаксиса, модуль 56 обратного квантования удаляет такое квантование. Модуль 56 обратного квантования может обрабатывать компоненты глубины и текстуры для каждого пиксельного местоположения кодированных блоков в кодированном потоке битов по-разному. Например, когда компонент глубины квантован отлично от компонентов текстуры, модуль 56 обратного квантования обрабатывает компоненты глубины и текстуры отдельно. Коэффициенты фильтрации, например, могут прогнозирующе кодироваться и квантоваться согласно этому раскрытию сущности, и в этом случае модуль 56 обратного квантования используется посредством видеодекодера 28 для того, чтобы прогнозирующе декодировать и деквантовать такие коэффициенты.
[0171] Процессор 55 прогнозирования формирует прогнозирующие данные на основе прогнозных элементов синтаксиса и одного или более ранее декодированных блоков, которые сохраняются в запоминающем устройстве 62, почти идентично тому, как подробно описано выше относительно процессора 32 прогнозирования видеокодера 22. В частности, процессор 55 прогнозирования выполняет одну или более технологий многовидового видео плюс глубины этого раскрытия сущности в ходе компенсации движения для того, чтобы формировать компоненты глубины включения прогнозного блока, а также компоненты текстуры. Прогнозный блок (а также кодированный блок) может иметь различное разрешение для компонентов глубины в сравнении с компонентами текстуры. Например, компоненты глубины имеют четвертьпиксельную точность, в то время как компоненты текстуры имеют полнопиксельную точность. По сути, одна или более технологий этого раскрытия сущности используются посредством видеодекодера 28 при формировании прогнозного блока. В некоторых примерах, процессор 55 прогнозирования может включать в себя модуль компенсации движения, который содержит фильтры, используемые для технологий интерполяционной и аналогичной интерполяционной фильтрации этого раскрытия сущности. Компонент компенсации движения не показан на фиг. 5 для простоты и удобства иллюстрации.
[0172] Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Процесс обратного квантования является процессом, заданным для декодирования H.264 или для любого другого стандарта декодирования. Процессор 58 обратного преобразования применяет обратное преобразование, к примеру, обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельной области. Сумматор 64 суммирует остаточный блок с соответствующим прогнозным блоком, сформированным посредством процессора 55 прогнозирования, для того чтобы формировать восстановленную версию исходного блока, кодированного посредством видеокодера 22. Если требуется, фильтр удаления блочности также применяется для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Декодированные видеоблоки затем сохраняются в запоминающем устройстве 62, которое включает в себя опорные блоки для последующей компенсации движения, а также формирует декодированное видео, чтобы возбуждать дисплейное устройство (такое как дисплейное устройство 30 по фиг. 1).
[0173] Декодированное видео может быть использовано для того, чтобы подготавливать посредством рендеринга трехмерное видео. Трехмерное видео может содержать трехмерный виртуальный вид. Информация глубины используется для того, чтобы определять горизонтальное смещение (горизонтальную диспаратность) для каждого пиксела в блоке. Обработка затемнения также может быть выполнена для того, чтобы формировать виртуальный вид. Элементы синтаксиса для компонентов видов глубины могут быть прогнозированы из элементов синтаксиса для компонентов видов текстуры.
[0174] Фиг. 6 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу блока, связанного с кодированием видео, согласно технологиям настоящего раскрытия сущности. В некоторых примерах, блок, связанный с кодированием видео, является видеокодером, таким как видеокодер 22, показанный на фиг. 1 и 2. В других примерах, блок, связанный с кодированием видео, является видеодекодером, таким как видеодекодер 28, показанный на фиг. 1 и 5.
[0175] Примерный способ кодирования видеоданных включает в себя кодирование одного или более блоков видеоданных, представляющих информацию текстуры, по меньшей мере, части кадра видеоданных (102). Например, видеодекодер 28 принимает кодированный блок видеоданных. В другом примере, видеокодер 22 принимает кодированный блок видеоданных.
[0176] Пример дополнительно включает в себя обработку вырезки текстуры для компонента вида текстуры текущего вида, ассоциированного с единицей доступа, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий набор элементов синтаксиса, представляющих характеристики вырезки текстуры (104). Например, видеодекодер 28 принимает кодированную вырезку текстуры. В другом примере, видеокодер 22 формирует вырезку текстуры.
[0177] Примерный способ дополнительно включает в себя кодирование информации глубины, представляющей значения глубины, по меньшей мере, для части кадра (106). Способ также включает в себя обработку вырезки глубины для компонента вида глубины, соответствующего компоненту вида текстуры вида, причем вырезка глубины содержит кодированную информацию глубины и заголовок вырезки глубины, содержащий набор элементов синтаксиса, представляющих характеристики вырезки глубины (108). Обработка вырезки текстуры или вырезки глубины может включать в себя прогнозирование, по меньшей мере, одного элемента синтаксиса, по меньшей мере, из одного из набора элементов синтаксиса, представляющих характеристики вырезки текстуры, или набора элементов синтаксиса, представляющих характеристики вырезки глубины, из заголовка опорной вырезки, соответственно, при этом заголовок опорной вырезки предоставляется из компонента вида идентичной единицы доступа.
[0178] В некоторых примерах, кодирование текущего вида на основе прогнозных элементов синтаксиса содержит кодирование текущего вида. В других примерах, кодирование текущего вида на основе прогнозных элементов синтаксиса содержит декодирование текущего вида.
[0179] Заголовок опорной вырезки может быть одним из компонента вида текстуры или компонента вида глубины. Заголовок опорной вырезки может содержать совместимый с усовершенствованным кодированием видео (AVC) базовый вид текстуры идентичной единицы доступа. Набор элементов синтаксиса, представляющих характеристики вырезки текстуры, и набор элементов синтаксиса, представляющих характеристики вырезки глубины, в порядке, отличающемся от порядка заголовков AVC-вырезок. Например, заголовок AVC-вырезки может иметь типичный конкретный порядок для элементов синтаксиса.
[0180] В некоторых примерах, индекс, указывающий заголовок опорной вырезки, передается в служебных сигналах. Индекс может передаваться в служебных сигналах в качестве порядка в дельта-виде, при этом порядок в дельта-виде указывает местоположение заголовка опорной вырезки относительно текущего вида. Заголовок опорной вырезки может быть ассоциирован с другим видом в единице доступа, идентичной единице доступа текущего вида. Способ дополнительно может включать в себя передачу в служебных сигналах элемента синтаксиса в расширении заголовка вырезки.
[0181] Может передаваться в служебных сигналах флаг, который указывает то, соответствует заголовок опорной вырезки компоненту вида глубины или компоненту вида текстуры. Идентификатор вырезки для вырезки глубины или вырезки текстуры указываемого компонента вида глубины или текстуры, соответственно, также может передаваться в служебных сигналах в заголовке вырезки. Способ также может включать в себя передачу в служебных сигналах идентификатора вырезки для вырезки глубины и вырезки текстуры, при этом идентификатор вырезки передается в служебных сигналах, по меньшей мере, в одном из заголовка вырезки или заголовка единицы уровня абстракции сети (NAL) для NAL-единицы компонента вида. В другом примере, способ также включает в себя передачу в служебных сигналах идентификатора вырезки для вырезки глубины и вырезки текстуры, при этом идентификатор вырезки передается в служебных сигналах в единице доступа, включающей в себя единицу уровня абстракции сети (NAL) компонента вида глубины и компонента вида текстуры, соответственно. Как описано в данном документе, передача служебных сигналов выполняется в кодированном потоке битов.
[0182] Например, видеодекодер 28 принимает идентификатор вырезки. Видеодекодер 28 принимает индекс, указывающий заголовок опорной вырезки. В некоторых примерах, индекс содержит порядок в дельта-виде, при этом порядок в дельта-виде указывает местоположение заголовка опорной вырезки относительно текущего вида, и при этом заголовок опорной вырезки ассоциирован с другим видом в единице доступа, идентичной единице доступа текущего вида. Видеодекодер 28 принимает флаг, указывающий то, соответствует заголовок опорной вырезки компоненту вида глубины или компоненту вида текстуры. В другом примере, видеодекодер 28 принимает идентификатор вырезки для вырезки глубины или вырезки текстуры указываемого компонента вида глубины или текстуры, соответственно. Видеодекодер 28 принимает идентификатор вырезки для вырезки глубины и вырезки текстуры, при этом идентификатор вырезки передается в служебных сигналах, по меньшей мере, в одном из заголовка вырезки или заголовка единицы уровня абстракции сети (NAL) для NAL-единицы компонента вида. Видеодекодер 28 принимает идентификатор вырезки для вырезки глубины и вырезки текстуры, при этом идентификатор вырезки передается в служебных сигналах в единице доступа, включающей в себя единицу уровня абстракции сети (NAL) компонента вида глубины и компонента вида текстуры, соответственно. Кроме того, видеодекодер 28 принимает элемент синтаксиса в расширении заголовка вырезки.
[0183] В некоторых примерах, элемент синтаксиса является списком опорных изображений. Список опорных изображений может быть прогнозирован из заголовка опорной вырезки с флагом наследования списков опорных изображений, при этом флаг наследования списков опорных изображений со значением 1 указывает то, что элементы синтаксиса для составления списков опорных изображений для текущего вида копируются из заголовка опорной вырезки, и при этом флаг наследования списков опорных изображений со значением 0 указывает то, что элементы синтаксиса для составления списков опорных изображений для текущего вида не копируются из заголовка опорной вырезки. В другом примере, список опорных изображений может быть прогнозирован из заголовка опорной вырезки с флагом вставки в списки опорных изображений, при этом флаг вставки в списки опорных изображений со значением 1 указывает то, что опорные изображения из заголовка опорной вырезки добавляются в список опорных изображений текущего вида. В другом примере, список опорных изображений может быть прогнозирован из заголовка опорной вырезки с флагом исключения опорных изображений, при этом флаг исключения опорных изображений со значением 1 указывает то, что опорные изображения из заголовка опорной вырезки исключаются из списка опорных изображений текущего вида. В некотором примере, способ дополнительно включает в себя модификацию модификации списков опорных изображений, когда активируется прогнозирование модификации списков опорных изображений, на основе, по меньшей мере, одной из синтаксической таблицы исключения или вставки в списки опорных изображений.
[0184] Блок, связанный с кодированием видео, принимает вырезку текстуры, содержащую заголовок вырезки текстуры, содержащий элементы синтаксиса, представляющие характеристики вырезки текстуры (102). Например, блок, связанный с кодированием видео, принимает вырезку текстуры для компонента вида текстуры, ассоциированного с одним или более кодированных блоков видеоданных, представляющих информацию текстуры, причем вырезка текстуры содержит кодированные один или более блоков и заголовок вырезки текстуры, содержащий элементы синтаксиса, представляющие характеристики вырезки текстуры. Способ дополнительно включает в себя прием вырезки глубины, содержащей заголовок вырезки глубины, содержащий элементы синтаксиса, представляющие характеристики вырезки глубины (104). Например, блок, связанный с кодированием видео, принимает вырезку глубины для компонента вида глубины, ассоциированного с одним или более кодированных блоков информации глубины, соответствующей компоненту вида текстуры, при этом вырезка глубины содержит один или более кодированных блоков информации глубины и заголовок вырезки глубины, содержащий элементы синтаксиса, представляющие характеристики вырезки глубины. В некоторых примерах, компонент вида глубины и компонент вида текстуры принадлежат виду и единице доступа.
[0185] Способ дополнительно содержит кодирование первой вырезки, при этом первая вырезка содержит одну из вырезки текстуры и вырезки глубины, при этом первая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики первой вырезки (106). Например, видеокодер 22 кодирует первую вырезку, при этом первая вырезка содержит одну из вырезки текстуры и вырезки глубины, при этом первая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики первой вырезки. В одном примере, заголовок вырезки содержит все элементы синтаксиса, используемые для того, чтобы кодировать ассоциированную вырезку. В другом примере, видеодекодер 28 декодирует первую вырезку, при этом первая вырезка содержит одну из вырезки текстуры и вырезки глубины, при этом первая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики первой вырезки.
[0186] Способ дополнительно содержит определение общих элементов синтаксиса для второй вырезки из заголовка вырезки для первой вырезки (108). Дополнительно, способ содержит кодирование второй вырезки после кодирования первой вырезки, по меньшей мере, частично на основе определенных общих элементов синтаксиса, при этом вторая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики второй вырезки, за исключением значений для элементов синтаксиса, которые являются общими для первой вырезки (110). Например, видеокодер 22 может кодировать вторую вырезку после кодирования первой вырезки, по меньшей мере, частично на основе определенных общих элементов синтаксиса, при этом вторая вырезка содержит одну из вырезки текстуры и вырезки глубины, которая не является первой вырезкой, при этом вторая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики второй вырезки, за исключением значений для элементов синтаксиса, которые являются общими для первой вырезки. Аналогично, видеодекодер 28 может декодировать вторую вырезку после кодирования первой вырезки, по меньшей мере, частично на основе определенных общих элементов синтаксиса, при этом вторая вырезка содержит одну из вырезки текстуры и вырезки глубины, которая не является первой вырезкой, при этом вторая вырезка имеет заголовок вырезки, содержащий элементы синтаксиса, представляющие характеристики второй вырезки, за исключением значений для элементов синтаксиса, которые являются общими для первой вырезки.
[0187] В других примерах, способ дополнительно содержит передачу в служебных сигналах индикатора того, какие элементы синтаксиса явно передаются в служебных сигналах в заголовке вырезки для второй вырезки в наборе параметров последовательности.
[0188] В других примерах, по меньшей мере, один элемент синтаксиса глубины определяется и передается в служебных сигналах в заголовке вырезки компонента вида глубины. По меньшей мере, один элемент синтаксиса глубины может включать в себя идентификатор набора параметров изображения, разность параметров квантования между параметром квантования вырезки и параметром квантования, передаваемым в служебных сигналах в наборе параметров изображения, начальную позицию единицы кодированного блока, порядок опорных изображений или порядок отображения текущего изображения компонента вида глубины. Например, заголовок вырезки для второй вырезки содержит, по меньшей мере, передаваемый в служебных сигналах элемент синтаксиса идентификационных данных набора параметров изображения, к которому следует обращаться. В другом примере, заголовок вырезки для второй вырезки содержит, по меньшей мере, передаваемый в служебных сигналах элемент синтаксиса разности параметров квантования между параметром квантования второй вырезки и параметром квантования, передаваемым в служебных сигналах в наборе параметров изображения. В другом примере, заголовок вырезки для второй вырезки содержит, по меньшей мере, передаваемый в служебных сигналах элемент синтаксиса начальной позиции кодированного блока. Дополнительно, заголовок вырезки для второй вырезки может содержать, по меньшей мере, один из номера кадра и номера в последовательности изображений второй вырезки. В другом примере, заголовок вырезки для второй вырезки содержит, по меньшей мере, одно из элементов синтаксиса, связанных с составлением списков опорных изображений, числа активных опорных кадров для каждого списка, синтаксических таблиц модификации списков опорных изображений и таблицы весовых коэффициентов прогнозирования.
[0189] Начальная позиция единицы кодированного блока может определяться равной нулю, когда начальная позиция кодированного блока не передается в служебных сигналах в заголовке вырезки текстуры или заголовке вырезки глубины. Параметр контурного фильтра, по меньшей мере, для одного компонента вида текстуры может быть передан в служебных сигналах, как и набор флагов, который указывает то, что параметр контурного фильтра, используемый для компонента вида глубины, является идентичным параметру контурного фильтра, по меньшей мере, для одного компонента вида текстуры. Например, заголовок вырезки для второй вырезки содержит, по меньшей мере, один из элементов синтаксиса, связанных с параметрами фильтра удаления блочности или параметрами адаптивной контурной фильтрации для второй вырезки.
[0190] В другом примере, один или более блоков видеоданных, представляющих информацию текстуры, кодируются с использованием межвидового прогнозирования, в то время как значения глубины для соответствующей части кадра кодируются с использованием внутривидового прогнозирования. Видеокадр, имеющий компоненты видов текстуры и компоненты видов глубины, может соответствовать первому виду. Кодирование одного или более блоков видеоданных, представляющих информацию текстуры, может включать в себя прогнозирование, по меньшей мере, части, по меньшей мере, одного из блоков видеоданных, представляющих информацию текстуры относительно данных второго вида, при этом второй вид отличается от первого вида. Кодирование информации глубины, представляющей значения глубины для части кадра дополнительно, содержит прогнозирование, по меньшей мере, части информации глубины, представляющей значения глубины относительно данных первого вида. Заголовок вырезки глубины дополнительно может передавать в служебных сигналах элементы синтаксиса, представляющие составление списков опорных изображений для компонента вида карты глубины.
[0191] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по компьютерно-читаемому носителю и выполнены посредством аппаратного процессора. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители, в общем, могут соответствовать (1) материальному компьютерно-читаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут быть любыми доступными носителями, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0192] В качестве примера, а не ограничения, эти компьютерно-читаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть компьютерно-читаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые, включаются в определение носителя. Тем не менее, следует понимать, что компьютерно-читаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Термин «диск» при использовании в данном документе включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом магнитные диски обычно воспроизводят данные магнитно, тогда как оптические диски обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число компьютерно-читаемых носителей.
[0193] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть включена в пределах специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[0194] Технологии этого раскрытия сущности могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но не обязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0195] Описаны различные примеры раскрытия сущности. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.