[0001] Настоящая заявка испрашивает приоритет заявки США № 17/028,209, поданной 22 сентября 2020, которая претендует на преимущество предварительной заявки США № 62/904,508, поданной 23 сентября 2019, полные содержания которых включены в настоящий документ посредством ссылки.
Область техники
[0002] Настоящее раскрытие относится к кодировке видео, включая кодирование видео и декодирование видео.
Предшествующий уровень техники
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, беспроводные широковещательные системы, персональные цифровые ассистенты (PDA), портативные или настольные компьютеры, планшетные компьютеры, считыватели электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные плееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые смартфоны, устройства видео-телеконференцсвязи, устройства потокового видео и тому подобное. Цифровые видеоустройства реализуют методы кодировки видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (Усовершенствованная кодировка видео) (AVC), ITU-T H.265/High Efficiency Video Coding (Высокоэффективная кодировка видео) (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких методов кодировки видео.
[0004] Методы кодировки видео включают в себя пространственное (внутри картинки) предсказание и/или временное (вне картинок) предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям. Для основанной на блоках кодировки видео, видео-вырезка (например, видео-картинка или часть видео-картинки) может быть разделена на блоки видео, которые также могут упоминаться как единицы дерева кодировки (CTU), единицы кодировки (CU) и/или узлы кодировки. Блоки видео в интра-кодированной (внутренне кодированной) (I) вырезке картинки кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (внешне кодированной) (P или В) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.
КРАТКОЕ ИЗЛОЖЕНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0005] В целом настоящее раскрытие описывает методы, относящиеся к кросс-компонентной адаптивной контурной фильтрации (CC-ALF) данных видео. Чтобы выполнить ALF, кодер видео может отдельно фильтровать соответствующие блоки яркости и цветности с использованием разных наборов коэффициентов (например, с использованием набора коэффициентов яркости для фильтрации блока яркости и одного или более наборов коэффициентов цветности для фильтрации блоков цветности). Однако блок яркости может включать в себя детали, которые могут быть потеряны в соответствующем блоке цветности в контуре кодировки. Как таковой, кодер видео может выполнять CC-ALF, в котором информация из блока яркости используется, чтобы усилить соответствующий блок цветности.
[0006] Например, кодер видео может фильтровать блок яркости с первым набором коэффициентов фильтра цветности, чтобы генерировать промежуточный блок для первого компонента цветности (например, Cb) и фильтровать блок яркости со вторым набором коэффициентов фильтра цветности, чтобы генерировать промежуточный блок для второго компонента цветности (например, Cr). Кодер видео может сигнализировать значения коэффициентов фильтра, использованных для CC-ALF (например, по меньшей мере первый и второй наборы коэффициентов фильтра цветности, используемых, чтобы фильтровать блок яркости), на декодер видео как один или более синтаксических элементов в закодированном битовом потоке видео. Кодер видео может затем добавлять соответственные промежуточные блоки к отфильтрованным при помощи ALF блокам цветности компонентов цветности.
[0007] Чтобы отфильтровать блок яркости для генерации промежуточного блока для компонента цветности, кодер видео может выполнять множество операций умножения для каждой выборки блока яркости. Например, кодер видео может вычислять отфильтрованное значение для конкретной выборки блока яркости как суммирование коэффициентов фильтра цветности, умноженных на выборки блока яркости. Как таковое, выполнение CC-ALF может привлекать большое число операций умножения (например, семь для блока яркости 8×8). Выполнение такого высокого числа операций умножения может быть интенсивной по ресурсам попыткой для кодера видео, что может нежелательным образом увеличивать время кодировки и/или потребление энергии.
[0008] В соответствии с одним или более методами настоящего раскрытия, кодер видео может кодировать (например, кодер видео может кодировать и декодер видео может декодировать) коэффициенты фильтра для CC-ALF, так что абсолютные значения коэффициентов фильтра ограничены нулем или степенью двух. При фильтрации блока яркости с использованием коэффициентов фильтра для генерации промежуточных блоков цветности, кодер видео может заменять операции умножения на операции битового сдвига (например, операции сдвига влево и сдвига вправо). Поскольку абсолютные значения коэффициентов фильтра ограничены нулем или степенью двух, замена операций умножения на операции битового сдвига может быть математически эквивалентной (т.е. давать идентичный промежуточный блок цветности). Однако, при математической эквивалентности, операции битового сдвига могут быть существенно менее интенсивными по ресурсам, чем операции умножения. Дополнительно, при реализации в выделенных аппаратных средствах (например, специализированной интегральной схеме (ASIC)), аппаратные средства, необходимые для выполнения операций битового сдвига, могут быть проще, чем аппаратные средства, необходимые для выполнения операций умножения. Таким образом, методы настоящего раскрытия уменьшают требования к ресурсам CC-ALF.
[0009] В качестве одного примера, способ включает в себя декодирование множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем декодирование конкретного коэффициента фильтра из множества коэффициентов фильтра содержит: декодирование, из закодированного битового потока видео, синтаксического элемента, специфицирующего значение экспоненты (показателя степени), которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты; и определение значения конкретного коэффициента фильтра на основе значения экспоненты; восстановление выборок блока данных видео; и кросс-компонентную адаптивную контурную фильтрацию, на основе множества коэффициентов фильтра, блока данных видео.
[0010] В качестве другого примера способ включает в себя кодирование значений множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем кодирование значения конкретного коэффициента фильтра из множества коэффициентов фильтра содержит: кодирование, в закодированном битовом потоке видео, синтаксического элемента, специфицирующего значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра как два, возведенное в степень значения экспоненты; восстановление выборок блока данных видео; и кросс-компонентную адаптивную контурную фильтрацию, на основе значений множества коэффициентов фильтра, блока данных видео.
[0011] В качестве другого примера устройство включает в себя память, сконфигурированную, чтобы хранить по меньшей мере часть закодированного битового потока видео; и один или более процессоров, которые реализованы в схеме и сконфигурированы, чтобы: декодировать множество коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем, чтобы декодировать конкретный коэффициент фильтра из множества коэффициентов фильтра, один или более процессоров сконфигурированы, чтобы: декодировать, из закодированного битового потока видео, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты; и определять значение конкретного коэффициента фильтра на основе значения экспоненты; восстанавливать выборки блока данных видео; и выполнять кросс-компонентную адаптивную контурную фильтрацию, на основе множества коэффициентов фильтра, блока данных видео.
[0012] В качестве другого примера устройство включает в себя память, сконфигурированную, чтобы хранить по меньшей мере часть закодированного битового потока видео; и один или более процессоров, которые реализованы в схеме и сконфигурированы, чтобы: кодировать значения множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем, чтобы закодировать значение конкретного коэффициента фильтра из множества коэффициентов фильтра, один или более процессоров сконфигурированы, чтобы: кодировать, в закодированном битовом потоке видео, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра как два, возведенное в степень значения экспоненты; восстанавливать выборки блока данных видео; и выполнять кросс-компонентную адаптивную контурную фильтрацию, на основе значений множества коэффициентов фильтра, блока данных видео.
[0013] Детали одного или более примеров изложены на прилагаемых чертежах и в описании ниже. Другие признаки, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0014] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия.
[0015] Фиг. 2A и 2B являются концептуальными диаграммами, иллюстрирующими примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодировки (CTU).
[0016] Фиг. 3 является блок-схемой, иллюстрирующей примерный кодер видео, который может выполнять методы настоящего раскрытия.
[0017] Фиг. 4 является блок-схемой, иллюстрирующей примерный декодер видео, который может выполнять методы настоящего раскрытия.
[0018] Фиг. 5 является блок-схемой, иллюстрирующей примерный модуль фильтрации, в соответствии с одним или более методами настоящего раскрытия.
[0019] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока в соответствии с методами настоящего раскрытия.
[0020] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока в соответствии с методами настоящего раскрытия.
[0021] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кросс-компонентной адаптивной контурной фильтрации (CC-ALF) на текущем блоке в соответствии с одним или более методами настоящего раскрытия.
Подробное описание
[0022] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять методы настоящего раскрытия. Методы настоящего раскрытия в общем направлены на кодировку (кодирование и/или декодирование) данных видео. В общем, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать в себя исходное, незакодированное видео, закодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.
[0023] Как показано на фиг. 1, система 100 включает в себя устройство-источник 102, которое предоставляет закодированные данные видео, которые должны декодироваться и отображаться устройством-получателем 116, в этом примере. В частности, устройство-источник 102 предоставляет данные видео устройству-получателю 116 через считываемый компьютером носитель 110. Устройство-источник 102 и устройство-получатель 116 могут быть любым из широкого диапазона устройств, включая настольные компьютеры, ноутбуки (т.е. портативные) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые мультимедийные плееры, видеоигровые консоли, устройство потокового видео, вещательное приемное устройство телевизионная приставка или тому подобное. В некоторых случаях, устройство-источник 102 и устройство-получатель 116 могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.
[0024] В примере, показанном на фиг. 1, устройство-источник 102 включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство-получатель 116 включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с этим раскрытием, кодер 200 видео устройства-источника 102 и декодер 300 видео устройства-получателя 116 могут быть сконфигурированы, чтобы применять методы для выполнения кросс-компонентной адаптивной контурной фильтрации. Таким образом, устройство-источник 102 представляет пример устройства кодирования видео, в то время как устройство-получатель 116 представляет пример устройства декодирования видео. В других примерах, устройство-источник и устройство-получатель могут включать в себя другие компоненты или компоновки. Например, устройство-источник 102 может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство-получатель 116 может взаимодействовать с внешним устройством отображения, а не включать в себя интегрированное устройство отображения.
[0025] Система 100, как показано на фиг. 1, является просто одним примером. Вообще, любое устройство кодирования и/или декодирования цифрового видео может выполнять методы для кросс-компонентной адаптивной контурной фильтрации. Устройство-источник 102 и устройство-получатель 116 являются просто примерами таких устройств кодировки, в которых устройство-источник 102 генерирует кодированные данные видео для передачи в устройство-получатель 116. Данное раскрытие ссылается на устройство “кодирования” как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют примеры устройств кодировки, в частности, кодера видео и декодера видео, соответственно. В некоторых примерах, устройство-источник 102 и устройство-получатель 116 могут работать по существу симметричным образом, так что каждое из устройства-источника 102 и устройства-получателя 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю или двухстороннюю передачу видео между устройством-источником 102 и устройством-получателем 116, для потокового видео, воспроизведения видео, видеовещания или видеотелефонии.
[0026] В общем, источник 104 видео представляет собой источник данных видео (т.е. необработанных, незакодированных данных видео) и обеспечивает последовательный ряд картинок (также называемых “кадрами”) данных видео в кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства-источника 102 может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное исходное видео, и/или интерфейс ввода видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию реального видео, архивированного видео и сгенерированного компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочить картинки из принятого порядка (иногда упоминаемого как “порядок отображения”) в порядок кодировки для кодировки. Кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео. Устройство-источник 102 может затем выводить закодированные данные видео через выходной интерфейс 108 на считываемый компьютером носитель 110 для приема и/или извлечения, например, входным интерфейсом 122 устройства-получателя 116.
[0027] Память 106 устройства-источника 102 и память 120 устройства-получателя 116 представляют собой памяти общего назначения. В некоторых примерах, памяти 106, 120 могут хранить необработанные данные видео, например, необработанное видео из источника 104 видео и необработанные, декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106, 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео, соответственно. Хотя показаны отдельно от кодера 200 видео и декодера 300 видео в этом примере, следует понимать, что кодер 200 видео и декодер 300 видео могут также включать в себя внутренние памяти для функционально аналогичных или эквивалентных целей. Кроме того, памяти 106, 120 могут хранить закодированные данные видео, например, выводимые из кодера 200 видео и вводимые в декодер 300 видео. В некоторых примерах, части памятей 106, 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.
[0028] Считываемый компьютером носитель 110 может представлять любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства-источника 102 к устройству-получателю 116. В одном примере, считываемый компьютером носитель 110 представляет собой коммуникационную среду для предоставления возможности устройству-источнику 102 передавать закодированные данные видео непосредственно на устройство-получатель 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, и входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может включать в себя любую беспроводную или проводную коммуникационную среду, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может образовывать часть пакетной сети, такой как локальная вычислительная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для облегчения связи от устройства-источника 102 к устройству-получателю 116.
[0029] В некоторых примерах, устройство-источник 102 может выводить закодированные данные из выходного интерфейса 108 в устройство хранения 112. Аналогично, устройство-получатель 116 может осуществлять доступ к закодированным данным из устройства хранения 112 через входной интерфейс 122. Устройство хранения 112 может включать в себя любой из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любой другой подходящий цифровой носитель данных для хранения закодированных данных видео.
[0030] В некоторых примерах, устройство-источник 102 может выводить закодированные данные видео на файловый сервер 114 или другое промежуточное устройство хранения, которое может сохранять закодированное видео, сгенерированное устройством-источником 102. Устройство-получатель 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного сохранять закодированные данные видео и передавать эти закодированные данные видео на устройство-получатель 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-сайта), сервер протокола пересылки файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство-получатель 116 может осуществлять доступ к закодированным данным видео от файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или комбинацию обоих, которая является подходящей для доступа к закодированным данным видео, сохраненным на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть сконфигурированы, чтобы работать в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их комбинацией.
[0031] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, компоненты проводной сети (например, Ethernet-карты), компоненты беспроводной связи, которые работают в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE Advanced (Усовершенствованный LTE), 5G или тому подобное. В некоторых примерах, где выходной интерфейс 108 включает в себя беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть сконфигурированы для передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ или тому подобное. В некоторых примерах, устройство-источник 102 и/или устройство-получатель 116 могут включать в себя соответствующие устройства типа “система на кристалле” (SoC). Например, устройство-источник 102 может включать в себя устройство SoC для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство-получатель 116 может включать в себя устройство SoC для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.
[0032] Методы настоящего раскрытия могут применяться к кодировке видео при поддержке любого из множества мультимедийных приложений, таких как широковещательные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носителе хранения данных, декодирование цифрового видео, хранимого на носителе хранения, или другие приложения.
[0033] Входной интерфейс 122 устройства-получателя 116 принимает закодированный битовый поток видео из считываемого компьютером носителя 110 (например, устройства хранения 112, файлового сервера 114 и т.п.). Закодированный битовый поток видео считываемого компьютером носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, например синтаксические элементы, имеющие значения, описывающие характеристики и/или обработку блоков видео или других кодируемых единиц (например, вырезок, картинок, групп картинок, последовательностей и т.п.). Устройство 118 отображения отображает декодированные картинки декодированных данных видео пользователю. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на основе органических светоизлучающих диодов (OLED) или другой тип устройства отображения.
[0034] Хотя это не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть объединены с кодером аудио и/или декодером аудио и могут включать в себя соответствующие модули MUX-DEMUX или другие аппаратные средства и/или программное обеспечение, чтобы обрабатывать мультиплексированные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если это применимо, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0035] Кодер 200 видео и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, встроенное программное обеспечение или любые их комбинации. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем, невременном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методов данного раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может включать в себя интегральную схему, микропроцессор и/или беспроводное устройство связи, такое как сотовый телефон.
[0036] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодировки видео, таким как ITU-T H.265, также упоминаемым как Высокоэффективная кодировка видео (HEVC), или ее расширениями, такими как расширения много-видовой и/или масштабируемой кодировки видео. Альтернативно, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или промышленными стандартами, такими как Тестовая модель объединенного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемое как Многоцелевая кодировка видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодировки.
[0037] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочную кодировку картинок. Термин “блок” обычно относится к структуре, включающей в себя данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодировки данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, и декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).
[0038] Настоящее раскрытие может, в общем, относиться к кодировке (например, кодированию и декодированию) картинок, включающей в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может относиться к кодировке блоков картинки, включающей в себя процесс кодирования или декодирования данных для блоков, например, кодировке предсказания и/или остатка. Закодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодировки (например, режимы кодировки) и разбиение картинок на блоки. Таким образом, ссылки на кодировку картинки или блока, в общем, следует понимать как кодировку значений для синтаксических элементов, образующих картинку или блок.
[0039] HEVC определяет различные блоки, в том числе единицы кодировки (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодировки видео (такое как кодер 200 видео) разбивает единицу дерева кодировки (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодировки видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать в себя одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет разбиение TU. В HEVC, PU представляют данные интер-предсказания (внешнего предсказания), в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают в себя информацию интра-предсказания (внутреннего предсказания), такую как указание интра-режима.
[0040] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть сконфигурированы для работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодировки (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT включает в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодировки (CU).
[0041] В структуре разбиения МТТ, блоки могут быть разделены, используя разбиение квадродерева (QT), разбиение двоичного дерева (BT) и один или более типов разбиений троичного дерева (TT). Троичное разбиение является разбиением, в котором блок разделен на три подблока. В некоторых примерах, троичное разбиение разделяет блок на три подблока без разделения исходного блока через центр. Типы разбиения в МТТ (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0042] В некоторых примерах, кодер 200 видео и декодер 300 видео могут использовать одну структуру QTBT или МТТ для представления каждого из компонентов яркости и цветности, в то время как в других примерах, кодер 200 видео и декодер 300 видео могут использовать две или более структуры QTBT или МТТ, такие как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/МТТ для соответствующих компонентов цветности).
[0043] Кодер 200 видео и декодер 300 видео могут быть сконфигурированы, чтобы использовать разбиение квадродерева на HEVC, разбиение QTBT, разбиение МТТ или другие структуры разбиения. В целях объяснения, описание методов этого раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что способы настоящего изобретения также могут применяться к устройствам кодирования видео, сконфигурированным, чтобы использовать разбиение квадродерева или других типов разбиения.
[0044] Блоки (например, CTU или CU) могут группироваться различными способами в картинке. В качестве одного примера, кирпичик может относиться к прямоугольной области строк CTU в конкретном мозаичном элементе в картинке. Мозаичный элемент может представлять собой прямоугольную область CTU в конкретном столбце мозаичного элемента и конкретной строке мозаичного элемента в картинке. Столбец мозаичного элемента относится к прямоугольной области CTU, имеющих высоту, равную высоте картинки, и ширину, специфицированную синтаксическими элементами (например, как в наборе параметров картинки). Строка мозаичного элемента относится к прямоугольной области CTU, имеющих высоту, специфицированную синтаксическими элементами (например, как в наборе параметров картинки), и ширину, равную ширине картинки.
[0045] В некоторых примерах, мозаичный элемент может разбиваться на множество кирпичиков, каждый из которых может включать в себя одну или более строк CTU в мозаичном элементе. Мозаичный элемент, который не разбивается на множество кирпичиков, может также упоминаться как кирпичик. Однако, кирпичик, который является истинным поднабором мозаичного элемента, не может упоминаться как мозаичный элемент.
[0046] Кирпичики в картинке могут также быть упорядочены в вырезке. Вырезка может представлять собой целое число кирпичиков картинки, которая может исключительно содержаться в одной единице уровня сетевой абстракции (NAL). В некоторых примерах, вырезка включает в себя либо некоторое число полных мозаичных элементов, либо только последовательную последовательность полных кирпичиков одного мозаичного элемента.
[0047] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео) в терминах вертикального и горизонтального размеров, например, 16×16 выборок или 16 на 16 выборок. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном направлении. Например, CU может содержать N×M выборок, где M не обязательно равно N.
[0048] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.
[0049] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию CU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с CU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (MSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказывать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.
[0050] Некоторые примеры JEM и VVC также обеспечивают аффинный режим компенсации движения, который может рассматриваться как режим интер-предсказания. В аффинном режиме компенсации движения, кодер 200 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как увеличение или уменьшение масштаба, вращение, движение в перспективе или другие нерегулярные типы движения.
[0051] Для выполнения интра-предсказания, кодер 200 видео может выбрать режим интра-предсказания для генерации блока предсказания. Некоторые примеры JEM и VVC обеспечивает шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем случае, кодер 200 видео выбирает режим интра-предсказания, который описывает соседние выборки для текущего блока (например, блока CU), из которых следует предсказывать выборки текущего блока. Такие выборки обычно могут находиться сверху, сверху и слева или слева от текущего блока в той же картинке, что и текущий блок, в предположении, что кодер 200 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).
[0052] Кодер 200 видео кодирует данные, представляющи режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима объединения. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для аффинного режима компенсации движения.
[0053] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные значения для блока. Остаточные значения, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.
[0054] Как отмечено выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.
[0055] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения вектора, преобразованного в последовательную форму, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивной двоичной арифметической кодировкой (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.
[0056] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.
[0057] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.
[0058] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя закодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.
[0059] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.
[0060] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.
[0061] Как рассмотрено выше и в соответствии с одним или более методами настоящего раскрытия, кодер 200 видео и/или декодер 300 видео могут быть сконфигурированы, чтобы сигнализировать коэффициенты фильтра для CC-ALF с абсолютными значениями, ограниченными до нуля или степени двух. Таким образом, кодер 200 видео и/или декодер 300 видео могут заменять операции умножения при выполнении CC-ALF на операции битового сдвига, которые являются менее затратными с точки зрения ресурсов.
[0062] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство-источник 102 может транспортировать битовый поток к устройству-получателю 116 по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством-получателем 116.
[0063] Фиг. 2A и 2B являются концептуальной диаграммой, иллюстрирующей примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодировки (CTU) 132. Сплошные линии представляют разделение квадродерева, а пунктирные линии указывают разделение двоичного дерева. В каждом разделенном (т.е. не-листовом) узле двоичного дерева, сигнализируется один флаг для указания того, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разделение, и 1 указывает вертикальное разделение в этом примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и вертикали на 4 подблока с равным размером. Соответственно, кодер 200 видео может кодировать, и декодер 300 видео может декодировать, синтаксические элементы (такие как информация разделения) для регионального уровня дерева структуры 130 QTBT (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры 130 QTBT (т.е. пунктирные линии). Кодер 200 видео может кодировать, и декодер 300 видео может декодировать, видеоданные, такие как данные предсказания и преобразования, для CU, представленных концевыми листовыми узлами структуры 130 QTBT.
[0064] В общем, CTU 132, показанная на фиг. 2В, может быть ассоциирована с параметрами, определяющими размеры блоков, соответствующих узлам структуры 130 QTBT на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимальный разрешенный размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющую максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер листового узла двоичного дерева).
[0065] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может быть разделен согласно разбиению квадродерева. То есть, узлы первого уровня представляют собой либо листовые узлы (не имеющие дочерних узлов), либо имеют четыре дочерних узла. Пример структуры 130 QTBT представляет такие узлы, как включающие в себя родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше максимального разрешенного размера корневого узла двоичного дерева (MaxBTSize), они могут быть дополнительно разделены посредством соответственных двоичных деревьев. Разделение двоичного дерева одного узла может итеративно повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимального разрешенного размера листового узла двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример структуры 130 QTBT представляет такие узлы, как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодировки (CU), которая используется для предсказания (например, предсказания внутри картинки или вне между картинками) и преобразования без какого-либо дополнительного разделения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.
[0066] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующих выборки цветности 64×64 цветности), MinQTSize устанавливается как 16×6, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала для генерации листовых узлов квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (то есть MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделяться посредством двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64, в этом примере). В противном случае, листовой узел квадродерева будет далее разделяться посредством двоичного дерева. Следовательно, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева как 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в этом примере), никакое дальнейшее разделение не разрешается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в этом примере), это означает, что никакое дальнейшее горизонтальное разделение не разрешено. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, означает, что никакое дальнейшее вертикальное разделение не разрешено для этого узла двоичного дерева. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются согласно предсказанию и преобразованию без дополнительного разбиения.
[0067] На фиг. 3 показана блок-схема, иллюстрирующая примерный кодер 200 видео, который может выполнять методы настоящего раскрытия. Фиг. 3 представлена для целей объяснения и не должна рассматриваться как ограничение методов, которые широко проиллюстрированы и описаны в этом раскрытии. В целях объяснения, данное раскрытие описывает кодер 200 видео в контексте стандартов кодировки видео, таких как стандарт кодировки видео HEVC и стандарт кодировки видео H.266 на стадии разработки. Однако методы этого раскрытия не ограничены этими стандартами кодировки видео и применимы в общем к кодированию и декодированию видео.
[0068] В примере на фиг. 3, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер декодированных картинок (DPB) 218 и модуль 220 энтропийного кодирования. Любое или все из памяти 230 данных видео, модуля 202 выбора режима, модуля 204 генерации остатка, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, кодер 200 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.
[0069] Память 230 данных видео может сохранять данные видео, которые должны быть кодированы компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, сохраняемые в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть на чипе (однокристальной) с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.
[0070] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью, внутренней для кодера 200 видео, если только специально не описана как таковая, или памятью, внешней для кодера 200 видео, если только специально не описана как таковая. Скорее, ссылку на память 230 данных видео следует понимать как опорную память, которая сохраняет данные видео, которые кодер 200 видео принимает для кодирования (например, данные видео для текущего блока, который должен быть закодирован). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных от различных модулей кодера 200 видео.
[0071] Различные модули на фиг. 3 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинация. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или встроенного программного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0072] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить объектный код программного обеспечения, который кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.
[0073] Память 230 данных видео сконфигурирована для сохранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и передавать данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными данными видео, которые должны быть закодированы.
[0074] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные блоки для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примеров, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутри-блочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.
[0075] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования комбинаций параметров кодирования и результирующих значений скорости-искажения для таких комбинаций. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных значений CU, параметры квантования для остаточных значений CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать комбинацию параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых комбинаций.
[0076] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.
[0077] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.
[0078] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют позиции опорных блоков в опорных картинках относительно позиции текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и комбинировать извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.
[0079] В качестве другого примера, для интра-предсказания или кодировки интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может, обычно, математически комбинировать значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для генерации блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.
[0080] Модуль 202 выбора режима предоставляет блок предсказания на модуль 204 генерации остатка. Модуль 204 генерации остатка принимает необработанную, незакодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет разности от выборки к выборке между текущим блоком и блоком предсказания. Результирующие разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка также может определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть образован использованием одной или более схем вычитания, которые выполняют двоичное вычитание.
[0081] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодировки яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.
[0082] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодировки яркости и соответствующими блоками кодировки цветности. Как указано выше, размер CU может относиться к размеру блока кодировки яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.
[0083] Для других методов кодировки видео, таких как кодировка в режиме внутри-блочного копирования, кодировка в аффинном режиме и кодировка в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методами кодировки, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодировка в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.
[0084] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.
[0085] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для генерации блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.
[0086] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем коррекции значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.
[0087] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.
[0088] Модуль 216 фильтрации может выполнять одну или более операций на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности по краям CU. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах. Модуль 216 фильтрации может выполнять методы кросс-компонентной адаптивной контурной фильтрации (CC-ALF) настоящего раскрытия, отдельно или в любой комбинации. Например, модуль 216 фильтрации может выполнять CC-ALF, как рассмотрено ниже со ссылкой на фиг. 5. Модуль 216 фильтрации может генерировать один или более коэффициентов для CC-ALF. Например, модуль 216 фильтрации может генерировать первый набор коэффициентов фильтра для использования при генерации первого промежуточного блока цветности из блока яркости и второй набор коэффициентов фильтра для использования при генерации второго промежуточного блока цветности из блока яркости. Как рассмотрено выше и в соответствии с одним или более методами настоящего раскрытия, модуль 216 фильтрации может ограничивать абсолютные значения сгенерированных коэффициентов фильтра как нуль или степень двух (например, 1, 2, 4, 8, 16, 32, 64, 128, 256 и т.д.). Подобным же образом, модуль 220 энтропийного кодирования может быть сконфигурирован, чтобы энтропийно кодировать параметры кросс-компонентной адаптивной контурной фильтрации в соответствии с методами настоящего раскрытия. Например, в противоположность кодированию действительных значений коэффициентов фильтра, модуль 220 энтропийного кодирования может кодировать значение экспоненты коэффициентов фильтра, и декодер видео может восстанавливать действительные значения коэффициентов фильтра на основе значения экспоненты.
[0089] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в случаях, где операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где требуются операции модуля 216 фильтрации, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать из DPB 218 опорную картинку, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодируемых картинок. Кроме того, модуль 226 интра-предсказания может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.
[0090] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивной кодировки переменной длины (CAVLC), операцию CABAC, операцию кодировки длины от переменной к переменной (V2V), операцию основанной на синтаксисе контекстно-адаптивной двоичной арифметической кодировки (SBAC), операцию энтропийной кодировки с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно-кодируемыми.
[0091] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно-закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.
[0092] Вышеизложенные операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодировки яркости и/или блоков кодировки цветности. Как описано выше, в некоторых примерах, блок кодировки яркости и блоки кодировки цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодировки яркости и блоки кодировки цветности являются компонентами яркости и цветности PU.
[0093] В некоторых примерах, операции, выполняемые в отношении блока кодировки яркости, не требуется повторять для блоков кодировки цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодировки яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодировки яркости может масштабироваться для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодировки яркости и блоков кодировки цветности.
[0094] Кодер 200 видео представляет пример устройства, сконфигурированного, чтобы кодировать данные видео, которое включает в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схеме и сконфигурированных, чтобы выполнять методы кросс-компонентной адаптивной контурной фильтрации в соответствии с настоящим раскрытием.
[0095] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методы настоящего раскрытия. Фиг. 4 обеспечена в целях пояснения и не ограничивает методы, широко иллюстрируемые и описанные в настоящем раскрытии. В целях объяснения, это раскрытие описывает декодер 300 видео в соответствии с методами JEM, VVC и HEVC. Тем не менее, методы этого раскрытия могут быть выполнены устройствами кодировки видео, которые сконфигурированы для других стандартов кодировки видео.
[0096] В примере на фиг. 4, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер декодированных картинок (DPB) 314. Любой или все из памяти 320 CPB, модуля 302 энтропийного декодирования, модуля 304 обработки предсказания, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 могут быть реализованы в одном или более процессорах или в схемах обработки. Кроме того, декодер 300 видео может включать в себя дополнительные или альтернативные процессоры или схемы обработки для выполнения этих и других функций.
[0097] Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя дополнительные модули для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше компонентов или другие функциональные компоненты.
[0098] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из считываемого компьютером носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть на чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.
[0099] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть, память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.
[0100] Различные модули, показанные на фиг. 4, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их комбинации. Подобно фиг. 3, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или встроенное программное обеспечение, которое побуждает программируемые схемы работать таким образом, как определяется инструкциями программного обеспечения или встроенного программного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.
[0101] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, память на чипе или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.
[0102] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.
[0103] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).
[0104] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.
[0105] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0106] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 3).
[0107] В качестве другого примера, если синтаксические элементы информации предсказания указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации предсказания. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, который по существу аналогичен описанному в отношении модуля 226 интра-предсказания (фиг. 3). Модуль 318 интра-предсказания может извлекать данные из соседних выборок для текущего блока из DPB 314.
[0108] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока предсказания и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания, чтобы восстановить текущий блок.
[0109] Модуль 302 энтропийного декодирования может дополнительно энтропийно декодировать параметры кросс-компонентного адаптивного контурного фильтра в соответствии с методами настоящего раскрытия. Например, в соответствии с одним или более методами настоящего раскрытия, модуль 302 энтропийного декодирования может декодировать, для каждого из множества коэффициентов фильтра и из закодированного битового потока видео, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты. Где значение экспоненты для конкретного коэффициента фильтра является ненулевым, модуль 302 энтропийного декодирования может декодировать, из закодированного битового потока видео и для конкретного коэффициента фильтра, синтаксический элемент со значением, которое специфицирует знак (например, положительный или отрицательный) конкретного коэффициента фильтра. Модуль 302 энтропийного декодирования может восстанавливать значения множества коэффициентов фильтра на основе значений экспоненты. Например, модуль 302 энтропийного декодирования может восстанавливать значение конкретного коэффициента фильтра в соответствии со следующим уравнением:
где является значением конкретного коэффициента фильтра, является отрицательным, где сигнализированный знак является отрицательным, и положительным, где сигнализированный знак является положительным, и является сигнализированным значением экспоненты для конкретного коэффициента фильтра.
[0110] Модуль 302 энтропийного декодирования может предоставлять восстановленные коэффициенты кросс-компонентного адаптивного контурного фильтра на модуль 312 фильтрации. Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности, чтобы уменьшить артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах. В соответствии с методами настоящего раскрытия, модуль 312 фильтрации может использовать коэффициенты кросс-компонентного адаптивного контурного фильтра для выполнения кросс-компонентной адаптивной контурной фильтрации декодированного блока данных видео.
[0111] Декодер 300 видео может сохранять восстановленные блоки в DPB 314. Как рассмотрено выше, DPB 314 может обеспечивать опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированные картинки для последовательной компенсации движения, на модуль 304 обработки предсказания. Более того, декодер 300 видео может выводить декодированные картинки из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения фиг. 1.
[0112] Таким образом, декодер 300 видео представляет пример устройства декодирования видео, включающего в себя память, сконфигурированную, чтобы хранить данные видео, и один или более модулей обработки, реализованных в схеме и сконфигурированных, чтобы выполнять методы кросс-компонентной адаптивной контурной фильтрации настоящего раскрытия, отдельно или в какой-либо комбинации.
[0113] Фиг. 5 является блок-схемой, иллюстрирующей примерный модуль фильтрации, в соответствии с одним или более методами настоящего раскрытия. Модуль 500 фильтрации согласно фиг. 5 может рассматриваться как пример модуля 216 фильтрации кодера 200 видео или модуля 312 фильтрации декодера 300 видео.
[0114] Модуль 500 фильтрации может включать в себя компоненты, сконфигурированные, чтобы выполнять различные типы фильтрации. Например, как показано на фиг. 5, модуль 500 фильтрации может включать в себя компоненты, сконфигурированные, чтобы выполнять фильтрацию адаптивного смещения выборки (SAO), такие как фильтр 502 яркости SAO, фильтр 504 Cb SAO и фильтр 506 Cr SAO. Как также показано на фиг. 5, модуль 500 фильтрации может включать в себя компоненты, сконфигурированные, чтобы выполнять кросс-компонентную адаптивную контурную фильтрацию (CC-ALF), такие как фильтр 508 яркости ALF, фильтр 510 CC ALF Cb, фильтр 512 CC ALF Cr, фильтр 514 цветности ALF, сумматор 516 и сумматор 518.
[0115] При функционировании, фильтр 502 яркости SAO может принимать входной блок яркости данных видео, выполнять фильтрацию SAO на входном блоке яркости, чтобы генерировать выходной блок яркости данных видео, и предоставлять выходной блок яркости данных видео на один или более других компонентов фильтрации, таких как фильтр 508 яркости ALF, фильтр 510 CC ALF Cb и фильтр 512 CC ALF Cr. Фильтр 504 Cb SAO может принимать входной блок цветности Cb данных видео, выполнять фильтрацию SAO на входном блоке цветности Cb, чтобы генерировать выходной блок цветности данных видео Cb, и предоставлять выходной блок цветности данных видео Cb на один или более других компонентов фильтрации, таких как фильтр 514 цветности ALF. Аналогично, фильтр 506 Cr SAO может принимать входной блок цветности Cr данных видео, выполнять фильтрацию SAO на входном блоке цветности Cr, чтобы генерировать выходной блок цветности Cr данных видео, и предоставлять выходной блок цветности Cr данных видео на один или более других компонентов фильтрации, таких как фильтр 514 цветности ALF.
[0116] Компоненты ALF могут выполнять ALF на блоках данных видео, предоставленных компонентами фильтрации SAO. Например, фильтр 508 яркости ALF может выполнять адаптивную контурную фильтрацию на блоке яркости, предоставленном фильтром 502 яркости SAO, чтобы сгенерировать выходной блок яркости, обозначенный как Y. Дополнительно, фильтр 514 цветности ALF может выполнять адаптивную контурную фильтрацию на блоке цветности, предоставленном фильтром 504 Cb SAO и фильтром 506 Cr SAO, чтобы сгенерировать выходные блоки цветности, обозначенные как Cb’ и Cr’.
[0117] В публикации Misra, et al. “Cross-Component Adaptive Loop Filter for chroma” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O0636 (далее “JVET-O0636”) предложен инструмент, называемый кросс-компонентным адаптивным контурным фильтром (CC-ALF). CC-ALF работает как часть адаптивного контурного фильтра (ALF) и использует выборки яркости для уточнения каждого компонента цветности. Например, фильтр 510 CC ALF Cb и фильтр 512 CC ALF Cr могут каждый генерировать блок усиления/уточнения цветности на основе блока яркости, предоставленного фильтром 502 яркости SAO (например, фильтр 510 CC ALF Cb может генерировать блок Cb+ усиления цветности, и фильтр 512 CC ALF Cr может генерировать блок Cr+ усиления цветности). Каждый из фильтра 510 CC ALF Cb и фильтра 512 CC ALF Cr может генерировать свой соответственный блок усиления цветности на основе соответственного набора коэффициентов фильтра (например, фильтр 510 CC ALF Cb может использовать первый набор коэффициентов фильтра, и фильтр 512 CC ALF Cr может использовать второй набор коэффициентов фильтра). Например, фильтр 510 CC ALF Cb может генерировать блок Cb+ цветности в соответствии со следующим уравнением:
где Ii является отфильтрованным блоком, и I0 является нефильтрованным блоком, является местоположением (x, y) яркости, является поддержкой фильтра по яркости для цветового компонента Cb, и является коэффициентом фильтра.
[0118] Как показано в уравнении выше, каждый из фильтра 510 CC ALF Cb и фильтра 512 CC ALF Cr может выполнять множество операций умножения. Как обсуждено выше и в соответствии с одним или более методами настоящего раскрытия, эти операции умножения могут заменяться на операции битового сдвига, которые являются существенно менее затратными по ресурсам и/или проще для аппаратной реализации, чем операции умножения. Например, чтобы выполнять фильтрацию с использованием операций битового сдвига, каждый из фильтра 510 CC ALF Cb и фильтра 512 CC ALF Cr может использовать следующее уравнение:
[0119] CC-ALF может управляться информацией в битовом потоке, и эта информация включает в себя вышеупомянутые коэффициенты фильтра для каждого компонента цветности (которые могут сигнализироваться в наборе параметров адаптации (APS)) и маску, управляющую применением фильтра для блоков выборок. В JVET-O0636, каждый из коэффициентов фильтра представлен как десятичное число с фиксированной точкой. В частности, коэффициент фильтра использует нижние 10 битов для представления десятичной части. Каждый коэффициент сигнализируется при помощи экспоненциальной кодировки Голомба (EG), порядок которой зависит от положения коэффициента в шаблоне фильтра.
[0120] Как отмечено выше, настоящее раскрытие устанавливает, что умножения инструмента CC-ALF, описанного в JVET-O0636, могут быть улучшены или упрощены, например, в соответствии с любым или всеми методами настоящего раскрытия. Соответственно, кодер 200 видео и/или декодер 300 видео могут быть сконфигурированы в соответствии с любыми или всеми методами настоящего раскрытия, например, как описано ниже, в любой комбинации.
[0121] В соответствии с первым методом настоящего раскрытия, кодер видео (например, кодер 200 видео и/или декодер 300 видео) может ограничивать значения некоторых или всех коэффициентов для кросс-компонентных адаптивных контурных фильтров 510, 512. Например, кодер видео может ограничивать (например, ограничивать возможный выбор) значения некоторых или всех коэффициентов как нуль или число степени 2 (например, так что никакие умножения не нужны для этих коэффициентов). В некоторых примерах, вместо выполнения умножения, кодер видео (т.е. кодер 200 видео или декодер 300 видео) может применять битовый сдвиг к выборкам. В одном примере, кодер видео может ограничивать абсолютные значения всех коэффициентов, чтобы быть равными только 0 или числам степеней 2. В другом примере, кодер видео может ограничивать абсолютные значения некоторых коэффициентов, чтобы быть равными только 0 или числам степеней 2. Информация о том, какие коэффициенты фильтра ограничены, может быть одинаковой для всех фильтров без сигнализации. Альтернативно или дополнительно, информация может быть одинаковой для всех фильтров цветового компонента без сигнализации. Альтернативно или дополнительно, информация может сигнализироваться в битовом потоке (например, как один или более синтаксических элементов) для последовательности, картинки, под-картинки, блока или цветового компонента.
[0122] В некоторых примерах, где кодер видео сигнализирует информацию в битовом потоке (например, чтобы сигнализировать значения этих ограниченных коэффициентов), кодер видео может сигнализировать только отображенные значения (которые являются значением экспоненты со знаком ненулевых коэффициентов). Ограниченные коэффициенты c(i) могут отображаться на c’(i) следующим образом:
Если c(i) равно 0, то c’(i) равно 0;
В противном случае c’(i)=sign(c(i))*(log2(abs(c(i))+1), где sign(c(i)) равно -1, если c(i) является отрицательным, и равно 1 в противном случае.
[0123] В некоторых примерах, кодер видео может использовать любую комбинацию кодов Голомба фиксированного порядка, кода фиксированной длины или унарного кода для сигнализации c’(i).
[0124] В некоторых примерах, кодер видео может сигнализировать (или синтаксически анализировать) абсолютное значение c’(i) сначала с использованием любой комбинации кодов Голомба фиксированного порядка, кода фиксированной длины или унарного кода. Если c’(i) не равно 0, кодер видео может после этого потом сигнализировать (или синтаксически анализировать) информацию знака (например, после сигнализации абсолютного значения c’(i)).
[0125] В некоторых примерах, кодер видео может конвертировать c’(i) в ненулевое значение посредством c”(i)=c’(i)-c’min(i) и сигнализировать конвертированное значение, где c’min(i) является минимальным отображенным значением для i-го коэффициента. Декодер видео может синтаксически анализировать c”(i), которое является неотрицательным значением. На основе c”(i), декодер видео может вычислять c’(i)=c”(i)+c’min(i).
[0126] В соответствии со вторым методом настоящего раскрытия, кодер видео может быть сконфигурирован, чтобы ограничивать динамический диапазон коэффициентов фильтра для кросс-компонентных адаптивных контурных фильтров 510, 512 для снижения множителя затрат. Пусть k представляет собой число битов, используемых для представления десятичной части коэффициента. Динамический диапазон коэффициента c(i) фильтра может быть ограничен в открытом интервале (-(1<<(k-j)), (1<<(k-j))-1). Кодер видео может использовать любую комбинацию кодов Голомба фиксированного порядка, кодов фиксированной длины и/или унарных кодов для сигнализации c(i). Кодер видео может сначала сигнализировать (или синтаксически анализировать) абсолютное значение c(i). Если c(i) не равно нулю, кодер видео может после этого сигнализировать (синтаксически анализировать) информацию знака для c(i). Дополнительно или альтернативно, кодер видео может конвертировать c(i) в ненулевое значение посредством c’(i)=c(i)-cmin(i). Кодер видео может затем сигнализировать конвертированное значение, где cmin(i) является минимальным значением для i-го коэффициента. Декодер видео может синтаксически анализировать c’(i), которое является неотрицательным значением. Декодер видео может вычислять значение c(i) как c’(i)+cmin(i).
[0127] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока в соответствии с методами настоящего раскрытия. Текущий блок может содержать текущую CU. Хотя описано в отношении кодера 200 видео (фиг. 1 и 3), следует понимать, что другие устройства могут быть сконфигурированы, чтобы выполнять способ, аналогичный способу согласно фиг. 6.
[0128] В этом примере, кодер 200 видео первоначально предсказывает текущий блок (350). Например, кодер 200 видео может сформировать блок предсказания для текущего блока. Кодер 200 видео может затем вычислять остаточный блок для текущего блока (352). Чтобы вычислить остаточный блок, кодер 200 видео может вычислить разность между исходным, незакодированным блоком и блоком предсказания для текущего блока. Кодер 200 видео может затем преобразовывать и квантовать коэффициенты остаточного блока (354). Далее, кодер 200 видео может сканировать квантованные коэффициенты преобразования остаточного блока (356). Во время сканирования, или вслед за сканированием, кодер 200 видео может энтропийно кодировать коэффициенты (358). Например, кодер 200 видео может кодировать коэффициенты с использованием CAVLC или CABAC. Кодер 200 видео может затем выводить энтропийно закодированные данные блока (360).
[0129] Кодер 200 видео может затем декодировать текущий блок (362). Например, кодер 200 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования, чтобы воспроизвести остаточный блок, и комбинировать воспроизведенный остаточный блок с блоком предсказания. Кодер 200 видео может затем фильтровать декодированный блок (364), например, с использованием методов кросс-компонентной адаптивной контурной фильтрации в соответствии с настоящим раскрытием. Энтропийно закодированные данные блока могут дополнительно включать в себя, например, индексы фильтров, указывающие, какие кросс-компонентные адаптивные контурные фильтры выбраны для блока. Кодер 200 видео может затем сохранять отфильтрованный блок (366), например, для обращения при предсказании будущего блока, подлежащего кодированию (и декодированию).
[0130] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока в соответствии с методами настоящего раскрытия. Текущий блок может содержать текущую CU. Хотя описано в отношении декодера 300 видео (фиг. 1 и 4), следует понимать, что другие устройства могут быть сконфигурированы, чтобы выполнять способ, аналогичный способу согласно фиг. 7.
[0131] Декодер 300 видео может принимать энтропийно закодированные данные для текущего блока, такие как энтропийно закодированную информацию предсказания, энтропийно закодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку, и энтропийно закодированная информация кросс-компонентного адаптивного контурного фильтра для текущего блока (370). Декодер 300 видео может энтропийно декодировать энтропийно закодированные данные, чтобы определить информацию предсказания для текущего блока и чтобы воспроизвести коэффициенты остаточного блока (372). Декодер 300 видео может предсказывать текущий блок (374), например, с использованием режима интра- или интер-предсказания, как указано информацией предсказания для текущего блока, чтобы вычислить блок предсказания для текущего блока. Декодер 300 видео может затем обратно сканировать воспроизведенные коэффициенты (376), чтобы сформировать блок квантованных коэффициентов преобразования. Декодер 300 видео может затем обратно квантовать и обратно преобразовывать коэффициенты, чтобы сформировать остаточный блок (378). Декодер 300 видео может, наконец, декодировать текущий блок путем комбинации блока предсказания и остаточного блока (380).
[0132] Более того, декодер 300 видео может фильтровать декодированный блок (382), например, с использованием кросс-компонентной адаптивной контурной фильтрации в соответствии с любым из методов настоящего раскрытия. Декодер 300 видео может затем сохранять отфильтрованный блок (384), например, для обращения при предсказании будущего блока, подлежащего декодированию.
[0133] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кросс-компонентной адаптивной контурной фильтрации (CC-ALF) на текущем блоке в соответствии с одним или более методами настоящего раскрытия. Текущий блок может содержать текущую CU. Хотя описано в отношении декодера 300 видео (фиг. 1 и 4), следует понимать, что другие устройства могут быть сконфигурированы, чтобы выполнять способ, аналогичный способу согласно фиг. 8.
[0134] Декодер 300 видео может декодировать множество коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра (802). Например, чтобы декодировать конкретный коэффициент фильтра из множества коэффициентов фильтра, модуль 302 энтропийного декодирования может декодировать, из закодированного битового потока видео, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты. Где значение экспоненты является ненулевым (т.е. имеет значение, отличное от нуля), модуль 302 энтропийного декодирования может декодировать из закодированного битового потока видео синтаксический элемент, специфицирующий знак конкретного коэффициента фильтра. Модуль 302 энтропийного декодирования может определять значение конкретного коэффициента фильтра на основе значения экспоненты (и значения знака, где присутствует). Например, модуль 302 энтропийного декодирования может определять значение конкретного коэффициента фильтра в соответствии со следующим уравнением:
где является значением конкретного коэффициента фильтра, является отрицательным, где знак является отрицательным, и положительным, где знак является положительным, и является значением экспоненты для конкретного коэффициента фильтра.
[0135] Декодер 300 видео может восстанавливать выборки блока данных видео (804). Например, декодер 300 видео может восстанавливать выборки, как описано выше со ссылкой на фиг. 7. В качестве одного примера, декодер 300 видео может суммировать выборки блока предсказателя с остаточными данными, чтобы восстанавливать выборки блока.
[0136] Декодер 300 видео может выполнять кросс-компонентную адаптивную контурную фильтрацию, на основе множества коэффициентов фильтра, на блоке данных видео (806). Например, как рассмотрено выше, фильтр CC ALF Cb и фильтр CC ALF Cr модуля 312 фильтрации (например, фильтр 510 CC ALF Cb и фильтр 512 CC ALF Cr) могут генерировать блоки усиления цветности путем битового сдвига, на основе значений множества коэффициентов фильтра, выборок блока данных видео без выполнения умножения. Таким образом, методы настоящего раскрытия могут уменьшать системные ресурсы, требуемые для выполнения CC-ALF.
[0137] Следующие перечисленные примеры могут иллюстрировать один или более аспектов раскрытия:
[0138] Пример 1. Способ декодирования данных видео, причем способ содержит: кодировку множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем значения одного или более из множества коэффициентов фильтра ограничены нулем или степенью двух; битовый сдвиг значений одного или более из множества коэффициентов фильтра, которые ограничены нулем или степенью двух; кодировку блока данных видео; и выполнение кросс-компонентной адаптивной контурной фильтрации декодированного блока с использованием коэффициентов фильтра.
[0139] Пример 2. Способ по примеру 1, причем значения всех из множества коэффициентов фильтра ограничены нулем или степенью двух.
[0140] Пример 3. Способ по примеру 1, причем по меньшей мере одно значение множества коэффициентов фильтра не ограничено нулем или степенью двух.
[0141] Пример 4. Способ по любому из примеров 1-3, причем выполнение кросс-компонентной адаптивной контурной фильтрации содержит не-умножение коэффициентов фильтра со значениями нуля или степеней двух на выборки декодированного блока.
[0142] Пример 5. Способ по любому из примеров 1-4, дополнительно содержащий: кодировку одного или более синтаксических элементов, которые указывают значения коэффициентов фильтра из множества коэффициентов фильтра, которые ограничены.
[0143] Пример 6. Способ декодирования данных видео, причем способ содержит: определение числа битов, k, используемых, чтобы представлять десятичное значение для коэффициента фильтра кросс-компонентного адаптивного контурного фильтра; определение, что динамический диапазон коэффициента фильтра содержит (-(1<<(k-j)), (1<<(k-j))-1); кодировку блока данных видео; и выполнение кросс-компонентной адаптивной контурной фильтрации декодированного блока с использованием коэффициента фильтра.
[0144] Пример 7. Способ по любому из примеров 1-6, причем кодировка содержит декодирование.
[0145] Пример 8. Способ по любому из примеров 1-7, причем кодировка содержит кодирование.
[0146] Пример 9. Устройство для кодировки данных видео, причем устройство содержит одно или более средств для выполнения способа по любому из примеров 1-8.
[0147] Пример 10. Устройство по примеру 9, причем одно или более средств содержат один или более процессоров, реализованных в схеме.
[0148] Пример 11. Устройство по любому из примеров 9 и 10, дополнительно содержащее память для хранения данных видео.
[0149] Пример 12. Устройство по любому из примеров 9-11, дополнительно содержащее дисплей, сконфигурированный, чтобы отображать декодированные данные видео.
[0150] Пример 13. Устройство по любому из примеров 9-12, содержащее одно или более из камеры, компьютера, мобильного устройства, устройства вещательного приемника или телевизионной приставки.
[0151] Пример 14. Устройство по любому из примеров 9-13, причем устройство содержит декодер видео.
[0152] Пример 15. Устройство по любому из примеров 9-14, причем устройство содержит кодер видео.
[0153] Пример 16. Считываемый компьютером носитель хранения, имеющий сохраненные на нем инструкции, которые, при исполнении, побуждают один или более процессоров выполнять способ по любому из примеров 1-8.
[0154] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методов могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методов). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.
[0155] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители хранения, которые соответствуют материальному носителю, такому как носители хранения данных, или коммуникационной среде, включая любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям хранения, которые являются невременными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0156] В качестве примера, а не ограничения, такие считываемые компьютером носители хранения могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как считываемый компьютером носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители хранения и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на невременные, материальные носители хранения. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
[0157] Инструкции могут исполняться посредством одного или более процессоров, таких как один или более DSP, микропроцессоров общего назначения, ASIC, FPGA или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термин “процессор” или “схема обработки”, как используется здесь, может относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Кроме того, методы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0158] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методов, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или встроенным программным обеспечением.
[0159] Были описаны различные примеры. Эти и другие примеры входят в объем следующей формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ С ИСПОЛЬЗОВАНИЕМ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА | 2020 |
|
RU2823558C2 |
ВРЕМЕННОЕ ПРЕДСКАЗАНИЕ ПАРАМЕТРОВ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА СО СНИЖЕННЫМ ПОТРЕБЛЕНИЕМ ПАМЯТИ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2019 |
|
RU2803195C2 |
УСТРОЙСТВО И СИГНАЛИЗАЦИЯ АДАПТИВНОГО КОНТУРНОГО ФИЛЬТРА (ALF) НА БЛОЧНОЙ ОСНОВЕ | 2019 |
|
RU2783335C2 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ | 2020 |
|
RU2823668C1 |
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОДКАРТИНКИ | 2023 |
|
RU2820304C1 |
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОДКАРТИНКИ | 2020 |
|
RU2810200C2 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ УПРОЩЕНИЯ СИГНАЛИЗАЦИИ ЗАГОЛОВКА КАРТИНКИ | 2020 |
|
RU2823042C1 |
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПОДКАРТИНКИ | 2020 |
|
RU2803187C1 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2824190C2 |
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО | 2020 |
|
RU2813135C1 |
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования. Декодируют множество коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра. Причем декодирование конкретного коэффициента фильтра из множества коэффициентов фильтра содержит декодирование, из закодированного битового потока видео и с использованием кода фиксированной длины, синтаксического элемента, специфицирующего значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты, и определение значения конкретного коэффициента фильтра на основе значения экспоненты. Восстанавливают выборки блока данных видео. Выполняют кросс-компонентную адаптивную контурную фильтрацию на основе множества коэффициентов фильтра, блока данных видео. 4 н. и 14 з.п. ф-лы, 9 ил.
1. Способ декодирования данных видео, причем способ содержит:
декодирование множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем декодирование конкретного коэффициента фильтра из множества коэффициентов фильтра содержит:
декодирование, из закодированного битового потока видео и с использованием кода фиксированной длины, синтаксического элемента, специфицирующего значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты; и
определение значения конкретного коэффициента фильтра на основе значения экспоненты;
восстановление выборок блока данных видео; и
кросс-компонентную адаптивную контурную фильтрацию, на основе множества коэффициентов фильтра, блока данных видео.
2. Способ по п. 1, причем абсолютные значения всех из множества коэффициентов фильтра ограничены нулем или степенью двух.
3. Способ по п. 1, причем декодирование конкретного коэффициента фильтра дополнительно содержит:
в ответ на то, что значение экспоненты является значением, отличным от нуля, декодирование, из закодированного битового потока видео, синтаксического элемента, специфицирующего знак конкретного коэффициента фильтра,
причем определение значения конкретного коэффициента фильтра дополнительно содержит определение значения конкретного коэффициента фильтра на основе знака.
4. Способ по п. 3, причем определение значения конкретного коэффициента фильтра содержит определение значения конкретного коэффициента фильтра в соответствии со следующим уравнением:
где является значением конкретного коэффициента фильтра, является отрицательным, когда знак является отрицательным, и положительным, когда знак является положительным, и является значением экспоненты для конкретного коэффициента фильтра.
5. Способ по п. 1, причем кросс-компонентная адаптивная контурная фильтрация содержит битовый сдвиг, на основе значений множества коэффициентов фильтра, выборок блока данных видео без выполнения умножения.
6. Способ кодирования данных видео, причем способ содержит:
кодирование значений множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем кодирование значения конкретного коэффициента фильтра из множества коэффициентов фильтра содержит:
кодирование, в закодированном битовом потоке видео и с использованием кода фиксированной длины, синтаксического элемента, специфицирующего значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты;
восстановление выборок блока данных видео; и
кросс-компонентную адаптивную контурную фильтрацию, на основе значений множества коэффициентов фильтра, блока данных видео.
7. Способ по п. 6, причем абсолютные значения всех из множества коэффициентов фильтра ограничены нулем или степенью двух.
8. Способ по п. 6, причем кодирование конкретного коэффициента фильтра дополнительно содержит:
в ответ на то, что конкретный коэффициент фильтра имеет значение, отличное от нуля, кодирование, в закодированном битовом потоке видео, синтаксического элемента, специфицирующего знак конкретного коэффициента фильтра.
9. Способ по п. 6, причем кросс-компонентная адаптивная контурная фильтрация содержит битовый сдвиг, на основе значений множества коэффициентов фильтра, выборок блока данных видео без выполнения умножения.
10. Устройство для декодирования данных видео, причем устройство содержит:
память, сконфигурированную, чтобы хранить по меньшей мере часть закодированного битового потока видео; и
один или более процессоров, которые реализованы в схеме и сконфигурированы, чтобы:
декодировать множество коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем, чтобы декодировать конкретный коэффициент фильтра из множества коэффициентов фильтра, один или более процессоров сконфигурированы, чтобы:
декодировать, из закодированного битового потока видео и с использованием кода фиксированной длины, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты; и
определять значение конкретного коэффициента фильтра на основе значения экспоненты;
восстанавливать выборки блока данных видео; и
выполнять кросс-компонентную адаптивную контурную фильтрацию, на основе множества коэффициентов фильтра, блока данных видео.
11. Устройство по п. 10, причем абсолютные значения всех из множества коэффициентов фильтра ограничены нулем или степенью двух.
12. Устройство по п. 10, причем, чтобы декодировать конкретный коэффициент фильтра, один или более процессоров дополнительно сконфигурированы, чтобы:
в ответ на то, что значение экспоненты является значением, отличным от нуля, декодировать, из закодированного битового потока видео, синтаксический элемент, специфицирующий знак конкретного коэффициента фильтра,
причем, чтобы определять значение конкретного коэффициента фильтра, один или более процессоров дополнительно сконфигурированы, чтобы определять значение конкретного коэффициента фильтра на основе знака.
13. Устройство по п. 12, причем, чтобы определять значение конкретного коэффициента фильтра, один или более процессоров сконфигурированы, чтобы определять значение конкретного коэффициента фильтра в соответствии со следующим уравнением:
где является значением конкретного коэффициента фильтра, является отрицательным, когда знак является отрицательным, и положительным, когда знак является положительным, и является значением экспоненты для конкретного коэффициента фильтра.
14. Устройство по п. 10, причем, для кросс-компонентного адаптивного контурного фильтра, один или более процессоров сконфигурированы, чтобы выполнять битовый сдвиг, на основе значений множества коэффициентов фильтра, выборок блока данных видео без выполнения умножения.
15. Устройство для кодирования данных видео, причем устройство содержит:
память, сконфигурированную, чтобы хранить по меньшей мере часть закодированного битового потока видео; и
один или более процессоров, которые реализованы в схеме и сконфигурированы, чтобы:
кодировать значения множества коэффициентов фильтра кросс-компонентного адаптивного контурного фильтра, причем, чтобы кодировать значение конкретного коэффициента фильтра из множества коэффициентов фильтра, один или более процессоров сконфигурированы, чтобы:
кодировать, в закодированном битовом потоке видео и с использованием кода фиксированной длины, синтаксический элемент, специфицирующий значение экспоненты, которое представляет логарифм по основанию 2 абсолютного значения конкретного коэффициента фильтра, причем абсолютное значение равно двум, возведенным в степень значения экспоненты;
восстанавливать выборки блока данных видео; и
выполнять кросс-компонентную адаптивную контурную фильтрацию, на основе значений множества коэффициентов фильтра, блока данных видео.
16. Устройство по п. 15, причем абсолютные значения всех из множества коэффициентов фильтра ограничены нулем или степенью двух.
17. Устройство по п. 15, причем, чтобы дополнительно кодировать конкретный коэффициент фильтра, один или более процессоров дополнительно сконфигурированы, чтобы:
в ответ на то, что конкретный коэффициент фильтра имеет значение, отличное от нуля, кодировать, из закодированного битового потока видео, синтаксический элемент, специфицирующий знак конкретного коэффициента фильтра.
18. Устройство по п. 15, причем, для кросс-компонентной адаптивной контурной фильтрации, один или более процессоров сконфигурированы, чтобы выполнять битовый сдвиг, на основе значений множества коэффициентов фильтра, выборок блока данных видео без выполнения умножения.
Kiran Misra et al., "Cross-Component Adaptive Loop Filter for chroma", JVET-O0636_r1, 15th Meeting, Gothenburg, 07.07.2019 | |||
Esenlik S et al., "CE2: Alf with Multiplication Replaced by Bit-Shifting (Test 2.5.1)", JVET-L0162, Macao, 2018 | |||
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Авторы
Даты
2024-08-06—Публикация
2020-09-23—Подача