СПОСОБ, УСТРОЙСТВО И СИСТЕМА ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДЕРЕВА БЛОКОВ ВИДЕОВЫБОРОК
METHOD, DEVICE AND SYSTEM FOR ENCODING AND DECODING TREE OF VIDEOS SAMPLES

Перекрестная ссылка на родственную заявку на патент
[0001] Данная заявка испрашивает приоритет в соответствии с 35 U.S.C. §119 по дате подачи заявки на патент (Австралия) № 2019201649, поданной 11 марта 2019 года, настоящим полностью содержащуюся по ссылке как полностью изложенную в данном документе.
Область техники, к которой относится изобретение
[0002] Настоящее изобретение, в общем, относится к обработке цифровых видеосигналов и, в частности, к способу, устройству и системе для кодирования и декодирования дерева блоков видеовыборок. Настоящее изобретение также относится к компьютерному программному продукту, включающему в себя считываемый компьютером носитель, имеющий записанную компьютерную программу для кодирования и декодирования дерева блоков видеовыборок.
Уровень техники
[0003] В настоящее время предусмотрено множество вариантов применения для кодирования видео, включающих в себя варианты применения для передачи и хранения видеоданных. Также разработано множество стандартов кодирования видео, и другие в данный момент разрабатываются. Новейшие разработки в стандартизации кодирования видео приводят к образованию группы, называемой "Объединенной экспертной группой по видеостандартам (JVET)". Объединенная экспертная группа по видеостандартам (JVET) включает в себя членов Исследовательской группы 16, вопрос 6 (SG16/Q6) сектора стандартизации связи (ITU-T) Международного союза по телекоммуникациям (ITU), также известной как "Экспертная группа в области кодирования видео (VCEG)", и членов объединенного технического комитета 1/подкомитета 29/рабочей группы 11 Международной организации по стандартизации/Международной электротехнической комиссии (ISO/IEC JTC1/SC29/WG11), также известной как "Экспертная группа по киноизображению (MPEG)".
[0004] Объединенная экспертная группа по видеостандартам (JVET) организует конкурс заявок (CfP), причем ответы изучены на 10-ой конференции в Сан-Диего, США. Отправленные ответы демонстрируют характеристики сжатия видео, значительно превосходящие характеристики сжатия видео стандарта сжатия видео современного уровня техники, т.е.: "стандарта высокоэффективного кодирования видео (HEVC)". На основе этой опережающий динамики, решено запустить проект по разработке нового стандарта сжатия видео, который называется "стандартом универсального кодирования видео (VVC)". VVC предположительно должен удовлетворять непрерывный спрос на все более высокую производительность сжатия, в частности, по мере того, как характеристики видеоформатов улучшаются (например, с более высоким разрешением и более высокой частотой кадров), и удовлетворять растущий рыночный спрос на предоставление услуг по WAN, при которых затраты на полосу пропускания являются относительно высокими. Одновременно, VVC должен быть реализуемым в современных процессах в кристалле микросхемы и предлагать приемлемый компромисс между достигаемой производительностью по сравнению с затратами на реализацию (например, с точки зрения площади кристалла микросхемы, нагрузки CPU-процессора, использования запоминающего устройства и полосы пропускания).
TM
[0005] Видеоданные включают в себя последовательность кадров данных изображений, каждый из которых включает в себя один или более цветовых каналов. В общем, требуются один первичный цветовой канал и два вторичных цветовых канала. Первичный цветовой канал, в общем, называется "каналом яркости", и вторичные цветовые каналы, в общем, называются "каналами цветности". Хотя видеоданные типично отображаются в цветовом пространстве на основе RGB (системы "красный-зеленый-синий"), это цветовое пространство имеет высокую степень корреляции между тремя соответствующими компонентами. Представление видеоданных, наблюдаемое посредством кодера или декодера, зачастую использует такое цветовое пространство, как YCbCr. YCbCr концентрирует яркость, преобразованную в "яркость" согласно передаточной функции, в Y-(первичном) канале и цветность в Cb- и Cr-(вторичных) каналах. Кроме того, Cb- и Cr-каналы могут дискретизироваться пространственно на меньшей скорости (субдискретизироваться) по сравнению с каналом яркости, например, половина горизонтально и половина вертикально, что известно как "формат цветности 4:2:0". Формат цветности 4:2:0 широко используется в "потребительских" вариантах применения, таких как потоковая Интернет-передача видео, широковещательное телевидение и хранение на Blu-Ray-дисках. Субдискретизация Cb- и Cr-каналов с половинной скоростью горизонтально и отсутствие субдискретизации вертикально известно как "формат цветности 4:2:2". Формат цветности 4:2:2 типично используется в профессиональных вариантах применения, включающих в себя захват видеозаписи для кинематографического производства и т.п. Более высокая частота дискретизации формата цветности 4:2:2 делает результирующее видео более устойчивым к операциям редактирования, таким как цветокоррекция. До распространения потребителям, материал в формате цветности 4:2:2 зачастую преобразуется в формат цветности 4:2:0 и затем кодируется для распространения потребителям. В дополнение к формату цветности, видео также характеризуется посредством разрешения и частоты кадров. Примерные разрешения примера представляют собой сверхвысокую четкость (UHD) с разрешением 3840×2160 или "8K" с разрешением 7680×4320, и примерные частоты кадров составляют 60 или 120 Гц. Частоты дискретизации яркости могут колебаться приблизительно от 500 миллионов выборок в секунду до нескольких миллиардов выборок в секунду. Для формата цветности 4:2:0, частота дискретизации каждого канала цветности составляет одну четверть от частоты дискретизации яркости, а для формата цветности 4:2:2, частота дискретизации каждого канала цветности составляет одну половину от частоты дискретизации яркости.
[0006] VVC-стандарт представляет собой кодек "на основе блоков", в котором кадры сначала разделяются на квадратный массив областей, известных как "единицы дерева кодирования (CTU)". CTU, в общем, занимают относительно большую зону, к примеру, выборки яркости 128×128. Тем не менее, CTU на правом и нижнем краю каждого кадра могут занимать меньшую зону. С каждой CTU ассоциируется "дерево кодирования" для канала яркости и дополнительное дерево кодирования для каналов цветности. Дерево кодирования задает разложение зоны CTU на набор блоков, также называемых "блоками кодирования (CB)". Также одно дерево кодирования может указывать блоки как для канала яркости, так и для каналов цветности, причем в этом случае совокупности совместно размещенных блоков кодирования называются "единицами кодирования (CU)", т.е. каждая CU имеет блок кодирования для каждого цветового канала. CB обрабатываются для кодирования или декодирования в конкретном порядке. Как следствие использования формата цветности 4:2:0, CTU с деревом кодирования яркости для зоны выборок яркости 128×128 имеет соответствующее дерево кодирования цветности для зоны выборок цветности 64×64, совместно размещаемой с зоной выборок яркости 128×128. Когда одно дерево кодирования используется для канала яркости и каналов цветности, совокупности совместно размещенных блоков для данной зоны, в общем, называются "единицами", например, вышеуказанными CU, а также "единицами прогнозирования (PU)" и "единицами преобразования (TU)". Когда отдельные деревья кодирования используются для данной зоны, используются вышеуказанные CB, а также "блоки прогнозирования (PB)" и "блоки преобразования (TB)".
[0007] Несмотря на вышеуказанное различие между "единицами" и "блоками", термин "блок" может использоваться в качестве общего термина для зон или областей кадра, для которого операции применяются ко всем цветовым каналам.
[0008] Для каждой CU, формируется единица прогнозирования (PU) контента (выборочных значений) соответствующей зоны данных кадров ("единицы прогнозирования"). Дополнительно, формируется представление разности (или "остатка" в пространственной области) между прогнозированием и контентом зоны, наблюдаемой при вводе в кодер. Разность в каждом цветовом канале может преобразовываться и кодироваться в качестве последовательности остаточных коэффициентов, с формированием одной или более TU для данной CU. Применяемое преобразование может представлять собой дискретное косинусное преобразование (DCT) или другое преобразование, применяемое к каждому блоку остаточных значений. Это преобразование применяется разделимо, т.е. двумерное преобразование выполняется в два прохода. Блок, во-первых, преобразуется посредством применения одномерного преобразования к каждой строке выборок в блоке. Затем частичный результат преобразуется посредством применения одномерного преобразования к каждому столбцу частичного результата, чтобы формировать конечный блок коэффициентов преобразования, который практически декоррелирует остаточные выборки. Преобразования различных размеров поддерживаются посредством VVC-стандарта, включающие в себя преобразования блоков прямоугольной формы, при этом каждый боковой размер представляет собой степень двух. Коэффициенты преобразования квантуются для энтропийного кодирования в поток битов.
[0009] Когда пространственное прогнозирование ("внутреннее прогнозирование") используется для того, чтобы формировать PB, набор опорных выборок используется для того, чтобы формировать прогнозированные выборки для текущей PB. Опорные выборки включают в себя выборки, смежные с PB, которые уже "восстановлены" (суммирование остаточных выборок с внутренне прогнозированными выборками). Эти смежные выборки формируют строку выше PB и столбец слева от PB. Строка и столбец также протягиваются за пределы PB-границы с возможностью включать в себя дополнительные близлежащие выборки. Вследствие сканирования блоков при сканировании в Z-порядке, некоторые опорные выборки восстанавливаются в непосредственно предшествующем блоке. Использование выборок из непосредственно предшествующего блока приводит к зависимости с обратной связью, которая может ограничивать пропускную способность блоков через видеокодер или декодер. Дополнительно, если относительно небольшие блоки прогнозируются из других кадров ("внешнее прогнозирование"), пропускная способность запоминающего устройства для выборки опорных выборок может становиться чрезмерной, в частности, с учетом дополнительных выборок, требуемых для того, чтобы приспосабливать субпиксельную интерполяционную фильтрацию.
Сущность изобретения
[00010] Цель настоящего изобретения заключается в том, чтобы в значительной степени преодолевать или, по меньшей мере, снижать остроту одного или более недостатков существующих компоновок.
[00011] Один аспект настоящего раскрытия сущности предоставляет способ декодирования блоков кодирования единицы дерева кодирования для кадра изображения из потока битов, при этом способ содержит: определение формата цветности кадра изображения, причем формат цветности имеет каналы цветности кадра изображения, субдискретизированные относительно канала яркости кадра изображения; определение, на основе определенного формата цветности, размера блока кодирования цветности одного из каналов цветности единицы дерева кодирования, при этом блок кодирования цветности совместно размещается с множеством соответствующих блоков яркости; определение того, что блок кодирования цветности кодирован с использованием внутреннего прогнозирования, если определенный размер блока цветности составляет предопределенный минимальный размер блока цветности; и декодирование блоков кодирования дерева кодирования с использованием внутреннего прогнозирования для блока кодирования цветности и внешнего прогнозирования для по меньшей мере одного из множества соответствующих блоков кодирования яркости.
[00012] Согласно другому аспекту, формат цветности представляет собой 4:2:0.
[00013] Согласно другому аспекту, формат цветности представляет собой 4:2:2.
[00014] Согласно другому аспекту, предопределенный минимальный размер блока цветности равен 32, если множество блоков яркости представляют собой результат троичного разбиения зоны яркости в 128 выборок яркости.
[00015] Согласно другому аспекту, предопределенный минимальный размер блока цветности равен 16, если множество блоков яркости представляют собой результат разбиения на дерево квадрантов, двоичного разбиения или троичного разбиения зоны яркости в 64 выборки яркости.
[00016] Согласно другому аспекту, блок цветности декодируется с использованием внутреннего DC-прогнозирования.
[00017] Согласно другому аспекту, (i) единица кодирования яркости единицы дерева кодирования разделяется на множество блоков кодирования яркости с использованием режима разбиения, декодированного из потока битов, и (ii) блок кодирования цветности предопределенного минимального размера формируется для каждого из каналов цветности.
[00018] Согласно другому аспекту, каждый из множества блоков кодирования яркости по меньшей мере частично перекрывает сформированные блоки кодирования цветности.
[00019] Согласно другому аспекту, способ дополнительно содержит определение того, что размер блока цветности составляет предопределенный минимальный размер, на основе списка запрещенных разбиений цветности.
[00020] Согласно другому аспекту, поток битов сигнализирует один режим внутреннего прогнозирования из нескольких возможных режимов внутреннего прогнозирования посредством включения синтаксического элемента intra_chroma_pred_mode.
[00021] Другой аспект настоящего раскрытия сущности предоставляет энергонезависимый считываемый компьютером носитель, хранящий компьютерную программу для реализации способа декодирования блоков кодирования единицы дерева кодирования для кадра изображения из потока битов, причем программа содержит: код для определения формата цветности кадра изображения, причем формат цветности имеет каналы цветности кадра изображения, субдискретизированные относительно канала яркости кадра изображения; код для определения, на основе определенного формата цветности, размера блока кодирования цветности одного из каналов цветности единицы дерева кодирования, при этом блок кодирования цветности совместно размещается с множеством соответствующих блоков яркости; код для определения того, что блок кодирования цветности кодирован с использованием внутреннего прогнозирования, если определенный размер блока цветности составляет предопределенный минимальный размер блока цветности; и код для декодирования блоки кодирования дерева кодирования с использованием внутреннего прогнозирования для блока кодирования цветности и внешнего прогнозирования для по меньшей мере одного из множества соответствующих блоков кодирования яркости.
[00022] Другой аспект настоящего раскрытия сущности предоставляет видеодекодер, выполненный с возможностью: принимать единицу дерева кодирования для кадра изображения из потока битов; определять формат цветности кадра изображения, причем формат цветности имеет каналы цветности кадра изображения, субдискретизированные относительно канала яркости кадра изображения; определять, на основе определенного формата цветности, размер блока кодирования цветности одного из каналов цветности единицы дерева кодирования, при этом блок кодирования цветности совместно размещается с множеством соответствующих блоков яркости; (14100) определять то, что блок кодирования цветности кодирован с использованием внутреннего прогнозирования, если определенный размер блока цветности составляет предопределенный минимальный размер блока цветности; и (14140) декодировать блоки кодирования дерева кодирования с использованием внутреннего прогнозирования для блока кодирования цветности и внешнего прогнозирования для по меньшей мере одного из множества соответствующих блоков кодирования яркости.
[00023] Другой аспект настоящего раскрытия сущности предоставляет систему, содержащую: запоминающее устройство; и процессор, при этом процессор выполнен с возможностью выполнять код, сохраненный на запоминающем устройстве для реализации способа декодирования блоков кодирования единицы дерева кодирования для кадра изображения из потока битов, при этом способ содержит: определение формата цветности кадра изображения, причем формат цветности имеет каналы цветности кадра изображения, субдискретизированные относительно канала яркости кадра изображения; определение, на основе определенного формата цветности, размера блока кодирования цветности одного из каналов цветности единицы дерева кодирования, при этом блок кодирования цветности совместно размещается с множеством соответствующих блоков яркости; определение того, что блок кодирования цветности кодирован с использованием внутреннего прогнозирования, если определенный размер блока цветности составляет предопределенный минимальный размер блока цветности; и декодирование блоков кодирования дерева кодирования с использованием внутреннего прогнозирования для блока кодирования цветности и внешнего прогнозирования для по меньшей мере одного из множества соответствующих блоков кодирования яркости.
[00024] Другой аспект настоящего раскрытия сущности предоставляет способ декодирования блока из потока битов видео с использованием первичного преобразования и вторичного преобразования, при этом способ содержит: выбор первого контекста независимо от режима внутреннего прогнозирования блока; декодирование первого бина с использованием выбранного первого контекста; выбор второго контекста; декодирование второго бина с использованием выбранного второго контекста, если выбранный первый бин указывает присутствие второго бина; и декодирование блока с использованием вторичного преобразования с последующим первичным преобразованием, причем вторичное преобразование основано на индексе вторичного преобразования, извлекаемом из декодированного первого бина и декодированного второго бина.
[00025] Другой аспект настоящего раскрытия сущности предоставляет энергонезависимый считываемый компьютером носитель, хранящий компьютерную программу для реализации способа декодирования блока из потока битов видео с использованием первичного преобразования и вторичного преобразования, причем программа содержит: код для выбора первого контекста независимо от режима внутреннего прогнозирования блока; код для декодирования первого бина с использованием выбранного первого контекста; код для выбора второго контекста; код для декодирования второго бина с использованием выбранного второго контекста, если выбранный первый бин указывает присутствие второго бина; и код для декодирования блока с использованием вторичного преобразования с последующим первичным преобразованием, причем вторичное преобразование основано на индексе вторичного преобразования, извлекаемом из декодированного первого бина и декодированного второго бина.
[00026] Другой аспект настоящего раскрытия сущности предоставляет видеодекодер, выполненный с возможностью: принимать блок из потока битов видео; выбирать первый контекст независимо от режима внутреннего прогнозирования блока; декодировать первый бин с использованием выбранного первого контекста; выбирать второй контекст; декодировать второй бин с использованием выбранного второго контекста, если выбранный первый бин указывает присутствие второго бина; и декодировать блок с использованием вторичного преобразования с последующим первичным преобразованием, причем вторичное преобразование основано на индексе вторичного преобразования, извлекаемом из декодированного первого бина и декодированного второго бина.
[00027] Также раскрываются другие аспекты.
Краткое описание чертежей
[00028] Далее описывается по меньшей мере один вариант осуществления настоящего изобретения со ссылкой на следующих чертежи и приложения, на которых:
[00029] Фиг. 1 является принципиальной блок-схемой, показывающей систему кодирования и декодирования видео;
[00030] Фиг. 2A и 2B формируют принципиальную блок-схему компьютерной системы общего назначения, в которой могут осуществляться на практике одна или обе из системы кодирования и декодирования видео по фиг. 1;
[00031] Фиг. 3 является принципиальной блок-схемой, показывающей функциональные модули видеокодера;
[00032] Фиг. 4 является принципиальной блок-схемой, показывающей функциональные модули видеодекодера;
[00033] Фиг. 5 является принципиальной блок-схемой, показывающей доступные разделения блока на один или более блоков в древовидной структуре стандарта универсального кодирования видео;
[00034] Фиг. 6 является схематичной иллюстрацией потока данных, чтобы достигать разрешенных разделений блока на один или более блоков в древовидной структуре стандарта универсального кодирования видео;
[00035] Фиг. 7A и 7B показывают примерное разделение единицы дерева кодирования (CTU) на определенное число единиц кодирования (CU);
[00036] Фиг. 8A, 8B и 8C показывают примерное разделение единицы дерева кодирования (CTU) на определенное число блоков кодирования (CB) в каналах яркости и цветности;
[00037] Фиг. 9 показывает совокупность размеров блоков преобразования и ассоциированных шаблонов сканирования;
[00038] Фиг. 10 показывает набор правил для формирования списков разрешенных разбиений в дереве кодирования яркости и дереве кодирования цветности;
[00039] Фиг. 11 показывает способ для кодирования деревьев кодирования кадра изображения в поток битов видео;
[00040] Фиг. 12 показывает способ для декодирования деревьев кодирования кадра изображения из потока битов видео;
[00041] Фиг. 13 показывает способ для кодирования дерева кодирования кадра изображения в поток битов видео;
[00042] Фиг. 14 показывает способ для декодирования дерева кодирования кадра изображения из потока битов видео;
[00043] Фиг. 15A-15E показывают примерные блоки преобразования, для которых применяется неразделимое вторичное преобразование; и
[00044] Фиг. 16 показывает способ для выполнения неразделимого вторичного преобразования для блока остаточных коэффициентов, декодированных из потока битов видео.
Подробное описание, включающее в себя оптимальный режим
[00045] Если на одном или более из прилагаемых чертежей содержится ссылка на этапы и/или признаки, которые имеют идентичные ссылки с номерами, эти этапы и/или признаки для целей этого описания имеют идентичную функцию(и) или операцию(и), если иное намерение не указано.
[00046] Как описано выше, использование выборок из непосредственно предшествующего блока приводит к зависимости с обратной связью, которая может ограничивать пропускную способность блоков через видеокодер или декодер. Желательно иметь способы для того, чтобы уменьшать серьезность результирующего контура зависимостей с обратной связью, чтобы обеспечивать то, что может поддерживаться высокая скорость обработки блоков, по мере необходимости для типичных вариантов приложений кодирования и декодирования в реальном времени. Контур зависимостей с обратной связью, в частности, является проблематичным для высоких частот дискретизации современных видеоформатов, например, от 500-4000 выборок в секунду, тогда как тактовые частоты ASIC (специализированной интегральной схемы) типично составляют сотни МГц.
[00047] Фиг. 1 является принципиальной блок-схемой, показывающей функциональные модули системы 100 кодирования и декодирования видео. Система 100 может использовать различные правила для разрешенных подразделений областей в деревьях кодирования яркости и цветности, чтобы уменьшать встречающуюся скорость блочной обработки по принципу наихудшего случая. Например, система 100 может работать таким образом, что блоки всегда имеют размер в качестве кратного числа 16 (шестнадцати) выборок, независимо от соотношения сторон блока. Кроме того, если дерево кодирования включает в себя разбиение, указывающее присутствие небольших блоков кодирования яркости, разбиение может запрещаться в канале цветности, приводя к одному CB цветности, совместно размещаемому с несколькими CB яркости. CB цветности может использовать один режим прогнозирования, к примеру, один режим внутреннего прогнозирования, независимо от режимов прогнозирования каждого из совместно размещенных CB яркости (в том числе если один или более CB яркости используют внешнее прогнозирование). Кодирование остаточных коэффициентов также может использовать кратное число размера в 16 блоков, в том числе в случае блоков, имеющих ширину или высоту в две выборки.
[00048] Система 100 включает в себя исходное устройство 110 и целевое устройство 130. Канал 120 связи используется для того, чтобы передавать кодированную видеоинформацию из исходного устройства 110 в целевое устройство 130. В некоторых компоновках, исходное устройство 110 и целевое устройство 130 могут содержать либо соответствующие мобильные телефонные трубки, либо "смартфоны", причем в этом случае канал 120 связи представляет собой беспроводной канал. В других компоновках, исходное устройство 110 и целевое устройство 130 могут содержать оборудование для проведения видеоконференций, причем в этом случае канал 120 связи типично представляет собой проводной канал, такой как Интернет-соединение. Кроме того, исходное устройство 110 и целевое устройство 130 могут содержать любые из широкого диапазона устройств, включающих в себя устройства, поддерживающие телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные приложения, Интернет-видеоприложения (включающие в себя потоковую передачу) и приложения, в которых кодированные видеоданные захватываются на некотором считываемом компьютером носителе хранения данных, к примеру, на жестких дисках в файловом сервере.
[00049] Как показано на фиг. 1, исходное устройство 110 включает в себя видеоисточник 112, видеокодер 114 и передающее устройство 116. Видеоисточник 112 типично содержит источник захваченных данных видеокадров (показаны как 113), к примеру, датчик захвата изображений, ранее захваченной видеопоследовательности, сохраненной на энергонезависимом носителе записи, либо прямой видеотрансляции из удаленного датчика захвата изображений. Видеоисточник 112 также может представлять собой вывод компьютерной видеокарты, например, отображение видеовывода операционной системы и различных приложений, выполняемых на вычислительном устройстве, например, планшетном компьютере. Примеры исходных устройств 110, которые могут включать в себя датчик захвата изображений в качестве видеоисточника 112, включают в себя смартфоны, записывающие видеокамеры, профессиональные видеокамеры и сетевые видеокамеры.
[00050] Видеокодер 114 преобразует (или "кодирует") захваченные данные кадров (указываются посредством стрелки 113) из видеоисточника 112 в поток битов (указывается посредством стрелки 115), как подробнее описано со ссылкой на фиг. 3. Поток 115 битов передается посредством передающего устройства 116 по каналу 120 связи в качестве кодированных видеоданных (или "кодированной видеоинформации"). Также можно сохранять поток 115 битов в энергонезависимом устройстве 122 хранения данных, таком как "флэш"-память или жесткий диск, вплоть до последующей передаче по каналу 120 связи или вместо передачи по каналу 120 связи.
[00051] Целевое устройство 130 включает в себя приемное устройство 132, видеодекодер 134 и устройство 136 отображения. Приемное устройство 132 принимает кодированные видеоданные из канала 120 связи и передает принимаемые видеоданные в видеодекодер 134 в качестве потока битов (указывается посредством стрелки 133). Видеодекодер 134 затем выводит декодированные данные кадров (указываются посредством стрелки 135) в устройство 136 отображения. Декодированные данные 135 кадров имеют формат цветности, идентичный формату цветности данных 113 кадров. Примеры устройства 136 отображения включают в себя электронно-лучевую трубку, жидкокристаллический дисплей, к примеру, в смартфонах, планшетных компьютерах, компьютерных мониторах либо в автономных телевизионных приемниках. Также функциональность каждого из исходного устройства 110 и целевого устройства 130 может осуществляться в одном устройстве, примеры которого включают в себя мобильные телефонные трубки и планшетные компьютеры.
[00052] Несмотря на вышеупомянутые примерные устройства, каждое из исходного устройства 110 и целевого устройства 130 может быть сконфигурировано в вычислительной системе общего назначения, типично через комбинацию аппаратных и программных компонентов. Фиг. 2A иллюстрирует такую компьютерную систему 200, которая включает в себя: компьютерный модуль 201; устройства ввода, такие как клавиатура 202, указательное устройство 203 типа "мышь", сканер 226, камера 227, которая может быть сконфигурирована как видеоисточник 112 и микрофон 280; и устройства вывода, включающие в себя принтер 215, устройство 214 отображения, которое может быть сконфигурировано как устройство 136 отображения, и громкоговорители 217. Внешнее приемо-передающее устройство 216 типа "модулятор-демодулятор (модем)" может использоваться посредством компьютерного модуля 201 для обмена данными в/из сети 220 связи через соединение 221. Сеть 220 связи, которая может представлять канал 120 связи, может представлять собой глобальную вычислительную сеть (WAN), такую как Интернет, сеть сотовой связи или частная WAN. Когда соединение 221 представляет собой телефонную линию связи, модем 216 может представлять собой традиционный "коммутируемый" модем. Альтернативно, когда соединение 221 представляет собой соединение с высокой пропускной способностью (например, кабельное или оптическое), модем 216 может представлять собой широкополосный модем. Беспроводной модем также может использоваться для беспроводного соединения с сетью 220 связи. Приемо-передающее устройство 216 может предоставлять функциональность передающего устройства 116 и приемного устройства 132, и канал 120 связи может осуществляться в соединении 221.
TM
TM
[00053] Компьютерный модуль 201 типично включает в себя по меньшей мере один процессор 205 и запоминающее устройство 206. Например, запоминающее устройство 206 может иметь полупроводниковое оперативное запоминающее устройство (RAM) и полупроводниковое постоянное запоминающее устройство (ROM). Компьютерный модуль 201 также включает в себя определенное число интерфейсов ввода-вывода (I/O), включающих в себя: аудио-видеоинтерфейс 207, который соединяется с видеодисплеем 214, громкоговорителями 217 и микрофоном 280; интерфейс 213 ввода-вывода, который соединяется с клавиатурой 202, мышью 203, сканером 226, камерой 227 и необязательно джойстиком или другим устройством с человеко-машинным интерфейсом (не проиллюстрировано); и интерфейс 208 для внешнего модема 216 и принтера 215. Сигнал из аудио-видеоинтерфейса 207 в компьютерный монитор 214, в общем, представляет собой вывод компьютерной видеокарты. В некоторых реализациях, модем 216 может быть включен внутри компьютерного модуля 201, например, внутри интерфейса 208. Компьютерный модуль 201 также имеет локальный сетевой интерфейс 211, который разрешает соединение компьютерной системы 200 через соединение 223 с локальной вычислительной сетью 222 связи, известной как локальная вычислительная сеть (LAN). Как проиллюстрировано на фиг. 2A, локальная сеть 222 связи также может соединяться с глобальной сетью 220 через соединение 224, которое типично должно включать в себя так называемое устройство "брандмауэра" или устройство с аналогичной функциональностью. Локальный сетевой интерфейс 211 может содержать печатную Ethernet-плату, беспроводное Bluetooth-устройство или беспроводное IEEE 802.11-устройство; тем не менее, множество других типов интерфейсов могут осуществляться на практике для интерфейса 211. Локальный сетевой интерфейс 211 также может предоставлять функциональность передающего устройства 116 и приемного устройства 132, и канал 120 связи также может осуществляться в локальной сети 222 связи.
TM
[00054] Интерфейсы 208 и 213 ввода-вывода могут предоставлять одно или оба из последовательного и параллельного подключения, при этом первый типично реализуется согласно стандартам на основе универсальной последовательной шины (USB) и имеет соответствующие USB-разъемы (не проиллюстрированы). Устройства 209 хранения данных предоставляются и типично включают в себя жесткий диск 210 (HDD). Также могут использоваться другие устройства хранения данных, такие как накопитель на гибких дисках и накопитель на магнитной ленте (не проиллюстрированы). Накопитель 212 на оптических дисках типично предоставляется с возможностью выступать в качестве энергонезависимого источника данных. Портативные запоминающие устройства, такие оптические диски (например, CD-ROM, DVD, Blu-Ray-диск), USB-RAM, портативные внешние жесткие диски и гибкие диски, например, могут использоваться в качестве соответствующих источников данных для компьютерной системы 200. Типично, любое из HDD 210, накопителя на оптических дисках 212, сетей 220 и 222 также может быть выполнено с возможностью работать в качестве видеоисточника 112 или в качестве назначения для декодированных видеоданных, которые должны сохраняться для воспроизведения через дисплей 214. Исходное устройство 110 и целевое устройство 130 системы 100 могут осуществляться в компьютерной системе 200.
TM
[00055] Компоненты 205-313 компьютерного модуля 201 типично обмениваются данными через соединительную шину 204 таким способом, который приводит к традиционному режиму работы компьютерной системы 200, известному специалистам в данной области техники. Например, процессор 205 соединяется с системной шиной 204 с использованием соединения 218. Аналогично, запоминающее устройство 206 и накопитель 212 на оптических дисках соединяются с системной шиной 204 посредством соединений 219. Примеры компьютеров, на которых могут осуществляться на практике описанные компоновки, включают в себя IBM PC и совместимые устройства, Sun SPARCstations, Apple Mac или аналогичные компьютерные системы.
[00056] При необходимости, видеокодер 114 и видеодекодер 134, а также способы, описанные ниже, могут реализовываться с использованием компьютерной системы 200. В частности, видеокодер 114, видеодекодер 134 и способы, которые описываются, могут реализовываться как одна или более прикладных программ 233, выполняемых в компьютерной системе 200. В частности, видеокодер 114, видеодекодер 134 и этапы описанных способов осуществляются посредством инструкций 231 (см. фиг. 2B) в программном обеспечении 233, которые выполняются в компьютерной системе 200. Программные инструкции 231 могут формироваться в качестве одного или более кодовых модулей, каждый из которых служит для выполнения одной или более конкретных задач. Программное обеспечение также может быть разделено на две отдельных части, при этом первая часть и соответствующие кодовые модули выполняют описанные способы, а вторая часть и соответствующие кодовые модули управляют пользовательским интерфейсом между первой частью и пользователем.
[00057] Программное обеспечение может сохраняться на считываемом компьютером носителе, включающем в себя, например, устройства хранения данных, описанные ниже. Программное обеспечение загружается в компьютерную систему 200 из считываемого компьютером носителя и затем выполняется посредством компьютерной системы 200. Считываемый компьютером носитель, имеющий такое программное обеспечение или компьютерную программу, записанную на считываемом компьютером носителе, представляет собой компьютерный программный продукт. Использование компьютерного программного продукта в компьютерной системе 200 предпочтительно осуществляет преимущественное устройство для реализации видеокодера 114, видеодекодера 134 и описанных способов.
[00058] Программное обеспечение 233 типично сохраняется на HDD 210 или в запоминающем устройстве 206. Программное обеспечение загружается в компьютерную систему 200 из считываемого компьютером носителя и выполняется посредством компьютерной системы 200. Таким образом, например, программное обеспечение 233 может сохраняться на оптическичитаемом дисковом носителе 225 хранения данных (например, CD-ROM), который считывается посредством накопителя 212 на оптических дисках.
TM
[00059] В некоторых случаях, прикладные программы 233 могут предоставляться пользователю, кодироваться на одном или более CD-ROM 225 и считываться через соответствующий накопитель 212, или альтернативно, могут считываться пользователем из сетей 220 или 222. Еще дополнительно, программное обеспечение также может загружаться в компьютерную систему 200 из других считываемых компьютером носителей. Считываемые компьютером носители хранения данных означают любой энергонезависимый материальный носитель хранения данных, который предоставляет записанные инструкции и/или данные в компьютерную систему 200 для выполнения и/или обработки. Примеры таких носителей хранения данных включают в себя гибкие диски, магнитную ленту, CD-ROM, DVD, Blu-Ray-диск, жесткий диск, ROM или интегральную схему, запоминающее USB-устройство, магнитооптический диск или машиночитаемую карту, такую как PCMCIA-карта и т.п., независимо от того, являются такие устройства внутренними или внешними относительно компьютерного модуля 201. Примеры энергозависимых или нематериальных считываемых компьютером сред передачи, которые также могут участвовать в предоставлении программного обеспечения, прикладных программ, инструкций и/или видеоданных или кодированных видеоданных в компьютерный модуль 401, включают в себя радиочастотные или инфракрасные каналы передачи, а также сетевое соединение с другим компьютером или сетевым устройством, и сети Интернет или intranet, включающие в себя передачи по электронной почте и информацию, записанную на веб-узлах, и т.п.
[00060] Вторая часть прикладной программы 233 и соответствующие вышеупомянутые кодовые модули могут выполняться, чтобы реализовывать один или более графических пользовательских интерфейсов (GUI), которые должны быть подготовлены посредством рендеринга или иным образом представлены на дисплее 214. Через управление типично с помощью клавиатуры 202 и мыши 203, пользователь компьютерной системы 200 и приложение могут управлять интерфейсом функционально адаптируемым способом таким образом, чтобы предоставлять команды управления и/или ввод в приложения, ассоциированные с GUI. Также могут реализовываться другие формы функционально адаптируемых пользовательских интерфейсов, такие как аудиоинтерфейс, использующий речевые подсказки, выводимые через громкоговорители 217, и пользовательские голосовые команды, вводимые через микрофон 280.
[00061] Фиг. 2B является подробной принципиальной блок-схемой процессора 205 и "запоминающего устройства" 234. Запоминающее устройство 234 представляет логическое агрегирование всех модулей запоминающих устройств (включающих в себя HDD 209 и полупроводниковое запоминающее устройство 206), к которым может осуществляться доступ посредством компьютерного модуля 201 на фиг. 2A.
[00062] Когда компьютерный модуль 201 первоначально включается, выполняется программа 250 самотестирования при включении питания (POST). POST-программа 250 типично сохраняется в ROM 249 полупроводникового запоминающего устройства 206 по фиг. 2A. Аппаратное устройство, такое как ROM 249, сохраняющее программное обеспечение, иногда называется "микропрограммным обеспечением". POST-программа 250 обследует аппаратные средства в компьютерном модуле 201, чтобы обеспечивать надлежащее функционирование, и типично проверяет процессор 205, запоминающее устройство 234 (209, 206) и программный модуль 251 базовой системы ввода-вывода (BIOS), также типично сохраняемый в ROM 249, на предмет корректной работы. После того, как POST-программа 250 успешно выполнена, BIOS 251 активирует накопитель 210 на жестких дисках по фиг. 2A. Активация накопителя 210 на жестких дисках инструктирует программе 252 начальной загрузки, которая постоянно размещается на накопителе 210 на жестких дисках, выполняться через процессор 205. Она загружает операционную систему 253 в оперативное запоминающее устройство 206, после чего операционная система 253 начинает работу. Операционная система 253 представляет собой приложение системного уровня, выполняемое посредством процессора 205, чтобы выполнять различные высокоуровневые функции, включающие в себя управление процессором, управление запоминающим устройством, управление устройствами, управление хранением данных, прикладной программный интерфейс и общий пользовательский интерфейс.
[00063] Операционная система 253 управляет запоминающим устройством 234 (209, 206), чтобы обеспечивать то, что каждый процесс или приложение, работающее на компьютерном модуле 201, имеет достаточный объем запоминающего устройства, в котором он может выполняться, без конфликта с запоминающим устройством, выделяемым другому процессу. Кроме того, различные типы запоминающего устройства, доступного в компьютерной системе 200 по фиг. 2A, должен использоваться надлежащим образом, так что каждый процесс может эффективно выполняться. Соответственно, агрегированное запоминающее устройство 234 не имеет намерение иллюстрировать то, как выделяются конкретные сегменты запоминающего устройства (если не указано иное), а вместо этого предоставляет общее представление запоминающего устройства, доступного посредством компьютерной системы 200, и того, как оно используется.
[00064] Как показано на фиг. 2B, процессор 205 включает в себя определенное число функциональных модулей, включающих в себя блок 239 управления, арифметико-логическое устройство 240 (ALU) и локальное или внутреннее запоминающее устройство 248, иногда называемое "кэш-памятью". Кэш-память 248 типично включает в себя определенное число регистров 244-246 хранения данных в секции регистров. Одна или более внутренних шин 241 функционально соединяют эти функциональные модули. Процессор 205 типично также имеет один или более интерфейсов 242 для обмена данными с внешними устройствами через системную шину 204 с использованием соединения 218. Запоминающее устройство 234 соединяется с шиной 204 с использованием соединения 219.
[00065] Прикладная программа 233 включает в себя последовательность инструкций 231, которые могут включать в себя инструкции условного перехода и цикла. Программа 233 также может включать в себя данные 232, которые используются при выполнении программы 233. Инструкции 231 и данные 232 сохраняются в местоположениях 228, 229, 230 и 235, 236, 237 запоминающего устройства, соответственно. В зависимости от относительного размера инструкций 231 и местоположений 228-230 запоминающего устройства, конкретная инструкция может сохраняться в одном местоположении запоминающего устройства, как проиллюстрировано посредством инструкции, показанной в местоположении 230 запоминающего устройства. Альтернативно, инструкция может сегментироваться на определенное число частей, каждая из которых сохраняется в отдельном местоположении запоминающего устройства, как проиллюстрировано посредством сегментов инструкций, показанных в местоположениях 228 и 229 запоминающего устройства.
[00066] В общем, в процессор 205 предоставляется набор инструкций, которые выполняются в нем. Процессор 205 ожидает последующего ввода, на который процессор 205 реагирует посредством выполнения другого набора инструкций. Каждый ввод может предоставляться из одного или более из определенного числа источников, включающих в себя данные, сформированные посредством одного или более устройств 202, 203 ввода, данные, принятые из внешнего источника через одну из сетей 220, 202, данные, извлеченные из одного из устройств 206, 209 хранения данных, или данные, извлеченные из носителя 225 хранения данных, вставленного в соответствующий модуль 212 считывания, все из которых проиллюстрированы на фиг. 2A. Выполнение набора инструкций в некоторых случаях может приводить к выводу данных. Выполнение также может заключать в себе сохранение данных или переменных в запоминающем устройстве 234.
[00067] Видеокодер 114, видеодекодер 134 и описанные способы могут использовать входные переменные 254, которые сохраняются в запоминающем устройстве 234 в соответствующих местоположениях 255, 256, 257 ячеек запоминающего устройства. Видеокодер 114, видеодекодер 134 и описанные способы формируют выходные переменные 261, которые сохраняются в запоминающем устройстве 234 в соответствующих местоположениях 262, 263, 264 ячеек запоминающего устройства. Промежуточные переменные 258 могут сохраняться в местоположениях 259, 260, 266 и 267 ячеек запоминающего устройства.
[00068] Ссылаясь на процессор 205 по фиг. 2B, регистры 244, 245, 246, арифметико-логическое устройство 240 (ALU) и блок 239 управления совместно работают с возможностью выполнять последовательности микроопераций, необходимые для того, чтобы выполнять циклы "выборки, декодирования и выполнения" для каждой инструкции в наборе инструкций, составляющем программу 233. Каждый цикл выборки, декодирования и выполнения содержит:
- операцию выборки, которая осуществляет выборку или считывает инструкцию 231 из местоположения 228, 229, 230 ячейки запоминающего устройства;
- операцию декодирования, в которой блок 239 управления определяет то, выборка какой инструкции осуществлена; и
- операцию выполнения, в которой блок 239 управления и/или ALU 240 выполняют инструкцию.
[00069] После этого, может выполняться дополнительный цикл выборки, декодирования и выполнения для следующей инструкции. Аналогично, может выполняться цикл запоминания, посредством которого блок 239 управления сохраняет или записывает значение в местоположение 232 запоминающего устройства.
[00070] Каждый этап или подпроцесс в способе по фиг. 10 и 11, который описывается, ассоциирован с одним или более сегментов программы 233 и типично выполняется посредством секции 244, 245, 247 регистров, ALU 240 и блока 239 управления в процессоре 205, совместно работающих с возможностью выполнять циклы выборки, декодирования и выполнения для каждой инструкции в наборе инструкций для отмеченных сегментов программы 233.
[00071] Фиг. 3 является принципиальной блок-схемой, показывающей функциональные модули видеокодера 114. Фиг. 4 является принципиальной блок-схемой, показывающей функциональные модули видеодекодера 134. Обычно, данные проходят между функциональными модулями в видеокодере 114 и видеодекодере 134 в группах выборок или коэффициентов, таких как разделения блоков в субблоки фиксированного размера, или в качестве массивов. Видеокодер 114 и видеодекодер 134 могут реализовываться с использованием компьютерной системы 200 общего назначения, как показано на фиг. 2A и 2B, при этом различные функциональные модули могут реализовываться посредством специализированных аппаратных средств в компьютерной системе 200 посредством программного обеспечения, выполняемого в компьютерной системе 200, к примеру, как одного или более программных кодовых модулей прикладной программы 233, постоянно размещающихся на жестком диске 205 и управляемых своем выполнении посредством процессора 205. Кроме того, видеокодер 114 и видеодекодер 134 могут реализовываться посредством комбинации специализированных аппаратных средств и программного обеспечения, выполняемого в компьютерной системе 200. Видеокодер 114, видеодекодер 134 и описанные способы альтернативно могут реализовываться в специализированных аппаратных средствах, к примеру, ка одна или боле интегральных схем, выполняющих функции или подфункции описанных способов. Такие специализированные аппаратные средства могут включать в себя графические процессоры (GPU), процессоры цифровых сигналов (DSP), специализированные стандартные продукты (ASSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) либо один или более микропроцессоров и ассоциированных запоминающих устройств. В частности, видеокодер 114 содержит модули 310-386, и видеодекодер 134 содержит модули 420-496, которые могут реализовываться как один или более программных кодовых модулей прикладной программы 233.
[00072] Хотя видеокодер 114 по фиг. 3 представляет собой пример конвейера кодирования видео на основе стандарта универсального кодирования видео (VVC), другие видеокодеки также могут использоваться для того, чтобы выполнять стадии обработки, описанные в данном документе. Видеокодер 114 принимает захваченные данные 113 кадров, к примеру, последовательность кадров, причем каждый кадр включает в себя один или более цветовых каналов. Данные 113 кадров могут иметь формат цветности 4:2:0 или формат цветности 4:2:2. Модуль 310 сегментации на блоки, во-первых, разделяет данные 113 кадров на CTU, в общем, имеющие квадратную форму и сконфигурированные таким образом, что используется конкретный размер для CTU. Размер CTU может представлять собой, например, выборки яркости 64×64, 128×128 или 256×256. Модуль 310 сегментации на блоки дополнительно разделяет каждую CTU на один или более CB согласно дереву кодирования яркости и дереву кодирования цветности. CB имеют множество размеров и могут включать в себя квадратные и неквадратные соотношения сторон. В дальнейшем подробно описывается работа модуля 310 сегментации на блоки со ссылкой на фиг. 10. Тем не менее, в VVC-стандарте, CB, CU, PU и TU всегда имеют боковые длины, которые составляют степени двух. Таким образом, текущий CB, представленный в качестве 312, выводится из модуля 310 сегментации на блоки, с продвижением в соответствии с итерацией по одному или более блоков CTU, в соответствии с деревом кодирования яркости и деревом кодирования цветности CTU. Ниже подробно описываются варианты для сегментации CTU на CB со ссылкой на фиг. 5 и 6.
[00073] CTU, получающиеся в результате первого дивизиона данных 113 кадров, могут сканироваться в порядке растрового сканирования и могут группироваться на один или более "слайсов". Слайс может представлять собой "внутренний" (или "I-") слайс. Внутренний слайс (I-слайс) указывает то, что каждая CU в слайсе внутренне прогнозируется. Альтернативно, слайс может унипрогнозироваться или бипрогнозироваться ("P-" или "B-"слайс, соответственно), что указывает дополнительную доступность уни- и бипрогнозирования в слайсе, соответственно.
[00074] Для каждой CTU, видеокодер 114 работает на двух стадиях. На первой стадии (называемой "стадией поиска"), модуль 310 сегментации на блоки тестирует различные потенциальные конфигурации дерева кодирования. Каждая потенциальная конфигурация дерева кодирования имеет ассоциированные "возможные варианты" CB. Первая стадия заключает в себе тестирование различных возможных вариантов CB, чтобы выбирать CB, предоставляющие высокую эффективность сжатия с низким искажением. Тестирование, в общем, заключает в себе лагранжеву оптимизацию, за счет которой возможный вариант CB оценивается на основе комбинирования со взвешиванием скорости (затрат на кодирование) и искажения (ошибки относительно данных 113 входных кадров). "Наилучшие" возможные варианты CB (CB с наименьшим оцененным искажением в зависимости от скорости передачи) выбираются для последующего кодирования в поток 115 битов. В себя в оценку возможных вариантов CB включается вариант, чтобы использовать CB для данной зоны или дополнительно разбивать зону согласно различным вариантам разбиения и кодировать каждую из меньших результирующих зон с дополнительными CB или разбивать зоны дополнительно. Как следствие, как CB, так и дерево кодирования сами выбираются на стадии поиска.
[00075] Видеокодер 114 формирует блок прогнозирования (PB), указываемый посредством стрелки 320, для каждого CB, например, CB 312. PB 320 представляет собой прогнозирование контента ассоциированного CB 312. Модуль 322 вычитания формирует разность, указываемую в качестве 324 (или "остаток", означающий разность, находящуюся в пространственной области), между PB 320 и CB 312. Разность 324 является разностью размера блока между соответствующими выборками в PB 320 и CB 312. Разность 324 преобразуется, квантуется и представляется в качестве блока преобразования (TB), указываемого посредством стрелки 336. PB 320 и ассоциированный TB 336 типично выбираются из одного из множества вероятных возможных вариантов CB, например, на основе оцененных затрат или искажения.
[00076] Возможный вариант блока кодирования (CB) представляет собой CB, получающийся в результате одного из режимов прогнозирования, доступных для видеокодера 114 для ассоциированного PB и результирующего остатка. Каждый возможный вариант CB приводит к одному или более соответствующих TB, как описано далее со ссылкой на фиг. 8. TB 336 является квантованным и преобразованным представлением разности 324. В комбинации с прогнозированным PB в видеодекодере 114, TB 336 уменьшает разность между декодированными CB и исходным CB 312 за счет дополнительного сигнализирования в потоке битов.
[00077] Каждый возможный вариант блока кодирования (CB), который представляет собой блок прогнозирования (PB) в комбинации с блоком преобразования (TB), в силу этого имеет ассоциированные затраты на кодирование (или "скорость передачи") и ассоциированную разность (или "искажение"). Скорость типично измеряется в битах. Искажение CB типично оценивается в качестве разности в выборочных значениях, к примеру, как сумма абсолютных разностей (SAD) или сумма квадратов разности (SSD). Оценка, получающаяся в результате каждого возможного варианта PB, определяется посредством модуля 386 выбора режима с использованием разности 324, чтобы определять режим внутреннего прогнозирования (представлен посредством стрелки 388). Оценка затрат на кодирование, ассоциированных с каждым возможным вариантом режима прогнозирования и соответствующим остаточным кодированием, может выполняться со значительно меньшими затратами, чем энтропийное кодирование остатка. Соответственно, число возможных вариантов режимов может оцениваться, чтобы определять оптимальный режим в смысле искажения в зависимости от скорости передачи.
[00078] Определение оптимального режима с точки зрения искажения в зависимости от скорости передачи типично достигается с использованием варьирования лагранжевой оптимизации. Выбор режима 388 внутреннего прогнозирования типично заключает в себе определение затрат на кодирование для остаточных данных, получающихся в результате применения конкретного режима внутреннего прогнозирования. Затраты на кодирование могут аппроксимироваться посредством использования "суммы абсолютных преобразованных разностей (SATD)", за счет чего относительно простое преобразование, к примеру, преобразование Адамара, используется для того, чтобы получать оцененные затраты преобразованного остатка. В некоторых реализациях с использованием относительно простых преобразований, затраты, получающиеся в результате упрощенного способа оценки, монотонно связываются с фактическими затратами, которые в противном случае должны определяться из полной оценки. В реализациях с монотонно связанными предполагаемыми затратами, упрощенный способ оценки может использоваться для того, чтобы принимать идентичное решение (т.е. режим внутреннего прогнозирования) с уменьшением сложности в видеокодере 114. Чтобы разрешать возможную немонотонность во взаимосвязи между оцененными и фактическими затратами, упрощенный способ оценки может использоваться для того, чтобы формировать список наилучших возможных вариантов. Немонотонность может получаться в результате, например, дополнительных решений по выбору режима, доступных для кодирования остаточных данных. Список наилучших возможных вариантов может иметь произвольное число. Более полный поиск может выполняться с использованием наилучших возможных вариантов, чтобы устанавливать варианты выбора оптимального режима для кодирования остаточных данных для каждого из возможных вариантов, обеспечивая конечный выбор режима внутреннего прогнозирования наряду с другими решениями по выбору режима.
[00079] Другие решения по выбору режима включают в себя способность пропускать прямое преобразование, известную как "пропуск преобразования". Пропуск преобразований подходит для остаточных данных, в которых отсутствует надлежащая корреляция уменьшенных затрат на кодирование через выражение в качестве базисных функций преобразования. Определенные типы контента, к примеру, относительно простая машиногенерируемая графика, могут демонстрировать аналогичное поведение. Для "пропущенного преобразования", остаточные коэффициенты по-прежнему кодируются, даже если непосредственно преобразование не выполняется.
[00080] Лагранжева или аналогичная обработка оптимизации может использоваться для того, чтобы выбирать оптимальную сегментацию CTU на CB (посредством модуля 310 сегментации на блоки), а также для выбора наилучшего режима прогнозирования из множества возможностей. Через применение процесса лагранжевой оптимизации возможных вариантов режимов в модуле 386 выбора режима, режим внутреннего прогнозирования с измерением наименьших затрат выбирается в качестве "наилучшего" режима. Режим с наименьшими затратами представляет собой выбранный режим 388 внутреннего прогнозирования и также кодируется в потоке 115 битов посредством энтропийного кодера 338. Выбор режима 388 внутреннего прогнозирования посредством операции модуля 386 выбора режима расширяется на работу модуля 310 сегментации на блоки. Например, возможные варианты для выбора режима 388 внутреннего прогнозирования могут включать в себя режимы, применимые к данному блоку, и дополнительно, режимы, применимые к нескольким меньшим блокам, которые совместно размещаются с данным блоком. В случаях, включающих в себя режимы, применимые к данному блоку и меньшим совместно размещенным блокам, процесс выбора возможных вариантов неявно также представляет собой процесс определения наилучшего иерархического разложения CTU на CB.
[00081] На второй стадии работы видеокодера 114 (называемой "стадией "кодирования"), итерация по выбранному дереву кодирования яркости и выбранному дереву кодирования цветности и в силу этого каждому выбранному CB выполняется в видеокодере 114. В итерации, CB кодируются в поток 115 битов, как подробнее описано в данном документе.
[00082] Энтропийный кодер 338 поддерживает как кодирование переменной длины синтаксических элементов, так и арифметическое кодирование синтаксических элементов. Арифметическое кодирование поддерживается с использованием процесса контекстно-адаптивного двоичного арифметического кодирования. Арифметически кодированные синтаксические элементы состоят из последовательностей одного или более "бинов". Бины, такие как биты, имеют значение "0" или "1". Тем не менее, бины не кодируются в потоке 115 битов в качестве дискретных битов. Бины имеют прогнозированное ассоциированное (либо "вероятное" или "наиболее вероятное") значение и ассоциированную вероятность, известную как "контекст". Когда фактический бин, который должен кодироваться, совпадает с прогнозированным значением, "наиболее вероятный символ" (MPS) кодируется. Кодирование наиболее вероятного символа является относительно недорогим с точки зрения потребленных битов. Когда фактический бин, который должен кодироваться, не соответствует вероятному значению, "наименее вероятный символ" (LPS) кодируется. Кодирование наименее вероятного символа имеет относительно высокие затраты с точки зрения потребленных битов. Технологии кодирования на основе бинов обеспечивают эффективное кодирование бинов, для которых вероятность "0" по сравнению с "1" скашивается. Для синтаксического элемента с двумя возможными значениями (т.е. для "флага"), надлежащим является один бин. Для синтаксических элементов с множеством возможных значений, требуется последовательность бинов.
[00083] Присутствие более поздних бинов в последовательности может определяться на основе значения более ранних бинов в последовательности. Дополнительно, каждый бин может быть ассоциирован более чем с одним контекстом. Выбор конкретного контекста может зависеть от более ранних бинов в синтаксическом элементе, значений бинов соседних синтаксических элементов (т.е. из соседних блоков) и т.п. Каждый раз, когда контекстно-кодированный бин кодируется, контекст, который выбран для этого бина (если имеется), обновляется способом, отражающим новое значение бина. В связи с этим, считается, что схема двоичного арифметического кодирования является адаптивной.
[00084] Также посредством видеокодера 114 поддерживаются бины, в которых отсутствует контекст ("обходные бины"). Обходные бины кодируются при условии равновероятного распределения между "0" и "1". Таким образом, каждый бин занимает один бит в потоке 115 битов. Отсутствие контекста экономит объем запоминающего устройства и уменьшает сложность, и в силу этого используются обходные бины, для которых распределение значений для конкретного бина не скашивается. Один пример контекста использования энтропийного кодера и адаптации известен в данной области техники в качестве CABAC (контекстно-адаптивного двоичного арифметического кодера), и множество разновидностей этого кодера используются при кодировании видео.
[00085] Энтропийный кодер 338 кодирует режим 388 внутреннего прогнозирования с использованием комбинации бинов после контекстного кодирования и обходного кодирования. Типично, список "наиболее вероятных режимов" формируется в видеокодере 114. Список наиболее вероятных режимов типично имеет фиксированную длину, к примеру, в три или шесть режимов, и может включать в себя режимы, встречающиеся в более ранних блоках. Контекстно-кодированный бин кодирует флаг, указывающий то, представляет или нет режим внутреннего прогнозирования собой один из наиболее вероятных режимов. Если режим 388 внутреннего прогнозирования представляет собой один из наиболее вероятных режимов, дополнительно кодируется сигнализация, с использованием бинов после обходного кодирования. Кодированная дополнительная сигнализация указывает то, какой наиболее вероятный режим соответствует режиму 388 внутреннего прогнозирования, например, с использованием усеченной унарной строки бинов. В противном случае, режим 388 внутреннего прогнозирования кодируется как "оставшийся режим". Кодирование в качестве оставшегося режима использует альтернативный синтаксис, к примеру, код фиксированной длины, также кодированный с использованием бинов после обходного кодирования, чтобы выражать режимы внутреннего прогнозирования, отличные от режимов, присутствующих в списке наиболее вероятных режимов.
[00086] Модуль 384 мультиплексирования выводит PB 320 согласно определенному наилучшему режиму 388 внутреннего прогнозирования, с выбором из тестированного режима прогнозирования каждого возможного варианта CB. Возможные варианты режимов прогнозирования не должны обязательно включать в себя каждый возможный режим прогнозирования, поддерживаемый посредством видеокодера 114.
[00087] Режимы прогнозирования в широком смысле распадаются на две категории. Первая категория представляет собой "внутрикадровое прогнозирование" (также называемое "внутренним прогнозированием"). При внутрикадровом прогнозировании, формируется прогнозирование для блока, и способ формирования может использовать другие выборки, полученные из текущего кадра. Для внутренне прогнозированного PB, можно использовать различные режимы внутреннего прогнозирования для яркости и цветности, и в силу этого внутреннее прогнозирование описывается главным образом с точки зрения операции на PB.
[00088] Вторая категория режимов прогнозирования представляет сбой "межкадровое прогнозирование" (также называемое "взаимным прогнозированием"). При межкадровом прогнозировании, прогнозирование для блока формируется с использованием выборок из одного или двух кадров, предшествующих текущему кадру в порядке кодирования кадров в потоке битов. Кроме того, для межкадрового прогнозирования, одно дерево кодирования типично используется как для канала яркости, так и для каналов цветности. Порядок кодирования кадров в потоке битов может отличаться от порядка кадров при захвате или отображении. Когда один кадр используется для прогнозирования, считается, что блок "унипрогнозируется" и имеет один ассоциированный вектор движения. Когда два кадра используются для прогнозирования, считается, что блок "бипрогнозируется" и имеет два ассоциированных вектора движения. Для P-слайса, каждая CU может внутренне прогнозироваться или унипрогнозироваться. Для B-слайса, каждая CU может внутренне прогнозироваться, унипрогнозироваться или бипрогнозироваться. Кадры типично кодируются с использованием структуры на основе "групп кинокадров", предоставляющей временную иерархию кадров. Временная иерархия кадров обеспечивает возможность кадру ссылаться на предыдущий и последующий кинокадр в порядке отображения кадров. Изображения кодируются в порядке, требуемом для того, чтобы обеспечивать то, что зависимости для декодирования каждого кадра удовлетворяются.
[00089] Подкатегория внешнего прогнозирования называется "режимом пропуска". Режимы внешнего прогнозирования и пропуска описываются как два различных режима. Тем не менее, режим внешнего прогнозирования и режим пропуска заключает в себе векторы движения, ссылающиеся на блоки выборок из предшествующих кадров. Внешнее прогнозирование заключает в себе кодированную дельту вектора движения, указывающую вектор движения относительно предиктора вектора движения. Предиктор вектора движения получается из списка одного или более возможных вариантов векторов движения, выбранных с "индексом объединения". Кодированная дельта вектора движения предоставляет пространственное смещение для выбранного прогнозирования векторов движения. Внешнее прогнозирование также использует кодированный остаток в потоке 133 битов. Режим пропуска использует только индекс (также называемый "индексом объединения"), чтобы выбирать один из нескольких возможных вариантов векторов движения. Выбранный возможный вариант используется без дальнейшего сигнализирования. Кроме того, режим пропуска не поддерживает кодирование остаточных коэффициентов. Отсутствие кодированных остаточных коэффициентов, когда режим пропуска используется, означает то, что нет необходимости выполнять преобразования для режима пропуска. Следовательно, режим пропуска типично не приводит к проблемам конвейерной обработки. Проблемы конвейерной обработки могут иметь место для внутренне прогнозированных CU и внешне прогнозированных CU. Вследствие ограниченного сигнализирования режима пропуска, режим пропуска является полезным для достижения очень высокой производительности сжатия, когда относительно высококачественные опорные кадры доступны. Бипрогнозированные CU в более высоких временных слоях структуры на основе групп кинокадров произвольного доступа типично имеют высококачественные опорные кинокадры и возможные варианты векторов движения, которые точно отражают базовое движение.
[00090] Выборки выбираются согласно вектору движения и индексу опорного кинокадра. Вектор движения и индекс опорного кинокадра применяются ко всем цветовым каналам, и в силу этого внешнее прогнозирование описывается главным образом с точки зрения операции с PU, а не с PB. В каждой категории (т.е. для внутри- и межкадрового прогнозирования), различные технологии могут применяться, чтобы формировать PU. Например, внутреннее прогнозирование может использовать значения из смежных строк и столбцов ранее восстановленных выборок, в комбинации с направлением, чтобы формировать PU согласно предписанному процессу фильтрации и формирования. Альтернативно, PU может описываться с использованием небольшого числа параметров. Способы внешнего прогнозирования могут варьироваться по числу параметров движения и их точности. Параметры движения типично содержат индекс опорного кадра, указывающий то, какой опорный кадр(ы) из списков опорных кадров должен использоваться, плюс пространственное перемещение в пространстве для каждого из опорных кадров, но могут включать в себя большее число кадров, специальных кадров или комплексных афинных параметров, таких как масштабирование и вращение. Помимо этого, предопределенный процесс детализации движения может применяться, чтобы формировать плотные оценки движения на основе блоков выборок для ссылки.
[00091] После определения и выбора PB 320 и вычитания PB 320 из блока исходной выборки в вычитателе 322, остаток с наименьшими затратами на кодирование, представленными в качестве 324, получается и подвергается сжатию с потерями. Процесс сжатия с потерями содержит этапы преобразования, квантования и энтропийного кодирования. Модуль 326 прямого первичного преобразования применяет прямое преобразование к разности 324, с преобразованием разности 324 из пространственной области в частотную область и формированием коэффициентов первичного преобразования, представленных посредством стрелки 328. Коэффициенты 328 первичного преобразования передаются в модуль 330 прямого вторичного преобразования, чтобы формировать коэффициенты преобразования, представленные посредством стрелки 332, посредством выполнения операции неразделимого вторичного преобразования (NSST). Прямое первичное преобразование типично является разделимым, с преобразованием набора строк и затем набор столбцов каждого блока, типично с использованием DCT-2, хотя DST-7 и DCT-8 также могут быть доступными, например, горизонтально для ширин блока, не превышающих 16 выборок, и вертикально для высот блока, не превышающих 16 выборок. Преобразование каждого набора строк и столбцов выполняется посредством применения одномерных преобразований сначала к каждой строке блока, чтобы формировать частичный результат, а затем к каждому столбцу частичного результата, чтобы приводить к конечному результату. Прямое вторичное преобразование, в общем, представляет собой неразделимое преобразование, которое применяется только для остатка внутренне прогнозированных CU, и несмотря на это также может обходиться. Прямое вторичное преобразование работает либо для 16 выборок (размещаемых в качестве верхнего левого субблока 4×4 коэффициентов 328 первичного преобразования), либо для 64 выборок (размещаемых в качестве верхних левых коэффициентов 8×8, размещаемых в качестве четырех субблоков 4×4 коэффициентов 328 первичного преобразования). Кроме того, коэффициенты матрицы прямого вторичного преобразования выбираются из нескольких наборов согласно режиму внутреннего прогнозирования CU таким образом, что два набора коэффициентов доступны для использования. Использование одного из наборов коэффициентов матрицы или обход прямого вторичного преобразования, сигнализируется с помощью синтаксического элемента nsst_index, кодированный с использованием усеченной унарной бинаризации, чтобы выражать значения в нуль (вторичное преобразование не применяется), единицу (выбран первый набор коэффициентов матрицы) или два (выбран второй набор коэффициентов матрицы).
[00092] Коэффициенты 332 преобразования передаются в модуль 334 квантования. В модуле 334, квантование в соответствии с "параметром квантования" выполняется для того, чтобы формировать остаточные коэффициенты, представленные посредством стрелки 336. Параметр квантования является постоянным для данного TB, в силу этого приводит к равномерному масштабированию для формирования остаточных коэффициентов для TB. Неравномерное масштабирование также является возможным посредством применения "матрицы квантования", за счет чего коэффициент масштабирования, применяемый для каждого остаточного коэффициента, извлекается из комбинации параметра квантования и соответствующей записи в масштабирующей матрице, типично имеющей размер, равный размеру TB. Остаточные коэффициенты 336 подаются в энтропийный кодер 338 для кодирования в потоке 115 битов. Типично, остаточные коэффициенты каждого TB, по меньшей мере, с одним значимым остаточным коэффициентом TU сканируются, чтобы формировать упорядоченный список значений, согласно шаблону сканирования. Шаблон сканирования, в общем, сканирует TB в качестве последовательности "субблоков" 4×4, предоставляя регулярную операцию сканирования со степенью детализации в наборы 4×4 остаточных коэффициентов, причем компоновка субблоков зависит от размера TB. Дополнительно, режим 388 прогнозирования и соответствующая сегментация на блоки также кодируются в потоке 115 битов.
[00093] Как описано выше, видеокодеру 114 требуется доступ к представлению кадра, соответствующему представлению кадра, наблюдаемому в видеодекодере 134. Таким образом, остаточные коэффициенты 336 также обратные квантуются посредством модуля деквантования 340, чтобы формировать коэффициенты обратного преобразования, представленные посредством стрелки 342. Коэффициенты 342 обратного преобразования проходят через модуль 344 обратного вторичного преобразования, чтобы формировать коэффициенты промежуточного обратного преобразования, представленные посредством стрелки 346. Коэффициенты 346 промежуточного обратного преобразования передаются в модуль 348 обратного первичного преобразования, чтобы формировать остаточные выборки, представленные посредством стрелки 350, TU. Типы обратного преобразования, выполняемого посредством модуля 344 обратного вторичного преобразования, соответствуют типам прямого преобразования, выполняемого посредством модуля 330 прямого вторичного преобразования. Типы обратного преобразования, выполняемого посредством модуля 348 обратного первичного преобразования, соответствуют типам первичного преобразования, выполняемого посредством модуля 326 первичного преобразования. Модуль 352 суммирования суммирует остаточные выборки 350 и PU 320, чтобы формировать восстановленные выборки (указываются посредством стрелки 354) CU.
[00094] Восстановленные выборки 354 передаются в кэш 356 опорных выборок и модуль 368 внутриконтурной фильтрации. Кэш 356 опорных выборок, типично реализованный с использованием статического RAM на ASIC (в силу этого исключая затратный доступ к внемикросхемному запоминающему устройству), предоставляет минимальное хранилище выборок, требуемое для того, чтобы удовлетворять зависимостям для формирования внутрикадровых PB для последующих CU в кадре. Минимальные зависимости типично включают в себя "линейный буфер" выборок вдоль нижней части строки CTU для использования посредством следующей строки CTU и столбца, буферизующего степень, которой задается посредством высоты CTU. Кэш 356 опорных выборок предоставляет опорные выборки (представляются посредством стрелки 358) в фильтр 360 опорных выборок. Фильтр 360 выборок применяет операцию сглаживания, чтобы формировать фильтрованные опорные выборки (указываются посредством стрелки 362). Фильтрованные опорные выборки 362 используются посредством модуля 364 внутрикадрового прогнозирования, чтобы формировать внутренне прогнозированный блок выборок, представленных посредством стрелки 366. Для каждого возможного варианта режима внутреннего прогнозирования, модуль внутрикадрового прогнозирования 364 формирует блок выборок, т.е. 366.
[00095] Модуль 368 внутриконтурной фильтрации применяет несколько стадий фильтрации к восстановленным выборкам 354. Стадии фильтрации включают в себя "фильтр удаления блочности" (DBF), который применяет сглаживание, совмещенное с CU-границами, чтобы уменьшать артефакты, получающиеся в результате разрывностей. Другая стадия фильтрации, присутствующая в модуле 368 внутриконтурной фильтрации представляет собой "адаптивный контурный фильтр (ALF)", который применяет адаптивный фильтр Винер, чтобы дополнительно уменьшать искажение. Дополнительная доступная стадия фильтрации в модуле 368 внутриконтурной фильтрации представляет собой фильтр на основе "дискретизированного адаптивного смещения (SAO)". SAO-фильтр работает посредством сначала классификации восстановленных выборок на одну или более категорий и, согласно выделяемой категории, применения смещения на уровне выборки.
[00096] Фильтрованные выборки, представленные посредством стрелки 370, выводятся из модуля 368 внутриконтурной фильтрации. Фильтрованные выборки 370 сохраняются в буфере 372 кадров. Буфер 372 кадров типично имеет пропускную способность, чтобы сохранять несколько (например, до 16) кинокадров, и в силу этого сохраняется в запоминающем устройстве 206. Буфер 372 кадров типично не сохраняется с использованием внутримикросхемного запоминающего устройства вследствие требуемого большого потребления запоминающего устройства. В связи с этим, доступ к буферу 372 кадров является затратным с точки зрения пропускной способности запоминающего устройства. Буфер 372 кадров предоставляет опорные кадры (представлены посредством стрелки 374) в модуль 376 оценки движения и модуль 380 компенсации движения.
[00097] Модуль 376 оценки движения оценивает число "векторов движения" (указывается как 378), при этом каждый из них представляет собой декартово пространственное смещение от местоположения текущего CB, ссылающего на блок в одном из опорных кадров в буфере 372 кадров. Фильтрованный блок опорных выборок (представлен как 382) формируется для каждого вектора движения. Фильтрованные опорные выборки 382 формируют дополнительные возможные варианты режимов, доступные для потенциального выбора посредством модуля 386 выбора режима. Кроме того, для данной CU, PU 320 может формироваться с использованием одного ("унипрогнозированного") опорного блока или может формироваться с использованием двух ("бипрогнозированных") опорных блоков. Для выбранного вектора движения, модуль 380 компенсации движения формирует PB 320 в соответствии с процессом фильтрации, поддерживающим субпиксельную точность в векторах движения. В связи с этим, модуль 376 оценки движения (который работает для множества возможных вариантов векторов движения) может выполнять упрощенный процесс фильтрации по сравнению с процессом фильтрации модуля 380 компенсации движения (который работает только для выбранного возможного варианта), чтобы достигать уменьшенной вычислительной сложности.
TM
[00098] Хотя видеокодер 114 по фиг. 3 описывается со ссылкой на стандарт универсального кодирования видео (VVC), другие стандарты кодирования видео или реализации также могут использовать стадии обработки модулей 310-386. Данные 113 кадров (и поток 115 битов) также могут считываться из (или записываться в/на) запоминающего устройства 206, накопителя 210 на жестких дисках, CD-ROM, Blu-Ray-диска или другого считываемого компьютером носителя хранения данных. Дополнительно, данные 113 кадров (и поток 115 битов) могут приниматься (или передаваться) из/во внешний источник, такой как сервер, соединенный с сетью 220 связи, или радиочастотное приемное устройство.
TM
[00099] Видеодекодер 134 показывается на фиг. 4. Хотя видеодекодер 134 по фиг. 4 представляет собой пример конвейера декодирования видео на основе стандарта универсального кодирования видео (VVC), другие видеокодеки также могут использоваться для того, чтобы выполнять стадии обработки, описанные в данном документе. Как показано на фиг. 4, поток 133 битов вводится в видеодекодер 134. Поток 133 битов может считываться из запоминающего устройства 206, накопителя 210 на жестких дисках, CD-ROM, Blu-Ray-диска или другого энергонезависимого считываемого компьютером носителя хранения данных. Альтернативно, поток 133 битов может приниматься из внешнего источника, такого как сервер, соединенный с сетью 220 связи, или радиочастотное приемное устройство. Поток 133 битов содержит кодированные синтаксические элементы, представляющие захваченные данные кадров, которые должны декодироваться.
[000100] Поток 133 битов вводится в модуль 420 энтропийного декодера. Модуль 420 энтропийного декодера извлекает синтаксические элементы из потока 133 битов посредством декодирования последовательностей "бинов" и передает значения синтаксических элементов в другие модули в видеодекодере 134. Модуль 420 энтропийного декодера использует механизм арифметического декодирования для того, чтобы декодировать каждый синтаксический элемент в качестве последовательности одного или более бинов. Каждый бин может использовать один или более "контекстов", при этом контекст описывает уровни вероятности, которые должны использоваться для кодирования значения "единица" и "нуль" для бина. Если несколько контекстов доступны для данного бина, этап "контекстного моделирования" или "выбора контекста" выполняется для того, чтобы выбирать один из доступных контекстов для декодирования бина. Процесс декодирования бинов формирует последовательный контур обратной связи. Число операций в контуре обратной связи предпочтительно минимизируется, чтобы обеспечивать возможность энтропийному декодеру 420 достигать высокой пропускной способности в бинах/в секунду. Контекстное моделирование зависит от других свойств потока битов, известных видеодекодеру 134 во время выбора контекста, т.е. от свойств, предшествующих текущему бину. Например, контекст может выбираться на основе глубины дерева квадрантов текущей CU в дереве кодирования. Зависимости предпочтительно основаны на свойствах, которые известны заранее декодирования бина или определяются без необходимости длительных последовательных процессов.
[000101] Глубина дерева квадрантов дерева кодирования представляет собой пример зависимости для контекстного моделирования, которая легко известна. Режим внутреннего прогнозирования представляет собой пример зависимости для контекстного моделирования, которую относительно сложно или вычислительно затратно определять. Режимы внутреннего прогнозирования кодируются либо в качестве индекса для списка "наиболее вероятных режимов (MPM)", либо в качестве индекса для списка "оставшихся режимов" с выбором между MPM и оставшимися режимами согласно декодированному intra_luma_mpm_flag. Когда MPM используется, синтаксический элемент intra_luma_mpm_idx декодируется, чтобы выбирать то, какой из наиболее вероятных режимов должен использоваться. В общем, предусмотрено шесть MPM. Когда оставшийся режим используется, синтаксический элемент intra_luma_remainder декодируется, чтобы выбирать то, какой из оставшихся (не-MPM)-режимов должен использоваться. Определение как наиболее вероятных режимов, так и оставшихся режимов требует значительного числа операций и включает в себя зависимости от режимов внутреннего прогнозирования соседних блоков. Например, соседние блоки могут представлять собой блоки выше и слева относительно текущего блока. Предпочтительно, контексты бинов каждой CU могут определяться, обеспечивая синтаксический анализ посредством механизма арифметического кодирования, без знания сигнализируемого режима внутреннего прогнозирования. Контур обратной связи, присутствующий в механизме арифметического кодирования для последовательного декодирования на основе бинов, за счет этого исключает зависимость от режима внутреннего прогнозирования. Определение режима внутреннего прогнозирования может отсрочиваться до последующей стадии обработки, с отдельным контуром обратной связи вследствие зависимости конструирования MPM-списков от режимов внутреннего прогнозирования соседних блоков. Соответственно, механизм арифметического декодирования модуля 420 энтропийного декодера имеет возможность синтаксически анализировать intra_luma_mpm_flag, intra_luma_mpm_idx, intra_luma_remainder без необходимости знать режимы внутреннего прогнозирования любого раннего (например, граничащего) блока. Модуль 420 энтропийного декодера применяет алгоритм арифметического кодирования, например, "контекстно-адаптивное двоичное арифметическое кодирование" (CABAC), для того, чтобы декодировать синтаксические элементы из потока 133 битов. Декодированные синтаксические элементы используются для того, чтобы восстанавливать параметры в видеодекодере 134. Параметры включают в себя остаточные коэффициенты (представлены посредством стрелки 424) и информацию выбора режима, такую как режим внутреннего прогнозирования (представлены посредством стрелки 458). Информация выбора режима также включает в себя такую информацию, как векторы движения и сегментация каждой CTU на один или более CB. Параметры используются для того, чтобы формировать PB, типично в комбинации с дискретизированными данными из ранее декодированных CB.
[000102] Остаточные коэффициенты 424 вводятся в модуль 428 деквантования. Модуль 428 деквантования выполняет обратное квантование (или "масштабирование") для остаточных коэффициентов 424, чтобы создавать восстановленные коэффициенты промежуточного преобразования, представленные посредством стрелки 432, согласно параметру квантования. Восстановленные коэффициенты 432 промежуточного преобразования передаются в модуль 436 обратного вторичного преобразования, в котором применяется вторичное преобразование либо отсутствие операции (обход), в соответствии с декодированным синтаксическим элементом nsst_index. Nsst_index декодируется из потока 133 битов посредством энтропийного декодера 420 при выполнении процессора 205. Как описано со ссылкой на фиг. 3, nsst_index декодируется из потока 133 битов в качестве усеченного унарного синтаксического элемента со значениями от нуля до двух. Как подробнее описано со ссылкой на фиг. 15, синтаксический элемент nsst_index декодируется без необходимости знать режим внутреннего прогнозирования соответствующего CB, упрощая контур зависимостей с обратной связью в арифметическом декодере энтропийного декодера 420. Модуль 436 обратного вторичного преобразования формирует восстановленные коэффициенты 440 преобразования. Независимо от того, должно или нет использование неравномерной матрицы обратного квантования указываться в потоке 133 битов, видеодекодер 134 считывает матрицу квантования из потока 133 битов в качестве последовательности коэффициентов масштабирования и размещает коэффициенты масштабирования в матрицу. Обратное масштабирование использует матрицу квантования в комбинации с параметром квантования, чтобы создавать восстановленные коэффициенты 432 промежуточного преобразования.
[000103] Восстановленные коэффициенты 440 преобразования передаются в модуль 444 обратного первичного преобразования. Модуль 444 преобразует коэффициенты из частотной области обратно в пространственную область. TB эффективно основан на значимых остаточных коэффициентах и значениях незначимых остаточных коэффициентов. Результат операции модуля 444 представляет собой блок остаточных выборок, представленных посредством стрелки 448. Остаточные выборки 448 равны по размеру с соответствующей CU. Остаточные выборки 448 подаются в модуль 450 суммирования. В модуле 450 суммирования остаточные выборки 448 суммируются с декодированным PB (представлен в качестве 452), чтобы формировать блок восстановленных выборок, представленных посредством стрелки 456. Восстановленные выборки 456 подаются в кэш 460 восстановленных выборок и модуль 488 внутриконтурной фильтрации. Модуль 488 внутриконтурной фильтрации формирует восстановленные блоки кадровых выборок, представленных в качестве 492. Кадровые выборки 492 записываются в буфер 496 кадров.
[000104] Кэш 460 восстановленных выборок работает аналогично кэшу 356 восстановленных выборок видеокодера 114. Кэш 460 восстановленных выборок предоставляет хранение для восстановленной выборки, требуемой для того, чтобы внутренне прогнозировать последующие CB, без запоминающего устройства 206 (например, посредством использования вместо этого данных 232, которые типично представляют собой внутримикросхемное запоминающее устройство). Опорные выборки, представленные посредством стрелки 464, получаются из кэша 460 восстановленных выборок и предоставляются в фильтр 468 опорных выборок, чтобы формировать фильтрованные опорные выборки, указываемые посредством стрелки 472. Фильтрованные опорные выборки 472 подаются в модуль 476 внутрикадрового прогнозирования. Модуль 476 формирует блок внутренне прогнозированных выборок, представленных посредством стрелки 480, в соответствии с параметром 458 режима внутреннего прогнозирования, сигнализируемым в потоке 133 битов и декодированным посредством энтропийного декодера 420.
[000105] Когда режим прогнозирования CB указывается в качестве внутреннего прогнозирования в потоке 133 битов, внутренне прогнозированные выборки 480 формируют декодированный PB 452 через модуль 484 мультиплексирования. Внутреннее прогнозирование формирует блок прогнозирования (PB) выборок, т.е. блок в одном цветовом компоненте, извлекаемый с использованием "соседних выборок" в идентичном цветовом компоненте. Соседние выборки представляют собой выборки, смежные с текущим блоком, и на основе предшествования в порядке блочного декодирования уже восстановлены. Если блоки яркости и цветности совместно размещаются, блоки яркости и цветности могут использовать различные режимы внутреннего прогнозирования. Тем не менее, два канала цветности совместно используют идентичный режим внутреннего прогнозирования. Внутреннее прогнозирование распадается на три типа. "Внутреннее DC-прогнозирование" заключает в себе заполнение PB с одним значением, представляющим среднее соседних выборок. "Планарное внутреннее прогнозирование" заключает в себе заполнение PB с выборками согласно плоскости, причем DC-смещение и вертикальный и горизонтальный градиент извлекаются из соседних выборок. "Угловое внутреннее прогнозирование" заключает в себе заполнение PB с соседними выборками, фильтрованными и распространяемыми через PB в конкретном направлении (или под конкретным "углом"). В VVC, 65 углов поддерживаются, с прямоугольными блоками, которые могут использовать дополнительные углы, не доступные для квадратных блоков, так что формируется в сумме 87 углов. Четвертый тип внутреннего прогнозирования доступен для PB цветности, за счет чего PB формируется из совместно размещенных восстановленных выборок яркости согласно "режиму на основе кросскомпонентной линейной модели (CCLM)". Три различных CCLM-режима доступны, каждый из которых использует различную модель, извлекаемую из соседних выборок яркости и цветности. Извлеченная модель затем используется для того, чтобы формировать блок выборок для PB цветности из совместно размещенных выборок яркости.
[000106] Когда режим прогнозирования CB указывается как внешнее прогнозирование в потоке 133 битов, модуль 434 компенсации движения формирует блок внешне прогнозированных выборок, представленных в качестве 438, с использованием вектора движения и индекса опорного кадра, чтобы выбирать и фильтровать блок выборок из буфера 496 кадров. Блок выборок 498 получается из ранее декодированного кадра, сохраненного в буфере 496 кадров. Для бипрогнозирования, два блока выборок формируются и смешиваются между собой, чтобы формировать выборки для декодированного PB 452. Буфер 496 кадров заполняется с фильтрованными блочными данными 492 из модуля 488 внутриконтурной фильтрации. Аналогично модулю 368 внутриконтурной фильтрации видеокодера 114, модуль 488 внутриконтурной фильтрации применяет, по меньшей мере, любые или все из операций DBF-, ALF- и SAO-фильтрации. Обычно, вектор движения применяется к каналам яркости и цветности, хотя процессы фильтрации для подвыборочного интерполяционного канала яркости и цветности отличаются. Когда разбиение на дерево кодирования приводит к совокупности относительно небольших блоков яркости, и соответствующая область цветности не разделяется на соответствующие небольшие блоки цветности, блоки кодируются и декодируются, как описано со ссылкой на фиг. 13 и 14, соответственно. В частности, если какой-либо из небольших блоков яркости прогнозируется с использованием внешнего прогнозирования, операция внешнего прогнозирования выполняется только для CB яркости, но не для любой части соответствующего CB цветности. Модуль 368 внутриконтурной фильтрации формирует фильтрованные блочные данные 492 из восстановленных выборок 456.
[000107] Фиг. 5 является принципиальной блок-схемой, показывающей совокупность 500 доступных разделений или разбиения области на одну или более подобластей в древовидной структуре стандарта универсального кодирования видео. Разделения, показанные в совокупности 500, доступны для модуля 310 сегментации на блоки кодера 114, чтобы разделять каждую CTU на одну или более CU или CB согласно дереву кодирования, как определено посредством лагранжевой оптимизации, как описано со ссылкой на фиг. 3.
[000108] Хотя совокупность 500 показывает только квадратные области, разделяемые на другие, возможно неквадратные подобласти, следует понимать, что схема 500 показывает потенциальные разделения, но без обязательности того, охватывающая область является квадратной. Если охватывающая область является неквадратной, размерности блоков, получающихся в результате разделения, масштабируются согласно соотношению сторон охватывающего блока. После того как область дополнительно не разбивается, т.е. в узле-листе дерева кодирования, CU занимает эту область. Конкретное подразделение CTU на одну или более CU посредством модуля 310 сегментации на блоки называется "деревом кодирования" CTU.
[000109] Процесс подразделения областей на подобласти должен завершаться, когда результирующие подобласти достигают минимального CU-размера. В дополнение к ограничению CU таким образом, чтобы запрещать блочные зоны, меньшие предопределенного минимального размера, например, 16 выборками, CU ограничены таким образом, что они имеют минимальную ширину или высоту в четыре. Другие минимумы, с точки зрения ширины и высоты либо с точки зрения ширины или высоты, также являются возможными. Процесс подразделения также может завершаться до самого глубокого уровня разложения, приводя к CU, большей минимального CU-размера. Отсутствие разбиения может возникать, приводя к одной CU, занимающей всю CTU. Одна CU, занимающая всю CTU, является наибольшим доступным размером единицы кодирования. Кроме того, CU, в которых возникает отсутствие разбиения, превышают размер области обработки. Как результат двоичного или троичного разбиения на самом верхнем уровне дерева кодирования, возможны такие CU-размеры, как 64×128, 128×64, 32×128 и 128×32, каждый из которых также превышает размер области обработки. В дальнейшем подробно описываются примеры CU, больших размера области обработки, со ссылкой на фиг. 10A-10F. Вследствие использования субдискретизированных форматов цветности, к примеру, 4:2:0, компоновки видеокодера 114 и видеодекодера 134 могут завершать разбиение областей в каналах цветности раньше, чем в каналах яркости.
[000110] В узлах-листьях дерева кодирования, существуют CU без дополнительного подразделения. Например, узел-лист 510 содержит одну CU. В узлах-нелистьях дерева кодирования существует разбиение на два или более дополнительных узлов, каждый из которых может либо содержать узел-лист, так что в силу этого одну CU, либо содержать дополнительные разбиения на меньшие области. В каждом узле-листе дерева кодирования, один блок кодирования существует для каждого цветового канала. Завершение разбиения на идентичной глубине для яркости и цветности приводит к трем совместно размещенным CB. Завершение разбиения на большей глубине для яркости, чем для цветности, приводит ко множеству CB яркости, совместно размещаемых с CB каналов цветности.
[000111] Разбиение 512 на дерево квадрантов разделяет охватывающую область на четыре области равного размера, как показано на фиг. 5. По сравнению с HEVC, стандарт универсального кодирования видео (VVC) достигает дополнительной гибкости за счет добавления горизонтального двоичного разбиения 514 и вертикального двоичного разбиения 516. Каждое из разбиений 514 и 516 разделяет охватывающую область на две области равного размера. Разделение выполняется либо вдоль горизонтальной границы (514), либо вдоль вертикальной границы (516) в пределах охватывающего блока.
[000112] Дополнительная гибкость достигается в стандарте универсального кодирования видео за счет добавления троичного горизонтального разбиения 518 и троичного вертикального разбиения 520. Троичные разбиения 518 и 520 разделяют блок на три области, ограниченные горизонтально (518) или вертикально (520) вдоль 1/4 и 3/4 области или высоты охватывающей области. Комбинация дерева квадрантов, двоичного дерева и троичного дерева называется "QTBTTT". Корень дерева включает в себя нуль или более разбиений на дерево квадрантов ("QT-секция" дерева). После того как QT-секция завершается, нуль или более двоичных или троичных разбиений могут возникать ("мультидерево" или "MT-секция" дерева), с полным завершением в CB или CU в узлах-листьях дерева. Если дерево описывает все цветовые каналы, узлы-листья дерева представляют собой CU. Если дерево описывает канал яркости или каналы цветности, узлы-листья дерева представляют собой CB.
[000113] По сравнению с HEVC, которое поддерживает только дерево квадрантов, и в силу этого поддерживает только квадратные блоки, QTBTTT приводит к гораздо большему числу возможных CU-размеров, в частности, с учетом возможного рекурсивного применения разбиений на двоичное дерево и/или троичное дерево. Потенциал для необычных (неквадратных) размеров блоков может уменьшаться за счет ограничения вариантов разбиения таким образом, чтобы исключать разбиения, которые приводят к ширине или высоте блока либо меньшей четырех выборок, либо не кратной четырех выборам. Обычно, ограничение должно применяться при учете выборок яркости. Тем не менее, в описанных компоновках, ограничение может применяться отдельно к блокам для каналов цветности. Применение ограничения к вариантам разбиения для каналов цветности может приводить к отличающимся минимальным размерам блоков для яркости по сравнению с цветностью, например, когда данные кадров имеют формат цветности 4:2:0 или формат цветности 4:2:2. Каждое разбиение формирует подобласти с боковыми размерами, неизменными, разделенными на две или разделенными на четыре, относительно охватывающей область. Затем, поскольку CTU-размер представляет собой степень двух, боковые размеры всех CU также составляют степени двух.
[000114] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей поток 600 данных структуры на основе QTBTTT (или "дерева кодирования"), используемой в стандарте универсального кодирования видео. QTBTTT-структура используется для каждой CTU, чтобы задавать разделение CTU на одну или более CU. QTBTTT-структура каждой CTU определяется посредством модуля 310 сегментации на блоки в видеокодере 114 и кодируется в поток 115 битов или декодируется из потока 133 битов посредством энтропийного декодера 420 в видеодекодере 134. Поток 600 данных дополнительно характеризует допустимые комбинации, доступные для модуля 310 сегментации на блоки для разделения CTU на одну или более CU, согласно разделениям, показанным на фиг. 5.
[000115] Начиная с верхнего уровня иерархии, т.е. в CTU, нуль или более разделений на дерево квадрантов сначала выполняются. В частности, решение 610 по разбиению на дерево квадрантов (QT) принимается посредством модуля 310 сегментации на блоки. Решение на 610, возвращающее символ "1", указывает решение разбивать текущий узел на четыре подузла согласно разбиению 512 на дерево квадрантов. Результат представляет собой формирование четырех новых узлов, к примеру, на 620 и для каждого нового узла, рекурсивный возврат в решение 610 по QT-разбиению. Каждый новый узел учитывается в порядке растрового (или Z-сканирования). Альтернативно, если решение 610 по QT-разбиению указывает то, что дополнительное разбиение не должно выполняться (возвращает символ "0"), сегментация на основе дерева квадрантов прекращается, и после этого учитывается разбиение на мультидерево (MT).
[000116] Во-первых, решение 612 по MT-разбиению принимается посредством модуля 310 сегментации на блоки. На 612, указывается решение выполнять MT-разбиение. Возврат символа "0" в решении 612 указывает то, что дополнительное разбиение узла на подузлы не должно выполняться. Если дополнительное разбиение узла не должно выполняться, то узел представляет собой узел-лист дерева кодирования и соответствует CU. Узел-лист выводится на 622. Альтернативно, если MT-разбиение 612 указывает решение выполнять MT-разбиение (возвращает символ "1"), модуль 310 сегментации на блоки переходит к решению 614 по направлению.
[000117] Решение 614 по направлению указывает направление MT-разбиения как горизонтальное ("H" или "0") или вертикальное ("V" или "1"). Модуль 310 сегментации на блоки переходит к решению 616, если решение 614 возвращает "0", указывающий горизонтальное направление. Модуль 310 сегментации на блоки переходит к решению 618, если решение 614 возвращает "1", указывающий вертикальное направление.
[000118] В каждом из решений 616 и 618, число сегментов для MT-разбиения указывается как либо два (двоичное разбиение или "BT-узел"), либо три (троичное разбиение или "TT") в BT/TT-разбиении. Таким образом, решение 616 по BT/TT-разбиению принимается посредством модуля 310 сегментации на блоки, когда указываемое направление из 614 является горизонтальным, и решение 618 по BT/TT-разбиению принимается посредством модуля 310 сегментации на блоки, когда указываемое направление от 614 является вертикальным.
[000119] Решение 616 по BT/TT-разбиению указывает то, представляет собой горизонтальное разбиение или нет двоичное разбиение 514, что указывается посредством возврата "0", или троичное разбиение 518, что указывается посредством возврата "1". Когда решение 616 по BT/TT-разбиению указывает двоичное разбиение, на этапе 625 формирования HBT CTU-узлов, два узла формируются посредством модуля 310 сегментации на блоки, согласно двоичному горизонтальному разбиению 514. Когда BT/TT-разбиение 616 указывает троичное разбиение на этапе 626 формирования HTT CTU-узлов, три узла формируются посредством модуля 310 сегментации на блоки, согласно троичному горизонтальному разбиению 518.
[000120] Решение 618 по BT/TT-разбиению указывает то, представляет собой вертикальное разбиение или нет двоичное разбиение 516, что указывается посредством возврата "0", или троичное разбиение 520, что указывается посредством возврата "1". Когда BT/TT-разбиение 618 указывает двоичное разбиение, на этапе 627 формирования VBT CTU-узлов, два узла формируются посредством модуля 310 сегментации на блоки, согласно вертикальному двоичному разбиению 516. Когда BT/TT-разбиение 618 указывает троичное разбиение на этапе 628 формирования VTT CTU-узлов, три узла формируются посредством модуля 310 сегментации на блоки, согласно вертикальному троичному разбиению 520. Для каждого узла, получающийся в результате этапов 625-628, рекурсия потока 600 данных обратно в решение 612 по MT-разбиению применяется, в порядке слева направо или сверху вниз, в зависимости от направления 614. Как следствие, разбиения на двоичное дерево и троичное дерево могут применяться, чтобы формировать CU, имеющие множество размеров.
[000121] Наборы разрешенных и запрещенных разбиений в каждом узле дерева кодирования дополнительно описываются со ссылкой на фиг. 9.
[000122] Фиг. 7A и 7B предоставляют примерное разделение 700 CTU 710 на определенное число CU или CB. Примерная CU 712 показывается на фиг. 7A. Фиг. 7A показывает пространственную компоновку CU в CTU 710. Примерное разделение 700 также показывается в качестве дерева 720 кодирования на фиг. 7B.
[000123] В каждом узле-не-листе в CTU 710 по фиг. 7A, например, узлы 714, 716 и 718, вложенные узлы (которые могут дополнительно разделяться или могут представлять собой CU), сканируются или проходятся в "Z-порядке", чтобы создавать списки узлов, представленных в качестве столбцов в дереве 720 кодирования. Для разбиения на дерево квадрантов, сканирование Z-порядка приводит к сверху слева направо, а далее к порядку снизу слева направо. Для горизонтальных и вертикальных разбиений, сканирование Z-порядка (обход) упрощается до сканирования сверху вниз и сканирования слева направо, соответственно. Дерево 720 кодирования по фиг. 7B перечисляет все узлы и CU согласно применяемому порядку сканирования. Каждое разбиение формирует список из двух, трех или четырех новых узлов на следующем уровне дерева до тех пор, пока не достигается узел-лист (CU).
[000124] После разложения изображения на CTU и дополнительно на CU посредством модуля 310 сегментации на блоки и с использованием CU, чтобы формировать каждый остаточный блок (324), как описано со ссылкой на фиг. 3, остаточные блоки подвергаются прямому преобразованию и квантованию посредством видеокодера 114. Результирующие TB 336 затем сканируются, чтобы формировать последовательный список остаточных коэффициентов, в качестве части работы модуля 338 энтропийного кодирования. Эквивалентный процесс выполняется в видеодекодере 134, чтобы получать TB из потока 133 битов.
[000125] Пример по фиг. 7A и 7B описывает дерево кодирования, применимое как к каналу яркости, так и к каналу цветности. Тем не менее, пример по фиг. 7A и 7B также иллюстрирует поведение с точки зрения обхода дерева кодирования, применимого только к каналу яркости, или дерева кодирования, применимого только к каналам цветности. Для деревьев кодирования со многими вложенными разбиениями, доступные варианты разбиения на более глубоких уровнях ограничены посредством ограничений на доступные размеры блоков для соответствующих небольших областей. Ограничения на доступные размеры блоков для небольших областей налагаются, чтобы предотвращать наихудший случай скорости блочной обработки, настолько высокой, что она налагает необоснованную нагрузку на реализации. В частности, такое ограничение, что размеры блоков должны составлять кратное 16 (шестнадцати) выборок в цветности, обеспечивает возможность реализациям обрабатывать выборки со степенью детализации в 16 (шестнадцать) выборок. Ограничение размеров блоков кратными числами в шестнадцать выборок, в частности, является релевантным для контура обратной связи по "внутреннему восстановлению", который представляет собой тракт в видеодекодере 134 по фиг. 4, предусматривающий модули 450, 460, 468, 476 и 484, и эквивалентный тракт в видеокодере 114. В частности, ограничение размера блока кратным числом 16 (шестнадцати) выборок помогает в поддержании пропускной способности в режиме внутреннего прогнозирования. Например, архитектуры "микропроцессора с одновременным потоком данных и несколькими потоками инструкций (SIMD)" обычно работают с длинными словами, которые могут содержать 16 выборок. Кроме того, аппаратные архитектуры могут использовать широкие шины, к примеру, шины с шириной 16 выборок, чтобы передавать выборки вдоль контура обратной связи по внутреннему восстановлению. Если использован меньший размер блока, например, в четыре выборки, то шина недостаточно используется, например, только одна четверть ширины шины, содержащей дискретизированные данные. Хотя недостаточно используемая шина может обрабатывать меньшие блоки (т.е. меньше шестнадцати выборок), в худших вариантах, к примеру, когда многие или все блоки имеют относительно небольшой размер, недоиспользование может приводить к предотвращению работы в режиме реального времени кодера (114) или декодера (134). Для внешнего прогнозирования, каждый блок зависит от опорных выборок, полученных из буфера кадров (к примеру, буфера 372 или 496). Поскольку буфер кадров заполняется с опорными выборками при обработке предшествующего кадра, отсутствует контур зависимостей с обратной связью, что влияет на поблочную операцию для формирования внешне прогнозированных блоков. В дополнение к контуру зависимостей с обратной связью, который связан с внутрикадровым восстановлением, существует дополнительный и параллельный контур обратной связи, который связан с определением режима 458 внутреннего прогнозирования. Режим 458 внутреннего прогнозирования определяется посредством выбора режима из списка наиболее вероятных режимов или выбора режима из оставшегося списка режима. Определение списка наиболее вероятных режимов и списка оставшихся режимов требует режимов внутреннего прогнозирования соседних блоков. Когда относительно небольшие размеры блоков используются, список наиболее вероятных режимов и список оставшихся режимов должны определяться более часто, т.е. на частоте, отрегулированной посредством размера блока в выборках и частоты дискретизации канала.
[000126] Фиг. 8A, 8B и 8C предоставляют примерное разделение CTU 800 (8A) согласно дереву 820 кодирования (фиг. 8B) с разбиениями цветности, завершаемыми до разбиений яркости, и с использованием формата цветности 4:2:0. Если разбиение цветности завершается, пара CB используется, по одному для каждого канала цветности. Для иллюстративного удобства, CTU 800 имеет размер выборок яркости 64×64. CTU 800 является эквивалентной CTU-размеру 128×128, и включается дерево кодирования, имеющее одно дополнительное разбиение на дерево квадрантов. Разбиение на дерево квадрантов применяется к области 814 яркости 8×8. Область 814 яркости 8×8 разбивается на четыре CB яркости 4×4; тем не менее, отсутствие разбиения возникает в каналах цветности. Вместо этого, предопределенный пара CB цветности минимального размера (16 в описанном примере) используется, один из них соответствует каждому каналу цветности. Пара CB цветности типично имеет минимальный размер, который соответствует минимальной степени детализации для числа выборок, которые предпочтительно могут обрабатываться одновременно. Например, множество реализаций видеокодера 114 и видеокодера 134 должны работать с наборами по 16 выборок, например, вследствие использования, соответственно, широкой внутренней шины в аппаратной реализации. Дополнительно, каждый CB яркости, получающийся в результате перекрытий разбиения по меньшей мере частично с парой CB цветности и совместных CB яркости, полностью перекрывает пару CB цветности. В примере области 814, формируется пара CB цветности 4×4. Фиг. 8C показывает примеры того, как связаны результирующие CB яркости и CB цветности.
[000127] Возвращаясь в 8A, вертикальное двоичное разбиение применяется к области 810 яркости 16×4. Область 810 яркости 16×4 разбивается на два CB яркости 8×4; тем не менее, отсутствие разбиения возникает в каналах цветности, приводя к паре CB цветности 8×2. Вертикальное троичное разбиение применяется к области 812 яркости 16×4. Область 812 яркости 16×4 разбивается на CB яркости 4×4, 4×8 и 4×4; тем не менее, отсутствие разбиения возникает в каналах цветности, приводя к паре CB цветности 8×2. Горизонтальное двоичное разбиение применяется к области 816 яркости 8×16. Область 816 яркости 8×16 разбивается на CB яркости 8×4, 8×8 и 8×4; тем не менее, отсутствие разбиения возникает в каналах цветности, приводя к паре CB цветности 4×8. Соответственно, CB цветности составляют, по меньшей мере, 16 выборок в зоне.
[000128] Фиг. 8C показывает часть CTU 800 с тремя цветовыми плоскостями, показанными способом по частям (или с разделением), чтобы примерно иллюстрировать различные блочные структуры в различных плоскостях. Показаны плоскость 850 выборок яркости, первая плоскость 852 выборок цветности и вторая плоскость 854 выборок цветности. Когда "цветовое YCbCr-пространство" используется, плоскость 850 выборок яркости содержит Y-выборки кадра изображения, первая плоскость 852 выборок цветности содержит Cb-выборки кадра изображения, и вторая плоскость 854 выборок цветности содержит Cr-выборки кадра изображения. Использование формата цветности 4:2:0 приводит к первой плоскости 852 выборок цветности и второй плоскости 854 выборок цветности, имеющей половину примерной плотности горизонтально и вертикально относительно плоскости 850 выборок яркости. Как следствие, размерности CB блоков цветности в выборках типично составляют половину размерности соответствующего CB яркости. Таким образом, для формата цветности 4:2:0, ширина и высота CB цветности составляют половину от ширины и высоты совместно размещенного CB яркости. Для формата цветности 4:2:2, высота CB цветности составляет половину от высоты совместно размещенного CB яркости, тогда как ширина является идентичной ширине совместно размещенного CB яркости. Для понятности, показаны только родительские разбиения на дерево кодирования области 816 яркости 8×16, и только показаны разбиения в плоскости 850 выборок яркости. Когда разбиение цветности завершается, множество CB яркости совместно размещаются с парой CB цветности. Например, дерево кодирования CTU 800 включает в себя горизонтальное троичное разбиение, применяемое к области 816 яркости 8×16. Горизонтальное троичное разбиение приводит к CB 860 яркости 8×4, CB 862 яркости 8×8 и CB 864 яркости 8×4, присутствующих в плоскости 850 выборок яркости. Поскольку область 816 яркости 8×16 соответствует зоне выборок цветности 4×8 в плоскостях (852 и 854) выборок цветности, троичное разбиение дерева кодирования не применяется для плоскостей (852 и 854) выборок цветности. Соответственно, зона выборок цветности 4×8 формирует узел-лист для цветности, приводя к паре CB цветности, т.е. CB 866 цветности для первой плоскости 852 выборок цветности и CB 868 цветности для второй плоскости 854 выборок цветности. В примере горизонтального троичного разбиения, применяемого в плоскости яркости только, достигается минимальный размер CB цветности в 32 выборки. Другие примерные зоны (810, 812 и 814) яркости приводят к минимальному размеру CB цветности в 16, который соответствует минимальному размеру блока яркости и требуемой степени детализации примерной обработки.
[000129] Фиг. 9 показывает совокупность 900 размеров блоков преобразования и ассоциированных шаблонов сканирования для каналов цветности, которые получаются в результате использования формата цветности 4:2:0. Совокупность 900 также может использоваться для формата цветности 4:2:2. Описанные компоновки являются подходящими для использования с кадрами с изображениями, имеющими формат цветности, в котором каналы цветности кадра изображения субдискретизируются относительно канала яркости кадра изображения, в частности, для форматов 4:2:0 и 4:2:2. Совокупность 900 не включает в себя все возможные размеры блоков преобразования цветности. Только блоки преобразования цветности с шириной, меньшей или равной шестнадцати, или с высотой, меньшей или равной восьми, показаны на фиг. 9. Блок цветности с большей шириной и высотой может возникать, но не показан на фиг. 9 для простоты ссылки.
[000130] Набор запрещенных размеров 910 преобразования включает в себя размеры 2×2, 2×4 и 4×2 блоков преобразования, все из которых имеют зоны менее чем в шестнадцать выборок. Другими словами, в примере по фиг. 9, минимальный размер преобразования 16 (шестнадцати) выборок цветности получается в результате работы описанных компоновок, в частности, для внутренне прогнозированных CB. Случаи запрещенных размеров 910 преобразования исключаются посредством определения вариантов разбиения, как описано со ссылкой на фиг. 10. Остаточные коэффициенты в преобразованиях сканируются в двухслойном подходе, в котором преобразование разделяется на "субблоки" (или "группы коэффициентов"). Сканирование осуществляется вдоль тракта сканирования от последнего значимого (ненулевого) коэффициента обратно к (левому верхнему) DC-коэффициенту. Тракт сканирования задается как продвижение в каждом субблоке ("нижний слой") и продвижение от одного субблока к следующему ("верхний слой"). В совокупности 900, TB 920 8×2 использует субблок 8×2, т.е. субблок, содержащий шестнадцать остаточных коэффициентов. TB 922 2×8 использует субблок 2×8, т.е. также содержащий шестнадцать остаточных коэффициентов.
[000131] TB, имеющие ширину или высоту в два и другую размерность, кратную восьми, используют несколько субблоков 2×8 или 8×2. Соответственно, блоки цветности, в некоторых случаях имеющие ширину в две выборки, кодируются с использованием разделения блока на субблоки, каждый из которых имеет размер выборок 2×8, и блоки цветности, имеющие высоту двух выборок, в некоторых случаях кодируются с использованием разделения блока на субблоки, каждый из которых имеет размер выборок 8×2. Например, TB 16×2 916 имеет два субблока 8×2, причем каждый субблок сканируется так, как показано для в TB 920. Продвижение сканирования от одного субблока к следующему показано в продвижении 917 по субблокам.
[000132] TB 2×32 (не показан на фиг. 9) использует четыре субблока 2×8, размещаемые в качестве массива "один-на-четыре". Остаточные коэффициенты в каждом субблоке сканируются, как показано для TB 922 2×8, с продвижением по субблокам от наименьшего субблока к крайнему верхнему субблоку массива "один-на-четыре".
[000133] Большие TB придерживаются аналогичного продвижения при сканировании. Для всех TB с шириной и высотой, большей или равной четырем, используется сканирование субблоков 4×4. Например, TB 923 4×8 использует сканирование 924 субблоков 4×4 с продвижением от более низкого субблока до верхнего субблока. TB 925 4×4 может сканироваться аналогичным образом. TB 929 8×8 использует продвижение 930 для четырех субблоков 4×4. Во всех случаях, сканирование в субблоке и продвижение от субблока к субблоку придерживается обратного диагонального сканирования, т.е. сканирование продвигается от "последнего" значимого остаточного коэффициента обратно к левому верхнему остаточному коэффициенту TB. Фиг. 9 также показывает порядок сканирования, например, по TB 932 8×4, TB 934 16×4 и TB 936 16×8. Кроме того, в зависимости от позиции последнего значимого коэффициента вдоль тракта сканирования, только часть субблока, содержащая последний значимый остаточный коэффициент от позиции последнего значимого коэффициента обратно к левому верхнему остаточному коэффициенту субблока, должна сканироваться. Субблоки дополнительно вдоль тракта сканирования в прямом направлении (т.е. ближе к правой нижней части относительно блока) не должны сканироваться. Совокупность 900 и, в частности, запрещенные размеры 910 преобразования налагают ограничения на способность разбивать области (или узлы) дерева кодирования в цветности на подобласти (или подузлы), как описано со ссылкой на фиг. 10.
[000134] В VVC-системе с использованием TB 2×2, 2×4 и 4×2 (набор TB 910), субблок 2×2 может использоваться для TB ширины и/или высоты в две выборки. Как описано выше, использование TB 910 увеличивает пропускную способность ограничения в контуре зависимостей с обратной связью по внутреннему восстановлению. Кроме того, использование субблока только с четырьмя коэффициентами увеличивает сложность синтаксического анализа остаточных коэффициентов при более высокой пропускной способности. В частности, для каждого субблока, "карта значимости" указывает значимость каждого остаточного коэффициента, содержащегося в нем. Кодирование флага значимости с единичным значением устанавливает абсолютную величину остаточного коэффициента в качестве, меньшей мере, единицы, и кодирование нульзначного флага устанавливает абсолютную величину остаточного коэффициента в качестве нуля. Абсолютная величина остаточного коэффициента (от единицы и выше) и знак кодируются только для "значимых" остаточных коэффициентов. Бит значимости не кодируется, и абсолютная величина (от нуля) всегда кодируется для DC-коэффициента. Кодеры и декодеры с высокой пропускной способностью, возможно, должны кодировать или декодировать несколько бинов карты значимости в расчете на тактовый цикл, чтобы поддерживать работу в режиме реального времени. Сложность кодирования и декодирования на основе множества бинов в расчете на цикл увеличивается, когда зависимости между бинами являются более многочисленными, например, когда используется меньший размер субблока. В системе 100, размеры субблоков равны 16 (несмотря на исключение субблока, содержащего последний значимый коэффициент), независимо от размера блока.
[000135] Фиг. 10 показывает набор 1000 правил для формирования списков разрешенных разбиений на дерево кодирования цветности. Другие кадры могут обеспечивать возможность смеси внешне прогнозированных и внутренне прогнозированных блоков. Хотя полный набор доступных разбиений дерева кодирования описывается со ссылкой на фиг. 6, ограничения на доступные размеры преобразования налагают ограничения на конкретные варианты разбиения для данного размера области. Как описано ниже, варианты разбиения для каждого из каналов цветности определяются согласно размерностям области соответствующей единицы дерева кодирования.
[000136] Правила 1020 для области цветности показывают разрешенные разбиения различных областей. Разрешенные разбиения правил 1020 выражаются в единицах выборок яркости, даже если учитываются каналы цветности, поскольку могут использоваться различные форматы цветности.
[000137] В прохождении по узлам дерева кодирования, список разрешенных разбиений для цветности получается посредством проверки доступности набора вариантов разбиения с размером области дерева кодирования. Варианты разбиения, которые приводят к областям, которые могут кодироваться с использованием CB, добавляются в список разрешенных разбиений. Для области, которая должна кодироваться с использованием CB, размер области должен обеспечивать кодирование с целым числом преобразований конкретного размера из совокупности 900. Конкретный размер выбирается в качестве наибольшего размера, который не превышает размер области (с учетом как ширины, так и высоты). В связи с этим, для меньших областей одно преобразование используется. Если размер области превышает размер области наибольшего доступного преобразования, наибольшее доступное преобразование разбивается на плитки, чтобы занимать всю область.
[000138] С учетом узла в дереве кодирования, которое имеет данную зону (выражается в выборках яркости), способность выполнять данный тип разбиения определяется согласно типу разбиения и зоне области цветности. Как показано на фиг. 10, вариант разбиения тестируется касательно размера области, чтобы определять то, приводит или нет вариант разбиения к подобластям запрещенного размера. Варианты разбиения, приводящие к подобластям разрешенных размеров, считаются разрешенным разбиением 1070 цветности.
[000139] Например, как показано в качестве правила 1021a для областей цветности, в QT-режиме (соответствующем решению 610 по фиг. 6), разбиения на дерево квадрантов не разрешаются, если область имеет размер 8×8 в формате 4:2:0 или 8×8 в формате 4:2:2, поскольку разбиение приводит к размерам преобразования 2×2 или 2×4, соответственно, для каналов цветности. Размеры областей, которые являются допустимыми, указываются посредством стрелки 1021. Аналогично, другие допустимые разбиения для набора 1020 правил для цветности указываются посредством стрелок 1022, 1023, 1024, 1025 и 1026 и, как пояснено относительно фиг. 13 и 14 ниже. Стрелки 1021, 1022, 1023, 1024, 1 025 и 1026 ссылаются на список 1070 разрешенных разбиений цветности.
[000140] Размеры областей для каналов цветности описываются с точки зрения сетки выборок яркости. Например, область 8×4 соответствует преобразованию 4×2 для каналов цветности, когда используется формат цветности 4:2:0. Когда используется формат цветности 4:2:2, область 8×4 соответствует преобразованию 4×4 в цветности. Когда используется формат цветности 4:4:4, цветность не субдискретизируется относительно яркости, и таким образом, размер преобразования в цветности соответствует размеру области.
[000141] Ниже подробно описываются допустимые варианты разбиения относительно фиг. 13 и 14.
[000142] Фиг. 11 показывает способ 1100 для кодирования деревьев кодирования кадра изображения в поток битов видео. Способ 1100 может осуществляться посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Дополнительно, способ 1100 может осуществляться посредством видеодекодера 114 при выполнении процессора 205. В связи с этим, способ 1100 может сохраняться на считываемом компьютером носителе хранения данных и/или в запоминающем устройстве 206. Способ 1100 начинается на этапе 1105 определения формата цветности.
[000143] На этапе 1105 определения формата цветности, процессор 205 определяет формат цветности данных 113 кадров в качестве одного из формата цветности 4:2:0 или формата цветности 4:2:2. Формат цветности представляет собой свойство данных кадров и не изменяется в ходе работы способа 1100. Способ 1100 продолжается под управлением процессора 205 от этапа 1105 к этапу 1110 разделения кадра на CTU.
[000144] На этапе 1110 разделения кадра на CTU, модуль 310 сегментации на блоки, при выполнении процессора 205, разделяет текущий кадр данных 113 кадров на массив CTU. Продвижение кодирования по CTU, получающимся в результате разделения, начинается. Управление в процессоре продвигается от этапа 1110 к этапу 1120 определения дерева кодирования.
[000145] На этапе 1120 определения дерева кодирования, видеокодер 114, при выполнении процессора 205, тестирует различные режимы прогнозирования и варианты разбиения в комбинации, которая поступает в дерево кодирования для CTU. Также извлекаются режимы прогнозирования и остаточные коэффициенты для каждой CU дерева кодирования для CTU. Обычно, лагранжева оптимизация выполняется для того, чтобы выбирать оптимальное дерево кодирования и CU для CTU. При оценке использования внешнего прогнозирования, вектор движения выбирается из набора возможных вариантов векторов движения. Возможные варианты векторов движения формируются согласно шаблону поиска. Когда тестирование искажения подвергнутых выборке опорных блоков для возможных вариантов векторов движения оценивается, учитывается применение запрещенного разбиения цветности в дереве кодирования. Когда разбиение запрещается в цветности и разрешается в яркости, результирующие CB яркости могут использовать внешнее прогнозирование. Компенсация движения применяется только к каналу яркости, и таким образом, вычисление искажения учитывает искажение яркости, а не искажение цветности. Искажение цветности не учитывается, поскольку компенсация движения не выполняется в канале цветности, когда запрещено разбиение цветности. Для цветности, учитывается искажение, получающееся в результате учитываемого режима внутреннего прогнозирования и кодированного TB цветности (если имеется). С учетом яркости и цветности, поиск внешнего прогнозирования может во-первых выбирать вектор движения на основе искажения яркости и затем "детализировать" вектор движения, также с учетом искажения цветности. Детализация, в общем, учитывает небольшое варьирование значения вектора движения, к примеру, субпиксельные смещения. Когда разбиение цветности запрещается, и оценка внешнего прогнозирования для небольших блоков яркости выполняется, детализация цветности не нужна. Управление в процессоре 205 продвигается от этапа 1120 к этапу 1130 кодирования дерева кодирования.
[000146] На этапе 1130 кодирования дерева кодирования, видеокодер 114, при выполнении процессора 205, осуществляет способ 1300, который описывается относительно фиг. 13, чтобы кодировать дерево кодирования текущей CTU в поток 115 битов. Этап 1130 выполняется для того, чтобы кодировать текущую CTU в поток битов. Управление в процессоре 205 продвигается от этапа 1130 к этапу 1140 тестирования последней CTU.
[000147] На этапе 1140 тестирования последней CTU, процессор 205 тестирует то, является или нет текущая CTU последней CTU в слайсе или кадре. Если нет ("Нет" на этапе 1140), видеокодер 114 переходит к следующей CTU в кадре, и управление в процессоре 205 продвигается от этапа 1140 обратно на этап 1120, чтобы продолжать обработку оставшихся CTU в кадре. Если CTU является последней в кадре или слайсе, этап 1140 возвращает "Да", и способ 1100 завершается. Как результат способа 1100, полный кадр изображения кодируется как последовательность CTU в поток битов.
[000148] Фиг. 12 показывает способ 1200 для декодирования деревьев кодирования кадра изображения из потока битов видео. Способ 1200 может осуществляться посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Дополнительно, способ 1200 может выполняться посредством видеодекодера 134 при выполнении процессора 205. В связи с этим, способ 1200 может сохраняться на считываемом компьютером носителе хранения данных и/или в запоминающем устройстве 206. Способ 1200 начинается на этапе 1205 определения формата цветности.
[000149] На этапе 1205 определения формата цветности, процессор 205 определяет формат цветности данных 113 кадров в качестве одного из формата цветности 4:2:0 или формата цветности 4:2:2. Формат цветности представляет собой свойство данных кадров и не изменяется в ходе работы способа 1200. Видеодекодер 134 может определять формат цветности на основе профиля потока 133 битов. Профиль задает набор инструментальных средств кодирования, которые могут использоваться посредством конкретного потока 133 битов и могут ограничивать формат цветности конкретными значениями, к примеру, 4:2:0. Профиль определяется посредством декодирования, например, синтаксического элемента profile_idc из потока 133 битов или посредством декодирования одного или более флагов ограничения из потока 133 битов, каждый из которых ограничивает использование конкретных инструментальных средств в потоке 133 битов. Если формат цветности не полностью указывается посредством профиля, дополнительный синтаксис, такой как chroma_format_idc может декодироваться, чтобы определять формат цветности. Способ 1200 продолжается при выполнении процессора 205 от этапа 1205 к этапу 1210 разделения кадра на CTU.
[000150] На этапе 1210 разделения кадра на CTU, видеодекодер 134, при выполнении процессора 205, определяет разделение текущего кадра данных 133 кадров, который должен декодироваться, в массив CTU. Продвижение декодирования по CTU, получающимся в результате определенного разделения, начинается. Управление в процессоре продвигается от этапа 1210 к этапу 1220 декодирования дерева кодирования.
[000151] На этапе 1220 декодирования дерева кодирования, видеодекодер 134, при выполнении процессора 205, осуществляет способ 1400 для текущей CTU, чтобы декодировать дерево кодирования текущей CTU из потока 133 битов. Текущая CTU представляет сбой выбранную одну из CTU, получающихся в результате выполнения этапа 1210. Управление в процессоре 205 продвигается от этапа 1220 к этапу 1240 тестирования последней CTU.
[000152] На этапе 1240 тестирования последней CTU, процессор 205 тестирует то, является или нет текущая CTU последней в слайсе или кадре. Если не ("Нет" на этапе 1240), видеодекодер 134 переходит к следующей CTU в кадре, и управление в процессоре 205 продвигается от этапа 1240 обратно на этап 1220, чтобы продолжать CTU декодирования из потока битов. Если CTU является последней в кадре или слайсе, этап 1240 возвращает "Да", и способ 1300 завершается.
[000153] Фиг. 13 показывает способ 1300 кодирования дерева кодирования кадра изображения в поток битов видео. Способ 1300 может осуществляться посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Дополнительно, способ 1300 может осуществляться посредством видеокодера 114 при выполнении процессора 205. В связи с этим, способ 1300 может сохраняться на считываемом компьютером носителе хранения данных и/или в запоминающем устройстве 206. Способ 1300 приводит к кодированию блоков в поток 115 битов таким образом, что каждый блок представляет собой, по меньшей мере, минимальную зону. Описанные компоновки используют предопределенный минимальный размер выборок. Минимальный размер, используемый в описанных примерах, равен 16 выборкам, что является предпочтительным с точки зрения некоторых аппаратных и программных реализаций. Тем не менее, другой минимальный размер может несмотря на это использоваться. Например, степень детализации обработки в 32 или 64 и соответствующая минимальная блочная зона в 32 или 64 выборки, соответственно, является возможной. Блоки кодирования, которые имеют минимальную зону, являются преимущественными для осуществимости реализации, в аппаратных и в программных реализациях. Для программных реализаций, минимальная зона 16 выборок совмещается с типичными наборами инструкций с одним потоком инструкций и несколькими потоками данных (SIMD), такими как AVX-2 и SSE4. Способ 1300, активируемый первоначально в корневом узле дерева кодирования текущей CTU, начинается на этапе 1310 кодирования режима разбиения.
[000154] На этапе 1310 кодирования режима разбиения, энтропийный кодер 338, при выполнении процессора 205, кодирует режим разбиения в текущем узле дерева кодирования в поток 115 битов. Режим разбиения представляет собой одно из разбиений, как описано со ссылкой на фиг. 5, и этап кодирования режима разбиения разрешает только кодирование разбиений, которые являются возможными. Например, разбиение 512 на дерево квадрантов является возможным только в корневом узле дерева кодирования или под другими разбиениями на дерево квадрантов в дереве кодирования. Разбиения, которые должны приводить к CB яркости, имеющему ширину или высоту менее чем в четыре выборки, запрещаются, как показано относительно набора 910. Другие ограничения относительно максимальной глубины двоичных и/или троичных разбиений также могут иметь силу, например, на основе набора 1010 правил. Управление в процессоре 205 продвигается от этапа 1310 к этапу 1320 тестирования отсутствия разбиения.
[000155] На этапе 1320 тестирования отсутствия разбиения, процессор 205 тестирует то, представляет собой текущее разбиение или нет "отсутствие разбиения" (т.е. 510). Если текущее разбиение представляет собой отсутствие 510 разбиения ("Да" на этапе 1320), управление в процессоре 205 продвигается от этапа 1320 к этапу 1330 кодирования CU. В противном случае, если текущее разбиение представляет собой 510 ("Нет" на этапе 1320), управление в процессоре 205 продвигается к этапу 1340 тестирования запрета разбиения цветности.
[000156] На этапе 1330 кодирования CU, энтропийный кодер 338, при выполнении процессора 205, кодирует режим прогнозирования CU и остаток CU в поток 115 битов. Поскольку этап 1330 достигается в каждом узле-листе дерева кодирования, способ 1300 завершается после этапа 1330 завершения, возвращаясь к родительской активации в обходе дерева кодирования. После того как все узлы дерева кодирования проходятся, вся CTU кодируется в потоке 115 битов, и управление возвращается в способ 1100, переходя к следующей CTU в кадре изображения.
[000157] На этапе 1340 тестирования запрета разбиения цветности, процессор 205 определяет то, разрешается или нет применение разбиения для текущего узла в дереве кодирования, согласно этапу 1310, к каналу цветности, в соответствии с набором правил разбиения области 1020 цветности по фиг. 10. Если текущий узел в дереве кодирования покрывает зону яркости в 128 выборок яркости (32×4 или 4×32 или 16×8 или 8×16), то троичное разбиение в соответствующей области цветности (выборки цветности 16×2, 2×16, 8×4, 4×8, соответственно) запрещается, как показано в наборе 1020 правил. Если троичное разбиение разрешается, то результирующие размеры блоков включают в себя запрещенные размеры блоков (например, 2×4 или 4×2). Когда текущий узел в дереве кодирования покрывает зону яркости в 64 выборки яркости, то разбиения на двоичное дерево, троичное дерево на дерево квадрантов запрещаются, как показано в наборе 1020 правил. Реализация разбиений на двоичное дерево, троичное дерево на дерево квадрантов для зоны яркости в 64 выборки яркости приводит к запрещенным размерам блоков цветности (2×2, 2×4, 4×2). Если разбиение не запрещается (т.е. разбиение представляет собой разрешенное разбиение цветности списка 1070), этап 1340 возвращает "Нет", и управление в процессоре 205 продвигается от этапа 1340 к этапу 1350 выполнения разбиения яркости и цветности. В противном случае, если разбиение запрещается ("Да" в 1 340), управление в процессоре 205 продвигается к этапу 13100 выполнения разбиения яркости.
[000158] На этапе 1350 выполнения разбиения яркости и цветности, процессор 205 применяет разбиение, чтобы разделять текущую область, ассоциированную с текущим узлом дерева кодирования, на подобласти, ассоциированные с подузлами дерева кодирования. Разбиение применяется в соответствии с описанием по фиг. 5 и 6. Управление в процессоре 205 продвигается от этапа 1350 к этапу 1360 выбора области.
[000159] На этапе 1360 выбора области, процессор выбирает одну из подобластей, получающихся в результате этапа 1350. Подобласть выбирается в соответствии со сканированием в Z-порядке областей. Выбор продвигается через подобласти на последующих итерациях этапа 1360. Управление в процессоре 205 продвигается от этапа 1360 к этапу 1370 кодирования дерева кодирования.
[000160] На этапе 1370 кодирования дерева кодирования, процессор 205 рекурсивно активирует способ 1300 для выбранной области, получающейся в результате этапа 1360. Этап 1370 дополнительно работает с возможностью кодировать блоки яркости и цветности и ассоциированные режимы прогнозирования и остаточные коэффициенты для каждой области в поток битов. Управление в процессоре 205 продвигается от этапа 1370 к этапу 1380 тестирования последней области.
[000161] На этапе 1380 тестирования последней области, процессор 205 тестирует то, является или нет выбранная область, выбранная на этапе 1360, последней из областей, получающихся в результате разделения согласно режиму разбиения, реализованному на этапе 1350. Если область не является последней областью ("Нет" на этапе 1380) управление в процессоре 205 продвигается от этапа 1380 к этапу 1360, чтобы продолжать продвижение вперед через области разбиения. В противном случае, этап 1380 возвращает "Да", способ 1300 завершается, и управление в процессоре 205 продвигается к родительской активации способа 1300.
[000162] На этапе 13100 выполнения разбиения яркости, режим разбиения, кодированный на этапе 1310, выполняется только в канале яркости посредством процессора 205. Как следствие, текущий узел дерева кодирования разделяется на несколько CB яркости в соответствии с режимом разбиения. Только пара CB цветности, т.е. один CB цветности в расчете на канал цветности формируется. Каждый результирующий CB яркости частично перекрывается (совместно размещается) с парой CB цветности, и совместно результирующие CB яркости полностью перекрываются с зоной пары CB цветности. Совместные CB яркости точно покрывают зону пары CB цветности. Кроме того, наименьшая зона каждого CB яркости и CB цветности имеет минимальный размер, например, в 16 выборок.
[000163] Этапы 13100 и 1350 работают с возможностью определять размер блока кодирования цветности для каналов Cb и Cr цветности. На этапе 1350, размер блока кодирования цветности для канала цветности определяется на основе режима разбиения, определенного на этапе 1310. На этапе 13100, размер блока кодирования цветности для канала цветности определяется на основе предопределенного минимального размера блока цветности. Как описано выше, этап 1350 реализуется на основе запрета разбиения цветности для единицы дерева кодирования. Как указано в наборе 1020 правил по фиг. 10, допустимые разбиения и, соответственно, размер блока кодирования цветности определяются на основе формата цветности, определенного на этапе 1105.
[000164] Управление в процессоре 205 продвигается от этапа 13100 к этапу 13110 выбора CB яркости.
[000165] На этапе 13110 выбора CB яркости, процессор 205 выбирает следующий CB яркости CB, получающихся в результате этапа 13100. Способ 13100 первоначально выбирает первый CB, который является левым верхним CB яркости из CB, получающихся в результате разбиения яркости. При последующей активации этапа 13110, каждый "следующий" CB яркости выбирается в соответствии со сканированием в Z-порядке по CB яркости, получающимся в результате этапа 13100. Управление в процессоре 205 продвигается от этапа 13110 к этапу 13120 кодирования CB яркости.
[000166] На этапе 13120 кодирования CB яркости, энтропийный кодер 338, при выполнении процессора 205, кодирует выбранный CB яркости в поток 115 битов. Обычно, режим прогнозирования и остаточные коэффициенты кодируются для выбранного CB яркости. Режим прогнозирования, кодированный для CB яркости, может использовать внешнее прогнозирование или внутреннее прогнозирование. Например, cu_skip_flag кодируется, чтобы указывать использование внешнего прогнозирования без остатка, в противном случае pred_mode_flag и необязательно pred_mode_ibc_flag кодируются, чтобы указывать использование внутреннего прогнозирования, внешнего прогнозирования или внутриблочного копирования, каждое из которых имеет необязательные остаточные коэффициенты. Когда остаток может присутствовать, фаг cu_cbf сигнализирует присутствие по меньшей мере одного значимого (ненулевого) остаточного коэффициента в любом TB CB. Когда CB указывается таким образом, чтобы использовать внешнее прогнозирование, ассоциированный вектор движения является применимым только к CB яркости. Таким образом, вектор движения также не применяется, чтобы формировать любой PB, ассоциированный с любыми частично совместно размещенными CB цветности. Когда CB указывается таким образом, чтобы использовать внутриблочное копирование, ассоциированный блочный вектор ассоциирован только с CB яркости, а не с любыми частично совместно размещенными CB цветности. Управление в процессоре 205 продвигается от этапа 13120 к этапу 13130 тестирования последнего CB яркости.
[000167] На этапе 13130 тестирования последнего CB яркости, процессор 205 тестирует то, является или нет, выбранный на этапе 13110, последним CB яркости, согласно итерации в Z-порядке CB яркости разбиения, выполняемого на этапе 13100. Если выбранный CB яркости не является последним ("Нет" на этапе 13130), управление в процессоре 205 продвигается от этапа 13130 к этапу 13120. В противном случае, этап 13130 возвращает "Да", и управление в процессоре 205 продвигается к этапу определения режима внутреннего прогнозирования цветности.
[000168] При определении 13140 режима внутреннего прогнозирования цветности, видеокодер 114, при выполнении процессора 205, определяет режим внутреннего прогнозирования для пары CB цветности, совместно размещаемых с CB яркости этапа 13100. Этап 13140 эффективно определяет то, что блок цветности кодируется с использованием внутреннего прогнозирования. Выполняется определение в отношении того, дополнительно разбивается или нет область, занимаемая посредством CB цветности, на канал яркости в несколько CB яркости. Размер блока цветности для канала составляет предопределенный минимум (например, в 16 выборок), определенный посредством операции этапа 1350. Режим внутреннего прогнозирования для пары CB цветности определяется, даже если соответствующие CB яркости кодированы с использованием внешнего прогнозирования на этапе 13120. В одной компоновке, один режим прогнозирования, к примеру, внутреннее DC-прогнозирование, применяется к каждому CB цветности. Использование одного режима прогнозирования обеспечивает возможность определения режима на основе запрета разбиения цветности ("результат Да" на этапе 1340) и не влечет за собой дополнительное выполнение поиска, чтобы определять то, какой один режим из нескольких возможных режимов должен использоваться. Кроме того, поток битов 115 не требует дополнительной сигнализации для этого случая, т.е. нет необходимости кодировать дополнительный синтаксический элемент intra_chroma_pred_mode. Тем не менее, компоновки позволяют достигать более высокой производительности сжатия посредством сигнализирования одного режима внутреннего прогнозирования из нескольких возможных режимов внутреннего прогнозирования посредством включения синтаксического элемента intra_chroma_pred_mode в потоке битов 115, когда разбиение цветности запрещено ("Да" на этапе 1340). Видеокодер 114 определяет то, какой режим внутреннего прогнозирования должен использоваться. Режим внутреннего прогнозирования, в общем, определяется с учетом затрат на кодирование по сравнению с искажением. Тем не менее, более высокая производительность сжатия, в общем, получается по сравнению с использованием одного режима внутреннего прогнозирования для таких CB цветности. Управление в процессоре 205 продвигается от этапа 13140 к этапу 13150 кодирования CB цветности.
[000169] На этапе 13150 кодирования CB цветности, энтропийный кодер 338, при выполнении процессора 205, кодирует режим внутреннего прогнозирования для CB цветности в поток 115 битов, с использованием синтаксического элемента intra_chroma_pred_mode, когда несколько режимов внутреннего прогнозирования доступны для использования. Когда один режим внутреннего прогнозирования, например, внутреннее DC-прогнозирование, является возможным, intra_chroma_pred_mode не кодируется в поток 115 битов. Доступные режимы внутреннего прогнозирования для внутреннего прогнозирования цветности могут включать в себя DC-, планарный и следующие режимы углового прогнозирования: горизонтальный, вертикальный, вверх и вправо по диагонали. Доступные режимы внутреннего прогнозирования также могут включать в себя "прямой режим" (DM_CHROMA), за счет чего режим внутреннего прогнозирования цветности получается из совместно размещенного CB яркости, в общем, самого нижнего и самого правого из CB яркости, получающихся в результате этапа 13100. Когда внутреннее прогнозирование "кросскомпонентной линейной модели" доступно, CB цветности может прогнозироваться из выборок из CB яркости. Остаточные коэффициенты TB цветности, ассоциированных с CB цветности, также могут кодироваться в поток 115 битов, как описано со ссылкой на этап 14150 по фиг. 14. После того как этап 13150 выполняется посредством процессора 205, способ 1300 завершается, и управление в процессоре 205 возвращается к родительской активации способа 1300.
[000170] Фиг. 14 показывает способ 1400 декодирования дерева кодирования кадра изображения из потока битов видео, реализованный на этапе 1220 способа 1200. Способ 1400 может осуществляться посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Дополнительно, способ 1400 может осуществляться посредством видеодекодера 134 при выполнении процессора 205. В связи с этим, способ 1400 может сохраняться на считываемом компьютером носителе хранения данных и/или в запоминающем устройстве 206. Способ 1400 приводит к блокам декодирования из потока 133 битов таким образом, что каждый блок не меньше минимальной зоны, к примеру, в 16 выборок, что является преимущественным для осуществимости реализации, как в аппаратном случае, таки в программном случае. Для программного случая, минимальная зона 16 выборок совмещается с типичными наборами инструкций с одним потоком инструкций и несколькими потоками данных (SIMD), такими как AVX-2 и SSE4. Способ 1400, активируемый первоначально в корневом узле дерева кодирования текущей CTU, начинается на этапе 1410 декодирования режима разбиения.
[000171] На этапе 1410 декодирования режима разбиения, энтропийный декодер 420, при выполнении процессора 205, декодирует режим разбиения в текущем узле дерева кодирования в поток 133 битов. Режим разбиения представляет собой одно из разбиений, как описано со ссылкой на фиг. 5, и способ кодирования режима разбиения разрешает только кодирование разбиений, которые разрешаются, т.е. разрешается в канале яркости, даже если разбиение запрещается в каналах цветности. Например, разбиение 512 на дерево квадрантов является возможным только в корневом узле дерева кодирования или под другими разбиениями на дерево квадрантов в дереве кодирования. Запрещаются разбиения, которые приводят к CB яркости, имеющему ширину или высоту менее чем в четыре выборки. В связи с этим, минимальный размер CB яркости равен 16 выборкам. Другие ограничения относительно максимальной глубины двоичных и/или троичных разбиений также могут иметь силу. Управление в процессоре 205 продвигается от этапа 1410 к этапу 1420 тестирования отсутствия разбиения.
[000172] На этапе 1420 тестирования отсутствия разбиения, процессор 205 тестирует то, представляет собой текущее разбиение или нет "отсутствие разбиения" (т.е. 510). Если текущее разбиение представляет собой отсутствие 510 разбиения ("Да" на 1420), управление в процессоре 205 продвигается от этапа 1420 к этапу 1430 декодирования CU. В противном случае, этап 1420 возвращает "Нет", и управление в процессоре 205 продвигается к этапу 1440 тестирования запрета разбиения цветности.
[000173] На этапе 1430 декодирования CU, энтропийный декодер 420, при выполнении процессора 205, декодирует режим прогнозирования CU и остаточные коэффициенты CU потока 115 битов. Этап 1430 работает с возможностью декодировать единицу кодирования с использованием остаточных коэффициентов и режима прогнозирования, определенных из потока битов посредством энтропийного декодера 420. Поскольку этап 1430 достигается в каждом узле-листе дерева кодирования, способ 1400 завершается после завершения этапа 1430, возвращаясь к родительской активации в обходе дерева кодирования. После того как все узлы дерева кодирования проходятся, вся CTU декодируется из потока 133 битов, и управление возвращается в способ 1200, переходя к следующей CTU в кадре изображения.
[000174] На этапе 1440 тестирования запрета разбиения цветности, процессор 205 определяет то, разрешается или нет применение разбиения для текущего узла в дереве кодирования, согласно этапу 1410, к каналу цветности, в соответствии с набором правил разбиения области 1020 цветности по фиг. 10. Этап 1440 определяет то, запрещается или нет тест разбиения, аналогично этапу 1340 способа 1300. Операция этапа 1440 предотвращает возникновение запрещенных размеров блоков. Когда область цветности уже имеет минимальный размер, например, в 16 выборок цветности, дополнительное разбиение любого типа не разрешается, поскольку число результирующих областей составляет меньше разрешенного минимума. Когда размер области цветности равен 32 выборкам, и соответствующее разбиение представляет собой троичное разбиение (независимо от того, представляет оно собой горизонтальное или вертикальное троичное разбиение), дополнительное разбиение также запрещается, чтобы исключать блоки цветности зоны 8 выборок цветности. Если разбиение не запрещается (т.е. разбиение разрешается), этап 1450 возвращает "Нет", и управление в процессоре 205 продвигается от этапа 1440 к этапу 1450 выполнения разбиения яркости и цветности. В противном случае, если разбиение запрещается ("Да" на этапе 1450), управление в процессоре 205 продвигается к этапу 14100 определения режима внутреннего прогнозирования цветности.
[000175] На этапе 1450 выполнения разбиения яркости и цветности, процессор 205 применяет разбиение, чтобы разделять текущую область, ассоциированную с текущим узлом дерева кодирования, на подобласти, ассоциированные с подузлами дерева кодирования. Разбиение применяется, как описано относительно фиг. 5 и 6.
[000176] Этапы 14100 и 1450 работают с возможностью определять размер блока кодирования цветности для каналов Cb и Cr цветности. На этапе 1450, размер блока кодирования цветности для канала цветности определяется на основе режима разбиения, декодированного на этапе 1410. На этапе 14100, размер блока кодирования цветности для канала цветности определяется на основе предопределенного минимального размера блока цветности. Как описано выше, этап 1450 реализуется на основе запрета разбиения цветности для единицы дерева кодирования, которая соответствует минимальному размеру CB цветности 16 (и 32 в случае троичного разбиения зоны яркости в 128 выборок). Как указано в наборе 1020 правил по фиг. 10, допустимые разбиения и, соответственно, размер блока кодирования цветности определяются на основе формата цветности, определенного на этапе 1205.
[000177] Управление в процессоре 205 продвигается от этапа 1450 к этапу 1460 выбора области.
[000178] На этапе 1460 выбора области, процессор 205 выбирает одну из подобластей, получающихся в результате этапа 1450, в соответствии со сканированием в Z-порядке областей. Этап 1460 управляет выбором продвижения через подобласти на последующих итерациях. Управление в процессоре 205 продвигается от этапа 1460 к этапу 1470 декодирования дерева кодирования.
[000179] На этапе 1470 декодирования дерева кодирования, процессор 205 рекурсивно активирует способ 1400 для выбранной области, получающейся в результате операции этапа 1460. Этап 1470 дополнительно работает с возможностью декодировать каждую область дерева кодирования с использованием остаточных коэффициентов и режима прогнозирования, определенных из потока битов. Управление в процессоре 205 продвигается от этапа 1470 к этапу 1480 тестирования последней области.
[000180] На этапе 1480 тестирования последней области, процессор 205 тестирует то, является или нет выбранная область, предварительно выбранная при последней итерации этапа 1460, последней из областей, получающихся в результате разделения согласно режиму разбиения, реализованного на этапе 1450. Если область не является последней областью ("Нет" на этапе 1480), управление в процессоре 205 продвигается от этапа 1480 к этапу 1460, чтобы продолжать продвижение вперед через области разбиения. В противном случае, этап 1480 возвращает "Да", способ 1400 завершается, и управление в процессоре 205 продвигается к родительской активации способа 1400.
[000181] На этапе 14100 выполнения разбиения яркости, режим разбиения, кодированный на этапе 1410, выполняется только в канале яркости посредством процессора 205. Как следствие, текущий узел дерева кодирования разделяется на несколько CB яркости в соответствии с режимом разбиения. Этап 14100 работает с возможностью формировать только пару CB цветности, т.е. один CB цветности в расчете на канал цветности. Каждый результирующий CB яркости частично перекрывается (по меньшей мере, частично совместно размещается) с парой CB цветности, и совместно CB яркости полностью перекрывают пару CB цветности. Кроме того, наименьшая зона каждого CB яркости и CB цветности равна 16 выборкам. Управление в процессоре 205 продвигается от этапа 14100 к этапу 14110 выбора CB яркости.
[000182] На этапе 14110 выбора CB яркости, процессор 205 выбирает следующий CB яркости CB, получающихся в результате этапа 14100. Выбор следующего CB яркости начинается с первого CB, который является левым верхним CB яркости CB, получающихся в результате разбиения яркости. При последующей активации этапа 14110, каждый "следующий" CB яркости выбирается в соответствии со сканированием в Z-порядке по CB яркости, получающимся в результате этапа 14100. Управление в процессоре 205 продвигается от этапа 14110 к этапу 14120 декодирования CB яркости.
[000183] На этапе 14120 декодирования CB яркости, энтропийный декодер 420, при выполнении процессора 205, декодирует выбранный CB яркости в поток 115 битов. Обычно, режим прогнозирования и остаток декодируются для выбранного CB яркости. Например, cu_skip_flag декодируется, чтобы указывать использование внешнего прогнозирования без остатка, в противном случае pred_mode_flag, и необязательно pred_mode_ibc_flag декодируются, чтобы указывать использование внутреннего прогнозирования, внешнего прогнозирования или внутриблочного копирования, каждое из которых имеет необязательные остаточные коэффициенты. Когда остаток может присутствовать, фаг cu_cbf сигнализирует присутствие по меньшей мере одного значимого (ненулевого) остаточного коэффициента в любом TB CB. Когда CB указывается таким образом, чтобы использовать внешнее прогнозирование, ассоциированный вектор движения является применимым только к CB яркости, т.е. вектор движения также не применяется, чтобы формировать любой PB, ассоциированный с любыми частично совместно размещенными CB цветности. Когда CB таким образом, чтобы использовать внутриблочное копирование, ассоциированный блочный вектор ассоциирован только с CB яркости, а не с любыми частично совместно размещенными CB цветности. Управление в процессоре 205 продвигается от этапа 14120 к этапу 14130 тестирования последнего CB яркости.
[000184] На этапе 14130 тестирования последнего CB яркости, процессор 205 тестирует то, является или нет CB яркости, выбранный на этапе 14110, последним CB яркости согласно итерации в Z-порядке CB яркости разбиения, выполняемого на этапе 14100. Если выбранный CB яркости не является последним, управлением в процессоре 205 продвигается от этапа 14130 к этапу 14110. В противном случае, управление в процессоре 205 продвигается к этапу 14140 определения режима внутреннего прогнозирования цветности.
[000185] При определении 14140 режима внутреннего прогнозирования цветности, видеодекодер 134, при выполнении процессора 205, определяет режим внутреннего прогнозирования для пары CB цветности, совместно размещаемых с CB яркости этапа 14100. Этап 14140 эффективно определяет то, что блок цветности кодирован с использованием внутреннего прогнозирования и, соответственно, должен декодироваться с использованием внутреннего прогнозирования, если блок цветности представляет собой результат прекращения разбиения дерева кодирования для цветности, в то время как разбиение дерева кодирования для яркости осуществляется, как определено посредством операции этапа 1440. Режим внутреннего прогнозирования для пары CB цветности определяется, даже если соответствующие CB яркости декодированы с использованием внешнего прогнозирования на этапе 14120. В одной компоновке, один режим прогнозирования, к примеру, внутреннее DC-прогнозирование, применяется к каждому CB цветности. Использование одного режима прогнозирования обеспечивает возможность определения режима на основе запрета разбиения цветности ("результат Да" на этапе 1440) и не влечет за собой дополнительное выполнение поиска, чтобы определять то, какой один режим из нескольких возможных режимов должен использоваться. Кроме того, поток 134 битов не требует дополнительной сигнализации для этого случая, т.е. нет необходимости кодировать дополнительный синтаксический элемент intra_chroma_pred_mode. Тем не менее, компоновки позволяют достигать более высокой производительности сжатия посредством сигнализирования одного режима внутреннего прогнозирования из нескольких возможных режимов внутреннего прогнозирования посредством включения синтаксического элемента intra_chroma_pred_mode в потоке 134 битов, когда разбиение цветности запрещено ("Да" на этапе 1440). Видеодекодер 134 должен определять то, какой режим внутреннего прогнозирования должен использоваться, с использованием энтропийного декодера 420, для того, чтобы декодировать синтаксический элемент intra_chroma_pred_mode из потока 134 битов. Управление в процессоре 205 продвигается от этапа 14140 к этапу 14150 декодирования CB цветности.
[000186] На этапе 14150 декодирования CB цветности, энтропийный декодер 420, при выполнении процессора 205, определяет режим внутреннего прогнозирования для CB цветности из потока 420 битов, в общем, согласно декодированному синтаксическому элементу intra_chroma_pred_mode. Декодирование intra_chroma_pred_mode выполняется, когда несколько режимов внутреннего прогнозирования доступны. Когда только один режим внутреннего прогнозирования доступен, например, внутреннее DC-прогнозирование, режим логически выводится без декодирования дополнительных синтаксических элементов из потока 133 битов.
[000187] Доступные режимы внутреннего прогнозирования для внутреннего прогнозирования цветности могут включать в себя DC-, планарный, следующие режимы углового прогнозирования: горизонтальный, вертикальный, вверх и вправо по диагонали. Доступные режимы внутреннего прогнозирования также могут включать в себя "прямой режим" (DM_CHROMA), за счет чего режим внутреннего прогнозирования цветности получается из совместно размещенного CB яркости, в общем, самого нижнего и самого правого из CB яркости, получающихся в результате этапа 14100. Когда внутреннее прогнозирование "кросскомпонентной линейной модели" доступно, CB цветности может прогнозироваться из выборок из CB яркости. Для пары CB цветности, фаг cu_cbf сигнализирует присутствие по меньшей мере одного значимого остаточного коэффициента в любом одном из пары CB цветности. Если по меньшей мере один значимый остаточный коэффициент присутствует в любом одном пары CB цветности, то tu_cbf_cb и tu_cbf_cr сигнализируют присутствие по меньшей мере одного значимого коэффициента в CB цветности для Cb- и Cr-каналов, соответственно. Для CB цветности, имеющих по меньшей мере один значимый остаточный коэффициент, последовательность синтаксических элементов residual_coding декодируется, чтобы определять остаточные коэффициенты соответствующего CB цветности. Синтаксис остаточного кодирования кодирует остаточные коэффициенты в качестве последовательности значений, заполняющих блок преобразования от позиции последнего значимого коэффициента до позиции левого верхнего ("DC-") коэффициента согласно обратному диагональному сканированию. Обратное диагональное сканирование выполняет сканирование блока преобразования в качестве последовательности "субблоков" (или "групп коэффициентов"), в общем, размера 4×4, но размеры 2×2, 2×4, 2×8, 8×2, 4×2 также быть возможны. Сканирование в каждой группе коэффициентов выполняется в обратном диагональном направлении, и сканирование от одного субблока к следующему субблоку также выполняется в обратном диагональном направлении. После того как этап 14150 выполняется посредством процессора 205, способ 1400 завершается, и управление в процессоре 205 возвращается к родительской активации способа 1400.
[000188] Подход на основе дерева кодирования способов 1300 и 1400, за счет которое минимальная блочная зона в 16 выборок поддерживается для видеоданных формата цветности 4:2:0, упрощает реализацию с высокой пропускной способностью как в программном обеспечении, так и аппаратных средствах. Кроме того, ограничение внешнего прогнозирования CB яркости для небольших CB-размеров уменьшает пропускную способность запоминающего устройства этого наихудшего случая для пропускной способности запоминающего устройства для компенсации движения посредством исключение необходимости также осуществлять выборку выборок для формирования CB цветности с компенсацией движения. В частности, если минимальный размер CB цветности составляет 2×2, и дополнительные выборки требуются для того, чтобы предоставлять поддержку фильтра для подвыборочной интерполяции CB цветности, то существенное увеличение пропускной способности запоминающего устройства должно наблюдаться только по сравнению с выполнением внешнего прогнозирования в канале яркости для небольших размеров блоков. Усиление при кодировании компенсации движения появляется практически в канале яркости, так что опускание небольших блоков из компенсации движения позволяет достигать уменьшения пропускной способности запоминающего устройства при относительно небольшом влиянии на производительность кодирования. Кроме того, уменьшение пропускной способности запоминающего устройства способствует осуществимости выполнения компенсации движения для CB яркости 4×4 и достижения результирующего усиления при кодировании.
[000189] В одной компоновке видеокодера 114 и видеодекодера 134, более одного разбиения яркости может возникать в дереве кодирования с момента времени, в который разбиение цветности дерева кодирования завершается. Например, зона яркости 8×16 не разбивается в каналах цветности, приводя к паре CB цветности 4×8. В канале яркости, зона яркости 8×16 сначала разбивается с горизонтальным троичным разбиением, и затем один из результирующих CB яркости дополнительно разбивается. Например, результирующий CB яркости 8×4 вертикально двоично разбивается на два CB яркости 4×4. Компоновки более чем с одним разбиением яркости на дерево кодирования с момента времени, в который разбиение цветности дерева кодирования завершается, повторно активируют способы 1300 и 1400 в видеокодере 114 и видеодекодере 134, соответственно, в зоне запрета разбиения цветности, с такой модификацией, что при последующих активациях не требуются дополнительные CB цветности. При активации способов 1300 и 1400, в которых пара CB цветности создается, вся зона цветности покрывается созданными CB цветности, так что рекурсивные активации способов 1300 и 1400 не должны создавать дополнительные CB цветности.
[000190] Фиг. 15A-15E показывают применение NSST к блокам преобразования различных размеров, при этом области блока преобразования включают в себя обнуленные коэффициенты для некоторых размеров блоков преобразования вследствие конкретного применяемого ядра вторичного преобразования. Обнуленные коэффициенты могут представлять собой части субблоков для целых субблоков. Применение NSST показывается в прямом направлении на фиг. 15A в 15E, т.е. с первичным прямым преобразованием, сначала применяемым, с последующим вторичным прямым преобразованием. Применение NSST к верхней левой области 8×8 блока преобразования дополнительно ограничивается, когда размерности блока преобразования составляют меньше 8×8. Кроме того, NSST-ядра 4×4 применяются с разбиением на плитки в блоках преобразования 4×8 и 8×4. Применение первичного и вторичного прямого преобразования согласуется с работой модулей 326 и 330, соответственно. Обратный порядок используется для обратных преобразований, т.е. в модулях 34 и 348 в видеокодере 114 и модулях 436 и 444 в видеодекодере 134.
[000191] Фиг. 15A показывает совокупность 1510 размеров блоков преобразования. Совокупность 1510 включает в себя остаточные коэффициенты 15100 блока 4×4, из которых первичные коэффициенты 4×4 15110 получаются посредством выполнения первичного преобразования 4×4. Для блока преобразования 4×4, 16 коэффициентов преобразуются посредством вторичного преобразования с ядром 8×16, приводя к 8 вторичным коэффициентам 15120. 8 вторичных коэффициентов пакетируются в блок преобразования 4×4 с использованием диагонального порядка сканирования, при этом оставшиеся 8 местоположения в блоке преобразования в диагональном порядке сканирования инициализируются как 0. Совокупность 1510 включает в себя блок 8×4 остаточных коэффициентов 15200. Остаток 15200 8×4 подвергается первичному преобразованию, чтобы формировать первичные коэффициенты 152108×4. Ядро 16×16 используется для вторичного преобразования и применяется к двум наборам по 16 коэффициентов, размещаемых в качестве субблоков 4×4 внутри первичных коэффициентов 8×4, приводя к коэффициентам 15220 вторичного преобразования 8×4. Коэффициенты 15220 включают в себя два субблока 4×4, 15230 (вторичные коэффициенты) и 15240 (первичные коэффициенты). Совокупность 1510 включает в себя блок 4×8 остаточных коэффициентов 15300. Остаток 4×8 15300 подвергается первичному преобразованию, чтобы формировать первичные коэффициенты 15310 4×8. Ядро 16×16 используется для вторичного преобразования и применяется к двумя наборам в 16 коэффициентов, размещаемых в качестве субблоков 4×4 в первичных коэффициентах 4×8, приводя к коэффициентам 15320 вторичного преобразования 4×8. Коэффициенты 15320 вторичного преобразования включают в себя два субблока 4×4, т.е. 15330 и 15340.
[000192] Фиг. 15B показывает совокупность 1520 размеров блоков преобразования, имеющих размеры 16×4 и 4×16. Совокупность 1520 включает в себя блок 16×4 остаточных коэффициентов15400, из которого первичные коэффициенты 15410 16×4 формируются посредством выполнения первичного преобразования. Блок (или набор) 16×4 конечных коэффициентов 15420 включает в себя два субблока коэффициентов 15430 и 15440 вторичного преобразования 4×4, каждый из которых формируются посредством выполнения 16-точечного NSST для самых левых двух субблоков 4×4 первичных коэффициентов 15410. Конечный блок коэффициентов 15420 включает в себя первичные коэффициенты 15450 8×4, которые являются прямыми копиями правой половины первичных коэффициентов 15410. Совокупность 1520 также включает в себя 4×16 блок остаточных коэффициентов 15500, из которого первичные коэффициенты 15510 4×16 формируются посредством выполнения первичного преобразования. Блок конечных остаточных коэффициентов 15520 4×16 включает в себя два субблока 15530 и 15540 коэффициентов вторичного преобразования 4×4, каждый из которых формируются посредством выполнения 16-точечного NSST для крайних верхних двух субблоков 4×4 первичных коэффициентов 15510. Конечный блок остаточных коэффициентов 15420 включает в себя первичные коэффициенты 155504×8, которые являются прямыми копиями нижней половины первичных коэффициентов 15510.
[000193] Фиг. 15C показывает совокупность 1530 одного размера блока преобразования, равного 8×8. Совокупность 1530 включает в себя блок 8×8 остаточных коэффициентов 15600, из которого первичные коэффициенты 15610 8×8 формируются посредством выполнения первичного преобразования. Коэффициенты 15620 вторичного преобразования формируются посредством применения ядра 8×64, приводя к 8 коэффициентам 15630. 8 вторичных коэффициентов 15630 преобразуются в верхний левый субблок 4×4 коэффициентов 15620 вторичного преобразования согласно диагональному порядку сканирования. Три других субблока коэффициентов 15620 вторичного преобразования обнуляются, когда выполняется вторичное преобразование.
[000194] Фиг. 15D показывает совокупность 1540 блоков преобразования размеров 8×16 и 16×8. Совокупность 1540 включает в себя блок 8×16 остаточных коэффициентов 15700, из которого первичные коэффициенты 15710 8×16 формируются посредством выполнения первичного преобразования. Блок 8×16 конечных коэффициентов 15720 включает в себя коэффициенты 15730 вторичного преобразования, которые формируются посредством выполнения 64-точечного NSST для крайней верхней области 8×8 первичных коэффициентов 15710. Коэффициенты 15730 вторичного преобразования формируют верхний самый левый блок 4×4 субблока 8×8 вторичных коэффициентов 15720. Три оставшихся субблока 4×4 из субблока 8×8 обнуляются. Конечные коэффициенты 15720 блока включают в себя первичные коэффициенты 157408×8, которые являются прямыми копиями нижней половины первичных коэффициентов 15710.
[000195] Совокупность 1540 включает в себя блок 16×8 остаточных коэффициентов 15800, из которого первичные коэффициенты 15810 16×8 формируются посредством выполнения первичного преобразования. Блок 16×8 конечных коэффициентов 15820 включает в себя субблок коэффициентов 15830 вторичного преобразования 8×8, сформированный посредством выполнения 64-точечного NSST для самой левой половины первичных коэффициентов 15810. Коэффициенты 15830 вторичного преобразования формируют верхний самый левый блок 4×4 из субблока 8×8 вторичных коэффициентов 15820. Три других субблока 4×4 из субблока 8×8 обнуляются. Блок конечных коэффициентов 15820 включает в себя первичные коэффициенты 158408×8, которые являются прямыми копиями самой правой половины первичных коэффициентов 15810. Хотя примерная совокупность 1540 включает в себя блоки размера 8×16 и 16×8, поведение, описанное относительно 8×16 и 16×8, применяется к TB с большим размером, в которых ширина или высота равна 8.
[000196] Фиг. 15E показывает совокупность 1550 одного размера преобразования, равного 16×16. Пример совокупности 1550 является применимым к большим размерам преобразования, доступным для VVC, например, к размерам 16×32, 16×64, 32×16, 32×32, 32×64, 64×16, 64×32 и 64×64. Совокупность 1550 включает в себя блок 16×16 остаточных коэффициентов 15900, из которого первичные коэффициенты 15910 16×16 формируются посредством выполнения прямого первичного преобразования. Коэффициенты 15930 вторичного преобразования формируются посредством выполнения 64-точечного NSST для верхних левых коэффициентов 8×8 из первичных коэффициентов 15910. Блок конечных коэффициентов 15920 включает в себя результирующие 16 вторичных коэффициентов 15930, занимающих левый верхний субблок 4×4 15920. Другие три субблока левых верхних коэффициентов 8×8 15920 обнуляются. Оставшиеся 192 коэффициента (три квадранта 8×8, за исключением левого верхнего квадранта 15920) указываются в качестве субблоков 15940, 15950 и 15960. Субблоки 15940, 15950 и 15960 копируются из соответствующих коэффициентов 15910.
[000197] Как показано на фиг. 15A-15E, для конкретных размеров блоков преобразования, части блока преобразования содержат обнуленные коэффициенты, когда применяется вторичное преобразование. Присутствие ненулевого коэффициента в областях, которые типично обнуляются посредством применения вторичного преобразования, формирует индикатор для видеодекодера 134 того, что вторичное преобразование не применено, а вместо этого обходится, так что только первичное преобразование должно выполняться. В дальнейшем описывается сигнализирование того, какое (если вообще должно) вторичное преобразование должно применяться, со ссылкой на фиг. 16.
[000198] Фиг. 16 показывает способ 1600 для выполнения неразделимого вторичного преобразования (NSST) для блока остаточных коэффициентов, декодированных из потока 133 битов видео, например, декодированного на этапе 1430. Например, способ 1600 может осуществляться в некоторых реализациях этапов 1430, 1470 или 14120. Способ 1600 может осуществляться посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Дополнительно, способ 1600 может осуществляться посредством видеодекодера 134 при выполнении процессора 205. В связи с этим, способ 1600 может сохраняться на считываемом компьютером носителе хранения данных и/или в запоминающем устройстве 206. Способ 1600 приводит к определению NSST-режима для TB (если применимо), без ввода зависимости от режима внутреннего прогнозирования в синтаксическом анализе декодированного синтаксического элемента (nsst_index). Определение режима внутреннего прогнозирования предпочтительно выполняется после того, как арифметический декодер энтропийного декодера 420 декодирует связанные синтаксические элементы, в частности, для относительно небольших размеров блоков. Хотя способ 1600 описывает работу с точки зрения видеодекодера 134, видеокодер 114 выполняет соответствующие этапы, чтобы формировать поток 115 битов, подходящий для декодирования посредством видеодекодера 134, осуществляющего способ 1600. Способ 1600, активируемый для TB яркости в CU, начинается на этапе 1610 декодирования остатков.
[000199] На этапе 1610 декодирования остатков, энтропийный декодер 420, при выполнении процессора 205, декодирует остаточные коэффициенты блока преобразования из потока 133 битов видео. Остаточные коэффициенты декодируются в качестве последовательности значений, которые назначаются двумерному массиву блока преобразования согласно обратному диагональному сканированию, размещаемому в субблоки 4×4. Субблоки 4×4 сканируются в обратном диагональном направлении. Первое значение, встречающееся в последовательности, представляет собой "последний значимый коэффициент", т.е. приблизительно последний коэффициент, имеющий ненулевое значение (значимый) вдоль тракта сканирования, заданного для блока преобразования. Каждый последующий коэффициент декодированного остатка в последовательности назначается местоположению в TB в соответствии со сканированием с продвижением от позиции последнего значимого коэффициента обратно к коэффициенту "DC" (левому верхнему коэффициенту в TB). "Флаг кодированного субблока" (или флаг "группы коэффициентов") сигнализируется для каждой группировки субблоков 4×4 для остаточных коэффициентов в блоке преобразования. Когда все остаточные коэффициенты в субблоке равны нулю, флаг кодированного субблока сигнализирует то, что сканирование в субблоке пропускается, и ассоциированные коэффициенты задаются равными нулю. Управление в процессоре 205 продвигается от этапа 1610 к этапу 1620 тестирования доступности NSST.
[000200] На этапе 1620 тестирования доступности NSST, процессор 205 тестирует то, должно быть доступно или нет вторичное преобразование (NSST) для применения к обратно квантованным коэффициента 342. NSST доступно только в том случае, если режим прогнозирования CB яркости представляет собой внутреннее прогнозирование, и TB применяется к каналу яркости. Соответственно, если режим прогнозирования не представляет собой внутреннее прогнозирование, или CB служит для канала цветности, этап 1620 возвращает "Нет", и способ 1600 завершается, и процессор 205 возобновляется посредством выполнения первичного обратного преобразования, как описано со ссылкой на фиг. 4. Если NSST доступно ("Да" на этапе 1620) управление в процессоре 205 продвигается от этапа 1620 к этапу 1630 тестирования числа остаточных коэффициентов.
[000201] Как описано со ссылкой на фиг. 15A-15E, для конкретных TB-размеров применение вторичного преобразования приводит к обнулению части коэффициентов блока преобразования. Это обусловлено тем, что прямое вторичное преобразование формирует меньшее число выходных коэффициентов, чем входных коэффициентов. Обратное вторичное преобразование отменяет уплотнение, реализованное посредством вторичного прямого преобразования, по мере возможности, с учетом характера с потерями такой операции в прямом направлении. Присутствие "обнуленных" областей в декодированном TB инструктирует nsst_index декодироваться, с сигнализированием того, использовано или нет вторичное преобразование. Присутствие любых значимых коэффициентов в областях указывает то, что вторичное преобразование не должно применяться.
[000202] На этапе 1630 тестирования числа остаточных коэффициентов, процессор 205 определяет то, являются или нет коэффициенты декодированного остатка из этапа 1610 совместимыми с применением NSST. Таким образом, этап 1630 тестирует то, включают в себя конкретные субблоки в себя только незначимые остаточные коэффициенты. На фиг. 15C-15E, субблоки, помеченные как "0", показывают обнуленные области, получающиеся в результате применения вторичного преобразования. На фиг. 15C, левый верхний субблок включает в себя только 8 вторичных коэффициентов (из DC-позиции и далее), с обнулением конечных 8 коэффициентов субблока. Независимо от того, включает левый верхний субблок в себя 8 или 16 вторичных коэффициентов, проверка обнуления, чтобы определять потенциальное применение вторичного преобразования, выполняется для целых субблоков. Проверка обнуления выполняется для целых субблоков, т.е. со степенью детализации в субблоки 4×4. В примере по фиг. 15C, проверка обнуления выполняется для целого уровня субблока для каждого из субблоков, помеченных как "0" в верхней половине 15720 (блоков, которые предположительно должны обнуляться посредством применения NSST), но не для верхнего самого левого субблока 15730 (блока, который предположительно должен содержать вторичные коэффициенты после применения NSST). Выполнение проверки для целых субблоков обеспечивает возможность тестирования флагов группы коэффициентов вместо тестирования отдельных коэффициентов в субблоке. Если какие-либо значимые коэффициенты находятся в тестированных субблоках (т.е. флаг группы соответствующего коэффициента субблока равен единице), то NSST не выполнено в видеокодере 114 и в силу этого не выполняется в видеодекодере 134. Этап 1630 возвращает "Нет", и способ 1600 завершается за счет выполнения, процессором 205, первичного преобразования, как описано со ссылкой на фиг. 4. Если значимые коэффициенты не находятся в тестированных субблоках, и флаг группы соответствующего коэффициента субблока равен нулю, этап 1630 возвращает "Да", и управление в процессоре 205 продвигается к этапу 1640 выбора первого контекста.
[000203] На этапе 1640 выбора первого контекста, энтропийный декодер 420, при выполнении процессора 205, выбирает контекст для первого бина усеченного унарного кодового слова, используемого для того, чтобы представлять синтаксический элемент nsst_index. Выбор не использует режим внутреннего прогнозирования CB. Соответственно, нет необходимости выполнять конструирование MPM-списков и интерпретацию синтаксических элементов intra_luma_mpm_flag, intra_luma_mpm_idx или intra_luma_remainder. Первый бин использует один из двух контекстов. Первый контекст используется, если тип первичного преобразования блока представляет собой DCT-2, либо если преобразование пропускается. Второй контекст используется, если тип первичного преобразования не представляет собой DCT-2, и преобразование не пропускается, т.е. первичное преобразование горизонтально и вертикально представляет собой комбинацию одномерных преобразований DCT-8 и DST-7. Тип первичного преобразования определяется посредством декодирования синтаксического элемента tu_mts_idx перед декодированием первого или второго бинов способа 1600. Тип первичного преобразования определяется из tu_mts_idx без дополнительных зависимостей и в силу этого не представляет вычислительных сложностей при определении. Управление в процессоре 205 продвигается от этапа 1640 к этапу 1650 декодирования первого бина.
[000204] На этапе 1650 декодирования первого бина, энтропийный декодер 420, при выполнении процессора 205, декодирует бин из потока 133 битов с использованием контекста, выбранного на этапе 1640. Декодированный бин формирует первый бин усеченного унарного кодового слова, кодирующего синтаксический элемент nsst_index. Управление в процессоре 205 продвигается от этапа 1650 к этапу 1660 тестирования применения NSST.
[000205] На этапе 1660 тестирования применения NSST, процессор тестирует бин, декодированный на этапе 1650. Значение в нуль указывает то, что вторичное преобразование обходится (NSST не применяется), и приводит к возврату "Нет" на этапе 1660. Способ 1600 затем завершается, при этом процессор 205 возобновляется посредством выполнения первичного преобразования, как описано со ссылкой на фиг. 4. Значение в единицу указывает то, что вторичное преобразование применяется, и управление в процессоре 205 продвигается от этапа 1660 к этапу 1680 декодирования второго бина ("Да" на этапе 1660).
[000206] На этапе 1680 декодирования второго бина, энтропийный декодер 420, при выполнении процессора 205, декодирует бин после обходного кодирования из потока 133 битов ("второй бин"). Бин после обходного кодирования сигнализирует то, какое из двух возможных NSST-ядер должно применяться для блока преобразования, и формирует второй бин усеченного унарного синтаксического элемента nsst_index. Обнаружено, что использование бина после обходного кодирования для второго бина вместо контекстно-кодированного бина не приводит к влиянию на производительность кодирования и экономит запоминающее устройство, ассоциированное с сохранением контекста. Использование бина после обходного кодирования для второго бина вместо контекстно-кодированного бина также исключает логику, ассоциированную с выбором того, какой из нескольких доступных контекстов должен использоваться. Эксперименты авторами изобретения не демонстрируют штрафа по производительности кодирования, получающегося в результате использования бина после обходного кодирования для второго бина, вместо контекстно-кодированного бина. Управление в процессоре 205 продвигается от этапа 1680 к этапу 1690 выполнения обратного вторичного преобразования.
[000207] На этапе 1690 выполнения обратного вторичного преобразования, модуль 436 обратного вторичного преобразования, при выполнении процессора 205, выполняет обратное вторичное преобразование с использованием выбранного NSST-ядра для декодированных остаточных коэффициентов из энтропийного декодера 420. Применение выбранного NSST-ядра к декодированным остаточным коэффициентам работает с возможностью формировать коэффициенты 440. После завершения этапа 1690, способ 1600 завершается, и процессор 205 продолжает применение обратного первичного преобразования 444, как описано со ссылкой на фиг. 4. При выполнении вторичного преобразования, часть TB, который преобразуется, как описано со ссылкой на фиг. 15A-E.
[000208] Способ 1600 предоставляет сигнализирование  nsst_index, что исключает зависимость от режима внутреннего прогнозирования, которую сложно извлекать вовремя для синтаксического анализа бина в энтропийном декодере 420, и исключает чрезмерное использование контекстов, экономя объем запоминающего устройства и упрощая вычисление для контекстного моделирования. Если режим внутреннего прогнозирования должен использоваться для определения контекстов первого бина и арифметически кодированного второго бина, то восемь контекстов должны использоваться вместо двух контекстов, как описано со ссылкой на фиг. 16.
[000209] В одной компоновке, способа 1600 первый бин подвергается обходному кодированию. Как следствие отсутствия ассоциированных контекстов, этап 1640 опускается, и этап 1650 декодирует бин после обходного кодирования, приводя к более высокой пропускной способности вследствие меньшего количества контекстно-кодированных бинов и ассоциированного сокращения потребления запоминающего устройства. Чтобы характеризовать преимущество способа 1600 по сравнению с традиционной бинаризацией для NSST-режима, традиционная бинаризация дополнительно описывается. При традиционной бинаризации, первый бин также должен зависеть от режима внутреннего прогнозирования блока: DC- или планарный по сравнению с угловым режимом. В комбинации с зависимостью от типа первичного преобразования, как описано со ссылкой на этап 1640, требуется в сумме четыре контекста. Арифметическое кодирование второго бина с использованием схемы, идентичной схеме, используемой для первого бина, требует дополнительных четырех контекстов, что приводит к восьми контекстам в сумме. Соответственно, способ 1600 экономит шесть контекстов по сравнению с традиционной бинаризацией NSST-индекса и увеличивает пропускную способность посредством использования обходного кодирования для второго бина вместо арифметического кодирования.
Промышленная применимость
[000210] Описанные компоновки являются применимыми к компьютерным отраслям и отраслям обработки данных и, в частности, для обработки цифровых сигналов для кодирования декодирования сигналов, к примеру, видеосигналов и сигналов изображений, достигая высокой эффективности сжатия.
[000211] В отличие от HEVC, VVC-системы обеспечивают возможность использования отдельных деревьев кодирования для каналов яркости и цветности для повышенной гибкости. Тем не менее, как пояснено выше, результирующая проблема может возникать вследствие использования меньших блоков цветности, затрагивающих пропускную способность. Компоновки, описанные в данном документе, определяют соответствующие правила по мере того, как каждая единица дерева кодирования обрабатывается, чтобы помогать в исключении проблем по пропускной способности. Дополнительно, как описано выше, описанные компоновки могут помогать в предоставлении повышенной эффективности и точности арифметического кодирования контекстно-кодированных бинов, используемых для того, чтобы описывать каждое из деревьев кодирования, с учетом правил для исключения проблем по пропускной способности.
[000212] Выше описаны только некоторые варианты осуществления настоящего изобретения, и модификации и/или изменения могут вноситься в них без отступления от объема и сущности изобретения, при этом варианты осуществления являются иллюстративными, а не ограничивающими.