БЛОЧНОЕ АДАПТИВНОЕ КОДИРОВАНИЕ С ПРЕОБРАЗОВАНИЕМ ЦВЕТОВОГО ПРОСТРАНСТВА
BLOCK ADAPTIVE CODING WITH CONVERSION OF COLOUR SPACE

[1] Эта заявка притязает на приоритет Предварительной заявки на патент (США) № 62/007860, поданной 4 июля 2014 года, содержимое которой полностью содержится в данном документе по ссылке.
Область техники, к которой относится изобретение
[2] Раскрытие сущности относится к кодированию и декодированию видео.
Уровень техники
[3] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют такие технологии кодирования видео, как технологии кодирования видео, описанные в стандартах, заданных посредством MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов, разрабатываемых в настоящее время. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.
[4] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для блочного кодирования видеовырезка (к примеру, видеокадр или часть видеокадра) может быть сегментирована на видеоблоки, которые также могут упоминаться как древовидные блоки, единицы кодирования (CU) и/или узлы кодирования. Видеоблоки в внутренне кодированных (I-) вырезках изображения кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном изображении. Видеоблоки в внешне кодированных (P- или B-) вырезках изображения могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном изображении или временное прогнозирование относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, и опорные изображения могут упоминаться как опорные кадры.
[5] Пространственное или временное прогнозирование приводит в результате к прогнозирующему блоку для блока, который должен быть кодирован. Остаточные данные представляют пиксельные разности между исходным блоком, который должен быть кодирован, и прогнозирующим блоком. Внешне кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих прогнозирующий блок, и остаточным данным, указывающим разность между кодированным блоком и прогнозирующим блоком. Внутренне кодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, первоначально размещаемые в двумерном массиве, могут сканироваться для того, чтобы формировать одномерный вектор коэффициентов преобразования, и может применяться энтропийное кодирование с тем, чтобы достигать еще большего сжатия.
Сущность изобретения
[6] В общем, раскрытие сущности описывает технологии для кодирования видеоблоков с использованием процесса преобразования цветового пространства. Видеокодер кодирует единицу кодирования (CU) видеоданных. При кодировании видеоданных, видеокодер определяет то, следует или нет кодировать CU с использованием преобразования цветового пространства. Для цветового компонента, видеокодер определяет начальный параметр квантования (QP) для цветового компонента, задает конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента, и квантует, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. Видеокодер дополнительно выводит поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов. Видеодекодер декодирует CU видеоданных. При декодировании видеоданных, видеодекодер определяет то, что CU кодирована с использованием преобразования цветового пространства. Для цветового компонента, видеодекодер определяет начальный QP для цветового компонента, определяет конечный QP и обратно квантует, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. Видеодекодер восстанавливает CU на основе обратно квантованных блоков коэффициентов для CU.
[7] В одном примере, раскрытие сущности направлено на способ декодирования видеоданных, при этом способ содержит: определение того, что единица кодирования (CU) видеоданных была кодирована с использованием преобразования цветового пространства; определение начального параметра квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, определение конечного QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и обратное квантование, на основе конечного QP для цветового компонента, блока коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и восстановление единицы кодирования на основе обратно квантованных блоков коэффициентов для CU.
[8] В другом примере, раскрытие сущности направлено на устройство для декодирования видеоданных, причем устройство содержит: запоминающее устройство, сконфигурированное с возможностью сохранять видеоданные; и один или более процессоров, сконфигурированных с возможностью: определять то, что единица кодирования (CU) видеоданных была кодирована с использованием преобразования цветового пространства; определять начальный параметр квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, определять конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и восстанавливать единицу кодирования на основе обратно квантованных блоков коэффициентов для CU.
[9] В другом примере, раскрытие сущности направлено на устройство для декодирования видеоданных, причем устройство содержит: средство для определения того, что единица кодирования (CU) видеоданных была кодирована с использованием преобразования цветового пространства; средство для определения начального параметра квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, средство для определения конечного QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и средство для обратного квантования, на основе конечного QP для цветового компонента, блока коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и средство для восстановления единицы кодирования на основе обратно квантованных блоков коэффициентов для CU.
[10] В другом примере, раскрытие сущности направлено на машиночитаемый носитель хранения данных, кодированный с помощью инструкций, которые при выполнении инструктируют одному или более процессоров: определять то, что единица кодирования (CU) видеоданных была кодирована с использованием преобразования цветового пространства; определять начальный параметр квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, определять конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и восстанавливать единицу кодирования на основе обратно квантованных блоков коэффициентов для CU.
[11] В другом примере, раскрытие сущности направлено на способ кодирования видеоданных, при этом способ содержит: определение кодировать единицу кодирования (CU) видеоданных с использованием преобразования цветового пространства; определение начального параметра квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, задание конечного QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и квантование, на основе конечного QP для цветового компонента, блока коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и вывод потока битов видеоданных, содержащего один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[12] В другом примере, раскрытие сущности направлено на устройство для кодирования видеоданных, причем устройство содержит: запоминающее устройство, сконфигурированное с возможностью сохранять видеоданные; и один или более процессоров, сконфигурированных с возможностью: определять кодировать единицу кодирования (CU) видеоданных с использованием преобразования цветового пространства; определять начальный параметр квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, задавать конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[13] В другом примере, раскрытие сущности направлено на устройство для кодирования видеоданных, причем устройство содержит: средство для определения кодировать единицу кодирования (CU) видеоданных с использованием преобразования цветового пространства; средство для определения начального параметра квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, средство для задания конечного QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и средство для квантования, на основе конечного QP для цветового компонента, блока коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и средство для вывода потока битов видеоданных, содержащего один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[14] В другом примере, раскрытие сущности направлено на машиночитаемый носитель хранения данных, кодированный с помощью инструкций, которые при выполнении инструктируют одному или более процессоров: определять кодировать единицу кодирования (CU) видеоданных с использованием преобразования цветового пространства; определять начальный параметр квантования (QP) для цветового компонента; на основе CU, кодированной с использованием преобразования цветового пространства, задавать конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента; и квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента; и выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[15] Подробности одного или более примеров данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества раскрытия сущности должны становиться очевидными из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[16] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать технологии, описанные в этом раскрытии сущности.
[17] Фиг. 2 является концептуальной схемой, иллюстрирующей режимы внутреннего прогнозирования по стандарту высокоэффективного кодирования видео (HEVC).
[18] Фиг. 3A и фиг. 3B являются концептуальными схемами, иллюстрирующими пространственные соседние возможные варианты векторов движения для режимов объединения и усовершенствованного прогнозирования векторов движения (AMVP) согласно одной или более технологий настоящего раскрытия сущности.
[19] Фиг. 4 является концептуальной схемой, иллюстрирующей пример внутреннего блочного копирования (BC) согласно одной или более технологий настоящего раскрытия сущности.
[20] Фиг. 5 является концептуальной схемой, иллюстрирующей пример целевого блока и опорной выборки для внутреннего блока 8×8, согласно одной или более технологий настоящего раскрытия сущности.
[21] Фиг. 6 является блок-схемой, иллюстрирующей примерный видеокодер, который может реализовывать технологии, описанные в этом раскрытии сущности.
[22] Фиг. 7 является блок-схемой, иллюстрирующей примерный видеодекодер, который может реализовывать технологии, описанные в этом раскрытии сущности.
[23] Фиг. 8 является блок-схемой последовательности операций способа, иллюстрирующей технологию кодирования согласно одной или более технологий настоящего раскрытия сущности.
[24] Фиг. 9 является блок-схемой последовательности операций способа, иллюстрирующей технологию декодирования согласно одной или более технологий настоящего раскрытия сущности.
[25] Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей технологию кодирования согласно одной или более технологий настоящего раскрытия сущности.
[26] Фиг. 11 является блок-схемой последовательности операций способа, иллюстрирующей технологию декодирования согласно одной или более технологий настоящего раскрытия сущности.
Подробное описание изобретения
[27] Это раскрытие сущности описывает технологии кодирования видео, включающие в себя технологии, связанные с кодированием экранного контента (SCC) и расширениями диапазона (RCEx). SCC и расширения диапазона включают в себя поддержку возможно форматов высокой битовой глубины (более 8 битов) или высокой дискретизации сигнала цветности. Более конкретно, в этом раскрытии сущности, предложены технологии, связанные с определением параметров квантования (QP), когда используется преобразование цветового пространства.
C0
C1
C2
C0
C1,
C2
C0
C1
C2
[28] В соответствии с технологиями раскрытия сущности, видеокодер использует конечный QP для цветового компонента, чтобы квантовать блок остаточных данных для цветового компонента. Видеокодер использует дельта-QP для цветового компонента, чтобы извлекать конечный QP для цветового компонента. В примерах с 3 цветовыми компонентами, дельта-QP для 3 цветовых компонентов могут обозначаться как deltaQP, deltaQP и deltaQP. В вышеприведенных примерах, deltaQP может быть равен deltaQPкоторые оба меньше deltaQP. Например, deltaQP и deltaQP могут быть равны -5, и deltaQP может быть равен -3. В других случаях, когда CU не кодирована с использованием преобразования цветового пространства, видеокодер может декодировать CU без суммирования смещений с определенными параметрами квантования, т.е. с инициализированным/предварительным параметром квантования.
y
cb
cr
[29] Если видеокодер использует внутриконтурное преобразование цветового пространства для того, чтобы кодировать блок остаточных данных для каждого цветового компонента, видеокодер может суммировать дельта-QP с предварительным QP для цветового компонента. Предварительные QP для цветового компонента может обозначаться как Qp', Qp' и Qp'. Видеокодер может извлекать предварительные QP для цветовых компонентов с использованием традиционного процесса QP-извлечения. Если видеокодер не использует внутриконтурное преобразование цветового пространства для того, чтобы кодировать блок остаточных данных для конкретного цветового компонента, видеокодер не суммирует дельта-QP для конкретного цветового компонента с предварительным QP для конкретного цветового компонента.
[30] В общем, раскрытие сущности описывает технологии для кодирования видеоблоков с использованием процесса преобразования цветового пространства для того, чтобы кодировать видеоданные. Технологии, описанные в данном документе, позволяют повышать производительность кодирования внутриконтурного преобразования цветового пространства и позволяют уменьшать сложность декодера. Видеокодер кодирует единицу кодирования (CU) видеоданных. При кодировании видеоданных, видеокодер определяет то, следует или нет кодировать CU с использованием преобразования цветового пространства. Видеокодер может определять начальный QP для цветового компонента и может задавать конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеокодер может квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый коэффициент квантован, видеокодер дополнительно выводит CU на основе блоков квантованных коэффициентов для CU в кодированном потоке битов.
[31] Кроме того, в соответствии в технологии этого раскрытия сущности, видеодекодер декодирует CU видеоданных. При декодировании видеоданных, видеодекодер определяет то, что CU кодирована с использованием преобразования цветового пространства. Для цветового компонента из множества цветовых компонентов, видеодекодер может определять начальный QP для цветового компонента и определять конечный QP. Видеодекодер может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый блок коэффициентов обратно квантован, видеодекодер восстанавливает CU на основе обратно квантованных блоков коэффициентов для CU.
[32] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать технологии для кодирования экранного контента. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое предоставляет кодированные видеоданные, которые должны быть декодированы позднее посредством целевого устройства 14. В частности, исходное устройство 12 предоставляет видеоданные в целевое устройство 14 через машиночитаемый носитель 16. Исходное устройство 12 и целевое устройство 14 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные аппараты, к примеру, так называемые смартфоны, так называемые интеллектуальные сенсорные панели, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 12 и целевое устройство 14 могут быть оснащены возможностями беспроводной связи.
[33] Целевое устройство 14 может принимать кодированные видеоданные, которые должны быть декодированы через машиночитаемый носитель 16. Машиночитаемый носитель 16 может содержать любой тип носителя или устройства, допускающего перемещение кодированных видеоданных из исходного устройства 12 в целевое устройство 14. В одном примере, машиночитаемый носитель 16 может содержать среду связи, чтобы обеспечивать возможность исходному устройству 12 передавать кодированные видеоданные непосредственно в целевое устройство 14 в реальном времени. Кодированные видеоданные могут быть модулированы согласно стандарту связи, такому как протокол беспроводной связи, и переданы в целевое устройство 14. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 12 в целевое устройство 14.
[34] В некоторых примерах, исходное устройство 12 может выводить кодированные данные, которые могут выводиться в устройство хранения данных. Аналогично, интерфейс ввода может осуществлять доступ к кодированным данным из устройства хранения данных. Устройство хранения данных может включать в себя любые из множества носителей хранения данных с распределенным или локальным доступом, такие как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство или любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных. В дополнительном примере, устройство хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 12. Целевое устройство 14 может осуществлять доступ к сохраненным видеоданным из устройства хранения данных, например, через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-узла), FTP-сервер, устройства системы хранения данных с подключением по сети (NAS) или локальный накопитель на дисках. Целевое устройство 14 может осуществлять доступ к кодированным видеоданным через любое стандартное подключение для передачи данных, включающее в себя Интернет-подключение. Оно может включать в себя беспроводной канал (например, Wi-Fi-подключение), проводное подключение (например, DSL, кабельный модем и т.д.) или комбинацию означенного, которая является подходящей для того, чтобы осуществлять доступ к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из устройства хранения данных может представлять собой потоковую передачу, передачу на основе загрузки или комбинацию вышеозначенного.
[35] Технологии этого раскрытия сущности не обязательно ограничены приложениями или настройками беспроводной связи. Технологии могут применяться к кодированию видео в поддержку любых из множества мультимедийных приложений, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие приложения. В некоторых примерах, система 10 может быть сконфигурирована с возможностью поддерживать одностороннюю или двустороннюю передачу видео для того, чтобы поддерживать такие приложения, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[36] В примере по фиг. 1, исходное устройство 12 включает в себя видеоисточник 18, видеокодер 20 и интерфейс 22 вывода. Целевое устройство 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В соответствии с этим раскрытием сущности, видеокодер 20 исходного устройства 12 может быть сконфигурирован с возможностью применять технологии для кодирования видеоблоков с использованием процесса преобразования цветового пространства. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные из внешнего видеоисточника 18, такого как внешняя камера. Аналогично, целевое устройство 14 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.
[37] Проиллюстрированная система 10 по фиг. 1 является просто одним примером. Технологии для кодирования видеоблоков с использованием процесса преобразования цветового пространства могут выполняться посредством любого устройства кодирования и/или декодирования цифрового видео. Хотя, в общем, технологии этого раскрытия сущности выполняются посредством устройства кодирования видео, технологии также могут выполняться посредством видеокодера/декодера, типично называемого "кодеком". Исходное устройство 12 и целевое устройство 14 являются просто примерами таких устройств кодирования, в которых исходное устройство 12 формирует кодированные видеоданные для передачи в целевое устройство 14. В некоторых примерах, устройства 12, 14 могут работать практически симметрично, так что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[38] Видеоисточник 18 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В некоторых случаях, если видеоисточник 18 представляет собой видеокамеру, исходное устройство 12 и целевое устройство 14 могут формировать так называемые камерофоны или видеофоны. Тем не менее, как упомянуто выше, технологии, описанные в этом раскрытии сущности, могут быть применимыми к кодированию видео в целом и могут применяться к беспроводным и/или проводным вариантам применения. В каждом случае, захваченное, предварительно захваченное или машиногенерируемое видео может быть кодировано посредством видеокодера 20. Кодированная видеоинформация затем может выводиться посредством интерфейса 22 вывода на машиночитаемый носитель 16.
[39] Машиночитаемый носитель 16 может включать в себя энергозависимые носители, такие как беспроводная широковещательная передача или проводная сетевая передача, либо носители хранения данных (т.е. энергонезависимые носители хранения данных), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, Blu-Ray-диск или другие машиночитаемые носители. В некоторых примерах, сетевой сервер (не показан) может принимать кодированные видеоданные из исходного устройства 12 и предоставлять кодированные видеоданные в целевое устройство 14, например, через сетевую передачу. Аналогично, вычислительное устройство оборудования для изготовления носителей, такого как оборудование для штамповки дисков, может принимать кодированные видеоданные из исходного устройства 12 и изготавливать диск, содержащий кодированные видеоданные. Следовательно, можно понимать, что машиночитаемый носитель 16 включает в себя один или более машиночитаемых носителей различных форм, в различных примерах.
[40] Интерфейс 28 ввода целевого устройства 14 принимает информацию из машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, заданную посредством видеокодера 20, которая также используется посредством видеодекодера 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например, GOP. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[41] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества надлежащих схем кодера, к примеру, один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в устройстве. Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[42] Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC). Завершено проектирование нового стандарта кодирования видео, а именно, стандарта высокоэффективного кодирования видео (HEVC), посредством Объединенной группы для совместной работы над видеостандартами (JCT-VC) Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC. Видеокодер 20 и видеодекодер 30 могут работать согласно такому стандарту кодирования видео, как HEVC, и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видеокодер 20 и видеодекодер 30 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт ITU-T H.264, альтернативно называемый "MPEG-4, часть 10, усовершенствованное кодирование видео (AVC)", или расширениям таких стандартов. Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263.
[43] Стандарт ITU H.264/MPEG-4 (AVC) сформулирован посредством Экспертной группы в области кодирования видео (VCEG) ITU-T совместно с Экспертной группой по киноизображению (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как Объединенная группа по видеостандартам (JVT). В некоторых аспектах, технологии, описанные в этом раскрытии сущности, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" от Исследовательской группы ITU-T и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC. Объединенная группа по видеостандартам (JVT) продолжает работать над дополнениями к H.264/MPEG-4 AVC.
[44] JCT-VC разрабатывает HEVC-стандарт. Работа по стандартизации HEVC основана на усовершенствованной модели видеокодера, называемой "тестовой моделью HEVC (HM)". HM предполагает несколько дополнительных возможностей видеокодеров относительно существующих устройств, например, согласно ITU-T H.264/AVC. Например, тогда как H.264 предоставляет девять режимов внутреннего прогнозирующего кодирования, HM может предоставлять целых тридцать три режима внутреннего прогнозирующего кодирования.
[45] В общем, рабочая модель HM описывает то, что видеокадр или изображение могут разделяться на последовательность единиц дерева кодирования (CTU). CTU также могут упоминаться в качестве древовидных блоков или наибольших единиц кодирования (LCU). Каждая из CTU может содержать блок дерева кодирования выборок сигнала яркости, два соответствующих блока дерева кодирования выборок сигнала цветности и синтаксические структуры, используемые для того, чтобы кодировать выборки блоков дерева кодирования. В монохромных изображениях или изображениях, имеющих три отдельных цветовых плоскости, CTU может содержать один блок дерева кодирования и синтаксические структуры, используемые для того, чтобы кодировать выборки блока дерева кодирования. Блок дерева кодирования может представлять собой блок NxN выборок. Синтаксические данные в потоке битов могут задавать размер для LCU, которая является наибольшей единицей кодирования с точки зрения числа пикселов.
[46] В HEVC, наибольшая единица кодирования в вырезки называется "блоком дерева кодирования (CTB)". CTB содержит дерево квадрантов, узлы которого называются "единицами кодирования (CU)". Размер CTB может варьироваться от 16×16 до 64×64 в основном HEVC-профиле, хотя также могут поддерживаться меньшие размеры, к примеру, размеры CTB 8×8, и большие размеры.
[47] Это раскрытие сущности может использовать термин "видеоединица" или "видеоблок", или "блок" для того, чтобы означать один или более блоков выборок и синтаксических структур, используемых для того, чтобы кодировать выборки одного или более блоков выборок. Примерные типы видеоединиц могут включать в себя CTU, CU, PU, единицы преобразования (TU), макроблоки, сегменты макроблока и т.д. В некоторых контекстах, пояснение PU может заменяться на пояснение макроблоков или сегментов макроблока.
[48] Вырезка включает в себя определенное число последовательных древовидных блоков в порядке кодирования. Видеокадр или изображение может быть сегментировано на одну или более вырезок. Каждый древовидный блок может разбиваться на единицы кодирования (CU) согласно дереву квадрантов. В общем, структура данных в виде дерева квадрантов включает в себя один узел в расчете на CU, при этом корневой узел соответствует древовидному блоку. Если CU разбивается на четыре суб-CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одной из суб-CU.
[49] Каждый узел структуры данных в виде дерева квадрантов может предоставлять синтаксические данные для соответствующей CU. Например, узел в дереве квадрантов может включать в себя флаг разбиения, указывающий то, разбивается или нет CU, соответствующая узлу, на суб-CU. Синтаксические элементы для CU могут быть заданы рекурсивно и могут зависеть от того, разбивается или нет CU на суб-CU. Если CU не разбивается дополнительно, она называется "концевой CU". В этом раскрытии сущности, четыре под-CU концевой CU также называются "концевыми CU", даже если отсутствует явное разбиение исходной концевой CU. Например, если CU размера 16×16 не разбивается дополнительно, четыре под-CU 8×8 также называются "концевыми CU", хотя CU 16×16 вообще не разбивается.
[50] CU может иметь идентичный размер с CTB, и ее размер может не превышать 8×8. Каждая CU кодируется с одним режимом прогнозирования. Когда CU кодируется с использованием режима внешнего прогнозирования (т.е. когда CU внешне кодируется), CU может быть дополнительно сегментирована на две или более единиц прогнозирования (PU). В других примерах, CU может включать в себя всего одну PU, когда не применяются дополнительные сегменты. В примерах, в которых CU сегментирована на две PU, каждая PU может представлять собой прямоугольники с размером, равным половине CU, или два прямоугольника с размером в 1/4 или 3/4 CU. В HEVC, наименьшие PU-размеры составляют 8×4 и 4×8.
[51] CU имеет назначение, аналогичное назначению макроблока стандарта H.264, за исключением того, что CU не имеет различения размера. Например, древовидный блок может разбиваться на четыре дочерних узла (также называемые "под-CU"), и каждый дочерний узел, в свою очередь, может быть родительским узлом и разбиваться еще на четыре дочерних узла. Конечный неразбиваемый дочерний узел, называемый "концевым узлом дерева квадрантов", содержит узел кодирования, также называемый "концевой CU". Синтаксические данные, ассоциированные с кодированным потоком битов, могут задавать максимальное число раз, которое может разбиваться древовидный блок, называемое "максимальной CU-глубиной", и также может задавать минимальный размер узлов кодирования. Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Это раскрытие сущности использует термин "блок", чтобы ссылаться на любое из CU, PU или TU в контексте HEVC, или аналогичные структуры данных в контексте других стандартов (например, макроблоки и их субблоки в H.264/AVC).
[52] CU включает в себя узел кодирования и единицы прогнозирования (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен иметь квадратную форму. Размер CU может колебаться от 8×8 пикселов вплоть до размера древовидного блока максимум в 64×64 пикселов или более. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, сегментацию CU на одну или более PU. Режимы сегментации могут отличаться между тем, является CU кодированной в режиме пропуска или прямом режиме, кодированной в режиме внутреннего прогнозирования или кодированной в режиме внешнего прогнозирования. PU могут быть сегментированы таким образом, что они имеют неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, сегментацию CU на одну или более TU согласно дереву квадрантов. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[53] HEVC-стандарт обеспечивает возможность преобразований согласно TU, которые могут отличаться для различных CU. Размеры NU типично задаются на основе размера PU в данной CU, заданного для сегментированной LCU, хотя это может не всегда иметь место. TU типично имеет идентичный размер или меньше по сравнению с PU. В некоторых примерах, остаточные выборки, соответствующие CU, могут подразделяться на меньшие единицы с использованием структуры в виде дерева квадрантов, известной как "остаточное дерево квадрантов" (RQT). Концевые узлы RQT могут называться "единицами преобразования (TU)". Значения пиксельных разностей, ассоциированные с TU, могут быть преобразованы, чтобы формировать коэффициенты преобразования, которые могут быть квантованы.
[54] Концевая CU может включать в себя одну или более единиц прогнозирования (PU). В общем, PU представляет пространственную область, соответствующую всем или части соответствующей CU, и может включать в себя данные для извлечения опорной выборки для PU. Кроме того, PU включает в себя данные, связанные с прогнозированием. Например, когда PU кодируется во внутреннем режиме, данные для PU могут быть включены в остаточное дерево квадрантов (RQT), которое может включать в себя данные, описывающие режим внутреннего прогнозирования для TU, соответствующей PU. В качестве другого примера, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие один или более векторов движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорный кадр, на который указывает вектор движения, и/или список опорных изображений (например, список 0, список 1 или список C) для вектора движения.
[55] В качестве примера, HM поддерживает прогнозирование для различных PU-размеров. При условии, что размер конкретной CU составляет 2Nx2N, HM поддерживает внутреннее прогнозирование для PU-размеров 2Nx2N или NxN и внешнее прогнозирование для симметричных PU-размеров 2Nx2N, 2NxN, Nx2N или NxN. HM также поддерживает асимметричную сегментацию для внешнего прогнозирования для PU-размеров 2NxnU, 2NxnD, nLx2N и nRx2N. При асимметричной сегментации одно направление CU не сегментируется, в то время как другое направление сегментируется на 25% и 75%. Часть CU, соответствующая 25%-ому сегменту, указывается посредством "n", после чего идет индикатор относительно "вверх (Up)", "вниз (Down)", "влево (Left)" или "вправо (Right)". Таким образом, например, "2NxnU" ссылается на CU 2Nx2N, которая сегментируется горизонтально с PU 2Nx0,5N вверху и PU 2Nx1,5N внизу.
[56] В этом раскрытии сущности, "NxN" и "N на N" могут быть использованы взаимозаменяемо для того, чтобы ссылаться на размеры в пикселах видеоблока с точки зрения размеров по вертикали и горизонтали, например, 16×16 пикселов, или 16 на 16 пикселов. В общем, блок 16×16 должен иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, блок NxN, в общем, имеет N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Пикселы в блоке могут размещаться в строках и столбцах. Кроме того, блок не обязательно должен иметь совпадающее число пикселов в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселов, причем M не обязательно равно N.
[57] Концевая CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). Единицы преобразования могут указываться с использованием RQT (также называемой "структурой в виде дерева квадрантов TU"), как пояснено выше. Например, флаг разбиения может указывать то, разбивается или нет концевая CU на четыре единицы преобразования. Затем, каждая единица преобразования дополнительно может разбиваться на дополнительные под-TU. Когда TU не разбивается дополнительно, она может называться "концевой TU". В общем, для внутреннего кодирования, все концевые TU, принадлежащие концевой CU, совместно используют идентичный режим внутреннего прогнозирования. Иными словами, идентичный режим внутреннего прогнозирования, в общем, применяется для того, чтобы вычислять прогнозированные значения для всех TU концевой CU. Для внутреннего кодирования, видеокодер 20 может вычислять остаточное значение для каждой концевой TU с использованием режима внутреннего прогнозирования, в качестве разности между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше PU. Для внутреннего кодирования, PU может совместно размещаться с соответствующей концевой TU для идентичной CU. В некоторых примерах, максимальный размер концевой TU может соответствовать размеру соответствующей концевой CU.
[58] HEVC указывает четыре размера единиц преобразования (TU) в 4×4, 8×8, 16×16 и 32×32 для того, чтобы кодировать остаток прогнозирования. CU может быть рекурсивно сегментирована на 4 или более TU. TU могут использовать целочисленные базисные функции, которые являются аналогичными дискретному косинусному преобразованию (DCT). Дополнительно, в некоторых примерах, блоки преобразования сигналов яркости 4×4, которые принадлежат внутренне кодированной области, могут преобразовываться с использованием целочисленного преобразования, которое извлекается из дискретного синусного преобразования (DST). Блоки преобразования сигналов цветности могут использовать TU-размеры, идентичные TU-размерам блоков преобразования сигналов яркости.
[59] Кроме того, TU концевых CU также могут быть ассоциированы со структурами данных в виде дерева квадрантов, называемыми "остаточными деревьями квадрантов (RQT)". Иными словами, концевая CU может включать в себя дерево квадрантов, указывающее то, как концевая CU сегментируется на TU. Корневой узел дерева квадрантов TU, в общем, соответствует концевой CU, в то время как корневой узел дерева квадрантов CU, в общем, соответствует древовидному блоку (или LCU). TU RQT, которые не разбиваются, называются "концевыми TU". В общем, это раскрытие сущности использует термины CU и TU, чтобы ссылаться на концевую CU и концевую TU, соответственно, если не указано иное.
[60] Когда CU внешне кодируется, один набор информации движения может присутствовать для каждой PU. В некоторых примерах, к примеру, когда PU расположена в B-вырезки, два набора информации движения могут присутствовать для каждой PU. Дополнительно, каждая PU может кодироваться с уникальным режимом внешнего прогнозирования для того, чтобы извлекать набор информации движения для каждой PU.
[61] Видеопоследовательность типично включает в себя серии видеокадров или изображений. Группа изображений (GOP), в общем, содержит последовательность из одного или более видеоизображений. GOP может включать в себя в заголовке GOP, в заголовке одного или более изображений или в другом месте синтаксические данные, которые описывают число изображений, включенных в GOP. Каждая вырезка изображения может включать в себя синтаксические данные вырезки, которые описывают режим кодирования для вырезки. Видеокодер 20 типично управляет видеоблоками в пределах отдельных вырезок для того, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или варьирующиеся размеры и могут отличаться по размеру согласно указанному стандарту кодирования.
[62] Фиг. 2 является концептуальной схемой 250, иллюстрирующей HEVC-режимы внутреннего прогнозирования. Для компонента сигнала яркости каждой PU, способ внутреннего прогнозирования используется с 33 режимами углового внутреннего прогнозирования (с индексами от 2 до 34), DC-режимом (с индексом 1) и планарным режимом (с индексом 0), как описано относительно фиг. 2.
[63] В дополнение к вышеуказанным 35 режимам внутреннего прогнозирования, еще один режим внутреннего прогнозирования, называемый "внутренней импульсно-кодовой модуляцией (I-PCM)", также используется посредством HEVC. В I-PCM-режиме, прогнозирование, преобразование, квантование и энтропийное кодирование обходятся, тогда как прогнозные выборки кодируются посредством предварительно заданного числа битов. Основная цель I-PCM-режима состоит в том, чтобы справляться с ситуацией, когда сигнал не может эффективно кодироваться посредством других режимов внутреннего прогнозирования.
[64] После внутреннего прогнозирующего кодирования или внешнего прогнозирующего кодирования с использованием PU CU, видеокодер 20 может вычислять остаточные данные для TU CU. PU могут содержать синтаксические данные, описывающие способ или режим формирования прогнозирующих пиксельных данных в пространственной области (также называемой "пиксельной областью"), и TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования или концептуально аналогичного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселами некодированного изображения и прогнозными значениями, соответствующими PU. Видеокодер 20 может формировать TU, включающую в себя остаточные данные для CU, и затем преобразовывать TU таким образом, чтобы формировать коэффициенты преобразования для CU.
[65] После преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 20 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону до m-битового значения в ходе квантования, при этом n больше m.
[66] После квантования, видеокодер 200 может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано с возможностью размещать коэффициенты с более высокой энергией (и, следовательно, более низкой частотой) в начале массива и размещать коэффициенты с более низкой энергией (и, следовательно, более высокой частотой) в конце массива. В некоторых примерах, видеокодер 20 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, так чтобы формировать преобразованный в последовательную форму вектор, который может энтропийно кодироваться. В других примерах, видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, видеокодер 20 может энтропийно кодировать синтаксические элементы, представляющие коэффициенты преобразования в одномерном векторе, например, согласно контекстно-адаптивному кодированию переменной длины (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), синтаксическому контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию на основе сегментирования на интервалы вероятности (PIPE) или другой технологии энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 30 при декодировании видеоданных.
[67] Видеокодер 20 может выводить поток битов, который включает в себя последовательность битов, которая формирует представление кодированных изображений и ассоциированных данных. Таким образом, поток битов содержит кодированное представление видеоданных. Поток битов может содержать последовательность единиц уровня абстрагирования от сети (NAL). NAL-единица представляет собой синтаксическую структуру, содержащую индикатор относительно типа данных в NAL-единице, и байты, содержащие эти данные в форме первичной байтовой последовательности данных (RBSP), перемежаемой при необходимости битами предотвращения эмуляции. Каждая из NAL-единиц включает в себя заголовок NAL-единицы и инкапсулирует RBSP. Заголовок NAL-единицы может включать в себя синтаксический элемент, который указывает код типа NAL-единицы. Код типа NAL-единицы, указываемый посредством заголовка NAL-единицы для NAL-единицы, указывает тип NAL-единицы. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которое инкапсулируется в NAL-единице. В некоторых случаях, RBSP включает в себя нулевые биты.
[68] Различные типы NAL-единиц могут инкапсулировать различные типы RBSP. Например, различные типы NAL-единицы могут инкапсулировать различные RBSP для наборов параметров видео (VPS), наборов параметров последовательности (SPS), наборов параметров изображения (PPS), кодированных вырезок, дополнительной улучшающей информации (SEI) и т.д. NAL-единицы, которые инкапсулируют RBSP для данных кодирования видео (в противоположность RBSP для наборов параметров и SEI-сообщений), могут упоминаться в качестве NAL-единиц слоя кодирования видео (VCL). В HEVC (т.е. в немногослойном HEVC), единица доступа может представлять собой набор NAL-единиц, которые являются последовательными в порядке декодирования и содержат точно одно кодированное изображение. В дополнение к NAL-единицам кодированных вырезок кодированного изображения, единица доступа также может содержать другие NAL-единицы, не содержащие вырезки кодированного изображения. В некоторых примерах, декодирование единицы доступа всегда приводит к декодированному изображению. Дополнительная улучшающая информация (SEI) содержит информацию, которая не является обязательной для того, чтобы декодировать выборки кодированных изображений из VCL NAL-единиц. SEI RBSP содержит одно или более SEI-сообщений.
[69] Как вкратце указано выше, NAL-единицы могут инкапсулировать RBSP для VPS, SPS и PPS. VPS представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более всех кодированных видеопоследовательностей (CVS). SPS также представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более всех CVS. SPS может включать в себя синтаксический элемент, который идентифицирует VPS, который является активным, когда SPS является активным. Таким образом, синтаксические элементы VPS могут быть более обобщенно применимыми, чем синтаксические элементы SPS. PPS представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более кодированных изображений. PPS может включать в себя синтаксический элемент, который идентифицирует SPS, который является активным, когда PPS является активным. Заголовок вырезки для вырезки может включать в себя синтаксический элемент, который указывает PPS, который является активным, когда кодируется вырезка.
[70] Видеодекодер 30 может принимать поток битов, сформированный посредством видеокодера 20. Помимо этого, видеодекодер 30 может синтаксически анализировать поток битов, чтобы получать синтаксические элементы из потока битов. Видеодекодер 30 может восстанавливать изображения видеоданных на основе, по меньшей мере частично, синтаксических элементов, полученных из потока битов. Процесс для того, чтобы восстанавливать видеоданные, в общем, может быть обратным по отношению к процессу, выполняемому посредством видеокодера 20. Например, видеодекодер 30 может использовать векторы движения PU для того, чтобы определять прогнозирующие блоки для PU текущей CU. Помимо этого, видеодекодер 30 может обратно квантовать блоки коэффициентов TU текущей CU. Видеодекодер 30 может выполнять обратные преобразования для блоков коэффициентов для того, чтобы восстанавливать блоки преобразования TU текущей CU. Видеодекодер 30 может восстанавливать блоки кодирования текущей CU посредством суммирования выборок прогнозирующих блоков для PU текущей CU с соответствующими выборками блоков преобразования TU текущей CU. Посредством восстановления блоков кодирования для каждой CU изображения, видеодекодер 30 может восстанавливать изображение.
[71] В HEVC-стандарте, предусмотрено два режима внешнего прогнозирования. Эти режимы внешнего прогнозирования представляют собой режим объединения (следует отметить, что режим пропуска рассматривается как частный случай режима объединения) и режим усовершенствованного прогнозирования векторов движения (AMVP), соответственно, для единицы прогнозирования (PU). В AMVP-режиме или в режиме объединения, список возможных вариантов векторов движения (MV) может поддерживаться для нескольких предикторов векторов движения. Вектор (векторы) движения, а также опорные индексы в режиме объединения текущей PU могут формироваться посредством извлечения одного возможного варианта из списка возможных MV-вариантов.
[72] В некоторых случаях, список возможных MV-вариантов может содержать до 5 возможных вариантов для режима объединения и только два возможных варианта для AMVP-режима. Возможный вариант объединения может содержать набор информации движения, например, векторов движения, соответствующих как спискам опорных изображений (к примеру, списку 0 и списку 1), так и опорным индексам. Если возможный вариант объединения идентифицируется посредством индекса объединения, опорные изображения используются для прогнозирования текущих блоков, а также определяются ассоциированные векторы движения. Тем не менее, в AMVP-режиме для каждого потенциального направления прогнозирования или из списка 0 или из списка 1, опорный индекс должен явно передаваться в служебных сигналах, вместе с MVP-индексом в список возможных MV-вариантов, поскольку возможный AMVP-вариант может содержать только вектор движения. В AMVP-режиме, могут быть дополнительно уточнены прогнозные векторы движения.
[73] Возможный вариант объединения может соответствовать полному набору информации движения, в то время как возможный AMVP-вариант может содержать всего один вектор движения для конкретного направления прогнозирования и опорного индекса. Возможные варианты для обоих режимов могут аналогично извлекаться из идентичных пространственных и временных соседних блоков.
[74] Фиг. 3A и фиг. 3B являются концептуальными схемами, иллюстрирующими пространственные соседние возможные варианты векторов движения для режимов объединения и усовершенствованного прогнозирования векторов движения (AMVP) согласно одной или более технологий настоящего раскрытия сущности. Как описано относительно фиг. 3A и фиг. 3B, пространственные возможные MV-варианты извлекаются из соседних блоков, показанных на фиг. 3A и фиг. 3B, для конкретной PU (PU0), хотя способы, формирующие возможные варианты из блоков, отличаются для режимов объединения и AMVP-режимов.
[75] В режиме объединения, до четырех пространственных возможных MV-вариантов могут извлекаться с порядками, показанными на фиг. 3A с помощью номеров, и порядок является следующим: левый (0), верхний (1), правый верхний (2), левый нижний (3) и левый верхний (4), как показано на фиг. 3A.
[76] В AMVP-режиме, соседние блоки разделяются на две группы: левую группу 310, состоящую из блока 0 и 1, и верхнюю группу 320, состоящую из блоков 2, 3 и 4, как показано на фиг. 3B. Для каждой группы 310 и 320, потенциальный возможный вариант в соседнем блоке, ссылающийся на опорное изображение, идентичное опорному изображению, указываемому посредством передаваемого в служебных сигналах опорного индекса, имеет наивысший приоритет для выбора с возможностью формировать конечный возможный вариант группы. Возможно то, что все соседние блоки не содержат вектор движения, указывающий на идентичное опорное изображение. Следовательно, если такой возможный вариант не может быть найден, первый доступный возможный вариант масштабируется с возможностью формировать конечный возможный вариант, в силу чего могут компенсироваться разности временного расстояния.
[77] Многие варианты применения, такие как удаленный рабочий стол, удаленные игры, беспроводные дисплеи, автомобильная информационно-развлекательная среда, облачные вычисления и т.д., становятся обычными в повседневной жизни. Видеоконтент в этих вариантах применения обычно представляет собой комбинации естественного контента, текста, искусственной графики и т.д. В области текста и искусственной графики, зачастую существуют повторяющиеся шаблоны (к примеру, символы, значки, символы и т.д.). Внутреннее блочное копирование (внутреннее BC) представляет собой технологию, которая может обеспечивать возможность видеокодеру удалять такую избыточность и повышать эффективность внутрикадрового кодирования. В некоторых случаях, внутреннее BC альтернативно может упоминаться в качестве внутренней компенсации движения (MC).
[78] Согласно некоторым технологиям внутреннего BC, видеокодеры могут использовать блоки ранее кодированных видеоданных в изображении, идентичном изображению текущего блока видеоданных, которые либо находятся непосредственно выше, либо непосредственно совмещены горизонтально с текущим блоком (который должен быть кодирован) видеоданных в идентичном изображении для прогнозирования текущего блока. Другими словами, если изображение видеоданных налагается на двумерную сетку, каждый блок видеоданных должен занимать уникальный диапазон значений x и значений y. Соответственно, некоторые видеокодеры могут прогнозировать текущий блок видеоданных на основе блоков ранее кодированных видеоданных, которые совместно используют только идентичный набор значений x (т.е. вертикально совмещенный с текущим блоком) или идентичный набор значений y (т.е. горизонтально совмещенный с текущим блоком).
[79] Фиг. 4 является концептуальной схемой, иллюстрирующей пример внутреннего блочного копирования (BC) согласно одной или более технологий настоящего раскрытия сущности. Как описано относительно фиг. 4, внутреннее BC включено в RExt. Пример внутреннего BC показан на фиг. 4, на котором текущая CU 402 прогнозируется из уже декодированного блока 404 текущего изображения/вырезки. Текущий размер блока внутреннего BC может быть идентичным CU-размеру, который варьируется от 8×8 до 64×64, хотя в некоторых вариантах применения в дополнение могут применяться дополнительные ограничения.
[80] При традиционном кодировании видео, изображения предположительно могут иметь непрерывный тон и пространственную плавность. На основе этих допущений, разработаны различные инструментальные средства, такие как преобразование на основе блоков, фильтрация и т.д., и они демонстрируют хорошую производительность для видео с естественным контентом. Тем не менее, в определенных вариантах применения, таких как удаленный рабочий стол, совместная работа и беспроводной дисплей, машиногенерируемый экранный контент может представлять собой доминирующий контент, который должен сжиматься. Этот тип контента имеет тенденцию иметь дискретный тон и рисует резкие линии с высококонтрастными границами объектов. Тем не менее, допущение относительно непрерывного тона и плавности больше не может применяться. В связи с этим, традиционные технологии кодирования видео не могут работать эффективно.
[81] Чтобы исправлять это снижение эффективности, видеокодеры могут использовать кодирование в палитровом режиме. Предварительная заявка на патент (США) порядковый номер 61/810,649, поданная 10 апреля 2013 года, описывает примеры технологий палитрового кодирования. Для каждой CU, может извлекаться палитра, которая включает в себя наиболее доминирующие пиксельные значения в текущей CU. Сначала передаются размер и элементы палитры. Пикселы в CU затем кодируются согласно конкретному порядку сканирования. Для каждого местоположения, видеокодер 20 может сначала передавать синтаксический элемент, такой как флаг, palette_flag, чтобы указывать то, находится пиксельное значение в палитре ("режим серий") или нет ("пиксельный режим").
[82] В "режиме серий", видеокодер 20 может передавать в служебных сигналах индекс палитры, после которого следует "серия". Серия представляет собой синтаксический элемент, который указывает число последовательных пикселов в порядке сканирования, которые имеют значение индекса палитры, идентичное значению индекса палитры пиксела, в данный момент кодируемого. Если несколько пикселов в непосредственной последовательности в порядке сканирования имеют идентичное значение индекса палитры, то "режим серий" может указываться посредством синтаксического элемента, такого как palette_flag. Может определяться значение счетчика, которое равно числу пикселов, идущих после текущего пиксела, которые имеют значение индекса палитры, идентичное значению индекса палитры текущего пиксела, и серия задается равной значению счетчика. Видеокодер 20 не должен передавать palette_flag или индекс палитры для следующих позиций, которые охватываются "серией", поскольку каждый из пикселов после текущего пиксела имеет идентичное пиксельное значение. На стороне декодера, должно декодироваться только первое значение индекса палитры для текущего пиксела, и результат должен быть дублирован для каждого пиксела в "серии" пикселов, указываемых в синтаксическом элементе Run. В "пиксельном режиме", видеокодер 20 передает пиксельное выборочное значение для этой позиции. Если синтаксический элемент, такой как palette_flag, указывает "пиксельный режим", то значение индекса палитры определяется только для текущего декодируемого пиксела.
[83] Внутриконтурное преобразование цветового пространства для остаточных сигналов предложено для последовательностей в формате сигнала цветности 4:4:4. Процесс внутриконтурного преобразования цветового пространства преобразует сигналы ошибок прогнозирования (т.е. остаточные сигналы) в RGB/YUV-формате сигнала цветности в сигналы ошибок прогнозирования в субоптимальном цветовом пространстве. Внутриконтурное преобразование цветового пространства позволяет дополнительно уменьшать корреляцию между цветовыми компонентами. Матрица преобразования может извлекаться из пиксельных выборочных значений для каждой CU посредством разложения по сингулярным значениям (SVD). Преобразование цветового пространства может применяться к ошибке прогнозирования как внутреннего режима, так и внешнего режима.
[84] Когда преобразование цветового пространства применяется к внешнему режиму, остаток сначала преобразуется в другую область с извлеченной матрицей преобразования. После преобразования цветового пространства, по порядку выполняются традиционные этапы кодирования, такие как DCT/DST, квантование и энтропийное кодирование.
[85] Когда преобразование цветового пространства применяется к CU, кодированной с использованием внутреннего режима, прогнозный и текущий блок сначала преобразуются в другую область с извлеченной матрицей преобразования, соответственно. После преобразования цветового пространства, остаток между текущим блоком и предиктором для текущего блока дополнительно преобразуется с помощью DCT/DST, квантуется и энтропийно кодируется.
[86] Устройство кодирования видео, к примеру, видеокодер 20, выполняет прямую операцию, при которой матрица преобразования цветового пространства, содержащая значения a, b, c, d, e, f, g, h и i преобразования, применяется к трем плоскостям G, B и R, чтобы получать значения для цветовых компонентов P, Q и S следующим образом:
t
t
t
t
t
t
t
t
t
[87] Результирующие значения могут отсекаться в диапазоне HEVC-спецификации, поскольку значения могут быть увеличены вплоть до  раз в наихудшем случае. Устройство декодирования видео, к примеру, видеодекодер 30, выполняет обратную операцию, при которой матрица преобразования цветового пространства, содержащая значения a, b, c, d, e, f, g, h и i преобразования, применяется к трем цветовым компонентам P', Q' и R', чтобы извлекать три плоскости G', B' и R' следующим образом:
[88] Фиг. 5 является концептуальной схемой, иллюстрирующей пример целевого блока и опорной выборки для внутреннего блока 8×8, согласно одной или более технологий настоящего раскрытия сущности. Матрица преобразования может извлекаться с использованием разложения по сингулярным значениям (SVD) из значений опорных выборок. Устройство кодирования видео может использовать различные опорные выборки для внутреннего случая и внешнего случая. Для случая внутренне кодированного блока, целевые блоки и опорные выборки могут быть такими, как показано на фиг. 5. На фиг. 5, целевой блок состоит из заштрихованных выборок 8×8, и опорные выборки являются полосатыми и точечными выборками.
[89] Для случая внешне кодированного блока, опорные выборки для извлечения матрицы могут быть идентичными опорным выборкам для компенсации движения. Опорные выборки в блоке усовершенствованного прогнозирования движения (AMP) могут субдискретизироваться, так что число опорных выборок уменьшается. Например, число опорных выборок в блоке 12×16 уменьшается на 2/3.
[90] В некоторых примерах вышеописанного способа, может всегда применяться процесс преобразования цветового пространства. Следовательно, может не возникать необходимости передавать в служебных сигналах то, активируется процесс преобразования цветового пространства или нет. Помимо этого, и видеокодер 20 и видеодекодер 30 могут использовать идентичный способ для того, чтобы извлекать матрицу преобразования, во избежание дополнительного объема служебной информации для передачи в служебных сигналах матрицы преобразования.
[91] Видеокодер 20 и видеодекодер 30 могут использовать различные матрицы преобразования цветового пространства. Например, видеокодер 20 и видеодекодер 30 могут применять различные матрицы преобразования цветового пространства для различных цветовых пространств. Например, видеокодер 20 и видеодекодер 30 могут использовать пару матриц YCbCr-преобразования, чтобы преобразовывать выборочные значения из цветового RGB-пространства в цветовое YCbCr-пространство и обратно. Следующие уравнения показывают один примерный набор матриц YCbCr-преобразования:
Прямая:
Обратная:
[92] В другом примере, видеокодер 20 и видеодекодер 30 могут использовать пару матриц YCoCg-преобразования, чтобы преобразовывать выборочные значения из цветового RGB-пространства в цветовое YCoCg-пространство и обратно. Следующие уравнения показывают один примерный набор матриц YCoCg-преобразования:
Прямая:
Обратная:
[93] Другая такая матрица может представлять собой YCoCg-R-матрицу, которая является изменяемой версией YCoCg-матрицы, которая масштабирует Co- и Cg-компоненты на коэффициент два. Посредством использования технологии лифтинга, видеокодер 20 и видеодекодер 30 могут достигать прямого и обратного преобразования посредством следующих уравнений:
Прямая:
Обратная:
[94] В вышеприведенных уравнениях и матрицах, прямые преобразования могут выполняться перед процессом кодирования (например, посредством видеокодера). С другой стороны, обратные преобразования могут выполняться после процесса декодирования (например, посредством видеодекодера).
[95] Заголовок вырезки для вырезки содержит информацию относительно вырезки. Например, заголовок вырезки для вырезки может содержать синтаксические элементы, из которых видеодекодер 30 может извлекать параметры квантификации для вырезки. В HEVC, синтаксическая структура заголовков сегментов вырезок соответствует заголовку вырезки. Следующая таблица показывает часть заголовка сегмента вырезок, как задано ниже:
n
n
[96] В вышеприведенном примере и других синтаксических таблицах этого раскрытия сущности, синтаксические элементы, имеющие дескрипторы формы u(n), где  является неотрицательным целым числом, являются значениями без знака длины . Дополнительно, дескриптор se(v) указывает целочисленный кодированный экспоненциальным кодом Голомба синтаксический элемент 0-го порядка со знаком с левым битом сначала.
Y
Y
Y
Y
[97] В вышеприведенной таблице, синтаксический элемент slice_qp_delta указывает начальное значение Qp, которое должно использоваться для блоков кодирования в вырезки до тех пор, пока не будет модифицировано посредством значения CuQpDeltaVal в CU-слое. Qp для вырезки представляет собой QP для компонентов сигнала яркости блоков вырезки. Начальное значение параметра Qp квантования для вырезки, SliceQp, может извлекаться следующим образом:
Y
SliceQp=26+init_qp_minus26+slice_qp_delta
Y
Y
Y
Y
Y
[98] В вышеприведенном уравнении, init_qp_minus26 представляет собой синтаксический элемент, передаваемый в служебных сигналах в PPS. Синтаксический элемент init_qp_minus26 указывает начальное значение минус 26 для SliceQp для каждой вырезки. Значение SliceQp может находиться в диапазоне от -QpBdOffset до +51, включительно. QpBdOffset является переменной, равной синтаксическому элементу bit_depth_luma_minus8, умноженному на 6. Синтаксический элемент bit_depth_luma_minus8 указывает битовую глубину выборок массива сигналов яркости и значение смещения QpBdOffset диапазона параметров квантования сигналов яркости. Видеокодер 20 может передавать в служебных сигналах синтаксический элемент bit_depth_luma_minus8 в SPS.
Cb
[99] Другой синтаксический элемент, slice_cb_qp_offset, указывает разность, которая должна суммироваться со значением pps_cb_qp_offset (или смещением параметров квантования сигналов яркости) при определении значения параметра Qp' квантования. Значение slice_cb_qp_offset может находиться в диапазоне от -12 до +12, включительно. Когда slice_cb_qp_offset не присутствует, slice_cb_qp_offset логически выводится равным 0. Значение pps_cb_qp_offset+slice_cb_qp_offset может находиться в диапазоне от -12 до +12, включительно.
Cr
[100] Синтаксический элемент slice_cr_qp_offset указывает разность, которая должна суммироваться со значением pps_cr_qp_offset (или смещением параметров квантования сигналов яркости) при определении значения параметра Qp' квантования. Значение slice_cr_qp_offset может находиться в диапазоне от -12 до +12, включительно. Когда slice_cr_qp_offset не присутствует, slice_cr_qp_offset может логически выводиться равным 0. Значение pps_cr_qp_offset+slice_cr_qp_offset может находиться в диапазоне от -12 до +12, включительно.
[101] Когда синтаксический элемент cu_chroma_qp_offset_enabled_flag равен 1, cu_chroma_qp_offset_flag может присутствовать в синтаксисе единицы преобразования. Когда cu_chroma_qp_offset_enabled_flag равен 0, cu_chroma_qp_offset_flag не может присутствовать в синтаксисе единицы преобразования. Когда не присутствует, значение cu_chroma_qp_offset_enabled_flag логически выводится равным 0.
[102] Единица преобразования может иметь следующий синтаксис:
[103] Синтаксический элемент cu_qp_delta_abs указывает абсолютное значение разности CuQpDeltaVal между параметром квантования сигналов яркости текущей единицы кодирования и ее прогнозированием. В вышеприведенной таблице, дескриптор ae(v) указывает контекстно-адаптивно арифметически энтропийно кодированный синтаксический элемент.
[104] Синтаксический элемент cu_qp_delta_sign_flag указывает знак CuQpDeltaVal. Если cu_qp_delta_sign_flag равен 0, соответствующий CuQpDeltaVal имеет положительное значение. Иначе (cu_qp_delta_sign_flag равно 1), соответствующий CuQpDeltaVal имеет отрицательное значение. Когда cu_qp_delta_sign_flag не присутствует, cu_qp_delta_sign_flag логически выводится равным 0.
[105] Когда cu_qp_delta_abs присутствует, переменные IsCuQpDeltaCoded и CuQpDeltaVal могут извлекаться следующим образом.
IsCuQpDeltaCoded=1
CuQpDeltaVal=cu_qp_delta_abs*(1-2*cu_qp_delta_sign_flag)
Y
Y
[106] Значение CuQpDeltaVal может находиться в диапазоне от -(26+QpBdOffset/2) до +(25+QpBdOffset/2), включительно.
[107] Синтаксический элемент cu_chroma_qp_offset_flag, когда присутствует и равен 1, указывает то, что запись в cb_qp_offset_list[] используется для того, чтобы определять значение CuQpOffsetCb, и соответствующая запись в cr_qp_offset_list[] используется для того, чтобы определять значение CuQpOffsetCr. Когда переменная cu_chroma_qp_offset_flag равна 0, эти списки не используются для того, чтобы определять значения CuQpOffsetCb и CuQpOffsetCr.
[108] Синтаксический элемент cu_chroma_qp_offset_idx, когда присутствует, указывает индекс в cb_qp_offset_list[] и cr_qp_offset_list[] который используется для того, чтобы определять значение CuQpOffsetCb и CuQpOffsetCr. Когда присутствует, значение cu_chroma_qp_offset_idx должно находиться в диапазоне от 0 до chroma_qp_offset_list_len_minus1, включительно. Когда не присутствует, значение cu_chroma_qp_offset_idx логически выводится равным 0.
r
b
r
b
r
[109] Могут проверяться случай, в котором cu_chroma_qp_offset_flag не присутствует, поскольку cu_chroma_qp_offset_flag уже присутствует в некоторой другой CU идентичной группы, и случай, в котором флаг равен 1, но индекс не присутствует, поскольку список содержит только одну запись. Когда cu_chroma_qp_offset_flag присутствует, переменная IsCuChromaQpOffsetCoded задается равной 1. Затем извлекаются переменные CuQpOffsetCb и CuQpOffsetC. Если cu_chroma_qp_offset_flag равен 1, то CuQpOffsetC=cb_qp_offset_list[cu_chroma_qp_offset_idx] и CuQpOffsetC=cr_qp_offset_list[cu_chroma_qp_offset_idx]. Иначе (cu_chroma_qp_offset_flag равно 0), CuQpOffsetC и CuQpOffsetC оба задаются равными 0.
Y
Y
Cb
Cr
[110] В процессе декодирования, для процесса извлечения для параметров квантования, ввод в этот процесс представляет собой местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего изображения. В этом процессе, извлекаются переменная Qp, параметр Qp' квантования сигналов яркости и параметры Qp' и Qp' квантования сигналов цветности.
Y_PRED
[111] В соответствии с технологиями этого раскрытия сущности, группа квантования представляет собой набор TU CU, причем каждая из TU совместно использует идентичные QP-значения. Местоположение (xQg, yQg) сигнала яркости указывает левую верхнюю выборку сигнала яркости текущей группы квантования относительно левой верхней выборки сигнала яркости текущего изображения. Горизонтальные и вертикальные позиции xQg и yQg задаются равными xCb-(xCb and ((1<<Log2MinCuQpDeltaSize)-1)) и yCb-(yCb and ((1<<Log2MinCuQpDeltaSize)-1)), соответственно. Размер сигнала яркости группы квантования, Log2MinCuQpDeltaSize, определяет размер сигнала яркости наименьшей области в блоке дерева кодирования, который совместно использует идентичный qP.
Y_PRED
[112] Видеокодер может извлекать прогнозный параметр qP квантования сигналов яркости посредством следующих упорядоченных этапов:
Y_PREV
Y_PREV
Y
Y_PREV
Y
[113] 1) Переменная qP может извлекаться. Если одно или более из следующих условий являются истинными, видеокодер задает qP равной SliceQp: Текущая группа квантования представляет собой первую группу квантования в вырезки, текущая группа квантования представляет собой первую группу квантования в мозаичном фрагменте, или текущая группа квантования представляет собой первую группу квантования в строке блоков дерева кодирования, и entropy_coding_sync_enabled_flag равен 1. В противном случае, qP задается равной параметру Qp квантования сигналов яркости последней единицы кодирования в предыдущей группе квантования в порядке декодирования.
Y_A
Y_A
Y_PREV
[114] 2) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg-1, yQg), в качестве вводов, и вывод назначается availableA. Переменная qP извлекается следующим образом: Если одно или более из следующих условий являются истинными, qP задается равной qP: availableA равен лжи, или адрес ctbAddrA блока дерева кодирования для блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg-1, yQg) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrA извлекается следующим образом:
xTmp=(xQg-1)>>Log2MinTrafoSize
yTmp=yQg>>Log2MinTrafoSize
minTbAddrA=MinTbAddrZs[xTmp][yTmp]
ctbAddrA=(minTbAddrA>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_A
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости единицы кодирования, содержащей блок кодирования сигналов яркости, покрывающий (xQg-1, yQg).
Y_B
Y_B
Y_PREV
[115] 3) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg, yQg-1), в качестве вводов. Вывод назначается availableB. Переменная qP извлекается. Если одно или более из следующих условий являются истинными, qPзадается равной qP: availableB равен лжи, или адрес блока дерева кодирования ctbAddrB блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg, yQg-1) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrB извлекается следующим образом:
xTmp=xQg>>Log2MinTrafoSize
yTmp=(yQg-1)>>Log2MinTrafoSize
minTbAddrB=MinTbAddrZs[xTmp][yTmp]
ctbAddrB=(minTbAddrB>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_B
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости CU, содержащей блок кодирования сигналов яркости, покрывающий (xQg, yQg-1).
Y_PRED
[116] Прогнозный параметр qP квантования сигналов яркости может извлекаться следующим образом:
Y_PRED
Y_A
Y_B
qP=(qP+qP+1)>>1
Y
[117] Переменная Qp может извлекаться следующим образом:
Y
Y_PRED
Y
Y
Y
Qp=((qP+CuQpDeltaVal+52+2*QpBdOffset)%(52+QpBdOffset))-QpBdOffset
Y
[118] Параметр Qp' квантования сигналов яркости может извлекаться следующим образом:
Y
Y
Y
Qp'=Qp+QpBdOffset
Cb
Cr
[119] Когда ChromaArrayType не равен 0, переменные qPi и qPi извлекаются следующим образом:
Cb
C
Y+
b
qPi=Clip3(-QpBdOffset, 57, Qppps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetC)
Cr
C
Y
r
qPi=Clip3(-QpBdOffset, 57, Qp+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetC)
Cb
Cr
C
Cb
Cr
Cb
Cr
Cb
Cr
[120] Если ChromaArrayType равен 1, переменные qP и qP задаются равными значению Qp на основе индекса qPi, равного qPi и qPi, соответственно. В противном случае, переменные qP и qP задаются равными Min(qPi, 51), на основе индекса qPi, равного qPi и qPi, соответственно.
Cb
Cr
[121] Параметры квантования сигналов цветности для Cb- и Cr-компонентов, Qp' и Qp', извлекаются следующим образом:
Cb
Cb
C
Qp'=qP+QpBdOffset
Cr
Cr
C
Qp'=qP+QpBdOffset
C
[122] Спецификация Qp в качестве функции qPi для ChromaArrayType, равного 1, заключается в следующем:
qPi
<30
30
31
32
33
34
35
36
37
38
39
40
41
42
43
>43
Qp<sub>C</sub>
=qPi
29
30
31
32
33
33
34
34
35
35
36
36
37
37
=qPi-6
Y
Cb
C
Y
В процессе деквантования, извлекается параметр qP квантования для каждого индекса (cIdx) компонента. Если cIdx равен 0, qP=Qp'. В противном случае, если cIdx равен 1, qP=Qp'. Иначе (cIdx равен 2), qP=Qp'. В процессе фильтрации для удаления блочности, во-первых, определяются края сигнала яркости/сигнала цветности, которые зависят от Qp. Подразделы 8.7.2.5.3 и 8.7.2.5.5 HEVC предоставляют подробную информацию процесса фильтрации для удаления блочности.
[123] Предварительная заявка на патент (США) 61/981645, поданная 18 апреля 2014 года, задает формулы для внутриконтурного преобразования цветов, такого как нормализованное YCgCo-преобразование и YCgCo-преобразование с приращением битовой глубины. Помимо этого, предварительная заявка на патент (США) 61/981645 описывает то, что преобразование цветов может применяться к остаточной области для внутренних режимов, т.е. после процесса прогнозирования перед традиционным процессом преобразования/квантования. Кроме того, предварительная заявка на патент (США) 61/981645 указывает то, что различные цветовые компоненты могут использовать различные дельта-QP для блоков, которые кодируются с преобразованием цветов на основе нормы преобразования.
[124] Технологии кодирования видео согласно предварительной заявке на патент (США) 61/981645 могут быть улучшены несколькими способами. Например, фиксированные настройки дельта-QP для трех цветовых компонентов могут быть не оптимальными для всех случаев, таких как полностью внутренний режим/случайный доступ/низкая задержка. Дополнительно, при использовании ненормализованного YCgCo-преобразования с приращением битовой глубины, преобразование приводит к увеличению битовой ширины для нормального преобразования, что повышает затраты для аппаратной реализации. С другой стороны, если нормальное преобразование оставлено без изменений, оно может приводить к переполнению для некоторых случаев вследствие повышенной точности входных остаточных данных.
[125] Технологии этого раскрытия сущности предоставляют решения для того, чтобы повышать производительность кодирования внутриконтурного преобразования цветового пространства и уменьшать сложность декодера по сравнению с предыдущими проектными решениями. Видеокодер, к примеру, видеокодер 20 или видеодекодер 30, может выполнять любую из технологий, как описано со ссылкой на фиг. 1-11.
C0
C1
C2
C0
C1
C2
C0
C1
C0
C1
C2
[126] В некоторых примерах, набор дельта-значений QP для трех декодированных цветовых компонентов обозначается посредством (deltaQP, deltaQP, deltaQP), которые указывают смещение QP для блоков с активированным преобразованием цветов по сравнению с qP, определенным традиционным способом. Для блоков, кодированных с активированным преобразованием цветов, конечный QP, используемый в процессе деквантования, задается равным qP+deltaQP, qP+deltaQP, qP+deltaQP для трех цветовых компонентов с индексом cIdx компонента, равным 0, 1, 2, соответственно; qP является выводом традиционного процесса QP-извлечения. В некоторых примерах, deltaQP равен deltaQP, тогда как и deltaQP, и deltaQP меньше deltaQP.
[127] Например, видеокодер 20 может кодировать CU видеоданных. При кодировании видеоданных, видеокодер 20 может определять кодировать CU с использованием преобразования цветового пространства. Видеокодер 20 может определять начальный QP для цветового компонента и задавать конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеокодер 20 может квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый коэффициент квантован, видеокодер 20 дополнительно может выводить кодированную CU на основе блоков квантованных коэффициентов для CU в кодированном потоке битов.
[128] В другом примере, видеодекодер 30 может декодировать CU видеоданных. При декодировании видеоданных, видеодекодер 30 может определять то, что CU кодирована с использованием преобразования цветового пространства. Видеодекодер 30 может определять начальный QP для цветового компонента и определять конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеодекодер 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый блок коэффициентов обратно квантован, видеодекодер 30 может восстанавливать CU на основе обратно квантованных блоков коэффициентов для CU.
[129] В некоторых примерах, для цветового компонента из одного или более цветовых компонентов, QP-смещение для цветового компонента может передаваться в служебных сигналах в одном из PPS, SPS или заголовка вырезки. В некоторых дополнительных примерах, множество цветовых компонентов могут содержать три цветовых компонента. В таких примерах, первое QP-смещение для первого параметра квантования для первого цветового компонента равно второму QP-смещению для второго QP для второго цветового компонента, первое QP-смещение (и смещение второго параметра квантования) меньше третьего QP-смещения для третьего QP для третьего цветового компонента.
[130] Соответственно, в некоторых примерах, CU представляет собой первую CU. В таких примерах, видеокодер 20 может кодировать вторую CU. При кодировании второй CU, видеокодер 20 определяет второй QP для цветового компонента, может задавать конечное QP-значение для цветового компонента на основе второй CU, не кодируемой с использованием преобразования цветового пространства, таким образом, что второе конечное QP-значение для цветового компонента равно второму начальному QP-значению цветового компонента, и квантовать, на основе второго конечного QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Видеокодер 20 дополнительно может выводить поток битов видеоданных, содержащий второй набор одного или более энтропийно кодированных синтаксических элементов, представляющих каждый из квантованных вторых блоков коэффициентов.
[131] В этом примере декодирования, видеодекодер 30 может декодировать вторую CU. При декодировании второй CU, видеодекодер 30, для цветового компонента из множества цветовых компонентов, может определять второй QP для цветовых компонентов, определять второе конечное QP-значение для цветового компонента на основе второй CU, не кодируемой с использованием преобразования цветового пространства, таким образом, что второе конечное QP-значение для цветового компонента равно второму начальному QP-значению цветового компонента, и обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Видеодекодер 30 может восстанавливать вторую CU на основе каждого из одного или более обратно квантованных блоков коэффициентов второй CU.
C0
C1
C2
C0
C1
C2
C0
C1
C2
C0
C1
C2
C0
C1
C2
[132] Вместо использования одного фиксированного набора дельта-QP для всех режимов, настройки дельта-QP для трех цветовых компонентов могут быть зависимыми от режима. В одном примере, внутренний режим и режим внутреннего BC могут совместно использовать идентичный набор (deltaQP, deltaQP, deltaQP), тогда как внешние режимы могут совместно использовать другой набор (deltaQP, deltaQP, deltaQP), который не является идентичным набору, используемому посредством внутреннего режима и режима внутреннего BC. В другом примере, внутренние режимы могут совместно использовать идентичный набор (deltaQP, deltaQP, deltaQP), тогда как режим внутреннего BC и внешние режимы могут совместно использовать другой набор (deltaQP, deltaQP, deltaQP), который не является идентичным набору, используемому посредством внутренних режимов. В некоторых примерах, набор дельта-QP (deltaQP, deltaQP, deltaQP) может представлять собой (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc), (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc), при этом BitInc может быть равным 0, 1, 2.
[133] Другими словами, в некоторых примерах, множество цветовых компонентов содержат три цветовых компонента. В таких примерах, смещения параметров квантования могут быть равны (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc). В других таких примерах, смещения параметров квантования могут быть равны другим значениям, таким как (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc). В любом случае, BitInc может быть равен 0, 1 или 2.
[134] I-вырезка представляет собой вырезку, которая может содержать только внутренне кодированные блоки или внутренне BC-кодированные блоки. P-вырезка представляет собой вырезку, которая может содержать только внутренне кодированные и однонаправленно внешне прогнозированные блоки. B-вырезка представляет собой вырезку, которая может содержать внутренне прогнозированные блоки, однонаправленно внешне прогнозированные блоки и двунаправленно внешне прогнозированные блоки. В некоторых примерах, вместо использования одного фиксированного набора дельта-QP для всех режимов, настройки дельта-QP для трех цветовых компонентов могут зависеть от типов вырезок. В одном примере, I-вырезки могут совместно использовать идентичный набор, в то время как P/B-вырезки совместно используют идентичный набор. В другом примере, различные наборы могут применяться к I/P/B-вырезкам. Кроме того, в некоторых примерах, набор дельта-QP может передаваться в служебных сигналах в SPS, PPS или заголовке вырезки.
[135] Другими словами, в некоторых примерах, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, видеокодер 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, видеокодер 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
[136] В других примерах, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, видеодекодер 30 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, видеодекодер 30 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
N
N
N
N
[137] В некоторых примерах, когда динамический диапазон данных увеличивается вследствие преобразования цветов, видеокодер может отсекать преобразованный остаток до диапазона, идентичного диапазону этих остатков перед преобразованием цветов. Например, если входные данные имеют N-битовую точность, остаток после внутреннего/внешнего прогнозирования сможет находиться в диапазоне [-2, 2-1] (или более точно, в диапазоне [-2-1, 2-1]). После применения преобразования цветов преобразованный остаток также может отсекаться до идентичного диапазона. В некоторых примерах, когда флаг кодированного блока трех цветовых компонентов равен 0, обратное преобразование цветов может пропускаться.
Y
Y
C0
Y
Y
[138] В некоторых примерах, когда применяется преобразование цветов, извлеченный Qp традиционным способом дополнительно может модифицироваться на (Qp+deltaQP). Следовательно, в процессе фильтрации для удаления блочности, может сначала определяться граничная интенсивность краев сигнала яркости/сигнала цветности, которые зависят от модифицированного Qp. Альтернативно, немодифицированный Qp может использоваться при граничной интенсивности краев сигнала яркости/сигнала цветности процесса фильтрации для удаления блочности.
[139] Другими словами, в некоторых примерах, множество цветовых компонентов содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, видеокодер 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Видеокодер 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, видеокодер 20 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, видеокодер 20 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[140] В других примерах, множество цветовых компонентов содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, видеодекодер 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Видеодекодер 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, видеодекодер 30 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, видеодекодер 30 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[141] В некоторых примерах, в спецификации может добавляться такое ограничение, что когда преобразование цветов активируется для одной CU, и CU кодируется с внутренним режимом, все PU в CU должны использовать прямой режим (DM). Когда PU кодируется с использованием прямого режима, видеокодер 20 не передает в служебных сигналах синтаксические элементы информации движения, но может передавать в служебных сигналах синтаксические элементы, представляющие остаточные данные. Другими словами, режим прогнозирования сигналов цветности может быть идентичным режиму прогнозирования сигналов яркости. Альтернативно, кроме того, когда преобразование цветов активируется для одной CU, pcm_flag должен быть равен 0.
N
N
[142] Другими словами, в некоторых примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, видеокодер 20 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, видеокодер 20 дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности. В другом примере, одна CU может содержать четыре блока сигналов яркости. В таких примерах, каждый блок сигналов яркости может кодироваться с собственным режимом прогнозирования сигналов яркости, и режим прогнозирования сигналов яркости для левого верхнего блока сигналов яркости в CU может быть идентичным идентичному режиму прогнозирования сигналов цветности.
N
N
[143] В других примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, видеодекодер 30 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, видеодекодер 30 дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности. В другом примере, одна CU может содержать четыре блока сигналов яркости. В таких примерах, каждый блок сигналов яркости может кодироваться с собственным режимом прогнозирования сигналов яркости, и режим прогнозирования сигналов яркости для левого верхнего блока сигналов яркости в CU может быть идентичным идентичному режиму прогнозирования сигналов цветности.
[144] Видеокодер 20 дополнительно может отправлять синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе кадров и синтаксические GOP-данные, в видеодекодер 30, например, в заголовке кадра, в заголовке блока, в заголовке вырезки или в GOP-заголовке. Синтаксические GOP-данные могут описывать число кадров в GOP, и синтаксические данные кадров могут указывать режим кодирования/прогнозирования, используемый для того, чтобы кодировать соответствующий кадр.
[145] Фиг. 6 является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовывать технологии для кодирования видеоблоков с использованием процесса преобразования цветового пространства. Видеокодер 20 может выполнять внутреннее и внешнее кодирование видеоблоков в вырезках. Внутреннее кодирование основано на пространственном прогнозировании для того, чтобы уменьшать или удалять пространственную избыточность видео в данном видеокадре или изображении. Внешнее кодирование основано на временном прогнозировании для того, чтобы уменьшать или удалять временную избыточность видео в смежных кадрах или изображениях видеопоследовательности. Внутренний режим (I-режим) может означать любой из нескольких режимов пространственного кодирования. Внешние режимы, к примеру, однонаправленное прогнозирование (P-режим) или бипрогнозирование (B-режим), могут означать любой из нескольких режимов временного кодирования.
[146] Как показано на фиг. 6, видеокодер 20 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по фиг. 6, видеокодер 20 включает в себя модуль 40 выбора режима, запоминающее устройство 64 опорных изображений, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 40 выбора режима, в свою очередь, включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего прогнозирования и модуль 48 сегментации. Модуль 40 выбора режима также может включать в себя другие модули на основе выбранного режима, к примеру, модуль режима внутреннего BC. Для восстановления видеоблоков, видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на фиг. 6) также может быть включен для того, чтобы фильтровать границы блоков с тем, чтобы удалять артефакты блочности из восстановленного видео. В типичных примерах, сумматор 62 принимает вывод фильтра удаления блочности. Дополнительные (внутриконтурные или постконтурные) фильтры также могут использоваться в дополнение к фильтру удаления блочности. Такие фильтры не показаны для краткости, но если требуется, могут фильтровать вывод сумматора 50 (в качестве внутриконтурного фильтра).
[147] В ходе процесса кодирования, видеокодер 20 принимает видеокадр или вырезку, которая должна быть кодирована. Кадр или вырезка может быть разделена на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют внешнее прогнозирующее кодирование видеоблока на основе одного или более блоков в одном или более опорных кадров, чтобы предоставлять временное прогнозирование. Видеокодер 20 может выполнять несколько проходов кодирования, например, для того чтобы выбирать надлежащий режим кодирования для каждого блока видеоданных.
[148] Модуль 42 оценки движения и модуль 44 компенсации движения могут иметь высокую степень интеграции, но проиллюстрированы отдельно в концептуальных целях. Оценка движения, выполняемая посредством блока 42 оценки движения, представляет собой процесс формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре ли изображении относительно прогнозного блока в опорном кадре (или другой кодированной единицы) относительно текущего блока, кодируемого в текущем кадре (или другой кодированной единицы). Прогнозный блок представляет собой блок, для которого обнаруживается то, что он практически совпадает с блоком, который должен быть кодирован, с точки зрения пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей. В некоторых примерах, видеокодер 20 может вычислять значения для субцелочисленнопиксельных позиций опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Например, видеокодер 20 может интерполировать значения позиций в одну четверть пиксела, позиций в одну восьмую пиксела или других дробнопиксельных позиций опорного изображения. Следовательно, модуль 42 оценки движения может выполнять поиск движения относительно полнопиксельных позиций и дробнопиксельных позиций и выводить вектор движения с дробнопиксельной точностью.
[149] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в внешне кодированной вырезке посредством сравнения позиции PU с позицией прогнозного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (списка 0) или второго списка опорных изображений (списка 1), каждый из которых идентифицируют одно или более опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[150] Компенсация движения, выполняемая посредством модуля 44 компенсации движения, может заключать в себе выборку или формирование прогнозирующего блока на основе вектора движения, определенного посредством модуля 42 оценки движения. С другой стороны, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы в некоторых примерах. При приеме вектора движения для PU текущего видеоблока, модуль 44 компенсации движения может находить прогнозный блок, на который указывает вектор движения в одном из списков опорных изображений. Сумматор 50 может формировать остаточный видеоблок посредством вычитания пиксельных значений прогнозного блока из пиксельных значений текущего кодируемого видеоблока, формируя значения пиксельных разностей, как пояснено ниже. В общем, модуль 42 оценки движения выполняет оценку движения относительно компонентов сигнала яркости, и модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов сигнала яркости, как для компонентов сигнала цветности, так и для компонентов сигнала яркости. Модуль 40 выбора режима также может формировать синтаксические элементы, ассоциированные с видеоблоками и вырезками, для использования посредством видеодекодера 30 при декодировании видеоблоков вырезки.
[151] Модуль 46 внутреннего прогнозирования может внутренне прогнозировать текущий блок, в качестве альтернативы внешнему прогнозированию, выполняемому посредством модуля 42 оценки движения и модуля 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего прогнозирования может определять режим внутреннего прогнозирования для использования для того, чтобы кодировать текущий блок. В некоторых примерах, модуль 46 внутреннего прогнозирования может кодировать текущий блок с использованием различных режимов внутреннего прогнозирования, например, во время отдельных проходов кодирования, и модуль 46 внутреннего прогнозирования (либо модуль 40 выбора режима в некоторых примерах) может выбирать надлежащий режим внутреннего прогнозирования для использования из тестированных режимов.
[152] Например, модуль 46 внутреннего прогнозирования может вычислять значения искажения в зависимости от скорости передачи с использованием анализа искажения в зависимости от скорости передачи для различных тестированных режимов внутреннего прогнозирования и выбирать режим внутреннего прогнозирования, имеющий наилучшие характеристики искажения в зависимости от скорости передачи, из тестированных режимов. Анализ искажения в зависимости от скорости передачи, в общем, определяет величину искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который кодирован для того, чтобы формировать кодированный блок, а также скорость передачи битов (т.е. число битов), используемую для того, чтобы формировать кодированный блок. Модуль 46 внутреннего прогнозирования может вычислять отношения из искажений и скоростей для различных кодированных блоков, чтобы определять то, какой режим внутреннего прогнозирования демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[153] После выбора режима внутреннего прогнозирования для блока, модуль 46 внутреннего прогнозирования может предоставлять информацию, указывающую выбранный режим внутреннего прогнозирования для блока, в модуль 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего прогнозирования. Видеокодер 20 может включать в передаваемый поток битов конфигурационные данные, которые могут включать в себя множество индексных таблиц режимов внутреннего прогнозирования и множество модифицированных индексных таблиц режимов внутреннего прогнозирования (также называемых "таблицами преобразования кодовых слов"), определения контекстов кодирования для различных блоков и индикаторы относительно наиболее вероятного режима внутреннего прогнозирования, индексной таблицы режимов внутреннего прогнозирования и модифицированной индексной таблицы режимов внутреннего прогнозирования, которые следует использовать для каждого из контекстов.
[154] Модуль 46 внутреннего прогнозирования может выполнять внутреннее прогнозирующее кодирование видеоблока на основе одного или более соседних блоков в идентичном кадре или вырезки, что и блок, который должен быть кодирован, чтобы предоставлять пространственное прогнозирование. Кроме того, модуль 48 сегментирования может сегментировать блоки видеоданных на субблоки на основе оценки предыдущих схем сегментирования в предыдущих проходах кодирования. Например, модуль 48 сегментирования может первоначально сегментировать кадр или вырезку на LCU и сегментировать каждую из LCU на под-CU на основе анализа искажения в зависимости от скорости передачи (например, оптимизации искажения в зависимости от скорости передачи). Модуль 40 выбора режима дополнительно может формировать структуру данных в виде дерева квадрантов, указывающую сегментирование LCU на под-CU. CU концевого узла дерева квадрантов могут включать в себя одну или более PU и одну или более TU.
[155] Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренних или внешних, например, на основе результатов по ошибкам и может предоставлять результирующий внутренне или внешне кодированный блок в сумматор 50, чтобы формировать остаточные блочные данные, и в сумматор 62, чтобы восстанавливать кодированный блок для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, такие как индикаторы внутреннего режима, информация сегментов и другая такая синтаксическая информация, в модуль 56 энтропийного кодирования.
[156] Видеокодер 20 может формировать остаточный видеоблок посредством вычитания прогнозирующих данных из модуля 40 выбора режима из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 обработки преобразования может выполнять другие преобразования, которые концептуально являются аналогичными DCT. Вейвлет-преобразования, целочисленные преобразования, субполосные преобразования или другие типы преобразований также могут использоваться. В любом случае, модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из пиксельной области в область преобразования, такую как частотная область. Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована посредством регулирования параметра квантования. В некоторых примерах, модуль 54 квантования затем может выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 энтропийного кодирования может выполнять сканирование.
[157] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование на основе сегментирования на интервалы вероятности (PIPE) или другую технологию энтропийного кодирования. В случае контекстного энтропийного кодирования контекст может быть основан на соседних блоках. После энтропийного кодирования посредством модуля 56 энтропийного кодирования, кодированный поток битов может быть передан в другое устройство (к примеру, видеодекодер 30) или заархивировано для последующей передачи или извлечения.
[158] В соответствии с технологиями этого раскрытия сущности, модуль 56 энтропийного кодирования видеокодера 20 может выполнять одну или более технологий настоящего раскрытия сущности. Например, модуль 56 энтропийного кодирования видеокодера 20 может кодировать CU видеоданных. При кодировании видеоданных, модуль 51 преобразования цветового пространства может определять то, следует или нет кодировать CU с использованием преобразования цветового пространства. Для цветового компонента, модуль 54 квантования может определять начальный QP для цветового компонента и задавать конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Модуль 54 квантования может квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый коэффициент квантован, модуль 56 энтропийного кодирования дополнительно может выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[159] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстанавливать остаточный блок в пиксельной области, к примеру, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством суммирования остаточного блока с прогнозным блоком одного из кадров запоминающего устройства 64 опорных изображений. Модуль 44 компенсации движения также может применять один или более интерполяционных фильтров к восстановленному остаточному блоку, чтобы вычислять субцелочисленнопиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с прогнозным блоком с компенсацией движения, сформированным посредством модуля 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в запоминающем устройстве 64 опорных изображений. Восстановленный видеоблок может использоваться посредством модуля 42 оценки движения и модуля 44 компенсации движения в качестве опорного блока для того, чтобы внешне кодировать блок в последующем видеокадре.
[160] Таким образом, видеокодер 20 может выполнять одну или более технологий настоящего раскрытия сущности. Например, модуль 56 энтропийного кодирования видеокодера 20 может кодировать единицу кодирования (CU) видеоданных. При кодировании видеоданных, модуль 51 преобразования цветового пространства видеокодера 20 могут определять кодировать CU с использованием преобразования цветового пространства. Модуль 54 квантования видеокодера 20 может определять начальный параметр квантования (QP) для цветового компонента и задавать конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Модуль 54 квантования видеокодера 20 может квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый коэффициент квантован, модуль 54 квантования видеокодера 20 дополнительно может выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов.
[161] В некоторых примерах, QP-смещение для цветового компонента может передаваться в служебных сигналах в одном из PPS, SPS или заголовка вырезки. В некоторых дополнительных примерах, множество цветовых компонентов могут содержать три цветовых компонента. В таких примерах, первое QP-смещение для первого QP для первого цветового компонента равно второму QP-смещению для второго QP для второго цветового компонента, первое QP-смещение (и второе QP-смещение) меньше третьего QP-смещения для третьего QP для третьего цветового компонента. В некоторых примерах, процесс фильтрации для удаления блочности может дополнительно выполняться для CU. В таких примерах, видеокодер 20 может использовать начальный QP для каждого цветового компонента, а не конечного QP.
[162] В некоторых примерах, множество цветовых компонентов содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, модуль 54 квантования видеокодера 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Модуль 54 квантования видеокодера 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, модуль 54 квантования видеокодера 20 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, модуль 54 квантования видеокодера 20 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[163] В некоторых дополнительных примерах, CU представляет собой первую CU. В таких примерах, модуль 56 энтропийного кодирования видеокодера 20 может кодировать вторую CU. При кодировании второй CU, модуль 54 квантования видеокодера 20, для цветового компонента, может определять QP для цветовых компонентов, задавать конечное QP-значение для цветового компонента на основе второй CU, не кодируемой с использованием преобразования цветового пространства, таким образом, что конечное QP-значение для цветового компонента равно начальному QP-значению цветового компонента, и квантовать, на основе конечного QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Модуль 54 квантования видеокодера 20 дополнительно может выводить поток битов видеоданных, содержащий второй набор одного или более энтропийно кодированных синтаксических элементов, представляющих каждый из квантованных вторых блоков коэффициентов.
[164] В некоторых примерах, для цветового компонента, QP-смещение для цветового компонента зависит от режима кодирования CU. В некоторых таких примерах, для цветового компонента, модуль 54 квантования видеокодера 20 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим или режим внутреннего блочного копирования (BC), и равно второму значению, когда режим кодирования CU представляет собой внешний режим, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, модуль 54 квантования видеокодера 20 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим, и равно второму значению, когда режим кодирования CU представляет собой режим внутреннего блочного копирования (BC), причем первое значение отличается от второго значения.
[165] В некоторых примерах, множество цветовых компонентов содержат три цветовых компонента. В таких примерах, смещения параметров квантования могут быть равны (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc). В других таких примерах, смещения параметров квантования могут быть равны другим значениям, таким как (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc). В любом случае, BitInc может быть равен 0, 1 или 2.
[166] В некоторых примерах, для цветовых компонентов из множества цветовых компонентов, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, модуль 54 квантования видеокодера 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, модуль 54 квантования видеокодера 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
N
N
[167] В некоторых примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, модуль 54 квантования видеокодера 20 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, модуль 46 внутреннего прогнозирования видеокодера 20 дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности.
[168] Фиг. 7 является блок-схемой, иллюстрирующей пример видеодекодера 30, который может реализовывать технологии для декодирования видеоблоков, некоторые из которых кодированы с использованием процесса преобразования цветового пространства. В примере по фиг. 7, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего прогнозирования, модуль 76 обратного квантования, модуль 78 обратного преобразования, запоминающее устройство 82 опорных изображений и сумматор 80. Видеодекодер 30 также может включать в себя другие модули, такие как модуль внутреннего BC. Видеодекодер 30, в некоторых примерах, выполнять проход декодирования, в общем, обратный по отношению к проходу кодирования, описанному относительно видеокодера 20 (фиг. 6). Модуль 72 компенсации движения может формировать прогнозирующие данные на основе векторов движения, определенных из синтаксических элементов, принимаемых из модуля 70 энтропийного декодирования, в то время как модуль 74 внутреннего прогнозирования может формировать прогнозирующие данные на основе индикаторов режима внутреннего прогнозирования, принимаемых из модуля 70 энтропийного декодирования. В некоторых примерах, модуль 74 внутреннего прогнозирования может логически выводить некоторые индикаторы режима внутреннего прогнозирования.
[169] В ходе процесса декодирования, видеодекодер 30 принимает кодированный поток видеобитов, который представляет видеоблоки вырезки кодированного видео и ассоциированные синтаксические элементы. Модуль 70 энтропийного декодирования видеодекодера 30 энтропийно декодирует поток битов, чтобы формировать квантованные коэффициенты, векторы движения или индикаторы режима внутреннего прогнозирования и другие синтаксические элементы. Модуль 70 энтропийного декодирования перенаправляет синтаксические элементы в модуль 72 компенсации движения.
[170] В соответствии с технологиями этого раскрытия сущности, видеодекодер 30 может выполнять одну или более технологий настоящего раскрытия сущности. Например, модуль 70 энтропийного декодирования видеодекодера 30 может декодировать единицу кодирования (CU) видеоданных. При декодировании видеоданных, модуль 79 обратного преобразования цветового пространства видеодекодера 30 может определять то, что CU кодирована с использованием преобразования цветового пространства. Для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять начальный параметр квантования (QP) для цветового компонента и определять конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Модуль 76 обратного квантования видеодекодера 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый блок коэффициентов обратно квантован, сумматор 80 видеодекодера 30 может восстанавливать единицу кодирования на основе обратно квантованных блоков коэффициентов для CU.
[171] Модуль 74 внутреннего прогнозирования может использовать режим внутреннего прогнозирования для того, чтобы формировать прогнозирующий блок, когда вырезка представляет собой I-вырезку, P-вырезку или B-вырезку. Другими словами, в вырезке может находиться внутренне прогнозированный блок, который обеспечивает возможность одно- или двунаправленного внешнего прогнозирования. Когда видеокадр кодируется в качестве внешне кодированной (т.е. B-, P- или GPB-) вырезки, модуль 72 компенсации движения формирует прогнозные блоки для видеоблока текущей видеовырезки на основе векторов движения и других синтаксических элементов, принимаемых из блока 70 энтропийного декодирования. Прогнозные блоки могут формироваться из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных изображений, список 0 и список 1, с использованием технологий составления по умолчанию на основе опорных изображений, сохраненных в запоминающем устройстве 82 опорных изображений. Модуль 72 компенсации движения определяет информацию прогнозирования для видеоблока текущей вырезки посредством синтаксического анализа векторов движения и других синтаксических элементов и использует информацию прогнозирования для того, чтобы формировать прогнозирующие блоки для текущего декодируемого видеоблока. Например, модуль 72 компенсации движения использует некоторые из принимаемых синтаксических элементов для того, чтобы определять режим прогнозирования (например, внутреннее или внешнее прогнозирование), используемый для того, чтобы кодировать видеоблоки вырезки, тип вырезки внешнего прогнозирования (например, B-вырезка, P-вырезка или GPB-вырезка), информацию составления для одного или более списков опорных изображений для вырезки, векторы движения для каждого внешне кодированного видеоблока вырезки, состояние внешнего прогнозирования для каждого внешне кодированного видеоблока вырезки и другую информацию для того, чтобы декодировать видеоблоки в текущей вырезке.
Y
[172] Модуль 76 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного посредством видеодекодера 30 для каждого видеоблока в вырезке, чтобы определять степень квантования и, аналогично, степень обратного квантования, которое должно применяться.
[173] В соответствии с технологиями этого раскрытия сущности, видеодекодер 30 может выполнять одну или более технологий настоящего раскрытия сущности. Например, видеодекодер 30 может декодировать единицу кодирования (CU) видеоданных. При декодировании видеоданных, модуль 79 обратного преобразования цветового пространства видеодекодера 30 может определять то, кодирована или нет CU с использованием преобразования цветового пространства. Для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять начальный QP для цветового компонента и определять конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Модуль 76 обратного квантования видеодекодера 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый блок коэффициентов обратно квантован, сумматор 80 видеодекодера 30 может восстанавливать единицу кодирования на основе обратно квантованных блоков коэффициентов для CU.
[174] Блок 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования, чтобы формировать остаточные блоки в пиксельной области.
[175] После того, как модуль 72 компенсации движения формирует прогнозный блок для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков из модуля 78 обратного преобразования с соответствующими прогнозными блоками, сформированными посредством модуля 72 компенсации движения. Сумматор 80 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если требуется, фильтр удаления блочности также может быть применен для того, чтобы фильтровать декодированные блоки, чтобы удалять артефакты блочности. Другие контурные фильтры (в контуре кодирования или после контура кодирования) также могут быть использованы для того, чтобы сглаживать пиксельные переходы или иным образом повышать качество видео. Декодированные видеоблоки в данном кадре или изображении затем сохраняются в запоминающем устройстве 82 опорных изображений, которое сохраняет опорные изображения, используемые для последующей компенсации движения. Запоминающее устройство 82 опорных изображений также сохраняет декодированное видео для последующего представления на устройстве отображения, таком как устройство 32 отображения по фиг. 1.
[176] Таким образом, видеодекодер 30 может выполнять одну или более технологий настоящего раскрытия сущности. Например, модуль 70 энтропийного декодирования видеодекодера 30 может декодировать CU видеоданных. При декодировании видеоданных, модуль 79 обратного преобразования цветового пространства видеодекодера 30 может определять то, что CU кодирована с использованием преобразования цветового пространства. Для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять начальный QP для цветового компонента и определять конечный QP для цветового компонента на основе CU, кодированной с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Модуль 76 обратного квантования видеодекодера 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента. После того, как каждый блок коэффициентов обратно квантован, сумматор 80 видеодекодера 30 может восстанавливать единицу кодирования на основе обратно квантованных блоков коэффициентов для CU.
[177] В некоторых примерах, для цветового компонента из одного или более цветовых компонентов, QP-смещение для цветового компонента может передаваться в служебных сигналах в одном из набора параметров изображения, набора параметров последовательности или заголовка вырезки. В некоторых дополнительных примерах, множество цветовых компонентов могут содержать три цветовых компонента. В таких примерах, смещение первого параметра квантования для первого параметра квантования для первого цветового компонента равно смещению второго параметра квантования для второго параметра квантования для второго цветового компонента, смещение первого параметра квантования (и смещение второго параметра квантования) меньше смещения третьего параметра квантования для третьего параметра квантования для третьего цветового компонента. В некоторых примерах, процесс фильтрации для удаления блочности может дополнительно выполняться для CU. В таких примерах, видеодекодер 30 может использовать начальный QP для каждого цветового компонента, а не конечного QP.
[178] В некоторых примерах, множество цветовых компонентов содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, модуль удаления блочности (не показан) видеодекодера 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Модуль удаления блочности видеодекодера 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, модуль удаления блочности видеодекодера 30 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, модуль удаления блочности видеодекодера 30 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[179] В некоторых дополнительных примерах, CU представляет собой первую CU. В таких примерах, модуль 76 обратного квантования видеодекодера 30 может декодировать вторую CU. При декодировании второй CU, модуль 76 обратного квантования видеодекодера 30, для цветового компонента, может определять QP для цветовых компонентов, определять конечное QP-значение для цветового компонента на основе второй CU, не кодируемой с использованием преобразования цветового пространства, таким образом, что конечное QP-значение для цветового компонента равно начальному QP-значению цветового компонента, и обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Видеодекодер 30 дополнительно может восстанавливать вторую CU на основе каждого из одного или более обратно квантованных блоков коэффициентов второй CU.
[180] В некоторых примерах, для цветового компонента, QP-смещение для цветового компонента зависит от режима кодирования CU. В некоторых таких примерах, для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим или режим внутреннего BC, и равно второму значению, когда режим кодирования CU представляет собой внешний режим, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим, и равно второму значению, когда режим кодирования CU представляет собой режим внутреннего BC, причем первое значение отличается от второго значения.
[181] В некоторых примерах, множество цветовых компонентов содержат три цветовых компонента. В таких примерах, смещения параметров квантования могут быть равны (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc). В других таких примерах, смещения параметров квантования могут быть равны другим значениям, таким как (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc). В любом случае, BitInc может быть равен 0, 1 или 2.
[182] В некоторых примерах, для цветовых компонентов из множества цветовых компонентов, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, модуль 76 обратного квантования видеодекодера 30 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, модуль 76 обратного квантования может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
N
N
[183] В некоторых примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, модуль 74 внутреннего прогнозирования видеодекодера 30 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, модуль 74 внутреннего прогнозирования дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности.
[184] В некоторых примерных реализациях вышеуказанных технологий, требуемые синтаксические элементы содержатся в наборе параметров последовательности. В нижеприведенных таблицах, выделенный курсивом текст представляет добавления относительно текущего проекта HEVC-стандартов. Полужирный текст обозначает синтаксические элементы. В некоторых примерах, набор параметров последовательности (RBSP) может иметь следующий синтаксис:
[185] В этом примере, color_transform_enabled_flag, равный 1, указывает то, что активируется преобразование цветов. Когда синтаксический элемент color_transform_enabled_flag равен 0, преобразование цветов не активируется. Когда синтаксический элемент lossless_enable_flag равен 1, применяется кодирование без потерь. Помимо этого, когда color_transform_enabled_flag равен 1, используется исходное YCoCg-R-преобразование. Когда синтаксический элемент lossless_enable_flag равен 0, применяется кодирование с потерями. Помимо этого, когда color_transform_enabled_flag равен 1, используется исходное YCoCg-преобразование.
[186] Альтернативно, новые введенные флаги могут передаваться в служебных сигналах только тогда, когда chroma_format_idc равен 3.
[187] Альтернативно, новые введенные флаги могут передаваться в служебных сигналах только тогда, когда chroma_format_idc равен 3, и три цветовых компонента формата сигнала цветности 4:4:4 не кодируются отдельно. Следовательно, вышеуказанное условие "if(chroma_format_idc==3)" может быть заменено посредством "if(chroma_format_idc==3 andand! separate_colour_plane_flag)".
[188] Дополнительно, может применяться такое ограничение, что когда color_transform_enabled_flag равен 1, chroma_format_idc может быть равен 3. Альтернативно, кроме того, когда color_transform_enabled_flag равен 1, separate_colour_plane_flag может быть равен 0.
[189] В некоторых примерах, единица кодирования может иметь следующий синтаксис:
[190] В вышеприведенном примере, для внутреннего режима, флаг преобразования цветов сначала передается в служебных сигналах. Когда этот флаг равен 1, передача в служебных сигналах intra_chroma_pred_mode может пропускаться, при этом компоненты сигнала цветности совместно используют режим, идентичный режиму сигнала яркости.
[191] Альтернативно, в некоторых примерах, единица кодирования может иметь следующий синтаксис:
[192] Альтернативно, когда режим внутреннего BC рассматривается как внутренний режим, т.е. соответствующий CuPredMode[x0][y0] равен MODE_INTRA, вышеуказанное выделенное условие "if(color_transform_enabled_flag andand (CuPredMode[x0][y0]==MODE_INTER ||! intra_chroma_pred_mode[x0][y0])" может быть заменено посредством "if(color_transform_enabled_flag andand (CuPredMode[x0][y0]==MODE_INTER || intra_bc_flag[x0][y0] ||! intra_chroma_pred_mode[x0][y0])". Альтернативно, во всех вышеприведенных примерах, CuPredMode[x0][y0]==MODE_INTER может быть заменен посредством CuPredMode[x0][y0]!=MODE_INTRA.
[193] Альтернативно, вышеуказанные условия "if(color_transform_enabled_flag andand (CuPredMode[x0][y0]==MODE_INTER ||! intra_chroma_pred_mode[x0][y0])" могут быть заменены просто посредством "if(color_transform_enabled_flag)". В этом случае, может удовлетворяться такое ограничение, что режимы сигнала цветности и сигнала яркости являются идентичными, когда color_transform_enabled_flag равен 1, и текущая CU внутренне кодируется.
Y
C0
[194] Следующие изменения могут активироваться, когда текущая CU/PU/TU без не кодируется потерь (т.е. когда cu_transquant_bypass_flag равен 0). В одном примере, QP, используемый в процессе деквантования, может изменяться, когда применяется преобразование цветов. Тем не менее, Qp, используемый в процессе удаления блочности, может быть неизменным, т.е. без учета дельта-QP (deltaQP).
Y
Y
Cb
Cr
[195] В процессе декодирования, для процесса извлечения для параметров квантования, ввод в этот процесс представляет собой местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего изображения. В этом процессе, извлекаются переменная Qp, параметр Qp' квантования сигналов яркости и параметры Qp' и Qp' квантования сигналов цветности.
Y_PRED
[196] Местоположение (xQg, yQg) сигнала яркости указывает левую верхнюю выборку сигнала яркости текущей группы квантования относительно левой верхней выборки сигнала яркости текущего изображения. Горизонтальные и вертикальные позиции xQg и yQg задаются равными xCb-(xCb and ((1<<Log2MinCuQpDeltaSize)-1)) и yCb-(yCb and ((1<<Log2MinCuQpDeltaSize)-1)), соответственно. Размер сигнала яркости группы квантования, Log2MinCuQpDeltaSize, определяет размер сигнала яркости наименьшей области в блоке дерева кодирования, который совместно использует идентичный qP.
Y_PRED
Y_PREV
Y_PREV
Y
Y_PREV
Y
[197] Прогнозный параметр qP квантования сигналов яркости может извлекаться посредством следующих упорядоченных этапов: 1) Переменная qP может извлекаться. Если одно или более из следующих условий являются истинными, qP задается равной SliceQp: Текущая группа квантования представляет собой первую группу квантования в вырезки, текущая группа квантования представляет собой первую группу квантования в мозаичном фрагменте, или текущая группа квантования представляет собой первую группу квантования в строке блоков дерева кодирования, и entropy_coding_sync_enabled_flag равен 1. В противном случае, qP задается равной параметру Qp квантования сигналов яркости последней единицы кодирования в предыдущей группе квантования в порядке декодирования.
Y_A
Y_B
Y_PREV
[198] 2) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg-1, yQg), в качестве вводов, и вывод назначается availableA. Переменная qP извлекается следующим образом: Если одно или более из следующих условий являются истинными, qPзадается равной qP: availableA равен лжи, или адрес ctbAddrA блока дерева кодирования для блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg-1, yQg) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrA извлекается следующим образом:
[199] xTmp=(xQg-1)>>Log2MinTrafoSize
yTmp=yQg>>Log2MinTrafoSize
minTbAddrA=MinTbAddrZs[xTmp][yTmp]
ctbAddrA=(minTbAddrA>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_A
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости единицы кодирования, содержащей блок кодирования сигналов яркости, покрывающий (xQg-1, yQg).
Y_B
Y_A
Y_PREV
[200] 3) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg, yQg-1), в качестве вводов. Вывод назначается availableB. Переменная qP извлекается. Если одно или более из следующих условий являются истинными, qP задается равной qP: availableB равен лжи, или адрес блока дерева кодирования ctbAddrB блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg, yQg-1) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrB извлекается следующим образом:
[201] xTmp=xQg>>Log2MinTrafoSize
yTmp=(yQg-1)>>Log2MinTrafoSize
minTbAddrB=MinTbAddrZs[xTmp][yTmp]
ctbAddrB=(minTbAddrB>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_B
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости единицы кодирования, содержащей блок кодирования сигналов яркости, покрывающий (xQg, yQg-1).
Y_PRED
[202] Прогнозный параметр qP квантования сигналов яркости может извлекаться следующим образом:
Y_PRED
Y_A
Y_B
qP=(qP+qP+1)>>1
Y
[203] Переменная Qp может извлекаться следующим образом:
Y
Y_PRED
Y
Y
Y
Qp=((qP+CuQpDeltaVal+52+2*QpBdOffset)%(52+QpBdOffset))-QpBdOffset
Y
[204] Параметр Qp' квантования сигналов яркости может извлекаться следующим образом:
Y
Y
Y
Qp'=Qp+QpBdOffset
Cb
Cr
[205] Когда ChromaArrayType не равен 0, переменные qPi и qPi извлекаются следующим образом:
Cb
C
Y+
b
qPi=Clip3(-QpBdOffset, 57, Qppps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetC)
Cr
C
Y
r
qPi=Clip3(-QpBdOffset, 57, Qp+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetC)
Cb
Cr
C
Cb
Cr
Cb
Cr
Cb
Cr
[206] Если ChromaArrayType равен 1, переменные qP и qP задаются равными значению Qp на основе индекса qPi, равного qPi и qPi, соответственно. В противном случае, переменные qP и qP задаются равными Min(qPi, 51), на основе индекса qPi, равного qPi и qPi, соответственно.
Cb
Cr
[207] Параметры квантования сигналов цветности для Cb- и Cr-компонентов, Qp' и Qp', извлекаются следующим образом:
Cb
Cb
C
Qp'=qP+QpBdOffset
Cr
Cr
C
Qp'=qP+QpBdOffset
[208] Спецификация Qp в качестве функции qPi для ChromaArrayType, равного 1, заключается в следующем:
qPi
<30
30
31
32
33
34
35
36
37
38
39
40
41
42
43
>43
Qp<sub>C</sub>
=qPi
29
30
31
32
33
33
34
34
35
35
36
36
37
37
=qPi-6
[209] В процессе деквантования, может извлекаться параметр qP квантования для каждого индекса (cIdx) компонента. Вводы в этот процесс могут представлять собой местоположение (xTbY, yTbY) сигнала яркости, указывающее левую верхнюю выборку текущего блока преобразования сигналов яркости относительно левой верхней выборки сигнала яркости текущего изображения, переменную trafoDepth, указывающую глубину иерархии текущего блока относительно блока кодирования, переменную cIdx, указывающую цветовой компонент текущего блока, и переменную nTbS, указывающую размер текущего блока преобразования. Вывод этого процесса может представлять собой массив (nTbS)x(nTbS) остаточных выборок r с элементами r[x][y].
[210] Параметр qP квантования может извлекаться. Если cIdx равен 0,
Y
C0
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
В противном случае, если cIdx равен 1,
Cb
C1
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
Иначе (cIdx равен 2),
C
C2
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
C0
C1
C2
Y
C0
Y
Y
Cb
Cr
[211] В одном примере, deltaQP, deltaQP и deltaQP могут задаваться равными -5, -5 и -3, соответственно. В другом примере, Qp, используемый в процессе удаления блочности, является неизменным, т.е. с учетом дельта-QP (deltaQP). В процессе декодирования, для процесса извлечения для параметров квантования, ввод в этот процесс может представлять собой местоположение (xCb, yCb) сигнала яркости, указывающее левую верхнюю выборку текущего блока кодирования сигналов яркости относительно левой верхней выборки сигнала яркости текущего изображения. В этом процессе, могут извлекаться переменная Qp, параметр Qp' квантования сигналов яркости и параметры Qp' и Qp' квантования сигналов цветности.
Y_PRED
[212] Местоположение (xQg, yQg) сигнала яркости указывает левую верхнюю выборку сигнала яркости текущей группы квантования относительно левой верхней выборки сигнала яркости текущего изображения. Горизонтальные и вертикальные позиции xQg и yQg задаются равными xCb-(xCb and ((1<<Log2MinCuQpDeltaSize)-1)) и yCb-(yCb and ((1<<Log2MinCuQpDeltaSize)-1)), соответственно. Размер сигнала яркости группы квантования, Log2MinCuQpDeltaSize, определяет размер сигнала яркости наименьшей области в блоке дерева кодирования, который совместно использует идентичный qP.
Y_PRED
Y_PREV
Y_PREV
Y
Y_PREV
Y
[213] Прогнозный параметр qP квантования сигналов яркости может извлекаться посредством следующих упорядоченных этапов: 1) Переменная qP может извлекаться. Если одно или более из следующих условий являются истинными, qP задается равной SliceQp: Текущая группа квантования представляет собой первую группу квантования в вырезки, текущая группа квантования представляет собой первую группу квантования в мозаичном фрагменте, или текущая группа квантования представляет собой первую группу квантования в строке блоков дерева кодирования, и entropy_coding_sync_enabled_flag равен 1. В противном случае, qP задается равной параметру Qp квантования сигналов яркости последней единицы кодирования в предыдущей группе квантования в порядке декодирования.
Y_A
Y_B
Y_PREV
[214] 2) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg-1, yQg), в качестве вводов, и вывод назначается availableA. Переменная qP извлекается следующим образом: Если одно или более из следующих условий являются истинными, qPзадается равной qP: availableA равен лжи, или адрес ctbAddrA блока дерева кодирования для блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg-1, yQg) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrA извлекается следующим образом:
xTmp=(xQg-1)>>Log2MinTrafoSize
yTmp=yQg>>Log2MinTrafoSize
minTbAddrA=MinTbAddrZs[xTmp][yTmp]
ctbAddrA=(minTbAddrA>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_A
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости единицы кодирования, содержащей блок кодирования сигналов яркости, покрывающий (xQg-1, yQg).
Y_B
Y_B
Y_PREV
[215] 3) Процесс извлечения доступности для блока в порядке Z-сканирования активируется с местоположением (xCurr, yCurr), заданным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), заданным равным (xQg, yQg-1), в качестве вводов. Вывод назначается availableB. Переменная qP извлекается. Если одно или более из следующих условий являются истинными, qPзадается равной qP: availableB равен лжи, или адрес блока дерева кодирования ctbAddrB блока дерева кодирования, содержащего блок кодирования сигналов яркости, покрывающий местоположение (xQg, yQg-1) сигнала яркости, не равен CtbAddrInTs, при этом ctbAddrB извлекается следующим образом:
xTmp=xQg>>Log2MinTrafoSize
yTmp=(yQg-1)>>Log2MinTrafoSize
minTbAddrB=MinTbAddrZs[xTmp][yTmp]
ctbAddrB=(minTbAddrB>>2)*(CtbLog2SizeY log2MinTrafoSize)
Y_B
Y
В противном случае, qP задается равной параметру Qp квантования сигналов яркости единицы кодирования, содержащей блок кодирования сигналов яркости, покрывающий (xQg, yQg-1).
Y_PRED
[216] Прогнозный параметр qP квантования сигналов яркости может извлекаться следующим образом:
Y_PRED
Y_A
Y_B
qP=(qP+qP+1)>>1
Y
[217] Переменная Qp может извлекаться следующим образом:
Y
Y_PRED
Y
Y
Y
Qp=((qP+CuQpDeltaVal+52+2*QpBdOffset)%(52+QpBdOffset))-QpBdOffset
Y
Y
C0
Qp=Qp+(color_transform_flag[xCb][yCb]? deltaQP: 0)
Y
[218] Параметр Qp' квантования сигналов яркости может извлекаться следующим образом:
Y
Y
Y
Qp'=Qp+QpBdOffset
Cb
Cr
[219] Когда ChromaArrayType не равен 0, переменные qPi и qPi могут извлекаться следующим образом:
Cb
C
Y+
b
qPi=Clip3(-QpBdOffset, 57, Qppps_cb_qp_offset+slice_cb_qp_offset+CuQpOffsetC)
Cr
C
Y
r
qPi=Clip3(-QpBdOffset, 57, Qp+pps_cr_qp_offset+slice_cr_qp_offset+CuQpOffsetC)
Cb
Cr
C
Cb
Cr
Cb
Cr
Cb
Cr
Cb
Cr
[220] Если ChromaArrayType равен 1, переменные qP и qP могут задаваться равными значению Qp на основе индекса qPi, равного qPi и qPi, соответственно. В противном случае, переменные qP и qP могут задаваться равными Min(qPi, 51), на основе индекса qPi, равного qPi и qPi, соответственно. Параметры квантования сигналов цветности для Cb- и Cr-компонентов, Qp' и Qp', могут извлекаться следующим образом:
Cb
Cb
C
Qp'=qP+QpBdOffset
Cr
Cr
C
Qp'=qP+QpBdOffset
C
Спецификация Qp в качестве функции qPi для ChromaArrayType, равного 1, может заключаться в следующем:
qPi
<30
30
31
32
33
34
35
36
37
38
39
40
41
42
43
>43
Qp<sub>C</sub>
=qPi
29
30
31
32
33
33
34
34
35
35
36
36
37
37
=qPi-6
Cb
Cb
C1
Qp'=Qp'+(color_transform_flag[xCb][yCb]? deltaQP: 0)
Cr
Cr
C2
Qp'=Qp'+(color_transform_flag[xCb][yCb]? deltaQP: 0)
[221] В процессе деквантования, параметр qP квантования для каждого индекса (cIdx) компонента может извлекаться следующим образом. Если cIdx равен 0,
Y
C0
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
В противном случае, если cIdx равен 1,
Cb
C1
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
Иначе (cIdx равен 2),
C
C2
qP=Qp'+(color_transform_flag[xTbY][yTbY]? deltaQP: 0)
C0
C1
C2
[222] В одном примере, deltaQP, deltaQP и deltaQP могут задаваться равными -5, -5 и -3, соответственно.
[223] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока, в соответствии с технологией этого раскрытия сущности. Текущий блок может содержать текущую CU или часть текущей CU. Хотя описывается относительно видеокодера 20 (фиг. 1 и 6), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 8.
[224] В этом примере, видеокодер 20 первоначально формирует один или более прогнозирующих блоков для PU текущей CU (150). В некоторых примерах, видеокодер 20 использует внешнее прогнозирование, внутреннее прогнозирование или прогнозирование внутреннего BC, чтобы формировать один или более прогнозирующих блоков. Видеокодер 20 затем может вычислять один или более остаточных блоков для каждой TU текущей CU (152). Видеокодер 20 может вычислять остаточный блок для TU текущей CU таким образом, что каждое соответствующее выборочное значение остаточного блока равно разности между соответствующим выборочным значением исходного некодированного блока кодирования текущей CU и соответствующим надлежащим выборочным значением прогнозирующего блока PU текущей CU.
[225] Дополнительно, видеокодер 20 может определять то, следует или нет кодировать текущую CU с использованием преобразования цветового пространства (154). Для соответствующего цветового компонента из множества цветовых компонентов (например, компонента сигнала яркости и одного или более компонентов сигнала цветности), видеокодер 20 может определять соответствующий начальный QP для соответствующего цветового компонента (156). Кроме того, видеокодер 20 может задавать конечный QP для соответствующего цветового компонента на основе текущей CU, кодируемой с использованием преобразования цветового пространства, таким образом, что конечный QP для соответствующего цветового компонента равен сумме начального QP соответствующего цветового компонента и соответствующего ненулевого QP-смещения для соответствующего цветового компонента (158). Другими словами, в некоторых примерах, в ответ на определение того, что текущая CU кодируется с использованием преобразования цветового пространства, видеокодер 20 задает конечный QP для соответствующего цветового компонента таким образом, что конечный QP для соответствующего цветового компонента равен сумме начального QP соответствующего цветового компонента и соответствующего ненулевого QP-смещения для соответствующего цветового компонента. Видеокодер 20 может квантовать, на основе конечного QP для соответствующего цветового компонента, соответствующий блок коэффициентов для CU, причем соответствующий блок коэффициентов для CU основан на выборочных значениях соответствующего цветового компонента (160).
[226] Затем, видеокодер 20 может сканировать квантованные коэффициенты преобразования остаточного блока (162). В ходе сканирования или после сканирования, видеокодер 20 может энтропийно кодировать различные синтаксические элементы, которые представляют коэффициенты (164). Например, видеокодер 20 может кодировать синтаксические элементы, представляющие коэффициенты, с использованием CAVLC или CABAC. Видеокодер 20 дополнительно может выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов (166).
[227] В некоторых примерах, для цветового компонента, QP-смещение для цветового компонента может передаваться в служебных сигналах в одном из набора параметров изображения, набора параметров последовательности или заголовка вырезки. В некоторых дополнительных примерах, множество цветовых компонентов могут содержать три цветовых компонента. В таких примерах, смещение первого параметра квантования для первого параметра квантования для первого цветового компонента равно смещению второго параметра квантования для второго параметра квантования для второго цветового компонента, смещение первого параметра квантования (и смещение второго параметра квантования) меньше смещения третьего параметра квантования для третьего параметра квантования для третьего цветового компонента. В некоторых примерах, процесс фильтрации для удаления блочности может дополнительно выполняться для CU. В таких примерах, видеокодер 20 может использовать начальный QP для каждого цветового компонента, а не конечного QP.
[228] В некоторых примерах, CU включает в себя множество цветовых компонентов, которые содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, видеокодер 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Видеокодер 20 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, видеокодер 20 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, видеокодер 20 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[229] В некоторых дополнительных примерах, CU представляет собой первую CU. В таких примерах, видеокодер 20 может кодировать вторую CU. При кодировании второй CU, видеокодер 20 может определять значение второго QP на основе второй CU, не кодируемой с использованием преобразования цветового пространства, и квантовать, на основе значения второго QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Видеокодер 20 дополнительно может выводить поток битов видеоданных, содержащий второй набор одного или более энтропийно кодированных синтаксических элементов, представляющих каждый из квантованных вторых блоков коэффициентов.
[230] В некоторых примерах, для цветового компонента, QP-смещение для цветового компонента зависит от режима кодирования CU. В некоторых таких примерах, для цветового компонента, видеокодер 20 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим или режим внутреннего блочного копирования (BC), и равно второму значению, когда режим кодирования CU представляет собой внешний режим, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, видеокодер 20 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим, и равно второму значению, когда режим кодирования CU представляет собой режим внутреннего блочного копирования (BC), причем первое значение отличается от второго значения.
[231] В некоторых примерах, множество цветовых компонентов содержат три цветовых компонента. В таких примерах, смещения параметров квантования могут быть равны (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc). В других таких примерах, смещения параметров квантования могут быть равны другим значениям, таким как (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc). В любом случае, BitInc может быть равен 0, 1 или 2.
[232] В некоторых примерах, для цветовых компонентов, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, видеокодер 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента из множества цветовых компонентов, видеокодер 20 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
N
N
[233] В некоторых примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, видеокодер 20 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, видеокодер 20 дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности.
[234] Фиг. 9 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных. Это раскрытие сущности описывает примерный способ по фиг. 9 со ссылкой на текущую CU. Тем не менее, аналогичные примеры являются возможными с другими типами видеоблоков. Кроме того, хотя описывается относительно видеодекодера 30 (фиг. 1 и 7), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 9.
[235] Видеодекодер 30 может формировать один или более прогнозирующих блоков для PU текущей CU (200), например, с использованием режима внутреннего или внешнего прогнозирования для того, чтобы вычислять прогнозированный блок для CU. Видеодекодер 30 также может принимать энтропийно кодированные синтаксические элементы, представляющие коэффициенты преобразования блоков коэффициентов преобразования TU текущей CU (202). Видеодекодер 30 может энтропийно декодировать энтропийно кодированные данные, чтобы восстанавливать коэффициенты преобразования блоков коэффициентов преобразования TU текущей CU (204). Видеодекодер 30 затем может обратно сканировать восстановленные коэффициенты преобразования, чтобы воссоздавать блоки коэффициентов преобразования TU текущей CU (206).
[236] Видеодекодер 30 может определять то, что CU кодирована с использованием преобразования цветового пространства (210). Для цветового компонента из множества цветовых компонентов, видеодекодер 30 может определять начальный QP для цветового компонента (212). Дополнительно, видеодекодер 30 может определять, на основе текущей CU, кодируемой с использованием преобразования цветового пространства, конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента (214). Например, в ответ на текущую CU, кодируемую с использованием преобразования цветового пространства, видеодекодер 30 может задавать конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеодекодер 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для текущей CU, причем блок коэффициентов для текущей CU основан на выборочных значениях цветового компонента (216). После того, как каждый блок коэффициентов обратно квантован, видеодекодер 30 может восстанавливать текущую CU на основе обратно квантованных блоков коэффициентов для текущей CU (218).
[237] В некоторых примерах, для цветового компонента из одного или более цветовых компонентов, QP-смещение для цветового компонента может передаваться в служебных сигналах в одном из набора параметров изображения, набора параметров последовательности или заголовка вырезки. В некоторых дополнительных примерах, множество цветовых компонентов могут содержать три цветовых компонента. В таких примерах, смещение первого параметра квантования для первого параметра квантования для первого цветового компонента равно смещению второго параметра квантования для второго параметра квантования для второго цветового компонента, смещение первого параметра квантования (и смещение второго параметра квантования) меньше смещения третьего параметра квантования для третьего параметра квантования для третьего цветового компонента. В некоторых примерах, процесс фильтрации для удаления блочности может дополнительно выполняться для CU. В таких примерах, видеодекодер 30 может использовать начальный QP для каждого цветового компонента, а не конечного QP.
[238] В некоторых примерах, множество цветовых компонентов содержат компонент сигнала яркости и компонент сигнала цветности. В таких примерах, видеодекодер 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала яркости, граничную интенсивность края сигнала яркости. Видеодекодер 30 дополнительно может определять на основе, по меньшей мере, частично, конечного QP для компонента сигнала цветности, граничную интенсивность края сигнала цветности. В ответ на определение того, что граничная интенсивность края сигнала яркости не удовлетворяет первому пороговому значению, видеодекодер 30 может выполнять процесс фильтрации для удаления блочности для края сигнала яркости. Дополнительно, в ответ на определение того, что граничная интенсивность края сигнала цветности не удовлетворяет второму пороговому значению, видеодекодер 30 может выполнять процесс фильтрации для удаления блочности для края сигнала цветности.
[239] В некоторых дополнительных примерах, CU представляет собой первую CU. В таких примерах, видеодекодер 30 может декодировать вторую CU. При декодировании второй CU, видеодекодер 30, для цветового компонента, может определять QP для цветовых компонентов, определять конечное QP-значение для цветового компонента на основе второй CU, не кодируемой с использованием преобразования цветового пространства, таким образом, что конечное QP-значение для цветового компонента равно начальному QP-значению цветового компонента, и обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов второй CU, причем блок коэффициентов второй CU основан на выборочных значениях цветового компонента. Видеодекодер 30 дополнительно может восстанавливать вторую CU на основе каждого из одного или более обратно квантованных блоков коэффициентов второй CU.
[240] В некоторых примерах, для цветового компонента, QP-смещение для цветового компонента зависит от режима кодирования CU. В некоторых таких примерах, для цветового компонента, видеодекодер 30 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим или режим внутреннего BC, и равно второму значению, когда режим кодирования CU представляет собой внешний режим, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, видеодекодер 30 может определять QP-смещение для компонента таким образом, что QP-смещение равно первому значению, когда режим кодирования CU представляет собой внутренний режим, и равно второму значению, когда режим кодирования CU представляет собой режим внутреннего BC, причем первое значение отличается от второго значения.
[241] В некоторых примерах, множество цветовых компонентов содержат три цветовых компонента. В таких примерах, смещения параметров квантования могут быть равны (-5+6*BitInc,-5+6*BitInc,-3+6*BitInc). В других таких примерах, смещения параметров квантования могут быть равны другим значениям, таким как (-4+6*BitInc,-4+6*BitInc,-3+6*BitInc), (-4+6*BitInc,-4+6*BitInc,-2+6*BitInc) или (-5+6*BitInc,-5+6*BitInc,-2+6*BitInc). В любом случае, BitInc может быть равен 0, 1 или 2.
[242] В некоторых примерах, для цветовых компонентов, QP-смещение для цветового компонента может зависеть от того, представляет тип вырезки CU собой тип I-вырезки, тип P-вырезки или тип B-вырезки. В таких примерах, для цветового компонента, видеодекодер 30 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, и равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки или тип B-вырезки, причем первое значение отличается от второго значения. В других таких примерах, для цветового компонента, видеодекодер 30 может определять то, что QP-смещение для цветового компонента равно первому значению, когда тип вырезки CU представляет собой тип I-вырезки, равно второму значению, когда тип вырезки CU представляет собой тип P-вырезки, и равно третьему значению, когда тип вырезки CU представляет собой тип B-вырезки, причем первое значение отличается от второго значения, второе значение отличается от третьего значения, и первое значение отличается от третьего значения.
N
N
[243] В некоторых примерах, входные данные преобразования цветового пространства имеют N-битовую точность. В таких примерах, остаточные данные для CU после внутреннего/внешнего прогнозирования могут находиться в диапазоне [-2, 2-1]. В некоторых других примерах, в ответ на определение того, что CU кодируется с режимом внутреннего кодирования, видеодекодер 30 дополнительно может прогнозировать все блоки сигналов цветности CU с использованием идентичного режима прогнозирования сигналов цветности. В таких примерах, видеодекодер 30 дополнительно может прогнозировать все блоки сигналов яркости CU с использованием идентичного режима прогнозирования сигналов яркости. Идентичный режим прогнозирования сигналов яркости может быть идентичным идентичному режиму прогнозирования сигналов цветности.
[244] Фиг. 10 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования CU, в соответствии с технологией этого раскрытия сущности. Текущий блок может содержать текущую CU или часть текущей CU. Хотя описывается относительно видеокодера 20 (фиг. 1 и 2), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 10.
[245] При кодировании CU, видеокодер 20 может определять то, следует или нет кодировать текущую CU с использованием преобразования цветового пространства (254). Для цветового компонента (например, компонента сигнала яркости или компонента сигнала цветности), видеокодер 20 может определять начальный QP для цветового компонента (256). Кроме того, видеокодер 20 может задавать конечный QP для цветового компонента на основе текущей CU, кодируемой с использованием преобразования цветового пространства, таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента (258). Другими словами, в некоторых примерах, в ответ на определение того, что текущая CU кодируется с использованием преобразования цветового пространства, видеокодер 20 задает конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеокодер 20 может квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для CU, причем блок коэффициентов для CU основан на выборочных значениях цветового компонента (260). Видеокодер 20 дополнительно может выводить поток битов видеоданных, содержащий один или более энтропийно кодированных синтаксических элементов, представляющих каждый из блоков квантованных коэффициентов (266).
[246] Фиг. 11 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования CU видеоданных. Это раскрытие сущности описывает примерный способ по фиг. 9 со ссылкой на текущую CU. Тем не менее, аналогичные примеры являются возможными с другими типами видеоблоков. Кроме того, хотя описывается относительно видеодекодера 30 (фиг. 1 и 7), следует понимать, что другие устройства могут быть сконфигурированы с возможностью осуществлять способ, аналогичный способу по фиг. 11.
[247] При декодировании CU видеодекодер 30 может определять то, что CU кодирована с использованием преобразования цветового пространства (270). Видеодекодер 30 может определять начальный QP для цветового компонента (272). Дополнительно, видеодекодер 30 может определять, на основе текущей CU, кодируемой с использованием преобразования цветового пространства, конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента (274). Например, в ответ на текущую CU, кодируемую с использованием преобразования цветового пространства, видеодекодер 30 может задавать конечный QP для цветового компонента таким образом, что конечный QP для цветового компонента равен сумме начального QP цветового компонента и ненулевого QP-смещения для цветового компонента. Видеодекодер 30 может обратно квантовать, на основе конечного QP для цветового компонента, блок коэффициентов для текущей CU, причем блок коэффициентов для текущей CU основан на выборочных значениях цветового компонента (276). Видеодекодер 30 может восстанавливать текущую CU на основе обратно квантованных блоков коэффициентов для текущей CU (280).
[248] Следует признавать, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.
[249] В одном или более примеров, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут быть сохранены или переданы, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполнены посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[250] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения на оптических дисках, устройство хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может быть использован для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Так же, любое подключение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[251] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных и/или аппаратных модулей, сконфигурированных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
[252] Технологии этого раскрытия сущности могут быть реализованы в широком спектре устройств или приборов, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC) или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, сконфигурированных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные блоки могут быть комбинированы в аппаратный модуль кодека или предоставлены посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[253] Описаны различные примеры раскрытия сущности. Любая комбинация описанных систем, операции или функции предположены. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.