Область техники, к которой относится изобретение
Настоящий документ относится к технологиям кодирования и декодирования видео и изображений.
Уровень техники
Цифровое видео является причиной наибольшего использования полосы пропускания в Интернете и других сетях цифровой связи. По мере увеличения количества подключенных устройств пользователя, способных принимать и отображать видео, ожидается, что потребность в полосе пропускания для использования цифрового видео будет продолжать расти.
Раскрытие сущности изобретения
Раскрытые технологии могут использоваться вариантами осуществления декодера или кодера видео или изображения для, в которых при видеокодировании или декодировании используются опорные изображения.
При одном примерном подходе раскрывается способ видеообработки. Способ содержит этап, на котором выполняют преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; причем правило устанавливает, что вследствие того, что блока цветности имеет размер М x N, блоку цветности запрещено быть представленным в кодированном представлении, использующем внутрикадровый режим кодирования, где М и N - целые числа, указывающие соответственно ширину и высоту блока цветности, при этом режим внутрикадрового кодирования содержит кодирование блока цветности, основываясь на ранее кодированной видеообласти видеоизображения.
При другом примерном подходе раскрывается другой способ видеообработки. Способ содержит этап, на котором выполняют преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; причем правило устанавливает, что блоку цветности, имеющему размер М x N, запрещено быть представленным в кодированном представлении, использующем режим внутрикадрового кодирования, в случае, когда используется разделение двоичного дерева, где М и N являются целыми числами, указывающими соответственно ширину и высоту блока цветности, при этом режим внутрикадрового кодирования содержит кодирование блока цветности на основе ранее кодированной видеообласти видеоизображения.
При еще одном примерном подходе раскрывается другой способ видеообработки. Способ содержит этап, на котором выполняют преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; причем правило устанавливает, что блоку цветности, имеющий размер М x N, запрещено быть представленным в кодированном представлении, использующем режим внутрикадрового кодирования, в случае, когда используется разделение с одиночным деревом, где М и N - целые числа, указывающие соответственно ширину и высоту блока цветности, при этом режим внутрикадрового кодирования содержит кодирование блока цветности на основе ранее кодированной видеообласти видеоизображения.
При еще одном примерном подходе раскрывается другой способ видеообработки. Способ содержит этап, на котором выполняют преобразование между блоком цветности видеообласти видео и кодированным представлением видео в соответствии с правилом; причем правило устанавливает, что блоку цветности, имеющий размер М x N, запрещено быть представленным в кодированном представлении, использующем объединенный режим межкадрового и внутрикадрового предсказания (inter and intra prediction, CIIP), который объединяет в себе межкадровое предсказание с внутрикадровым предсказанием, где М и N - целые числа, указывающие соответственно ширину и высоту блока цветности.
При еще одном другом примерном подходе раскрывается другой способ видеообработки. Способ содержит этап, на котором выполняют преобразование между видеообластью видео и кодированным представлением видео в соответствии с правилом, причем правило устанавливает, что сообщать ли и как сообщать о максимальном размере преобразования, применимому к видеообласти, зависит от типа режима кодирования, используемого для представления видеообласти в кодированном представлении, при этом тип режима кодирования является (i) режимом кодирования почти без потерь, в котором параметр квантования (QP), применяемый к видеообласти, меньше порога, (ii) режимом кодирования без потерь, в котором преобразование остаточных данных для видеообласти обходится, или (iii) режимом кодирования с потерями, в котором преобразование остаточных данных для видеообласти пропускается.
При еще одном примерном подходе вышеописанный способ может быть реализован устройством видеокодера, содержащим процессор.
При еще одном примерном подходе вышеописанный способ может быть реализован устройство видеодекодера, содержащим процессор.
При еще одном примерном подходе эти способы могут быть реализованы в виде исполняемых процессором команд и храниться на считываемом компьютером носителе программ.
Эти и другие подходы дополнительно описываются в настоящем документе.
Краткое описание чертежей
Фиг. 1 - пример инструмента внутрикадрового кодирования копии блока.
Фиг. 2 - пример блока, кодированного в режиме палитры.
Фиг. 3 - пример использования предиктора палитры для сообщения записей палитры.
Фиг. 4 - пример горизонтального и вертикального поперечных сканирований.
Фиг. 5 - примеры кодирования индексов палитры.
Фиг. 6 -пример 67 режимов внутрикадрового предсказания.
Фиг. 7 - примеры левого и верхнего соседей текущего блока.
Фиг. 8 - примеры формы фильтров ALF (цветность: ромб 5×5, яркость: ромб 7×7).
Фиг. 9 - пример вычисления субвыборочного Лапласиана.
Фиг. 10 - пример модифицированной классификации блоков на виртуальных границах.
Фиг. 11 - пример модифицированной фильтрации ALF для компонента яркости на виртуальных границах.
Фиг. 12 - примеры четырех одномерных 3-хпиксельных моделей для пиксельной классификации в EO.
Фиг. 13 - группирование вместе четырех полос и представление посредством начального положения их полос.
Фиг. 14 - верхний и левый соседние блоки, используемые при получении веса CIIP.
Фиг. 15 - преобразование яркости с помощью архитектуры масштабирования цветности.
Фиг. 16 - примеры SCIPU.
Фиг. 17A и 17B - блок-схемы примеров аппаратной платформы, используемой для реализации технологий, описанных в настоящем документе.
Фиг. 18 - блок-схема последовательности выполнения операций примерного способа видеообработки.
Фиг. 19 - примеры положений пространственных кандидатов на слияние.
Фиг. 20 - примеры пар кандидатов, рассматриваемых для проверки избыточности пространственных кандидатов на слияние.
Фиг. 21 - блок-схема последовательности выполнения операций примерного способа видеообработки.
Фиг. 22 - блок-схема примерной системы видеокодирования.
Фиг. 23 - блок-схема кодера, соответствующего некоторым вариантам осуществления настоящего раскрытия.
Фиг. 24 - блок-схема декодера, соответствующего некоторым вариантами осуществления настоящего раскрытия.
Осуществление изобретения
Настоящий документ представляет различные технологии, которые могут использоваться декодером изображения или битовых видеопотоков, чтобы повысить качество распакованного или декодированного цифрового видео или изображений. Для краткости, термин «видео» используется здесь содержащим как последовательность изображений (традиционно называемую «видео»), так и индивидуальные изображения. Дополнительно, видеокодер может также реализовывать эти технологии во время процесса кодирования, чтобы реконструировать декодированные кадры, используемые для дополнительного кодирования.
Заголовки разделов используются в настоящем документе для простоты понимания и не ограничивают варианты осуществления и технологии, описанные в соответствующих разделах. Кроме того, варианты осуществления от одного раздела могут объединяться с вариантами осуществления из других разделов.
1. Общие сведения
Этот документ связан с технологиями видеокодирования. Конкретно, он связан с кодированием палитры с использованием основных цветов, основываясь на представлении в видеокодировании. Он может быть применен к существующему стандарту видеокодирования, такому как HEVC или стандарт универсального видеокодирования (Versatile Video Coding, VVC), который должен быть окончательно принят. Он может быть также применим к будущим стандартам видеокодирования или видеокодеку.
2. Введение
Стандарты видеокодирования получили развитие, благодаря, прежде всего, разработке известных стандартов организаций ITU-T и ISO/IEC. Организация ITU-T разработала H.261 и H.263, а ISO/IEC разработала MPEG 1 и MPEG 4 Visual и эти две организации совместно создали H.262/MPEG-2 Video и H.264/MPEG-4 Усовершенствованное кодирование видео (AVC) и стандарты H.265/HEVC. Начиная с H.262, стандарты видеокодирования основываются на гибридной структуре видеокодирования, в которой используются временное предсказание плюс кодирование с преобразованием. Чтобы исследовать будущие технологии видеокодирования, следующие за HEVC, в 2015 г. совместно VCEG и MPEG была образована объединенная группа исследований по видео (Joint Video Exploration Team, JVET). С тех пор JVET был принято много новых способов, которые были помещены в справочное программное обеспечение под названием Объединенная модель исследования (Joint Exploration Model, JEM). В апреле 2018 г. была создана объединенная группа экспертов по видео (Joint Video Expert Team, JVET) между VCEG (Q6/16) и ISO/IEC JTC1 SC29/WG11 (MPEG) для работы над стандартом VVC, нацеленным на 50-типроцентное снижения скорости передачи по сравнению с HEVC.
2.1 Копирование внутрикадровых блоков
Копирование внутрикадровых блоков (IBC), известное также над названием ссылка на текущее изображения, было принято в расширениях кодирования контента экрана в HEVC (HEVC Screen Content Coding, HEVC-SCC) и текущей экспериментальной модели VVC (VTM-4.0). IBC расширяет концепцию компенсации движения от межкадрового кодирования до внутрикадрового кодирования. Как показано на фиг. 1, текущий блок предсказывается опорным блоком в том же самом изображении, когда применяется IBC. Отсчеты в опорном блоке должны быть уже реконструированы перед тем, как текущий блок кодируется или декодируется. Хотя IBC не слишком эффективно для большинства полученных с помощью камеры последовательностей, оно демонстрирует существенные улучшения кодирования для экранного контента. Причина состоит в том, что в экранном изображении контента существует множество повторяющихся образцов, таких как иконки и текстовые символы. IBC может эффективно удалить избыточность между этими повторяющимися образцами. В HEVC-SCC блок кодирования (coding unit, CU) межкадрового кодированная может применять IBC, если он выбирает текущее изображение в качестве своего опорного изображения. MV в этом случае переименовывается в блочный вектор (block vector, BV), и BV всегда имеет целочисленную пиксельную точность. Чтобы быть совместимым с основным профилем HEVC, текущее изображение помечается как «долговременное» опорное изображение в буфере декодированного изображения (Decoded Picture Buffer, DPB). Следует заметить, что точно также во многочисленных стандартах кодирования многопроекционного/трехмерного видеокодирования межпроекционное опорное изображение также помечается как «долговременное» опорное изображение.
После BV, чтобы обнаружить его опорный блок, предсказание может формироваться, копируя опорный блок. Разность может быть получена вычитанием опорных пикселей из первоначальных сигналов. Затем преобразование и квантование могут применяться так же, как в других режимах кодирования.
На фиг. 1 показано копирование внутрикадрового блока.
Однако, когда опорный блок находится за пределами изображения или перекрывается с текущим блоком или находится за пределами допустимой области, ограниченной некоторыми ограничениями, часть или все пиксельные значения не определяются. В основном, существуют два способа решить такую проблему. Один состоит в том, чтобы запретить такую ситуацию, например, в согласованности битового потока. Другой состоит в заполнении этих неопределенных пиксельных значений дополнениями. Нижеследующие обсуждения описывают решения подробно.
2.2 IBC в расширениях кодирования экранного контента HEVC
В расширениях кодирования экранного контента HEVC, когда блок использует текущее изображение в качестве ссылки, он должен гарантировать, что весь опорный блок находится в пределах доступной реконструированной области, как указано в нижеследующем тексте спецификации:
Переменные offsetX и offsetY получают следующим образом:
offsetX = (ChromaArrayType = 0) ? 0 : (mvCLX [0] &0x7 ? 2:0) … (8-104)
offsetY = (ChromaArrayType = 0) ? 0 : (mvCLX [1] &0x7 ? 2:0) … (8-105)
Требование согласованности битового потока состоит в том, что когда опорное изображение является текущим изображение, вектор mvLX движения яркости подчиняется следующим ограничениям:
- Когда процесс деривации для доступности блока порядка z-сканирования, как указано в пункте 6.4.1, инициируется с помощью (xCurr, yCurr), установленного равным (xCb, yCb), соседнее местоположение (xNbY, yNbY) яркости устанавливается равным (xPb + (mvLX[0] >> 2) - offsetX, yPb + (mvLX[1] >> 2) - offsetY) в качестве входных данных, выход будет равен TRUE (действительно).
- Когда процесс деривации для доступности блока порядка z-сканирования, как указано в пункте 6.4.1, инициируется с помощью (xCurr, yCurr), установленного равным (xCb, yCb), соседнее местоположение (xNbY, yNbY) яркости устанавливается равным (xPb + (mvLX[0] >> 2) + nPbW - 1 + offsetX, yPb + (mvLX[1] >> 2) +nPbH - 1 + offsetY) в качестве входных данных, выход будет равен TRUE (действительно).
- Должны быть действительны одно или оба из следующих ограничений:
- Значение (mvLX[0] >> 2) + nPbW + xB1 + offsetX меньше или равно 0.
- Значение (mvLX[1] >> 2) + nPbH + yB1 + offsetY меньше или равно 0.
- Следующее условие должно быть действительным:
(xPb + (mvLX[0] >> 2) + nPbSw - 1 + offsetX)/CtbSizeY - xCb / CtbSizeY <=
yCb / CtbSizeY - (yPb + (mvLX[1] >> 2) + nPbSh - 1 + offsetY)/CtbSizeY … (8-106)
Таким образом, случай, что опорный блок накладывается на текущий блок или опорный блок находится за пределами изображения, не произойдет. И нет никакой необходимости заполнять опорный блок или блок предсказания.
2.3 IBC в тестовом образце VVC
В текущем тестовом образце VVC, то есть, в проекте VTM-4.0, весь опорный блок должен быть вместе с текущим блоком дерева кодирования (coding tree unit, CTU) и не перекрываться текущим блоком. Таким образом, нет никакой необходимости заполнять опорный блок или блок предсказания дополнениями. Флаг IBC кодируется как режим предсказания текущего CU. Таким образом, в целом, для каждого CU существуют три режима предсказания, MODE_INTRA, MODE_INTER и MODE_IBC.
2.3.1 Режим слияния IBC
В режиме слияния IBC объединяется индекс, указывающий на запись в IBC, merge candidates list (список кандидатов на слияние), анализируется из битового потока. Конструкция списка на слияние IBC может быть получена в итоге в соответствии со следующей последовательностью этапов:
• Этап 1: Получение пространственных кандидатов
• Этап 2: Вставка кандидатов HMVP
• Этап 3: Вставка попарных средних кандидатов
При получении пространственных кандидатов на слияние максимум четыре кандидата на слияние выбираются из числа кандидатов, расположенных в позициях, показанных на фиг. 19. Порядок получения: A1, B1, B0, A0 и B2. Позиция B2 рассматривается, только когда любой PU в позиции A1, B1, B0, A0 недоступен (например, потому что он принадлежит другой секции или плитке) или не кодируется в режиме IBC. После того, как кандидат в позиции A1 добавлен, вставка остающихся кандидатов подвергается проверке на избыточность, которая гарантирует, что кандидаты с одинаковой информацией о движении исключаются из списка, за счет чего эффективность кодирования улучшается. Для снижения вычислительной сложности при упомянутой проверке избыточности рассматриваются не все возможные пары кандидатов. Вместо этого рассматриваются только пары, связанные стрелкой на фиг. 20, и к списку кандидат добавляется, только если у соответствующего кандидата, используемого при проверке на избыточность, нет той же самой информации о движении.
После вставки пространственных кандидатов, если размер списка на слияние IBC все еще меньше, чем максимальный размер списка на слияние IBC, могут быть вставлены кандидаты IBC из таблицы HMVP. Проверка на избыточность выполняется при вставке кандидатов HMVP.
Наконец, в список на слияние IBC вставляются попарные средние кандидаты.
Когда опорный блок, идентифицированный кандидатом на слияние, находится за пределами изображения или перекрывается с текущим блоком или находится за пределами реконструированной области или за пределами допустимой области, ограниченной некоторыми ограничениями, кандидат на слияние называется недопустимым кандидатом на слияние.
Заметим, что недопустимые кандидаты на слияние могут быть вставлены в список на слияние IBC.
2.3.2 Режим AMVP для IBC
В режиме AMVP для IBC индекс AMVP, указывающий на запись в списке AMVP для IBC анализируется из битового потока. Конструкция список AMVP для IBC может быть получена в итоге в соответствии со следующей последовательностью этапов:
• Этап 1: Получение пространственных кандидатов
• Проверка A0, A1 до тех пор, пока не будет найден подходящий кандидат
• Проверьте B0, B1, B2 до тех пор, пока не будет найден подходящий кандидат
• Этап 2: Вставка кандидатов HMVP
• Этап 3: Вставка нулевых кандидатов
После вставки пространственных кандидатов, если размер списка AMVP для IBC все еще меньше, чем максимальный размер списка AMVP для IBC, могут быть вставлены кандидаты IBC из таблицы HMVP.
Наконец, в список AMVP для IBC вставляются нулевые кандидаты.
2.4 Режим палитры
Основная идея, стоящая за режимом палитры, состоит в том, что отсчеты в CU представляются малым набором репрезентативных цветовых значений. Этот набор упоминается как палитра. А также возможно указать отсчет, который находится вне палитры, сообщая символ escape, сопровождаемый (возможно квантованными) значениями компонент. Этот вид отсчета вызывают выпадающим отсчетом. Режим палитры показан на фиг. 2.
На фиг. 2 показан пример блока, кодированного в режиме палитры.
2.5 Режим палитры в расширениях кодирования экранного контента HEVC (HEVC-SCC)
В режиме палитры в HEVC-SCC используется предсказывающий путь кодирования индексной карты и палитры.
2.5.1 Кодирование записей палитры
Для кодирования записей палитры обеспечивается функционирование предиктора палитры. Максимальный размер палитры, а также предиктора палитры, сообщается в SPS. В HEVC-SCC флаг palette_predictor_initializer_present_flag вводится в PPS. Когда этот флаг равен 1, записи для инициализации предиктора палитры сообщаются в битовом потоке. Предиктор палитры инициализируется в начале каждой строки CTU, каждой секции и каждой плитки. В зависимости от значения флага palette_predictor_initializer_present_flag, предиктор палитры устанавливается в исходное состояние на 0 или инициализируется, используя записи инициализатора предиктора палитры, сообщаемые в PPS. В HEVC-SCC инициализатору предиктора палитры с размером 0 разрешается явный запрет инициализации предиктора палитры на уровне PPS.
Для каждой записи в предикторе палитры сообщается флаг повторного использования, чтобы указать, является ли он частью текущей палитры. Это показано на фиг. 3. Флаги повторного использования посылаются, используя кодирование нулей длиной до выполнения. После этого количество новых записей палитры сообщается, используя экспоненциальный код Голомба порядка 0. И, наконец, сообщаются значения компонент для новых записей палитры.
На фиг. 3 показан пример использования предиктора палитры для сообщения записей палитры.
2.5.2 Кодирование индексов палитры
Индексы палитры кодируются, используя горизонтальное и вертикальное поперечные сканирования, как показано на фиг. 4. Порядок сканирования явно сообщается в битовом потоке, используя флаг palette_transpose_flag. Для остальной части подраздела предполагается, что сканирование является горизонтальным.
На фиг. 4 показаны примеры горизонтального и вертикального поперечных сканирований.
Индексы палитры кодируются, используя два основных режима отсчетов палитры: 'INDEX' и 'COPY_ABOVE'. Как объяснялось ранее, символ escape также сообщается как режим 'INDEX' и назначается индексу, равному максимальному размеру палитры. Режим сообщается, используя флаг, за исключением верхней строки или когда предыдущим режимом был 'COPY_ABOVE'. В режиме 'COPY_ABOVE' индекс палитры отсчетов в верхней строке копируется. В режиме 'INDEX' индекс палитры сообщается явно. Как для режима 'INDEX', так и для режима 'COPY_ABOVE' сообщается значение выполнения, которое указывает количество последовательных отсчетов, которые также кодируются, используя тот же самый режим. Когда символ escape является частью выполнения в режиме 'INDEX' или в режиме 'COPY_ABOVE', значения компонент escape сообщаются для каждого символа escape. Кодирование индексов палитры показано на фиг. 5.
Этот порядок синтаксиса осуществляется следующим образом. Сначала сообщается количество индексных значений для CU. Это сопровождается сообщением фактических индексных значений для всего CU, используя усеченное двоичное кодирование. Как количество индексов, так и индексные значения кодируются в байпасном режиме. Это группирует вместе связанные с индексом байпасные накопители. Затем режим отсчета палитры (в случае необходимости) и выполнение сообщаются чередующимся способом. Наконец, компонентные значения escape, соответствующие выпадающим отсчетам для всего CU, группируются и кодируются в байпасном режиме.
Дополнительный элемент синтаксиса, last_run_type_flag, сообщается после сообщения индексных значений. Этот элемент синтаксиса в сочетании с количеством индексов избавляет от необходимости сообщать значение выполнения, соответствующее последнему выполнению в блоке.
В HEVC-SCC режим палитры также разрешается для форматов 4:2:2, 4:2:0 и монохромного формата. Сообщение записей палитры и индексов палитры почти идентично для всех форматов цветности. В случае немонохромных форматов каждая запись палитры состоит из 3 компонентов. Для монохромного формата каждая запись палитры состоит из единственного компонента. Для подвыбранных направлений цветности отсчеты цветности связываются с индексами отсчетов яркости, которые являются делимыми на 2. После реконструкции индексов палитры для CU, если отсчет имеет только единственный компонент, связанный с ним, используется только первый компонент записи палитры. Единственная разница в сообщении предназначена для компонентных значений escape. Для каждого выдающего отсчета количество сообщенных компонентных значений escape может различаться в зависимости от количества компонентов, связанных с этим отсчетом.
В VVC используется структура кодирования с двоичным деревом при кодировании внутрикадровых секций, поэтому компонент яркости и два компонента цветности могут иметь различные палитры и индексы палитры. Кроме того, два компонента цветности совместно используют одни и те же палитру и индексы палитры.
На фиг. 5 показаны примеры кодирования индексов палитры.
2.6 Кодирование внутрикадрового режима в VVC
Чтобы получить произвольные направления границ, представленные в естественном видео, количество направленных внутрикадровых режимов в VTM5 расширяется от 33, как в HEVC, до 65. Новые направленные режимы, не входящие в HEVC, показаны красными точечными стрелками на фиг. 6, а планарный режим и режим DC остаются теми же самыми. Эти более плотные направленные режимы внутрикадрового предсказания применяются ко всем размерам блоков и для внутрикадровых предсказаний яркости и цветности.
В VTM5 несколько стандартных угловых режимов внутрикадрового предсказания адаптивно заменяются на широкоугольные режимы внутрикадрового предсказания для неквадратных блоков.
В HEVC каждый внутрикадрово кодированный блок имеет квадратную форму и длина каждой его стороны кратна степени 2. Таким образом, никакие операции разделения не требуются, чтобы сформировать внутрикадровый предиктор, используя режим DC. В VTM5 блоки могут иметь прямоугольную форму, которая в общем случае требует использования операции разделения для каждого блока. Чтобы избежать операций разделения для предсказания DC, используется только более длинная сторона, чтобы вычислить среднее значение для неквадратных блоков.
На фиг. 6 показан пример с 67 режимами внутрикадрового предсказания.
Чтобы поддерживать низкой сложность формирования списка наиболее вероятных режимов (most probable mode, MPM), способ кодирования внутрикадрового режима с 6 MPM используется, рассматривая два доступных соседних внутрикадровых режима. При создании списка MPM рассматриваются нижеследующие три подхода:
- Внутрикадровые режимы по умолчанию
- Соседние внутрикадровые режимы
- Полученные внутрикадровые режимы
Унифицированный список из 6 МРМ используется для блоков внутрикадрового кодирования независимо от того, применяются ли инструменты кодирования MRL и ISP. Список MPM создается, основываясь на внутрикадровых режимах левого и верхнего соседнего блока. Предположим, что режим левого блока обозначается как Left, а режим верхнего блока обозначается как Above, тогда унифицированный список MPM создается следующим образом (левый и верхний блоки показаны на фиг. 7):
На фиг. 7 показан пример левого и верхнего соседей текущего блока.
- Когда соседний блок не доступен, его внутрикадровый режим устанавливается по умолчанию как Planar (плоский).
- Если оба режима Left и Above являются неугловыми режимами:
• Список MPM → {Planar , DC, V, H, V-4, V+4}
- Если один из режимов Left и Above является угловым режимом, а другой является неугловым:
• Установите режим Max как больший режим в Left и Above
• Список MPM → {Planar, Max, DC, Max-1, Max+1, Max-2}
- Если оба режима Left и Above являются угловыми и они различаются:
• Установите режим Max как больший режим в Left и Above
- Если разность режимов Left и Above находится в диапазоне 2-62, включительно,
список MPM → {Planar, Left, Above, DC, Max-1, Max+1}
В противном случае,
список MPM → {Planar, Left, Above, DC, Max-2, Max+2}
- Если оба режима Left и Above являются угловыми и они одинаковы:
список MPM → {Planar, Left, Left-1, Left+1, DC, Left-2}
Кроме того, первый накопитель индексного кодового слова mpm является кодированным контекстом CABAC. В итоге, используются три контекста, соответствующие тому, является ли текущий внутрикадровый блок разрешенным MRL, разрешенным ISP или обычным внутрикадровым блоком.
Во время формирования списка из 6 MPM, усечение используется для удаления только уникальных режимов, которые могут быть включены в список MPM. Для энтропийного кодирования 61 режимов не-MPM используется усеченный двоичный код (Truncated Binary Code, TBC).
Для внутрикадрового кодирования режима цветности разрешаются в общей сложности 8 внутрикадровых режимов для внутрикадрового кодирования режима цветности. Эти режимы содержат пять традиционных внутрикадровых режимов и три режима линейной модели с перекрестными компонентами (cross-component linear model, CCLM, LM_A, и LM_L). Процесс получения и сообщения режима цветности показан в таблице 2-. Кодирование режима цветности напрямую зависит от режима внутрикадрового предсказания соответствующего блока яркости. Так как в секциях I разрешается структура разделения на отдельные блоки для компонентов яркости и цветности, один блок цветности может соответствовать множеству блоков яркости. Поэтому, для режима Chroma DM режим внутрикадрового предсказания соответствующего блока яркости, охватывающего центральное положение текущего блока цветности, наследуется напрямую.
2.7 Квантованная остаточная импульсно-кодовая дифференциальная модуляция блоков (Quantized residual Block Differential Pulse-code Modulation, QR-BDPCM)
В JVET-M0413 для эффективного кодирования экранного контента предлагается квантованная остаточная импульсно-кодовая дифференциальная модуляция (QR-BDPCM).
Направления предсказания, используемые в QR-BDPCM, могут быть вертикальным и горизонтальным режимами предсказания. Внутрикадровое предсказание выполняется на всем блоке демонстрационным путем копирования отсчета в направлении предсказания (горизонтальное или вертикальное предсказание), подобном внутрикадромому предсказанию. Разность квантуется и дельта между квантованной разностью и ее квантованным значением предиктора (горизонтального или вертикального) кодируется. Это может быть описано следующим: Для блока размера М (строки) × N (столбцы), пусть ri,j, 0 ≤ i ≤ M-1, 0 ≤ j ≤ N-1 является разностью предсказания после выполнения внутрикадрового предсказания горизонтально (копируя левое соседнее пиксельное значение через предсказанный блок построчно) или вертикально (копируя верхнюю соседнюю строку в каждую строку предсказанного блока), используя нефильтрованные отсчеты из числа отсчетов границ верхнего или левого блоков. Пусть Q(ri,j), 0 ≤ i ≤ M-1, 0 ≤ j ≤ N-1 обозначает квантованную версию разности rij, где разность является разностью между исходным блоком и предсказанными значениями блока. Затем блок DPCM применяется к квантованным остаточным отсчетам, получая в результате модифицированный массив R М × N с элементами rij. Когда сообщается вертикальный BDPCM:
… (2-7-1)
Для горизонтального предсказания применяют аналогичные правила и остаточные квантованные отсчеты получают следующим образом:
… (2-7-2)
Квантованные отсчеты разности rij посылаются декодеру.
На стороне декодера вышеупомянутые вычисления инвертируются, чтобы получить Q(ri,j), 0 ≤ i ≤ M-1, 0 ≤ j ≤ N-1. Для случая вертикального предсказания,
… (2-7-3)
Для горизонтального случая,
… (2-7-4)
Инверсные квантованные разности Q-1(Q(ri,j)) добавляются к значению предсказания внутрикадрового блока, чтобы получить реконструированные значения отсчетов.
Основное преимущество этой схемы состоит в том, что инверсный DPCM может выполняться непрерывно во время анализа коэффициентов, просто добавляя предиктор по мере того, как анализируются коэффициенты, или он может быть выполнен после анализа.
2.8 Адаптивный контурный фильтр
В VTM5 применяется адаптивный контурный фильтр (Adaptive Loop Filter, ALF) с адаптацией фильтра, основанной на блоке. Для компонента яркости один из 25 фильтров выбирается для каждого блока 4×4, основываясь на направлении и действии локальных градиентов.
2.8.1.1 Форма фильтра
В VTM5 используются две фильтра ромбовидной формы (как показано на фиг. 8). Ромбовидная форма 7х7 применяется для компонента яркости, а ромбовидная форма 5х5 применяется для компонентов цветности.
На фиг. 8 показаны примеры формы фильтров ALF (цветность: ромб 5×5, яркость: ромб 7×7).
2.8.1.2 Классификация блоков
Для компонента яркости каждый блок 4х4 категоризируется в одном из 25 классов. Индекс C классификации получают, основываясь на его направленности D и квантованном значении действия А, следующим образом:
С = 5D + A … (2-9-1)
Чтобы вычислить D и A, сначала вычисляются градиенты горизонтального, вертикального и двух диагональных направлений, используя одномерный Лапласиан:
… (2-9-2)
… (2-1)
… (2-9-4)
… (2-9-5)
Здесь индексы i и j относятся к координатам верхнего левого отсчета внутри блока 4х4 и R(i, j) указывает реконструированный отсчет в координате (i, j).
Чтобы понизить сложность классификации блоков, применяется вычисление подвыборочного одномерного Лапласиана. Как показано на фиг. 9, те же самые подвыборочные позиции используются для вычисления градиента во всех направлениях.
На фиг. 9 показан пример вычисления подвыборочного Лапласиана. (a) - подвыборочные позиции для вертикального градиента, (b) - подвыборочные позиции для горизонтального градиента, (c) - подвыборочные позиции для диагонального градиента, (d) подвыборочные позиции для диагонального градиента.
Затем максимальное и минимальное значения D градиентов в горизонтальном и вертикальном направлениях устанавливаются следующим образом:
, … (2-9-6)
Максимальное и минимальное значения градиента двух диагональных направлений устанавливаются следующим образом:
, … (2-9-7)
Для получения значения D направленности, эти значения сравниваются друг с другом и с двумя порогами t1 и t2:
Этап 1. Если оба и истинны, D устанавливается на 0.
Этап 2. Если , продолжить с этапа 3; в противном случае, продолжить с этапа 4.
Этап 3. Если , D устанавливается равным 2; в противном случае, D устанавливается равным 1.
Этап 4. Если , D устанавливается равным 4; в противном случае, D устанавливается равным 3.
Значение А действия вычисляется как:
… (2-9-8)
А дополнительно квантуется в диапазоне от 0 до 4, включительно, и квантованное значение обозначается как А.
Для компонентов цветности в изображении никакой способ классификации не применяется, то есть, для каждого компонента цветности применяется единый набор коэффициентов ALF.
2.8.1.3 Геометрические преобразования коэффициентов фильтра и значений сжатия
Прежде, чем фильтровать каждый из блоков яркости 4×4, геометрические преобразования, в зависимости от значений градиента, вычисленных для этого блока, к коэффициентам f(k, l) фильтра и к соответствующим значениям с(k, l) сжатия фильтра, применяются такие как вращение или диагональный и вертикальный переворот. Это эквивалентно применению этих преобразований к отсчетам в области поддержки фильтра. Идея состоит в том, чтобы сделать различные блоки, к которым применяется ALF, более похожими, выравнивая их направленность.
Представляются три геометрических преобразования, включая диагональный, вертикальный переворот и вращение:
Диагональный: fD(k,l) = cD(k,l) … (2-9-9)
Вертикальный переворот: fv(k,l) = f(k, K - I -1), cv(k,l) = c(k, K - I -1) … (2-9-10)
Вращение: fR(k,l) = f(k, K - I -1, k), cR(k,l) = c(k, K - I -1, k) … (2-9-11)
где K - размер фильтра и 0 ≤ k, l ≤ K - 1 координаты коэффициентов, такие что местоположение (0, 0) находится в левом верхнем углу и местоположение (K - 1, K - 1) находится в правом нижнем углу. Преобразования применяются к коэффициентам f(k,l) фильтра и к значениям с(k,l) сжатия в зависимости от значений градиентов, вычисленных для этого блока. Соотношение между преобразованием и четырьмя градиентами этих четырех направлений обобщается в итоге в следующей таблице.
2.8.1.4 Сигнализация параметров фильтра
В VTM5 параметры фильтра ALF сообщаются в наборе параметров адаптации (Adaptation Parameter Set, APS). В одном APS могут сообщаться до 25 наборов коэффициентов фильтра яркости и индексов значения сжатия, и до одного набора коэффициентов фильтра цветности и индексов значения сжатия. Чтобы сократить битовые издержки, коэффициенты фильтра с различной классификацией могут сливаться. В заголовке секции сообщаются индексы APS, используемые для текущей секции.
Индексы значений сжатия, которые декодируются из APS, позволяет определять значения сжатия, используя таблицу яркости (Luma) значений сжатия и таблицу цветности (Chroma) значений сжатия. Эти значения сжатия зависят внутренней битовой глубины. Более точно, таблица яркости значений сжатия и таблица цветности значений сжатия получают согласно следующим формулам:
AlfClipL, … (2-9-12)
AlfClipC … (2-9-13)
где B равно внутренней битовой глубине и N равно 4, что является количеством допустимых значений сжатия в VTM5.0.
Процесс фильтрации может управляться на уровне CTB. Флаг всегда сообщается, чтобы указать, применяется ли ALF к CTB яркости. CTB яркости может выбрать набор фильтров из 16 фиксированных наборов фильтров и наборов фильтров из APS. Индекс набора фильтров сообщается для CTB яркости, чтобы указать, какой набор фильтров применяется. 16 фиксированных наборов фильтров задаются и жестко кодируются как в кодере, так и в декодере.
Коэффициенты фильтров квантуются с помощью нормы, равной 128. Чтобы ограничить сложность умножения, соответствие битового потока применяется так, чтобы значение коэффициентов в нецентральном положении должно быть в диапазоне от -27 до 27 - 1, включительно. Коэффициент центральной позиции не сообщается в битовом потоке и считается равным 128.
2.8.1.5 Процесс фильтрации
На стороне декодера, когда для CTB разрешается ALF, каждый отсчет R(i,j) в пределах CU фильтруется, приводя в результате к значению R'(i,j), как показано ниже,
… (2-9-14)
где f(k,l) обозначает декодированные коэффициенты фильтра, K(x,y) является функцией сжатия и c(k,l) обозначает декодированные параметры сжатия. Переменные k и l изменяются между
2.8.1.6 Процесс фильтрации виртуальной границы для уменьшения линейного буфера
В VTM5, чтобы уменьшить требование к линейному буферу ALF, для отсчетов вблизи горизонтальных границ CTU используются модифицированная классификация блоков и фильтрация. С этой целью, виртуальная граница определяется как линия путем смещения горизонтальной границы CTU с «N» отсчетами, как показано на фиг. 10, где N равно 4 для компонента яркости и 2 для компонента цветности.
На фиг. 10 показан пример модифицированной классификации блоков на виртуальных границах.
Модифицированная классификация блоков применяется для компонента яркости, как показано на фиг. 11. Значение А действия соответственно масштабируется, учитывая сокращенное количество отсчетов, используемых при вычислении градиента одномерного Лапласиана.
Для процесса фильтрации для компонентов яркости и цветности на виртуальных границах используется операция aсимметричного заполнения. Как показано на фиг. 11, когда фильтруемый отсчет располагается ниже виртуальной границы, соседние отсчеты, которые располагаются выше виртуальной границы, заполняются. Таким образом, соответствующие отсчеты на других сторонах также симметрично заполняются.
На фиг. 11 показаны примеры модифицированной фильтрации ALF для компонента яркости на виртуальных границах.
2.9 Адаптивное смещение отсчетов (Sample Adaptive Offset, SAO)
Адаптивное смещение отсчетов (SAO) применяется к реконструированному сигналу после разблокирующего фильтра, используя смещения, определенные кодером для каждого CTB. Кодер HM сначала принимает решение о том, должен ли применяться процесс SAO к текущей секции. Если SAO применяется к секции, то каждый CTB классифицируется как один из пяти типов SAO, как показано в таблице 2-. Концепция SAO должно классифицировать пиксели по категориям и уменьшает искажение, добавляя смещение к пикселям каждой категории. Операция SAO содержит граничное смещение (Edge Offset, EO), которое использует граничные свойства для классификации пикселей по типу 1-4 SAO 1-4 и смещение полосы (Band Offset, BO), которое использует интенсивность пикселей для классификации пикселей по типу 5 SAO. Каждый применяемый CTB имеет параметры SAO, содержащие флаг sao_merge_left_flag, флаг sao_merge_up_flag, SAO тип и четыре смещения. Если флаг sao_merge_left_flag равен 1, то текущий CTB будет повторно использовать тип SAO тип и смещения CTB влево. Если флаг sao_merge_up_flag равен 1, то текущий CTB повторно использует SAO тип и смещения CTB сверху.
2.9.1 Операция каждого типа SAO
Граничное смещение использует четыре 3-хпиксельных одномерных образца для классификации текущего пикселя p путем рассмотрения информации о направлении границы, как показано на фиг. 12. Слева направо они выглядят так: 0 градусов, 90 градусов, 135 градусов и 45 градусов.
На фиг. 12 показаны примеры четырех одномерных 3-хпиксельных образцов для классификации пикселей в EO.
Каждый CTB классифицируется по одной из пяти категорий согласно таблице 2-7.
Смещение полосы (BO) классифицирует все пиксели в одной области CTB на 32 универсальных полосы, используя пять старших значащих битов пиксельного значения в качестве индекса полосы. Другими словами, диапазон интенсивности пикселей делится на 32 равных сегмента от нуля до максимального значения интенсивности (например, 255 для 8-битовых пикселей). Четыре смежных полосы группируются вместе и каждая группа указывается ее самой левой позицией, как показано на фиг. 13. Кодер ищет все позиции, чтобы получить группу с максимальным снижением искажений, компенсируя смещение каждой полосы.
На фиг. 13 показан пример, как четыре полосы группируются вместе представляются их начальной позицией полосы.
2.10 Объединенное межкадровое и внутрикадровое предсказание (Combined inter and intra prediction, CIIP)
В VTM5, когда CU кодируется в режиме слияния, если CU содержит по меньшей мере 64 отсчета яркости (то есть, ширина CU, умноженная на высоту CU, равна или больше 64) и если ширина CU и высота CU вместе меньше 128 отсчетов яркости, сообщается дополнительный флаг, чтобы указать, применяется ли режим объединенного межкадрового/внутрикадрового предсказания (CIIP) к текущему CU. В соответствии с названием, предсказание CIIP объединяет сигнал межкадрового предсказания с сигналом внутрикадрового предсказания. Сигнал межкадрового предсказания в режиме CIIP, Pinter получают, используя тот же самый процесс межкадрового предсказания, который применялся к регулярному режиму слияния; а сигнал внутрикадрового предсказания, Pintra получают, следуя процессу регулярного внутрикадрового предсказания с планарным режимом. Затем сигналы внутрикадрового и межкадрового предсказания объединяются, используя взвешенное усреднение, где значение веса вычисляется в зависимости от режимов кодирования верхнего и левого соседних блоков (показано на фиг. 14) следующим образом:
- Если верхний сосед доступен и внутрикадрово кодирован, то устанавливают isIntraTop на 1, в противном случае, устанавливают isIntraTop на 0;
- Если левый сосед доступен и внутрикадрово кодирован, то устанавливают isIntraLeft на 1, в противном случае, устанавливают isIntraLeft на 0;
- Если (isIntraLeft + isIntraLeft) равно 2, то вес устанавливают равным 3;
- В противном случае, если (isIntraLeft + isIntraLeft) равно 1, то вес устанавливают равным 2;
- В противном случае, вес набора к 1.
Предсказание CIIP формируется следующим образом:
PCIIP = ((4 - wt)*Pinter + wt*Pintra + 2) >> 2 … (3-2)
На фиг. 14 показан пример верхнего и левого соседних блоков, используемых в процессе получения веса CIIP.
2.11 Преобразование яркости с помощью масштабирования цветности (Luma mapping with chroma scaling, LMCS)
В VTM5 инструмент кодирования, называемый преобразованием яркости с помощью масштабирования цветности (LMCS), добавляется в качестве нового блока обработки перед контурными фильтрами. LMCS имеет два основных компонента: 1) внутриконтурное преобразование компонента яркости, основываясь на адаптивных кусочных линейных моделях; 2) для компонентов цветности применяется зависящее от яркости масштабирование разности цветности. На фиг. 15 показана архитектура LMCS с точки зрения декодера. Обведенные пунктиром блоки на фиг. 15 указывают, где обработка применяется в преобразованной области; и они содержат обратное квантование, обратное преобразование, внутрикадровое предсказание яркости и добавление предсказания яркости вместе с остатком яркости. Не помеченные блоки на фиг. 15 указывают, где обработка применяется в оригинальной (то есть, непреобразованной) области; и они содержат контурные фильтры, такие как разблокирующий фильтр, ALF и SAO, компенсированное предсказание движения, внутрикадровое предсказание цветности, добавление предсказания цветности вместе с разностью цветности, и хранение декодированных изображений в качестве опорных изображений. Блоки со штриховкой, показанные на фиг. 15 являются новыми функциональными блоками LMCS, включая прямое и обратное преобразование сигнала яркости и процесс масштабирования цветности, зависящий от яркости. Как большинство других инструментов в VVC, LMCS может разрешаться/запрещаться отключен на уровне последовательности, используя флаг SP.
На фиг. 15 показаны примеры преобразования яркости с помощью архитектуры масштабирования цветности.
2.12 Разделение двоичного дерева
В текущем проекте VVC, для секций I каждый CTU может быть разделен на блоки кодирования с отсчетами яркости 64x64, используя неявное разделение квадратичного дерева и эти блоки кодирования являются корнем двух отдельных coding_tree синтаксиса для яркости и цветности.
Так как двоичное дерево во внутрикадровом изображении позволяет применять различное разделение в дереве кодирования цветности по сравнению с деревом кодирования яркости, двоичное дерево представляет более длинный конвейер кодирования и диапазон значений QTBT MinQTSizeC, и MinBtSizeY и MinTTSizeY в дереве цветности позволяют иметь малые блоки цветности, такие как 2x2, 4x2 и 2x4. Это создает трудности в практической реализации декодера. Кроме того, несколько режимов предсказания, таких как CCLM, планарный и угловой режим нуждаются в мультиплексировании. Чтобы облегчить вышеупомянутые проблемы, малоразмерные блоки цветности (2x2/2x4/4x2) ограничиваются в двоичном дереве, представляя ограничение разделения.
2.13 Наименьший блок внутрикадрового предсказания цветности (Smallest chroma intra prediction unit, SCIPU) в JVET-O0050
Малый размер цветности неудобен для аппаратной реализации. В случаях двоичного дерева блоки цветности со слишком малым размером запрещаются. Однако, в случаях одиночного дерева, проект 5 VVC все еще позволяет блоки цветности 2x2, 2x4, 4x2. Чтобы ограничить размер блока цветности, в одиночном дереве кодирования, SCIPU определяется в JVET-O0050 как узел дерева кодирования, размер блока цветности которого больше или равен отсчетам цветности TH и имеет по меньшей мере один дочерний блок яркости, меньший, чем отсчеты 4ТН, где TH устанавливается равным 16 в этой заявке. В каждом SCIPU требуется, чтобы все CB были межкадрово кодированными или все CB были немежкадрово кодированными, то есть, не внутрикадрово кодированными или не IBC. В случае немежкадрово кодированного SCIPU дополнительно требуется, чтобы цветность немежкадрово кодированного SCIPU дополнительно не разделялась, а для яркости SCIPU разрешается дополнительное разделение. Таким образом, наименьший размер внутрикадрового СВ цветности является 16 отсчетами цветности и отсчеты цветности 2x2, 2x4 и 4x2 удаляются. Кроме того, масштабирование цветности не применяется в случае немежкадрово кодированного SCIPU.
Два примера SCIPU показаны на фиг. 16. На фиг. 16(a), один CB цветности из 8x4 отсчетов цветности и три CB яркости (4x8, 8x8, 4x8 CB яркости) формируют один SCIPU, поскольку разбиение троичного дерева (ternary tree, TT) из отсчетов цветности 8x4 может дать в результате CB цветности, меньшие, чем 16 отсчетов цветности. На фиг. 16(b), один CB цветности из отсчетов цветности 4х4 (левая сторона отсчетов цветности 8x4) и три CB яркости (СВ цветности 8x4, 4x4, 4x4) формируют один SCIPU, а другой CB цветности 4x4, отсчеты (правая сторона отсчетов цветности 8x4) и два CB цветности (СВ яркости 8x4, 8x4) формируют один SCIPU, потому что разбиение двоичного дерева (binary tree, BT) из 4x4 отсчетов цветности может дать в результате CB цветности, меньшие, чем 16 отсчетов цветности.
На фиг. 16 показаны примеры SCIPU.
Тип SCIPU получают, чтобы он был немежкадровым, если текущая секция является I-секцией или текущий SCIPU имеет в ней разбиение яркости 4x4 после дополнительного однократного разделения (потому что в VVC не разрешается межкадровый 4x4); в противном случае, тип SCIPU (межкадровый или немежкадровый) указывается одним сообщаемым флагом перед тем, как анализировать CU в SCIPU.
2.14 Ограничения для малого блока цветности в проекте 6 VVC
В проекте 6 (JVET-O2001-vE.docx) VVC ограничения для малых блоков цветности реализуются следующим образом (соответствующая часть отмечается полужирным курсивом).
2.14.1.1 Синтаксис блока кодирования
Разрешенный процесс квадроразделения
Входными данными процесса являются:
- размер cbSize блока кодирования в отсчетах яркости,
- глубина дерева мультитипа mttDepth,
- переменная treeType, определяющая, используется ли одиночное дерево (SINGLE_TREE) или двоичное дерево для разделения CTU, и, когда используется двоичное дерево, обрабатываются ли в настоящий момент (DUAL_TREE_LUMA) для яркости или компоненты цветности (DUAL_TREE_CHROMA) для компонентов цветности,
Результатом этого процесса является переменная allowSplitQt.
Переменную allowSplitQt получают следующим образом:
- Если одно или болееше следующих условий действительны, allowSplitQt устанавливается равным FALSE (ложь):
- treeType равно SINGLE_TREE или DUAL_TREE_LUMA и cbSize меньше или равно MinQtSizeY
- treeType равно DUAL_TREE_CHROMA и cbSize / SubWidthC меньше или равно MinQtSizeC
- mttDepth не равно 0
- treeType равно DUAL_TREE_CHROMA и (cbSize / SubWidthC) меньше или равно 4
- В противном случае, allowSplitQt устанавливается равным TRUE (действительно).
Допустимый процесс двоичного разделения
Входные данные для этого процесса:
- режим двоичного разделения btSplit,
- ширина cbWidth блока кодирования в отсчетах яркости,
- высота cbHeight блока кодирования в отсчетах яркости,
- местоположение (x0, y0) верхнего левого отсчета яркости рассматриваемого блока кодирования относительно верхнего левого отсчета яркости изображения,
- глубина mttDepth дерева мультитипа,
- максимальная глубина дерева мультитипа со смещением maxMttDepth,
- максимальный размер двоичного дерева maxBtSize,
- минимальный размер квадродерева minQtSize,
- индекс разделения partIdx,
- переменная treeType, определяющая, используется ли одиночное дерево (SINGLE_TREE) или двоичное дерево для разделения CTU, и когда двоичное дерево используется, обрабатываются ли в настоящий момент компонент яркости (DUAL_TREE_LUMA) или компоненты цветности (DUAL_TREE_CHROMA),
Результатом этого процесса является переменная allowBtSplit.
Таблица 6-2
Спецификация parallelTtSplit и cbSize, основанная на btSplit.
Переменные parallelTtSplit и cbSize получают согласно таблице 6-2.
Переменную allowBtSplit получают следующим образом:
- Если одно или более из следующих условий действительны, allowBtSplit устанавливается равным FALSE (ложь):
- cbSize меньше или равно MinBtSizeY
- cbWidth больше maxBtSize
- cbHeight больше maxBtSize
- mttDepth больше или равно maxMttDepth
- treeType равно DUAL_TREE_CHROMA и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 16
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE
- btSplit равен SPLIT_BT_VER
- y0 + cbHeight больше pic_height_in_luma_samples
- В пртоивном случае, если все последующие условия действительны, allowBtSplit устанавливается равный FALSE
- btSplit равно SPLIT_BT_VER
- cbHeight больше MaxTbSizeY
- x0 + cbWidth больше pic_width_in_luma_samples
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE
- btSplit равно SPLIT_BT_HOR
- cbWidth больше MaxTbSizeY
- y0 + cbHeight больше pic_height_in_luma_samples
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- cbWidth больше minQtSize
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE
- btSplit равно SPLIT_BT_HOR
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight меньше или равно pic_height_in_luma_samples
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE:
- mttDepth больше чем 0
- partIdx равен 1
- MttSplitMode [x0] [y0] [mttDepth - 1] равно parallelTtSplit
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE:
- btSplit равно SPLIT_BT_VER
- cbWidth меньше или равно MaxTbSizeY
- cbHeight больше MaxTbSizeY
- В противном случае, если все последующие условия действительны, allowBtSplit устанавливается равным FALSE:
- btSplit равно SPLIT_BT_HOR
- cbWidth больше MaxTbSizeY
- cbHeight меньше или равно MaxTbSizeY
- В противном случае, allowBtSplit устанавливается равный TRUE (действительно).
Допустимый процесс проичного разделения
Входные данные к этому процессу:
- режим троичного разделения ttSplit,
- ширина cbWidth блока кодирования в отсчетах яркости,
- высота cbHeight блока кодирования в отсчетах яркости,
- местоположение (x0, y0) верхнего левого отсчета яркости рассматриваемого блока кодирования относительно верхнего левого отсчета яркости изображения,
- глубина mttDepth дерева мультитипа
- максимальная глубина maxMttDepth дерева мультитипа со смещением,
- максимальный размер троичного дерева maxTtSize,
- переменная treeType, определяющая, используется ли одиночное дерево (SINGLE_TREE) или двоичное дерево, чтобы разделить CTU, и когда двоичное дерево используется, обрабатывается ли в настоящий момент компонент яркости (DUAL_TREE_LUMA) или компоненты цветности (DUAL_TREE_CHROMA) ,
- переменная modeType, указывающая, могут ли использоваться режим внутрикадрового кодирования (MODE_INTRA), режим IBC (MODE_IBC), режим кодирования палитры (MODE_PLT) и режим межкадрового кодирования (MODE_TYPE_ALL) или могут ли использоваться только режим внутрикадрового кодирования, IBC, режим палитры (MODE_TYPE_INTRA) или могут ли использоваться только режимы межкадрового кодирования (MODE_TYPE_INTER) для блоков кодирования внутри узла дерева кодирования.
Результатом этого процесса является переменная allowTtSplit.
Таблица 6-3. Спецификация cbSize, основанная на ttSplit.
Переменную cbSize получают согласно таблице 6-3.
Переменную allowTtSplit получают следующим образом:
- Если один или больше нижеследующих условий действительны, allowTtSplit устанавливается равным FALSE:
- cbSize меньше или равно 2 * MinTtSizeY
- cbWidth больше Мин (MaxTbSizeY, maxTtSize)
- cbHeight больше Мин (MaxTbSizeY, maxTtSize)
- mttDepth больше или равно maxMttDepth
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- treeType равно DUAL_TREE_CHROMA и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 32
- В противном случае, allowTtSplit устанавливается равным TRUE.
Флаг pred_mode_flag, равный 0, определяет, что текущий блок кодирования кодируется в режим межкадрового предсказания. Флаг pred_mode_flag, равный 1, определяет, что текущий блок кодирования кодируется в режиме внутрикадрового предсказания.
Когда флаг pred_mode_flag отсутствует, его получают следующим образом:
- Если cbWidth равно 4 и cbHeight равно 4, флаг pred_mode_flag принимают равным 1.
- В противном случае, флаг pred_mode_flag принимают равным 1, когда декодируется секция I, и принимают равным 0, когда декодируется секция P или B, соответственно.
Переменную CuPredMode [chType] [x] [y] получают следующим образом для x = x0.. x0 + cbWidth - 1 и y = y0.. y0 + cbHeight - 1:
- Если флаг pred_mode_flag равен 0, CuPredMode[chType][x][y] устанавливается равным MODE_INTER.
- В противном случае, (флаг pred_mode_flag равен 1), CuPredMode[chType][x][y] устанавливается равным MODE_INTRA.
Флаг pred_mode_ibc_flag, равный 1, определяет, что текущий блок кодирования кодируется в режиме IBC предсказания. Флаг pred_mode_ibc_flag, равный 0, определяет, что текущий блок кодирования не кодируется в режиме IBC предсказания.
Когда флаг pred_mode_ibc_flag отсутствует, он принимается следующим:
- Если флаг cu_skip_flag [x0] [y0] равен 1, cbWidth равно 4 и cbHeight равно 4, флаг pred_mode_ibc_flag принимается равным 1.
- В противном случае, если как cbWidth, так и cbHeight равны 128, флаг pred_mode_ibc_flag выводится равным 0.
- В противном случае, флаг pred_mode_ibc_flag принимается равным значению sps_ibc_enabled_flag, когда декодируется секция I, равным 0, когда декодируется секция P или B, соответственно.
Когда флаг pred_mode_ibc_flag равен 1, переменная CuPredMode[chType][x][y] принимается равной MODE_IBC для x = x0.. x0 + cbWidth - 1 и y = y0.. y0 + cbHeight - 1.
3. Проблемы
1. В настоящий момент IBC рассматривают как MODE_TYPE_INTRA и, таким образом, малый блок цветности запрещается, что ведет к ненужной потере эффективности кодирования.
2. В настоящий момент палитру рассматривают как MODE_TYPE_INTRA и, таким образом, малый блок цветности запрещается, что приводит к ненужной потере эффективности кодирования.
3. В настоящий момент ограничения для малого блока цветности не рассматривают цветовой формат подотчета.
4. В настоящий момент одни и те же ограничения режимов разделения и предсказания на малых блоках применяются ко всем форматам цветности. Однако, это может быть желательным для разработки различных механизмов ограничения на малых блоках в форматах цветности 4:2:0 и 4:2:2.
5. В настоящий момент сообщение флага режима палитры зависит от modeType, который не требуется, поскольку палитра может не применять ограничения для малых блоков.
6. В настоящий момент флаг режима IBC принимается равным 0 для секции P/B с флагом cu_skip_flag, равным 1, но MODE_TYPE, равным MODE_TYPE_INTRA, что недопустимо в анализе синтаксиса.
7. В настоящий момент, режим IBC яркости не4х4 не разрешается для блоков яркости SCIPU, которые могут не потребоваться и могут вызывать потерю эффективности кодирования.
8. Блок цветности 2xH все еще разрешается, который небезвредно по отношению к аппаратной реализации.
9. CIIP рассматривается как MODE_INTER, в то время как он использует внутрикадровое предсказание, что в некоторых случаях нарушает ограничение.
10. Когда применяется SCIPU, разность QP для цветности может сообщаться в зависимости от разделения яркости. Например, когда текущие размеры блока составляют 16×8 в отсчетах яркости и разделяются вертикальным TT, может быть применено локальное двоичное дерево. Это определяется, что qgOnC = qgOnC && (cbSubdiv + 2 <= cu_chroma_qp_offset_subdiv). Поэтому qgOnC устанавливается на ноль, если cbSubdiv + 2 <= cu_chroma_qp_offset_subdiv. Эта условная установка предполагает, что компонент цветности также разделяется посредством TT. С помощью локального двоичного дерева компонент цветности не может быть разделен, таким образом cbSubdiv может быть больше cu_chroma_qp_offset_subdiv. IsCuChromaQpOffsetCoded должно быть установлено на 0, чтобы позволить сигнализацию разности QP для цветности. Однако, IsCuChromaQpOffsetCoded не устанавливается на 0, потому что qgOnC устанавливается на 0.
11. Максимальный размер преобразования для кодирования без потерь может устанавливаться по-разному, исходя из максимального размера преобразования для кодирования с потерями.
4. Примеры технических решений и вариантов осуществления
Перечисленное ниже должно рассматриваться как примеры. Эти технологии не должны истолковываться в узком смысле. Кроме того, эти технологии могут объединяться любым способом.
В этом документе выражение «узел дерева кодирования MxN» указывает блок M×N, где М - ширина блока и N - высота блока, выраженные в отсчетах яркости, которые могут дополнительно разделяться, например, как QT/BT/TT. Например, блок мог быть узлом QT или узлом BT или узлом TT. Узел дерева кодирования может быть блоком кодирования (например, с тремя цветовыми компонентами для одного дерева, с двумя цветовыми компонентами цветности для кодирования цветности с двоичным деревом, и только цветовым компонентом яркости для кодирования яркости с двоичным деревом), или блоком кодирования яркости или блоком кодирования цветности. «Малый блок узла дерева кодирования» может указывать узел дерева кодирования с размером блока MxN, равным 32/64/128 в отсчетах яркости.
Если специально не упомянуто, ширина W и высота H для блока кодирования измеряется в отсчетах яркости. Например, блок кодирования MxN означает блок яркости MxN и/или два блока цветности (M/SubWidthC) x (N/SubHeightC), где SubWidthC и SubHeightC получают посредством формата цветности, как указано ниже.
1. Разделять ли и/или как разделять на малые блоки, может зависеть от цветовых форматов.
a. В одном примере для цветового формата 4:4:4 ограничения на размеры блоков цветности могут следовать таким ограничениям на блоки яркости.
b. В одном примере для цветового формата 4:2:2 ограничения на размеры блоков цветности могут следовать таким ограничениям для цветового формата 4:2:0.
c. В одном примере для формата цветности 4:0:0 и/или 4:4:4 ограничения разделения на малые блоки и/или режимы предсказания могут не применяться.
d. В одном примере ограничения разделения на малые блоки и/или режимы предсказания могут применяться по-разному для различных форматов цветности.
i. В одном примере для узла дерева кодирования MxN (такого как 8x8) с горизонтальным разделением BT, в формате цветности 4:2:2, горизонтальное разделение BT может быть разрешено как для блока цветности, так и для блока яркости, тогда как в формате цветности 4:2:0 горизонтальное разделение BT может быть разрешено для блока яркости, но запрещено для блока цветности.
ii. В одном примере для узла дерева кодирования MxN (такого как 16x4) с вертикальным разделением BT, в формате цветности 4:2:2, вертикальное разделение BT может быть разрешено как для блока цветности, так и для блока яркости, в то время как в формате цветности 4:2:0 вертикальное разделение BT может быть разрешено для блока яркости, но запрещено для блока цветности.
iii. В одном примере для узла дерева кодирования MxN (такого как 8х16) с горизонтальным разделением ТT, в формате цветности 4:2:2, горизонтальное разделение ТT может быть разрешено как для блока цветности, так и для блока яркости, в то время как в формате цветности 4:2:0 горизонтальное разделение BT может быть разрешено для блока яркости, но запрещено для блока цветности.
iv. В одном примере для узла дерева кодирования MxN (такого как 32) с вертикальным разделением ТT, в формате цветности 4:2:2 вертикальное разделение ТT может быть разрешено как для блока цветности, так и для блока яркости, в то время как в формате цветности 4:2:0 вертикальное разделение ТT может быть разрешено для блока яркости, но запрещено для блока цветности.
v. В одном примере для цветовых форматов 4:0:0 и/или 4:4:4 ограничения на малые блоки могут не применяться.
e. В одном примере, разрешать ли SCIPU, зависит от цветового формата.
i. В одном примере SCIPU разрешается для цветовых форматов 4:2:0 и 4:2:2.
ii. В одном примере SCIPU запрещается для 4:0:0 и/или 4:4:4.
1) В одном примере modeType всегда может быть равно MODE_TYPE_ALL для цветовых форматов 4:0:0 и/или 4:4:4.
2) В одном примере modeTypeCondition может быть всегда равно 0 для цветовых форматов 4:0:0 и/или 4:4:4.
2. Как определить режимы предсказания (и/или modeType) для (суб-)блоков узла дерева кодирования, может зависеть от форматов цветности.
a. В одном примере, если одно из приведенных ниже условий действительно, modeType (суб-)блоков, разделенных этим узлом дерева кодирования, может быть равно MODE_TYPE_ALL для формата цветности 4:2:2, в то время как для формата цветности 4:2:0 modeType может быть равно либо MODE_TYPE_INTRA, либо MODE_TYPE_INTER.
i. Узел дерева кодирования MxN (такой как 8x8) с горизонтальным разделением BT
ii. Узел дерева кодирования MxN (такой как 16x4) с вертикальным разделением BT
iii. Узел дерева кодирования MxN (такой как 8x16) с горизонтальным разделением TT
iv. Узел дерева кодирования MxN (такой как 32x4) с вертикальным разделением TT
3. Предлагается переименовать MODE_TYPE_INTRA в MODE_TYPE_NO_INTER и ограничить использование MODE_INTER.
a. В одном примере, когда modeType блока кодирования равно MODE_TYPE_NO_INTER, MODE_INTER может быть запрещен.
4. Предлагается переименовать MODE_TYPE_INTER в MODE_TYPE_NO_INTRA и ограничить использование MODE_INTRA.
a. В одном примере, когда modeType кодирующей ячейки равно MODE_TYPE_NO_INTRA, MODE_INTRA может быть запрещен.
5. Флаг ограничения режима может никогда не сообщаться в форматах цветности 4:2:2 и/или 4:0:0 и/или 4:4:4.
a. В одном примере, когда флаг ограничения режима отсутствует, он может быть принят равным 1.
i. Альтернативно, когда флаг режима ограничения отсутствует, он может быть принят равным 0.
6. Применять ли и/или как применять SCIPU на блоке кодирования MxN с М в качестве ширины блока и N в качестве высоты блока, может зависеть от того, является ли цветовой формат 4:2:0 или 4:2:2.
a. В одном примере, в цветовом формате 4:2:2 для блока кодирования MxN с М в качестве ширины блока и N в качестве высоты блока, SCIPU может быть разрешен, только если М, умноженное на N (обозначенное как M*N), равно 64 или 32.
b. В одном примере узел дерева кодирования с M*N = 128 никогда не может обрабатываться как блок SCIPU в цветовом формате 4:2:2.
c. В одном примере узел дерева кодирования с разделение BT и M*N = 64 никогда не может обрабатываться как блок SCIPU в цветовом формате 4:2:2.
d. В одном примере узел дерева кодирования с флагом split_qt_flag, равным 1, и M*N = 64, может быть блоком SCIPU в цветовом формате 4:2:2.
e. В одном примере узел дерева кодирования с разделение TT и M*N = 64 может быть обработан как блок SCIPU в цветовом формате 4:2:2.
f. В одном примере узел дерева кодирования с разделением BT и M*N = 32 может быть обработан как блок SCIPU в цветовом формате 4:2:2.
g. В приведенном выше описании для блока SCIPU в цветовом формате 4:2:2 modeTypeCondition всегда может быть равен 1.
h. В приведенном выше описании для блока SCIPU в цветовом формате 4:2:2 только MODE_TYPE_INTRA может быть разрешен как для текущего блока в родительском узле, так и для всех субблоков под дочерними краевыми узлами.
7. В цветовом формате 4:2:2 modeTypeCondition блока SCIPU всегда может быть равен 1.
a. В одном примере modeTypeCondition может быть равным 0 или 1 для цветового формата 4:2:2.
b. В одном примере для блоков SCIPU в цветовом формате 4:2:2 modeTypeCondition никогда не может быть равно 2.
8. В цветовом формате 4:2:2 modeType блока SCIPU всегда может быть равно MODE_TYPE_INTRA.
a. В одном примере modeType может быть равно MODE_TYPE_ALL или MODE_TYPE_INTRA в цветовом формате 4:2:2.
b. В одном примере для блоков SCIPU в цветовом формате 4:2:2 MODE_TYPE_INTER может быть запрещен.
9. Разрешается ли разделение на блоки может зависеть от modeType, и/или размера блока.
a. В одном примере, разрешается ли разделение BT и/или TT для блока, может зависеть от modeType.
i. В одном примере, если modeType равно MODE_TYPE_INTER, то разделение BT может быть запрещено для текущего блока кодирования (например, allowBtSplit устанавливается равным FALSE).
ii. В одном примере, если modeType равно MODE_TYPE_INTER, то разделение TT может быть запрещено для текущего блока кодирования (например, allowTtSplit устанавливается равным FALSE).
b. В одном примере, разрешается ли разделение BT и/или TT для блока, может зависеть от modeType и размера блока.
i. В одном примере для блока кодирования MxN с М в качестве ширины блока и N в качестве высоты блока, когда M*N меньше или равно 32 и modeType равно MODE_TYPE_INTER, разделение BT может быть запрещено (например, allowBtSplit устанавливается равным FALSE).
ii. В одном примере для блока кодирования MxN с М в качестве ширины блока и N в качестве высоты блока, когда M*N меньше или равно 64 и modeType равно MODE_TYPE_INTER, разделение TT может быть запрещено (например, allowTtSplit устанавливается равным FALSE).
10. Когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER, разделение дерева кодирования может быть ограничиваться.
a. В одном примере, когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER, может быть запрещено разделение BT.
b. В одном примере, когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER, может быть запрещено разделение TT.
c. В одном примере, когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER, может быть запрещено разделение QT.
d. В одном примере, когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER и размер блока яркости меньше или равен 32, разделение BT может быть запрещено.
e. В одном примере, когда modeTypeCurr дерева кодирования равно MODE_TYPE_INTER и размер блока яркости меньше или равен 64, разделение TT может быть запрещено.
11. Блок кодирования с treeType, равным DUAL_TREE_LUMA, может быть кодирована в межкадровом режиме.
a. В одном примере блок кодирования, кодированный в режиме межкадрового кодирования, то есть, MODE_INTER может содержать только компонент яркости даже для цветовых форматов с многочисленными цветовыми компонентами.
b. В одном флаг примере pred_mode_flag может потребоваться для анализа блока DUAL_TREE_LUMA.
c. В одном примере для блока DUAL_TREE_LUMA, кодированного в межкадровом режиме могут также применяться те же самые ограничения межкадрового режима, что и для SINGLE_TREE.
i. В одном примере блок межкадрового кодирования 4x4 DUAL_TREE_LUMA может быть запрещен.
12. Блоки внутрикадрового кодирования цветности intra (и/или IBC) с шириной, равной М (таким как M=2) отсчетов цветности, не могут разрешаться.
a. В одном примере 2xN (таком как N <= 64) блоки внутрикадрового кодирования цветности в двоичном дереве разрешены быть не могут.
i. В одном примере, когда treeType равно DUAL_TREE_CHROMA и ширина блока равна 4 отсчетам цветности, вертикальное разделение BT может быть запрещено.
ii. В одном примере, когда treeType равно DUAL_TREE_CHROMA и ширина блока равна 8 отсчетам цветности, вертикальное разделение TT может быть запрещено.
b. В одном примере 2xN (таком как N <= 64) блоки внутрикадрового кодирования цветности (и/или IBC) в одиночном дереве разрешены быть не могут.
i. В одном примере, для MxN (такого как M=8 и N <=64) узел дерева кодирования с вертикальным разделением BT может применяться в одном из указанных ниже процессов.
1) Вертикальное разделение BT может быть запрещено для блоков цветности 4xN или 4x (N/2), но разрешено для блоков яркости 8xN.
2) Блок цветности 4xN или 4x (N/2) может не иметь вертикального разделения BT и он может быть кодирован посредством MODE_INTRA или MODE_IBC.
3) Вертикальное разделение BT может быть разрешено как для блока яркости 8xN, так и для блока цветности 4xN или 4x (N/2), но оба блока яркости и цветности не могут кодироваться посредством MODE_INTRA (например, могут кодироваться посредством MODE_INTER или MODE_IBC).
ii. В одном примере для узла дерева кодирования MxN (такого как M=16 и N <=64) с вертикальным разделением TT может быть применен один из указанных ниже процессов.
1) Вертикальное разделение TT может быть запрещено для блока цветности 8xN или 8x (N/2), но разрешено для блока яркости 16xN.
2) Блок цветности 8xN или 8x (N/2) может не иметь вертикального разделения TT и кодироваться посредством MODE_INTRA, или MODE_IBC.
3) Вертикальное разделение TT может быть разрешено как для блока яркости 16xN, так и для блока цветности 8xN или 8x (N/2), но и блоки яркости и цветности не могут кодироваться посредством MODE_INTRA (например, могут кодироваться посредством MODE_INTER или MODE_IBC).
13. Режим IBC может быть разрешен для блоков яркости и/или цветности, независимо от того, являются ли они блоками малого размера.
a. В одном примере режим IBC может быть разрешен для блоков яркости, содержащих блоки яркости 8x4 / 8x8/16x4 и 4xN (такие как N <=64), даже если modeType равен MODE_TYPE_INTRA.
b. В одном примере режим IBC может быть разрешен для блоков цветности, даже если modeType равен MODE_TYPE_INTRA.
14. Сигнализация флага режима предсказания IBC может зависеть от типа режима предсказания (например, MODE_TYPE_INTRA).
a. В одном примере флаг режима предсказания IBC для блока неSKIP (например, блока кодирования, который не кодируется посредством режима пропуска) может быть явно сообщен в битовом потоке, когда treeType не равно DUAL_TREE_CHROMA и modeType равно MODE_TYPE_INTRA.
15. Флаг режима предсказания IBC может быть принят в зависимости от флага SKIP CU и типа режима (например, modeType).
a. В одном примере, если текущий блок кодируется с помощью режима SKIP (такого как флаг cu_skip_flag равен 1) и modeType равно MODE_TYPE_INTRA, флаг режима предсказания IBC (такой как pred_mode_ibc_flag) может быть принят равным 1.
16. Явная сигнализация флага режима палитры может не зависеть от modeType.
a. В одном примере сообщение флага режима палитры (такой как pred_mode_plt_flag) может зависеть от типа секции, размера блока, режима предсказания и т.д., но не имеет значения, каков modeType.
b. В одном примере флаг режима палитры (такой как pred_mode_plt_flag) принимается равным 0, когда modeType равен MODE_TYPE_INTER или MODE_TYPE_INTRA.
17. Режим IBC может быть разрешен, когда modeType равно MODE_TYPE_INTER
a. В одном примере IBC цветности может быть запрещен, когда modeType равно MODE_TYPE_INTRA.
b. В одном примере режим IBC может быть разрешен для использования, когда modeType равно MODE_TYPE_INTRA или MODE_TYPE_INTER.
c. В одном примере режим IBC может быть разрешен для использования независимо от того, каков modeType.
d. В одном примере, в пределах одного SCIPU, могут быть разрешены оба режима, IBC и межкадровый режим.
e. В одном примере размер блока цветности IBC всегда может соответствовать размеру соответствующего блока яркости.
f. В одном примере, когда modeType равно MODE_TYPE_INTER и размер блока кодирования равен 4x4 по яркости, сообщение флага pred_mode_ibc_flag может быть пропущено и флаг pred_mode_ibc_flag может принят равным 1.
18. Режим палитры может быть разрешен для использования, когда modeType равен MODE_TYPE_INTER
a. В одном примере палитра цветности может быть запрещена, когда modeType равно MODE_TYPE_INTRA.
b. В одном примере режим IBC может быть разрешен для использования, когда modeType равно MODE_TYPE_INTRA или MODE_TYPE_INTER.
c. В одном примере режим IBC может быть разрешен для использования независимо от того, каков modeType.
d. В одном примере режим палитры может быть разрешен для использования, когда modeType равно MODE_TYPE_INTRA или MODE_TYPE_INTER.
e. В одном примере режим палитры может быть разрешен для использования независимо от того, каков modeType.
f. В одном примере в пределах одного SCIPU могут быть разрешены оба режима, палитры и межкадрового кодирования.
g. В одном примере в пределах одного SCIPU режимы палитры, IBC, межкадрового кодирования все могут быть разрешены.
h. В одном примере размер блока цветности палитры может всегда соответствовать размеру соответствующего блока яркости.
i. В одном примере, когда modeType равно MODE_TYPE_INTER и размер блока кодирования равен 4x4 по яркости, сигнализация флага pred_mode_plt_flag может быть пропущена, и pred_mode_plt_flag может быть принят равным 1.
j. В одном примере, когда modeType равно MODE_TYPE_INTER и размер блока кодирования равен 4x4 по яркости, одно сообщение может быть послано, чтобы указать, когда текущий режим предсказания является режимом IBC или палитры.
k. В одном примере разрешение/запрет режима палитры может зависеть от типов секций и modeType.
i. В одном примере для I секций с MODE_TYPE_INTRA режим палитры может быть разрешен.
ii. В одном примере для секций P/B с MODE_TYPE_INTER режим палитры может быть разрешен.
19. Когда режим палитры разрешен, локальное двоичное дерево может быть запрещено.
a. В одном примере, когда режим палитры разрешен, modeTypeCondition может всегда устанавливаться равным 0.
20. Для малых блоков цветности с шириной, равной М (например, М = 2), или высотой, равной N (например, N=2), разрешенные режимы внутрикадрового предсказания могут быть ограничены, чтобы отличаться от тех, которые разрешены для больших блоков цветности.
a. В одном примере может использоваться только подмножество режима внутрикадрового предсказания из числа доступных режимов внутрикадрового предсказания цветности.
b. В одном примере может использоваться только режим INTRA_DC.
c. В одном примере может использоваться только режим INTRA_PLANAR.
d. В одном примере может использоваться только режим INTRA_ ANGULAR18.
e. В одном примере может использоваться режим только INTRA_ANGULAR50.
f. В одном примере режимы CCLM могут быть запрещены.
21. Для малых блоков цветности с шириной, равной М (например, М = 2), или высотой, равной N (например, N=2), типы преобразования могут ограничиваться, чтобы отличаться от разрешенных больших блоков цветности.
a. В одном примере может использоваться только пропуск преобразования.
b. В одном примере может использоваться только одномерное преобразование.
c. В одном примере запрещаются инструменты кодирования, которые поддерживают многочисленные типы преобразований.
i. Альтернативно, сообщение инструментов кодирования, которые поддерживают многочисленные типы преобразований, пропускается.
22. CIIP можно рассматриваться как MODE_TYPE_INTRA.
a. В одном примере режим CIIP может быть разрешен, когда используется разделение двоичного дерева.
i. В одном примере может быть разрешен режим CIIP, когда типом CU является DUAL_TREEE_CHROMA.
b. Альтернативно, CIIP может рассматриваться как MODE_TYPE_INTER
i. В одном примере, когда ширина блока цветности равна М (например, M=2), режим CIIP может быть запрещен.
ii. В одном примере, когда ширина блока цветности равна М (например, M=2), режимы внутрикадрового предсказания для цветности в CIIP, могут ограничиваться простым режимом внутрикадрового предсказания.
1) В одном примере INTRA_DC может использоваться для внутрикадрового предсказания цветности, когда ширина блока цветности равна М (например, M=2).
2) В одном примере INTRA_ ANGULAR18 может использоваться для внутрикадрового предсказания цветности, когда ширина блока цветности равна М (например, M=2).
3) В одном примере INTRA_ANGULAR50 может использоваться для внутрикадрового предсказания цветности, когда ширина блока цветности равна М (например, M=2).
iii. В одном примере, режимы внутрикадрового предсказания цветности в CIIP могут ограничиваться простым режимом внутрикадрового предсказания.
1) В одном примере INTRA_DC может использоваться для внутрикадрового предсказания цветности.
2) В одном примере режим INTRA_ANGULAR18 может использоваться для внутрикадрового предсказания цветности.
3) В одном примере режим INTRA_ANGULAR50 может использоваться для внутрикадрового предсказания цветности.
23. Для приведенных выше пунктов, переменные М и/или N могут задаваться или сообщаться.
a. В одном примере М и/или N могут дополнительно зависеть от цветовых форматов (например, 4:2:0, 4:2:2, 4:4:4).
24. modeType может быть расширен, чтобы охватывать больше типов.
a. В одном примере modeType может быть MODE_TYPE_IBC. Когда modeType равно MODE_TYPE_IBC, режим предсказания принимают равным IBC.
i. В одном примере в этом случае pred_mode_flag не сообщается в этом случае.
ii. В одном примере в этом случае флаг pred_mode_ibc_flag не сообщается.
iii. В одном примере в этом случае флаг pred_mode_plt_flag не сообщается.
b. В одном примере modeType может быть MODE_TYPE_PALETTE. Когда modeType равно MODE_TYPE_PALETTE, режим предсказания принимают соответствующим режиму палитры.
i. В одном примере в этом случае флаг pred_mode_flag не сообщается.
ii. В одном примере в этом случае флаг pred_mode_ibc_flag не сообщается.
iii. В одном примере в этом случае флаг pred_mode_plt_flag не сообщается.
c. В одном примере флаг mode_constraint_flag может быть заменен индексом, чтобы сообщить, какие из разрешенных modeTypes используются.
25. В одном примере, разрешается ли разделение QT для блока с размерами W×H, может зависеть от modeType, объединенного с размерами.
a. Например, если modeType равен MODE_TYPE_INTER и W равно 8 и H равно 8, разделение QT запрещается.
26. В одном примере, разрешается ли вертикальное разделение TT для блока с размерами W×H, может зависеть от modeType, объединенного с размерами.
a. Например, если modeType равен MODE_TYPE_INTER и W равно 16 и H равно 4, вертикальное разделение TT запрещается.
27. В одном примере, разрешается ли горизонтальное разделение TT для блока с размерами W×H, может зависеть от modeType, объединенного с размерами.
a. Например, если modeType равно MODE_TYPE_INTER и W равно 4 и H равно 16, горизонтальное разделение TT запрещается.
28. В одном примере, разрешается ли вертикальное разделение BT для блока с размерами W×H, может зависеть от modeType, объединенного с размерами.
a. Например, если modeType равно MODE_TYPE_INTER и W равно 8 и H равно 4, вертикальное разделение BT запрещается.
29. В одном примере, разрешается ли горизонтальное разделение TT для блока с размерами W×H, может зависеть от modeType, объединенного с размерами.
a. Например, если modeType равно MODE_TYPE_INTER и W равно 4 и H равно 8, горизонтальное разделение BT запрещается.
30. В одном примере, принимают ли режим предсказания CU посредством modeType, может зависеть от цветовых компонентов и/или размеров блока W×H.
a. Например, режим предсказания CU цветности принимают посредством modeType; но режим предсказания CU яркости сообщается вместо принятия его посредством modeType.
i. Например, режим предсказания CU яркости сообщается вместо его принятия посредством modeType если W> 4 или H> 4.
31. Когда применяется SCIPU, возможно ли и/или как сообщать информацию, связанную с разностью QP первого компонента, может зависеть от способа разделения первого компонента.
a. В одном примере, когда применяется SCIPU, может и/или как сообщать информацию, связанную с разностью QP первого компонента, может зависеть от способа разделения первого компонента, и не зависеть от способа разделения второго компонента.
b. В одном примере первым компонентом является яркость, а вторым компонентом является цветность.
c. В одном примере первым компонентом является цветность, а вторым компонентом является яркость.
32. Любая переменная, связанная с разностью QP первого компонента, не может модифицироваться во время процесса декодирования или анализа второго компонента, когда применяется двоичное дерево и/или локальная структура кодирования двоичного дерева.
a. В одном примере локальная структура кодирования двоичного дерева может использоваться в соответствии с SCIPU.
b. В одном примере первым компонентом является яркость, а вторым компонентом является цветность.
i. Переменной может быть IsCuQpDeltaCoded.
c. В одном примере первым компонентом является цветность, а вторым компонентом является яркость.
i. Переменной может быть IsCuChromaQpOffsetCoded.
33. Когда применяется SCIPU, информация, связанная с разностью QP компонента (такого как яркость или цветность), может сообщаться самое большее один раз в определенной области, в которой компонент яркости и компонент цветности требуются для совместного использования одного и того же типа режима (такого как MODE_TYPE_INTER или MODE_TYPE_INTRA).
a. В одном примере определенная область рассматривается как группа квантования.
34. Блоки MxN внутрикадрового кодирования цветности, где М - ширина блока и N - высота блока, не могут быть разрешены.
a. В одном примере предсказание DC может использоваться для внутрикадрового предсказания цветности блоков MxN, где, например, М = 2 отсчетов цветности, N = 8 и/или 16 и/или 32 отсчетов цветности.
i. В одном примере реконструированные соседние пиксели не могут использоваться для предсказания DC.
ii. В одном примере соседние опорные пиксели могут быть установлены равными 1 <<(bitDepth - 1) для предсказания DC.
iii. В одном примере PDPC не может быть применяться для предсказания DC.
iv. В одном примере информация о режиме DC не может кодироваться для блока MxN внутрикадрового предсказания цветности, но ее получают.
b. В одном примере предсказание CCLM может использоваться для внутрикадрового предсказания цветности блока MxN, где, например, М = 2 отсчетов цветности, N = 8 и/или 16 и/или 32 отсчетов цветности.
i. В одном примере реконструированные соседние пиксели не могут использоваться для предсказания CCLM.
ii. В одном примере, для предсказания CCLM predC = a*recL + b, где значение predC предсказания цветности получают из реконструированного значения recL яркости, параметры a и b могут быть инициализированы как фиксированные значения по умолчанию (например, a=0, b=512) в начале видеоблока, такого как SPS/VPS/PPS/изображение/субизображение/секция/плитка/элемент/ строка CTU/CTU/VPDU/CU/PU/TU.
1) В одном примере таблица обслуживания в порядке поступления может поддерживаться на лету, чтобы обновлять параметры а и b CCLM.
iii. В одном примере PDPC не может применяться для предсказания CCLM.
iv. В одном примере информация о режиме CCLM не может кодироваться для блока MxN внутрикадрового предсказания цветности, но ее получают.
v. Альтернативно, предложенные способы могут применяться к другим видам кодированных блоков цветности CCLM с шириной, не равной М, или с высотой, не равной N.
1) В одном примере параметры CCLM ранее кодированных блоков могут использоваться для текущего блока вместо того, чтобы получать их, основываясь на информации о восстановлении соседних блоков текущего блока.
2) В одном примере параметры CCLM могут храниться в таблице и непрерывно обновляться, например, используя FIFO.
c. В одном примере блоки MxN внутрикадрового кодирования цветности не могут разрешаться в двоичном дереве, например, М = 2 отсчета цветности, N = 8 и/или 16 и/или 32 отсчетов цветности.
i. В одном примере, когда treeType равно DUAL_TREE_CHROMA, разделение X могут быть запрещено для узла дерева кодирования с размером, равным (M*a) x (N*b), где M*a - ширина узла дерева кодирования, выраженная в отсчетах цветности, и N*b - высота узла дерева кодирования вершины, выраженная в отсчетах цветности.
1) В одном примере X является вертикальным разделением BT, а = 2, b = 1
2) В одном примере X является горизонтальным разделением BT,а = 1, b = 2
3) В одном примере X является вертикальным разделением TT, а = 4, b = 1
4) В одном примере X является горизонтальным разделением TT, а = 1, b = 4
d. В одном примере блоки MxN внутрикадрового кодирования цветности не могут разрешаться в одиночном дереве, например, М = 2 отсчетов цветности, N = 8 и/или 16 и/или 32 отсчета цветности.
i. В одном примере в одиночном дереве разделение Х может быть запрещено для компонентов цветности узла дерева кодирования с размером, равным (M*a*subWidthC) x (N*b*subHeightC), где M*a - ширина узла дерева кодирования, выраженная в отсчетах яркости, N*b - высота узла дерева кодирования, выраженная в отсчетах яркости, и subWidthC и subHeightC - отношение суботсчетов цветности по размеру ширины и высоты, например, subWidthC и subHeightC равны 2 для формата цветности 4:2:0.
1) В одном примере, X = вертикальное разделение BT, а = 2, b = 1
2) В одном примере, X = вертикальное разделение TT, а = 4, b = 1
3) В одном примере, X = горизонтальное разделение BT, а = 1, b = 2
4) В одном примере, X = горизонтальное разделение TT, а = 1, b = 2
5) В одном примере, X = горизонтальное разделение TT, а = 1, b = 4
6) В одном примере неразделенный блок цветности может иметь размер (M*a) x (N*d).
7) В одном примере неразделенный блок цветности может быть определен как MODE_TYPE_INTRA и только внутрикадровое предсказание (и/или IBC и/или режимы PLT) может быть разрешено для этого блока цветности.
8) В одном примере разделение X может быть разрешено для компонентов яркости этого узла дерева кодирования, например, узел дерева кодирования яркости может быть дополнительно разделен на многочисленные дочерние узлы яркости вершины, и каждый дочерний узел яркости может быть определен в MODE_TYPE_INTER, в то время может быть разрешено только межкадровое предсказание (и/или режим IBC).
9) Альтернативно, компонент цветности может дополнительно быть разделен вместе со связанным компонентом яркости, но тип режима может быть равен MODE_TYPE_INTER и может разрешаться только режим межкадрового предсказания (и/или режим IBC).
ii. В одном примере блоки MxN внутрикадрового предсказания цветности не могут разрешаться в CIIP.
1) В одном примере CIIP не может разрешаться для блока кодирования с размером, равным (M*subWidthC) x (N*subHeightC), выраженным в отсчетах яркости.
a) Когда CIIP не разрешено, соответствующий элемент синтаксиса, такой как флаг CIIP, не может быть кодирован в битовом потоке.
2) В одном примере процесс смешивания цветности в CIIP может быть выполнен только с, предсказаниями, полученными от межкадровой части.
a) В одном примере, только внутрикадровое предсказание яркости может применяться к CIIP-кодированному блоку, в то время как внутрикадровое предсказание цветности не может применяться к CIIP-кодированному блоку с размером, равным (M*subWidthC) x (N*subHeightC), выраженным в отсчетах яркости.
3) В одном примере предсказание DC может использоваться для внутрикадрового предсказания цветности блока MxN для блока CIIP, как описано в п. 34(a).
4) В одном примере предсказание CCLM может использоваться для внутрикадрового предсказания цветности блока MxN CIIP, как описано в п. 34(b).
Взаимосвязь между losslessSizeY и размером maxCTB/maxTBsize/maxTS
35. Максимальный размер преобразования может сообщаться и/или предполагаться различными способами для кодирования без потерь (и/или для кодирования почти без потерь) и кодирования с потерями.
a. В одном примере максимальный размер преобразования для кодирования без потерь и/или кодирования почти без потерь может ссылаться на другие термины, такие как «максимальный остаточный размер» или «максимальный репрезентативный размер», так как он не содержит никакого преобразования. В настоящем раскрытии он может упоминаться как «maxLosslessTbSizeY».
b. В одном примере кодирование без потерь для блока может упоминаться как флаг cu_transquant_bypass_flag для этого блока, равный 1.
c. В одном примере кодирование почти без потерь для блока может упоминаться как кодирование с меньшим QP, чем заданный порог.
i. В одном примере порог может указываться в заголовке DPS/VPS/SPS/PPS/плитки/секции/элемента.
d. В одном примере кодирования почти без потерь для блока может упоминаться как кодирование с QP, меньшим, чем заданный порог и флаг transform_skip_flag равен 1 для этого блока.
i. В одном примере порог может указываться в заголовке DPS/VPS/SPS/PPS/плитки/секции/элемента.
e. Первый максимальный размер преобразования для кодирования без потерь и/или кодирования почти без потерь (например, maxLosslessTbSizeY) может быть установлен при условии второго максимального размера преобразования, который может использоваться для кодирования с потерями, и/или максимального размера дерева кодирования и/или максимального размера пропуска преобразования.
f. Максимальный размер преобразования для кодирования без потерь и/или кодирования почти без потерь может быть сообщен на уровне видеоблока, таком как элемент синтаксиса (syntax element, SE) в SPS/VPS/PPS/ субизображение/секция/плитка/элемент/CTU/VPDU.
i. В одном примере SE может сообщаться в зависимости от максимального размера CTB (например, log2_ctu_size_minus5, CtbSizeY и т.д.)
1. Например, флаг может быть сообщен, когда log2_ctu_size_minus5 больше, чем N (например, N=0).
ii. В одном примере SE может сообщаться в зависимости от максимального размера преобразования (например, sps_max_luma_transform_size_64_flag, MaxTbSize, и т.д.).
1) Например, SE может сообщаться, когда флаг sps_max_luma_transform_size_64_flag равен М (например, M=1).
iii. В одном примере SE может сообщаться в зависимости от максимального размера пропуска преобразования (например, log2_transform_skip_max_size_minus2, MaxTsSize и т.д.).
1) Например, SE может сообщаться, когда log2_transform_skip_max_size_minus2 больше, чем K (например, K=3).
iv. В одном примере может быть сообщено значение разности между log(maxLosslessTbSizeY) и X.
1) Например, X может равняться log2_ctu_size_minus5.
2) Например, X может равняться sps_max_luma_transform_size_64_flag.
3) Например, X может равняться log2_transform_skip_max_size_minus2.
4) Например, X может равняться фиксированному целому числу.
5) В одном примере значение разности -К может сообщаться, где K - целое число, такое как 1.
v. В одном примере может быть сообщено значение разности между maxLosslessTbSizeY и X.
1) Например, X может равняться CtbSizeY.
2) Например, X может равняться MaxTbSize.
3) Например, X может равняться MaxTsSize.
4) Например, X может равняться фиксированному целому числу.
5) В одном примере может сообщаться разность - K, где K -целое число, такое как 1.
vi. В одном примере, maxLosslessTbSizeY видеоблока (такого как последовательность/изображение/субизображение/секция/плитка/CTU/VPDU/CU/PU/TU) может быть получено из SE.
vii. SE может быть флагом.
viii. Когда флаг отсутствует, он может быть принят равным положительному целому числу N.
g. В одном примере, если кодирование без потерь и/или кодирование почти без потерь применяется к видеоблоку (такому как флаг cu_transquant_bypass_flag, равный 1), максимальный размер преобразования для видеоблока может быть установлен равным maxLosslessTbSizeY, отличным от maxTbSizeY.
h. Альтернативно, максимальный размер преобразования для кодирования без потерь и/или кодирования почти без потерь для видеоблока (такого как последовательность/изображение/субизображение/секция/плитка/CTU/VPDU/CU/PU/TU) может быть может быть получен вместо того, чтобы его сообщали.
i. Например, он может установлен равным фиксированному целочисленному значению М (такому как М = 32, выраженному в отсчетах яркости).
ii. Например, он может быть установлен равным второму максимальному размеру преобразования, который может использоваться для кодирования с потерями.
iii. Например, он может быть установлен равным максимальному размеру блока дерева кодирования.
iv. Например, он может быть установлен равным размеру VPDU.
v. Например, он может быть установлен равным максимальному размеру блока пропуска преобразования.
vi. Например, он может быть установлен равным максимальному размеру блока кодирования остатка.
36. Для блока остатка MxN посредством кодирования без потерь (и/или кодирования почти без потерь), он может быть разделен больше, чем на один, на меньшие остаточные субблоки в зависимости от maxLosslessTbSizeY.
a. После разделения ширина и высота всех субблоков становятся больше, чем maxLosslessTbSizeY.
b. В одном примере он может быть делиться на субблоки рекурсивным способом, пока ширина и высота всех субблоков не станут больше, чем maxLosslessTbSizeY.
5. Варианты осуществления
Недавно добавленные части выделяются полужирным шрифтом и курсивом, а удаленные части из рабочего проекта версии VVC помечаются двойными скобками (например, [[a]] обозначает удаление символа «a»). Изменения основаны на самом последнем рабочий проекте VVC (JVET-O2001-v11)
5.1 Примерный вариант 1 осуществления
Вариант осуществления, приведенный ниже, представляет ограничения делений на малые блоки и режимы предсказания применяются только к форматам цветности 4:2:0 и 4:4:4 (не, применяются к форматам цветности 4:0:0 и 4:4:4).
7.4.9.4 Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из следующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = I и флаг qtbtt_dual_tree_intra_flag равен 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth * cbHeight равно 64 и флаг split_qt_flag равен 1
- cbWidth * cbHeight равно 64 и MttSplitMode [x0] [y0] [mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth * cbHeight равно 32 и MttSplitMode [x0] [y0] [mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = I? 1: 0):
- cbWidth * cbHeight равно 64 и MttSplitMode [x0] [y0] [mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- cbWidth * cbHeight равно 128, и MttSplitMode [x0] [y0] [mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- В противном случае, modeTypeCondition устанавливается равным 0.
5.2 Примерный вариант 2 осуществления
Вариант осуществления, приведенный ниже, касается сигнализации флага режима палитры, независимо от modeType.
7.3.8.5 Синтаксис блока кодирования
5.3 Примерный вариант 3 осуществления
Вариант осуществления, приведенный ниже, касается флага режима предсказания IBC, который предполагается зависимым от флага CU SKIP и modeType.
pred_mode_ibc_flag, равный 1, определяет, что текущий блок кодирования кодируется в режиме предсказания IBC. pred_mode_ibc_flag, равный 0, определяет, что текущий блок кодирования не кодируется в режиме предсказания IBC.
Когда флаг pred_mode_ibc_flag отсутствует, его предполагают следующим образом:
- Если cu_skip_flag [x0] [y0] равен 1, cbWidth равен 4 и cbHeight равен 4, флаг pred_mode_ibc_flag принимается равным 1.
- В противном случае, если cbWidth и cbHeight оба равны 128, флаг pred_mode_ibc_flag принимают равным 0.
- В противном случае, если modeType равен MODE_TYPE_INTER, флаг pred_mode_ibc_flag принимают равным 0.
- В противном случае, если treeType равен DUAL_TREE_CHROMA, флаг pred_mode_ibc_flag принимают равным 0.
- В противном случае, флаг pred_mode_ibc_flag принимают равным значению sps_ibc_enabled_flag, когда декодируют секцию I, и равным 0, когда декодируют секцию P или B, соответственно.
Когда флаг pred_mode_ibc_flag равен 1, переменная CuPredMode [chType] [x] [y] устанавливается равной MODE_IBC для x = x0.. x0 + cbWidth - 1 и y = y0.. y0 + cbHeight - 1.
5.4 Примерный вариант 4 осуществления
Вариант осуществления, представленный ниже, касается сигнализации флага режима предсказания IBC, зависящего от MODE_TYPE_INTRA, и/или режим IBC разрешается для блоков яркости, независимо от того, являются ли они блоками малого размера.
7.3.8.5 Синтаксис блока кодирования
5.5 Примерный вариант 5 осуществления
Вариант осуществления, приведенный ниже, касается применения различных ограничений блоков внутрикадрового кодирования для цветовых форматов 4:2:0 и 4:2:2.
7.4.9.4 Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из оследующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = и qtbtt_dual_tree_intra_flag равен 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth * cbHeight равно 64 и флаг split_qt_flag равен 1
- cbWidth * cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth * cbHeight равно 32 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = я? 1: 0):
- В противном случае, modeTypeCondition устанавливается равным 0.
5.6 Примерный вариант 6 осуществления
Вариант осуществления, приведенный ниже, касается запрета блоков внутрикадрового кодирования цветности 2xN в одиночном дереве.
7.4.9.4 Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из следующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = I и qtbtt_dual_tree_intra_flag равно 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth * cbHeight равно 64, и split_qt_flag равно 1
- cbWidth * cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth * cbHeight равно 32 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = I? 1: 0):
- cbWidth * cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- cbWidth * cbHeight равно 128 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- В противном случае, modeTypeCondition устанавливается равным 0.
5.7 Примерный вариант 7 осуществления
Вариант осуществления, приведенный ниже, касается запрещения блоков внутрикадрового кодирования цветности 2xN в двоичном дереве.
6.4.2 Разрешенный процесс двоичного разделения
Переменную allowBtSplit получают следующим образом:
- Если одно или более следующих условий действительно, allowBtSplit устанавливается равным FALSE:
- cbSize меньше или равно MinBtSizeY
- cbWidth больше maxBtSize
- cbHeight больше maxBtSize
- mttDepth больше или равно maxMttDepth
- treeType равно DUAL_TREE_CHROMA и (cbWidth/SubWidthC)*(cbHeight/ SubHeightC) меньше или равно 16
- treeType равно DUAL_TREE_CHROMA и modeType равно MODE_TYPE_INTRA
…
6.4. Разрешенный процесс троичного разделения
Переменную allowTtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowTtSplit устанавливается равным FALSE:
- cbSize меньше или равно 2 * MinTtSizeY
- cbWidth больше Мин (MaxTbSizeY, maxTtSize)
- cbHeight больше Мин (MaxTbSizeY, maxTtSize)
- mttDepth больше или равно maxMttDepth
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- treeType равно DUAL_TREE_CHROMA и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 32
- treeType равно DUAL_TREE_CHROMA, и modeType равно MODE_TYPE_INTRA
- В противном случае, allowTtSplit устанавливается равный TRUE.
5.8 Примерный вариант 8 осуществления
Вариант осуществления, представленный ниже, касается разрешения MODE_IBC для блоков цветности SCIPU.
7.3.8.5 Синтаксис блока кодирования
5.9 Примерный вариант 9 осуществления с запрещением разделения блоков, когда modeType равно MODE_TYPE_INTER (решение 1)
6.4.2 Разрешенный процесс двоичного разделения
Переменную allowBtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowBtSplit устанавливается равным FALSE:
- cbSize меньше или равно MinBtSizeY
- cbWidth больше maxBtSize
- cbHeight больше maxBtSize
- mttDepth больше или равно maxMttDepth
- treeType равно DUAL_TREE_CHROMA, и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 16
- treeType равно DUAL_TREE_CHROMA и modeType равно MODE_TYPE_INTRA
…
6.4.3 Разрешенный процесс троичного разделения
Переменную allowTtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowTtSplit устанавливается равным FALSE:
- cbSize меньше или равно 2 * MinTtSizeY
- cbWidth больше Мин (MaxTbSizeY, maxTtSize)
- cbHeight больше Мин (MaxTbSizeY, maxTtSize)
- mttDepth больше или равно maxMttDepth
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- treeType равно DUAL_TREE_CHROMA и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 32
- treeType равно DUAL_TREE_CHROMA и modeType равно MODE_TYPE_INTRA
- В противном случае, allowTtSplit устанавливается равный TRUE.
5.10 Примерный вариант 10 осуществления с запрещением разделения блоков, когда modeType равно MODE_TYPE_INTER (решение 2)
6.4.2 Разрешенный процесс двоичного разделения
Переменную allowBtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowBtSplit устанавливается равным FALSE:
- cbSize меньше или равно MinBtSizeY
- cbWidth больше maxBtSize
- cbHeight больше maxBtSize
- mttDepth больше или равно maxMttDepth
- treeType равно DUAL_TREE_CHROMA, и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше чем или равно 16
- treeType равно DUAL_TREE_CHROMA, и modeType равно MODE_TYPE_INTRA
…
6.4.3 Разрешенный процесс троичного разделения
Переменную allowTtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowTtSplit устанавливается равным FALSE:
- cbSize меньше или равно 2 * MinTtSizeY
- cbWidth больше Мин (MaxTbSizeY, maxTtSize)
- cbHeight больше Мин (MaxTbSizeY, maxTtSize)
- mttDepth больше или равно maxMttDepth
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- treeType равно DUAL_TREE_CHROMA, и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 32
- treeType равно DUAL_TREE_CHROMA, и modeType равно MODE_TYPE_INTRA
- В противном случае, allowTtSplit устанавливается равным TRUE.
5.11 Примерный вариант 11 осуществления
Вариант осуществления, приведенный ниже, касается ограничений дополнительного разделения дерева кодирования, когда получают MODE_TYPE_INTER.
7.3.8.4 Синтаксис дерева кодирования
5.12 Примерный вариант 12 осуществления
Вариант осуществления, представленный ниже, касается ограничений разделения на малые блоки и режимы предсказания не применяются, когда разрешается режим палитры.
7.4.9.4 Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из следующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = I и qtbtt_dual_tree_intra_flag равен 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth * cbHeight равно 64 и split_qt_flag равно 1
- cbWidth * cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth * cbHeight равно 32 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = я? 1: 0)
- cbWidth*cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- cbWidth*cbHeight равно 128 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- В противном случае, modeTypeCondition устанавливается равным 0.
5.13 Примерный вариант 13 осуществления
Вариант осуществления, представленный ниже, касается ограничений в отношении малых блоков внутрикадрового кодирования цветности для цветового формата 4:2:2.
7.4.9.4 Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из следующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = и qtbtt_dual_tree_intra_flag равно 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth*cbHeight равно 64, и split_qt_flag равно 1
- cbWidth*cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth*cbHeight равно 32 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если и одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = I? 1: 0):
- cbWidth*cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- cbWidth*cbHeight равно 128 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- В противном случае, modeTypeCondition устанавливается равным 0.
5.14 Пример 1 сообщения разности QP в SCIPU
5.15 Пример 2 сообщения разности QP в SCIPU
5.16 Пример 3 сообщения разности QP в SCIPU
5.17 Пример 4 сообщения разности QP в SCIPU
5.18 Пример 14 запрещения блоков 2x8 внутрикадрового кодирования цветности
6.4.2. Разрешенный процесс двоичного разделения
Переменную allowBtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowBtSplit устанавливается равным FALSE:
- cbSize меньше или равно MinBtSizeY
- cbWidth больше maxBtSize
- cbHeight больше maxBtSize
- mttDepth больше или равно maxMttDepth
- treeType равно DUAL_TREE_CHROMA, и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 16
- treeType равно DUAL_TREE_CHROMA, и btSplit равно SPLIT_BT_VER, и (cbWidth / SubWidthC) равно 4, и (cbHeight / SubHeightC) равно 8
- treeType равно DUAL_TREE_CHROMA, и modeType равно MODE_TYPE_INTRA
…
6.4.3. Разрешенный процесс троичного разделения
Переменную allowTtSplit получают следующим образом:
- Если одно или более из следующих условий действительно, allowTtSplit устанавливается равным FALSE:
- cbSize меньше или равно 2 * MinTtSizeY
- cbWidth больше Мин (MaxTbSizeY, maxTtSize)
- cbHeight больше Мин (MaxTbSizeY, maxTtSize)
- mttDepth больше или равно maxMttDepth
- x0 + cbWidth больше pic_width_in_luma_samples
- y0 + cbHeight больше pic_height_in_luma_samples
- treeType равно DUAL_TREE_CHROMA и (cbWidth / SubWidthC) * (cbHeight / SubHeightC) меньше или равно 32
- treeType равно DUAL_TREE_CHROMA, и modeType равно MODE_TYPE_INTRA
- В противном случае, allowTtSplit устанавливается равный TRUE.
7.4.9.4. Семантика дерева кодирования
Переменную modeTypeCondition получают следующим образом:
- Если одно из следующих условий действительно, modeTypeCondition устанавливается равным 0:
- slice_type = = I и qtbtt_dual_tree_intra_flag равно 1
- modeTypeCurr не равно MODE_TYPE_ALL
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1:
- cbWidth * cbHeight равно 64, и split_qt_flag равно 1
- cbWidth*cbHeight равно 64 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth*cbHeight равно 32 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- В противном случае, если одно из следующих условий действительно, modeTypeCondition устанавливается равным 1 + (slice_type! = I? 1: 0)
- cbWidth*cbHeight равно 64, и MttSplitMode[x0][y0][mttDepth] равно SPLIT_BT_HOR или SPLIT_BT_VER
- cbWidth*cbHeight равно 128 и MttSplitMode[x0][y0][mttDepth] равно SPLIT_TT_HOR или SPLIT_TT_VER
- cbWidth равно 8 и (cbHeight / SubHeightC) равно 8 и MttSplitMode[x0][y0] [mttDepth] равно SPLIT_BT_VER
- В противном случае, modeTypeCondition устанавливается равный 0.
7.4.9.7. Семантика данных слияния
ciip_flag[x0][y0] определяет, применяются ли объединенное слияние межкадровых изображений и внутрикадровое предсказание для текущего блока кодирования. Индексы x0, y0 массива определяют расположение (x0, y0) верхнего левого отсчета яркости рассматриваемого блока кодирования относительно верхнего левого отсчета яркости изображения.
Когда ciip_flag [x0] [y0] отсутствует, его получают следующим образом:
- Если все следующие условия действительны, ciip_flag [x0] [y0] принимают равным 1:
- sps_ciip_enabled_flag равно 1.
- general_merge_flag [x0] [y0] равно 1.
- merge_subblock_flag [x0] [y0] равно 0.
- regular_merge_flag [x0] [y0] равно 0.
- cbWidth - меньше 128.
- cbHeight - меньше 128.
- cbWidth * cbHeight больше или равно 64.
- В противном случае, ciip_flag [x0] [y0] принимают равным 0.
7.3.8.7. Синтаксис данных слияния
На фиг. 17A представлена блок-схема устройства 1700 видеообработки. Устройство 1700 может использоваться для реализации одного или более описанных здесь способов. Устройство 1700 может быть реализовано в смартфоне, планшете, компьютере, приемнике Интернета Вещей (Internet of Things, IoT) и так далее. Устройство 1700 может содержать один или более процессоров 1702, одну или более памятей 1704 и аппаратные средства 1706 видеообработки. Процессор(-ы) 1702 может быть выполнен с возможностью реализации одного или более способов, описанных в настоящем документе. Память (памяти) 1704 может использоваться для хранения данных и управляющей программы для реализации описанных здесь способов и технологий. Аппаратные средства 1706 видеообработки могут использоваться для реализации в схемах аппаратных средств некоторых технологий, описанных в настоящем документе.
На фиг. 17B представлен другой пример блок-схемы системы видеообработки, в которой могут быть реализованы раскрытые технологии. На фиг. 17B показана блок-схема примерной системы 1710 видеообработки, в которой могут быть реализованы различные раскрытые здесь технологии. Различные реализации могут включать некоторые или все компоненты системы 1710. Система 1710 может содержать вход 1712 для приема видеоконтента. Видеоконтент может быть принят в виде необработанных данных или в несжатом формате, например, в виде 8-ми- или 10-ти битовых многокомпонентных пиксельных значений, или может быть в сжатом или кодированном формате. Вход 1712 может представлять собой сетевой интерфейс, периферийный шинный интерфейс или интерфейс запоминающего устройства. Примеры сетевого интерфейса содержат проводные интерфейсы, такие как Ethernet, пассивную оптическую сеть (passive optical network, PON) и т.д., и беспроводные интерфейсы, такие как Wi-Fi или сотовые интерфейсы.
Система 1710 может содержать компонент 1714 кодирования, который может реализовать различные способы кодирования, описанные в настоящем документе. Компонент 1714 кодирования может снизить среднюю битовую скорость передачи видео от входа 1712 до выхода компонента 1714 кодирования, чтобы создать кодированное представление видео. Технологии кодирования поэтому иногда называют технологиями видеосжатия или видеотранскодирования. Выход компонента 1714 кодирования может быть либо сохранен, либо быть передан через присоединенную линию связи, как представлено компонентом 1716. Сохраненное или переданное (или кодированное) представление битового потока видео, принимаемого на входе 1712, может использоваться компонентом 1718 для формирования пиксельных значений или пригодного для отображения видео, которое посылается на интерфейс 1720 дисплея. Процесс формирования просматриваемого пользователем видео из представления битового потока иногда называют видеораспаковкой. Дополнительно, хотя некоторые операции видеообработки упоминаются как операции или инструменты «кодирования», следует понимать, что инструменты или операции кодирования используются в кодере, а соответствующие инструменты или операции декодирования, которые инвертируют результаты кодирования, будет выполняться декодером.
Примеры периферийного шинного интерфейса или интерфейса дисплея могут содержать универсальную последовательную шину (universal serial bus, USB) или мультимедийный интерфейс высокой четкости (high definition multimedia interface, HDMI) или Displayport и так далее. Примеры интерфейсов запоминающего устройства содержат SATA (serial advanced technology attachment, последовательная передовая технология соединения), PCI, интерфейс IDE и т.п. Технологии, описанные в настоящем документе, могут быть реализованы в различных электронных устройствах, таких как мобильные телефоны, ноутбуки, смартфоны или другие устройства, способные выполнять обработку цифровых данных, и/или видеодисплей.
На фиг. 22 представлена блок-схема, поясняющая примерную систему 100 видеокодирования, которая может использовать технологии этого раскрытия.
Как показано на фиг. 22, система видеокодирования 100 может содержать устройство 110 источника и устройство 120 назначения. Устройство 110 источника формирует кодированные видеоданные и может упоминаться как устройство видеокодирования. Устройство 120 назначения может декодировать кодированные видеоданные, сформированные устройством 110 источника, и может упоминаться как устройство видеодекодирования.
Устройство 110 источника может содержать источник 112 видео, видеокодер 114 и интерфейс 116 ввода/вывода (I/O).
Источник 112 видео может содержать источник, такой как устройство видеосъемки, интерфейс для приема видеоданных от провайдера видеоконтента и/или систему компьютерной графики для формирования видеоданных или сочетание таких источников. Видеоданные могут содержать одно или более изображений. Видеокодер 114 кодирует видеоданные от источника 112 видео, чтобы сформировать битовый поток. Битовый поток может содержать последовательность битов, которые формируют кодированное представление видеоданных. Битовый поток может содержать кодированные изображения и сопутствующие данные. Кодированное изображение является кодированным представлением изображения. Сопутствующие данные могут содержать наборы параметров последовательности, наборы параметров изображения и другие структуры синтаксиса. Интерфейс 116 ввода-вывода может содержать модулятор/демодулятор (модем) и/или передатчик. Кодированные видеоданные могут быть передаваться напрямую устройству 120 назначения через интерфейс 116 ввода-вывода через сеть 130a. Кодированные видеоданные могут также быть сохранены на носителе запоминающего устройства/сервере 130b для доступа к ним устройством 120 назначения.
Устройство 120 назначения может содержать интерфейс 126 ввода-вывода, видеодекодер 124, и дисплей 122.
Интерфейс 126 ввода-вывода может содержать приемник и/или модем. Интерфейс 126 ввода-вывода может получать кодированные видеоданные от устройства 110 источника или носителя/сервера 130b. Видеодекодер 124 может декодировать кодированные видеоданные. Дисплей 122 может отображать на экране декодированные видеоданные для пользователя. Дисплей 122 может быть интегрирован с устройством 120 назначения или может быть внешним по отношению к устройству 120 назначения, которое можно быть выполнено с возможностью сопряжения с внешним дисплеем.
Видеокодер 114 и видеодекодер 124 могут работать в соответствии со стандартом видеосжатия, таким как стандарт видеокодирования высокой производительности (High Efficiency Video Coding, HEVC), стандарт универсального видеокодирования (Versatile Video Coding, VVC) и другие текущие и/или дополнительные стандарты.
На фиг. 23 представлена блок-схема, показывающая пример видеокодера 200, который может быть видеокодером 114 в системе 100, показанной на фиг. 22.
Видеокодер 200 может быть выполнен с возможностью реализации любые или всех технологий этого раскрытия. В примере на фиг. 9 видеокодер 200 содержит множество функциональных компонентов. Технологии, описанные в этом раскрытии, могут совместно использоваться различными компонентами видеокодера 200. В некоторых примерах процессор может быть выполнен с возможностью реализации любых или всех технологий, описанных в этом раскрытии.
Функциональные компоненты видеокодера 200 могут содержать блок 201 разделения, блок 202 предсказания, который может содержать блок 203 выбора режима, блок 204 оценки движения, блок 205 компенсации движения и блок 206 внутрикадрового предсказания, блок 207 формирования остатка, блок 208 преобразования, блок 209 квантования, блок 210 обратного квантования, блок 211 обратного преобразования, блок 212 реконструкции, буфер 213 и блок 214 энтропийного кодирования.
В других примерах видеокодер 200 может содержать более или меньше или другие функциональные компоненты. В примере блок 202 предсказания может содержать блок копирования блока внутрикадрового кодирования (intra block copy, IBC). Блок IBC может выполнить предсказание в режиме IBC, в котором по меньшей мере одно опорное изображение является изображением, в котором располагается текущий видеоблок.
Дополнительно, некоторые компоненты, такие как блок 204 оценки движения и блок 205 компенсации движения могут быть в значительной степени интегрированы, но для целей объяснения представляются в примере на фиг. 5 отдельно.
Блок 201 разделения может делить изображение на один или более видеоблоков. Видеокодер 200 и видеодекодер 300 могут поддерживать различные размеры видеоблоков.
Блок 203 выбора режима может выбрать один из режимов кодирования, внутрикадровый или межкадровый, например, основываясь на результатах ошибки, и предоставить результирующий внутрикадрово- или межкадрово кодированный блок на блок 207 формирования остатка, чтобы сформировать остаточные блочные данные, и на блок 212 реконструкции, чтобы реконструировать кодированный блок для использования в качестве опорного изображения. В некотором примере блок 203 выбора режима может выбрать сочетание режимов внутрикадрового и межкадрового предсказания (intra and inter predication, CIIP), в котором предсказание основывается на сигнале межкадрового предсказания и сигнале внутрикадрового предсказания. Блок 203 выбора режима может также выбрать разрешающую способность для вектора движения (например, субпиксельная или целочисленная пиксельная точность) для блока в случае межкадрового предсказания.
Для выполнения межкадрового предсказания на текущем видеоблоке блок 204 оценки движения может сформировать информацию о движении для текущего видеоблока, сравнивая один или более опорных кадров из буфера 213 с текущим видеоблоком. Блок 205 компенсации движения может определить предсказанный видеоблок для текущего видеоблока, основываясь на информации о движении и декодированных отсчетах изображений из буфера 213, отличных от изображения, связанного с текущим видеоблоком.
Блок 204 оценки движения и блок 205 компенсации движения могут выполнять различные операции для текущего видеоблока, например, в зависимости от того, находится ли текущий видеоблок в секции I, секции P или секции B.
В некоторых примерах блок 204 оценки движения может выполнять однонаправленное предсказание для текущего видеоблока и блок 204 оценки движения может искать опорные изображения списка 0 или списка 1 опорного видеоблока для текущего видеоблока. Блок 204 оценки движения может затем формировать справочный указатель, который указывает опорное изображение в списке 0 или списке 1, который содержит опорный видеоблок и вектор движения, указывающий пространственное смещение между текущим видеоблоком и опорным видеоблоком. Блок 204 оценки движения может выводить опорный индекс, индикатор направления предсказания и вектор движения в качестве информации о движении текущего видеоблока. Блок 205 компенсации движения может формировать предсказанный видеоблок текущего блока, основываясь на опорном видеоблоке, указываемом информацией о движении текущего видеоблока.
В других примерах блок 204 оценки движения может выполнять двунаправленное предсказание для текущего видеоблока, блок 204 оценки движения может искать опорные изображения в списке 0 для опорного видеоблока текущего видеоблока и может также искать опорные изображения в списке 1 для другого опорного видеоблока текущего видеоблока. Блок 204 оценки движения может затем формировать опорные индексы, которые указывают опорные изображения в списке 0 и списке 1, содержащие опорные видеоблоки и векторы движения, которые указывают пространственные смещения между опорными видеоблоками и текущим видеоблоком. Блок 204 оценки движения может выводить опорные индексы и векторы движения текущего видеоблока в качестве информации о движении текущего видеоблока. Блок 205 компенсации движения может формировать предсказанный видеоблок текущего видеоблока, основываясь на опорных видеоблоках, указываемых информацией о движении текущего видеоблока.
В некоторых примерах блок 204 оценки движения может выводить полный набор информации о движении для процесса декодирования декодера.
В некоторых примерах блок 204 оценки движения может не выводить полный набор информации о движении для текущего видео. Скорее, блок 204 оценки движения может сообщать информацию о движении текущего видеоблока со ссылкой на информацию о движении другого видеоблока. Например, блок 204 оценки движения может решить, что информация о движении текущего видеоблока достаточно схожа с информацией о движении соседнего видеоблока.
В одном примере блок 204 оценки движения может указывать в структуре синтаксиса, связанной с текущим видеоблоком, значение, которое указывает видеодекодеру 300, что текущий видеоблок имеет ту же самую информацию о движении, что и другой видеоблок.
В другом примере блок 204 оценки движения может идентифицировать в структуре синтаксиса, связанной с текущим видеоблоком, другой видеоблок и разность векторов движения (motion vector difference, MVD). Разность векторов движения указывает разность между вектором движения текущего видеоблока и вектором движения указанного видеоблока. Видеодекодер 300 может использовать разность вектора движения указанного видеоблока и вектора движения для определения вектора движения текущего видеоблока.
Как обсуждалось выше, видеокодер 200 может предсказуемо сообщать вектор движения. Два примера технологий предсказуемого сообщения, которые могут быть реализованы видеокодером 200, содержат усовершенствованное предсказание вектора движения (advanced motion vector predication, AMVP) и сообщение о режиме слияния.
Блок 206 внутрикадрового предсказания может выполнять внутрикадровое предсказание на текущем видеоблоке. Когда блок 206 внутрикадрового предсказания выполняет внутрикадровое предсказание на текущем видеоблоке, блок 206 внутрикадрового предсказания может формировать данные предсказания для текущего видеоблока, основываясь на декодированных отсчетах других видеоблоков в одном и том же изображении. Данные предсказания для текущего видеоблока могут содержать предсказанный видеоблок и различные элементы синтаксиса.
Блок 207 формирования остатка может формировать остаточные данные для текущего видеоблока, вычитая (например, что указывается знаком «минус») предсказанный видеоблок(-и) текущего видеоблока из текущего видеоблока. Остаточные данные текущего видеоблока могут содержать остаточные видеоблоки, которые соответствуют различным компонентам отсчетов в текущем видеоблоке.
В других примерах может не быть никаких остаточных данных для текущего видеоблока, например, в режиме пропуска, и блок 207 формирования остатка может не выполнять операцию вычитания.
Блок 208 преобразования может формировать один или более видеоблоков коэффициентов преобразования для текущего видеоблока, применяя одно или более преобразований к остаточному видеоблоку, связанному с текущим видеоблоком.
После того, как блок 208 преобразования сформирует видеоблок коэффициентов преобразования, связанный с текущим видеоблоком, блок 209 квантования 209 может квантовать видеоблок коэффициентов преобразования, связанный с текущим видеоблоком, основываясь на одном или более значениях параметров квантования (quantization parameter, QP), связанных с текущим видеоблоком.
Блок 210 обратного квантования и блок 211 обратного преобразования могут применять обратное квантование и обратное преобразования к видеоблоку коэффициентов преобразования, соответственно, чтобы реконструировать остаточный видеоблок из видеоблока коэффициентов преобразования. Блок 212 реконструкции может добавить реконструированный остаточный видеоблок к соответствующим отсчетам из одного или более предсказанных видеоблоков, сформированных блоком 202 предсказания, чтобы создать реконструированный видеоблок, связанный с текущим блоком, для хранения в буфере 213.
После того, как блок 212 реконструкции реконструирует видеоблок, может быть выполнена операция контурной фильтрации, чтобы уменьшить артефакты видеоблокирования видео в видеоблоке.
Блок 214 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 200. Когда блок 214 энтропийного кодирования 214 принимает данные, блок 214 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования, чтобы сформировать энтропийно кодированные данные и вывести битовый поток, содержащий энтропийно кодированные данные.
На фиг. 24 представлена блок-схема примера видеодекодера 300, который может быть видеодекодером 114 в системе 100, показанной на фиг. 22.
Видеодекодер 300 может быть выполнен с возможностью реализации любой или всех технологий этого раскрытия. В примере на фиг. 24 видеодекодер 300 содержит множество функциональных компонентов. Технологии, описанные в этом раскрытии, могут совместно использоваться различными компонентами видеодекодера 300. В некоторых примерах процессор может быть выполнен с возможностью реализации любой или всех технологий, описанных в этом раскрытии.
В примере на фиг. 24 видеодекодер 300 содержит блок 301 энтропийного декодирования, блок 302 компенсации движения, блок 303 внутрикадрового предсказания, блок 304 обратного квантования, блок 305 обратного преобразования и блок 306 реконструкции и буфер 307. Видеодекодер 300 в некоторых примерах может выполнять процесс декодирования, обычно обратный процессу кодирования относительно видеокодера 200 (например, фиг. 23).
Блок 301 энтропийного декодирования может восстанавливать кодированный битовый поток. Кодированный битовый поток может содержать энтропийно кодированные видеоданные (например, кодированные блоки видеоданных). Блок 301 энтропийного декодирования может декодировать энтропийно кодированные видеоданные и из энтропийно декодированных видеоданных блок 302 компенсации движения может определять информацию о движении, содержащую векторы движения, точность векторов движения, индексы списка опорных изображений и другую информацию о движении. Блок 302 компенсации движения может, например, определить такую информацию, выполняя AMVP и режим слияния.
Блок 302 компенсации движения может создавать компенсированные блоки движения, возможно выполняющие интерполяцию, основываясь на фильтрах интерполяции. Идентификаторы фильтров интерполяции, которые должны использоваться с субпиксельной точностью, могут быть включены в элементы синтаксиса.
Блок 302 компенсации движения может использовать фильтры интерполяции, как они используются видеокодером 20 во время кодирования видеоблока, чтобы вычислять интерполированные значения для субцелочисленных пикселей опорного блока. Блок 302 компенсации движения может определять фильтры интерполяции, используемые видеокодером 200, в соответствии с принятой информацией синтаксиса и использовать фильтры интерполяции, чтобы создавать предсказываемые блоки.
Блок 302 компенсации движения может использование некоторую часть информации синтаксиса, чтобы определить размеры блоков, используемых для кодирования кадра(-ов) и/или секции(-ий) кодированной видеопоследовательности, информацию о разделе, которая описывает, как делится каждый макроблок изображения кодированной видеопоследовательности, режимы, указывающие, как кодируется каждое разделение, один или более опорных кадров (и списки опорных кадров) для каждого межкадрово кодированного блока, и другую информацию для декодирования кодированнй видеопоследовательности.
Блок 303 внутрикадрового предсказания может использовать режимы внутрикадрового предсказания, например, принятые в битовом потоке, чтобы сформировать блок предсказания из пространственно смежных блоков. Блок 303 обратного квантования обратно квантуют, то есть, деквантует, квантованные коэффициенты видеоблока, предоставляемые в битовом потоке и декодированные блоком 3091 энтропийного декодирования. Блок 303 обратного преобразования применяет обратное преобразование.
Блок 306 реконструкции 306 может суммировать остаточные блоки с соответствующими блоками предсказания, сформированными блоком 202 компенсации движения или блоком 303 внутрикадрового предсказания, чтобы сформировать декодированные блоки. При желании, может также применяться деблокирующий фильтр, чтобы фильтровать декодированные блоки для удаления артефактов блочности. Декодированные видеоблоки затем сохраняются в буфере 307, который обеспечивает опорные блоки для последующей компенсации движения.
На фиг. 18 представлена блок-схема последовательности выполнения операций способа 1800 видеообработки. Способ 1800 содержит анализ (1802) для преобразования между видеообластью видео и кодированным представлением видеообласти, кодированное представление, соответствующее правилу синтаксиса, которое определяет отношение между размером блока цветности и цветовым форматом видеообласти; и выполнение (1804) преобразования путем осуществления анализа в соответствии с правилом синтаксиса.
Некоторые варианты осуществления раскрытой технологии содержат принятие решения или решение разрешать инструмент или режим видеообработки. В этом примере, когда инструмент или режим видеообработки разрешается, кодер будет использовать или реализовывать инструмент или режим при обработке блока видео, но, возможно, не обязательно модифицирует полученный в результате битовый поток, основываясь на использовании инструмента или режима. То есть, преобразование из блока видео в представление битового потока видео будет использовать инструмент или режим видеообработки, когда это разрешено, основываясь на решении или определении. В другом примере, когда инструмент или режим видеообработки разрешается, декодер обрабатывает битовый поток, зная, что битовый поток был модифицирован, основываясь на инструменте или режиме видеообработки. То есть, преобразование из представления битового потока видео в блок видео будет выполняться, используя инструмент или режим видеообработки, который был разрешен, основываясь на решении или определении.
Некоторые варианты осуществления раскрытой технологии содержат принятие решения или определение запретить инструмент или режим видеообработки. В этом примере, когда инструмент или режим видеообработки запрещается, кодер не будет использовать инструмент или режим при преобразовании блока видео в представление битового потока видео. В другом примере, когда инструмент или режим видеообработки запрещается, декодер будет обрабатывать битовый поток, зная, что битовый поток не был модифицирован, используя инструмент или режим видеообработки, который был запрещен, основываясь на решении или определении.
В настоящем документе термин «обработка видеоданных» может относиться к видеокодированию, видеодекодированию, видеосжатию или видеораспаковке. Например, алгоритмы видеосжатия могут быть применимы во время преобразования из пиксельного представления видео в соответствующее представление битового потока или наоборот. Представление битового потока текущего видеоблока может, например, соответствовать битам, которые либо cовместно расположены, либо рассеяны в различных местах внутри битового потока, как определено синтаксисом. Например, макроблок может быть кодирован в терминах преобразованных и кодированных остаточных значений ошибки и также использования битов в заголовках и других полях в битовом потоке.
Нижеследующие пункты могут реализовываться как примерные реализации раскрытой технологии. Первый набор пунктов может содержать нижеследующие пункты о технологиях, описанные в пункте 1 предыдущего раздела.
1. Способ видеообработки, содержащий этапы, на которых: выполняют синтаксический анализ для преобразования между видеообластью видео и кодированным представлением видеообласти, причем кодированное представление соответствует правилу синтаксиса, которое определяет отношение между размером блока цветности и цветовым форматом видеообласти; и выполняют преобразование, выполняя анализ в соответствии с правилом синтаксиса.
2. Способ по п. 1, в котором цветовой формат 4:4:4 и в котором правило синтаксиса определяет, что блок цветности подчиняется тому же самому ограничению размера, что и ограничение для блоков яркости.
3. Способ по п. 1, в котором цветовым форматом является 4:2:2 и в котором правило синтаксиса определяет, что блок цветности подчиняется тому же самому ограничению размера, что и ограничение для цветового формата 4:2:0.
4. Способ по любому из пп. 1-3, в котором синтаксис определяет, что режимы предсказания режимы и разделения на малые блоки используются в способе, зависящем от формата цветности.
5. Способ по п. 1, в котором правило синтаксиса определяет, что признак наименьшего разрешенного размера разрешается для преобразования видеообласти, основываясь на цветовом формате видеообласти.
Последующие пункты могут реализовываться вместе с дополнительными технологиями, описанными в п. 2 предыдущего раздела.
6. Способ видеообработки, содержащий этапы, на которых: определяют, основываясь на свойстве видео и формате цветности видео, режим кодирования узла дерева кодирования видео; и выполняют преобразование между кодированным представлением видео и видеоблоком узла дерева кодирования, используя определенный режим кодирования.
7. Способ по п. 6, в котором режим кодирования определяется как MODE_TYPE_ALL для формата цветности, которым является 4:2:2, как MODE_TYPE_INTRA или MODE_TYPE_INTER для формата цветности, которым является 4:2:0 в случае, когда свойством является:
i. узел кодирования является узлом дерева кодирования MxN с горизонтальным разделением двоичного дерева;
ii. узел кодирования является узлом дерева кодирования MxN с вертикальным разделением двоичного дерева;
iii. узел кодирования является узлом дерева кодирования MxN с горизонтальным разделением троичного дерева; или
iv. узел кодирования является узлом дерева кодирования MxN с вертикальным разделением троичного дерева.
8. Способ по п. 7, в котором М = 8 или 16 или 32 и N = 4 или 8 или 16.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в п. 12 предыдущего раздела.
9. Способ видеообработки, содержащий этапы, на которых: определяют, основываясь на правиле, разрешается ли некоторый размер блоков цветности в видеообласти видео; и выполняют преобразования между видеообластью и кодированным представлением видеообласти, основываясь на определении.
10. Способ по п. 9, в котором правило определяет, что блоки цветности 2xN запрещаются из-за видеообласти, содержащей разделение двоичного дерева.
11. Способ по п. 9, в котором правило определяет, что блоки цветности 2N запрещаются из-за видеообласти, содержащей разделение одиночного дерева.
12. Способ по п. 10 или 11, в котором N <=64.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в пунктах 13, 14 и 15 предыдущего раздела.
13. Способ видеообработки, содержащий этапы, на которых: определяют, основываясь на правиле, которое разрешает использование режима кодирования для видеоусловия, что режим кодирования разрешается для видеообласти; и выполняют преобразование между кодированным представлением пикселей в видеообласти и пикселями видеообласти, основываясь на определении.
14. Способ по п. 13, в котором видеоусловием является размер блока и в котором правило разрешает использование режима копирования блока внутрикадрового кодирования для блоков яркости с малым размером блоков.
15. Способ по п. 14, в котором малые размеры блока содержат размеры 8x4, 8x8, 16x4 или 4xN блока яркости.
16. Способ по п. 13, в котором правило разрешает использование режима копирования блоков внутрикадрового кодирования для преобразования видеообласти, используя режим кодирования MODE_TYPE_INTER.
17. Способ по п. 13, в котором правило разрешает использование режима кодирования палитры для преобразования видеообласти, используя режим кодирования MODE_TYPE_INTER.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в пп. 16, 17, 18 предыдущего раздела.
18. Способ видеообработки, содержащий этапы, на которых: выполняют преобразование между видеоблоком видео и кодированным представлением видеоблока, используя режим видеокодирования, в котором элемент синтаксиса, сообщающий режим кодирования, выборочно содержится в кодированном представлении, основанном на правиле.
19. Способ по п. 18, в котором режим видеокодирования является режимом внутрикадрового кодирования блоков и в котором правило определяет, как использовать тип режима видеокодирования для управления вложением элемента синтаксиса в кодированное представление.
20. Способ по п. 19, в котором правило определяет явное сообщение блока не-SKIP.
21. Способ по п. 18, в котором правило указывает неявно сообщить флаг копирования блока внутрикадрового кодирования, основываясь на флаге пропуска и типе режима видеоблока.
22. Способ по п. 18, в котором режим кодирования является режимом кодирования палитры и в котором правило указывает, чтобы выборочно включать индикатор кодирования палитры, основанный на типе режима видеоблока.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанные в п. 21 предыдущего раздела.
23. Способ видеообработки, содержащий этапы, на которых: определяют, благодаря блоку цветности, имеющему размер меньше порогового размера, что тип преобразования, используемый во время преобразования между блоком цветности и кодированным представлением блока цветности, отличается от типа преобразования, используемого для соответствующего преобразования блока яркости; и выполняют преобразование, основываясь на определении.
24. Способ по п. 23, в котором пороговый размер равен MxN, где М равно 2.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в п. 22 предыдущего раздела.
25. Способ по любому из пп. 1-24 в котором преобразование использует объединенный режим межкадрового и внутрикадрового предсказания как режим MODE_TYPE_INTRA.
26. Способ по любому из пп. 18-22, в котором преобразование использует объединенный режим межкадрового и внутрикадрового предсказания как режим MODE_TYPE_INTER. Например, рассматривая CIIP как MODE_TYPE_INTER, могут быть применены способы, описанные в пп. 14-17 предыдущего раздела. Или, когда применяются способы, описанные в пп. 14-16, CIIP может рассматриваться как MODE_TYPE_INTER.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в пп. 3-6 предыдущего раздела.
27. Способ видеообработки, содержащий этапы, на которых: определяют, является ли обязательным правило наименьшего блока цветности во время преобразования между кодированным представлением видеообласти и пиксельными значениями видеообласти, основываясь на условии кодирования видеообласти; и выполняют преобразование, основываясь на определении.
28. Способ по п. 17, в котором условие кодирования содержит цветовой формат видеообласти.
29. Способ по п. 18, в котором видеообласть имеет ширину М пикселей и высоту N пикселей и в котором дополнительное условие кодирования зависит от значений М и/или N.
30. Способ по п. 29, в котором правило наименьшего блока цветности разрешается в результате видеообласти, имеющей цветовой формат 4:2:2 формат и M*N = 32 или M*N=64.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в пп. 7-11 предыдущего раздела.
31. Способ видеообработки, содержащий этапы, на которых: определяют для преобразования между кодированным представлением видеообласти в формате 4:2:2 и пиксельными значениями видеообласти тип режима, который должен использоваться для преобразования, основываясь на том, разрешается ли правило наименьшего блока цветности для видеообласти; и выполняют преобразование, основываясь на определении.
32. Способ по п. 31, в котором тип режима видеообласти устанавливается равным 1 в результате того, что видеообласть имеет формат 4:2:2 формат разрешено правило самого малого блока цветности.
33. Способ по п. 31, в котором определение типа режима содержит определение, что тип режима должен быть типом INTRA в результате того, что для видеообласть разрешено правило самого малого блока цветности.
34. Способ по п. 31, в котором определение типа режима содержит определение, что тип режима INTER запрещен из-за разрешенного правила самого малого блока цветности для видеообласти.
Последующие пункты могут быть реализованы вместе с дополнительных технологий, описанных в пп. 7-11 предыдущего раздела.
35. Способ видеообработки, содержащий этапы, на которых: определяют для преобразования между кодированным представлением видеоблока и видеоблоком видео, разрешается ли разделение на блоки во время преобразования, основываясь на типе режима, используемого во время преобразования, или на размере видеоблока; и выполняют преобразование, используя определение.
36. Способ по п. 35, в котором разделение на блоки содержит разделение двоичного дерева или разделение троичного дерева.
37. Способ по любому из пп. 35-36, в котором, в случае, когда типом режима является режим INTER, разделение блоков основывается на правиле ограничения, которое разрешает или запрещает типы разделения.
Последующие пункты могут быть реализованы вместе с дополнительными технологиями, описанными в п. 34 предыдущего раздела.
38. Способ видеообработки, содержащий этапы, на которых: определяют для преобразования между кодированным представлением видеосегмента видео и видеосегментом, применять ли специальный режим обработки для блока цветности размером MxN, где М и N - целые числа; и выполняют преобразование, основываясь на определении.
39. Способ по п. 38, в котором специальный режим обработки запрещает использование блоков цветности во время преобразования.
40. Способ по п. 38, в котором специальный режим обработки использует предсказание DC для внутрикадрового предсказания блока цветности.
41. Способ по п. 38, в котором специальный режим обработки содержит использование линейной модели с перекрестными компонентами для предсказания внутрикадровых коэффициентов блока цветности из соответствующих субдискретизированных коэффициентов яркости.
42. Способ по любому из пп. 38-41, в котором специальный режим обработки запрещает использование блока цветности в результате использования видеосегментом разделения двоичного дерева.
43. Способ по любому из пп. 38-41, в котором специальный режим обработки запрещает использование блока цветности в результате использования видеосегментом разделения одиночного дерева.
44. Способ по любому из пп. 1-43, в котором преобразование содержит кодирование видео в кодированное представление.
45. Способ по любому из пп. 1-43, в котором преобразование содержит декодирование кодированного представления, чтобы сформировать пиксельные значения видео.
46. Устройство видеодекодирования, содержащее процессор, выполненный с возможностью реализации способа, описанного в одном или более пп. 1-45.
47. Устройство видеокодирования, содержащее процессор, выполненный с возможностью реализации способа, описанного в одном или более пп. 1-45.
48. Компьютерный программный продукт, на котором хранится управляющая программа, которая, когда исполняется процессором, заставляет процессор реализовывать способ, описанный в любом из пп. 1-45.
49. Способ, устройство или система, описанные в настоящем документе.
Второй набор пунктов может быть реализован вместе с дополнительными технологиями, описанными в пп. 34-36 предыдущего раздела.
1. Способ видеообработки (например, способ 2100, показанный на фиг. 21), содержащий этапы, на которых: выполняют 2102 преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; в котором правило определяет, что в результате того, что блок цветности имеет размер М x N, блок цветности запрещается представлять в кодированном представлении, использующем режим внутрикадрового кодирования, где М и N - целые числа, которые указывают ширину и высоту блока цветности, соответственно, и в котором режим внутрикадрового кодирования содержит кодирование блока цветности, основываясь на ранее кодированной видеообласти видеоизображения.
2. Способ по п. 1, в котором чем правило дополнительно определяет, что режим предсказания DC используется для блока цветности, и в котором режим предсказания DC получает значения предсказания компонента цветности, основываясь на среднем значении соседних блоков блока цветности.
3. Способ по п. 1, в котором правило дополнительно определяет, что режим предсказания линейной модели с перекрестными компонентами (CCLM), используется для блока цветности, в котором режим предсказания CCLM использует линейный режим для получения значений предсказания компонента цветности от другого компонента.
4. Способ по п. 2 или 3, в котором M=2 отсчетам цветности и N=8, 16, или 32 отсчетам цветности.
5. Способ по п. 2 или 3, в котором правило дополнительно определяет, что реконструированные соседние пиксели не используются для режима DC предсказания или режима CCLM предсказания.
6. Способ по п. 2, в котором правило дополнительно определяет, что соседние опорные пиксели устанавливаются равными 1 <<(bitDepth - 1) для режима DC предсказания.
7. Способ по п. 2 или 3, в котором правило дополнительно определяет, что позиция, зависящая от способа комбинации внутрикадрового предсказания (position dependent intra prediction combination, PDPC), не применяется для режима DC предсказания или режима CCLM предсказания, и в котором способ PDPC объединяет соседние отсчеты с сигналом предсказания видеообласти, чтобы сформировать улучшенный сигнал предсказания видеообласти.
8. Способ по п. 2 или 3, в котором правило дополнительно определяет, что информацию о режиме DC предсказания или о режиме CCLM предсказания получают без кодирования для блока цветности.
9. Способ по п. 8, в котором правило дополнительно определяет, что для режима CCLM предсказания, который удовлетворяет этому predC = a*recL + b, значение предсказания цветности, predC, получают из реконструированного значения яркости, recL, и для параметров a и b предписывается принять фиксированные значения по умолчанию в начале видеообласти.
10. Способ по п. 9, в котором ведется таблица обслуживания в порядке поступления, чтобы обновлять параметры a и b.
11. Способ по любому из пп. 1-10, в котором правило применяется к другому блоку цветности, кодированному, используя предсказание CCLM, и имеющему ширину, не равную М, или высоту, не равную N.
12. Способ по п. 11, в котором параметры CCLM ранее кодированных областей используются для видеообласти вместо их получения, основываясь на информации о реконструкции соседних блоков видеообласти.
13. Способ по п. 11, в котором параметры CCLM сохраняются в таблице и обновляются, используя таблицу обслуживания в порядке поступления.
14. Способ видеообработки, содержащий этапы, на которых: выполняют преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; в котором правило определяет, что блок цветности, имеющий размер М x N, запрещается для представления в кодированном представлении, использующем режим внутрикадрового кодирования, в случае, когда используется разделение двоичного дерева, где М и N - целые числа, которые указывают ширину и высоту блока цветности, соответственно, и в котором режим внутрикадрового кодирования содержит кодирование блока цветности, основанное на ранее кодированной видеообласти видеоизображения.
15. Способ по п. 14, в котором M=2 отсчетам цветности и N=8, 16 или 32 отсчетам цветности.
16. Способ по п. 14, в котором правило дополнительно определяет, что в результате разделения двоичного дерева, определенная схема разделения запрещается для видеообласти, которая является узлом дерева кодирования размером (M*a) x (N*b), где M*a - количество отсчетов цветности в ширине узла дерева кодирования, и N*b - количество отсчетов цветности в высоте узла дерева кодирования.
17. Способ по п. 16, в котором определенная схема разделения является вертикальным разделением двоичного дерева (BT), в котором видеообласть разделяется на две части вдоль вертикального направления и в котором a=2 и b=1.
18. Способ по п. 16, в котором определенная схема разделения является горизонтальным разделением двоичного дерева (BT), в котором видеообласть разделяется на две части вдоль горизонтального направления и в котором a=1 и b=2.
19. Способ по п. 16, в котором определенная схема разделения является вертикальным разделением троичного дерева (TT), в котором видеообласть разделяется на три части вдоль вертикального направления и в котором а=4 и b=1.
20. Способ по п. 16, в котором определенная схема разделения является горизонтальным разделением троичного дерева (TT), в котором видеообласть разделяется на три части вдоль горизонтального направления и в котором а =1 и b=4.
21. Способ видеообработки, содержащий этапы, на которых: выполняют преобразования между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; в котором правило определяет, что блок цветности, имеющий размер М x N, запрещается для представления в кодированном представлении, использующем режим внутрикадрового кодирования в случае, когда используется разделение одиночного дерева, где М и N - целые числа, указывающие ширину и высоту блока цветности, соответственно, и в котором режим внутрикадрового кодирования содержит кодирование блока цветности, основываясь на ранее кодированной видеообласти видеоизображения.
22. Способ по п. 21, в котором M=2 отсчетам цветности и N=8, 16 или 32 отсчетам цветности.
23. Способ по п. 21 или 22, в котором правило дополнительно определяет что в результате разделения одиночного дерева определенная схема разделения запрещается для компонентов цветности видеообласти, которая является узлом дерева кодирования с размером, равным (M*a*subWidthC) x (N*b*subHeightC), где M*a - количество отсчетов яркости в ширине узла дерева кодирования, и N*b - количество отсчетов яркости в высоте узла дерева кодирования, и subWidthC и subHeightC указывают отношения суботсчетов цветности по размерам ширины и высоты, соответственно.
24. Способ по п. 23, в котором определенная схема разделения является вертикальным разделением двоичного дерева (BT), в котором видеообласть разделяется на две части вдоль вертикального направления и в котором a=2 и b=1.
25. Способ пункта 23, в котором определенная схема разделения является вертикальным разделением троичного дерева (TT), в котором видеообласть разделяется на три части вдоль вертикального направления и в котором а =4 и b=1.
26. Способ по п. 23, в котором определенная схема разделения является горизонтальным разделением двоичного дерева (BT), в котором видеообласть разделяется на две части вдоль горизонтального направления и в котором a=1 и b=2.
27. Способ по п. 23, в котором определенная схема разделения является горизонтальным разделением троичного дерева (TT), в котором видеообласть разделяется на три части вдоль горизонтального направления и в котором a=1 и b=2.
28. Способ по п. 23, в котором определенная схема разделения является горизонтальным разделением троичного дерева (TT), в котором видеообласть разделяется на три части вдоль горизонтального направления и в котором а =1 и b=4.
29. Способ по п. 23, в котором блок цветности имеет размер, равный (M*a) x (N*d).
30. Способ по п. 23, в котором типом кодирования блока цветности является MODE_TYPE_INTRA, который разрешает использование внутрикадрового режима, режима палитры и режима копирования внутрикадровых блоков для преобразования.
31. Способ по п. 23, в котором правило дополнительно определяет, что определенная схема разделения разрешается для компонентов яркости узла дерева кодирования.
32. Способ по п. 31, в котором узел дерева кодирования разделяется на дочерние узлы и межкадровый режим и/или режим копирования блока внутрикадрового кодирования разрешается для дочернего узла.
33. Способ по п. 22, в котором правило дополнительно определяет, что компонент цветности разделяется вдоль совместно расположенного компонента яркости и межкадровый режим и/или режим копирования блока внутрикадрового кодирования разрешается для компонента цветности.
34. Способ видеообработки, содержащий этапы, на которых: выполняют преобразования между блоком цветности видеообласти видео и кодированным представлением видео в соответствии с правилом; в котором правило определяет, что блок цветности, имеющий размер М x N, запрещается для представления в кодированном представлении, использующем объединенный режим межкадрового и внутрикадрового предсказания (CIIP), который объединяет режим межкадрового предсказания с внутрикадровым предсказанием, в котором М и N - целые числа, которые указывают ширину и высоту блока цветности, соответственно.
35. Способ по п. 34, в котором правило дополнительно определяет, что режим CIIP не разрешается для компонентов цветности видеообласти, которая является узлом дерева кодирования с размером, равным (M*subWidthC) x (N*subHeightC), посредством чего subWidthC и subHeightC указывают отношения суботсчетов цветности по размеру ширины и высоты, соответственно.
36. Способ по п. 34, в котором выполнение преобразования содержит процесс смешивания цветности, который определяет блок предсказания цветности блока цветности, смешивая предсказания блока цветности и используя межкадровое предсказание в случае, если видеообласть кодируется, используя режим CIIP.
37. Способ по п. 36, в котором правило дополнительно определяет, что внутрикадровое предсказание яркости применяется к видеообласти и внутрикадровое предсказание цветности не применяется к видеообласти с размером, равным (M*subWidthC) x (N*subHeightC), посредством чего subWidthC и subHeightC указывают отношения суботсчетов цветности по ширине и высоте, соответственно.
38. Способ по п. 34, в котором правило дополнительно определяет, что предсказание DC используется для блока цветности, имеющего размер М x N в случае, если видеообласть кодируется, используя режим CIIP.
39. Способ по п. 34, в котором правило дополнительно определяет, что предсказание CCLM, которое использует линейный режим, чтобы получать значения предсказания компонента цветности от другого компонента, используется для блока цветности, имеющего размер М x N, в случае, если эта видеообласть кодируется, используя режим CIIP.
40. Способ видеообработки, содержащий этапы, на которых: выполняют преобразование между видеообластью видео и кодированным представлением видео в соответствии с правилом, в котором правило определяет, что сообщается ли и как максимальный размер преобразования, применимый к видеообласти, зависит от типа режима кодирования, используемого для представления видеообласти в кодированном представлении, в котором тип режима кодирования является (i) режимом кодирования почти без потерь, в котором параметр квантования (QP), применяемый к видеообласти, меньше порога, (ii) режимом кодирования без потерь, в котором преобразование остаточных данных для видеообласти обходится, или (iii) режимом кодирования с потерями, в котором преобразование остаточных данных для видеообласти пропускается.
41. Способ по п. 40, в котором правило дополнительно определяет, что максимальный размер преобразования для режима кодирования без потерь и/или режима кодирования почти без потерь равен maxLosslessTbSizeY.
42. Способ по п. 40, в котором режим кодирования без потерь сообщается на уровне блока кодирования, используя элемент синтаксиса cu_transquant_bypass_flag.
43. Способ по п. 40, в котором порог сообщается в наборе параметров декодера (decoder parameter set, DPS), наборе параметров видео (video parameter set, VPS), наборе параметра последовательности (SPS), наборе параметров изображения (picture parameter set, PPS), заголовке плитки, секции или элемента.
44. Способ по п. 40, в котором флаг transform_skip_flag равен 1 для режима кодирования почти без потерь видеообласти.
45. Способ по п. 40, в котором правило дополнительно определяет, что первый максимальный размер преобразования для режима кодирования без потерь и/или режима кодирования почти без потерь видеообласти устанавливается, основываясь i) на другом максимальном размере преобразования, используемом для режима кодирования с потерями, ii) на максимальном размере блока дерева кодирования, и/или iii) на максимальном размере пропуска преобразования.
46. Способ по п. 40, в котором максимальный размер преобразования для режима кодирования без потерь или режима кодирования почти без потерь видеообласти сообщается на уровне видеоблока, соответствующем элементу синтаксиса (SE) в наборе параметров последовательности (SP), в наборе видеопараметров (VPS), в наборе параметров изображения (PPS), в субизображении, секции, плитке, элементе, блоке дерева кодирования (CTU) или виртуальном блоке конвейерных данных (VPDU).
47. Способ по п. 46, в котором SE сообщается, в зависимости от максимального размера блока дерева кодирования (CTB), максимального размера преобразования и/или максимального размера пропуска преобразования.
48. Способ по п. 47, в котором SE сообщается в случае, если log2_ctu_size_minus5 больше N, где N - целое число.
49. Способ по п. 47, в котором SE сообщается в случае, если sps_max_luma_transform_size_64_flag равно М, где М - целое число.
50. Способ по п. 47, в котором SE сообщается в случае, если log2_transform_skip_max_size_minus2 больше K.
51. Способ по п. 47, в котором разность между log(maxLosslessTbSizeY) и X сообщается, и в котором maxLosslessTbSizeY указывает максимальный размер преобразования для режима кодирования почти без потерь или режима кодирования без потерь видеообласти.
52. Способ по п. 51, в котором X равно log2_ctu_size_minus5, sps_max_luma_transform_size_64_flag, log2_transform_skip_max_size_minus2, или фиксированному целому числу.
53. Способ по п. 47, в котором разность между maxLosslessTbSizeY и X сообщается, и в котором maxLosslessTbSizeY указывает максимальный размер преобразования для режима кодирования почти без потерь или режима кодирования без потерь видеообласти.
54. Способ по п. 47, в котором значение, соответствующее разности между maxLosslessTbSizeY и X минус K, сообщается, в котором maxLosslessTbSizeY указывает максимальный размер преобразования для режима кодирования почти без потерь или режима кодирования без потерь видеообласти и K - целое число.
55. Способ по п. 53 или 54, в котором X равно CtbSizeY, MaxTbSize, MaxTsSize или фиксированному целому числу.
56. Способ по п. 46, в котором maxLosslessTbSizeY видеообласти получают из SE и в котором maxLosslessTbSizeY указывает максимальный размер преобразования для режима кодирования почти без потерь или режима кодирования без потерь видеообласти.
57. Способ по п. 46, в котором элемент синтаксиса соответствует флагу.
58. Способ по п. 57, в котором в случае, если флаг отсутствует, принимается значение, которое является положительным целым числом.
59. Способ по п. 40, в котором правило дополнительно определяет, что максимальный размер преобразования получают для режима кодирования без потерь и/или режима кодирования почти без потерь видеообласти.
60. Способ по п. 59, в котором максимальный размер преобразования устанавливается равным i) фиксированному целочисленному значению, ii) другому максимальному размеру преобразования, используемому для режима кодирования с потерями, iii) максимальному размеру блока дерева кодирования, iv) размеру VPDU, v) максимальному размеру блока пропуска преобразования или vi) максимальному размеру блока кодирования остатка.
61. Способ видеообработки, содержащий этапы, на которых: выполняют преобразование между видеообластью видео и кодированным представлением видео в соответствии с правилом, в котором правило определяет, что остаточный блок видеообласти делится на один или более остаточных субблоков для кодирования без потерь и/или кодирования почти без потерь, основываясь на максимальном размере преобразования видеообласти, к которой применяются кодирование без потерь и/или кодирование почти без потерь, и в котором кодирование без потерь содержит обход преобразования остаточного блока для видеообласти, а кодирование почти без потерь использует параметр квантования (QP), который меньше порога.
62. Способ по п. 61, в котором правило дополнительно определяет, что ширина и высота одного или более остаточных субблоков, полученных после разделения, не больше максимального размера преобразования.
63. Способ по п. 62, в котором правило дополнительно определяет, что деление остаточного блока повторяется до тех пор, пока ширина и высота одного или более остаточных субблоков станет не больше максимального размера преобразования.
64. Способ по любому из пп. 1-63, в котором преобразование содержит кодирование видео в кодированное представление.
65. Способ по любому из пп. 1-63, в котором преобразование содержит декодирование кодированного представления для формирования видео.
66. Устройство видеообработки, содержащее процессор, выполненный с возможностью реализации способа, описанного в любом одном или более пп. 1-65.
67. Считываемый компьютером носитель, хранящий управляющую программу, которая, когда исполняется, заставляет процессор реализовывать способ, описанный в любом одном или более пп. 1-65.
68. Считываемый компьютером носитель, который хранит кодированное представление или представление битового потока, сформированное в соответствии с любым из описанных выше способов.
Раскрытые и другие решения, примеры, варианты осуществления, модули и функциональные операции, описанные в этом документе, могут быть реализованы в цифровой электронной схеме, или в программном обеспечении, встроенном микропрограммном обеспечении или аппаратных средствах, включая структуры, раскрытые в этом документе, и их структурные эквиваленты или сочетания одного или более из них. Раскрытые и другие варианты осуществления могут быть реализованы как один или более компьютерных программных продуктов, то есть, один или более модулей команд компьютерной программы, закодированных на считываемом компьютером носитель для выполнения или для управления работой устройства обработки данных. Считываемый компьютером носитель может быть машиночитаемым запоминающим устройством, машиночитаемой подложкой запоминающего устройства, устройством памяти, сочетанием материалов, влияющих на машиночитаемый распространяющийся сигнал или сочетанием одного или более из них. Термин «устройство обработки данных» охватывает любые устройства, оборудование и машины для обработки данных, включая, например, программируемый процессор, компьютер или многочисленные процессоры или компьютеры. Устройство может содержать, в дополнение к аппаратным средствам, управляющую программу, которая создает среду выполнения рассматриваемой компьютерной программы, например, код, который составляет встроенное микропрограммное обеспечение процессора, стек протоколов, систему управления базой данных, операционную систему или сочетание одного или более из них. Распространяющийся сигнал является искусственно сформированным сигналом, например, сформированным машиной электрическим, оптическим или электромагнитным сигналом, который сформирован, чтобы кодировать информацию для передачи соответствующему устройству приемника.
Компьютерная программа (также известная как программа, программное обеспечение, приложение, сценарий или управляющая программа) может быть написана в любой форме языка программирования, включая компилированные или интерпретируемые языки, и она может быть развернута в любой форме, включая автономную программу или блок, компонент, подпрограмму или другой блок, пригодные для использования в вычислительной среде. Компьютерная программа не обязательно соответствует файлу в файловой системе. Программа может храниться в части файла, который содержит другие программы или данные (например, в одном или более сценариях, хранящихся в документе языка разметки), в одиночном файле, выделенном для рассматриваемой программы, или во множестве скоординированных файлов (например, файлах, которые хранят один или более модулей, подпрограмм или частей кода). Компьютерная программа может быть развернута для выполнения на одном компьютере или на множестве компьютеров, которые располагаются на одном сайте или распределяются по множеству сайтов и соединяются сетью связи.
Процессы и логические потоки, описанные в этом документе, могут выполняться одним или более программируемыми процессорами, исполняющими одну или более компьютерных программ, чтобы выполнять функции, работая на входных данных и формируя выходной сигнал. Процессы и логические потоки могут также выполняться и устройство может также быть реализовано как электрическая логическая схема особого назначения, например, FPGA (field programmable gate array, программируемая логическая интегральная схема, ПЛИС) или ASIC (application specific integrated circuit, специализированная прикладная интегральная схема).
Процессоры, пригодные для выполнения компьютерной программы, включают, например, микропроцессоры как общего, так и специального назначения, и любой один или более процессоров любого вида цифрового компьютера. Обычно процессор будет принимать команды и данные из постоянной памяти или оперативной памяти или из обоих. Существенными элементами компьютера являются процессор для выполнения команд и одно или более запоминающих устройств для хранения команд и данных. Обычно компьютер будет также содержать или оперативно связываться для приема данных или передачи данных или для того и другого одним или более устройствами массового хранения для хранения данных, например, магнитными, магнитными оптическими дисками или оптическими дисками. Однако, компьютер не обязательно иметь такие устройства. Считываемые компьютером носители, пригодные для хранения команд компьютерной программы и данных, содержат все формы энергонезависимой памяти, устройства хранения данных и запоминающие устройства, включая, например, устройства полупроводниковой памяти, такие как EPROM, EEPROM, и устройства флэш-памяти; магнитные диски, например, внутренние жесткие диски или съемные диски; магнитные оптические диски; и диски CD-ROM и DVD-ROM. Процессор и память могут дополняться или быть включены в логическую схему специального назначения.
Хотя настоящий патентный документ содержит много специфических особенностей, они не должны рассматриваться как какое-либо ограничение объема предмета изобретения или того, что может быть заявлено, а рассматриваться скорее как описания признаков, которые могут быть конкретными для определенных вариантов осуществления конкретных технологий. Некоторые признаки, которые описываются в этом патентном документе в контексте отдельных вариантов осуществления, могут также быть реализованы в сочетании в едином варианте осуществления. Напротив, различные признаки, которые описываются в контексте одиночного варианта осуществления, могут также быть реализованы в многочисленных вариантах осуществления отдельно или в любом соответствующем сочетании. Кроме того, хотя признаки могут быть описаны выше как действующие в определенных сочетаниях и даже первоначально заявляться как таковые, один или более признаков из заявленного сочетания могут в некоторых случаях извлекаться из сочетания и заявленное сочетание может быть отнесено к субсочетанию или к вариации субсочетания.
Аналогично, хотя операции показаны на чертежах в конкретном порядке, это не должно пониматься как требование, чтобы такие операции выполнялись в показанном частном порядке или в последовательном порядке или чтобы выполнялись все показанные операции, чтобы достигнуть желаемых результатов. Кроме того, разделение различных системных компонентов в вариантах осуществления, описанных в этом патентном документе, не должно пониматься как требование такого разделения во всех вариантах осуществления.
Описаны только несколько реализаций и примеров и другие реализации, улучшения и вариации могут быть сделаны, основываясь на том, что описано и показано в этом патентном документе.
Изобретение относится к технологиям кодирования и декодирования видео и изображений. Техническим результатом является повышение эффективности кодирования и декодирования видео и изображений. Результат достигается тем, что выполняют преобразование между блоком цветности видеообласти видеоизображения видео и кодированным представлением видео в соответствии с правилом; причем правило устанавливает, что вследствие того, что блок цветности имеет размер М×N, блоку цветности запрещено быть представленным в кодированном представлении, использующем режим внутрикадрового кодирования, где М и N - целые числа, указывающие соответственно ширину и высоту блока цветности, при этом режим внутрикадрового кодирования содержит кодирование блока цветности на основе ранее кодированной видеообласти видеоизображения. 3 н. и 9 з.п. ф-лы, 25 ил., 6 табл.
1. Способ видеообработки, содержащий этапы, на которых:
определяют, для преобразования между блоком цветности видео и битовым потоком видео, разделять ли блок цветности, в соответствии с правилом, относящимся к типу дерева блока цветности и размеру блока цветности; и
выполняют преобразование на основе указанного определения,
при этом правило устанавливает, что разделение блока цветности, имеющего тип дерева DUAL_TREE_CHROMA, с формированием субблока цветности, имеющего ширину, равную 2, не разрешено;
при этом правило дополнительно устанавливает, что, когда блок яркости, соответствующий блоку цветности, имеет 64 отсчета яркости, типом секции блока цветности является I-секция, и форматом цветности блока цветности является формат 4:2:0, блок цветности, имеющий тип дерева DUAL_TREE_CHROMA, не разрешено разделять двоичным разделением, а блок яркости, соответствующий блоку цветности, разрешено разделять двоичным разделением.
2. Способ по п. 1, в котором правило устанавливает, что, когда тип дерева блока цветности равен DUAL_TREE_CHROMA и ширина блока цветности равна 4, блок цветности не разрешено разделять вертикальным двоичным разделением.
3. Способ по п. 1, в котором правило устанавливает, что, когда тип дерева блока цветности равен DUAL_TREE_CHROMA и ширина блока цветности равна 8, блок цветности не разрешено разделять вертикальным троичным разделением.
4. Способ по п. 1, в котором, когда типом режима блока цветности является MODE_TYPE_INTRA, правило дополнительно устанавливает, что разделение блока цветности с формированием субблока цветности, имеющего ширину 4 и высоту 2, также не разрешено.
5. Способ по п. 4, в котором правило дополнительно устанавливает, что разделение блока яркости, соответствующего блоку цветности, с формированием субблока яркости, разрешено.
6. Способ по п. 5, в котором правило дополнительно устанавливает, что, когда блок яркости, соответствующий блоку цветности, имеет 128 отсчетов яркости, типом секции блока цветности является I-секция, и форматом цветности блока цветности является формат 4:2:0, блок цветности, имеющий тип дерева DUAL_TREE_CHROMA, не разрешено разделять троичным разделением, а блок яркости разрешено разделять троичным разделением.
7. Способ по п. 1, в котором объединенный режим межкадрового-внутрикадрового предсказания не разрешено применять к блоку цветности, имеющему ширину меньше 4.
8. Способ по п. 7, в котором объединенный режим межкадрового-внутрикадрового предсказания не разрешено применять к блоку яркости, имеющему ширину, равную 4, и высоту, равную 16.
9. Способ по п. 1, в котором на этапе преобразования кодируют блок цветности в битовый поток.
10. Способ по п. 1, в котором на этапе преобразования декодируют блок цветности из битового потока.
11. Устройство обработки видеоданных, содержащее процессор и память долговременного пользования с хранящимися в ней командами, причем команды, при их исполнении процессором, вызывают выполнение процессором:
определения, для преобразования между блоком цветности видео и битовым потоком видео, разделять ли блок цветности, в соответствии с правилом, относящимся к типу дерева блока цветности и размеру блока цветности; и
выполнения преобразования на основе указанного определения,
при этом правило устанавливает, что разделение блока цветности, имеющего тип дерева DUAL_TREE_CHROMA, с формированием субблока цветности, имеющего ширину, равную 2, не разрешено,
при этом правило дополнительно устанавливает, что, когда блок яркости, соответствующий блоку цветности, имеет 64 отсчета яркости, типом секции блока цветности является I-секция, и форматом цветности блока цветности является формат 4:2:0, блок цветности, имеющий тип дерева DUAL_TREE_CHROMA, не разрешено разделять двоичным разделением, а блок яркости, соответствующий блоку цветности, разрешено разделять двоичным разделением.
12. Считываемый компьютером носитель запоминающего устройства долговременного пользования, хранящий команды, которые вызывают выполнение процессором:
определения, для преобразования между блоком цветности видео и битовым потоком видео, разделять ли блок цветности, в соответствии с правилом, относящимся к типу дерева блока цветности и размеру блока цветности; и
выполнения преобразования на основе указанного определения,
при этом правило устанавливает, что разделение блока цветности, имеющего тип дерева DUAL_TREE_CHROMA, с формированием субблока цветности, имеющего ширину, равную 2, не разрешено,
при этом правило дополнительно устанавливает, что, когда блок яркости, соответствующий блоку цветности, имеет 64 отсчета яркости, типом секции блока цветности является I-секция, и форматом цветности блока цветности является формат 4:2:0, блок цветности, имеющий тип дерева DUAL_TREE_CHROMA, не разрешено разделять двоичным разделением, а блок яркости, соответствующий блоку цветности, разрешено разделять двоичным разделением.
US 10136140 B2, 2018.11.20 | |||
US 10306240 B2, 2019.05.28 | |||
WO 2016130622 A2, 2016.08.18 | |||
US 10382795 B2, 2019.08.13 | |||
Кулачек для привода толкателя | 1977 |
|
SU663873A1 |
US 2012128067 A1, 2012.05.24 | |||
US 2012163455 A1, 2012.06.28 | |||
US 9491460 B2, 2016.11.08 | |||
US 9749643 B2, 2017.08.29 | |||
WO 2017206826 A1, 2017.12.07 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ С ПРЕОБРАЗОВАНИЕМ С ВЫБОРОМ ПРЕОБРАЗОВАНИЯ БЛОКОВОГО УРОВНЯ И НЕЯВНОЙ СИГНАЛИЗАЦИЕЙ В РАМКАХ ИЕРАРХИЧЕСКОГО РАЗБИЕНИЯ | 2015 |
|
RU2682838C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОДАННЫХ | 2015 |
|
RU2653299C2 |
Авторы
Даты
2023-11-14—Публикация
2020-09-21—Подача