УПРАВЛЕНИЕ МАКСИМАЛЬНЫМ РАЗМЕРОМ ПРЕОБРАЗОВАНИЯ
MANAGING THE MAXIMUM CONVERSION SIZE

Перекрестная ссылка на родственную заявку
[1] По настоящей заявке испрашивается приоритет на основании предварительной заявки на патент США №16/804547, MAXIMUM TRANSFORM SIZE CONTROL, поданной 28 февраля 2020 г., по которой испрашивается приоритет по заявке США №62/813665, "Max transform size control", поданной 4 марта 2019 г. Полное раскрытие информации по предыдущим заявкам полностью включено в настоящий документ посредством ссылки.
Область техники
[2] Настоящее изобретение предлагается для технологий кодирования видео следующего поколения помимо Высокоэффективного кодирования видео (HEVC, High Efficiency Video Coding), например, Универсального кодирования видео (VVC, Versatile Video Coding). Более конкретно, предлагается схема для управления максимальным размером преобразования, кроме того, взаимодействие между максимальным размером преобразования и схемами разделения преобразования (например, субблочным преобразованием (SBT, Sub-Block Transform) и внутренним подразделением (ISP, Intra Sub-Partitioning
Предпосылки создания изобретения
[3] Экспертная группа кодирования видео (VCEG, Video Coding Experts Group) в Международном союзе электросвязи - Сектор стандартизации электросвязи (ITU-T, International Telecommunication Union Telecommunication Standardization Sector), Исследовательская группа 16, Вопрос 6 (Q6/16, Study Group 16, Question 6) и Экспертная группа по движущимся изображениям (MPEG, Moving Picture Experts Group) в Международной организации по стандартизации/Международной электротехнической комиссии, Объединенный технический комитет 1/Подкомиссия 29/Рабочая группа 11 (ISO/IEC (JTC 1/SC 29/WG 11), International Standardization Organization and International Electrotechnical Comission, Joint Technical Committee Number 1,Subcommittee 29, Working Group 11) опубликовали стандарт H.265/HEVC (HEVC, High Efficiency Video Coding, Высокоэффективное кодирование видео) в 2013 г. (версия 1), 2014 г. (версия 2), 2015 г. (версия 3) и 2016 г. (версия 4). С тех пор они изучали потенциальную потребность в стандартизации будущей технологии кодирования видео с возможностью сжатия, которая значительно превосходит стандарт HEVC (включая его расширения). В октябре 2017 года они выпустили совместные обращение с условиями конкурса предложений (CfP, Call for Proposals) по сжатию видео с возможностью, которая значительно превосходит стандарт HEVC. К 15 февраля 2018 г. было отправлено всего 22 ответа на CfP по стандартному динамическому диапазону (SDR, Standard Dynamic Range), 12 ответов на CfP по расширенному динамическому диапазону (HDR, High Dynamic Range) и 12 ответов на CfP по категориям видео 360 градусов, соответственно. В апреле 2018 г. все полученные ответы на CfP были оценены на 122-м заседании MPEG/10-м заседании группы экспертов (JVET, Joint Video Experts Team). После тщательной оценки JVET официально запустила стандартизацию кодирования видео следующего за HEVC поколения, т.е. так называемое Универсальное кодирование видео (VVC, Versatile Video Coding). Текущая версия тестовой модели VVC (VTM, VVC Test Model) - это VTM4.
Сущность изобретения
[4] Согласно одному аспекту изобретения способ выполнения управления максимальным размером преобразования для декодирования видеопоследовательности включает в себя идентификацию декодером элемента синтаксиса высокого уровня, связанного с видеопоследовательностью; определение декодером максимального размера преобразования, связанного с видеопоследовательностью, на основе идентификации элемента синтаксиса высокого уровня, связанного с видеопоследовательностью; декодирование декодером видеопоследовательности с использованием максимального размера преобразования на основе определения максимального размера преобразования, связанного с видеопоследовательностью; и передачу декодером видеопоследовательности на основе декодирования видеопоследовательности с использованием максимального размера преобразования.
[5] Согласно другому аспекту изобретения устройство для выполнения управления максимальным размером преобразования для декодирования видеопоследовательности содержит по меньшей мере одну память, сконфигурированную для хранения программного кода; по меньшей мере один процессор, сконфигурированный для считывания программного кода и работы в соответствии с командами программного кода, причем программный код содержит код идентификации, сконфигурированный так, чтобы заставлять по меньшей мере один процессор идентифицировать элемент синтаксиса высокого уровня, связанный с видеопоследовательностью; код определения, сконфигурированный так, чтобы заставить по меньшей мере один процессор определять максимальный размер преобразования, связанный с видеопоследовательностью, на основе идентификации элемента синтаксиса высокого уровня, связанного с видеопоследовательностью; код декодирования, сконфигурированный так, чтобы заставлять по меньшей мере один процессор декодировать видеопоследовательность с использованием максимального размера преобразования на основе определения максимального размера преобразования, связанного с видеопоследовательностью; и кода передачи, сконфигурированного так, чтобы заставлять по меньшей мере один процессор передавать видеопоследовательность на основе декодирования видеопоследовательности с использованием максимального размера преобразования.
[6] Согласно еще одному аспекту изобретения машиночитаемый носитель хранит команды, команды включают в себя одну или более команд, которые при выполнении одним или более процессорами устройства для выполнения управления максимальным размером преобразования для декодирования видеопоследовательности, заставляют один или более процессоров идентифицировать элемент синтаксиса высокого уровня, связанный с видеопоследовательностью; определять максимальный размер преобразования, связанный с видеопоследовательностью, на основе идентификации элемента синтаксиса высокого уровня, связанного с видеопоследовательностью; декодировать видеопоследовательность с использованием максимального размера преобразования на основе определения максимального размера преобразования, связанного с видеопоследовательностью; и передавать видеопоследовательность на основе декодирования видеопоследовательности с использованием максимального размера преобразования.
Краткое описание чертежей
[7] Дополнительные особенности, сущность и различные преимущества раскрываемого предмета изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых:
[8] Фиг. 1 является блок-схемой иллюстративного процесса выполнения управления максимальным размером преобразования для кодирования или декодирования видеопоследовательности.
[9] Фиг. 2 - упрощенная блок-схема системы связи согласно форме осуществления настоящего изобретения.
[10] Фиг. 3 - схема размещения кодера и декодера видео в среде потоковой передачи.
[11] Фиг. 4 - функциональная блок-схема видеодекодера согласно форме осуществления настоящего изобретения.
[12] Фиг. 5 - функциональная блок-схема видеокодера согласно форме осуществления настоящего изобретения.
[13] Фиг. 6 - это схема компьютерной системы в соответствии с формой осуществления изобретения.
Проблема, которую необходимо решить
[14] В последнем проекте VVC максимальный размер пакета преобразования (TU, Transfer Unit) - это фиксированное число 64, что означает отсутствие возможности управлять максимальным размером TU. Однако может существовать требование управления максимальным размером TU в VVC, поскольку максимальный размер TU влияет на аппаратную сложность реализации кодера (например, на размер промежуточного буфера конвейера, количество перемножителей и т.д.).
[15] В последний проект VVC были включены субблочное преобразование (SBT) и внутреннее подразделение (ISP), и необходимо учесть взаимодействие между SBT, ISP и максимальным размером пакета TU. Например, в SBT флаг набора параметров последовательности (SPS, Sequence Parameter Set) sps_sbt_max_size_64_flag сигнализируется, чтобы указать, является ли наибольший размер SBT длиной 32 или 64, и в случае, если флаг sps_sbt_max_size_64_flag имеет значение true (истина), а максимальный размер TU равен 32 точкам, текущий проект VVC не может это обработать и может произойти сбой кодера.
[16] В настоящее время режим ISP разрешен для всех размеров кодового пакета (CU, Coding Unit), однако, когда максимальный размер преобразования установлен меньше 64, возникает конфликт, выполнять ли неявное разбиение преобразования или явное разбиение преобразования с использованием ISP с сигнализацией. Например, когда максимальный размер преобразования равен 16, для пакета 64×16 TU без ISP, он должен быть неявно разбит на четыре ТГ16х16, однако с ISP он может быть разбит с использованием вертикального разбиения ISP, что приводит к тем же четырем пакетам 16x16 TU, но с использованием сигнализации.
Подробное описание
[17] В стандарте HEVC пакет кодового дерева (CTU, Coding Tree Unit) разбивается на кодовые пакеты CU с использованием структуры квадродерева, называемой деревом кодирования, для адаптации к различным локальным характеристикам. Решение о том, кодировать ли область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне CU. Каждый пакет CU может быть дополнительно разбит на один, два или четыре пакета предсказания (PU, Prediction Unit) в соответствии с типом разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения PU, пакет CU может быть разделен на пакеты преобразования (TU) в соответствии с другой структурой квадродерева, подобной дереву кодирования для пакета CU. Одной из ключевых особенностей структуры HEVC является то, что она имеет множественные концепции разделения, включая пакеты CU, PU и TU.
[18] Структура квадродерева-бинарного дерева (QTBT, Quadtree plus Binary Tree) удаляет концепции множественных типов разделения, т.е. устраняет разделение концепций CU, PU и TU и поддерживает большую гибкость форм разделения CU. В структуре блока QTBT пакет CU может иметь квадратную или прямоугольную форму. Пакет дерева кодирования (CTU) сначала разделяется структурой квадродерева. Конечные (листовые) узлы квадродерева далее разделяются структурой двоичного дерева. В разбиении с двоичным деревом есть два типа разбиения: симметричное горизонтальное и симметричное вертикальное разбиение. Конечные узлы двоичного дерева называются кодовыми пакетами (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что пакеты CU, PU и TU имеют одинаковый размер блока в структуре кодового блока QTBT. В объединенной исследовательской модели (JEM, Joint Exploration Model), пакет CU иногда состоит из кодовых блоков (СВ, Coding Block) различных компонентов цветности, например, один CU состоит из одного блока СВ яркости и двух блоков СВ цветности в случае слайсов Р (кодированных с однонаправленным временным предсказанием) и В (кодированных с двунаправленным временным предсказанием) формата цветности 4:2:0 и иногда состоит из блока СВ одного компонента, например, один пакет CU состоит только из одного блока СВ яркости или двух блоков СВ цветности в случае слайсов I (кодированных с пространственным предсказанием).
[19] Следующие параметры определены для схемы разделения QTBT.
[20] - Размер CTU: размер корневого узла квадродерева, та же концепция, что и в HEVC
[21] - MinQTSize: минимально допустимый размер конечного узла квадродерева
[22] - MaxBTSize: максимально допустимый размер корневого узла двоичного дерева
[23] - MaxBTDepth: максимально допустимая глубина двоичного дерева
[24] - MinBTSize: минимально допустимый размер конечного узла двоичного дерева
[25] В одном примере структуры разделения QTBT размер пакета CTU установлен как 128×128 отсчетов яркости с двумя соответствующими блоками 64×64 отсчетов цветности, MinQTSize установлен как 16×16, MaxBTSize установлен как 64×64, MinBTSize (как для ширины, так и для высоты) установлен как 4×4, a MaxBTDepth установлена как 4. Разделение квадродерева сначала применяется к пакету CTU для генерации конечных узлов квадродерева. Конечные узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размера CTU). Если конечный узел квадродерева имеет размер 128×128, он не будет далее разбиваться двоичным деревом, так как этот размер превышает MaxBTSize (то есть 64×64). В противном случае конечный узел квадродерева может быть дополнительно разделен двоичным деревом. Следовательно, конечный узел квадродерева является также корневым узлом для двоичного дерева, и он имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (т.е., 4), дальнейшее разбиение не рассматривается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (т.е., 4), дальнейшее горизонтальное разбиение не рассматривается. Подобным образом, когда узел двоичного дерева имеет высоту, равную MinBTSize, дальнейшее вертикальное разбиение не рассматривается. Конечные узлы двоичного дерева дополнительно обрабатываются с помощью обработки предсказания и преобразования без какого-либо дальнейшего разделения. В модели JEM максимальный размер пакета CTU составляет 256×256 отсчетов яркости.
[26] При блочном разделении с использованием QTBT, в отношении разбиения (т.е., не конечного) узла двоичного дерева, сигнализируется один флаг для указания, какой тип разбиения (т.е., горизонтальное или вертикальное) используется, где 0 означает горизонтальное разбиение, а 1 указывает вертикальное разбиение. Для разбиения квадродерева нет необходимости указывать тип разбиения, поскольку разбиение квадродерева всегда разбивает блок как по горизонтали, так и по вертикали, чтобы получать 4 субблока одинакового размера.
[27] Кроме того, схема QTBT поддерживает гибкость, позволяющую яркости и цветности иметь отдельную структуру QTBT. В настоящее время для слайсов Р и В блоки СТВ яркости и цветности в одном пакете CTU имеют одну и ту же структуру QTBT. Однако для слайсов I блок СТВ яркости разделяется на пакеты CU одной структурой QTBT, а СТВ цветности разделяется на пакеты CU цветности другой структурой QTBT. Это означает, что пакет CU в слайсе I состоит из кодового блока компонента яркости или кодовых блоков двух компонентов цветности, а пакет CU в слайсе Р или В состоит из кодовых блоков всех трех компонентов цветности.
[28] В HEVC внешнее предсказание для небольших блоков ограничено, чтобы уменьшить доступ к памяти для компенсации движения, так что двунаправленное предсказание не поддерживается для блоков 4×8 и 8×4, а внешнее предсказание не поддерживается для блоков 4x4. В QTBT, реализованном в JEM-7.0, эти ограничения сняты.
[29] Предлагается структура дерева множественного типа (МТТ, Multi-Type-Tree). МТТ - более гибкая древовидная структура, чем QTBT. В МТТ, кроме квадродерева и двоичного дерева, вводятся горизонтальные и вертикальные центрально-боковые троичные деревья. Ключевыми преимуществами разделения на троичное дерево являются, в дополнение к разделению на квадродерево и двоичное дерево: разделение по троичному дереву может захватывать объекты, которые находятся в центре блока, в то время как квадродерево и двоичное дерево всегда разбивают по центру блока. Ширина и высота разделений предлагаемых тройных деревьев всегда равны степени 2, так что никаких дополнительных преобразований не требуется.
D
[30] Замысел двухуровневого дерева в основном мотивирован снижением сложности. Теоретически сложность обхода дерева равна T, где Т обозначает число типов разбиения, a. D - глубину дерева.
[31] В HEVC первичными преобразованиями являются 4-точечное, 8-точечное, 16-точечное и 32-точечное дискретное косинусное преобразование типа 2 (DCT-2, Discrete Cosine Transform 2), а матрицы ядра преобразования представлены с использованием 8-битных целых чисел, т.е. 8-битного ядра преобразования. Матрицы ядра преобразования меньшего DCT-2 являются частью более крупного DCT-2.
[32] Ядра DCT-2 демонстрируют характеристики симметрии/антисимметрии, поэтому поддерживается реализация так называемой "частичной бабочки" для уменьшения числа операций (умножений, сложений/вычитаний, сдвигов) и идентичные результаты умножения матриц можно получить с помощью "частичной бабочки".
[33] В текущий стандарт VVC, помимо 4-точечных, 8-точечных, 16-точечных и 32-точечных преобразований DCT-2, которые аналогичны HEVC, включены также дополнительные 2-точечные и 64-точечные DCT-2.
[34] В дополнение к DCT-2 и 4×4 дискретному синусному преобразованию типа 7 (DST-7, Discrete Sinus Transform 7), которые использовались в HEVC, адаптивное множественное преобразование (АМТ, Adaptive Multiple Transform) также известное как усовершенствованное множественное преобразование (ЕМТ, Enhanced Multiple Transform) или известное как схема множественного выбора преобразования (MTS, Multiple Transform Selection), было использовано в VVC для остаточного кодирования для блоков, кодируемых как с внешним, так и с внутренним предсказанием. Кроме текущих преобразований в HEVC оно использует множество выбранных преобразования из семейств DCT/DST. Недавно введенными матрицами преобразования являются DST-7, DCT-8.
[35] Все матрицы первичного преобразования в VVC используются с 8-битовым представлением. АМТ применяется к пакетам CU с шириной и высотой меньше или равной 32, и независимо от того, применяется ли АМТ или нет, управляется флагом, называемым mts_flag. Когда mts_flag равен 0, только DCT-2 применяется для кодирования остатка. Когда mts_flag равен 1, индекс mts_idx дополнительно сигнализируется с использованием 2 бинов для указания используемого горизонтального и вертикального преобразования.
[36] В режиме кодирования с внутренними подразделами (ISP, Intra Sub-Partitions) блоки яркости с внутренним предсказанием делятся по вертикали или горизонтали на 2 или 4 подраздела в зависимости от размеров блока.
[37] Для каждого из этих подразделов формируется сигнал остатка путем энтропийного декодирования коэффициентов, переданных кодером, а затем их обратного квантования и обратного преобразования. Затем выполняется внутреннее предсказание подраздела, и, наконец, соответствующие восстановленные отсчеты получаются путем добавления сигнала остатка к сигналу предсказания. Следовательно, восстановленные значения каждого подраздела будут доступны для создания предсказания следующего подраздела, который повторит процесс и так далее. Все подразделы используют один и тот же режим внутреннего кодирования.
[38] Алгоритм ISP будет тестироваться только с внутренними режимами, которые являются частью списка наиболее вероятных режимов (МРМ, Most Probable Mode). По этой причине, если блок использует ISP, тогда флаг МРМ будет считаться равным единице. Кроме того, если ISP используется для определенного блока, то список МРМ будет изменен, чтобы исключить режим DC (Direct Current) и отдать приоритет горизонтальным внутренним режимам для горизонтального разбиения ISP и вертикальным внутренним режимам для вертикального разбиения.
[39] В ISP каждый подраздел можно рассматривать как суб-TU, поскольку преобразование и восстановление выполняются по отдельности для каждого подраздела.
[40] В документах JVET-J0024, JVET-K0139 и JVET-L0358 предлагается схема пространственно изменяемого преобразования (SVT, Spatially Varying Transform). При использовании SVT для остатков внешнего предсказания в кодовом блоке есть только остаточный блок, но остаточный блок меньше, чем кодовый блок, поэтому размер преобразования в SVT меньше размера кодового блока. Для области, которая не покрыта остаточным блоком или преобразованием, предполагается нулевой остаток.
[41] Использование предложенного SBT поверх VVC показано ниже, а добавленные тексты выделены серым цветом. Можно видеть, что для способов SBT требуются дополнительные служебные биты (cusbtflag, cusbtquad flag, cu sbt horizontal flag, cu sbtjtos flag)), чтобы сигнализировать для указания типа субблока (горизонтальный или вертикальный), размера (половина или четверть) и положения (слева или справа, вверху или внизу).
[42] Элемент "sps_sbt_enabled_flag", равный 0, указывает, что субблочное преобразование для CU с внешним предсказанием запрещено. Элемент sps_sbt_enabled_flag, равный 1, указывает, что субблочное преобразование для CU с внешним предсказанием разрешено.
[43] Элемент slice_sbt_max_size_64_flag, равный 0, указывает, что максимальная ширина и высота CU для разрешения субблочного преобразования равна 32. Элемент slice_sbt_max_size_64_flag, равный 1, указывает, что максимальная ширина и высота CU для разрешения субблочного преобразования равна 64.
[44] maxSbtSize=slice_sbt_max_size_64_flag? 64:32
[45] Элемент cu_sbt_flag[x0][y0], равный 1, указывает, что для текущего кодового пакета используется субблочное преобразование. Элемент cu_sbt_flag[x0][y0], равный 0, указывает, что для текущей кодового пакета субблочное преобразование не используется.
[46] Если элемент cu_sbt_flag[x0][y0] отсутствует, предполагается, что его значение равно 0.
[47] Когда используется субблочное преобразование, кодовый пакет разбивается на два пакета преобразования, где один пакет преобразования имеет остаток, а другой не имеет остатка.
[48] Элемент cu_sbt_quad_flag[x0][y0], равный 1, указывает, что для текущей кодового пакета субблочное преобразование включает в себя пакет преобразования размером 1/4 от текущего кодового пакета. Элемент cu_sbt_quad_flag[x0][y0], равный 0, указывает, что для текущего кодового пакета субблочное преобразование включает в себя пакет преобразования размером 1/2 от текущего кодового пакета.
[49] Если элемент cu_sbt_quad_flag[x0][y0] отсутствует, предполагается, что его значение равно 0.
[50] Элемент cu_sbt_horizontal_flag[x0][y0], равный 1, указывает, что текущий кодовый пакет разделяется на 2 пакета преобразования с помощью горизонтального разбиения. Элемент cu sbt horizontal flag[x0][y0], равный 0, указывает, что текущий кодовый пакет разделяется на 2 пакета преобразования с помощью вертикального разбиения.
[51] Если элемент cu_sbt_horizontal_flag[x0][y0] отсутствует, его значение определяется следующим образом:
[52] Если элемент cu_sbt_quad_flag [х0][у0] равен 1, элемент cu_sbt_horizontal_flag[x0][y0] устанавливается равным allowSbtHoriQuad.
[53] В противном случае (cu_sbt_quad_flag[x0][y0] равен 0), cu_sbt_horizontal_flag[x0][y0] устанавливается равным allowSbtHoriHalf.
[54] Элемент cu sbtjtos flag[x0][y0], равный 1, указывает, что элементы tu cbf luma, tu cbf cb и tu cbf cr первого пакета преобразования в текущем кодовом пакете отсутствуют в битовом потоке. Элемент cu_sbt_pos_flag[x0][y0], равный 0, указывает, что элементы tu_cbf_luma, tu_cbf_cb и tu_cbf_cr второго пакета преобразования в текущем кодовом пакете отсутствуют в битовом потоке.
[55] Входными данными для этого процесса являются:
[56] местоположение яркости (xTbY, yTbY), определяющее верхний левый отсчет текущего блока преобразования яркости относительно верхнего левого отсчета яркости текущего изображения.
[57] переменная nTbW, определяющая ширину текущего блока преобразования,
[58] переменная nTbil, определяющая высоту текущего блока преобразования,
[59] переменная cldx, определяющая компонент цветности текущего блока,
[60] массив (nTbW)x(nTbH) d[x][y] масштабированных коэффициентов преобразования с x=0…nTbW-l, у=0…nTbH-1.
[61] Результатом этого процесса является массив (nTbW)x(nTbH) r[х][у] остаточных отсчетов с x=0…nTbW-1, у=0…nTbH-1.
[62] Если элемент cu_sbt_flag[xTbY][yTbY] равен 1, переменная trTypeHor, определяющая ядро горизонтального преобразования, и переменная trTypeVer, определяющая ядро вертикального преобразования, выводятся в таблице 8-Х в зависимости от элементов cu_sbt_horizontal_flag[xTbY] [yTbY] и cu_sbt_pos_flag[xTbY] [yTbY].
[63] В противном случае (cu_sbt_flag[xTbY][yTbY] равен 0), переменная trTypeHor, определяющая ядро горизонтального преобразования, и переменная trTypeVer, определяющая ядро вертикального преобразования, получаются в таблице 8-9 в зависимости от элементов mts_idx[xTbY] [yTbY] и CuPredMode[xTbY][yTbY].
[64] Массив r (nTbW)x(nTbH) остаточных отсчетов получается следующим образом:
[65] Каждый (вертикальный) столбец масштабированных коэффициентов преобразования d[x][y] с x=0…nTbW-1, у=0…nTbH-1 преобразуется в е[х][у] с x=0..nTbW-l, у=0…nTbH-1, вызывая процесс одномерного преобразования для каждого столбца x=0…nTbW-l с высотой блока преобразования , список d[x][y] с у=0…nTbH-1 и переменной типа преобразования trType, установленной равной trTypeVer, в качестве входных данных, а на выходе имеется список е[х][у] с у=0…nTbH-1.
[66] Промежуточные значения отсчетов g[x][y] с x=0…nTbW-l, у=0…nTbH-1 получаются следующим образом:
[67] g[x][y]=Clip3(CoeffMin, СоейМах, (е[х][у]+256)»9)
[68] Каждая (горизонтальная) строка результирующего массива g[x][y] с x=0..nTbW-l, у=0…nTbH-1 преобразуется в r[х][у] с х=0…nTbW - 1, у=0…nTbH-1, вызывая процесс одномерного преобразования для каждой строки у=0…nTbH-1 с шириной блока преобразования nTbW, списком g[x][y] с x=0…nTbW-l, а переменная типа преобразования trType устанавливается равной trTypeHor в качестве входных данных, а на выходе получается список r[х] [у] с x=0…nTbW-1.
[69] Существуют разные форматы YUV. В формате 4:2:0 предсказание в режиме линейной модели (LM, Linear Model) применяет фильтр интерполяции с шестью отводами, чтобы получить отсчет яркости с пониженной дискретизацией, соответствующий отсчету цветности, как показано на фиг. 6. С помощью формул отсчет яркости с пониженной дискретизацией Rec'L[x,y] вычисляется из восстановленных отсчетов яркости как:
[70]
[71] Фиг. 1 является блок-схемой иллюстративного процесса 100 для способа выполнения управления максимальным размером преобразования для кодирования или декодирования видеопоследовательности. В некоторых реализациях один или более блоков процессов на фиг. 1 может выполняться декодером. В некоторых реализациях один или более блоков процессов на фиг. 1 может выполняться другим устройством или группой устройств, отдельных от декодера или включающих его, например, кодером.
[72] Как показано на фиг. 1, процесс 100 может включать в себя идентификацию декодером элемента синтаксиса высокого уровня, связанного с видеопоследовательностью (блок 110).
[73] Как далее показано на фиг. 1, процесс 100 может включать в себя определение декодером максимального размера преобразования, связанного с видеопоследовательностью, на основе идентификации элемента синтаксиса высокого уровня, связанного с видеопоследовательностью (блок 120).
[74] Как далее показано на фиг. 1, процесс 100 может включать в себя декодирование декодером видеопоследовательности с использованием максимального размера преобразования на основе определения максимального размера преобразования, связанного с видеопоследовательностью (блок 130).
[75] Как далее показано на фиг. 1, процесс 100 может включать в себя передачу декодером видеопоследовательности на основе декодирования видеопоследовательности с использованием максимального размера преобразования (блок 140).
[76] В контексте настоящего документа элемент синтаксиса высокого уровня может относиться к любому из набора параметров видео (VPS, Video Parameter Set), набора параметров последовательности (SPS), набора параметров изображения (PPS, Picture Parameter Set), заголовку слайса, заголовку таила, заголовку группы тайлов и т.п. Кроме того, заголовок CTU (пакета дерева кодирования, который является наибольшим размером пакета CU) может относиться к элементам синтаксиса, сигнализируемым для каждого CTU, например, как информация заголовка. Кроме того, "размер преобразования" может относиться к максимальной ширине и/высоте преобразования или к максимальной площади пакета преобразования.
[77] Согласно одной из форм осуществления изобретения максимальный размер преобразования сообщается в элементах синтаксиса высокого уровня или заголовке CTU. Минимальный размер преобразования не сообщается, а устанавливается как значение по умолчанию. Примеры значений минимального размера преобразования включают длину 4, 8 и 16. В одной из форм осуществления изобретения введено ограничение, согласно которому максимальный размер преобразования должен иметь значение из нескольких заранее заданных значений. Примеры заранее заданных значений включают длину 16, 32 и 64.
[78] В одной из форм осуществления изобретения передается значение логарифма максимального размера преобразования за вычетом константы. Например, наименьший поддерживаемый максимальный размер преобразования установлен как 16, максимальный размер преобразования сигнализируется как log2 max transform size minus 4, то есть значение 2 сигнализируется, если максимальный размер преобразования равен 64, а значение 1 сигнализируется для максимального размера преобразования 32. В другом примере наименьший возможный максимальный размер преобразования установлен как 32, и значения 0 и 1 сигнализируются для максимального размера преобразования 32 и 64, соответственно.
[79] Согласно форме осуществления, в элементах синтаксиса высокого уровня или заголовке CTU сигнализируется только максимальная площадь пакета преобразования. Минимальная площадь пакета преобразования не сообщается, но устанавливается как значение по умолчанию, и примеры таких значений включают 16 отсчетов, 32 отсчета, 64 отсчета. В форме осуществления изобретения ограничивается, что максимальная площадь пакета преобразования должен быть по меньшей мере значением по умолчанию. Примеры значения по умолчанию включают 64 отсчета, 128 отсчетов, 256 отсчетов, 512 отсчетов, 1024 отсчета, 2048 отсчетов или 4096 отсчетов. В форме осуществления сигнализируется значение логарифма максимальной площади пакета преобразования, деленной на наименьшую возможную максимальную площадь пакета преобразования. Например, наименьшая возможная максимальная площадь пакета преобразования установлена как 256, и сигнализируется значение логарифма максимального размера преобразования, деленного на 256, т.е., 0, 1, 2, 3, если максимальная площадь пакета преобразования равна 256, 512, 1024, 2048 и 4096, соответственно.
[80] Согласно одной из форм осуществления изобретения максимальный размер SBT ограничивается в соответствии с сигнализируемым максимальным размером преобразования или размером пакета преобразования.
[81] В одной из форм осуществления изобретения элемент sps_sbt_max_size_64_flag не сигнализируется, когда максимальный размер преобразования меньше 64, а выводится как значение по умолчанию, указывающее, что максимальная ширина и высота CU, допускаемая для преобразования SBT, составляет 32 отсчета яркости.
[82] В другой форме осуществления изобретения фактическая максимальная ширина и высота CU для разрешения SBT дополнительно регулируется элементами синтаксиса высокого уровня, указывающими максимальный размер преобразования, и фактическая максимальная ширина и высота CU для разрешения SBT выводится как минимальное значение между максимальным размером преобразования и максимальной шириной и высотой CU для разрешения SBT, сигнализируемых в синтаксисе высокого уровня. Например, если максимальный размер преобразования равен 16, независимо от того, что элемент slice_max_sbt_size_64 flag сигнализируется как 0 (максимальные ширина и высота CU для разрешения SBT составляет 32) или как 1 (максимальная ширина и высота CU для разрешения SBT составляет 64), максимальные ширина и высота CU для разрешения SBT составляет 16. Предлагаемые изменения в тексте спецификации VVC описаны ниже:
[83] Элемент slice_sbt_max_size_64_flag, равный 0, указывает, что максимальные ширина и высота CU для разрешения субблочного преобразования, равны 32. Элемент slice_sbt_max_size_64_flag, равный 1, указывает, что максимальные ширина и высота CU для разрешения субблочного преобразования равны 64.
[84] Элемент maxSbtSize=min(max_transform_size, slice_sbt_max_size_64flag? 64: 32); где max_transform_size определяет максимальный размер преобразования.
[85] Предлагается применять SBT только в том случае, если ширина и высота CU не превышают максимальный размер TU.
[86] Вместо указания того, какой пакет преобразования имеет ненулевой коэффициент, как это сделано в SBT, предлагается сначала сигнализировать, какая подчасть (например, с использованием разделения SBT, т.е., левая половина, правая половина, верхняя половина, нижняя половина, левая четверть, правая четверть, верхняя четверть или нижняя четверть) кодового пакета имеет по меньшей мере один ненулевой коэффициент, в то время как каждая часть кодового пакета может включать в себя один или более пакетов TU.
[87] В одной из форм осуществления изобретения в случае, если размер подчасти больше, чем максимальный размер TU, она разбивается на несколько TU, и каждый TU не превышает максимальный размер TU. Например, если максимальный размер TU составляет длину 16, и определено, что CU размером 64×32 имеет только подчасть правой половины (32×32), связанную с ненулевым коэффициентом, а подчасть левой половины (32×32) связана только с нулевым коэффициентом, то в этом случае правая половина дополнительно разбивается на четыре пакета TU 16×16, и каждый пакет TU 16×16 может иметь ненулевой коэффициент. Пакет CU 64×32 включает в себя только правую половину (текстурированную подчасть), связанную с ненулевыми коэффициентами, а правая половина подчасти 32×32 дополнительно разбивается на четыре пакета TU 16×16.
[88] В одной из форм осуществления изобретения, в случае, если размер подчасти больше, чем максимальный размер TU, она разбивается на несколько TU, и каждый TU не превышает максимальный размер TU, и если все TU подчасти за исключением последнего TU в порядке кодирования, кодируются с нулевым флагом кодированного блока (CBF, Coded Block Flag), тогда CBF последнего TU этой подчасти не сигнализируется, а выводится с ненулевым значением CBF.
[89] Согласно форме осуществления изобретения вместо четвертичного разделения, используемого в SBT, которое разделяет CU на подчасти 3:1 или 1:3 по горизонтали или вертикали, предлагается что, когда ширина (W, Width) CU больше высоты (Н, Hight), то вместо 3:1 или 1:3 с использованием вертикального разбиения CU разделяется на одну левую НхН и одну правую (W-H)xH, или одну правую НхН и одну левую (W-H)xH части. Предлагаемое разделение отличается от разделения 3:1 и 1:3, когда W больше 4*Н. Аналогично, когда ширина (W) CU меньше высоты (Н), то вместо 3:1 или 1:3 с использованием горизонтального разбиения CU разделяется на одну верхнюю НхН и одну нижнюю (W-H)xH или одну нижнюю НхН и одну верхнюю (W-Н)хН части. Предлагаемое разделение отличается от разделения 3:1 и 1:3, когда Н больше 4*W.
[90] В одном примере для CU 128x16 вместо разделения на один нулевой TU 96×16 и один ненулевой TU 32×16 предлагается разделить на один нулевой TU 112×16 и один ненулевой TU 16x16. В другом примере для CU 128x8 вместо разделения на нулевой TU 112x16 TU 96×8 и один ненулевой TU 32×8 предлагается разделить на один нулевой TU 112×16 TU 120×8 и один ненулевой TU 112×16 TU 8×8.
[91] В одной из форм осуществления изобретения, если размер CU составляет WxH, и с горизонтальным разделением 1:3 или 3:1, и если 0,25W больше, чем максимальный размер TU (max_transform_size), то вместо этого разбиения CU на один TU 0,25WxH и один TU 0,75WxH, CU разбивается на один TU max transform_sizexH и один TU (W-max_transform_size)xH.
[92] В одном примере для CU 128x8, если максимальный размер TU равен 16, вместо разделения на один нулевой TU 96x8 и один ненулевой TU 32x8 предлагается разделить на один нулевой 112x8 и один ненулевой TU 16x8.
[93] В одной из форм осуществления изобретения, если размер CU составляет WxH, и с вертикальным разделением 1:3 или 3:1, и если 0,25Н больше, чем максимальный размер TU (max transform size), то вместо разбиения CU на один TU WxO,25H и один TU WxO,75H, CU разбивается на один TU max_transform_sizexH и один TU (W-max_transform_size)xH.
[94] Вместо сигнализации максимальных ширины и высоты CU для разрешения SBT, как это делается с помощью элемента синтаксиса высокого уровня slice_max_sbt_size_64_flag в текущей схеме SBT, максимальный размер преобразования, разрешенный для SBT не сигнализируется.
[95] В одной из форм осуществления изобретения даже когда текущая ширина или высота CU больше максимальной ширины и высоты CU для разрешения SBT, при условии, что результирующий ненулевой субпакет TU имеет ширину и высоту, не превышающие максимальную ширину и высоту TU, разбиение SBT разрешается и может сигнализироваться. Например, если максимальный размер TU (ширина и высота) составляет 32 точки, а текущий CU - 64×32, тогда разрешается разделить текущий CU по вертикали на два TU 32×32 или один ненулевой TU 16×32 и один нулевой TU 48×32, однако, не разрешается разбить текущий CU по горизонтали, так как результирующая ширина преобразования равна 64, что превышает максимальный размер преобразования.
[96] Возможность использования разделения и направления SBT может быть основана на том, удовлетворяет ли результирующий ненулевой субпакет TU ограничению максимального TU. Если оно не имеется, соответствующий флаг не сигнализируется, а выводится логически. В одном примере CU составляет 64×16, а максимальный размер преобразования равен 16. В этом случае половинное разбиение SBT недоступно, так что cu_sbt_quad_flag не сигнализируется, а логически выводится как истина. Более того, горизонтальное разбиение SBT также недоступно, так что cu_sbt_horizontal_flag не сигнализируется, а считается как ложь.
[97] Предлагается запретить и не сигнализировать о любом разделении SBT, которое приводит к ненулевому TU с высотой или шириной, превышающей максимальный размер TU.
[98] В настоящее время режим ISP разрешен для всех размеров CU, однако, когда максимальный размер преобразования установлен меньше 64, возникает конфликт, делаем ли мы неявное разбиение преобразования или мы делаем явное разбиение преобразования с использованием ISP с сигнализацией, чтобы решить эту проблему. Предлагается ограничивать максимальный размер CU для разрешения ISP, таким образом, когда ISP применяется только для пакетов CU без неявного разбиения преобразования.
[99] В одной из форм осуществления изобретения модифицированные изменения синтаксической таблицы описаны ниже.
[100] Когда размер CU превышает максимальный размер TU, после того, как CU разбит на несколько пакетов TU с использованием неявного разбиения преобразования, ISP может быть дополнительно применено для каждой TU (размером wxh), чтобы указать, разбит ли TU дополнительно на несколько меньших пакетов TU 0,5WxH или Wx0,5H, или 0,25WxH, или Wx0,25H.
[101] В одном примере, если размер CU равен 64×16, а наибольший размер TU равен 16, то CU сначала неявно разбивается на четыре пакета TU 16×16, затем для каждого TU 16×16 применяется ISP, чтобы сигнализировать, будет ли он дополнительно разбит на меньшие пакеты TU - четыре TU 16×4 или четыре TU 4×16.
[102] Предлагается сигнализировать о максимальном размере преобразования отдельно для разных компонентов цветности.
[103] В одной из форм осуществления изобретения один максимальный размер преобразования сигнализируется для компонента яркости, а один максимальный размер преобразования сигнализируется для компонентов цветности.
[104] Предлагается сигнализировать только максимальный размер преобразования для одного компонента цветности, а максимальный размер преобразования, применяемый для другого компонента цветности, выводить неявно.
[105] В одной из форм осуществления изобретения один максимальный размер преобразования сигнализируется для первого компонента, а для другого компонента, в соответствии с коэффициентом понижающей дискретизации по отношению к первому компоненту, соответственно регулируются максимальный размер горизонтального преобразования и/или вертикального преобразования.
[106] В одном примере, если отсчеты текущего компонента цветности дискретизируются с понижением в N по сравнению с первым компонентом цветности в горизонтальном (и/или вертикальном) направлении, то есть, первый компонент цветности имеет N-кратное количество отсчетов по сравнению с текущим отсчетом по горизонтальной (и/или вертикальной) оси, то максимальный размер горизонтального (и/или вертикального) преобразования, применяемый для текущего компонента цветности, равен максимальному размеру преобразования, деленному на N.
[107] В одной из форм осуществления изобретения один максимальный размер преобразования сообщается для компонента яркости, и если это формат YUV 444, то тогда максимальный размер преобразования, применяемый для компонента цветности, устанавливается таким же, как максимальный размер преобразования, применяемый для компонента яркости.
[108] В одной из форм осуществления изобретения один максимальный размер преобразования сигнализируется для компонента яркости, если это формат YUV 422, то тогда максимальный размер горизонтального преобразования, применяемый для компонента цветности, устанавливается как половина максимального размера преобразования, применяемого для компонента яркости, и максимальный размер вертикального преобразования, применяемый для компонента цветности, устанавливается таким же, как максимальный размер преобразования, применяемый для компонента яркости.
[109] Предлагается применять разные схемы обнуления преобразования для разных компонентов цветности.
[110] Предлагается применять другую схему обнуления преобразования для разных компонентов цветности только в том случае, если коэффициент понижающей дискретизации для разных компонентов цветности является разным.
[111] Хотя на фиг. 1 показаны иллюстративные блоки процесса 100, в некоторых реализациях процесс 100 может включать в себя дополнительные блоки, меньшее количество блоков, разные блоки или блоки, расположенные иначе, чем те, которые изображены на фиг. 1. Дополнительно или альтернативно, два или более блока процесса 100 могут выполняться параллельно.
[112] Фиг. 2 представляет собой упрощенную блок-схему системы (200) связи согласно форме осуществления настоящего изобретения. Система (200) связи может содержать по меньшей мере два терминала (210-220), соединенных между собой через сеть (250). Для однонаправленной передачи данных первый терминал (210) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (220) через сеть (250). Второй терминал (220) может принимать кодированные видеоданные другого терминала из сети (250), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в применениях мультимедийного обслуживания и т.п.
[113] На фиг. 2 показана вторая пара терминалов (230, 240), обеспечивающая поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференцсвязи. Для двунаправленной передачи данных каждый терминал (230, 240) может кодировать видеоданные, захваченные в локальном местоположении, для передачи на другой терминал через сеть (250). Каждый терминал (230, 240) также может принимать кодированные видеоданные, передаваемые другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[114] На фиг. 2 терминалы (210-240) могут быть показаны как серверы, персональные компьютеры и смартфоны, но принципы настоящего изобретения этим не ограничиваются. Формы осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые передают кодированные видеоданные между терминалами (210-240), включая, например, сети проводной и/или беспроводной связи. Сеть (250) связи может обмениваться данными по каналам с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (250) могут быть несущественными для работы настоящего изобретения, если это не объясняется в настоящем документе ниже.
[115] На фиг. 3 показано в качестве примера применения для раскрываемого предмета изобретения размещение видеокодера и видеодекодера в потоковой среде. Раскрываемый предмет изобретения может быть в равной степени применим к другим применениям с поддержкой видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая компакт диск (CD, Compact Disk), универсальный цифровой диск (DVD, Digital Versatile Disk), карту памяти и т.п.
[116] Система потоковой передачи может содержать подсистему (313) видеозахвата, которая может включать в себя источник (301) видеосигналов, например цифровую камеру, создающую, например, поток (302) отсчетов несжатого видео. Этот поток (302) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может обрабатываться кодером (303), подключенным к камере (301). Кодер (303) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию, чтобы задействовать или реализовать аспекты раскрываемого предмета изобретения, как более подробно описано ниже. Кодированный битовый поток (304) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может сохраняться на сервере (305) потоковой передачи для будущего использования. Один или несколько клиентов (306, 308) потоковой передачи могут получать доступ к серверу (305) потоковой передачи для получения копий (307, 309) кодированного битового потока (304) видео. Клиент (306) может включать в себя видеодекодер (310), который декодирует входящую копию (307) кодированного битового потока видео и создает исходящий поток (311) отсчетов видеосигнала, который может отображаться на дисплее (312) или других устройствах визуализации (не показаны). В некоторых потоковых системах битовые потоки (304, 307, 309) видео могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию Н.265 ITU-T. В стадии разработки находится стандарт кодирования видеосигналов, неофициально известный как Универсальное кодирование видео (VVC). Раскрываемый предмет изобретения может использоваться в контексте стандарта VVC.
[117] Фиг. 4 может представлять функциональную блок-схему видеодекодера (310) согласно одной из форм осуществления настоящего изобретения.
[118] Приемник (410) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы декодером (210); в той же или другой форме осуществления изобретения - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (412), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (410) может принимать закодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть пересылаться их соответствующим объектам использования (не изображенным). Приемник (410) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети может быть включена буферная память (415) между приемником (410) и энтропийным декодером/синтаксическим анализатором (420) (далее - "синтаксическим анализатором"). Когда приемник (410) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемости, или из изосинхронной сети, буфер (415) может не понадобиться или может быть небольшим. Для использования в пакетных сетях с максимальной эффективностью, таких как Интернет, может потребоваться буфер (415), он может быть сравнительно большим и предпочтительно может иметь адаптивный размер.
[119] Видеодекодер (310) может содержать синтаксический анализатор (420) для восстановления символов (421) из энтропийно кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (310), и потенциально информацию для управления устройством визуализации, таким как дисплей (312), который не является неотъемлемой частью декодера, но может быть присоединен к нему, как это показано на фиг. 4. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщений SEI (Supplementary Enhancement Information)) или информации по использованию видео (VUI, Video Usability Information) (не показанных). Синтаксический анализатор (420) может анализировать/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с учетом контекста или без него и т.д. Синтаксический анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, кодовые пакеты (CU, Coding Unit), блоки, пакеты преобразования (TU, Transform Unit), пакеты предсказания (PU, Prediction Unit) и т.д. Энтропийный декодер/синтаксический анализатор также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя (QP, Quantizer Parameter), векторы движения и так далее.
[120] Синтаксический анализатор (420) может выполнять операцию энтропийного декодирования/синтаксического анализа над видеопоследовательностью, принимаемой из буфера (415), таким образом, чтобы создавать символы (421). Синтаксический анализатор (420) может принимать кодированные данные и выборочно декодировать определенные символы (421). Кроме того, синтаксический анализатор (420) может определять, должны ли конкретные символы (421) быть предоставлены в блок (453) предсказания с компенсацией движения, блок (451) масштабирования/обратного преобразования, блок (452) внутреннего предсказания или петлевой фильтр (456).
[121] Восстановление символов (421) может включать в себя несколько различных блоков в зависимости от типа кодированного видеоизображения или его частей (например, изображения, кодированного с внутренним и внешним предсказанием, блока, кодированного с внутренним и внешним предсказанием) и других факторов. Какие блоки задействовать и каким образом, можно управлять с помощью управляющей информации подгруппы, которая была синтаксически проанализирована из кодированной видеопоследовательности с помощью синтаксического анализатора (420). Поток такой управляющей информации подгруппы между синтаксическим анализатором (420) и множеством модулей не показан для ясности.
[122] Помимо уже упомянутых функциональных блоков, декодер (310) может быть концептуально подразделен на ряд функциональных блоков, как описано ниже. При практической реализации, работающей в условиях коммерческих ограничений, многие из этих блоков тесно взаимодействуют друг с другом и могут, по меньшей мере частично, быть интегрированы друг в друга. Однако для целей описания раскрываемого предмета изобретения уместно концептуальное подразделение на функциональные блоки, приведенные ниже.
[123] Первым блоком является блок (451) масштабирования/обратного преобразования. Блок (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в виде символов(-ов) (621) от синтаксического анализатора (420). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).
[124] В некоторых случаях выходные отсчеты блока (451) масштабирования/обратного преобразования могут относиться к блоку, кодированному с внутренним предсказанием: блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена блоком (452) внутрикадрового предсказания. В некоторых случаях блок (452) внутрикадрового предсказания изображения формирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (454). Агрегатор (455) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сформированную блоком (452) внутрикадрового предсказания, к информации выходных отсчетов, предоставляемой блоком (451) масштабирования/обратного преобразования.
[125] В других случаях выходные отсчеты блока (451) масштабирования/обратного преобразования могут относиться к блоку, кодированному с внешним предсказанием и, возможно, с компенсацией движения. В таком случае блок (453) предсказания компенсации движения может получить доступ к памяти (457) опорных изображений для выборки отсчетов, используемых для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходному сигналу блока масштабирования/обратного преобразования (в этом случае называемых остаточными отсчетами или остаточным сигналом), чтобы сформировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда блок компенсации движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными блоку компенсации движения в форме символов (421), которые могут иметь, например, X, Y и компоненты опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения подотсчета, механизмы предсказания вектора движения и т.д.
[126] Выходные отсчеты агрегатора (455) могут подвергаться различным технологиям петлевой фильтрации в блоке (456) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированный битовый поток видео и предоставляемыми блоку (456) петлевого фильтра в виде символов (421) из синтаксического анализатора (420), но также могут реагировать на метаинформация, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также в ответ на ранее восстановленные и отфильтрованные по петле значения отсчетов.
[127] Выходными данными блока (456) петлевого фильтра может быть поток отсчетов, который может выводиться в устройство (312) визуализации, а также сохраняться в памяти (456) опорных изображений для использования в будущем межкадровом предсказании.
[128] Некоторые кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (420)), текущее опорное изображение может стать частью буфера опорных изображений (457), и память свежего текущего изображения может быть перераспределена перед началом восстановления следующего кодированного изображения.
[129] Видеодекодер (310) может выполнять операции декодирования в соответствии с заранее определенной технологией сжатия видео, которая может быть задокументирована в стандарте, таком как Рекомендация Н.265 ITU-T. Кодированная видеопоследовательность может соответствовать синтаксису, указанному используемой технологией или стандартом сжатия видео, в том смысле, что он придерживается синтаксиса технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в профилях, задокументированных в них. Для соответствия также необходимо, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.
[130] В одной из форм осуществления изобретения приемник (410) может принимать с кодированным видео дополнительные (избыточные) данные. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(-ей). Дополнительные данные могут использоваться видеодекодером (310) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных уровней или уровней улучшения отношения сигнал/шум (SNR, Signal-to-Noise Ratio), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и т.д.
[131] Фиг. 5 может быть функциональной блок-схемой видеокодера (303) согласно одной из форм осуществления настоящего изобретения.
[132] Кодер (303) может принимать отсчеты видео от источника (301) видео (не являющегося частью кодера), который может захватывать видеоизображение(-ия) для кодирования кодером (303).
[133] Источник (301) видео может предоставить исходную видеопоследовательность, которая должна быть кодирована кодером (303), в форме потока отсчетов цифрового видео, который может иметь какую-то подходящую глубину в битах (например: 8 бит, 10 бит, 12 бит, …), какую-то цветовое пространство (например, пространство Y CrCB по рекомендации ITU-R ВТ.601, RGB, …), какую-то подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y 4:4:4). В системе обслуживания мультимедиа источник (301) видео может быть запоминающим устройством, хранящим заранее подготовленное видео. В системе видеоконференцсвязи видеосигналов источник (303) может быть камерой, которая фиксирует информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться в виде множества отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, при этом каждый пиксель может содержать один или несколько отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалисты в данной области техники могут легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[134] Согласно одной из форм осуществления изобретения кодер (303) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует применение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (550). Контроллер управляет другими функциональными блоками, как описано ниже, и функционально связан с этими блоками. Соединение не изображено для ясности. Параметры, установленные контроллером, могут включать в себя параметры, связанные с управлением скоростью (пропуск изображения, квантователь, значение лямбда для технологий оптимизации скорость-искажение, …), размером изображения, структурой группы изображений (GOP), максимальным диапазоном поиска вектора движения и т.д. Другие функции контроллера (550) могут выполняться, поскольку они могут относиться к видеокодеру (303), оптимизированному для определенной структуры системы.
[135] Некоторые видеокодеры работают в том, что специалисты в данной области легко распознают как "петля кодирования". В качестве упрощенного описания петля кодирования может состоять из кодирующей части кодера (530) (далее "кодер источника") (ответственного за создание символов на основе входного изображения, которое должно быть кодировано, и опорного изображения (изображений)), и (локального) декодера (533), встроенного в кодер (303), который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрываемом предмете изобретения). Этот восстановленный поток отсчетов вводится в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита независимо от местоположения декодера (локального или удаленного), содержимое буфера опорных изображений также имеет точность до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер "видел бы" при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалистам в данной области техники.
[136] Работа "локального" декодера (533) может быть такой же, как у "удаленного" декодера (310), который уже был подробно описан выше в связи с фиг. 4. Кратко обратимся также к фиг. 5, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и синтаксичесим анализатором (420) может осуществляться без потерь, части энтропийного декодирования декодера (310), включая канал (412), приемник (410), буфер (415) и синтаксический анализатор (420) могут не быть полностью реализованы в локальном декодере (533).
[137] На этом этапе можно сделать наблюдение, что любая технология декодирования, помимо синтаксического анализа/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрываемый предмет изобретения сосредотачивает внимание на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[138] В качестве части своей работы кодер (430) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или несколько ранее закодированных кадров из видеопоследовательности, которые были обозначены как "опорные кадры". Таким образом, механизм (532) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(-ов), которые могут быть выбраны в качестве опорных значений предсказания для входного кадра.
[139] Локальный видеодекодер (533) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в памяти (534) опорных изображений. Таким образом, кодер (303) может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, как восстановленные опорные кадры, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[140] Предсказатель (535) может выполнять поиски с предсказанием для механизма (532) кодирования. То есть, для нового кадра, который должен быть закодирован, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве возможных опорных блоков пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и т.д., это может служить подходящим эталоном для предсказания для новых изображений. Предсказатель (535) может работать на основе блока отсчетов на блок пикселей, чтобы найти соответствующие эталоны для предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (535), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.
[141] Контроллер (550) может управлять операциями кодирования видеокодера (530), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[142] Выходные данные всех вышеупомянутых функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер переводит символы, сформированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия без потерь символов согласно различным технологиям, например кодированию Хаффмана, кодированию с переменной длиной, арифметическому кодированию и т.д.
[143] Передатчик (540) может буферизовать кодированную видеопоследовательность (видеопоследовательности), созданную энтропийным кодером (545), чтобы подготовить ее к передаче через канал связи (560), который может быть аппаратным/программным каналом связи к устройству хранения данных, которое будет хранить закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (530) с другими данными, которые должны быть переданы, например, с кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[144] Контроллер (550) может управлять работой кодера (303). Во время кодирования контроллер (550) может назначать каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на технологии кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть назначены как один из следующих типов кадров:
[145] Изображение с внутренним кодированием (I-изображение) (I picture, Intra Picture) может быть таким, которое может быть кодировано и декодировано без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы с внутренним кодированием, включая, например, обновленные изображения, с помощью независимого декодера. Могут быть использованы варианты I-изображений и их соответствующие применения и особенности.
[146] Изображение, кодированное с предсказанием, (Р-изображение) (Р picture, Predictive picture) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[147] Изображение, кодированное с двунаправленным предсказанием, (В-изображение) (В Picture, Bi-directionally predictive picture) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и справочных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения, кодированные с множественным предсказанием, могут использовать более двух опорных изображений и связанных с ними метаданных для восстановления одиночного блока.
[148] Исходные изображения обычно могут быть подразделены пространственно на множество блоков отсчетов (например, блоки по 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Блоки пикселей Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированные опорные изображения.
[149] Видеокодер (303) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, например, Рекомендация Н.265 ITU-T. Во время своей работы видеокодер (303) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[150] В одной из форм осуществления изобретения передатчик (540) может передавать дополнительные данные с кодированным видео. Видеокодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/улучшающие SNR уровни, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения дополнительной расширенной информации (SEI), фрагменты набора параметров информации о свойствах видео (VUI) и т.д.
[151] Кроме того, предлагаемые способы могут быть реализованы схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на энергонезависимом машиночитаемом носителе, для выполнения одного или нескольких из предложенных способов.
[152] Технологии, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых команд и физически сохранены на одном или нескольких машиночитаемых носителях. Например, на фиг.6 показана компьютерная система 600, подходящая для реализации определенных форм осуществления раскрываемого предмета изобретения.
[153] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка вычислительной машины, который может быть предметом трансляции, компиляции, компоновки или подобных механизмов для создания кода, содержащего команды, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п. центральными процессорами компьютера (CPU, Central Processing Unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[154] Команды могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[155] Компоненты, показанные на фиг. 6 для компьютерной системы 600 являются иллюстративными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего формы осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, показанных в примере осуществления компьютерной системы 600.
[156] Компьютерная система 600 может содержать определенные устройства ввода с интерфейсом пользователя. Такое устройство ввода с интерфейсом пользователя может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, проведения по экрану, движения информационной перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображенного). Устройства с интерфейсом пользователя также могут использоваться для захвата определенных мультимедийных данных, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[157] Устройства ввода интерфейса пользователя могут включать в себя одно или более из (только по одному из каждого изображенного): клавиатуры 601, мыши 602, трекпада 603, сенсорного экрана 610, информационной перчатки, джойстика 605, микрофона 606, сканера 607, камеры 608.
[158] Компьютерная система 600 может также содержать определенные устройства вывода с интерфейсом пользователя. Такие устройства вывода с интерфейсом пользователя могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с интерфейсом пользователя могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана 610, цифровой перчатки или джойстика 605, но также могут быть устройства с тактильной обратной связью, которые не служат в качестве устройств ввода), устройства звукового выхода (такие как громкоговорители 609, головные телефоны (не показанные)), устройства визуального вывода (например, экраны 610, включая экраны электронно-лучевой трубки (CRT, Cathode Ray Tube), экраны жидкокристаллического дисплея (LCD, Liquid-Crystal Display), плазменные экраны, экраны на органических светодиодах (OLED, Organic Light-Emitting Diode), каждое с возможностью сенсорного ввода или без нее, каждое с возможностью тактильной обратной связи или без нее; - некоторые из них могут быть способны выполнять двухмерный визуальный вывод или более чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображенные), голографические дисплеи и дымовые баки (не изображенные) и принтеры (не изображенные).
[159] Компьютерная система 600 также может содержать доступные пользователю устройства хранения данных и связанные с ними носители, такие как оптические средства включая средства 720 только для чтения (ROM, Read Only Метогу)/для чтения и многократной записи (RW, Read and Write) с компакт-дисками (CD, Compact Disk)/цифровыми универсальными дисками (DVD, Digital Versatile Disc) или тому подобные носители 621, флэш-накопитель 622, съемный жесткий диск или твердотельный накопитель 623, традиционные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе постоянных запоминающих устройств (Read Only Memory ROM/специализированных интегральных схем (ASIC, Application-Specific Integrated Circuit)/программируемых логических интегральных схем (PLD, Programmable Logic Device), такие как защитные ключи (не показанные) и т.п.
[160] Специалисты в данной области также должны понимать, что термин "машиночитаемый носитель", используемый в связи с раскрытым в настоящее время предметом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[161] Компьютерная система 600 также может включать в себя интерфейс(-ы) для одной или к одной или более сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и так далее. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные локальные сети (LAN, Local Area Network), сотовые сети, включая глобальную систему мобильной связ (GSM, Global System for Mobile communications), сети связи третьего поколения (3G, 3-rd Generation), сети связи четвертого поколения (4G, 4-th Generation), сети связи пятого поколения (5G, 5-th Generation), сети связи по технологии долгосрочной эволюции (LTE, Long-Term Evolution) и т.п., телевизионные (TV, Television) проводные или глобальные беспроводные цифровые сети, включая кабельное телевидение (TV), спутниковое телевидение (TV) и наземное телевещание, автомобильное и промышленное, включая локальную сеть контроллеров (CANBus, Controller Area Network Bus) и т.д. Некоторым сетям обычно требуются адаптеры внешнего сетевого интерфейса, которые подключены к определенным портам данных общего назначения или периферийным шинам (649) (таким как, например, порты универсальной последовательной шины (USB, Universal Serial Bus) компьютерной системы 600; другие обычно интегрируются в ядро компьютерной системы 600 путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему персональных компьютеров (PC, Personal Computer) или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система 600 может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное TV), однонаправленной только для передачи (например, CANbus к определенным устройствам CANbus) или двунаправленной, например, с другими компьютерными системами, использующими локальные или глобальные цифровые сети. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсах, как описано выше.
[162] Вышеупомянутые устройства интерфейса пользователя, доступные пользователю устройства хранения данных и сетевые интерфейсы могут быть присоединены к ядру 640 компьютерной системы 600.
[163] Ядро 640 может содержать один или более центральных процессоров (CPU. Central Processing Unit) 641, графических процессоров (GPU, Graphics Processing Unit) 642, специализированных программируемых блоков обработки в виде программируемых пользователем матриц 643 логических элементов (FPGA, Field Programmable Gate Area), аппаратных ускорителей 644 для определенных задач, и так далее. Эти устройства, наряду с постоянным запоминающим устройством (ROM, Readonly Memory) 645, оперативным запоминающим устройством (RAM, Random-Access Memory) 646, графическим адаптером 650, внутренним запоминающим устройством 647 большой емкости, таким как внутренние жесткие диски, не доступные пользователю, твердотельные накопители (SSD, Solid State Drive) и т.п., могут быть подключены через системную шину 648. В некоторых компьютерных системах системная шина 648 может быть доступна в форме одного или нескольких физических разъемов для обеспечения возможности расширения с помощью дополнительных процессоров, графических процессоров и т.п.Периферийные устройства могут быть подключены либо непосредственно к системной шине 648 ядра, либо через периферийную шину 649. Архитектуры периферийной шины включают шину ввода-вывода для подключения периферийных устройств PCI (Peripheral Component Interconnect), USB и т.п.
[164] Процессоры CPU 641, GPU 642, матрицы FPGA 643 и ускорители 644 могут выполнять определенные команды, которые в комбинации могут составлять вышеупомянутый машинный код. Этот машинный код может храниться в ROM 645 или RAM 646. Временные данные также могут храниться в RAM 646, тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве 647 большой емкости. Возможность быстрого запоминания и выборки для любого из запоминающих устройств может быть обеспечена посредством использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU 641, GPU 642, запоминающим устройством 647 большой емкости, памятью ROM 645, запоминающим устройством RAM 646 и т.п.
[165] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего изобретения, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[166] В качестве примера, а не в качестве ограничения, компьютерная система, имеющая архитектуру 600, и, в частности, ядро 640, может обеспечивать функциональные возможности в результате выполнения процессором(-и) (включая процессоры CPU, процессоры GPU, матрицы FPGA, ускорители и т.п.) программного обеспечения, воплощенного на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя запоминающим устройством большой емкости, как описано выше, а также определенными запоминающими устройствами ядра 640, которые имеют энергонезависимый характер, такими как внутреннее запоминающее устройство 647 большой емкости или ROM 645. Программное обеспечение, реализующее различных формы осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 640. Машиночитаемый носитель может включать в себя одно или несколько запоминающих устройств или интегральных схем в соответствии с конкретными потребностями. Программное обеспечение может заставлять ядро 640 и, в частности, процессоры в нем (включая процессоры CPU, GPU, матрицу FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM 646, и изменение таких структур данных в соответствии с процессами, определяемыми программным обеспечением. Вдобавок или в качестве альтернативы компьютерная система может обеспечивать функциональные возможности в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель 644), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или определенных частей конкретных процессов, описанных здесь. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (IC, Integrated Circuit), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это необходимо. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[167] Хотя в данном раскрытии описаны несколько иллюстративных форм осуществления изобретения, существуют изменения, перестановки и различные заменяющие эквиваленты, которые входят в объем изобретения.
[168] Сокращения:
[169] HEVC: High Efficiency Video Coding - Высокоэффективное кодирование видео
[170] HDR: High Dynamic Range - расширенный динамический диапазон.
[171] SDR: Standard Dynamic Range - стандартный динамический диапазон.
[172] VVC: Versatile Video Coding - Универсальное кодирование видео
[173] JVET: Joint Video Exploration Team - Совместная группа по исследованию видео
[174] МРМ: Most Probable Mode - наиболее вероятный режим
[175] WAIP: Wide-Angle Intra Prediction - Широкоугольное внутреннее предсказание
[176] CU: Coding Unit - Кодовый пакет
[177] PU: Prediction Unit - Пакет предсказания
[178] ISP: Intra Sub-Partitions - Внутренние подразделы
[179] SBT: Sub-block Transform - Субблочное преобразование
[180] CBF: Coded Block Flag - Флаг кодированного блока