Способ и устройство для видеокодирования
METHOD AND APPARATUS FOR VIDEO ENCODING

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/823,831, "Method and Apparatus for Video Coding", поданной 19 марта 2020 г., которая испрашивает приоритет предварительной заявки США №62/822,787, "Modified VPDU Compatible Max Transform Control", поданной 22 марта 2019 г. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ, K КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.
УРОВЕНЬ ТЕХНИКИ
[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.
[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920 × 1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Кодер и декодер видеосигнала может использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] Технологии видеокодека могут включать в себя методы, известные как внутреннее кодирование. При внутреннем (интра-) кодировании значения отсчетов представляются без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, изображение называется интра-изображением. Интра-изображения и их производные, например, изображения, полученные в режиме независимого обновления декодера, могут использоваться для сброса состояния декодера, что позволяет использовать их как первое изображение в битовом потоке кодированного видео и видеосеансе, или как неподвижное изображение. Отсчеты интра-блока могут подвергаться преобразованию, и коэффициенты преобразования могут квантоваться до энтропийного кодирования. Внутреннее предсказание может быть методом минимизации значений отсчетов в области предварительного преобразования. В ряде случаев, чем меньше значение DC (постоянной составляющей) после преобразования, и чем меньше коэффициенты АС (переменных составляющих), тем меньше битов требуется при данном размере шага квантования для представления блока после энтропийного кодирования.
[0008] Традиционное внутреннее кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует внутреннего предсказания. Однако некоторые более современные технологии сжатия видео включают в себя методы, которые пытаются, например, из данных окружающих отсчетов и/или метаданных, полученных в ходе кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования, блоков данных. Такие методы далее именуются методами "внутреннего предсказания". Заметим, что по меньшей мере в некоторых случаях внутреннее предсказание осуществляется только с использованием опорных данных из текущего изображения, подлежащего реконструкции, но не из опорных изображений.
[0009] Может существовать много разных форм внутреннего предсказания. Когда в данной технологии видеокодирования может использоваться более одного из таких методов, используемый метод может кодироваться в режиме внутреннего предсказания. В некоторых случаях, режимы могут иметь подрежимы и/или параметры, которые могут кодироваться по отдельности или включаться в кодовое слово режима. Использование того или иного кодового слова для данной комбинации режимов/подрежимов/параметров может оказывать влияние на выигрыш в эффективности кодирования посредством внутреннего предсказания и, следовательно, на технологию энтропийного кодирования, используемую для перевода кодовых слов в битовый поток.
[0010] Определенный режим внутреннего предсказания впервые был задан в Н.264, уточнен в Н.265, и дополнительно уточнен в более современных технологиях кодирования, например, модели совместного исследования (JEM, joint exploration model), универсального видеокодирования (VVC, versatile video coding) и наборе эталонов (BMS, benchmark set). Блок предсказателя может формироваться с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказателя согласно направлению. Ссылка на используемое направление может кодироваться в битовом потоке или может сама пр еде казываться.
[0011] В нижнем правом углу фиг. 1А изображено подмножество из девяти направлений предсказателя множества, известных из 33 возможных направлений предсказателя Н.265 (соответствующих 33 угловым режимам из 35 интра-режимов). Точка (101), где сходятся стрелки, представляет предсказываемый отсчет.Стрелки представляют направление, из которого предсказывается отсчет.Например, стрелка (102) указывает, что отсчет (101) предсказывается из отсчета или отсчетов, расположенного(ых) вверху справа, под углом 45 градусов к горизонтали. Аналогично, стрелка (103) указывает, что отсчет (101) предсказывается из отсчета или отсчетов расположенного(ых) внизу слева от отсчета (101), под углом 22,5 градусов к горизонтали.
[0012] В верхнем левом углу фиг. 1А изображен квадратный блок (104) 4×4 отсчетов (указанный жирной пунктирной линией). Квадратный блок (104) включает в себя 16 отсчетов, каждая из которых обозначена буквой "S", позицией по оси Y (например, индексом строки) и позицией по оси X (например, индексом столбца). Например, отсчет S21 является вторым отсчетом по оси Y (сверху) и первым (слева) отсчетом по оси X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) по обеим осям Y и X. Поскольку блок имеет размер 4×4 отсчета, S44 располагается внизу справа. Дополнительно показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет обозначается буквой R, своей Y-позицией (например, индексом строки) и Х-позицией (индексом столбца) относительно блока (104). В обоих Н.264 и Н.265 предсказанные отсчеты соседствуют с блоком, подлежащим реконструкции; поэтому нет необходимости использовать отрицательные значения.
[0013] Предсказание внутри изображения может работать путем копирования опорных значений отсчетов из соседних отсчетов, указанных сигнализируемым направлением предсказания. Например, предположим, что битовый поток кодированного видео включает в себя сигнализацию, которая, для этого блока, указывает направление предсказания, обозначенное стрелкой (102) - то есть отсчеты предсказываются из предсказанного(ых) отсчета или отсчетов, рас положенно го(ых) вверху справа, под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются из одного и того же опорного отсчета R05. Затем отсчет S44 предсказывается из опорного отсчета R08.
[0014] В некоторых случаях значения множества опорных отсчетов можно комбинировать, например посредством интерполяция, для вычисления опорного отсчета; в особенности, когда направления не кратны 45 градусам.
[0015] Количество возможных направлений увеличивается по мере развития технологий видеокодирования. В Н.264 (2003 год) можно было представлять девять разных направлений. В Н.265 это количество увеличилось до 33 (2013 год), и JEM/VVC/BMS, во время составления данного описания, может поддерживать до 65 направлений. Были проведены эксперименты для выявления наиболее вероятных направлений, и некоторые методы энтропийного кодирования используются для представления этих вероятных направлений малым количеством битов, ценой утраты некоторых менее вероятных направлений. Дополнительно, сами направления иногда можно предсказывать из соседних направлений, используемых в соседних, уже декодированных, блоках.
[0016] На фиг. 1В показана диаграмма (180), где изображено 65 направлений внутреннего предсказания согласно JEM для иллюстрации увеличения количества направлений предсказания с течением времени.
[0017] Отображение битов направлений внутреннего предсказания в битовом потоке кодированного видео, которые представляют направление, может отличаться от одной технологии видеокодирования к другой технологии видеокодирования; и может охватывать, например, от простого прямого отображения направления предсказания до режима внутреннего предсказания, кодовых слов, сложных адаптивных схем, задействующих наиболее вероятные режимы, и аналогичных методов. Однако во всех случаях могут существовать некоторые направления, возникновение которых в видеоконтенте статистически менее вероятно, чем для некоторых других направлений. Поскольку целью сжатия видео является снижение избыточности, эти менее вероятные направления, в хорошо работающей технологии видеокодирования, будут представляться большим количеством битов, чем более вероятные направления.
[0018] Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).
[0019] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседних с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь сигнала (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.
[0020] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением".
[0021] Согласно фиг. 2, текущий блок (201) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который пространственно сдвинут.Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (202-206, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0022] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема обработки выполнена с возможностью декодирования кодированной информации блока кодирования (СВ, coding block) в изображении из битового потока кодированного видео. Кодированная информация указывает ширину W отсчетов и высоту Н отсчетов СВ. Схема обработки может разбивать СВ на суб-единицы обработки (SPU, sub-processing units), имеющие ширину, равную минимальному значению из W и K, и высоту, равную минимальному значению из Н и K. По меньшей мере одна из ширины W и высоты Н для СВ больше размера K единицы данных обработки. Схема обработки может определять структуру разбиения для дополнительного разбиения SPU на основании ширины и высоты SPU и максимального размера единицы преобразования (TU, transform unit) М отсчетов. По меньшей мере одна из ширины и высоты SPU больше М. Схема обработки может разбивать каждую из SPU на TU размерами МхМ на основании определенной структуры разбиения.
[0023] Согласно варианту осуществления, ширина и высота SPU больше М. схема обработки может определять структуру разбиения как структуру разбиения в виде квадрадерева. Схема обработки может разбивать SPU на TU на основании структуры разбиения в виде квадрадерева.
[0024] Согласно варианту осуществления, ширина SPU больше М, и высота SPU равна М. Схема обработки может определять структуру разбиения как структуру вертикального разбиения в виде двоичного дерева. Схема обработки может разбивать SPU на TU на основании структуры вертикального разбиения в виде двоичного дерева.
[0025] Согласно варианту осуществления, высота SPU больше М, и ширина SPU равна М. Схема обработки может определять структуру разбиения как структуру горизонтального разбиения в виде двоичного дерева. Схема обработки может разбивать SPU на TU на основании структуры горизонтального разбиения в виде двоичного дерева.
[0026] Согласно варианту осуществления, схему обработки может рекурсивно разбивать одну из SPU на TU на основании структуры разбиения.
[0027] Согласно варианту осуществления, схема обработки может обрабатывать SPU согласно первому порядку сканирования, и обрабатывать TU в каждой из SPU согласно второму порядку сканирования. В примере, по меньшей мере одним из первого порядка сканирования и второго порядка сканирования является один из (i) растрового порядка сканирования, (ii) вертикального порядка сканирования, (iii) зигзагообразного порядка и (iv) диагонального порядка сканирования. В примере, первый порядок сканирования и второй порядок сканирования являются растровыми. В примере, W равно 128, Н равно 64, K равно 64 и М равно 32. Первый порядок сканирования является порядком слева направо, и второй порядок сканирования является растровым порядком сканирования.
[0028] Согласно варианту осуществления, размер K единицы данных обработки указывает размер единицы данных виртуального конвейера (VPDU, virtual pipeline data unit). Первая из SPU включена в первую VPDU, и вторая из SPU включена во вторую VPDU в изображении. После обработки первой VPDU на первой ступени многоступенчатого конвейера, схема обработки может одновременно обрабатывать первую VPDU на второй ступени многоступенчатого конвейера и вторую VPDU на первой ступени.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0029] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:
[0030] фиг. 1А - схема иллюстративного подмножества режимов внутреннего предсказания;
[0031] фиг. 1В - схема направлений внутреннего предсказания;
[0032] фиг. 2 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере;
[0033] фиг. 3 - упрощенная блок-схема системы (300) связи в соответствии с вариантом осуществления;
[0034] фиг. 4 - упрощенная блок-схема системы связи (400) в соответствии с вариантом осуществления;
[0035] фиг. 5 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;
[0036] фиг. 6 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;
[0037] фиг. 7 - блок-схема кодера в соответствии с другим вариантом осуществления;
[0038] фиг. 8 - блок-схема декодера в соответствии с другим вариантом осуществления;
[0039] фиг. 9А - CTU, которая разбивается с помощью структуры (910) квадрадерева плюс двоичное дерево (QTBT, quadtree plus binary tree);
[0040] фиг. 9 В - структура (920) QTBT;
[0041] фиг. 9С - горизонтальное центрально-боковое троичное дерево;
[0042] фиг. 9D - вертикальное центрально-боковое троичное дерево;
[0043] фиг. 10A-10D - матрицы ядра преобразования 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразования DCT-2, соответственно;
[0044] фиг. 11А-11Е матрица 64×64 ядра преобразования 64-точечного преобразования DCT-2;
[0045] фиг. 12 - базисные функции преобразования выбранного дискретного синусного преобразования (DST, discrete sine transform)/ дискретного косинусного преобразования (DCT, discrete cosine transform) адаптивного множественного преобразования (АМТ, adaptive multiple transform);
[0046] фиг. 13 - таблица (1300), иллюстрирующая отношение отображения между значением mts_idx и соответствующими горизонтальными или вертикальными преобразованиями;
[0047] фиг. 14A-14D - матрицы ядра преобразования преобразования DST-7;
[0048] фиг. 15A-15D - матрицы ядра преобразования преобразования DCT-8;
[0049] фиг. 16 - количество субчастей в зависимости от размера блока;
[0050] фиг. 17 - пример интра-субразбиения (ISP, intra sub-partition);
[0051] фиг. 18 - пример ISP.
[0052] фиг. 19А-19В - пример синтаксических элементов (1900) для режима кодирования с ISP;
[0053] фиг. 20A-20D - примеры преобразования субблоков (SBT, sub-block transform);
[0054] фиг. 21A-21I - пример текстовой спецификации стандарта видеокодирования при использовании SBT;
[0055] фиг. 22 - разные YUV-форматы, используемые в некоторых вариантах осуществления;
[0056] фиг. 23 - примеры запрещенного разбиения в виде троичного дерева (ТТ, ternary tree) и двоичного дерева (ВТ, binary tree);
[0057] фиг. 24 - пример синтаксиса дерева преобразования;
[0058] фиг. 25 - блок (2510) кодирования размером 128×64 отсчета;
[0059] фиг. 26А - блок (2610А) кодирования размером 128×32 отсчета;
[0060] фиг. 26В - блок (2610В) кодирования размером 128×32 отсчета;
[0061] фиг. 27 - блок-схема операций процесса (2700) согласно варианту осуществления изобретения;
[0062] фиг. 28 - схема компьютерной системы в соответствии с вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0063] I. Кодер и декодер для видеокодирования
[0064] На фиг. 3 показана упрощенная блок-схема системы (300) связи согласно варианту осуществления настоящего изобретения. Система (300) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (350). Например, система (300) связи включает в себя первую пару оконечных устройств (310) и (320), соединенных между собой через сеть (350). В примере, приведенном на фиг. 3, первая пара оконечных устройств (310) и (320) осуществляет однонаправленную передачу данных. Например, оконечное устройство (310) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (310)), для передачи в другое оконечное устройство (320) через сеть (350). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (320) может принимать кодированные видеоданные из сети (350), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0065] В другом примере, система (300) связи включает в себя вторую пару оконечных устройств (330) и (340) которые осуществляют двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (330) и (340) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (330) и (340) через сеть (350). Каждое оконечное устройство из оконечных устройств (330) и (340) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (330) и (340), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0066] В примере, приведенном на фиг. 3, оконечные устройства (310), (320), (330) и (340) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (350) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (310), (320), (330) и (340), включая, например, проводные и/или беспроводные сети связи. Сеть (350) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (350) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0067] На фиг. 4 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0068] Система потоковой передачи может включать в себя подсистему (413) захвата, которая может включать в себя источник (401) видеосигнала, например, цифровую камеру, создающую, например, поток (402) видеоизображений, не подвергнутых сжатию. Например, поток (402) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (402) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (404) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (420), которое включает в себя видеокодер (403), подключенный к источнику (401) видеосигнала. Видеокодер (403) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (404) (или битовый поток (404) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (402) видеоизображений, могут храниться на потоковом сервере (405) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (406) и (408) на фиг. 4, могут осуществлять доступ к потоковому серверу (405) для извлечения копий (407) и (409) кодированных видеоданных (404). Клиентская подсистема (406) может включать в себя видеодекодер (410), например, в электронном устройстве (430). Видеодекодер (410) декодирует входящую копию (407) кодированных видеоданных и создает исходящий поток (411) видеоизображений, который может визуализироваться на дисплее (412) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (404), (407) и (409) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, универсальное видеокодирование). Раскрытое изобретение может использоваться в контексте VVC.
[0069] Заметим, что электронные устройства (420) и (430) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (420) может включать в себя видеодекодер (не показан), и электронное устройство (430) также может включать в себя видеокодер (не показан).
[0070] На фиг. 5 показана блок-схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может входить в состав электронного устройства (530). Электронное устройство (530) может включать в себя приемник (531) (например, приемные схемы). Видеодекодер (510) может использоваться вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0071] Приемник (531) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (510); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (501), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (531) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (531) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, буферная память (515) может быть подключена между приемником (531) и энтропийным декодером / анализатором (520) (далее "анализатором (520)"). В некоторых вариантах применения буферная память (515) входит в состав видеодекодера (510). В других она может не входить в состав видеодекодера (510) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (510), например, для борьбы с джиттером сети, помимо другой буферной памяти (515) в составе видеодекодера (510), например, для управления хронированием доигрывания. Когда приемник (531) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (515) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (515) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (510).
[0072] Видеодекодер (510) может включать в себя анализатор (520) для реконструкции символов (521) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510), и возможно информацию для управления устройством визуализации, например, устройством (512) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (530), но может быть подключено к электронному устройству (530), как показано на фиг. 5. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0073] Анализатор (520) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (515), для создания символов (521).
[0074] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (520). Поток такой информации управления подгруппами между анализатором (520) и множественными модулями для простоты в дальнейшем не показан.
[0075] Помимо ранее упомянутых функциональных блоков, видеодекодер (510) может принципиально делиться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное деление на нижеперечисленные функциональные модули.
[0076] Первым модулем является модуль (551) масштабирования / обратного преобразования. Модуль (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (521) от анализатора (520). Модуль (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (555).
[0077] В ряде случаев, выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (552) предсказания внутри изображения. В ряде случаев модуль (552) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (558) текущего изображения. Буфер (558) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (555) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (551) масштабирования / обратного преобразования.
[0078] В других случаях выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае, модуль (553) предсказания с компенсацией движения может осуществлять доступ к памяти (557) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (521), относящимися к блоку, эти отсчеты могут добавляться агрегатором (555) к выходному сигналу модуля (551) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (553) предсказания с компенсацией движения, в форме символов (521), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.
[0079] K выходным отсчетам агрегатора (555) можно применять различные методы контурной фильтрации в модуле (556) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (556) контурного фильтра в качестве символов (521) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0080] Модуль (556) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (512) визуализации, а также сохраняться в памяти (557) опорных изображений для использования в будущем предсказании между изображениями.
[0081] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (520)), буфер (558) текущего изображения может становиться частью памяти (557) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.
[0082] Видеодекодер (510) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0083] Согласно варианту осуществления, приемник (531) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (510) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0084] На фиг. 6 показана блок-схема видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) входит в состав электронного устройства (620). Электронное устройство (620) включает в себя передатчик (640) (например, передающую схему). Видеокодер (603) может использоваться вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0085] Видеокодер (603) может принимать отсчеты видео от источника (601) видеосигнала (который не входит в состав электронного устройства (620) в примере, показанном на фиг. 6), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (603). В другом примере источник (601) видеосигнала входит в состав электронного устройства (620).
[0086] Источник (601) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (603) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (601) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (601) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание касается отсчетов.
[0087] Согласно варианту осуществления, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (643) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (650), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизация скорости-искажения, …), размер изображения, схему групп изображений (GOP), максимальную зону поиска вектора движения и т.д. Контроллер (650) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (603), оптимизированному для той или иной конструкции системы.
[0088] В некоторых вариантах осуществления видеокодер (603) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (630) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (634) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (634) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0089] "Локальный" декодер (633) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (510), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 5, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включающие в себя буферную память (515) и анализатор (520), могут быть не полностью реализованы в локальном декодере (633).
[0090] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализ а/энтропийно го декодирования, также обязательно должна присутствовать, по существу в идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.
[0091] Согласно некоторым примерам, в ходе работы исходный кодер (630) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (632) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.
[0092] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (630). Операции машины (632) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 6), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (634) опорных изображений. Таким образом, видеокодер (603) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).
[0093] Предсказатель (635) может осуществлять поиски предсказания для машины (632) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (635) может работать на основе "блоки отсчетов × пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (635), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (634) опорных изображений.
[0094] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.
[0095] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0096] Передатчик (640) может буферизовать кодированную(ые) видеопоследовательность(и), созданные энтропийным кодером (645), для подготовки к передаче через канал (660) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (640) может объединять кодированные видеоданные от видеокодера (603) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0097] Контроллер (650) может управлять работа видеокодера (603). В ходе кодирования контроллер (650) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:
[0098] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0099] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0100] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.
[0101] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным предсказанием или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0102] Видеокодер (603) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (603) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.
[0103] Согласно варианту осуществления, передатчик (640) может передавать дополнительные данные с кодированным видео. Исходный кодер (630) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0104] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.
[0105] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.
[0106] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.
[0107] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree unit) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree block), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0108] На фиг. 7 показана схема видеокодера (703) согласно другому варианту осуществления изобретения. Видеокодер (703) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (703) используется вместо видеокодера (403) в примере, приведенном на фиг. 4.
[0109] В примере HEVC видеокодер (703) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (703) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интеррежиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (703) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (703) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (703) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0110] В примере, приведенном на фиг. 7, видеокодер (703) включает в себя интер-кодер (730), интра-кодер (722), вычислитель (723) остатка, переключатель (726), кодер (724) остатка, общий контроллер (721) и энтропийный кодер (725), соединенные друг с другом как показано на фиг. 7.
[0111] Интер-кодер (730) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0112] Интра-кодер (722) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (722) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.
[0113] Общий контроллер (721) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (703) на основе общих данных управления. Например, общий контроллер (721) определяет режим блока и выдает сигнал управления на переключатель (726) на основе режима. Например, когда режим является интра-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата интра-режима для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата внешнего предсказания для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0114] Вычислитель (723) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (722) или интер-кодера (730). Кодер (724) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (724) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (703) также включает в себя декодер (728) остатка. Декодер (728) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (722) и интер-кодером (730). Например, интеркодер (730) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (722) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0115] Энтропийный кодер (725) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (725) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (725) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.
[0116] На фиг. 8 показана схема видеодекодера (810) согласно другому варианту осуществления изобретения. Видеодекодер (810) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной
видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (810) используется вместо видеодекодера (410) в примере, приведенном на фиг. 4.
[0117] В примере, приведенном на фиг. 8, видеодекодер (810) включает в себя энтропийный декодер (871), интер-декодер (880), декодер (873) остатка, модуль (874) реконструкции и интра-декодер (872), соединенные друг с другом как показано на фиг. 8.
[0118] Энтропийный декодер (871) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (872) или интер-декодером (880), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (880); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (872). Информация остатка может подвергаться обратному квантованию и поступать в декодер (873) остатка.
[0119] Интер-декодер (880) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.
[0120] Интра-декодер (872) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.
[0121] Декодер (873) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (873) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (871) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0122] Модуль (874) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (873) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.
[0123] Заметим, что видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (403), (603) и (603) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[0124] II. Методы обработки преобразования
[0125] 1. Структура разбиения блока включающая в себя структуру разбиения в виде квадрадерева
[0126] Структура разбиения блока может именоваться деревом кодирования. В некоторых вариантах осуществления, благодаря использованию структуры квадрадерева, единица дерева кодирования (CTU) делится на единицы кодирования (CU) для адаптации к различным локальным характеристикам. Решение, кодировать ли область изображения с использованием предсказания между изображениями (временного) или внутри изображения (пространственного), принимается на уровне CU. Каждая CU может дополнительно делиться на одну, две или четыре единицы предсказания (PU) согласно типу разделения PU. Внутри одной PU применяется один и тот же процесс предсказания, и значимая информация передается в декодер на основе PU.
[0127] Получив остаточный блок с применением процесса предсказания на основании типа разделения PU, CU можно разбить на единицы преобразования (TU) согласно другой структуре квадрадерева. Как можно видеть, существуют различные принципы разбиения, включающие в себя CU, PU и TU. В некоторых вариантах осуществления, CU или TU может иметь только квадратную форму, тогда как PU может иметь квадратную или прямоугольную форму. В некоторых вариантах осуществления, один блок кодирования может дополнительно делиться на четыре квадратных субблока, и преобразование может осуществляться на каждом субблоке, т.е. TU. Каждая TU может дополнительно рекурсивно делиться на меньшие TU благодаря использованию структуры квадрадерева, которая называется остаточным квадрадеревом (RQT, residual quadtree).
[0128] На границе изображения, в некоторых вариантах осуществления можно использовать неявное разделение в виде квадрадерева, что позволяет продолжать разделение блока в виде квадрадерева, пока его размер не впишется в границу изображения.
[0129] 2. Структура разбиения блока в виде квадрадерево плюс двоичное дерево (QTBT)
[0130] В некоторых вариантах осуществления используется структура квадрадерево плюс двоичное дерево (QTBT). Структура QTBT исключает концепции множества типов разбиения (концепции CU, PU и TU), и поддерживает дополнительную гибкость для форм разбиения CU. В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму.
[0131] На фиг. 9А показана CTU (910), которая разбивается с использованием структуры (920) QTBT, показанной на фиг. 9В. Сначала CTU (910) разбивается согласно структуре квадрадерева. Краевые узлы квадрадерева дополнительно разбиваются согласно структуре двоичного дерева или структуре квадрадерева. В разделении в виде двоичного дерева может существовать два типа разделения, симметричное горизонтальное разделение и симметричное вертикальное разделение. Краевыми (листовыми) узлами двоичного дерева называются CU, которые могут использоваться для обработки предсказания и преобразования без какого-либо дополнительного разбиения. Соответственно, CU, PU и TU в структуре блока кодирования QTBT имеют одинаковый размер блока.
[0132] В некоторых вариантах осуществления, CU может включать в себя блоки кодирования (СВ) разных цветовых компонент.Например, одна CU содержит один СВ яркости и два СВ цветности в случае Р- и В-слайсов формата цветности 4:2:0. CU может включать в себя СВ единственной цветовой компоненты. Например, одна CU содержит единственный СВ яркости или только два СВ цветности в случае I-слайсов.
[0133] В некоторых вариантах осуществления для схемы разбиения QTBT задаются следующие параметры:
- размер CTU: размер корневого узла квадрадерева, например, тот же принцип, что и в HEVC.
- MinQTSize: минимально разрешенный размер краевого узла квадрадерева.
- MaxBTSize: максимально разрешенный размер корневого узла двоичногодерева.
- MaxBTDepth: максимально разрешенная глубина двоичного дерева.
- MinBTSize: минимально разрешенный размер краевого узла двоичного дерева.
[0134] В одном примере структуры разбиения QTBT, размер CTU устанавливается равным 128×128 отсчетов яркости с двумя соответствующими блоками 64×64 отсчетов цветности, MinQTSize устанавливается равным 16×16, MaxBTSize устанавливается равным 64×64, MinBTSize (для обеих ширины и высоты) устанавливается равным 4×4, и MaxBTDepth устанавливается равным 4. Сначала разбиение в виде квадрадерева применяется к CTU для генерации краевых узлов квадрадерева. Краевые узлы квадрадерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размера CTU). Если краевой узел квадрадерева имеет размер 128×128, он не будет дополнительно делиться в виде двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64). В противном случае краевой узел квадрадерева может дополнительно разбиваться в виде двоичного дерева. Поэтому краевой узел квадрадерева также является корневым узлом для двоичного дерева, и он имеет глубину двоичного дерева, равную 0.
[0135] Когда глубина двоичного дерева достигает MaxBTDepth (т.е. 4), дополнительное разделение не предусмотрено. Когда узел двоичного дерева имеет ширину, равную MinBTSize (т.е. 4), дополнительное горизонтальное разделение не предусмотрено. Аналогично, когда узел двоичного дерева имеет высоту, равную MinBTSize, дополнительное вертикальное разделение не предусмотрено. Краевые узлы двоичного дерева дополнительно обрабатываются посредством обработки предсказания и преобразования без какого-либо дополнительного разбиения. Согласно варианту осуществления, максимальный размер CTU составляют 256×256 отсчетов яркости.
[0136] На фиг. 9А и 9В, сплошные линии указывают разделение в виде квадрадерева и пунктирные линии указывают разделение в виде двоичного дерева. В каждом разделении (т.е. не краевой) узла двоичного дерева, один флаг сигнализируется для указания используемого типа разделения (т.е. горизонтального или вертикального). Например, 0 указывает горизонтальное разделение, и 1 указывает вертикальное разделение. Для разделения в виде квадрадерева, нет необходимости указывать тип разделения, поскольку разделение в виде квадрадерева всегда делит блок как горизонтально, так и вертикально для создания 4 субблоков одинакового размера.
[0137] В некоторых вариантах осуществления, схема QTBT поддерживает гибкость, чтобы яркость и цветность имели отдельные структуры QTBT. Например, для Р- и В-слайсов, блоки яркости и цветности в одной CTU совместно используют одну и ту же структуру QTBT. Однако, для I-слайсов, СТВ яркости разбивается на CU согласно структуре QTBT, и блоки цветности разбиваются на CU цветности другой структурой QTBT. Таким образом, CU в I-слайсе состоит из блока кодирования компоненты яркости или блоков кодирования двух компонент цветности, и CU в Р- или В-слайсе состоит из блоков кодирования всех трех цветовых компонент.
[0138] В некоторых вариантах осуществления, внешнее предсказание для малых блоков ограничено для уменьшения доступа к памяти компенсации движения. Например, двойное предсказание не поддерживается для блоков 4×8 и 8×4, и внешнее предсказание не поддерживается для блоков 4×4.
[0139] 3. Структура разбиения блока в виде троичного дерева (ТТ)
[0140] В некоторых вариантах осуществления, для разбиения изображения используется структура многотипного дерева (МТТ). Структура МТТ является более гибкой структурой дерева, чем структура QTBT. В МТТ, помимо квадрадерева и двоичного дерева, применяются горизонтальное центрально-боковое троичное дерево и вертикальное центрально-боковое троичное дерево, показанные на фиг. 9С и фиг. 9D, соответственно. Разбиение в виде троичного дерева может дополнять разбиение в виде квадрадерева и двоичного дерева. Например, троичное дерево разбиение способно захватывать объекты, находящиеся в центре блок, тогда как квадрадерево и двоичное дерево могут разделять, пересекая центры блоков. Ширина и высота разбиений, полученных посредством троичных деревьев, являются степенями 2, что избавляет от необходимости в дополнительном разбиении преобразования.
D
[0141] В примере, конструкция двухуровневого дерева в основном мотивирована снижением сложности. Например, сложность обхода дерева составляет T, где Т обозначает количество типов разделения, и D - глубина дерева.
[0142] 4. Примеры первичного преобразования
[0143] В некоторых вариантах осуществления, например, в HEVC, в качестве первичных преобразований используются 4-точечное, 8-точечное, 16-точечное и 32-точечное преобразования DCT-2. На фиг. 10A-10D показаны матрицы ядра преобразования 4-точечного, 8-точечного, 16-точечного и 32-точечного DCT-2, соответственно. Элементы этих матриц ядра преобразования могут быть представлены с использованием 8-битовых целых чисел, и поэтому эти матрицы ядра преобразования именуются 8-битовыми ядрами преобразования. Как показано, матрица ядра преобразования меньшего DCT-2 является частью матрицы большего DCT-2.
[0144] Матрицы ядра DCT-2 демонстрируют характеристики симметрии/антисимметрии. Соответственно, так называемая реализация "частичной бабочки" может поддерживаться для уменьшения количества счетчиков операции (операций умножения, сложения/вычитания, сдвигов). Идентичные результаты умножения матриц можно получать с использованием реализации частичной бабочки.
[0145] 5. Дополнительные примеры первичного преобразования
[0146] В некоторых вариантах осуществления, помимо вышеописанных 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, используются дополнительные 2-точечное и 64-точечное DCT-2. На фиг. 11А-11Е показана матрица 64×64 ядра преобразования 64-точечного преобразования DCT-2.
[0147] В некоторых вариантах осуществления, помимо преобразований DCT-2 и 4×4 DST-7, для кодирования остатка обоих интер- и интра-кодированных блоков используется адаптивное множественное преобразование (АМТ) (также известное как расширенное множественное преобразование (ЕМТ, enhanced multiple transform), или выбор множественных преобразований (MTS, multiple transform selection)). АМТ использует множественные выбранные преобразования из семейств дискретного косинусного преобразования (DCT) / дискретного синусного преобразования (DST) помимо преобразования DCT-2, например, матриц ядра преобразования DST-7 или преобразования DCT-8. На фиг. 12 показаны базисные функции преобразования из выбранных преобразований DST/DCT.
[0148] В некоторых вариантах осуществления, матрицы ядра преобразования DST/DCT, используемые в АМТ, представлены в 8-битовом формате. В некоторых вариантах осуществления, АМТ применяется к CU, где и, ширина и высота меньше или равна 32. Применять ли АМТ, может управляться флагом (например, mts_flag). Например, когда mts_flag равен 0, для кодирования остаточного блока применяется только DCT-2. Когда mts_flag равен 1, индекс (например, mts_idx), может дополнительно сигнализироваться с использованием 2 бинов для указания горизонтального и вертикального преобразований, подлежащих использованию.
[0149] На фиг. 13 показана таблица (1300), иллюстрирующая отношение отображения между значением индекса (например, mts_idx) и соответствующими горизонтальными или вертикальными преобразованиями. Строка (1301), где mts_idx имеет значение -1, соответствует сценарию, где флаг (например, mts_flag) равен 0, и используется преобразование DCT-2. Строки (1302)-(1305) где mts_idx имеет значение 0, 1, 2 или 3 соответствуют сценарию, где mts_flag равен 1. В двух правых столбцах таблицы (1300), 0 обозначает тип преобразования DCT-2, 1 обозначает тип преобразования DST-7, и 2 обозначает тип преобразования DCT 8.
[0150] На фиг. 14A-14D показаны матрицы ядра преобразования DST-7. На фиг. 15A-15D показаны матрицы ядра преобразования DCT-8.
[0151] 6. Режим кодирования с интра-субразбиением (ISP)
[0152] В некоторых вариантах осуществления используется режим кодирования с интра-субразбиением (ISP). В режиме кодирования с ISP, внутренне предсказанный блок яркости можно разбивать вертикально или горизонтально на 2 или 4 субчасти. Количество субчастей может зависеть от размера блока. На фиг. 16 показано количество субчастей в зависимости от размера блока. На фиг. 17 показан пример, где блок 4×8 или 8×4 разбивается на две субчасти. На фиг. 18 показан пример, где блок размером более 4×8 или 8×4 разбивается на четыре субчасти. В примере, все субчасти удовлетворяют условие наличия по меньшей мере 16 отсчетов. В примере, ISP не применяется к компонентам цветности.
[0153] В примере, для каждой из субчастей, на которые разбит блок кодирования, остаточный сигнал генерируется посредством энтропийного декодирования соответствующих коэффициентов, отправленных с кодера и затем их обратного квантования и обратного преобразования. Затем, первая из субчастей внутреннее предсказывается для генерации сигнала предсказания. Сигнал предсказания прибавляется к соответствующему остаточному сигналу первого разбиения для получения соответствующих реконструированных отсчетов. Затем реконструированные значения отсчета первого разбиения могут быть доступны для генерации предсказания второй из субчастей. Этот процесс может повторяться разбиение за разбиением, пока не будут реконструированы все субчасти из блока кодирования. В примере, все субчасти совместно используют один и тот же интра-режим.
[0154] Согласно варианту осуществления, режим кодирования с ISP тестируется только с интра-режимами, которые являются частью списка наиболее вероятных режимов (МРМ, most probable mode). Соответственно, если блок использует ISP, то флаг МРМ может предполагаться единице. Кроме того, когда ISP используется для определенного блока, то соответствующий список МРМ будет модифицироваться для исключения DC режима и для отдания приоритета горизонтальным интра-режимам для горизонтального разделения ISP и вертикальным интра-режимам для вертикального.
[0155] В режиме кодирования с ISP, каждое разбиение можно рассматривать как TU, поскольку преобразование и реконструкция осуществляются по отдельности для каждой субчасти.
[0156] На фиг. 19А-19 В показан пример синтаксических элементов (1900), сигнализируемых для режима кодирования с ISP. Как показано в кадре (1910), синтаксический элемент, например, intra_subpartitions_mode_flag, указывает, используется ли ISP. Синтаксический элемент, например, intra_subpartitions_split_flag, указывает направление разбиения (вертикальное или горизонтальное).
[0157] 7. Преобразование субблоков (SBT)
[0158] В некоторых вариантах осуществления, используется преобразование субблоков (SBT), также именуемое пространственно изменяющимся преобразованием (SVT, spatially varying transform). SBT можно применять к остаткам внешнего предсказания. В некоторых примерах, остаточный блок включен в блок кодирования и меньше блока кодирования. Таким образом размер преобразования в SBT меньше размера блока кодирования. Для области, не покрытой остаточным блоком, можно предположить нулевой остаток, и, таким образом, обработка преобразования на осуществляется.
[0159] На фиг. 20A-20D показаны типы субблока (SVT-H, SVT-V) (например, горизонтального или вертикального разбиения), размеры и позиции (например, левая половина, левая четверть, правая половина, правая четверть, верхняя половина, верхняя четверть, нижняя половина, нижняя четверть), поддерживаемые в SBT. Заштрихованные области, обозначенные буквой "А", являются остаточными блоками с преобразованием, и другие области предполагается нулевым остатком без преобразования.
[0160] В порядке примера, на фиг. 21A-21I показаны изменения, внесенные в текст спецификации стандарта видеокодирования (например, VVC) при использовании SBT. Добавленные тексты показаны в рамках (2101)-(2113). Как показано, дополнительные синтаксические элементы, например, дополнительные служебные биты cu_sbt_flag, cu_sbt_quad_flag, cusbthorizontalHag и cu_sbt_pos_flag, могут сигнализироваться для указания типа субблока (горизонтальный или вертикальный), размера (половина или четверть) и позиции (левая, правая, верхняя или нижняя), соответственно.
[0161] 8. YUV-форматы
L
L
[0162] На фиг. 22 показаны разные YUV-форматы (например, 4:4:4, 4:2:2, 4:1:1 и 4:2:0), используемые в некоторых вариантах осуществления. В примере, внутреннее предсказание на основе кросс-компонентной линейной модели используется для формата 4:2:0. Для получения прореженного отсчета яркости, соответствующего отсчету цветности, как показано на фиг. 22, можно применять шестиотводный интерполяционный фильтр. В примере, прореженный отсчет яркости Rec'[х, у] можно вычислить из близлежащих реконструированных отсчетов яркости (обозначенных Rec[x, у]), следующим образом:
L
L
L
Rec'[х,у]=(2×Rec-[2х, 2y]+2×Rec[2х,2у+1]+
L
L
Rec[2x-1,2y]+Rec [2x+1,2y]+
L
L
Rec[2x-1,2y+l]+Rec[2x+1,2y+1]+4)>>3
L
Прореженный отсчет яркости Rec'[x, у] может использоваться для предсказания отсчета цветности с использованием режима кросс-компонентной линейной модели.
[0163] 9. Единица данных виртуального конвейера (VPDU)
[0164] Единицы данных виртуального конвейера (VPDU) можно определить как неперекрывающиеся единицы яркости (L) М×М / цветности (С) N×N в изображении. В некоторых аппаратных реализациях декодера, последовательные VPDU обрабатываются одновременно множеством ступеней конвейера. Разные ступени одновременно обрабатывают разные VPDU. Размер VPDU может быть примерно пропорционален размеру буфера на ступенях конвейера, благодаря чему желательно поддерживать размер VPDU на определенном уровне (например, 64×64 или менее). В некоторых декодерах размер VPDU задается равным максимальному размеру единицы преобразования (TU). Увеличение максимального размера TU от 32×32-L/16xl6-C в HEVC до 64×64-L/32×32-C в современном VVC может дать выигрыш в кодировании, что ожидаемо приводит к 4-кратному увеличению размера VPDU по сравнению с HEVC. Однако структуры ВТ и ТТ, которые применяются в VVC для достижения дополнительных выигрышей в кодировании, можно рекурсивно применять к блокам дерева кодирования 128×128-L/64×64-C, что приводит к 16-кратному увеличению размера VPDU (128×128-L/64×64-C) по сравнению с HEVC.
[0165] На фиг. 23 показаны некоторые запрещенные разбиения ТТ и ВТ.
[0166] Для поддержания размера VPDU равным 64×64 отсчета яркости, в некоторых вариантах осуществления применяются некоторые ограничения разбиения (с модификацией сигнализации синтаксиса):
- разделение ТТ не разрешено для CU, когда ширина или высота, или и ширина, и высота равны 128.
- для CU 128×N с N≤64 (т.е. когда ширина равна 128, и высота меньше 128), горизонтальное разделение ВТ не разрешено.
- для CU N×128 с N≤64 (т.е. когда высота равна 128, и ширина меньше 128), вертикальное разделение ВТ не разрешено.
[0167] III. Методы разбиения и обработки блока преобразования
[0168] В некоторых вариантах осуществления используется фиксированный максимально допустимый размер единицы преобразования (TU) или максимальный размер TU (например, 64×64 пикселя или отсчета). В некоторых вариантах осуществления применяются регулируемые или настраиваемые максимальные размеры TU, поскольку максимальный размер TU может оказывать влияние на сложность оборудования, например, для реализации кодера (например, размер промежуточного буфера конвейера, количество умножителей и пр.). Например, помимо размера 64×64 отсчета, максимальный размер TU может принимать другие значения, например, 32×32 отсчета, 16×16 отсчетов и т.п.
[0169] В некоторых стандартах видео может использоваться SBT и ISP. Например, в SBT, флаг SPS, например, sps_sbt_max_size_64_flag, сигнализируется для указания, является ли наибольший размер SBT длиной 32 или длиной 64. Когда sps_sbt_max_size_64_flag равен TRUE (т.е. наибольший размер SBT является длиной 64), и максимальный размер TU составляет 32 точки, может инициироваться отказ кодера. В целом, размер "длина L" или "L точек" означает максимальный размер CU, TU, СВ, ТВ, VPDU и т.п.Например, когда максимальный размер TU составляет 32 точки или длину 32, ширина и высота TU меньше или равны 32.
[0170] В некоторых вариантах осуществления, режим ISP разрешен для различных размеров CU, однако когда максимальный размер TU задается меньшим 64, может возникать конфликт, осуществляется ли разделение с неявным преобразованием или осуществляется разделение с явным преобразованием с использованием ISP с сигнализацией. Например, когда максимальный размер TU равен 16, для CU 64×16, без ISP, CU может неявно делиться на четыре TU 16×16. С ISP, CU 64x16 может делиться с вертикальным ISP и, таким образом, может делиться на четыре TU 16×16, но с использованием сигнализации.
[0171] Когда максимальный размер TU меньше 64×64, порядок обработки TU требуется координировать с реализацией VPDU.
[0172] Описанные здесь варианты осуществления могут использоваться по отдельности или объединяться в любом порядке. Дополнительно, варианты осуществления могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами) в кодере, декодере и т.п. В одном примере, один или более процессоров выполняют программу, которая хранится на компьютерно-считываемом носителе.
[0173] В описании изобретения, элемент высокоуровневого синтаксис (HLS, high-level syntax) может означать набор параметров видео (VPS, Video Parameter Set), набор параметров последовательности (SPS, Sequence Parameter Set), набор параметров изображения (PPS, Picture Parameter Set), заголовок слайса, заголовок тайла, заголовок группы тайлов и т.п. Заголовок CTU может относиться к синтаксическому(им) элементу(ам), сигнализируемому(ым) для CTU, например, в качестве информации заголовка. В примере, размер CTU является максимальным размером CU.
[0174] В целом, когда размер яркости (представленный отсчетами яркости) определенной единицы (например, TU, CU), известен, можно получить соответствующий размер цветности, который задается количеством отсчетов цветности. В примере, используется YUV-формат 4:2:0, и CU имеет размер CU 64×64 отсчетов яркости (или 64×64-L). Соответственно, CU имеет размер CU 32×32 отсчета цветности (или 32×32-С). Размер CU может обозначаться 64×64-L, 32×32-С или 64×64-L/32×32-C. Аналогично, TU имеет размер TU 64×64 отсчета яркости (или 64×64-L). Соответственно, TU имеет размер TU 32×32 отсчета цветности (или 32×32-С). Размер TU может обозначаться 64×64-L, 32×32-С или 64×64-L/32×32-C. Например, TU включает в себя блок преобразования яркости (ТВ) и два ТВ цветности. ТВ яркости имеет размер 64×64-L, и каждый из ТВ цветности имеет размер 32×32-С. В целом, варианты осуществления и способы, описанные для CU или TU, могут быть надлежащим образом адаптированы к СВ и ТВ, соответственно.
[0175] CU может включать в себя блок яркости 64×64-L и два блока цветности 32×32-С. В нижеследующем описании размер TU представлен с использованием отсчетов яркости в TU. Например, максимальный размер TU М отсчетов означает максимальный размер TU М отсчетов яркости. Аналогично, другие размеры, например, размер VPDU и размер CU, также представлены с использованием соответствующих отсчетов яркости в соответствующих единицах, например, VPDU и CU, соответственно. Конечно, размер TU, размер VPDU, размер CU и т.п. можно представить с использованием отсчетов цветности или комбинации отсчетов яркости и цветности.
[0176] Размер блока может относиться к ширине, высоте или площади блока. Например, максимальный размер TU может относиться к ширине, высоте или площади максимальной TU. В целом, TU, CU, VPDU и т.п. может иметь любую подходящую форму, включая прямоугольную форму, квадратную форму, L-обратную форму или любую подходящую форму. В случае неправильной формы блока, например, L-образной формы, размер блока может указывать площадь блока.
[0177] В некоторых вариантах осуществления, размер VPDU и/или максимальный размер TU могут сигнализироваться в битовом потоке кодированного видео, например, в SPS и PPS. Как описано выше, размер VPDU и/или максимальный размер TU могут сигнализироваться в отсчетах яркости. Альтернативно, размер VPDU и/или максимальный размер TU могут сигнализироваться в отсчетах цветности.
[0178] В некоторых вариантах осуществления, размер VPDU и/или максимальный размер TU может храниться на кодере и/или декодере, таким образом, размер VPDU и/или максимальный размер TU не сигнализируются. В одном примере, размер VPDU и/или максимальный размер TU могут храниться в определениях профиля и/или уровня. Размер VPDU и/или максимальный размер TU могут храниться в виде отсчетов яркости или цветности.
[0179] В некоторых вариантах осуществления, VPDU совместно используют одинаковый размер, но могут иметь разные формы. Например, когда размер VPDU равен 4096 отсчетов яркости, VPDU может иметь форму квадрата 64×64 или форму прямоугольника 32×128. VPDU также может иметь другие формы, например, L-образную форму, при условии, что размер VPDU равен 4096 отсчетов яркости. Вышеприведенное описание также применимо к определенным TU.
[0180] 1. Пример А
[0181] Согласно аспектам изобретения, максимально допустимый размер TU (также именуемый максимальным размером TU) составляет М отсчетов (например, размер М×М отсчетов). В примере, максимальная ширина и максимальная высота TU равна М. В примере, максимальная площадь TU равна М×М. Размер единицы данных обработки (например, размер VPDU) составляет K отсчетов (например, K×K отсчетов). В примере, максимальная ширина и максимальная высота единицы данных обработки равна K. В примере, максимальная площадь единицы данных обработки равна K×K. CU размерами W×H имеет ширину W отсчетов и высоту Н отсчетов. CU можно разбить на множественные суб-единицы, именуемые суб-единицами обработки (SPU), на основании размера CU и размера K единицы данных обработки. CU можно разбить на SPU с использованием любой подходящий структуры разбиения или комбинации любых подходящих структур разбиения, например, QTBT, QT, ВТ, ТТ или их комбинации. SPU могут иметь одинаковый размер или разные размеры.
[0182] Согласно варианту осуществления, CU разбивается на SPU, когда ширина W или высота Н больше K. В примере, SPU имеют одинаковый размер (т.е. размер SPU), и каждая SPU имеет размер Min(W, K) × Min(H, K) отсчетов. Таким образом, ширина каждой SPU составляет минимум из W и K, и высота SPU составляет минимум из Н и K. В некоторых примерах, до разбиения CU может определяться, осуществлять ли разбиение CU, на основании размера CU и размера K единицы данных обработки.
[0183] SPU в CU можно дополнительно разбивать на TU размером, например, М×М отсчетов. В некоторых примерах, SPU можно разбить на TU размером Min(W, K, М) × Min(H, K, М). В некоторых примерах, до разбиения SPU может определяться, осуществлять ли разбиение SPU, на основании размера SPU и максимального размера TU М. SPU можно разбивать с использованием любой подходящий структуры разбиения или комбинации любых подходящих структур разбиения, например, QTBT, QT, ВТ, ТТ или их комбинации. Согласно аспектам изобретения, одна или более структур разбиения для разбиения SPU может определяться на основании размера SPU и максимального размера TU М. В примере, SPU можно рекурсивно делить на TU с использованием определенных одной или более структур разбиения.
[0184] В примере, когда ширина и высота SPU больше, чем максимальный размер TU М, SPU делится на TU размером МхМ с использованием структуры разбиения в виде квадрадерева. SPU можно рекурсивно делить на TU с использованием структуры разбиения в виде квадрадерева.
[0185] В примере, когда ширина SPU больше М, и высота SPU равна М, SPU делится на TU размером М×М с использованием структуры вертикального разбиения в виде двоичного дерева. Например, М равно 32, и SPU имеет размер 64×32. Таким образом, ширина SPU равна 64 и высота SPU равна 32. Соответственно, структура вертикального разбиения в виде двоичного дерева может использоваться для разделения SPU на две TU 32×32. SPU можно рекурсивно делить на TU с использованием структуры вертикального разбиения в виде двоичного дерева.
[0186] В примере, когда ширина SPU больше М, и высота SPU меньше М, SPU может делиться на TU с использованием структуры вертикального разбиения в виде двоичного дерева, где ширина TU равна М, и высота TU равна высоте SPU.
[0187] В примере, когда высота SPU больше М, и ширина SPU равна М, SPU делится на TU размером М×М с использованием структуры горизонтального разбиения в виде двоичного дерева. SPU можно рекурсивно делить на TU с использованием структуры горизонтального разбиения в виде двоичного дерева. Например, М равно 32, и SPU имеет размер 32×64. Таким образом, ширина SPU равна 32 и высота SPU равна 64. Соответственно, структура горизонтального разбиения в виде двоичного дерева может использоваться для разделения SPU на две TU 32×32.
[0188] Когда высота SPU больше М, и ширина SPU меньше М, SPU может делиться на TU с использованием структуры горизонтального разбиения в виде двоичного дерева, где высота TU равна М, и ширина TU равна ширине SPU.
[0189] Синтаксис дерева преобразования на фиг. 24 демонстрирует пример разделения SPU, и порядок обработки, используемый для обработки TU.
[0190] В примере, CU размером W×H можно разбивать в два этапа. На первом этапе, CU разбивается на SPU, где каждая SPU имеет размер Min(W, K) × Min(H, K). Затем, на втором этапе, каждая SPU дополнительно разбивается на TU, где каждая TU имеет размер М×М.
[0191] При обработке TU в CU, SPU в CU могут сканироваться и обрабатываться в первом порядке сканирования (также именуемом первым порядком). Дополнительно, в каждой из SPU, TU могут сканироваться и обрабатываться во втором порядке (также именуемом вторым порядком).
[0192] В различных вариантах осуществления, первый порядок для обработки SPU может быть растровым порядком сканирования, вертикальным порядком сканирования (например, сканирует SPU по столбцам слева направо или наоборот), зигзагообразным порядком, диагональным порядком сканирования и т.п.
[0193] В различных вариантах осуществления, второй порядок для обработки TU в каждой SPU может быть растровым порядком сканирования, вертикальным порядком сканирования (например, сканирует TU по столбцам слева направо или наоборот), зигзагообразным порядком, диагональным порядком сканирования и т.п.
[0194] Первый порядок и второй порядок могут быть одинаковыми или разными в разных вариантах осуществления. Например, первый порядок для обработки SPU и второй порядок для обработки ТВ в каждой из SPU являются растровым порядком сканирования согласно варианту осуществления.
[0195] 2. Пример В
[0196] На фиг. 25 показана CU (2510) размером WxH отсчетов, где W=128, и Н=64. Максимальный размер TU М равен 32 отсчетам. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Сначала CU (2510) делят на первую SPU 64×64 (2520) и вторую SPU 64×64 (2530). Затем первая SPU (2520) и вторая SPU (2530) могут дополнительно разбиваться HaTU 0-7, каждая из которых имеет размер М×М отсчетов. TU 0-3 включены в первую SPU (2520), и TU 4-7 включены во вторую SPU (2530).
[0197] Согласно первому порядку, сначала первая SPU (2520) может обрабатываться, а затем вторая SPU (2530). В первой SPU (2520) или второй SPU (2530), второй порядок, используемый для обработки TU 0-3 или 4-7, является растровым порядком сканирования. Соответственно, TU 0-7 обрабатываются в порядке, указанном стрелкой (2551). Первый порядок и/или второй порядок может определяться явно (например, посредством сигнализации с кодера в декодер) или неявно.
[0198] В некоторых примерах, разбиение CU на SPU, где каждая из SPU дополнительно включает в себя TU, как описано выше, повышает эффективность кодирования. Согласно фиг. 25, в примере, первой SPU (2520) является первая VPDU, и второй SPU (2530) является вторая VPDU. Каждая из первой VPDU (или первой SPU (2520)) и второй VPDU (или второй SPU (2530)) может последовательно проходить через многоступенчатый конвейер, включающий в себя первую ступень (например, энтропийного декодирования), вторую ступень (например, деквантования), третью ступень (например, обратного преобразования) и т.п. Согласно первому порядку, показанному на фиг. 25, первую SPU (2520) следует обрабатывать до второй SPU (2530), таким образом, первая SPU (2520) обрабатывается на первой ступени и затем поступает на вторую ступень. В примере, когда первая SPU (2520) обрабатывается на второй ступени, вторая SPU (2530) обрабатывается на первой ступени для повышения эффективности кодирования. Затем первая SPU (2520) поступает на третью ступень, и вторая SPU (2530) может поступать на вторую ступень. Когда первая SPU (2520) обрабатывается на третьей ступени, вторая SPU (2530) может обрабатываться на второй ступени. Вышеприведенное описание базируется на использовании VPDU и многоступенчатого конвейера в порядке примера и может быть надлежащим образом адаптировано к другим архитектурам или способам видеокодирования. Вышеприведенное описание можно адаптировать к случаю, когда первая SPU (2520) включена в первую VPDU, и вторая SPU (2530) включена во вторую VPDU. По меньшей мере часть обработки SPU на разных ступенях осуществляется одновременно.
[0199] Как описано выше, когда размер SPU больше размера TU, множество TU в CU можно группировать в единицу обработки данных, например, SPU (или VPDU), где SPU могут обрабатываться на многоступенчатом конвейере, который позволяет параллельно обрабатывать (или одновременно обрабатывать) последовательные SPU. В некоторых примерах, описание можно модифицировать следующим образом: CU разбивается на первые единицы. Дополнительно, каждую из первых единиц можно разбить на вторые единицы. Каждая из вторых единиц может делиться на третьи единицы. В примере, размер первых единиц больше размера вторых единиц, и размер вторых единиц больше размера третьих единиц. Такое разбиение может быть полезно, когда первый многоступенчатый конвейер вложен во второй многоступенчатый конвейер.
[0200] 3. Пример С
[0201] На фиг. 26А показана CU (2610А) размером W×H отсчетов, где W=128, и Н=32. Максимальный размер TU М составляет 16 отсчетов. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Минимум из W и K равен 64, тогда как минимум из Н и K равен 32. Таким образом, размер SPU может определяться равным 64×32 отсчета, например, для выравнивания блоков преобразования с VPDU. CU (2610A) можно разбить на левую SPU (2620А) и правую SPU (2630А), каждая из которых имеет размер 64×32 отсчета. Две SPU (2620А) и (2630А) могут сканироваться и обрабатываться в порядке слева направо.
[0202] Каждая из двух SPU (2620А) и (2630А) может дополнительно делиться на TU, каждая из которых имеет максимальный размер TU, 16×16 отсчетов. Как показано, левая SPU (2620А) разбивается на TU 0-7, тогда как правая SPU (2630А) разбивается на TU 8-15. В SPU (2620А), TU 0-7 могут обрабатываться в растровом порядке сканирования. В SPU (2630А), TU 8-15 могут обрабатываться в растровом порядке сканирования. Соответственно, TU 0-15 могут сканироваться и обрабатываться в порядке, указанном стрелками (2651А), где сначала обрабатывается TU 0, и TU 15 обрабатывается после обработки TU 0-14.
[0203] 4. Пример D
[0204] На фиг. 26В показана CU (2610В) размером W×H отсчетов, где W=128, и Н=32. Максимальный размер TU М составляет 16 отсчетов. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Аналогично примеру, приведенному на фиг. 25, CU (2610В) можно разбить на две SPU (2620В) и (2630В), каждая из которых может дополнительно разбиваться на TU. SPU (2620В) и (2630В) могут обрабатываться слева направо в том же порядке, что и на фиг. 25. Однако, в отличие от примера, приведенного на фиг. 25, TU 0-7 в SPU (2620В) обрабатываются в зигзагообразном порядке сканирования, и TU 8-15 в SPU (2630В) обрабатываются в зигзагообразном порядке сканирования.
[0205] 5. Пример Е
[0206] На фиг. 27 показана блок-схема операций, где представлен процесс (2700) разбиения и обработки блок преобразования согласно варианту осуществления изобретения. Процесс (2700) может использоваться при реконструкции блока, кодированного в интра-режиме или интер-режиме. В различных вариантах осуществления, процесс (2700) выполняются схемой обработки, например, схемой обработки на оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеокодера (403), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), схемой обработки, которая осуществляет функции видеокодера (603), и пр. В некоторых вариантах осуществления, процесс (2700) осуществляется в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2700). Процесс начинается на этапе (S2701) и переходит к этапу (S2710).
[0207] На этапе (S2710), кодированная информация CU в изображении может декодироваться из битового потока кодированного видео. Кодированная информация может указывать ширину W отсчетов и высоту Н отсчетов CU.
[0208] На этапе (S2720), CU может разбиваться на SPU, например, когда по меньшей мере одна из ширины W и высоты Н CU больше размера K единицы данных обработки, например, как описано со ссылкой на фиг. 24-26. На основании размера K единицы данных обработки и размера CU, может определяться размер SPU. Ширина SPU может быть наименьшей из W и K, и высота SPU может быть наименьшей из Н и K. Соответственно, CU может разбиваться на SPU, каждая из которых имеет определенные ширину и высоту. Например, когда W равно 128, Н равно 64, и K равно 64, CU может делиться на первую SPU 64×64 и вторую SPU 64×64. Например, единицей обработки данных может быть VPDU, и, таким образом K может быть размером VPDU.
[0209] На этапе (S2730), одна или более структур разбиения для разбиения каждой из SPU может определяться, например, на основании одного или комбинации ширины и высоты SPU и максимального размера TU, составляющего М отсчетов. В примере, по меньшей мере одна из ширины и высоты SPU больше М.
[0210] Как описано выше, любая подходящая структура разбиения может использоваться для разбиения или разделения каждой из SPU. В примере, когда ширина и высота SPU больше, чем М, одна или более структур разбиения определяется как структура разбиения в виде квадрадерева. В примере, когда ширина SPU больше М, и высота SPU не больше М, одна или более структур разбиения определяется как структура вертикального разбиения в виде двоичного дерева. В примере, когда высота SPU больше М, и ширина SPU не больше М, одна или более структур разбиения определяется как структура горизонтального разбиения в виде двоичного дерева.
[0211] На этапе (S2740), каждую из SPU можно разбить на TU на основании определенной одной или более структур разбиения. В примере, соответствующая SPU может рекурсивно разбиваться на TU с использованием определенных одной или более структур разбиения.
[0212] На этапе (S2750), TU, полученные разбиением SPU, обрабатываются согласно порядку обработки. Например, SPU могут обрабатываться согласно первому порядку, и TU в каждой из SPU могут обрабатываться согласно второму порядку, как описано выше. Остаточные данные каждой TU может определяться различными операциями декодирования (например, энтропийным декодированием коэффициентов преобразования, обратным квантованием или деквантованием, обратным преобразованием и т.п.). Процесс (2700) может переходить к (S2799) и завершаться.
[0213] Процесс (2700) описан с использованием CU в порядке примера. Процесс (2700) может быть надлежащим образом адаптирован для СВ, например, блока яркости, блока цветности и т.п. В целях краткости, описание применительно к СВ опущено.
[0214] Процесс (2700) может быть надлежащим образом адаптирован. Например, один или более этапов можно модифицировать, исключать или объединять. Например, этапы (S2730) и (S2740) могут объединяться в единый этап. Также можно добавлять дополнительный(е) этап(ы). Порядок выполнения процесса (2700) также можно модифицировать.
[0215] IV. Компьютерная система
[0216] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 28 показана компьютерная система (2800), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.
[0217] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[0218] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0219] Компоненты компьютерной системы (2800), показанные на фиг. 28, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (2800).
[0220] Компьютерная система (2800) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).
[0221] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (2801), мыши (2802), сенсорной панели (2803), сенсорного экрана (2810), информационной перчатки (не показана), джойстика (2805), микрофона (2806), сканера (2807), камеры (2808).
[0222] Компьютерная система (2800) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (2810), информационной перчатки (не показана) или джойстика (2805), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (2809), наушники (не показаны)), устройства визуального вывода (например, экраны (2810), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).
[0223] Компьютерная система (2800) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (2820) с носителями (2821) CD/DVD и т.п., карты (2822) флэш-памяти, сменный жесткий диск или твердотельный диск (2823), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0224] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.
[0225] Компьютерная система (2800) также может включать в себя интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (2849) (например, USB-порты компьютерной системы (2800)); другие обычно встраиваются в ядро компьютерной системы (2800) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (2800) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0226] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (2840) компьютерной системы (2800).
[0227] Ядро (2840) может включать в себя один или более центральных процессоров (CPU) (2841), графические процессоры (GPU) (2842), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (2843), аппаратные ускорители
(2844) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (2845), оперативной памятью (2846), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (2847), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (2848). В некоторых компьютерных системах системная шина (2848) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (2848) ядра, либо через периферийную шину (2849). Архитектуры периферийной шины включают в себя PCI, USB и т.п.
[0228] CPU (2841), GPU (2842), FPGA (2843) и ускорители (2844) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (2845) или RAM (2846). Переходные данные также могут храниться в RAM (2446), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (2847) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (2841), GPU (2842), хранилищем (2847) данных большой емкости, ROM (2845), RAM (2846) и т.п.
[0229] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0230] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (2800), и, в частности, ядро (2840) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (2840), носящим долговременный характер, например, внутренним хранилищем (2847) данных большой емкости или ROM (2845). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (2840). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (2840) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (2846), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (2844)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (1С, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.
Приложение А: аббревиатуры
ASIC: специализированная интегральная схема
BMS: набор эталонов
CANBus: шина контроллерной сети
CBF: кодированный блок флаг
CD: компакт-диск
CPU: центральный процессор
CRT: кинескоп
СТВ: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
DVD: цифровой видеодиск
FPGA: вентильная матрица, программируемая пользователем
GOP: группа изображений
GPU: графические процессоры
GSM: глобальная система мобильной связи
HEVC: высокопроизводительное видеокодирование
HRD: гипотетический опорный декодер
ISP: интра-субразбиение
IС: интегральная схема
JEM: модель совместного исследования
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LTE: проект долгосрочного развития систем связи
МРМ: наиболее вероятный режим
MV: вектор движения
OLED: органический светодиод
РВ: блок предсказания
PCI: межсоединение периферийных компонентов
PLD: программируемое логическое устройство
PU: единица предсказания
RAM: оперативная память
ROM: постоянная память
SBT: преобразование субблоков
SEI: информация дополнительного улучшения
SNR: отношение сигнал/шум
SSD: твердотельный привод
TU: единица преобразования,
USB: универсальная последовательная шина
VPDU: единица данных виртуального конвейера
VUI: информация пригодности видео
VVC: универсальное видеокодирование
[0231] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.