Диапазон минимального размера блока кодирования при кодировании видео
MINIMUM CODING BLOCK SIZE RANGE FOR VIDEO ENCODING

Включение посредством ссылки
[1] В настоящем раскрытии испрашивается приоритет заявки на патент США №17 / 078,302 «ДИАПАЗОН МИНИМАЛЬНОГО РАЗМЕРА БЛОКА КОДИРОВАНИЯ В ВИДЕО КОДИРОВАНИИ», поданной 23 октября 2020 г., в которой испрашивается приоритет предварительной заявки США №62 / 928,150, «СПОСОБЫ НА ОСНОВЕ МИНИМАЛЬНОГО РАЗМЕРА БЛОКА КОДИРОВАНИЯ», поданной 30 октября 2019 г. Содержание предшествующих заявок полностью включены в настоящее описание посредством ссылки.
Область техники, к которой относится изобретение
[2] Настоящее раскрытие описывает варианты осуществления, в основном относящиеся к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста раскрытия. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе «Уровень техники», а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве известного уровня техники в отношении настоящего раскрытия.
[4] Кодирование и декодирование видео могут выполняться с использованием межкадрового предсказания с компенсацией движения. Несжатое цифровое видео может включать в себя серию изображений, при этом каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов сигнала яркости и связанных отсчетов сигнала цветности. Серия изображений может иметь фиксированную или переменную частоту изображения (в разговорной речи также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет определенные требования к битрейту. Например, для видео 1080р60 4: 2: 0 с частотой 8 бит на отсчет (разрешение отсчета сигнала яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ пространства памяти.
[5] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к пропускной способности и/или пространству памяти, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к технологиям, в которых из сжатого исходного сигнала может быть восстановлена точная копия исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал пригодным для предполагаемого применения. В случае видео широко используется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, для пользователей определенных потребительских стриминговых приложений допустимы более высокие искажения, чем для пользователи приложений вещательного телевидения. Достижимая степень сжатия может отражать следующее: более высокое допустимое/приемлемое искажение может давать более высокую степень сжатия.
[6] Кодер и декодер видео могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[7] Технологии видеокодеков могут включать в себя методы, известные как интра-кодирование. При интра-кодировании значения отсчетов представляются без опоры на отсчеты или другие данные из ранее восстановленных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, это изображение может быть интра-изображением. Интра-изображения и их производные, такие как изображения с обновлением независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном битовом потоке видео и сеанса видео или как статичное изображение. Отсчеты интра-блока могут подвергаться преобразованию, и коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Интра-предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.
[8] Традиционное интра-кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует интра-предсказание. Однако некоторые новые технологии сжатия видео включают в себя методы, согласно которым пытаются, например, из окружающих отсчетных данных и/или метаданных, полученных во время кодирования / декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами «интра-предсказания». Следует обратить внимание, что по меньшей мере в некоторых случаях интра-предсказание использует опорные данные только из текущего восстанавливаемого изображения, а не из опорных изображений.
[9] Может быть много разных форм интра-предсказания. Когда в данной технологии кодирования видео можно использовать более одного из таких методов, используемый метод может кодироваться в режиме интра-предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, и могут быть закодированы индивидуально или включены в дескриптор режима. То, какой дескриптор использовать для данной комбинации режима / подрежима / параметра, может повлиять на повышение эффективности кодирования за счет интра-предсказания, как и технология энтропийного кодирования, используемая для преобразования дескрипторов в битовый поток.
[10] Определенный режим интра-предсказания был введен в Н.264, усовершенствован в Н.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM), универсальное кодирование видео (VVC) и набор тестов (BMS). Блок предиктора может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения отсчетов соседних отсчетов копируются в блок предиктора в соответствии с направлением. Ссылка на используемое направление может быть закодирована в битовом потоке или сама может быть предсказана.
[11] Отображение битов направлений интра-предсказания в кодированном битовом потоке видео, которые представляют направление, может отличаться от одной технологии кодирования видео к другой; и может варьироваться, например, от простого прямого отображений направления предсказания в режим интра-предсказания, в дескрипторы, до сложных адаптивных схем, включающих наиболее вероятные режимы, и аналогичные методы. Однако во всех случаях могут быть определенные направления, которые статистически менее вероятны в видеоконтенте, чем некоторые другие направления. Поскольку целью сжатия видео является уменьшение избыточности, эти менее вероятные направления в хорошо работающей технологии кодирования видео будут представлены большим числом битов, чем более вероятные направления.
[12] Компенсация движения может представлять собой технологию сжатия с потерями и может относиться к технологиям, в которых блок отсчетных данных из ранее восстановленного изображения или его части (опорное изображение) после пространственного сдвига в направлении, указанном посредством вектора движения (далее MV), используется для предсказания нового восстановленного изображения или части изображения. В некоторых случаях референтное изображение может быть таким же, как восстанавливаемое в настоящий момент изображение. MV могут иметь два измерения X и Y или три измерения, третье из которых является показателем используемого референтного изображения (последнее, косвенно, может быть измерением времени).
[13] В некоторых технологиях сжатия видео MV, применимый к определенной области отсчетных данных, может быть предсказан из других MV, например, из тех, которые относятся к другой области отсчетных данных, пространственно смежных с восстанавливаемой областью, и предшествующих этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая степень сжатия. Предсказание MV может работать эффективно, например, за счет, что при кодировании входного видеосигнала, полученного с камеры (известного как естественное видео), существует статистическая вероятность, что области, которые больше области, к которой применим один MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из векторов движения соседней области. Это приводит к тому, что MV, найденный для данной области, похож или совпадает с MV, предсказанным из окружающих MV, и который, в свою очередь, может быть представлен после статистического кодирования в меньшем количестве битов, чем то, которое было бы использовано при кодировании MV напрямую. В некоторых случаях предсказание MV может быть примером сжатия без потерь сигнала (а именно: MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях само предсказание MV может быть с потерями, например, из-за ошибок округления при вычислении прогностического параметра из нескольких окружающих MV.
[14] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, «Высокоэффективное кодирование видео», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагает Н.265, здесь описывается технология, далее именуемая «пространственным слиянием».
[15] Обращаясь к фиг. 1, текущий блок (101) содержит отсчеты, которые были обнаружены кодировщиком в процессе поиска движения, в качестве предсказанных из предыдущего блока того же размера, который был пространственно сдвинут.Вместо, чтобы кодировать этот MV напрямую, MV может быть получен из метаданных, связанных с одним или несколькими референтными изображениями, например, из самого последнего (в порядке декодирования) референтного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных А0, А1 и В0, B1, В2 (102 - 106 соответственно). В Н.265 предсказания MV может использовать прогностические параметры из того же референтного изображения, что и соседний блок.
Раскрытие сущности изобретения
[16] Аспекты раскрытия относятся к способам и устройствам для кодирования/декодирования видео. В некоторых примерах устройство для декодирования видео включает в себя электронную схему. Схема конфигурирована для приема первого элемента синтаксиса из битового потока кодированного видео. Первый элемент синтаксиса включен в набор параметров или заголовок изображения и указывает минимальный размер блока кодирования яркости в примере. Электронная схема дополнительно конфигурирована для проверки, находится ли минимальный размер блока кодирования яркости в пределах диапазона допустимых минимальных размеров блока кодирования яркости, имеющего верхний предел меньше, чем максимальный допустимый размер единицы дерева кодирования (CTU), и декодировать кодированное изображение в кодированном видео на основе минимального размера блока кодирования яркости. Кодированное изображение ссылается на набор параметров или включает заголовок изображения в примере. В варианте осуществления верхний предел диапазона допустимых минимальных размеров блока кодирования яркости может быть предопределенным максимального допустимым минимальным размером блока кодирования яркости.
[17] В варианте осуществления электронная схема дополнительно конфигурирована для приема второго элемента синтаксиса из битового потока кодированного видео. Второй элемент синтаксиса может указывать размер CTU и может быть включен в набор параметров. Когда размер CTU больше, чем предопределенный максимальный допустимый минимальный размер блока кодирования яркости, предопределенный максимальный допустимый минимальный размер блока кодирования яркости используется в качестве верхнего предела диапазона допустимых минимальных размеров блока кодирования яркости. Когда размер CTU меньше предопределенного максимального допустимого минимального размера блока кодирования яркости, размер CTU используется в качестве верхнего предела диапазона допустимых минимальных размеров блока кодирования яркости.
[18] В варианте осуществления первый элемент синтаксиса указывает значение двоичного логарифма минимального размера блока кодирования яркости минус 2. Электронная схема дополнительно конфигурирована для проверки, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне от 0 до N включительно. N является целым числом, а N+2 представляет собой значение двоичного логарифма предварительно определенного максимального допустимого минимального размера блока кодирования яркости.
[19] В одном варианте осуществления первый элемент синтаксиса указывает значение двоичного логарифма минимального размера блока кодирования яркости минус 2, и схема дополнительно конфигурирована для проверки, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне От 0 до Min(N, log2_ctu_size_minus5+3) включительно. N - целое число, N+2 представляет значение двоичного логарифма предопределенного максимального допустимого минимального размера блока кодирования яркости, a log2_ctu_size_minus5+5 представляет значение двоичного логарифма размера CTU кодированного видео. В варианте осуществления N равно 4.
[20] В одном варианте осуществления первый элемент синтаксиса указывает значение двоичного логарифма минимального размера блока кодирования яркости минус 2, и электронная схема дополнительно конфигурирована для проверки, превышает ли значение двоичного логарифма минимального размера блока кодирования яркости Min (N+2, log2_ctu_size). N - целое число, N+2 представляет значение двоичного логарифма предопределенного максимального допустимого минимального размера блока кодирования яркости, a log2_ctu_size представляет значение двоичного логарифма размера CTU кодированного видео. В одном варианте осуществления N равно 4.
[21] В варианте осуществления первый элемент синтаксиса указывает значение двоичного логарифма минимального размера блока кодирования яркости минус 2, и схема дополнительно конфигурирована для проверки, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне От 0 до log2_ctu_size_minus5+M включительно. М - целое число, log2_ctu_size_minus5+5 представляет значение двоичного логарифма размера CTU кодированного видео, а log2_ctu_size_minus5+М+2 представляет значение двоичного логарифма предопределенного максимального допустимого минимального размера блока кодирования яркости.
[22] Аспекты раскрытия также предоставляют невременный машиночитаемый носитель, на котором хранятся инструкции, которые при исполнении компьютером для декодирования видео предписывают компьютеру выполнять способ декодирования видео.
Краткое описание чертежей
[23] Дополнительные особенности, природа и различные преимущества раскрытого изобретения будут более понятны из следующего подробного описания и прилагаемых чертежей, на которых:
[24] Фиг. 1 - схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном примере.
[25] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы (200) коммуникационной системы в соответствии с вариантом осуществления.
[26] На фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы (300) коммуникационной системы в соответствии с вариантом осуществления.
[27] На фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления.
[28] На фиг. 5 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления.
[29] Фиг. 6 показывает блок-схему кодера в соответствии с другим вариантом осуществления.
[30] Фиг. 7 показывает блок-схему декодера в соответствии с другим вариантом осуществления.
[31] На фиг. 8 показаны вертикальные и горизонтальные положения отсчетов яркости и цветности 4: 2: 0 на изображении.
[32] На фиг. 9 показаны вертикальные и горизонтальные положения отсчетов яркости и цветности 4: 2: 2 на изображении.
[33] На фиг. 10 показаны вертикальные и горизонтальные положения отсчетов яркости и цветности 4: 4: 4 на изображении.
[34] Фиг. 11 показывает пример изображения, разделенного на единицы дерева кодирования (CTU).
[35] Фиг. 12 показывает пример изображения, разделенного на тайлы и слайсы растрового сканирования.
[36] Фиг. 13 показывает пример изображения, разделенного на тайлы и прямоугольные слайсы.
[37] Фиг. 14 показывает пример изображения, разделенного на тайлы, бруски и прямоугольные слайсы.
[38] На фиг. 15 показаны режимы многотипного разделения дерева.
[39] Фиг. 16 показывает сигнализацию флагов разделения в структуре дерева кодирования с квадродеревом с вложенным многотипным деревом.
[40] Фиг. 17 показывает пример структуры дерева кодирования с квадродеревом с вложенным многотипным деревом.
[41] На фиг. 18 показаны примеры, в которых не выполняется разделение троичного дерева (ТТ) на блоки кодирования 128×128.
[42] На фиг. 19 показаны модели избыточного разделения для случаев разделения двоичного дерева и разделения троичного дерева.
[43] На фиг. 20 показаны примеры запрещенного разделения ТТ и двоичного дерева (ВТ).
[44] Фиг. 21 показывает блок-схему, описывающую процесс (2100) согласно одному варианту осуществления раскрытия.
[45] Фиг. 22 - схематическая иллюстрация компьютерной системы в соответствии с одним вариантом осуществления.
Осуществление изобретения
[46] I. Системы кодера и декодера видео
[47] Фиг. 2 иллюстрирует упрощенную блок-схему коммуникационной системы (200) согласно варианту осуществления настоящего изобретения. Коммуникационная система (200) включает в себя множество терминальных устройств, которые могут коммуницировать друг с другом, например, через сеть (250). Например, коммуникационная система (200) включает в себя первую пару терминальных устройств (210) и (220), соединенных между собой через сеть (250). На фиг. 2, первая пара терминальных устройств (210) и (220) выполняет однонаправленную передачу данных. Например, терминальное устройство (210) может кодировать видеоданные (например, поток видеоизображений, которые захватываются терминальным устройством (210)) для передачи другому терминальному устройству (220) через сеть (250). Кодированные видеоданные могут быть переданы в форме одного или нескольких кодированных битовых видео потоков. Терминальное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[48] В другом примере коммуникационная система (200) включает в себя вторую пару терминальных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных, которые могут происходить, например, во время видеоконференцсвязи. Для двунаправленной передачи данных, в примере, каждое терминальное устройство из терминальных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством) для передачи на другое терминальное устройство из терминальных устройств (230) и (240) через сеть (250). Каждое терминальное устройство из терминальных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим терминальным устройством из терминальных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и могут отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.
[49] На фиг. 2, например, терминальные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые передают кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные (проводные) и/или беспроводные коммуникационные сети. Коммуникационная сеть (250) может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Типичные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет.Для настоящего описания архитектура и топология сети (250) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[50] Фиг. 3 иллюстрирует, в качестве примера приложения для раскрытого изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый предмет изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[51] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видео, например цифровую камеру, создавая, например, поток (302) видеоизображений, которые не сжаты. В примере поток (302) видеоизображений включает в себя отсчеты, снятые цифровой камерой. Поток (302) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или кодированными битовыми потоками видео), может обрабатываться электронным устройством (320), которое включает в себя видеокодер (303), подключенный к источнику (301) видео. Видеокодер (303) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию, чтобы задействовать или реализовать аспекты раскрытого предмета изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или кодированный битовый поток (304) видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком видеоизображений (302), могут быть сохранены на сервере (305) потоковой передачи для дальнейшего использования. Одна или несколько клиентских подсистем потоковой передачи, таких как клиентские подсистемы (306) и (308) на фиг.3 могут получить доступ к серверу (305) потоковой передачи для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) закодированных видеоданных и создает исходящий поток (311) видеоизображений, которые можно визуализировать на дисплее (312) (например, экране дисплея) или другом устройстве визуализации (не изображено). В некоторых системах потоковой передачи кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться в соответствии с определенными стандартами кодирования / сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T Н.265. В одном примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект может использоваться в контексте VVC.
[52] Следует отметить, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), а электронное устройство (330) также может включать в себя видеокодер (не показан).
[53] Фиг. 4 показывает блок-схему видеодекодера (410) согласно варианту осуществления настоящего раскрытия. Видеодекодер (410) может быть включен в электронное устройство (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемную схему). Видеодекодер (410) может использоваться вместо видеодекодера (310) с примера на фиг.3.
[54] Приемник (431) может принимать одну или несколько кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (410); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может быть аппаратной/программной связью с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть перенаправлены их соответствующим объектам использования (не изображены). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с сетевым шумом буферная память (415) может быть подключена между приемником (431) и энтропийным декодером/анализатором (420) (далее «синтаксический анализатор (420)»). В некоторых приложениях буферная память (415) является частью видеодекодера (410). В других случаях он может находиться вне видеодекодера (410) (не показан). В других случаях буферная память (не изображена) может быть вне видеодекодера (410), например, для борьбы с сетевым шумом, и, кроме, другая буферная память (415) внутри видеодекодера (410), например, для обработки времени воспроизведения. Когда приемник (431) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемости, или из изосинхронной сети, буферная память (415) может не использоваться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (415), которая может быть сравнительно большой и может быть преимущественно адаптивного размера, и может, по крайней мере, частично быть реализована в операционной системе или аналогичных элементах (не изображены) вне видеодекодера (410).
[55] Видеодекодер (410) может включать в себя синтаксический анализатор (420) для восстановления символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и потенциально информацию для управления устройством визуализации, таким как устройство (412) визуализации (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (430), но может быть соединено с электронным устройством (430), как показано на фиг. 4. Управляющая информация для устройства (устройств) визуализации может быть в форме сообщений дополнительной улучшающей информации (SEI) или фрагментов набора параметров информации о пригодности видео (VUI) (не изображены). Синтаксический анализатор (420) может анализировать/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видео кодирования и может следовать различным принципам, включающим кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, фрагменты, срезы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Синтаксический анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[56] Синтаксический анализатор (420) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буферной памяти (415), чтобы создавать символы (421).
[57] Восстановление символов (421) может включать в себя несколько различных блоков в зависимости от типа кодированного видеоизображения или его частей (таких как: интер- и интра-изображение, интер- и интра-блок) и других факторов. Какие блоки задействованы и как они задействованы, можно контролировать с помощью управляющей информации подгруппы, которая была проанализирована из кодированной видеопоследовательности синтаксическим анализатором (420). Поток такой информации управления подгруппой между синтаксическим анализатором (420) и множеством модулей ниже не показан для ясности.
[58] Помимо уже упомянутых функциональных блоков, видеодекодер (410) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут по меньшей мере частично быть интегрированы друг в друга. Однако для целей описания раскрытого изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[59] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в виде символа (символов) (421) от синтаксического анализатора (420). Модуль масштабирования/обратного преобразования (451) может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).
[60] В некоторых случаях выходные отсчеты масштабатора/обратного преобразования (451) могут относиться к интра-кодированному блоку; то есть: блок, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (452) внутрикадрового предсказания. В некоторых случаях модуль (452) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (452) интра-предсказания, к информации выходных отсчетов, предоставляемой модулем (451) масштабирования/обратного преобразования.
[61] В других случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к интер-кодированному блоку и, возможно, блоку с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений для выборки отсчетов, используемых для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу модуля (451) масштабирования/обратного преобразования (в этом случае называемого остаточными отсчетами или остаточным сигналом), чтобы сгенерировать информацию о выходных отсчетах. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и компоненты опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения суботсчета, механизмы предсказания вектора движения и так далее.
[62] Выходные отсчеты агрегатора (455) могут подвергаться различным методам контурной фильтрации в модуле (356) контурного фильтра. Технологии сжатия видео могут включать в себя технологии внутриконтурной фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую кодированным битовым потоком видео) и предоставляемыми модулю (456) контурного фильтра в виде символов (421) из синтаксического анализатора (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также в ответ на ранее восстановленные и контурно отфильтрованные значения отсчетов.
[63] Выводом модуля (456) контурного фильтра может быть поток отсчетов, который может быть выведен на устройство визуализации (412), а также сохранен в памяти (457) опорных изображений для использования в будущем межкадровом предсказании.
[64] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (420)), буфер (458) текущего изображения может стать частью памяти (457) опорных изображений, и новый буфер текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.
[65] Видеодекодер (410) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. Н.265 Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах границ, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер эталонного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, сигнализируемых в кодированной видео последовательности.
[66] В варианте осуществления приемник (4310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности (ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных уровней или уровней улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[67] Фиг. 5 показывает блок-схему видеодекодера (503) согласно варианту осуществления настоящего раскрытия. Видеокодер (503) включен в электронное устройство (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) с примера на фиг.3.
[68] Видеокодер (503) может принимать отсчеты видео от источника (501) видео (который не является частью электронного устройства (520) в примере на фиг. 5), который может захватывать видеоизображение(видеоизображения) для кодирования с помощью видеокодера (503). В другом примере источник (501) видео является частью электронного устройства (520).
[69] Источник (501) видео может предоставить исходную видеопоследовательность для кодирования видеокодером (503) в форме потока дискретных цифровых отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит,…), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB,…) и любую подходящую структуру дискретизации (например, Y CrCb 4: 2: 0, Y CrCb 4: 4: 4). В системе обслуживания мультимедиа источник (501) видео может быть запоминающим устройством, хранящим заранее подготовленное видео. В системе видеоконференцсвязи источник (503) видео может быть камерой, которая фиксирует информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или несколько отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже сфокусировано на отсчетах.
[70] Согласно варианту осуществления видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Соединение не изображено для ясности. Параметры, установленные контроллером (550), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорости-искажения,…), размер изображения, макет группы изображений (GOP), максимальный диапазон поиска вектора движения и так далее. Контроллер (550) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (503), оптимизированные для определенной конструкции системы.
[71] В некоторых вариантах осуществления видеокодер (503) конфигурирован для работы в контуре кодирования. В качестве упрощенного описания, в примере контур кодирования может включать в себя кодер (530) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения для кодирования, и опорного изображения (изображений), а также (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) восстанавливает символы для создания отсчетных данных аналогично тому, как (удаленный) декодер также может создавать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом предмете изобретения). Восстановленный поток отсчетов (данные выборок) вводится в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, предсказывающая часть кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видел» при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.
[72] Работа «локального» декодера (533) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (410), который уже был подробно описан выше в связи с фиг. 4. Кратко ссылаясь также на фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в закодированную видеопоследовательность энтропийным кодером (545) и синтаксическим анализатором (420) может происходить без потерь, части энтропийного декодирования видеодекодера (410), включая буферную память (415) и синтаксический анализатор (420) не могут быть полностью реализованы в локальном декодере (533).
[73] Наблюдение, которое можно сделать на этом этапе, заключается в том, что любая технология декодирования, за исключением синтаксического анализа/энтропийного декодирования, которая присутствует в декодере, также требуется в по существу идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый предмет изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются быть инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[74] Во время работы, в некоторых примерах, кодер (530) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием с опорой на одно или несколько ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, подсистема кодирования (532) кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве опорного (опорных) предсказания для входного изображения.
[75] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных исходным кодером (530). Операции подсистемы кодирования (532) могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (534) опорных изображений. Таким образом, видеокодер (503) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, как восстановленные опорные изображения, которые будут получены видеодекодером на приемном конце (при отсутствии ошибок передачи).
[76] Предиктор (535) может выполнять поиски предсказания для подсистемы (532) кодирования. То есть для нового изображения, которое должно быть закодировано, предиктор (535) может искать в памяти (534) опорных изображений отсчетные данные (в качестве кандидатов опорных блоков пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и т.д., и это может служить подходящей опорой для предсказания новых изображений. Предиктор (535) может работать на блочной основе отсчетов от блока к пикселю, чтобы найти соответствующие опоры для предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь опоры предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.
[77] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[78] Выходные данные всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в закодированную видеопоследовательность путем сжатия без потерь символов в соответствии с такими технологиями, как кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование, и так далее
[79] Передатчик (540) может буферизовать закодированные видеопоследовательности, созданные энтропийным кодером (545), чтобы подготовить их к передаче через коммуникационный канал (560), который может быть аппаратным/программным коммуникационным каналом с устройством хранения, которое хранит закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (530) с другими данными, которые должны быть переданы, например, с кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[80] Контроллер (550) может управлять работой видеокодера (503). Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:
[81] Интра-изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы интра-изображений, включая, например, изображения с обновлением независимого декодера ("IDR"). Специалисту известны данные варианты изображений I и их соответствующие применения и особенности.
[82] Изображение с предсказанием (Р изображение) может быть таким, которое может быть закодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[83] Изображение с двунаправленным предсказанием (В изображение) может быть таким, которое может быть закодировано и декодировано с использованием интра-предсказания или интер-предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[84] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием с опорой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интра-предсказание). Пиксельные блоки Р изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[85] Видеокодер (503) может выполнять операции кодирования в соответствии с предопределенной технологией или стандартом кодирования видео, например ITU-T Rec. Н.265 В своей работе видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[86] В варианте осуществления передатчик (540) может передавать дополнительные данные с кодированным видео. Кодер (530) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные / пространственные слои / слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.
[87] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно называемое интра-предсказанием) использует пространственную корреляцию в данном изображении, а межкадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании / декодировании, называемое текущим изображением, разделяется на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть закодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования нескольких опорных изображений.
[88] В некоторых вариантах осуществления при межкадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядок отображения). Блок в текущем изображении может быть закодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.
[89] Кроме, техника режима слияния может использоваться и в межкадровом предсказании для повышения эффективности кодирования.
[90] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как межкадровые предсказания и внктрикадровые предсказания, выполняются в единицах блоков. Например, в соответствии со стандартом HEVC изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, блоки CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В целом, CTU включает в себя три блока дерева кодирования (СТВ), которые представляют собой один СТВ яркости и два СТВ цветности. Каждая 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 пикселей и т.п.
[91] Фиг. 6 показывает схему видеокодера (603) согласно другому варианту осуществления раскрытия. Видеокодер (603) конфигурирован для приема блока обработки (например, блока предсказания) из значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной видеопоследовательности. В одном примере видеокодер (603) используется вместо видеокодера (303) на примере с фиг. 3.
[92] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, такого как блок предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, кодируется ли блок обработки лучше всего при использовании интра-режима, интер-режима или режима двойного предсказания, использующего, например, оптимизацию скорость-искажение. Когда блок обработки должен быть кодирован в интра-режиме, видеокодер (603) может использовать метод интра-предсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки должен быть кодирован в интер-режиме или режиме двойного предсказания, видеокодер (603) может использовать метод интер-предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео, режим слияния может быть субрежимом межкадрового предсказания, в котором вектор движения выводят из одного или нескольких предикторов вектора движения без преимущества кодированного компонента вектора движения вне предикторов. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере видеокодер (603) включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.
[93] На примере с фиг. 6 видеокодер (603) включает в себя интер-кодер (630), интра-кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные вместе, как показано на фиг. 6.
[94] Интер-кодер (630) конфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации интер-предсказания (например, описания избыточной информации согласно методу интер-кодирования, векторов движения, информации режима слияния) и вычисления результатов интер-предсказания (например, предсказанный блок) на основе информации интер-предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.
[95] Интра-кодер (622) конфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже кодированными в том же изображении, генерации квантованных коэффициентов после преобразования, а в некоторых случаях также информации интра-предсказания (например, информации направления интра-предсказания согласно одному или более методов интра-кодирования). В одном примере интра-кодер (622) также вычисляет результаты интра-предсказания (например, предсказанный блок) на основе информации интра-предсказания и опорных блоков в одном и том же изображении.
[96] Общий контроллер (621) конфигурирован для определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. В одном примере общий контроллер (621) определяет режим блока и подает управляющий сигнал на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию интра-предсказания и включить информацию интра-предсказания в битовый поток; и когда режимом является интер-режим, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат интер-предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию интер-предсказания и включить информацию интер-предсказания в битовый поток.
[97] Вычислитель (623) остатка конфигурирован для вычисления разницы (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка конфигурирован для работы на основе данных остатка, чтобы кодировать данные остатка, чтобы генерировать коэффициенты преобразования. В одном примере кодер (624) остатка конфигурирован для преобразования данных остатка из пространственной области в частотную область и генерации коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка конфигурирован для выполнения обратного преобразования и генерации декодированных данных остатка. Декодированные данные остатка могут подходящим образом использоваться интра-кодером (622) и интеркодером (630). Например, интра-кодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации интер-предсказания, а интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации интра-предсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.
[98] Энтропийный кодер (625) конфигурирован для форматирования битового потока, чтобы включить в него кодированный блок. Энтропийный кодер (625) конфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодер (625) конфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации интра-предсказания или информации интер-предсказания), информации остатка и другой подходящей информации в битовом потоке. Отметим, что согласно раскрытому объекту изобретения при кодировании блока в субрежиме слияния либо интер-режима, либо режима двойного предсказания информация остатка отсутствует.
[99] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления раскрытия. Видеодекодер (710) конфигурирован для приема кодированных изображений, которые являются частью кодированной видеопоследовательности, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере видеодекодер (710) используется вместо видеодекодера (310) в примере с фиг. 3.
[100] В примере с фиг. 7 видеодекодер (710) включает в себя энтропийный декодер (771), интер-декодер (780), декодер (773) остатка, модуль (774) восстановления и интра-декодер (772), соединенные вместе, как показано на фиг. 7.
[101] Энтропийный декодер (771) может быть конфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в субрежиме слияния или другом субрежиме), информацию предсказания (такую как, например, информация интра-предсказания или информация интерпредсказания), которая может идентифицировать определенный отсчет или метаданные, которые используются для предсказания интра-декодером (772) или интер-декодером (780), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т.п. В одном примере, когда режимом предсказания является интер-режим или режим двунаправленного предсказания, информация интерпредсказания предоставляется во интер-декодер (780); а когда тип предсказания является типом интра-предсказания, информация интра-предсказания предоставляется в интра-декодер (772). Остаточная информация может подвергаться обратному квантованию и предоставляется декодеру (773) остатка.
[102] Интер-декодер (780) конфигурирован для приема информации интерпредсказания и генерации результатов интер-предсказания на основе информации интерпредсказания.
[103] Интра-декодер (772) конфигурирован для приема информации интра-предсказания и генерации результатов предсказания на основе информации интра-предсказания.
[104] Декодер (773) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования, и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (771) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).
[105] Модуль (774) восстановления конфигурирован для объединения в пространственной области остатка, выводимого декодером (773) остатка, и результатов предсказания (выводимых модулями интер- или интра- предсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что другие подходящие операции, такие как операция деблокирования и т.п., могут выполняться для улучшения визуального качества.
[106] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. В варианте осуществления видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.
[107] II. Форматы изображений и разделение изображений
[108] II. 1 Форматы исходных, декодированных и выходных изображений
[109] В некоторых вариантах осуществления связь между исходным и декодированным изображениями задается через битовый поток следующим образом. Источник видео, представленный битовым потоком, представляет собой последовательность изображений в порядке декодирования. Исходные и декодированные изображения состоят из одного или нескольких массивов отсчетов:
- Только яркость (Y) (монохромный).
- Яркость и две цветности (YCbCr или YCgCo).
Зеленый, синий и красный (GBR, также известный как RGB).
- Массивы, представляющие другие неопределенные монохромные или трехцветные отсчеты цветности (например, YZX, также известный как XYZ).
[110] Для удобства обозначений и терминологии в этом раскрытии, переменные и термины, связанные с этими массивами, упоминаются как яркость (или L или Y) и цветность, где два массива цветности упоминаются как Cb и Cr; независимо от фактического используемого метода представления цвета. Фактический используемый метод представления цвета может быть указан с помощью синтаксиса.
[111] Переменные SubWidthC и SubHeightC указывают коэффициенты субдискретизации компонентов цветности и указаны в таблице 1 в зависимости от структуры дискретизации формата цветности, которая задается через chroma_format_idc и separate_color_plane_flag.
[112] В монохромной дискретизации есть только один массив отсчетов, который номинально считается массивом яркости. При дискретизации 4: 2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости. При дискретизации 4: 2: 2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости. При дискретизации 4: 4:4, в зависимости от значения own_color_plane_flag, применяется следующее:
- Если separate_color_plane_flag равен 0, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости.
- В противном случае (separate_color_plane_flag равен 1) три цветные плоскости обрабатываются отдельно как изображения с монохромной дискретизацией.
[113] Количество битов, необходимых для представления каждой из выборок в массивах яркости и цветности в видеопоследовательности, может быть, например, в диапазоне от 8 до 16 включительно, а количество битов, используемых в массиве яркости, может отличаются от количества битов, используемых в массивах цветности. Когда значение chroma_format_idc равно 1, номинальные вертикальные и горизонтальные относительные местоположения отсчетов яркости и цветности в изображениях показаны на фиг. 8. Альтернативные относительные местоположения отсчетов цветности могут быть указаны в информации о пригодности видео.
[114] Когда значение chroma_format_idc равно 2, отсчеты цветности совмещаются с соответствующими отсчетами яркости, а номинальные местоположения в изображении такие, как показано на фиг. 9. Когда значение chroma_format_idc равно 3, все отсчеты массива совмещаются для всех случаев изображений, а номинальные местоположения в изображении такие, как показано на фиг.10.
[115] II. 2 Разделение изображения
[116] II. 2.1 Разделение изображения на CTU
[117] В некоторых вариантах осуществления изображения разделяют на последовательность единиц дерева кодирования (CTU). Концепция CTU аналогична концепции HEVC. Для изображения, которое имеет три массива отсчетов, CTU состоит из блока N × N отсчетов яркости вместе с двумя соответствующими блоками отсчетов цветности. Фиг. 11 показывает пример изображения, разделенного на CTU. Максимального допустимый размер блока яркости в CTU в примере указан равным 128×128. В примере максимальный размер блоков преобразования яркости составляет 64×64).
[118] II.2.2 Разделение изображений на слайсы, тайлы и бруски
[119] В некоторых вариантах осуществления изображение может быть разделено на один или несколько рядов тайлов и один или несколько столбцов тайлов. Тайл - это последовательность CTU, покрывающая прямоугольную область изображения. Тайл делится на один или несколько брусков, каждый из которых состоит из ряда строк CTU внутри тайла. Тайл, не разделенный на несколько брусков, также называется бруском. Однако брусок, который является истинным подмножеством тайла, не называется тайлом. Слайс содержит либо количество тайлов изображения, либо количество брусков тайла. Поддерживаются два режима слайсов, а именно режим слайса с растровым сканированием и режим прямоугольного слайса. В режиме слайса с растровым сканированием слайс содержит последовательность тайлов в тайлов растровом сканировании изображения. В режиме прямоугольного слайса, слайс содержит несколько брусков изображения, которые вместе образуют прямоугольную область изображения. Бруски внутри прямоугольного слайса находятся в порядке брусочного растрового сканирования слайса.
[120] Фиг. 12 показывает пример разделения изображения на слайсы растрового сканирования, где изображение разделено на 12 тайлов и 3 слайса растрового сканирования. Фиг. 13 показывает пример разделения изображения на прямоугольные слайсы, где изображение разделено на 24 тайлов (6 столбцов тайлов и 4 строки тайлов) и 9 прямоугольных слайсов. Фиг. 14 показывает пример изображения, разделенного на тайлы, бруски и прямоугольные слайсы, где изображение разделено на 4 тайла (2 столбца тайлов и 2 ряда тайлов), 11 брусков (верхний левый тайл содержит 1 брусок, верхний правый тайл содержит 5 брусков, нижний левый тайл содержит 2 бруска, а нижний правый тайл содержит 3 бруска) и 4 прямоугольных слайса.
[121] II. 2.3 Разделение CTU с использованием структуры дерева
[122] В некоторых вариантах осуществления CTU разделяется на CU с использованием структуры квадродерева, обозначенной как дерево кодирования, для адаптации к различным локальным характеристикам. Решение о том, кодировать ли область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне узла CU. Каждый узел CU может быть дополнительно разделен на одну, две или четыре PU в соответствии с типом разделения PU. Внутри одной PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения PU, листовая CU может быть разделена на блоки преобразования (TU) в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU. Одной из ключевых особенностей структуры HEVC является то, что она имеет концепции нескольких разделов, включая CU, PU и TU.
[123] В некоторых вариантах осуществления квадродерево с вложенным многотипным деревом с использованием структуры сегментации двоичного и троичного разделения заменяет концепции нескольких типов единиц раздела, то есть устраняет концепции разделения на CU, PU и TU, за исключением случаев, когда это необходимо для CU, которые имеют слишком большой размер для максимальной длины преобразования, и поддерживает большую гибкость для форм разделов CU. В структуре дерева кодирования CU может иметь квадратную или прямоугольную форму. Единица дерева кодирования (CTU) сначала разделяется структурой четвертичного дерева (также известного как квадродерево). Затем листовые узлы четвертичного дерева могут быть дополнительно разделены с помощью структуры многотипного дерева.
[124] Как показано на фиг. 15, существует четыре типа разделения в структуре многотипного дерева: вертикальное двоичное разделение (SPLIT_BT_VER), горизонтальное двоичное разделение (SPLIT_BT_HOR), вертикальное тройничное разделение (SPLIT_ТТ_VER) и горизонтальное тройничное разделение (SPLIT_TT_HOR). Листовые узлы многотипного дерева называются единицами кодирования (CU), и, если только CU не слишком велик для максимальной длины преобразования, такая сегментация используется для предсказания и обработки преобразования без какого-либо дальнейшего разделения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в структуре дерева кодирования с квадродеревом с вложенным многотипным деревом. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше ширины или высоты компонента цвета CU.
[125] Фиг. 16 иллюстрирует механизм сигнализации информации о разделении на разделы в структуре дерева кодирования с квадродеревом с вложенным многотипным деревом. Единица дерева кодирования (CTU) рассматривается как корень четвертичного дерева и сначала разделяется структурой четвертичного дерева. Каждый листовой узел четвертичного дерева (если он достаточно большой, чтобы его можно было использовать) затем разделяется на части с помощью структуры многотипного дерева. В структуре многотипного дерева первый флаг (mtt_split_cu_flag) сигнализируется, чтобы указать, разделен ли узел дальше; когда узел дополнительно разделяется на разделы, второй флаг (mtt_split_cu_vertical_flag) сигнализируется, чтобы указать направление разделения, а затем сигнализируется третий флаг (mtt_split_cu_binary_flag), чтобы указать, является ли разделение двоичным разделением или троичным разделением. На основе значений mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разделения многотипного дерева (MttSplitMode) CU определяется, как показано в таблице 2.
[126] Фиг. 17 показывает CTU, разделенный на несколько CU, со структурой блока кодирования с квадродеревом и вложенным многотипным деревом, где показанные жирной линией края блока представляют разделение квадродерева, а остальные края представляют разделение многотипного дерева. Разделение с квадродеревом с вложенным многотипным деревом обеспечивает адаптивную к содержанию структуру дерева кодирования, состоящую из CU. Размер CU может быть таким же большим, как CTU, или даже 4×4 в единицах отсчетов яркости. Для случая формата цветности 4:2:0 максимальный размер СВ цветности составляет 64×64, а минимальный размер СВ цветности составляет 2×2.
[127] В некоторых вариантах осуществления максимальный поддерживаемый размер преобразования яркости составляет 64×64, а максимальный поддерживаемый размер преобразования цветности составляет 32×32. Когда ширина или высота СВ больше максимальной ширины или высоты преобразования, СВ автоматически разделяется в горизонтальном и/или вертикальном направлении, чтобы соответствовать ограничению размера преобразования в этом направлении.
[128] В некоторых вариантах осуществления следующие параметры определены и указаны элементами синтаксиса набора параметров синтаксиса (SPS) для схемы дерева кодирования с квадродеревом с вложенным многотипным деревом.
Размер CTU: размер корневого узла четвертичного дерева
- MinQTSize: минимально допустимый размер листового узла четвертичного дерева
- MaxBtSize: максимального допустимый размер корневого узла двоичного дерева
- MaxTtSize: максимального допустимый размер корневого узла троичного дерева
- MaxMttDepth: максимального допустимая глубина иерархии для разделения многотипного дерева из листа квадродерева
- MinBtSize: минимально допустимый размер листового узла двоичного дерева - MinTtSize: минимально допустимый размер листового узла троичного дерева
[129] В одном примере структуры дерева кодирования с квадродеревом с вложенным многотипным деревом размер CTU установлен как 128×128 отсчетов яркости с двумя соответствующими блоками 64×64 отсчетов цветности 4: 2: 0, MinQTSize установлен как 16×16, MaxBtSize установлен как 128×128, a MaxTtSize установлен как 64 х 64, MinBtSize и MinTtSize (как для ширины, так и для высоты) установлены как 4×4, a MaxMttDepth установлен как 4. Разделение четвертичного дерева сначала применяется к CTU, чтобы сгенерировать листовые узлы четвертичного дерева. Листовые узлы четвертичного дерева могут иметь размер от 16×16 (то есть MinQTSize) до 128×128 (то есть размер CTU). Если листовой узел квадродерева имеет размер 128×128, он не будет далее разделяться двоичным деревом, поскольку размер превышает MaxBtSize и MaxTtSize (т.е. 64×64). В противном случае листовой узел qdtree может быть дополнительно разделен многотипным деревом.
[130] Следовательно, листовой узел четвертичного дерева также является корневым узлом для многотипного дерева, и его глубина многотипного дерева (mattDepth) равна 0. Когда глубина многотипного дерева достигает MaxMttDepth (т.е. 4), дальнейшее разделение не рассматривается. Если ширина узла многотипного дерева равна MinBtSize и меньше или равна 2*MinTtSize, дальнейшее горизонтальное разделение не рассматривается. Точно так же, когда узел многотипного дерева имеет высоту, равную MinBtSize и меньшую или равную 2*MinTtSize, дальнейшее вертикальное разделение не рассматривается.
[131] В некоторых вариантах осуществления, чтобы разрешить конструкцию модель обработки с блоком яркости 64×64 и блоком цветности 32×32, в некоторых аппаратных декодерах, разделение ТТ запрещено, когда ширина или высота блока кодирования яркости больше 64, как показано на фиг. 18. Разделение ТТ также запрещено, если ширина или высота блока кодирования цветности больше 32.
[132] В некоторых вариантах осуществления схема дерева кодирования поддерживает возможность для яркости и цветности иметь отдельную блочную древовидную структуру. Например, для Р- и В- слайсов СТВ яркости и цветности в одном CTU могут совместно использовать одну и ту же структуру дерева кодирования. Однако для I-слайсов яркость и цветность могут иметь отдельные древовидные структуры блоков. Когда применяется режим раздельного дерева блоков, СТВ яркости разделяется на CU с помощью одной структуры дерева кодирования, а СТВ цветности разделяется на CU цветности с помощью другой структуры дерева кодирования. Это означает, что CU в I-слайсе может состоять из блока кодирования компонента яркости или блоков кодирования двух компонентов цветности, a CU в Р- или В-слайсе всегда состоит из блоков кодирования всех трех компонентов цвета, если только видео не монохромное.
[133] II. 2.4 CU разделяется на границах изображения
[134] В некоторых вариантах осуществления, когда часть блока узла дерева превышает нижнюю или правую границу изображения, блок узла дерева принудительно разделяют до тех пор, пока все отсчеты каждой кодированной CU не окажутся внутри границ изображения. В некоторых вариантах осуществления применяются следующие правила разделения.
[135] Если часть блока узла дерева превышает нижнюю и правую границы изображения: (i) если блок является узлом QT и размер блока больше минимального размера QT, блок принудительно разделяется в режиме разделения QT; в противном случае блок будет принудительно разделен в режиме SPLIT_ВТ_HOR
[136] (ii) В противном случае, если часть блока узлов дерева превышает нижние границы изображения,
- Если блок является узлом QT, и размер блока больше, чем минимальный размер QT, и размер блока больше, чем максимальный размер ВТ, блок принудительно разделяется в режиме разделения QT.
- В противном случае, если блок является узлом QT, и размер блока больше, чем минимальный размер QT, а размер блока меньше или равен максимальному размеру ВТ, блок будет принудительно разделяют в режиме разделения QT или режиме SPLIT_ВТ_HOR.
- В противном случае (блок является узлом ВТТ или размер блока меньше или равен минимальному размеру QT), блок принудительно разделяют в режиме SPLIT_ВТ_HOR.
[137] (ii) В противном случае, если часть блока узлов дерева превышает правые границы изображения,
Если блок является узлом QT, и размер блока больше, чем минимальный размер QT, и размер блока больше, чем максимальный размер ВТ, блок принудительно разделяется в режиме разделения QT.
В противном случае, если блок является узлом QT, и размер блока больше, чем минимальный размер QT, а размер блока меньше или равен максимальному размеру ВТ, блок будет принудительно разделяют в режиме разделения QT или режиме SPLIT_BT_VER.
В противном случае (блок является узлом ВТТ или размер блока меньше или равен минимальному размеру QT), блок принудительно разделяют в режиме SPLIT_BT_VER.
[138] II. 2.5 Ограничения на избыточные разделения CU
[139] Структура блока кодирования с квадродеревом с вложенным многотипным деревом обеспечивает очень гибкую структуру разделения блоков. Из-за типов разделения, поддерживаемых многотипным деревом, разные шаблоны разделения потенциально могут привести к одной и той же структуре блока кодирования. В некоторых вариантах осуществления некоторые из этих шаблонов избыточного разделения недопустимы.
[140] Фиг. 19 иллюстрирует повторяющиеся шаблоны разделения двоичных и троичных деревьев. Как показано, два уровня последовательных двоичных разделений в одном направлении могут иметь ту же структуру блока кодирования, что и разделение троичного дерева, за которым следует разделение двоичного дерева центрального раздела. В этом случае разделение двоичного дерева (в заданном направлении) для центрального раздела разделения троичного дерева предотвращается синтаксисом. Это ограничение распространяется на CU на всех изображениях.
[141] Когда разделения запрещены, как описано выше, сигнализирование соответствующих элементов синтаксиса модифицируется для учета запрещенных случаев. Например, когда идентифицируют любой случай с фиг. 19 (т.е. двоичное разделение запрещено для CU центрального раздела), синтаксический элемент mtt_split_cu_binary_flag, который указывает, является ли разделение двоичным разделением или троичным разделением, не сигнализируется и вместо этого выводится равным 0 декодером.
[142] II. 2.6 Единицы данных виртуального конвейера (VPDU)
[143] В некоторых вариантах осуществления используются единицы данных виртуального конвейера (VPDU). VPDU определяются как неперекрывающиеся единицы в изображении. В аппаратных декодерах последовательные VPDU обрабатываются на нескольких этапах конвейера одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейера, поэтому важно, чтобы размер VPDU был небольшим. В некоторых аппаратных декодерах размер VPDU может быть установлен равным максимальному размеру блока преобразования (ТВ). Однако в некоторых сценариях разделение троичного дерева (ТТ) и двоичного дерева (ВТ) может привести к увеличению размера VPDU.
[144] Чтобы сохранить размер VPDU в виде 64×64 отсчетов яркости, в некоторых примерах применяются следующие нормативные ограничения разделения (с модификацией сигнализирования синтаксиса), как показано на фиг. 20: Разделение ТТ не допустимо для CU с шириной или высотой или шириной и высотой, равными 128. Для CU 128×N с N≤64 (т.е. ширина равна 128, а высота меньше 128) горизонтальный ВТ не допустим. Для N×128 CU с N≤64 (т.е. высота равна 128, а ширина меньше 128) вертикальный ВТ не допустим.
[145] II. 2.7 Интра-разделение цветности и ограничение предсказания
[146] Поскольку двойное дерево в интра-изображении позволяет применять различное разделение в дереве кодирования цветности по сравнению с деревом кодирования яркости, двойное дерево вводит более длинный конвейер кодирования, а диапазон значений QTBT MinQTSizeC, a MinBtSizeY и MinTTSizeY в дереве цветности допускает небольшие блоки цветности, такие как 2×2, 4×2 и 2×4. Это вызывает трудности в модели декодера. Более, несколько режимов предсказания, таких как CCLM, планарный и угловой режимы, нуждаются в умножении. Чтобы облегчить вышеупомянутые сложности, небольшие размеры блока цветности (2×2 / 2×4 / 4×2) ограничены в двойном дереве в качестве ограничения разделения в некоторых вариантах осуществления.
[147] В типичных аппаратных видео кодерах и видеодекодерах пропускная способность обработки падает, когда изображение имеет больше небольших интра-блоков из-за зависимости данных обработки отсчетов между соседними интра-блоками. Для генерации предиктора интра-блока требуются отсчеты, восстановленные по верхней и левой границам из соседних блоков. Следовательно, интра-предсказание должно последовательно обрабатываться блок за блоком.
[148] В некоторых технологиях кодирования наименьшая интра-CU - это 8×8 отсчетов яркости. Компонент яркости наименьшего интра-CU может быть дополнительно разделен на четыре 4×4 единицы (PU) интра-предсказания яркости, но компоненты цветности наименьшего интра-CU не могут быть дополнительно разделены. Следовательно, худший случай производительности аппаратной обработки возникает, когда обрабатываются интра-блоки цветности 4×4 или интра-блоки яркости 4×4.
[149] В некоторых вариантах осуществления, чтобы улучшить пропускную способность худшего случая, интра-СВ цветности меньше 16 отсчетов запрещены за счет ограничения разделения интра-СВ цветности. В случае единственного дерева кодирования наименьшая единица интра-предсказания цветности (SCIPU) определяется как узел дерева кодирования, размер блока цветности которого больше или равен 16 отсчетам цветности и имеет по меньшей мере один дочерний блок яркости меньше 64 отсчетов яркости. Требуется, чтобы в каждом SCIPU все СВ были интер-типа или все СВ были не интертипа, то есть были либо интра-, либо интра-блочной копией (IBC). В случае неинтер-типа SCIPU дополнительно требуется, чтобы цветность неинтер-типа SCIPU не подвергалась дальнейшему разделению, и было допущено дальнейшее разделение яркости SCIPU. Таким образом, размер наименьшего интра-СВ цветности составляет 16 отсчетов цветности, а СВ цветности с размером 2×2, 2×4 и 4×2 удаляются.
[150] Кроме, масштабирование цветности не применяется в случае неинтер-SCIPU. Здесь не сигнализируется никакой дополнительный синтаксис, и то, является ли SCIPU неинтер-типа, может быть получено на основе режима предсказания первого СВ яркости в SCIPU. Тип SCIPU выводится как неинтер-тип, если текущий слайс является I-слайсом или текущий SCIPU имеет в нем раздел яркости 4×4 после одного дополнительного разделения (поскольку в VVC допускается 4×4 неинтер-типа); в противном случае тип SCIPU (интер- или неинтер-) указывается одним флагом перед синтаксическим анализом CU в SCIPU. Кроме, ограничение на размер изображения рассматривается во избежание 2×2 / 2×4 / 4×2 интра-блоков цветности в углу изображения, учитывая, что ширина и высота изображения кратны max (8, MinCbSizeY).
[151] II. 3 Синтаксис SPS, связанный с разделением и размером блока
[152] Таблица 3 представляет собой пример таблицы синтаксиса SPS.
[153] II. 4 Семантика, связанная с разбиением на разделы и размером блока
[154] В качестве примеров ниже описывается семантика некоторых элементов синтаксиса, связанных с разбиением на разделы и размером блока. Например, элементы синтаксиса могут быть включены в SPS и применены к изображениям, со ссылкой на SPS.
[155] qtbtt_dual_tree_intra_flag, равное 1, указывает, что для I-слайсов каждый CTU разделяется на единицы кодирования с отсчетами яркости 64×64 с использованием неявного разделения квадродерева, и что эти единицы кодирования являются корнем двух отдельных структур синтаксиса codingtree для яркости и цветности. При этом qtbtt_dual_tree_intra_flag, равное 0, указывает, что отдельная структура синтаксиса coding_tree не используется для I-слайсов. Когда qtbtt_dual_tree_intra_flag отсутствует, предполагается, что он равен 0.
[156] log2_min_luma_coding_block_size_minus2 плюс 2 указывает минимальный размер блока кодирования яркости. Диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до log2_ctu_size_minus5+3 включительно.
[157] Переменные MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC и Vsize получают следующим образом:
[158] Значение MinCbSizeY должно быть меньше или равно VSize.
[159] Переменные CtbWidthC и CtbHeightC, которые определяют ширину и высоту, соответственно, массива для каждого СТВ цветности, получают следующим образом:
- Если chroma format idc равно 0 (монохромный) или separate_color_plane_flag равен 1, CtbWidthC и CtbHeightC равны 0.
- В противном случае CtbWidthC и CtbHeightC получают следующим образом:
[160] Для log2BlockWidth в диапазоне от 0 до 4 и для log2BlockHeight в диапазоне от 0 до 4 включительно процесс инициализации массива по диагонали вверх и вправо и порядка растрового сканирования может быть запущен с помощью 1 << log2BlockWidth и 1 << log2BlockHeight в качестве входных данных, а выходные данные назначаются DiagScanOrder [log2BlockWidth] [log2BlockHeight] и Raster2DiagScanPos [log2BlockWidth] [log2BlockHeight].
[161] Для log2BlockWidth в диапазоне от 0 до 6 и для log2BlockHeight в диапазоне от 0 до 6 включительно процесс инициализации массива порядка сканирования по горизонтали и вертикали может быть запущен с помощью 1 << log2BlockWidth и 1 << log2BlockHeight в качестве входных данных, а выходные данные назначаются HorTravScanOrder [log2BlockWidth] [log2BlockHeight] и VerTravScanOrder [log2BlockWidth] [log2BlockHeight].
[162] partition_constraints_override_enabled_flag, равное 1, указывает наличие partition_constraints_override_flag в PH, со ссылкой на SPS. A partition_constraints_override_enabled_flag, равное 0, указывает отсутствие partition_constraints_override_flag в PH, со ссылкой на SPS.
[163] sps_log2_diff_min_qt_min_cb_intra_slice_luma указывает разницу по умолчанию между логарифмом по основанию 2 минимального размера в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU, и логарифмом по основанию 2 минимального размера блока кодирования в отсчетах яркости для CU яркости в слайсах равно 2 (I) применительно к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_min_qt_min_cb_luma, присутствующим в РН, относящихся к SPS. Значение sps_log2_diff_min_qt_min_cb_intra_slice_luma должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно. Логарифм по основанию 2 минимального размера в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU, получают следующим образом:
[164] sps_log2_diff_min_qt_min_cb_inter_slice_luma указывает разницу по умолчанию между логарифмом по основанию 2 минимального размера в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU, и логарифмом по основанию 2 минимального размера блока кодирования в отсчетах яркости для CU яркости в слайсах равно 0 (В) или 1 (Р), применительно к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_min_qt_min_cb_luma, присутствующим в РН, относящихся к SPS. Значение sps_log2_diff_min_qt_min_cb_inter_slice должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно. Логарифм по основанию 2 минимального размера в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU, получают следующим образом:
[165] sps_max_mtt_hierarchy_depth_inter_slice указывают максимальную глубину иерархии по умолчанию для единиц кодирования, возникающей в результате разделения многотипного дерева листа квадродерева на слайсы с slice_type, равным 0 (В) или 1 (Р), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, максимальная глубина иерархии по умолчанию может быть скорректирована посредством pic_max_mtt_hierarchy_depth_inter_slice, присутствующего в заголовках изображений (РН), относящихся к SPS. Значение sps_max_mtt_hierarchy_depth_inter_slice должно быть в диапазоне от 0 до 2*(CtbLog2SizeY - MinCbLog2SizeY) включительно.
[166] sps_max_mtt_hierarchy_depth_intra_slice_luma указывает максимальную глубину иерархии по умолчанию для единиц кодирования, возникающей в результате разделения многотипного дерева листа квадродерева на слайсы с slice_type, равным 2(I), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, максимальная глубина иерархии по умолчанию может быть скорректирована посредством pic_max_mtt_hierarchy_depth_intra_slice_luma, присутствующего в РН, относящихся к SPS. Значение sps_max_mtt_hierarchy_depth_intra_slice_luma должно быть в диапазоне от 0 до 2*(CtbLog2SizeY - MinCbLog2SizeY) включительно.
[167] sps_log2_diff_max_bt_min_qt_intra_slice_luma указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах яркости блока кодирования яркости, который может быть разделен с использованием двоичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU на слайсы с slice_type, равным 2 (I), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_bt_min_qt_luma, присутствующим в PH, относящихся к SPS. Значение sps_log2_diff_max_bt_min_qt_intra_slice_luma должно быть в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeIntraY включительно. Когда sps_log2_diff_max_bt_min_qt_intra_slice_luma отсутствует, значение sps_log2_diff_max_bt_min_qt_intra_slice_luma выводится равным 0.
[168] sps_log2_diff_max_tt_min_qt_intra_slice_luma указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах яркости блока кодирования яркости, который может быть разделен с использованием троичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU на слайсы с slice_type, равным 2 (I), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_tt_min_qt_luma, присутствующим в РН, относящихся к SPS. Значение sps_log2_diff_max_tt_min_qt_intra_slice_luma должно быть в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeIntraY включительно. Когда sps_log2_diff_max_tt_min_qt_intra_slice_luma отсутствует, значение sps_log2_diff_max_tt_min_qt_intra_slice_luma выводится равным 0.
[169] sps_log2_diff_max_bt_min_qt_inter_slice указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах яркости блока кодирования яркости, который может быть разделен с использованием двоичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU на слайсы с slice_type, равным 0 (В) или 1 (Р), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_bt_min_qt_luma, присутствующим в PH, относящихся к SPS. Значение sps_log2_diff_max_bt_min_qt_inter_slice должно находиться в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeInterY включительно. Когда sps_log2_diff_max_bt_min_qt_inter_slice отсутствует, значение sps_log2_diff_max_bt_min_qt_inter_slice выводится равным 0.
[170] sps_log2_diff_max_tt_min_qt_inter_slice указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах яркости блока кодирования яркости, который может быть разделен с использованием троичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока яркости, полученного в результате разделения квадродерева CTU на слайсы с slice type, равным 0 (В) или 1 (Р), относящимся к SPS. Когда partition constraints override enabled flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_tt_min_qt_luma, присутствующим в РН, относящихся к SPS. Значение sps_log2_diff_max_tt_min_qt_inter_slice должно находиться в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeInterY включительно. Когда sps_log2_diff_max_tt_min_qt_inter_slice отсутствует, значение sps_log2_diff_max_tt_min_qt_inter_slice выводится равным 0.
[171] sps_log2_diff_min_qt_min_cb_intra_slice_chroma указывает разницу по умолчанию между логарифмом по основанию 2 минимального размера в отсчетах яркости листового блока цветности, полученного в результате разделения квадродерева CTU цветности с treeType, равным DUAL_TREE_CHROMA, и логарифмом кодирования по основанию 2 для минимального размера блока кодирования в отсчетах яркости для CU цветности с treeType, равным DUAL_TREE_CHROMA, в слайсах с slice_type, равным 2 (I), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_min_qt_min_cb_chroma, присутствующим в PH, относящихся к SPS. Значение sps_log2_diff_min_qt_min_cb_intra_slice_chroma должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно. Если отсутствует, значение sps log2 diff min qt min cb intra slice chroma выводится равным 0. Логарифм по основанию 2 минимального размера в отсчетах яркости листового блока цветности, полученного в результате разделения квадродерева CTU с treeType, равным DUAL_TREE_CHROMA, получается следующим образом:
[172] sps_max_mtt_hierarchy_depth_intra_slice_chroma указывает максимальную глубину иерархии по умолчанию для единиц кодирования цветности, возникающей в результате разделения многотипного дерева листа цветности квадродерева на слайсы с slice_type, равным 2(I), относящимся к SPS. Когда partition_constraints_override_enabled_flag равно 1, максимальная глубина иерархии по умолчанию может быть скорректирована посредством pic_max_mtt_hierarchy_depth_chroma, присутствующего в РН, со ссылкой на SPS. Значение sps_max_mtt_hierarchy_depth_intra_slice_chroma должно быть в диапазоне от 0 до 2*(CtbLog2SizeY - MinCbLog2SizeY) включительно. Если нет, значение sps max mtt hierarchy depth intra slice chroma выводится равным 0.
[173] sps_log2_diff_max_bt_min_qt_intra_slice_chroma указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах цветности блока кодирования, который может быть разделен с использованием двоичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока цветности, полученного в результате разделения квадродерева CTU цветности с treeType, равным DUAL_TREE_CHROMA, на слайсы с slice_type, равным 2 (I), со ссылкой на SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_bt_min_qt_chroma, присутствующим в PH, со ссылкой на SPS. Значение sps_log2_diff_max_bt_min_qt_intra_slice_chroma должно быть в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeIntraC включительно. Когда sps_log2_diff_max_bt_min_qt_intra_slice_chroma отсутствует, значение sps_log2_diff_max_bt_min_qt_intra_slice_chroma выводится равным 0.
[174] sps_log2_diff_max_tt_min_qt_intra_slice_chroma указывает разницу по умолчанию между логарифмом по основанию 2 максимального размера (ширины или высоты) в отсчетах цветности блока кодирования, который может быть разделен с использованием троичного разделения, и минимальным размером (шириной или высотой) в отсчетах яркости листового блока цветности, полученного в результате разделения квадродерева CTU цветности с treeType, равным DUAL_TREE_CHROMA, на слайсы с slice_type, равным 2 (I), со ссылкой на SPS. Когда partition_constraints_override_enabled_flag равно 1, различие по умолчанию может быть скорректировано посредством pic_log2_diff_max_tt_min_qt_chroma, присутствующим в РН, относящихся к SPS. Значение sps_log2_diff_max_tt_min_qt_intra_slice_chroma должно быть в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeIntraC включительно. Когда sps_log2_diff_max_tt_min_qt_intra_slice_chroma отсутствует, значение sps_log2_diff_max_tt_min_qt_intra_slice_chroma выводится равным 0.
[175] sps_max_luma_transform_size_64_flag, равный 1, указывает, что максимальный размер преобразования в отсчетах яркости равен 64. sps_max_luma_transform_size_64_flag, равный 0, указывает, что максимальный размер преобразования в отсчетах яркости равен 32.
[176] Когда CtbSizeY меньше 64, значение sps_max_luma_transform_size_64_flag должно быть равно 0.
[177] Переменные MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY и MaxTbSizeY выводятся следующим образом:
[178] pic_log2_diff_min_qt_min_cb_intra_slice_chroma указывает разницу между логарифмом с основанием 2 минимального размера в отсчетах яркости листового блока цветности, полученного в результате разделения квадродерева CTU цветности с treeType, равным DUAL_TREE_CHROMA, и логарифмом с основанием 2 минимального размера блока кодирования в отсчетах цветности для CU цветности с treeType, равным DUAL_TREE_CHROMA, в слайсах с slice_type, равным 2 (I), относящимся к РН. Значение pic_log2_diff_min_qt_min_cb_intra_slice_chroma должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно. Если отсутствует, значение pic_log2_diff_min_qt_min_cb_intra_slice_chroma выводится равным sps_log2_diff_min_qt_min_cb_intra_slice_chroma.
[179] slice_type указывает тип кодирования слайса в соответствии с таблицей 4.
[180] Когда nal_unit_type имеет значение nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, и текущее изображение является первым изображением в единице доступа, slice type должен быть равен 2.
[181] Переменные MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY и MaxMttDepthC получаются следующим образом:
[182] (i) Если slice_type равно 2 (I),
[183] (ii) В противном случае (slice_type равно 0 (В) или 1 (Р)),
[184] II. 5 Отключение интра-предсказания цветности с размером 2×N
[185] В некоторых вариантах осуществления интра-блоки цветности 2×N
удаляются как в двойном дереве, так и в одиночном дереве, p-схема представлена следующим образом:
[186] II. 5.1 Ограничение 2×N в двойном дереве
[187] В двойном дереве интра-цветность 2×N ограничивается отключением некоторых разделений, как предлагалось ранее. В частности, разделения двоичного дерева и троичного дерева запрещены для блоков шириной 4 и 8 соответственно.
[188] II. 5.2 Ограничение 2×N в одиночном дереве
[189] Чтобы удалить 2×N в одиночном дереве, предлагаются два ограничения, включая расширение локального двойного дерева и ограничение СИР для цветности 2×N.
[190] В первом ограничении, если раздел с шириной 4 и двоичным вертикальным разделением или шириной 8 и троичным вертикальным разделением, оно рассматривается как SCIPU. Следуя принципиальному ограничению SCIPU, компоненты цветности не разделяются в интра-SCIPU (все блоки яркости кодируются с использованием неинтер-режима, а неразделенный блок цветности кодируется с использованием интра-режима). Для интер-SCIPU (все блоки яркости и цветности кодируются с использованием интеррежима) разделение компонентов цветности наследуется от компонента яркости.
[191] Во втором ограничении для блоков CIIP 4×N комбинированное интра-интер-предсказание используется только для компонента яркости, в то время как для компонентов цветности используется только интер-предсказание.
[192] Утверждалось, что предлагаемые ограничения гарантируют, что ширина интра-блоков цветности всегда больше или равна 4, и, таким образом, интра-процесс 2×N пикселей удаляется. Это ограничение делает реализацию видеокодека удобной для аппаратных воплощений с точки зрения управления конвейером и задержки.
[193] III. Диапазон минимального размера блока кодирования яркости
[194] В некоторых вариантах осуществления минимальный размер блока кодирования яркости может находиться в диапазоне от 4 до 128 отсчетов яркости включительно. Например, как описано В. Bross, J. Chen, S. Liu, Y.K. Wang, "Versatile Video Coding (Draft 7)", ISO/IEC JTC1/SC29/WG11 JVET-P2001, октябрь 2019 г., элемент синтаксиса уровня SPS, обозначенный log2_min_luma_coding_block_size_minus2, может сигнализироваться, чтобы указать минимальный размер блока кодирования яркости. При этом log2_min_luma_coding_block_size_minus2 плюс 2 задает значение логарифма с основанием 2 (log2) минимального размера блока кодирования яркости. Диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до log2_ctu_size_minus5+3 включительно.
5
7
[195] Элемент синтаксиса, log2_ctu_size_minus5 (или в другой форме sps_log2_ctu_size_minus5, когда он включен в SPS), может быть другим элементом синтаксиса уровня SPS, который определяет размер блока дерева кодирования яркости каждого CTU (т.е. размер CTU). При этом sps_log2_ctu_size_minus5 плюс 5 задает значение log2 размера блока дерева кодирования яркости каждого CTU. Для соответствия битового потока требуется, чтобы значение sps_log2_ctu_size_minus5 было меньше или равно 2. Другими словами, значение log2 размера блока дерева кодирования яркости каждого CTU находится в диапазоне от 5 до 7. Соответственно, размер блока дерева кодирования яркости каждого CTU находится в диапазоне от 32 (2) до 128)2) отсчетов яркости включительно.
[196] Поскольку диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до log2_ctu_size_minus5+3 включительно, минимальный размер блока кодирования яркости может находиться в диапазоне от 4 до размера блока дерева кодирования яркости, который составляет от 32 до 128 отсчетов яркости.
[197] В качестве примера, когда сигнализируется, что размер блоков дерева кодирования яркости равен 128, возможно, что кодер может решить использовать 128 в качестве минимального размера блока кодирования яркости. Когда используется такой большой размер блока, разделение на более мелкие CU для захвата характеристик локальных областей в изображении может быть запрещено, что, однако, может привести к высокой скорости декодирования с затратами на более низкое качество видеопоследовательности, декодированной на сторона декодера.
[198] Настоящее раскрытие предоставляет решения для решения проблемы низкого качества, вызванной чрезмерно большим минимальным размером блока кодирования яркости.
[199] III. 1 Ограничение верхнего предела минимального размера блока кодирования яркости
[200] В некоторых вариантах осуществления верхний предел диапазона минимального размера блока кодирования яркости определяется как конкретное значение для ограничения минимального размера блока кодирования яркости. Например, допустимые минимальные размеры блока кодирования яркости могут быть ограничены диапазоном от 4 до 64 отсчетов яркости включительно или от 4 до 32 отсчетов яркости включительно.
[201] Вариант осуществления А
2
N+2
[202] В варианте осуществления, в качестве требования соответствия битового потока, указанного в стандарте кодирования видео (например, VVC, HEVC или т.п.), минимальный размер блока кодирования яркости, сигнализируемый в битовом потоке, должен находиться в диапазоне от 4 до (1<<(N+2)) отсчетов яркости (что эквивалентно диапазону от 2 до 2). Соответственно, значение log2 минимального размера блока кодирования яркости находится в диапазоне от 2 до N+2, в то время как значение log2 минимального размера блока кодирования яркости минус 2 находится в диапазоне от 0 до N. При этом N может быть целым числом, таким как 0, 1, 2, 3, 4 и т.п. Путем указания числа N может быть указан верхний предел диапазона минимального размера блока кодирования яркости.
[203] В качестве примера, элемент синтаксиса, обозначенный как log2_min_luma_coding_block_size_minus2, может сигнализироваться в наборе параметров (например, SPS) для указания минимального размера блока кодирования яркости. Семантика может быть указана следующим образом:
- log2_min_luma_coding_block_size_minus2 плюс 2 указывает минимальный размер блока кодирования яркости. Диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до N включительно.
- Переменные MinCbLog2SizeY и MinCbSizeY могут быть получены следующим образом:
где MinCbLog2SizeY представляет значение log2 минимального размера блока кодирования яркости, a MinCbSizeY представляет минимальный размер блока кодирования яркости в отсчетах яркости.
[204] N может быть целым числом, например 0, 1, 2, 3, 4 и т.п. Когда N равно 0, минимальный размер блока кодирования яркости фиксируется на уровне 4 отсчетов яркости. Когда N равно 4, минимальный размер блока кодирования яркости ограничивается диапазоном от 4 до 64 (1<<(4+2)) отсчетов яркости. Когда N равно 3, минимальный размер блока кодирования яркости ограничивается диапазоном от 4 до 32 (1<<(3+2)) отсчетов яркости.
[205] В варианте осуществления, log2_min_luma_coding_block_size_minus2 может сигнализироваться с кодированием фиксированной длины. Когда N равно 1, может использоваться 1-битное кодирование фиксированной длины. Когда N равно 2 или 3, может использоваться 2-битное кодирование с фиксированной длиной. В других вариантах осуществления могут использоваться другие схемы кодирования.
[206] Вариант осуществления В
N+2
N+2
N+2
N+2
N+2
N+2
N+2
[207] В вышеупомянутом варианте осуществления А целое число N используется для определения верхнего предела диапазона минимального размера блока яркости как 2. Когда N принимает значение 0, 1, 2, 3 или 4, максимального допустимый минимальный размер блока яркости может составлять 4, 8, 16, 32 и 64 соответственно. Когда размер CTU (например, 128) больше, чем 2 указано в наборе параметров (например, SPS), верхний предел 2 используется для ограничения диапазона минимального размера блока яркости. Когда размер CTU меньше, чем 2 указано в наборе параметров (например, SPS) (например, когда N=4, и 2=64, сигнализируется размер CTU в 32 отсчета яркости), этот размер CTU становится верхним пределом минимального размер блока яркости. Следовательно, эквивалентом варианта осуществления А является то, что минимальный размер блока яркости ограничен диапазоном от 0 до min (2, размер CTU). Меньшее значение 2 и размер CTU используется в качестве верхнего предела минимального размера блока яркости.
N+2
log2размера CTU
[208] Соответственно, в другом варианте осуществления, в качестве требования соответствия битового потока, указанного в стандарте кодирования видео, минимальный размер блока кодирования яркости, сигнализируемый в битовом потоке, должен находиться в диапазоне от 4 до min ((1<<(N+2)), размер CTU) отсчетов яркости, что эквивалентно диапазону от 22 до min (2, 2). Соответственно, значение log2 минимального размера блока кодирования яркости находится в диапазоне от 2 до min (N+2, log2 размера CTU). N может быть целым числом, например 0, 1, 2, 3, 4 и т.п.Путем указания числа N может быть указан верхний предел диапазона минимального размера блока кодирования яркости.
[209] В качестве примера, элемент синтаксиса, обозначенный как log2_min_luma_coding_block_size_minus2, может сигнализироваться в наборе параметров (например, SPS) для указания минимального размера блока кодирования яркости. Семантика может быть указана следующим образом: log2_min_luma_coding_block_size_minus2 плюс 2 указывает минимальный размер блока кодирования яркости. Диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до min (N, sps_log2_ctu_size_minus5+3) включительно. Элемент синтаксиса sps_log2_ctu_size_minus5 может сигнализироваться в том же наборе параметров и указывать значение log2 размера CTU минус 5.
[210] N может быть целым числом, например 0, 1, 2, 3, 4 и т.п.В первом случае, когда N равно 0, минимальный размер блока кодирования яркости фиксируется на уровне 4 отсчетов яркости. Во втором случае, когда N равно 4, минимальный размер блока кодирования яркости ограничен диапазоном от 4 до min (64, размер CTU) отсчетов яркости. Когда сигнализируется, что размер CTU составляет 128 отсчетов яркости, минимальный размер блока кодирования яркости ограничивается диапазоном от 4 до 64 отсчетов яркости. Когда сигнализируется, что размер CTU составляет 32 отсчета яркости, минимальный размер блока кодирования яркости ограничивается диапазоном от 4 до 32 отсчетов яркости.
[211] Вариант осуществления С
[212] В варианте осуществления декодер может быть конфигурирован для проверки, удовлетворяет ли минимальный размер блока кодирования яркости, сигнализированный в потоке битов, требованию соответствия битового потока во время процесса декодирования. Например, декодер может сначала принять элемент синтаксиса, определяющий минимальный размер блока кодирования яркости из битового потока. Например, элемент синтаксиса предоставляет значение log2 минимального размера блока кодирования яркости минус 2. Значение log2 также может называться значением двоичного логарифма или значением логарифма с основанием 2 в настоящем раскрытии.
[213] Затем декодер может проверить, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне от 0 до N включительно. N является целым числом, таким как 0, 1, 2, 4 и т.д., а N+2 представляет собой значение двоичного логарифма предварительно определенного максимального допустимого минимального размера блока кодирования яркости. В одном примере, когда значение двоичного логарифма минимального размера блока кодирования яркости минус 2 больше N, декодер может определить, что требование соответствия битового потока не удовлетворено, и может завершить процесс декодирования и/или вывести сообщение об ошибке. Когда определено, что значение двоичного логарифма минимального размера блока кодирования яркости минус 2 находится в диапазоне от 0 до N, декодер может продолжить процесс декодирования.
[214] Вариант осуществления D
[215] В варианте осуществления декодер может быть конфигурирован для проверки, удовлетворяет ли минимальный размер блока кодирования яркости, сигнализированный в потоке битов, требованию соответствия битового потока во время процесса декодирования. Например, декодер может принять первый элемент синтаксиса, определяющий минимальный размер блока кодирования яркости из битового потока. Декодер также может принимать второй элемент синтаксиса до или после первого элемента синтаксиса, определяющий размер CTU из битового потока.
[216] Затем декодер может проверить, находится ли минимальный размер блока кодирования яркости в пределах диапазона допустимых минимальных размеров блока кодирования яркости. Когда размер CTU больше, чем предопределенный максимальный допустимый минимальный размер блока кодирования яркости, предопределенный максимальный допустимый минимальный размер блока кодирования яркости используется в качестве верхнего предела диапазона допустимых минимальных размеров блока кодирования яркости. Когда размер CTU меньше предопределенного максимального допустимого минимального размера блока кодирования яркости, размер CTU используется в качестве верхнего предела диапазона допустимых минимальных размеров блока кодирования яркости.
[217] Когда минимальный размер блока кодирования яркости находится в пределах диапазона допустимых минимальных размеров блока кодирования яркости, декодер может продолжить процесс декодирования. В противном случае декодер может завершить процесс декодирования.
[218] Вариант осуществления Е
[219] В варианте осуществления декодер может быть конфигурирован для проверки, удовлетворяет ли минимальный размер блока кодирования яркости, сигнализированный в потоке битов, требованию соответствия битового потока во время процесса декодирования. Например, декодер может принять первый элемент синтаксиса, определяющий минимальный размер блока кодирования яркости из битового потока. Например, элемент синтаксиса предоставляет значение log2 минимального размера блока кодирования яркости минус 2. Декодер может принимать второй элемент синтаксиса до или после первого элемента синтаксиса, определяющий размер CTU из битового потока. Второй элемент синтаксиса может предоставлять значение log2 размера CTU минус 5 и обозначаться как log2_ctu_size_minus5.
[220] Затем декодер может проверить, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне от 0 до Min (N, log2_ctu_size_minus5+3) включительно. N является целым числом, например 0, 1, 2, 3, 4 и т.п.N+2 представляет значение двоичного логарифма предварительно определенного максимального допустимого минимального размера блока кодирования яркости. При этом log2_ctu_size_minus5+5 представляет значение двоичного логарифма размера CTU.
[221] Когда минимальный размер блока кодирования яркости находится в пределах диапазона допустимых минимальных размеров блока кодирования яркости, декодер может продолжить процесс декодирования. В противном случае декодер может завершить процесс декодирования.
[222] Вариант осуществления F
[223] В варианте осуществления декодер может быть конфигурирован для проверки, удовлетворяет ли минимальный размер блока кодирования яркости, сигнализированный в потоке битов, требованию соответствия битового потока во время процесса декодирования. Подобно варианту осуществления Е, декодер может принимать первый элемент синтаксиса, определяющий минимальный размер блока кодирования яркости из битового потока. Элемент синтаксиса обеспечивает значение log2 минимального размера блока кодирования яркости минус 2 и обозначается log2_min_luma_coding_block_size_minus2. Декодер может принимать второй элемент синтаксиса до или после первого элемента синтаксиса, определяющий размер CTU из битового потока. Второй элемент синтаксиса может предоставлять значение log2 размера CTU минус 5 и обозначаться как log2_ctu_size_minus5.
[224] В отличие от варианта осуществления Е, декодер может сначала определить значение двоичного логарифма минимального размера блока кодирования яркости как log2_min_luma_coding_block_size_minus2+2 и определить значение двоичного логарифма размера CTU как log2_ctu_size_minus5+5. Затем декодер может проверить, превышает ли значение двоичного логарифма минимального размера блока кодирования яркости Min (N+2, log2_ctu_size). N является целым числом, например 0, 1, 2, 3, 4 и т.п. N+2 представляет значение двоичного логарифма предварительно определенного максимального допустимого минимального размера блока кодирования яркости.
log2_ctu_size представляет значение двоичного логарифма размера CTU.
[225] Когда минимальный размер блока кодирования яркости больше Min (N+2, log2_ctu_size), декодер может завершить процесс декодирования и/или вывести сообщение об ошибке. В противном случае декодер может продолжить процесс декодирования.
[226] III. 2 Ограничение минимального размера блока кодирования яркости на основе размера CTU
[227] В некоторых вариантах осуществления в качестве требования соответствия битового потока, указанного в стандарте кодирования видео, указывается разница между максимального допустимым минимальным размером блока яркости и сигнализируемым размером CTU, чтобы ограничить диапазон минимального размера блока яркости. Разница может быть указана в терминах значений log2 максимального допустимого минимального размера блока яркости и сигнализированного размера CTU. Например, может потребоваться, чтобы минимальный размер блока кодирования яркости находился в диапазоне от 4 до (1<<(log2_ctu_size_minus5+M+2)) отсчетов яркости. М может быть целым числом, например 0, 1, 2, 3 и т.п. Что касается значений log2, верхний предел диапазона, log2_ctu_size_minus5+М+2, может быть на (3-М) меньше размера CTU, обозначенного как log2_ctu_size_minus5+5. Например, когда М равно 3, нет разницы между верхним пределом и размером CTU. Когда М равно 2, верхний предел составляет половину размера CTU в отсчетах яркости. Например, для размера CTU в 128 отсчетов яркости М, равное 2, определяет верхний предел в 64 отсчета яркости.
[228] В качестве примера, элемент синтаксиса, обозначенный как log2_min_luma_coding_block_size_minus2, может сигнализироваться в наборе параметров (например, SPS) для указания минимального размера блока кодирования яркости. Семантика может быть указана следующим образом:
- log2_min_luma_coding_block_size_minus2 плюс 2 указывает минимальный размер блока кодирования яркости. Диапазон значений log2_min_luma_coding_block_size_minus2 должен находиться в диапазоне от 0 до log2_ctu_size_minus5+M включительно.
[229] В варианте осуществления декодер может быть конфигурирован для проверки, удовлетворяет ли минимальный размер блока кодирования яркости, сигнализированный в потоке битов, вышеуказанному требованию соответствия битового потока во время процесса декодирования. Декодер может принять первый элемент синтаксиса, определяющий минимальный размер блока кодирования яркости из битового потока. Элемент синтаксиса предоставляет значение log2 минимального размера блока кодирования яркости минус 2. Декодер может принимать второй элемент синтаксиса до или после первого элемента синтаксиса, определяющий размер CTU из битового потока. Второй элемент синтаксиса может предоставлять значение log2 размера CTU минус 5 и обозначаться как log2_ctu_size_minus5.
[230] Затем декодер может проверить, находится ли значение двоичного логарифма минимального размера блока кодирования яркости минус 2 в диапазоне от 0 до log2_ctu_size_minus5+M включительно. Аналогично, когда минимальный размер блока кодирования яркости находится в пределах диапазона допустимых минимальных размеров блока кодирования яркости, декодер может продолжить процесс декодирования. В противном случае декодер может завершить процесс декодирования.
[231] III. 3 Фиксированные минимальные размеры блока кодирования яркости
[232] Чтобы избежать снижения производительности кодирования из-за чрезмерно большого минимального размера блока кодирования яркости, в некоторых вариантах осуществления минимальный размер блока кодирования яркости может быть установлен как предварительно определенное значение (например, 4 отсчета яркости). Таким образом, разделение блоков на основе структуры дерева может быть подходящим образом выполнено для использования блоков различных размеров в зависимости от статистических характеристик локальных областей в изображении.
[233] Например, предварительно определенное значение может быть указано в стандарте кодирования видео как требование соответствия битового потока. Чтобы проверить, соответствует ли битовый поток требованию минимального размера блока кодирования яркости, декодер может принять элемент синтаксиса, определяющий минимальный размер блока кодирования яркости в битовом потоке, и проверить значение элемента синтаксиса на соответствие предварительно определенному значению.
[234] IV. Процесс декодирования с ограниченным диапазоном минимального размера блока кодирования яркости
[235] Фиг. 21 показывает блок-схему, описывающую процесс (2100) согласно одному варианту осуществления раскрытия. Процесс (2100) может использоваться при декодировании последовательности изображений, закодированных в битовом потоке. В различных вариантах осуществления процесс (2100) выполняется схемой обработки, например схемой обработки в терминальных устройствах (210), (220), (230) и (240), схемой обработки, которая выполняет функции видеодекодера. (310), схема обработки, которая выполняет функции видеодекодера (410) и т.п.В некоторых вариантах осуществления процесс (2100) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (2100). Процесс начинается с (S2101) и переходит Ha (S2110).
[236] На (S2110) первый элемент синтаксиса может быть принят из битового потока кодированного видео. Первый элемент синтаксиса может определять минимальный размер блока кодирования яркости и включаться в набор параметров, такой как SPS. Или, в некоторых примерах, первый элемент синтаксиса, определяющий минимальный размер блока кодирования яркости, может быть включен в заголовок изображения одного или нескольких изображений в битовом потоке или другие синтаксические структуры. Заголовок изображения (РН) может быть синтаксической структурой, содержащей элементы синтаксиса, которые применяются ко всем слайсам кодированного изображения.
[237] На этапе (S2120) проверяют, находится ли минимальный размер блока кодирования яркости в пределах диапазона допустимых минимальных размеров блока кодирования яркости. Диапазон может быть указан как требование соответствия битового потока в стандарте кодирования видео (например, HEVC, VVC и т.п.). Диапазон может иметь нижний предел, такой как 4, 8 или 16 отсчетов яркости, и верхний предел, меньший, чем максимального допустимый размер CTU. Например, как указано в стандарте кодирования видео, максимального допустимый размер CTU может составлять 128 отсчетов яркости. Верхний предел диапазона допустимых минимальных размеров блока кодирования яркости может иметь значение меньше 128 отсчетов яркости.
N+2
[238] Например, верхний предел может быть меньшим между предварительно определенным максимального допустимым минимальным размером блока кодирования яркости и размером CTU, заданным вторым элементом синтаксиса. Заранее определенный максимального допустимый минимальный размер блока кодирования яркости может быть представлен как 1<<(N+2) (или в другой форме, 2), где N может быть 0, 1, 2, 3, 4 и т.д. Второй элемент синтаксиса может сигнализироваться в битовом потоке.
[239] В примере N равно 4, и заранее определенный максимального допустимый минимальный размер блока кодирования яркости составляет 64 отсчета яркости. Когда сигнализированный размер CTU составляет 128 отсчетов яркости, операция проверки может использовать размер в 64 отсчета яркости в качестве верхнего предела. Когда сигнализированный размер CTU составляет 32 отсчета яркости, операция проверки может использовать размер в 32 отсчета яркости в качестве верхнего предела. Когда сигнализируемый размер CTU составляет 64 отсчета яркости, такой же, как заранее определенный максимального допустимый минимальный размер блока кодирования яркости, операция проверки может использовать размер в 64 отсчета яркости в качестве верхнего предела.
[240] В одном примере, когда определяется, что сигнализированный минимальный размер блока кодирования яркости находится в пределах диапазона допустимых размеров минимального блока кодирования яркости, процесс (2100) может продолжаться. В противном случае процесс (2100) может быть завершен. Кроме, декодер может выводить сообщение об ошибке, указывающее, что сигнализированный минимальный размер блока кодирования яркости не находится в пределах диапазона допустимых размеров минимального блока кодирования яркости.
[241] На (S2130) кодированные изображения в кодированном видео могут быть декодированы на основе минимального размера блока кодирования яркости. Кодированные изображения относятся к набору параметров, который включает в себя первый элемент синтаксиса. Или каждое кодированное изображение включает заголовок изображения, который включает в себя первый элемент синтаксиса. Таким образом, CU в кодированных изображениях могут иметь размеры блока кодирования яркости, большие или равные минимальному размеру блока кодирования яркости, указанному первым элементом синтаксиса.
[242] Различные операции декодирования могут выполняться на основе минимального размера блока кодирования яркости. В примере размер изображения кодированного видео может соответствовать следующему правилу. pps_pic_width_in_luma_samples указывает ширину каждого декодированного изображения со ссылкой на PPS в единицах отсчетов яркости, ppsjtic width in luma samples не должно быть равно 0 и должно быть целым числом, кратным Мах (8, MinCbSizeY), и должно быть меньше или равно sps_pic_width_max_in_luma_samples. MinCbSizeY представляет минимальный размер блока кодирования яркости. Соответственно, декодер может проверять, соответствует ли ширина каждого декодированного изображения, со ссылкой на PPS, правилу на основе минимального размера блока кодирования яркости.
[243] В качестве другого примера, минимальный размер блока кодирования яркости, MinCbSizeY, может использоваться для определения максимального количества бинов, получаемых в результате декодирования контекстов декодированных блоков NAL слайса, как указано в Универсальном кодировании видео (черновик 7). В частности, пусть NumBytesInVclNalUnits будет суммой значений NumBytesInNalUnit для всех блоков NAL VCL кодированного изображения. Пусть BinCountsInNalUnits будет количеством раз, когда функция синтаксического анализа DecodeBin () вызывается для декодирования содержимого всех блоков VCL NAL кодированного изображения. Пусть переменная RawMinCuBits получается следующим образом:
Значение BinCountsInNalUnits должно быть меньше или равно (32+3) * NumBytesInVclNalUnits+(RawMinCuBits * PicSizelnMinCbsY) - 32.
[244] Процесс (2100) может перейти к (S2199) после (S2130) и завершиться на (S2199).
[245] V. Компьютерная система
[246] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 22 показана компьютерная система (2200), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[247] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.
[248] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[249] Компоненты, показанные на фиг. 22 для компьютерной системы (2200), являются примерными по своей сущности и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (2200).
[250] Компьютерная система (2200) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[251] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображенного): клавиатура (2201), мышь (2202), трекпад (2203), сенсорный экран (2210), управляющая перчатка (не показана), джойстик (2205)), микрофон (2206), сканер (2207), камера (2208).
[252] Компьютерная система (2200) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или более пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (2210), управляющей перчатки (не показана) или джойстика (2205), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (2209), наушники (не показаны)), устройства вывода изображения (например, экраны (2210), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[253] Компьютерная система (2200) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические
носители, включая CD/DVD ROM/RW (2220) с CD/DVD или подобные носители (2221), флэш-накопитель (2222), съемный жесткий диск или твердотельный накопитель (2223), унаследованные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.
[254] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[255] Компьютерная система (2200) также может включать в себя интерфейс (2254) к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (2249) (например, к портам USB компьютерной системы (2200)); другие обычно интегрированы в ядро компьютерной системы (2200) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (2200) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[256] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (2240) компьютерной системы (2200).
[257] Ядро (2240) может включать в себя один или несколько центральных процессоров (CPU) (2241), графических процессоров (GPU) (2242), специализированных программируемых процессоров в виде программируемых вентильных областей (FPGA) (2243), аппаратного обеспечения (2244), графических ускорителей (2250) и т.д. Эти устройства, наряду с постоянной памятью (ПЗУ) (2245), памятью с произвольным доступом (2246), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п.(2247), могут быть подключены через системную шину (2248). В некоторых компьютерных системах системная шина (2248) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (2248) ядра, либо через периферийную шину (2249). Например, экран (2210) может быть подключен к графическому адаптеру (2250). Архитектура периферийной шины включает PCI, USB и т.п.
[258] ЦП (2241), ГП (2242), ППВМ (2243) и ускорители (2244) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (2245) или ОЗУ (2246). Переходные данные также могут храниться в ОЗУ (2246), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (2247). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (2241), ГП (2242), ЗУ большой емкости (2247), ПЗУ (2245), ОЗУ (2246) и т.п.
[259] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[260] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (2200) и, в частности, ядро (2240), может обеспечивать функциональность за счет процессора(ов) (включая CPU, GPU, FPGA, ускорители и т.п.), исполняющего программное обеспечение, воплощенное на одном или нескольких материальных машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (2240), которые имеют невременной характер, например, внутренним ЗУ (2247) большой емкости ядра или ПЗУ (2245). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (2240). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может заставить ядро (2240) и, в частности, процессоры в нем (включая CPU, GPU, FGPA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM (2246), и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (2244)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (IC)), хранящую программное обеспечение для исполнения, схему, воплощающую логику для исполнения, или и то, и другое, где это необходимо. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
Приложение А: Сокращения
AMVP: продвинутый MVP
ASIC: специализированная интегральная схема
BDOF: двунаправленный оптический поток
BMS: набор тестов
CANBus (CAN-шина): шина локальной сети контроллера
CBF: флаг кодированного блока
CCLM: кросс-компонентный линейный режим/модель
CD: компакт-диск
СИР: комбинированное интер/интра предсказание
CPUs (ЦП): центральные процессоры
CRT (ЭЛТ): электронно-лучевая трубка
CTBs: блоки дерева кодирования
CTUs: единицы дерева кодирования
CU: единица кодирования
DVD: Цифровой видеодиск
FPGA (ППВМ): программируемые пользователем вентильные матрицы
GOPs: группы изображений
GPUs (ГП): графические процессоры
GSM: глобальная система мобильной связи
HEVC: высокоэффективное видеокодирование
HMVP: Ретроспективный MVP
HRD: гипотетический эталонный декодер
IC: интегральная схема
JEM: объединенная исследовательская модель
LAN: локальная сеть
LCD (ЖКД): жидкокристаллический дисплей
LFNST: низкочастотное неразделимое преобразование
LIC: Компенсация яркости освещения
LTE: долгосрочное развитие
MMVD: Слияние с MVD
MV: вектор движения
MVD: Разница векторов движения
MVP: предиктор вектора движения
OLED: органический светоизлучающий диод
PBs: блоки предсказания
PCI: соединение периферийных компонентов
PDPC: комбинация позиционно-зависимого предсказания
PLD: программируемое логическое устройство
PUs: единицы предсказания
RAM (ОЗУ): оперативное запоминающее устройство
ROM (ПЗУ): постоянное запоминающее устройство
RST: уменьшенное вторичное преобразование
SbTMVP: TMVP на основе субблоков
SCIPU: наименьшая единица интра-предсказания цветности
SEI: дополнительная расширенная информация
SNR: соотношение сигнал-шум
SSD: твердотельный накопитель
TMVP: временный MVP
ТРМ: режим треугольного разбиения
TUs: единицы преобразования,
USB: универсальная последовательная шина
VPDU: модуль визуальных данных процесса
VTM: универсальная тестовая модель
VUI: информация о свойствах видео
VVC: универсальное кодирование видео
[261] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в рамках его сущности и объема.