[0001] Данная заявка испрашивает приоритет заявки (США) № 16/781751, поданной 4 февраля 2020 года, и предварительной заявки на патент (США) № 62/802515, поданной 7 февраля 2019 года, содержимое каждой из которых полностью включено в данный документ посредством ссылки.
Область техники, к которой относится изобретение
[0002] Данное раскрытие сущности относится к кодированию видео, включающему в себя кодирование видео и декодирование видео.
Уровень техники
[0003] Поддержка цифрового видео может быть включена в широкий диапазон устройств, включающих в себя цифровые телевизионные приемники, системы цифровой прямой широковещательной передачи, беспроводные широковещательные системы, персональные цифровые устройства (PDA), переносные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, устройства видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства видеоконференц-связи, устройства потоковой передачи видео и т.п. Цифровые видеоустройства реализуют такие технологии кодирования видео, как технологии кодирования видео, описанные в стандартах, заданных посредством стандартов MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), ITU-T H.265/стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.
[0004] Технологии кодирования видео включают в себя пространственное (внутри картинки) прогнозирование и/или временное (между картинками) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеосрез (например, видеокартинка или часть видеокартинки) может сегментироваться на видеоблоки, которые также могут называться "единицами дерева кодирования (CTU)", "единицами кодирования (CU)" и/или "узлами кодирования". Видеоблоки в срезе (I-) с внутренним кодированием картинки кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в такой же картинке. Видеоблоки во взаимно кодированном срезе(P- или B-) картинки могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в такой же картинке или временное прогнозирование относительно опорных выборок в других опорных картинках. Картинки могут называться "кадрами", и опорные картинки могут называться "опорными кадрами".
Сущность изобретения
[0005] В общем, это раскрытие сущности описывает технологии для выполнения комбинированного взаимно-внутреннего прогнозирования. Таким образом, при видеокодировании, видеокодер (например, видеокодер или видеодекодер) может выполнять кодирование на основе блоков картинок, формирующих видеопоследовательность. Видеокодер может кодировать блоки картинки посредством формирования блока прогнозирования и кодирования остаточного блока, представляющего повыборочные разности между блоком прогнозирования и фактическим блоком, который должен кодироваться. Взаимное прогнозирование представляет прогнозирование из опорного блока предыдущей кодированной картинки, тогда как внутреннее прогнозирование представляет прогнозирование из ранее кодированных опорных данных текущей картинки. Комбинированное взаимно-внутреннее прогнозирование представляет прогнозирование с использованием как взаимного прогнозирования, так и внутреннего прогнозирования. В частности, это раскрытие сущности описывает улучшенные технологии для выполнения комбинированного взаимно-внутреннего прогнозирования. Технологии этого раскрытия сущности могут использоваться, например, в стандарте универсального кодирования видео (VVC) либо других стандартах кодирования видео, которые поддерживают комбинированное взаимно-внутреннее прогнозирование.
[0006] В одном примере, способ кодирования видеоданных включает в себя формирование блока взаимного прогнозирования для текущего блока цветности видеоданных; формирование блока внутреннего прогнозирования для текущего блока цветности видеоданных; определение числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определение первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодирование текущего блока цветности с использованием блока прогнозирования.
[0007] В другом примере, устройство для кодирования видеоданных включает в себя запоминающее устройство для сохранения видеоданных и один или более процессоров, реализованных в схеме и выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.
[0008] В другом примере, машиночитаемый носитель хранения данных имеет сохраненные на нем инструкции, которые при выполнении инструктируют процессору формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.
[0009] В другом примере, устройство для кодирования видеоданных включает в себя средство для формирования блока взаимного прогнозирования для текущего блока цветности видеоданных; средство для формирования блока внутреннего прогнозирования для текущего блока цветности видеоданных; средство для определения числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; средство для определения первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и средство для кодирования текущего блока цветности с использованием блока прогнозирования.
[0010] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0011] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может выполнять технологии этого раскрытия сущности.
[0012] Фиг. 2A и 2B являются концептуальными схемами, иллюстрирующими примерную структуру в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).
[0013] Фиг. 3A-3F являются концептуальными схемами, иллюстрирующими примерные местоположения соседних блоков по отношению к текущим блокам.
[0014] Фиг. 4 является блок-схемой, иллюстрирующей примерный видеокодер, который может выполнять технологии этого раскрытия сущности.
[0015] Фиг. 5 является блок-схемой, иллюстрирующей примерный видеодекодер, который может выполнять технологии этого раскрытия сущности.
[0016] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока, в соответствии с технологией этого раскрытия сущности.
[0017] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока в соответствии с технологиями этого раскрытия сущности.
[0018] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования (кодирования или декодирования) видеоданных согласно технологиям этого раскрытия сущности.
Подробное описание изобретения
[0019] Стандарты кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя расширения масштабируемого кодирования видео (SVC) и кодирования многовидового видео (MVC).
[0020] Стандарт высокоэффективного кодирования видео (HEVC) завершен Объединенной группой для совместной работы над видеостандартами (JCT-VC) в составе Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по киноизображению (MPEG) ISO/IEC в апреле 2013 года.
[0021] Объединенная экспертная группа по видеостандартам (JVET), совместная команда, сформированная посредством MPEG исследовательской группы 16 ITU-T VCEG, в последнее время работает над новым стандартом кодирования видео, известным как стандарт универсального кодирования видео (VVC). Главная цель VVC состоит в том, чтобы предоставлять существенное повышение производительности сжатия по сравнению с существующим HEVC-стандарт, что способствует развертыванию более высококачественных услуг передачи видео и новых вариантов применения, таких как всенаправленное иммерсивное мультимедиа на 360° и видео с расширенным динамическим диапазоном (HDR).
[0022] Это раскрытие сущности описывает технологии, которые могут улучшать режим комбинированного взаимно-внутреннего прогнозирования для прогнозирования видеоданных. Многогипотезный внутренний режим (MHI) показан как улучшающий режим объединения посредством комбинирования одного внутреннего прогнозирования и одного объединяющего индексированного прогнозирования и внедрен на 12-ой JVET Macao Meeting в работе авторов: M.-S. Chiang, C.-W. Hsu, Y.-W. Huang, S.-M. Lei "CE10.1.1: Multi-hypothesis prediction for improving AMVP mode, skip or merge mode and intra mode", на JVET-L0100, октябрь 2018 года. Согласно MHI, возможные варианты в наборе из 4 внутренних режимов, включающих в себя планарное, DC-, горизонтальное и вертикальное прогнозирование, оцениваются, чтобы выбирать оптимальное прогнозирование, которое должно комбинироваться с объединяющим индексированным прогнозированием. В процессе комбинирования, изложенном в вышеприведенном примере, если планарный или DC-режим выбирается, либо размер блока меньше 4, равные весовые коэффициенты развертываются. В противном случае, весовые коэффициенты для внутренне и взаимно прогнозированных выборок (wIntra, wInter) отличаются на основе области выборок в блоке кодирования.
[0023] Это раскрытие сущности признает то, что в технологиях взаимно-внутреннего прогнозирования, описанных в JVET-L0100, информация кодирования соседних блоков не использована для того, чтобы повышать производительность кодирования этих инструментальных средств. Кроме того, весовой коэффициент на основе области используется для режимов горизонтального и вертикального прогнозирования, что может вызывать артефакты вдоль границ областей.
[0024] Технологии этого раскрытия сущности могут повышать производительность взаимно-внутреннего кодирования. Эти улучшения могут получаться в результате схемы позиционно-независимого взвешивания этих технологий. Согласно технологиям этого раскрытия сущности, весовые коэффициенты для взаимных и внутренних прогнозных выборок могут адаптивно определяться с использованием информации кодирования, например, числа внутренне кодированных соседних блоков, числа взаимного прогнозирования индексированных блоков объединения (уни- или бипрогнозирование) и/или размера текущего блока.
[0025] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять технологии этого раскрытия сущности. Технологии этого раскрытия сущности, в общем, направлены на кодирование (кодирование и/или декодирование) видеоданных. В общем, видеоданные включают в себя любые данные для обработки видео. Таким образом, видеоданные могут включать в себя необработанное некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и видеометаданные, такие как служебные данные.
[0026] Как показано на фиг. 1, система 100 включает в себя исходное устройство 102, которое предоставляет кодированные видеоданные, которые должны декодироваться и отображаться посредством целевого устройства 116, в этом примере. В частности, исходное устройство 102 предоставляет видеоданные в целевое устройство 116 через машиночитаемый носитель 110. Исходное устройство 102 и целевое устройство 116 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 102 и целевое устройство 116 могут оснащаться возможностями беспроводной связи и в силу этого могут называться "устройствами беспроводной связи".
[0027] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием сущности, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для взаимно-внутреннего кодирования. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.
[0028] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для взаимно-внутреннего кодирования. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие сущности относится к устройству "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, устройства 102, 116 могут работать практически симметрично, так что каждое из устройств 102, 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 102, 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
[0029] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию картинок (также называемых "кадрами") видеоданных в видеокодер 200, который кодирует данные для картинок. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или машиногенерируемые видеоданные. Видеокодер 200 может перекомпоновывать картинки из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на машиночитаемый носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.
[0030] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некотором примере, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут сохранять программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.
[0031] Машиночитаемый носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, машиночитаемый носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый сигнал передачи, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.
[0032] В некоторых примерах, исходное устройство 102 может выводить кодированные данные из интерфейса 108 вывода в устройство 112 хранения данных. Аналогично, целевое устройство 116 может осуществлять доступ к кодированным данным из устройства 112 хранения данных через интерфейс 122 ввода. Устройство 112 хранения данных может включать в себя любые из множества распределенных или локально доступных носителей хранения данных, таких как жесткий диск, Blu-Ray-диски, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители хранения данных для сохранения кодированных видеоданных.
[0033] В некоторых примерах, исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.
[0034] Интерфейс 108 вывода и интерфейс 122 ввода могут представлять беспроводные передающие устройства/приемные устройства, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, которые работают согласно любым из множества IEEE 802.11-стандартов, либо другие физические компоненты. В примерах, в которых интерфейс 108 вывода и интерфейс 122 ввода содержат беспроводные компоненты, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно стандарту сотовой связи, такому как 4G, 4G LTE (стандарт долгосрочного развития), усовершенствованный стандарт LTE, 5G и т.п. В некоторых примерах, в которых интерфейс 108 вывода содержит беспроводное передающее устройство, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно другим стандартам беспроводной связи, таким как IEEE 802.11-спецификация, IEEE 802.15-спецификация (например, ZigBee™), стандарт Bluetooth™ и т.п. В некоторых примерах, исходное устройство 102 и/или целевое устройство 116 могут включать в себя соответствующие внутримикросхемные (SoC) устройства. Например, исходное устройство 102 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеокодеру 200 и/или интерфейсу 108 вывода, и целевое устройство 116 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеодекодеру 300 и/или интерфейсу 122 ввода.
[0035] Технологии этого раскрытия сущности могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или другие варианты применения.
[0036] Интерфейс 122 ввода целевого устройства 116 принимает кодированный поток видеобитов из машиночитаемого носителя 110 (например, устройства 112 хранения данных, файлового сервера 114 и т.п.). Кодированный поток видеобитов может включать в себя служебную информацию, заданную посредством видеокодера 200, которая также используется посредством видеодекодера 300, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку видеоблоков либо других кодированных единиц (например, срезов, картинок, групп картинок, последовательностей и т.п.). Устройство 118 отображения отображает декодированные картинки декодированных видеоданных пользователю. Устройство 118 отображения может представлять любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0037] Хотя не показано на фиг. 1, в некоторых примерах, видеокодер 200 и видеодекодер 300 могут быть интегрированы с аудиокодером и/или аудиодекодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать мультимедийные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
[0038] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия сущности. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0039] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.
[0040] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование картинок на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок картинки, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.
[0041] Это раскрытие сущности, в общем, может означать кодирование (например, кодирование и декодирование) картинок, которое включает в себя процесс кодирования или декодирования данных картинки. Аналогично, это раскрытие сущности может относиться к кодированию блоков картинки для включения в себя процесса кодирования или декодирования данных для блоков, например, прогнозное кодирование и/или остаточное кодирование. Кодированный поток видеобитов, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих картинку или блок.
[0042] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (к примеру, видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментирует CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные взаимного прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.
[0043] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует картинку на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на основе дерева квадрантов, и второй уровень, сегментированный согласно сегментации на основе двоичного дерева. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).
[0044] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT). Сегмент троичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.
[0045] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 200 и видеодекодер 300 могут использовать две или более QTBT- или MTT-структур, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT/MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).
[0046] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на основе дерева квадрантов согласно HEVC, QTBT-сегментацию, MTT-сегментацию либо другие структуры сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на основе дерева квадрантов или другие типы сегментации.
[0047] Это раскрытие сущности может использовать "NxN" и "N на N" взаимозаменяемо, чтобы ссылаться на размеры в выборках блока (к примеру, CU или другого видеоблока) с точки зрения размеров по вертикали и горизонтали, например, на выборки 16×16 или выборки 16 на 16. В общем, CU 16×16 должна иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, CU NxN, в общем, имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Выборки в CU могут размещаться в строках и столбцах. Кроме того, CU не обязательно должны иметь идентичное число выборок в горизонтальном направлении и в вертикальном направлении. Например, CU могут содержать NxM выборок, причем 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 может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, видеокодер 200 может формировать блок прогнозирования с использованием как блока взаимного прогнозирования, так и блока внутреннего прогнозирования. Видеокодер 200 может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, видеокодер 200 может определять весовые коэффициенты согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием (и/или числу блоков, которые кодированы с взаимным прогнозированием). Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, видеокодер 200 может определять число внутренне и/или взаимно прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа внутренне и/или взаимно прогнозированных блоков, соседних с блоком яркости.
[0053] В качестве примера, видеокодер 200 может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, видеокодер 200 может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, видеокодер 200 может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, видеокодер 200 может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, видеокодер 200 может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков. Видеодекодер 300 может выполнять практически идентичный процесс для определения весовых коэффициентов, которые должны применяться к блокам взаимного и внутреннего прогнозирования для текущего блока цветности, на основе режимов прогнозирования для соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности.
[0054] Видеокодер 200 кодирует данные, представляющие режим прогнозирования для текущего блока. Например, для режимов взаимного прогнозирования, видеокодер 200 может кодировать данные, представляющие то, какой из различных доступных режимов взаимного прогнозирования используется, а также информацию движения для соответствующего режима. Для однонаправленного или двунаправленного взаимного прогнозирования, например, видеокодер 200 может кодировать векторы движения с использованием усовершенствованного прогнозирования векторов движения (AMVP) или режима объединения. Видеокодер 200 может использовать аналогичные режимы для того, чтобы кодировать векторы движения для аффинного режима компенсации движения.
[0055] После прогнозирования, такого как внутреннее прогнозирование или взаимное прогнозирование блока, видеокодер 200 может вычислять остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют выборку посредством выборочных разностей между блоком и прогнозным блоком для блока, сформированных с использованием соответствующего режима прогнозирования. Видеокодер 200 может применять одно или более преобразований к остаточному блоку для того, чтобы формировать преобразованные данные в области преобразования вместо выборочной области. Например, видеокодер 200 может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным видеоданным. Дополнительно, видеокодер 200 может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неразделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Видеокодер 200 формирует коэффициенты преобразования после применения одного или более преобразований.
[0056] Как отмечено выше, после преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 200 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты, обеспечивая дополнительное сжатие. Посредством выполнения процесса квантования, видеокодер 200 может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, видеокодер 200 может округлять n-битовое значение в меньшую сторону до m-битового значения во время квантования, где n больше m. В некоторых примерах, для того чтобы выполнять квантование, видеокодер 200 может выполнять побитовый сдвиг вправо значения, которое должно квантоваться.
[0057] После квантования, видеокодер 200 может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может проектироваться с возможностью размещать коэффициенты с более высокой энергией (и в силу этого с более низкой частотой) в начале вектора и размещать коэффициенты с более низкой энергией (и в силу этого с более высокой частотой) в конце вектора. В некоторых примерах, видеокодер 200 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, чтобы формировать преобразованный в последовательную форму вектор, и затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, видеокодер 200 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, видеокодер 200 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному двоичному арифметическому кодированию (CABAC). Видеокодер 200 также может энтропийно кодировать другие синтаксические элементы, описывающие метаданные, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 300 при декодировании видеоданных.
[0058] Чтобы выполнять CABAC, видеокодер 200 может назначать контекст в контекстной модели символу, который должен передаваться. Контекст может быть связан, например, с тем, являются соседние значения символа нульзначными или нет. Определение вероятности может быть основано на контексте, назначаемом символу.
[0059] Видеокодер 200 дополнительно может формировать синтаксические данные, к примеру, синтаксические данные на основе блоков, синтаксические данные на основе картинок и синтаксические данные на основе последовательностей, в видеодекодер 300, например, в заголовке картинки, заголовке блока, заголовке среза, либо другие синтаксические данные, к примеру, набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Видеодекодер 300 аналогично может декодировать такие синтаксические данные для того, чтобы определять то, как декодировать соответствующие видеоданные.
[0060] Таким образом, видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные, например, синтаксические элементы, описывающие сегментацию картинки на блоки (например, CU), и информацию прогнозирования и/или остаточную информацию для блоков. В конечном счете, видеодекодер 300 может принимать поток битов и декодировать кодированные видеоданные.
[0061] В общем, видеодекодер 300 выполняет взаимообратный процесс относительно процесса, выполняемого посредством видеокодера 200, чтобы декодировать кодированные видеоданные потока битов. Например, видеодекодер 300 может декодировать значения для синтаксических элементов потока битов с использованием CABAC способом, практически аналогичным, хотя и взаимообратным, относительно процесса CABAC-кодирования видеокодера 200. Синтаксические элементы могут задавать сегментацию информации картинки на CTU и сегментацию каждой CTU согласно соответствующей структуре сегментации, такой как QTBT-структура, чтобы задавать CU CTU. Синтаксические элементы дополнительно могут задавать информацию прогнозирования и остаточную информацию для блоков (например, CU) видеоданных.
[0062] Остаточная информация может представляться, например, посредством квантованных коэффициентов преобразования. Видеодекодер 300 может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока, чтобы воспроизводить остаточный блок для блока. Видеодекодер 300 использует передаваемый в служебных сигналах режим прогнозирования (внутреннее или взаимное прогнозирование) и связанную информацию прогнозирования (например, информацию движения для взаимного прогнозирования) для того, чтобы формировать прогнозный блок для блока. Видеодекодер 300 затем может комбинировать прогнозный блок и остаточный блок (на основе каждой выборки), чтобы воспроизводить исходный блок. Видеодекодер 300 может выполнять дополнительную обработку, такую как выполнение процесса удаления блочности, чтобы уменьшать визуальные артефакты вдоль границ блока.
[0063] В соответствии с технологиями этого раскрытия сущности, видеокодер 200 и/или видеодекодер 300 могут быть выполнены с возможностью выполнять взаимно-внутреннее кодирование. Таким образом, видеокодер 200 и/или видеодекодер 300 могут прогнозировать блок видеоданных с использованием комбинированного взаимно-внутреннего прогнозирования в соответствии с любыми из технологий, описанных в данном документе.
[0064] Например, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты, которые должны применяться к выборкам взаимного прогнозирования и внутреннего прогнозирования, на основе схемы позиционно-независимого взвешивания. Например, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты согласно (например, в качестве функции) информации кодирования, такой как число внутренне и/или взаимно кодированных соседних блоков, номер взаимного прогнозирования индексированных блоков объединения (уни- или бипрогнозирование), размер текущего блока. Пусть (wInter, wIntra) представляют собой весовые коэффициенты для взаимных и внутренних прогнозных выборок в нижеприведенном описании. Таким образом, wInter представляет значение весового коэффициента, применяемое к выборкам блока взаимного прогнозирования, и wIntra представляет значение весового коэффициента, применяемое к выборкам блока внутреннего прогнозирования. В некоторых примерах, wInter+wIntra=1, где wInter и wIntra являются рациональными значениями между 0 и 1.
[0065] Это раскрытие сущности, в общем, может относиться к "передаче в служебных сигналах" определенной информации, такой как синтаксические элементы. Термин "передача служебных сигналов", в общем, может означать передачу значений для синтаксических элементов и/или других данных, используемых для того, чтобы декодировать кодированных видеоданные. Таким образом, видеокодер 200 может передавать в служебных сигналах значения для синтаксических элементов в потоке битов. В общем, передача служебных сигналов означает формирование значения в потоке битов. Как отмечено выше, исходное устройство 102 может транспортировать поток битов в целевое устройство 116 практически в реальном времени или не в реальном времени, к примеру, что может происходить при сохранении синтаксических элементов в устройство 112 хранения данных для последующего извлечения посредством целевого устройства 116.
[0066] Фиг. 2A и 2B является концептуальной схемой, иллюстрирующей примерную структуру 130 в виде дерева квадрантов и двоичного дерева (QTBT) и соответствующую единицу 132 дерева кодирования (CTU). Сплошные линии представляют разбиение на дерево квадрантов, и пунктирные линии указывают разбиение на двоичное дерево. В каждом разбитом (т.е. нелисте) узле двоичного дерева, один флаг передается в служебных сигналах, чтобы указывать то, какой тип разбиения (т.е. горизонтальное или вертикальное) используется, где 0 указывает горизонтальное разбиение, и 1 указывает вертикальное разбиение в этом примере. Для разбиения на дерево квадрантов, нет необходимости указывать тип разбиения, поскольку узлы дерева квадрантов разбивают блок горизонтально и вертикально на 4 субблока с равным размером. Соответственно, видеокодер 200 может кодировать, и видеодекодер 300 может декодировать синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня области QTBT-структуры 130 (т.е. сплошные линии) и синтаксические элементы (к примеру, информацию разбиения) для древовидного уровня прогнозирования QTBT-структуры 130 (т.е. пунктирные линии). Видеокодер 200 может кодировать, и видеодекодер 300 может декодировать видеоданные, такие как данные прогнозирования и преобразования, для CU, представленных посредством терминальных узлов-листьев QTBT-структуры 130.
[0067] В общем, CTU 132 по фиг. 2B может быть ассоциирована с параметрами, задающими размеры блоков, соответствующих узлам QTBT-структуры 130 на первом и втором уровнях. Эти параметры могут включать в себя CTU-размер (представляющий размер CTU 132 в выборках), минимальный размер дерева квадрантов (MinQTSize, представляющий минимальный разрешенный размер узлов-листьев дерева квадрантов), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневых узлов двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер узлов-листьев двоичного дерева).
[0068] Корневой узел QTBT-структуры, соответствующей CTU, может иметь четыре дочерних узла на первом уровне QTBT-структуры, каждый из которых может сегментироваться согласно сегментации на основе дерева квадрантов. Таким образом, узлы первого уровня либо представляют собой узлы-листья (имеющие дочерние узлы), либо имеют четыре дочерних узла. Пример QTBT-структуры 130 представляет такие узлы как включающие в себя родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не превышают максимальный разрешенный размер корневых узлов двоичного дерева (MaxBTSize), они дополнительно могут сегментироваться посредством соответствующих двоичных деревьев. Разбиение на двоичное дерево одного узла может обрабатываться с помощью итераций до тех пор, пока узлы, получающиеся в результате разбиения, не достигают минимального разрешенного размера узлов-листьев двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример QTBT-структуры 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Узел-лист двоичного дерева называется "единицей кодирования (CU)", которая используется для прогнозирования (например, прогнозирования внутри картинки или между картинками) и преобразования, без дальнейшей сегментации. Как пояснено выше, CU также могут называться "видеоблоками" или "блоками".
[0069] В одном примере QTBT-структуры сегментации, CTU-размер задается как 128×128 (выборки сигнала яркости и две соответствующих выборки сигнала цветности 64×64), MinQTSize задается как 16×16, 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" и дополнительно обрабатываются согласно прогнозированию и преобразованию без дополнительной сегментации.
[0070] Фиг. 3A-3F являются концептуальными схемами, иллюстрирующими примерные местоположения соседних блоков по отношению к текущим блокам. В частности, фиг. 3A представляет пример текущего блока 140, имеющего верхний соседний блок 142 и левый соседний блок 144, фиг. 3B представляет пример текущего блока 146, имеющего правый верхний соседний блок 148 и левый нижний соседний блок 150, фиг. 3C представляет пример текущего блока 152, имеющего верхний соседний блок 154, левый соседний блок 156 и левый верхний (верхний-л) соседний блок 158, фиг. 3D представляет пример текущего блока 160, имеющего правый верхний соседний блок 162, левый нижний (левый-н) соседний блок 164 и левый верхний соседний блок 166, фиг. 3E представляет пример текущего блока 168, имеющего верхний соседний блок 170, правый верхний соседний блок 172, левый соседний блок 174 и левый нижний соседний блок 176, и фиг. 3F представляет пример текущего блока 178, имеющего верхний соседний блок 180, правый верхний соседний блок 182, левый соседний блок 184, левый нижний соседний блок 186 и левый верхний соседний блок 188.
[0071] В соответствии с технологиями этого раскрытия сущности, видеокодер 200 и видеодекодер 300 могут адаптивно определять весовые коэффициенты для внутренних и взаимных выборок на основе числа внутренне и/или взаимно кодированных соседних блоков, например, как пояснено в заявке (США) № 16/684379, поданной 14 ноября 2019 года, содержимое которой полностью содержится в данном документе по ссылке. Тем не менее, согласно технологиям этого раскрытия сущности, видеокодер 200 и видеодекодер 300 могут смешивать только взаимные и внутренние прогнозные выборки без позиционно-зависимого комбинирования с внутренним прогнозированием (PDPC). Видеокодер 200 и видеодекодер 300 могут использовать опорные соседние блоки, чтобы определять весовые коэффициенты, причем опорные соседние блоки могут представлять собой любую комбинацию верхнего, правого верхнего, левого верхнего, левого или левого нижнего соседних блоков, например, как показано в различных примерах по фиг. 3A-3F.
[0072] В одном примере, например, как показано на фиг. 3A, видеокодер 200 и видеодекодер 300 используют верхний соседний блок 142 и левый соседний блок 144, чтобы определять весовые коэффициенты, которые должны применяться к внутренним и взаимным прогнозным выборкам для взаимно-внутреннего прогнозирования текущего блока 140. Таким образом, верхний соседний блок 142 и левый соседний блок 144 используются для проверки внутренне кодированных соседних узлов для текущего блока 140 в этом примере.
[0073] В другом примере, например, как показано на фиг. 3B, видеокодер 200 и видеодекодер 300 используют правый верхний соседний блок 148 и левый нижний соседний блок 150, чтобы определять весовые коэффициенты, которые должны применяться к внутренним и взаимным прогнозным выборкам для взаимно-внутреннего прогнозирования текущего блока 146. Таким образом, правый верхний соседний блок 148 и левый нижний соседний блок 150 используются для проверки внутренне кодированных соседних узлов для текущего блока 146 в этом примере.
[0074] В другом примере, например, как показано на фиг. 3C, верхний соседний блок 154, левый соседний блок 156 и левый верхний соседний блок 158 используются для проверки внутренне кодированных соседних узлов для текущего блока 152.
[0075] В другом примере, например, как показано на фиг. 3D, правый верхний соседний блок 162, левый нижний соседний блок 164 и левый верхний соседний блок 166 используются для проверки внутренне кодированных соседних узлов для текущего блока 160.
[0076] В другом примере, например, как показано на фиг. 3E, верхний соседний блок 170, правый верхний соседний блок 172, левый соседний блок 174 и левый нижний соседний блок 176 используются для проверки внутренне кодированных соседних узлов для текущего блока 168.
[0077] В другом примере, например, как показано на фиг. 3F, верхний соседний блок 180, правый верхний соседний блок 182, левый соседний блок 184, левый нижний соседний блок 186 и левый верхний соседний блок 188 используются для проверки внутренне кодированных соседних узлов для текущего блока 178.
[0078] В некоторых примерах, видеокодер 200 и видеодекодер 300 выбирают опорные соседние блоки согласно размеру блока текущего блока (например, blkWidth и blkHeight). Например, если blkWidth и blkHeight являются идентичными, видеокодер 200 и видеодекодер 300 могут использовать комбинацию по фиг. 3D, фиг. 3E или фиг. 3F. В другом примере, если blkWidth и blkHeight отличаются, видеокодер 200 и видеодекодер 300 могут использовать верхний-п и левый-н, например, как показано на фиг. 3B.
[0079] В другом примере, если blkWidth и blkHeight являются идентичными, то видеокодер 200 и видеодекодер 300 могут выбирать позиции соседних блоков симметрично вдоль размеров по ширине и высоте текущего блока, например, согласно примерам по фиг. 3A-3F. С другой стороны, если blkWidth и blkHeight отличаются, видеокодер 200 и видеодекодер 300 могут выбирать позиции соседних блоков асимметрично вдоль размеров по ширине и высоте текущего блока. Например, если blkWidth превышает blkHeight, видеокодер 200 и видеодекодер 300 могут выбирать соседние блоки как верхний-п и левый, тогда как, если blkWidth меньше blkHeight, видеокодер 200 и видеодекодер 300 могут выбирать соседние блоки как левый-н и верхний.
[0080] В некоторых примерах, если проверенный соседний блок IBC/CPR-кодируется (на основе внутриблочного копирования/ссылки на текущую картинку), соседний блок может рассматриваться как взаимно кодированный блок.
[0081] В некоторых примерах, если проверенный соседний блок IBC/CPR-кодируется, соседний блок может рассматриваться как внутренне кодированный блок.
[0082] В некоторых примерах, когда проверенный соседний блок представляет собой комбинированный внутренне-взаимный блок, соседний блок может рассматриваться как взаимно кодированный блок.
[0083] В некоторых примерах, когда проверенный соседний блок представляет собой комбинированный внутренне-взаимный блок, соседний блок может рассматриваться как внутренне кодированный блок.
[0084] В некоторых примерах, когда одиночное дерево кодирования яркости и цветности или сдвоенные (отдельные) деревья кодирования яркости и цветности активируются, видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты для смешивания блоков сигналов цветности согласно внутренней проверке соответствующего блока сигналов яркости или соседних блоков по отношению к соответствующему блоку сигналов яркости.
[0085] В некоторых примерах, когда кодирование сдвоенного дерева активируется, видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты для смешивания блоков сигналов цветности согласно внутренней проверке соседних блоков сигналов цветности.
[0086] Видеокодер 200 и видеодекодер 300 могут определять весовые коэффициенты на основе внутренней проверки. Пусть wInter и wIntra представляют собой весовые коэффициенты для взаимных и внутренних выборок во взаимно-внутреннем смешивании. Весовые коэффициенты могут нормализоваться на 2n, где n является целым числом, которое равно сумме весовых коэффициентов. Другими словами, эти весовые коэффициенты могут нормализоваться на 4, 8, 16, ..., что является реализуемым с помощью простой операции сдвига вправо.
[0087] В некоторых примерах, если все проверенные соседние блоки внутренне кодируются, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).
[0088] В некоторых примерах, если все проверенные соседние блоки не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок ниже весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0089] В некоторых примерах, если только один из проверенных соседних блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовые коэффициенты для внутренних и взаимных выборок являются идентичными.
[0090] В некоторых примерах, если левый верхний, верхний-п и левый-н соседний блоки внутренние кодируются, видеокодер 200 и видеодекодер 300 могут определять то, что весовые коэффициенты (wInter, wIntra) составляют (1, 3) или (3, 5). В другом примере, если, по меньшей мере, один из левого верхнего, верхнего-п или левого-н соседних блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут задавать (wInter, wIntra) равный (2, 2) или (4, 4). В еще одном другом примере, если все левого верхнего, верхнего-п или левого соседних блоков не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут задавать (wInter, wIntra) равным (3, 1) или (5, 3).
[0091] В некоторых примерах, если, по меньшей мере, один из проверенных блоков представляет собой MHI-кодированный (многогипотезный внутренний) блок, видеокодер 200 и видеодекодер 300 могут копировать весовой коэффициент для текущего блока из весового коэффициента одного из проверенных блоков.
[0092] В некоторых примерах, если только один из этих проверенных блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).
[0093] В некоторых примерах, если только один из этих проверенных блоков внутренне кодируется, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок ниже весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0094] В некоторых примерах, если все эти проверенные блоки не кодируются внутренне, видеокодер 200 и видеодекодер 300 могут определять то, что весовой коэффициент для внутренних выборок выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).
[0095] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) согласно режиму внутреннего прогнозирования проверенных соседних блоков. В одном примере, если предусмотрен, по меньшей мере, один соседний блок, кодируемый с использованием внутреннего DC-режима или планарного режима, весовой коэффициент для внутренних выборок может быть выше весового коэффициента для взаимных выборок (например, (wInter, wIntra)=(1, 3) или (wInter, wIntra)=(3, 5)).
[0096] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) на основе номера взаимного прогнозирования индексированного блока объединения, т.е. того, прогнозируется индексный блок объединения с использованием однонаправленного или двунаправленного прогнозирования.
[0097] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0098] В некоторых примерах, если индексированный блок объединения представляет собой унипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0099] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)). Между тем, для индексированного блока объединения с унипрогнозированием, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) с использованием числа соседних внутренних и/или взаимных блоков, например, как пояснено выше.
[0100] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) согласно размеру текущего блока. Размер (SIZEblk) текущего блока основан на его ширине и высоте.
[0101] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока в качестве минимального значения ширины и высоты текущего блока. В другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока в качестве максимального значения ширины и высоты текущего блока. В еще одном другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока посредством умножения (т.е. произведения) ширины и высоты текущего блока. В еще одном другом примере, видеокодер 200 и видеодекодер 300 могут определять размер текущего блока посредством суммирования ширины и высоты текущего блока.
[0102] В некоторых примерах, если SIZEblk выше предварительно заданного порогового значения, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0103] В некоторых примерах, если SIZEblk ниже предварительно заданного порогового значения, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)).
[0104] В некоторых примерах, если индексированный блок объединения представляет собой бипрогнозирование, видеокодер 200 и видеодекодер 300 могут задавать wInter выше или ниже wIntra (например, (wInter, wIntra)=(3, 1) или (wInter, wIntra)=(5, 3)). Между этим, для индексированного блока объединения с унипрогнозированием, видеокодер 200 и видеодекодер 300 могут определять (wInter, wIntra) адаптивно согласно размеру текущего блока.
[0105] В некоторых примерах, набор из пары весовых коэффициентов (wInter, wIntra) может быть предварительно задан. Набор из пары весовых коэффициентов может передаваться в служебных сигналах в заголовке потока битов или наборе параметров последовательности (SPS). Таким образом, видеокодер 200 может кодировать набор из пары весовых коэффициентов, в то время как видеодекодер 300 может декодировать набор из пары весовых коэффициентов. В ходе процесса кодирования, блока MHI видеокодер 200 может определять наилучший весовой коэффициент с использованием оценки искажения в зависимости от скорости передачи (RD). В этом примере, видеокодер 200 может извлекать RD-затраты всех элементов в паре весовых коэффициентов. Видеокодер 200 может выбирать пару, имеющую минимальные RD-затраты, чтобы кодировать текущий блок и передавать в служебных сигналах индекс этой пары в поток битов. Видеокодер 200 может кодировать индекс с использованием CABAC-алгоритма с использованием обходного или контекстного энтропийного кодирования. Видеодекодер 300 может выполнять процесс декодирования для того, чтобы получать индекс, чтобы определять весовые коэффициенты (например, пару весовых коэффициентов), которые следует применять для текущего блока.
[0106] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут кодировать список весовых коэффициентов в наборе параметров (к примеру, в SPS, в наборе параметров картинки (PPS), в наборе параметров видео (VPS), в наборе параметров адаптации (APS) и т.п.) или в заголовках (тайлах, срезах, единицах кодирования и т.п.), соответствующих случаям, описанным в вышеуказанных технологиях, которые основаны на проверке соседних блочных режимов, размеров блоков и т.д.
[0107] Фиг. 4 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия сущности. Фиг. 4 предоставляется для целей пояснения и не должен считаться ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеокодер 200 в контексте стандартов кодирования видео, таких как стандарт HEVC-кодирования видео и разрабатываемый стандарт кодирования видео H.266. Тем не менее, технологии этого раскрытия сущности не ограничены этими стандартами кодирования видео и являются, в общем, применимыми к кодированию и декодированию видео.
[0108] В примере по фиг. 4, видеокодер 200 включает в себя запоминающее устройство 230 видеоданных, модуль 202 выбора режима, модуль 204 формирования остатков, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования. Любое из запоминающего устройства 230 видеоданных, модуля 202 выбора режима, модуля 204 формирования остатков, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования может реализовываться в одном или более процессоров либо в схеме обработки. Кроме того, видеокодер 200 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.
[0109] Запоминающее устройство 230 видеоданных может сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 200. Видеокодер 200 может принимать видеоданные, сохраненные в запоминающем устройстве 230 видеоданных, например, из видеоисточника 104 (фиг. 1). DPB 218 может выступать в качестве запоминающего устройства опорных картинок, которое сохраняет опорные видеоданные для использования при прогнозировании последующих видеоданных посредством видеокодера 200. Запоминающее устройство 230 видеоданных и DPB 218 могут формироваться посредством любых из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 230 видеоданных и DPB 218 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 230 видеоданных может быть внутримикросхемным с другими компонентами видеокодера 200, как проиллюстрировано, или внемикросхемным относительно этих компонентов.
[0110] В этом раскрытии сущности, ссылка на запоминающее устройство 230 видеоданных не должна интерпретироваться как ограниченная запоминающим устройством, внутренним для видеокодера 200, если не описывается конкретно в таком качестве, или запоминающим устройством, внешним для видеокодера 200, если не описывается конкретно в таком качестве. Наоборот, ссылка на запоминающее устройство 230 видеоданных должна пониматься как опорное запоминающее устройство, которое сохраняет видеоданные, которые видеокодер 200 принимает для кодирования (например, видеоданные для текущего блока, который должен кодироваться). Запоминающее устройство 106 по фиг. 1 также может предоставлять временное хранение выводов из различных модулей видеокодера 200.
[0111] Различные модули по фиг. 4 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0112] Видеокодер 200 может включать в себя арифметико-логические устройства (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеокодера 200 выполняются с использованием программного обеспечения, выполняемого посредством программируемых схем, запоминающее устройство 106 (фиг. 1) может сохранять объектный код программного обеспечения, которое видеокодер 200 принимает и выполняет, или другое запоминающее устройство в видеокодере 200 (не показано) может сохранять такие инструкции.
[0113] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать картинку видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.
[0114] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п.
[0115] Модуль 202 выбора режима, в общем, координирует несколько проходов кодирования, чтобы тестировать комбинации параметров кодирования и результирующих значений искажения в зависимости от скорости передачи для таких комбинаций. Параметры кодирования могут включать в себя сегментацию CTU на CU, режимы прогнозирования для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима в конечном счете может выбирать комбинацию параметров кодирования, имеющих значения искажения в зависимости от скорости передачи, которые лучше других тестированных комбинаций.
[0116] Видеокодер 200 может сегментировать картинку, извлеченную из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в срезе. Модуль 202 выбора режима может сегментировать CTU картинки в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".
[0117] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать прогнозный блок для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для взаимного прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одной или более опорных картинок (например, в одной или более ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.
[0118] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных картинках относительно позиции текущего блока в текущей картинке. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать прогнозный блок с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для прогнозного блока согласно одному или более интерполяционных фильтров. Кроме того, для двунаправленного взаимного прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.
[0119] В качестве другого примера, для внутреннего прогнозирования или кодирования с внутренним прогнозированием, модуль 226 внутреннего прогнозирования может формировать прогнозный блок из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 внутреннего прогнозирования, в общем, может математически комбинировать значения соседних выборок и заполнять эти вычисленные значения в заданном направлении для текущего блока, чтобы формировать прогнозный блок. В качестве другого примера, для DC-режима, модуль 226 внутреннего прогнозирования может вычислять среднее соседних выборок по отношению к текущему блоку и формировать прогнозный блок, который включает в себя это результирующее среднее для каждой выборки прогнозного блока.
[0120] В соответствии с технологиями этого раскрытия сущности, модуль 202 выбора режима может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, модуль 202 выбора режима может формировать блок прогнозирования за счет инструктирования модулю 222 оценки движения и модулю 224 компенсации движения формировать блок взаимного прогнозирования, а модулю 226 внутреннего прогнозирования формировать блок внутреннего прогнозирования. Модуль 202 выбора режима может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, модуль 202 выбора режима может определять весовые коэффициенты для выполнения прогнозирования со взвешиванием согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодируются с внутренним и/или взаимным прогнозированием. Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, модуль 202 выбора режима может определять число взаимно прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа взаимно прогнозированных блоков, соседних с блоком яркости.
[0121] В качестве примера, модуль 202 выбора режима может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, модуль 202 выбора режима может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, модуль 202 выбора режима может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, модуль 202 выбора режима может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, модуль 202 выбора режима может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков.
[0122] Модуль 202 выбора режима предоставляет прогнозный блок в модуль 204 формирования остатков. Модуль 204 формирования остатков принимает необработанную некодированную версию текущего блока из запоминающего устройства 230 видеоданных и прогнозный блок из модуля 202 выбора режима. Модуль 204 формирования остатков вычисляет последовательные выборочные разности между текущим блоком и прогнозным блоком. Результирующие последовательные выборочные разности задают остаточный блок для текущего блока. В некоторых примерах, модуль 204 формирования остатков также может определять разности между выборочными значениями в остаточном блоке, чтобы формировать остаточный блок с использованием остаточной дифференциальной импульсно-кодовой модуляции (RDPCM). В некоторых примерах, модуль 204 формирования остатков может формироваться с использованием одной или более схем вычитателя, которые выполняют двоичное вычитание.
[0123] В примерах, в которых модуль 202 выбора режима сегментирует CU на PU, каждая PU может быть ассоциирована с единицей прогнозирования сигналов яркости и соответствующими единицами прогнозирования сигналов цветности. Видеокодер 200 и видеодекодер 300 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, и размер PU может означать размер единицы прогнозирования сигналов яркости PU. При условии, что размер конкретной CU составляет 2Nx2N, видеокодер 200 может поддерживать PU-размеры в 2Nx2N или NxN для внутреннего прогнозирования и симметричные PU-размеры в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для взаимного прогнозирования. Видеокодер 200 и видеодекодер 300 также могут поддерживать асимметричное сегментирование для PU-размеров в 2NxnU, 2NxnD, nLx2N и nRx2N для взаимного прогнозирования.
[0124] В примерах, в которых модуль выбора режима дополнительно не сегментирует CU на PU, каждая CU может быть ассоциирована с блоком кодирования сигналов яркости и соответствующими блоками кодирования сигналов цветности. Как описано выше, размер CU может означать размер блока кодирования сигналов яркости CU. Видеокодер 200 и видеодекодер 300 могут поддерживать CU-размеры в 2Nx2N, 2NxN или Nx2N.
[0125] Для других технологий кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме на основе линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, через соответствующие модули, ассоциированные с технологиями кодирования, формирует прогнозный блок для кодируемого текущего блока. В некоторых примерах, таких как кодирование в палитровом режиме, модуль 202 выбора режима может не формировать прогнозный блок и вместо этого формирует синтаксические элементы, которые указывают способ, которым следует восстанавливать блок на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы в модуль 220 энтропийного кодирования для кодирования.
[0126] В некоторых примерах, модуль 202 выбора режима может выбирать режим взаимно-внутреннего прогнозирования. В таких примерах, модуль 202 выбора режима может взвешивать блок взаимного прогнозирования, сформированный посредством модуля 224 компенсации движения, и блок внутреннего прогнозирования, сформированный посредством модуля 226 внутреннего прогнозирования, согласно любой из различных технологий этого раскрытия сущности. Модуль 202 выбора режима может формировать блок прогнозирования из блоков взвешенного взаимного и внутреннего прогнозирования и выводить сформированный блок прогнозирования.
[0127] Как описано выше, модуль 204 формирования остатков принимает видеоданные для текущего блока и соответствующего прогнозного блока. Модуль 204 формирования остатков затем формирует остаточный блок для текущего блока. Чтобы формировать остаточный блок, модуль 204 формирования остатков вычисляет последовательные выборочные разности между прогнозным блоком и текущим блоком.
[0128] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять несколько преобразований для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.
[0129] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы формировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования согласно значению параметра квантования (QP), ассоциированному с текущим блоком. Видеокодер 200 (например, через модуль 202 выбора режима) может регулировать степень квантования, применяемую к блокам коэффициентов, ассоциированным с текущим блоком, посредством регулирования QP-значения, ассоциированного с CU. Квантование может вводить потери информации, и в силу этого квантованные коэффициенты преобразования могут иметь меньшую точность, чем исходные коэффициенты преобразования, сформированные посредством модуля 206 обработки преобразования.
[0130] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и прогнозного блока, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из прогнозного блока, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.
[0131] Модуль 216 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 216 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев CU. Операции модуля 216 фильтрации могут пропускаться в некоторых примерах.
[0132] Видеокодер 200 сохраняет восстановленные блоки в DPB 218. Например, в примерах, в которых операции модуля 216 фильтрации не требуются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, в которых операции модуля 216 фильтрации необходимы, модуль 216 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорную картинку из DPB 218, сформированного из восстановленных (и потенциально фильтрованных) блоков для того, чтобы взаимно прогнозировать блоки последующих кодированных картинок. Помимо этого, модуль 226 внутреннего прогнозирования может использовать восстановленные блоки в DPB 218 текущей картинки, чтобы внутренне прогнозировать другие блоки в текущей картинке.
[0133] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принимаемые из других функциональных компонентов видеокодера 200. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы прогнозирования (например, информацию движения для взаимного прогнозирования или информацию внутреннего режима для внутреннего прогнозирования) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для синтаксических элементов, которые представляют собой другой пример видеоданных, чтобы формировать энтропийно кодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC-операцию, операцию кодирования переменно-переменной (V2V) длины, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию экспоненциального кодирования кодом Голомба или другой тип операции энтропийного кодирования для данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в обходном режиме, в котором синтаксические элементы не подвергаются энтропийному кодированию.
[0134] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки среза или картинки. В частности, модуль 220 энтропийного кодирования может выводить поток битов.
[0135] Операции, описанные выше, описываются относительно блока. Такое описание должно пониматься как операции для блока кодирования сигналов яркости и/или блоков кодирования сигналов цветности. Как описано выше, в некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности CU. В некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности PU.
[0136] В некоторых примерах, операции, выполняемые относительно блока кодирования сигналов яркости, не должны повторяться для блоков кодирования сигналов цветности. В качестве одного примера, операции для того, чтобы идентифицировать вектор движения (MV) и опорную картинку для блока кодирования сигналов яркости, не должны повторяться для идентификации MV и опорной картинки для блоков сигналов цветности. Наоборот, MV для блока кодирования сигналов яркости может масштабироваться с возможностью определять MV для блоков сигналов цветности, и опорная картинка может быть такой же. В качестве другого примера, процесс внутреннего прогнозирования может быть идентичным для блоков кодирования сигналов яркости и блоков кодирования сигналов цветности.
[0137] Видеокодер 200 по фиг. 4 представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока видеоданных; формировать блок внутреннего прогнозирования для текущего блока видеоданных; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодировать (т.е. кодировать, в этом примере) текущий блок с использованием блока прогнозирования.
[0138] Видеокодер 200 также представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.
[0139] Фиг. 5 является блок-схемой, иллюстрирующей примерный видеодекодер 300, который может выполнять технологии этого раскрытия сущности. Фиг. 5 предоставляется для целей пояснения и не является ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеодекодер 300 согласно технологиям JEM, VVC и HEVC. Тем не менее, технологии этого раскрытия сущности могут выполняться посредством устройств кодирования видео, которые сконфигурированы для других стандартов кодирования видео.
[0140] В примере по фиг. 5, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Любое из запоминающего CPB-устройства 320, модуля 302 энтропийного декодирования, модуля 304 обработки прогнозирования, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 может реализовываться в одном или более процессоров или в схеме обработки. Кроме того, видеодекодер 300 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.
[0141] Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя дополнительные модули для того, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.
[0142] В некоторых примерах, модуль 304 обработки прогнозирования может выбирать режим взаимно-внутреннего прогнозирования. В таких примерах, модуль 304 обработки прогнозирования может взвешивать блок взаимного прогнозирования, сформированный посредством модуля 316 компенсации движения, и блок внутреннего прогнозирования, сформированный посредством модуля 318 внутреннего прогнозирования, согласно любой из различных технологий этого раскрытия сущности. Модуль 304 обработки прогнозирования может формировать блок прогнозирования из блоков взвешенного взаимного и внутреннего прогнозирования и выводить сформированный блок прогнозирования.
[0143] В соответствии с технологиями этого раскрытия сущности, модуль 304 обработки прогнозирования может выполнять взаимно-внутреннее прогнозирование блоков видеоданных (например, CU). Таким образом, модуль 304 обработки прогнозирования может формировать блок прогнозирования за счет инструктирования модулю 316 компенсации движения формировать блок взаимного прогнозирования, а модулю 318 внутреннего прогнозирования формировать блок внутреннего прогнозирования. Модуль 304 обработки прогнозирования может формировать окончательный блок прогнозирования для текущего блока посредством выполнения комбинирования со взвешиванием выборок блока взаимного прогнозирования и блока внутреннего прогнозирования. Когда текущий блок представляет собой блок цветности, модуль 304 обработки прогнозирования может определять весовые коэффициенты для выполнения прогнозирования со взвешиванием согласно числу соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием. Таким образом, вместо определения весовых коэффициентов согласно соседним блокам по отношению к текущему блоку цветности, модуль 304 обработки прогнозирования может определять число внутренне прогнозированных блоков, соседних с блоком яркости, соответствующим текущему блоку цветности, затем определять весовые коэффициенты на основе числа внутренне прогнозированных блоков, соседних с блоком яркости.
[0144] В качестве примера, модуль 304 обработки прогнозирования может определять то, взаимно прогнозируются или нет соседний сверху блок и/или соседний слева блок по отношению к соответствующему блоку яркости. Когда ни один из этих соседних блоков не прогнозируется взаимно, модуль 304 обработки прогнозирования может определять весовой коэффициент в 3, который должен применяться к блоку внутреннего прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку взаимного прогнозирования. Когда оба из этих соседних блоков взаимно прогнозируются, модуль 304 обработки прогнозирования может определять весовой коэффициент в 3, который должен применяться к блоку взаимного прогнозирования, и весовой коэффициент в 1, который должен применяться к блоку внутреннего прогнозирования. Когда один из этих соседних блоков взаимно прогнозируется, а другой внутренне прогнозируется, модуль 304 обработки прогнозирования может определять весовые коэффициенты в 2, которые должны применяться как к блоку взаимного прогнозирования, так и к блоку внутреннего прогнозирования. В некоторых примерах, модуль 304 обработки прогнозирования может подсчитывать соседние блоки, прогнозированные с использованием взаимно-внутреннего прогнозирования и/или внутриблочного копирования, в качестве кодированных с взаимным прогнозированием блоков.
[0145] Запоминающее CPB-устройство 320 может сохранять видеоданные, такие как кодированный поток видеобитов, который должен декодироваться посредством компонентов видеодекодера 300. Видеоданные, сохраненные в запоминающем CPB-устройстве 320, могут получаться, например, из машиночитаемого носителя 110 (фиг. 1). Запоминающее CPB-устройство 320 может включать в себя CPB, который сохраняет кодированные видеоданные (например, синтаксические элементы) из кодированного потока видеобитов. Кроме того, запоминающее CPB-устройство 320 может сохранять видеоданные, отличные от синтаксических элементов кодированной картинки, такие как временные данные, представляющие выводы из различных модулей видеодекодера 300. DPB 314, в общем, сохраняет декодированные картинки, которые видеодекодер 300 может выводить и/или использовать в качестве опорных видеоданных при декодировании последующих данных или картинок кодированного потока видеобитов. Запоминающее CPB-устройство 320 и DPB 314 могут формироваться посредством любого из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее CPB-устройство 320 и DPB 314 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее CPB-устройство 320 может быть внутримикросхемным с другими компонентами видеодекодера 300 или внемикросхемным относительно этих компонентов.
[0146] Дополнительно или альтернативно, в некоторых примерах, видеодекодер 300 может извлекать кодированные видеоданные из запоминающего устройства 120 (фиг. 1). Таким образом, запоминающее устройство 120 может сохранять данные, как пояснено выше для запоминающего CPB-устройства 320. Аналогично, запоминающее устройство 120 может сохранять инструкции, которые должны выполняться посредством видеодекодера 300, когда часть или вся функциональность видеодекодера 300 реализуется в программном обеспечении для выполнения посредством схемы обработки видеодекодера 300.
[0147] Различные модули, показанные на фиг. 5, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 4, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0148] Видеодекодер 300 может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, сформированные из программируемых схем. В примерах, в которых операции видеодекодера 300 выполняются посредством программного обеспечения, выполняющегося в программируемых схемах, внутримикросхемное или внемикросхемное запоминающее устройство может сохранять инструкции (например, объектный код) программного обеспечения, которые принимает и выполняет видеодекодер 300.
[0149] Модуль 302 энтропийного декодирования может принимать кодированные видеоданные из CPB и энтропийно декодировать видеоданные, чтобы воспроизводить синтаксические элементы. Модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут формировать декодированные видеоданные на основе синтаксических элементов, извлеченных из потока битов.
[0150] В общем, видеодекодер 300 восстанавливает картинку на поблочной основе. Видеодекодер 300 может выполнять операцию восстановления для каждого блока отдельно (причем блок, в данный момент восстанавливаемый, т.е. декодируемый, может называться "текущим блоком").
[0151] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, задающие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как параметр квантования (QP) и/или индикатор(ы) режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 306 обратного квантования, которая должна применяться. Модуль 306 обратного квантования, например, может выполнять операцию побитового сдвига влево, чтобы обратно квантовать квантованные коэффициенты преобразования. Модуль 306 обратного квантования в силу этого может формировать блок коэффициентов преобразования, включающий в себя коэффициенты преобразования.
[0152] После того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0153] Кроме того, модуль 304 обработки прогнозирования формирует прогнозный блок согласно синтаксическим элементам с информацией прогнозирования, которые энтропийно декодированы посредством модуля 302 энтропийного декодирования. Например, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок взаимно прогнозируется, модуль 316 компенсации движения может формировать прогнозный блок. В этом случае, синтаксические элементы с информацией прогнозирования могут указывать опорную картинку в DPB 314, из которого можно извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения, в общем, может выполнять процесс взаимного прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 224 компенсации движения (фиг. 4).
[0154] В качестве другого примера, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внутренне прогнозируется, модуль 318 внутреннего прогнозирования может формировать прогнозный блок согласно режиму внутреннего прогнозирования, указываемому посредством синтаксических элементов с информацией прогнозирования. С другой стороны, модуль 318 внутреннего прогнозирования, в общем, может выполнять процесс внутреннего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 226 внутреннего прогнозирования (фиг. 4). Модуль 318 внутреннего прогнозирования может извлекать данные соседних выборок по отношению к текущему блоку из DPB 314.
[0155] Модуль 310 восстановления может восстанавливать текущий блок с использованием прогнозного блока и остаточного блока. Например, модуль 310 восстановления может суммировать выборки остаточного блока с соответствующими выборками прогнозного блока, чтобы восстанавливать текущий блок.
[0156] Модуль 312 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 312 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.
[0157] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущей картинки для внутреннего прогнозирования и ранее декодированных картинок для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные картинки из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.
[0158] Видеодекодер 300 по фиг. 5 представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока видеоданных; формировать блок внутреннего прогнозирования для текущего блока видеоданных; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодировать (т.е. декодировать, в этом примере) текущий блок с использованием блока прогнозирования.
[0159] Видеодекодер 300 также представляет пример устройства для кодирования видеоданных, содержащего один или более процессоров, выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования.
[0160] Фиг. 6 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока, в соответствии с технологией этого раскрытия сущности. Текущий блок может содержать текущую CU. Хотя описывается относительно видеокодера 200 (фиг. 1 и 4), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 6.
[0161] В этом примере, видеокодер 200 первоначально прогнозирует текущий блок (350). Например, видеокодер 200 может формировать блок прогнозирования для текущего блока с использованием взаимно-внутреннего прогнозирования согласно технологиям этого раскрытия сущности. Видеокодер 200 затем может вычислять остаточный блок для текущего блока (352). Чтобы вычислять остаточный блок, видеокодер 200 может вычислять разность между исходным, некодированным блоком и блоком прогнозирования для текущего блока. Видеокодер 200 затем может преобразовывать и квантовать коэффициенты остаточного блока (354). Затем, видеокодер 200 может сканировать квантованные коэффициенты преобразования остаточного блока (356). В ходе сканирования или после сканирования, видеокодер 200 может энтропийно кодировать коэффициенты (358). Например, видеокодер 200 может кодировать коэффициенты с использованием CAVLC или CABAC. Видеокодер 200 затем может выводить энтропийно кодированные данные блока (360).
[0162] Таким образом, способ по фиг. 6 представляет пример способа, включающего в себя формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование (т.е. кодирование) текущего блока с использованием блока прогнозирования.
[0163] Фиг. 7 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока в соответствии с технологиями этого раскрытия сущности. Текущий блок может содержать текущую CU. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 5), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять способ, аналогичный способу по фиг. 7.
[0164] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты остаточного блока (372). Видеодекодер 300 может прогнозировать текущий блок (374), например, с использованием режима взаимно-внутреннего прогнозирования согласно технологиям этого раскрытия сущности, как указано посредством информации прогнозирования для текущего блока, чтобы вычислять блок прогнозирования для текущего блока. Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты (376), чтобы создавать блок квантованных коэффициентов преобразования. Видеодекодер 300 затем может обратно квантовать и обратно преобразовывать коэффициенты для того, чтобы формировать остаточный блок (378). Видеодекодер 300 может, в конечном счете, декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (380).
[0165] Таким образом, способ по фиг. 7 представляет пример способа, включающего в себя формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование (т.е. декодирование) текущего блока с использованием блока прогнозирования.
[0166] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ кодирования (кодирования или декодирования) видеоданных согласно технологиям этого раскрытия сущности. Для целей примера и пояснения, способ по фиг. 8 поясняется относительно видеодекодера 300 по фиг. 1 и 5, хотя видеокодер 200 по фиг. 1 и 4 или другие устройства кодирования видео могут осуществлять этот или аналогичный способ. Способ по фиг. 8 может осуществляться посредством видеокодера 200 при прогнозировании текущего блока цветности, например, на этапе 350 способа по фиг. 6, либо посредством видеодекодера 300 при прогнозировании текущего блока цветности, например, на этапе 374 по фиг. 7.
[0167] Первоначально, видеодекодер 300 формирует блок взаимного прогнозирования для текущего блока цветности (400). Видеодекодер 300 также может формировать блок внутреннего прогнозирования для текущего блока цветности (402). Видеодекодер 300 затем может определять блок яркости, соответствующий блоку цветности (404), например, блок яркости, который совместно размещается с блоком цветности в массиве яркости.
[0168] Видеодекодер 300 затем может определять режимы прогнозирования соседних блоков по отношению к блоку яркости (406). Например, видеодекодер 300 может определять режимы прогнозирования верхнего соседнего блока 142 и левого соседнего блока 144 по фиг. 3A, правого верхнего соседнего блока 148 и левого нижнего соседнего блока 150 по фиг. 3B и т.п. согласно другим примерам соседних блоков, как показано на фиг. 3A-3F. Видеодекодер 300 также может определять число внутренне прогнозированных соседних блоков по отношению к блоку яркости (408). Альтернативно, видеодекодер 300 может определять число взаимно прогнозированных соседних блоков по отношению к блоку яркости.
[0169] Видеодекодер 300 также может определять весовые коэффициенты, которые должны применяться к блоку взаимного прогнозирования и блоку внутреннего прогнозирования, согласно числу внутренне прогнозированных соседних блоков по отношению к блоку яркости (410). Если предусмотрено большее число взаимно прогнозированных блоков, чем внутренне прогнозированных блоков, видеодекодер 300 может определять то, что весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, превышает весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования. Например, весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, может быть равным 3, и весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, может быть равным 1. Если число блоков внутреннего прогнозирования превышает число блоков взаимного прогнозирования, видеодекодер 300 может определять то, что весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, превышает весовой коэффициент, который должен применяться к блоку взаимного прогнозирования. Например, весовой коэффициент, который должен применяться к блоку внутреннего прогнозирования, может быть равным 3, и весовой коэффициент, который должен применяться к блоку взаимного прогнозирования, может быть равным 1. Если числа блоков внутреннего и взаимного прогнозирования являются идентичными, весовые коэффициенты могут быть равными, например, 2 для каждого из них.
[0170] Видеодекодер 300 затем может комбинировать блок взаимного прогнозирования и блок внутреннего прогнозирования с использованием весовых коэффициентов, чтобы формировать блок прогнозирования для текущего блока цветности (412). Видеодекодер 300 затем может кодировать текущий блок цветности с использованием блока прогнозирования (414).
[0171] Таким образом, способ по фиг. 8 представляет пример способа кодирования видеоданных, при этом способ содержит формирование блока взаимного прогнозирования для текущего блока цветности видеоданных; формирование блока внутреннего прогнозирования для текущего блока цветности видеоданных; определение числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определение первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодирование текущего блока цветности с использованием блока прогнозирования.
[0172] Определенные технологии этого раскрытия сущности обобщаются в нижеприведенных примерах.
[0173] Пример 1: Способ кодирования видеоданных, при этом способ содержит: формирование блока взаимного прогнозирования для текущего блока видеоданных; формирование блока внутреннего прогнозирования для текущего блока видеоданных; применение первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; комбинирование первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и кодирование текущего блока с использованием блока прогнозирования.
[0174] Пример 2: Способ по примеру 1, в котором кодирование текущего блока содержит декодирование текущего блока, содержащее: декодирование остаточного блока для текущего блока; и комбинирование выборок остаточного блока с выборками блока прогнозирования.
[0175] Пример 3: Способ по любому из примеров 1 и 2, в котором кодирование текущего блока содержит кодирование текущего блока, содержащее: вычитание выборок блока прогнозирования из выборок текущего блока, чтобы формировать остаточный блок; и кодирование остаточного блока.
[0176] Пример 4: Способ по любому из примеров 1-3, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно числу внутренне кодированных соседних блоков по отношению к текущему блоку.
[0177] Пример 5: Способ по примеру 4, в котором соседние блоки включают в себя верхний соседний блок.
[0178] Пример 6: Способ по любому из примеров 4 и 5, в котором соседние блоки включают в себя левый соседний блок.
[0179] Пример 7: Способ по любому из примеров 4-6, в котором соседние блоки включают в себя правый верхний соседний блок.
[0180] Пример 8: Способ по любому из примеров 4-7, в котором соседние блоки включают в себя левый нижний соседний блок.
[0181] Пример 9: Способ по любому из примеров 4-8, в котором соседние блоки включают в себя левый верхний соседний блок.
[0182] Пример 10: Способ по любому из примеров 4-9, дополнительно содержащий определение соседних блоков согласно высоте текущего блока и ширине текущего блока.
[0183] Пример 11: Способ по примеру 10, в котором когда высота и ширина равны, соседние блоки включают в себя правый верхний соседний блок и левый нижний соседний блок.
[0184] Пример 12: Способ по примеру 11, в котором соседние блоки дополнительно включают в себя верхний соседний блок и левый соседний блок.
[0185] Пример 13: Способ по примеру 12, в котором соседние блоки дополнительно включают в себя левый верхний соседний блок.
[0186] Пример 14: Способ по любому из примеров 10-13, в котором, когда высота и ширина отличаются, соседние блоки включают в себя правый верхний соседний блок и левый нижний соседний блок.
[0187] Пример 15: Способ по примеру 10, в котором, когда высота и ширина равны, соседние блоки являются симметричными вдоль размеров по ширине и высоте текущего блока, а когда высота и ширина не равна, соседние блоки являются асимметричными вдоль размеров по ширине и высоте текущего блока.
[0188] Пример 16: Способ по примеру 15, в котором, когда ширина превышает высоту, соседние блоки включают в себя правый верхний соседний блок и левый соседний блок, а когда высота превышает ширину, соседние блоки включают в себя верхний соседний блок и левый нижний соседний блок.
[0189] Пример 17: Способ по любому из примеров 4-16, дополнительно содержащий определение того, что один из соседних блоков, который кодируется с внутриблочным копированием либо кодируется на основе ссылок на текущие картинки, представляет собой взаимно кодированный блок.
[0190] Пример 18: Способ по любому из примеров 4-16, дополнительно содержащий определение того, что один из соседних блоков, который кодируется с внутриблочным копированием либо кодируется на основе ссылок на текущие картинки, представляет собой внутренне кодированный блок.
[0191] Пример 19: Способ по любому из примеров 4-18, дополнительно содержащий определение того, что один из соседних блоков, который взаимно-внутренне кодируется, представляет собой взаимно кодированный блок.
[0192] Пример 20: Способ по любому из примеров 4-18, дополнительно содержащий определение того, что один из соседних блоков, который взаимно-внутренне кодируется, представляет собой внутренне кодированный блок.
[0193] Пример 21: Способ по любому из примеров 4-20, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первый весовой коэффициент, когда все соседние блоки внутренне кодируются.
[0194] Пример 22: Способ по любому из примеров 4-21, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как превышающего второй весовой коэффициент, когда, по меньшей мере, один из соседних блоков не кодируется внутренне.
[0195] Пример 23: Способ по любому из примеров 4-22, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного второму весовому коэффициенту, когда только один из соседних блоков внутренне кодируется.
[0196] Пример 24: Способ по любому из примеров 4-23, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 1 и второго весового коэффициента как равного 3, когда левый верхний соседний блок, правый верхний соседний блок и левый нижний соседний блок в текущий блок внутренне кодируются.
[0197] Пример 25: Способ по любому из примеров 4-23, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 3 и второго весового коэффициента как равного 5, когда левый верхний соседний блок, правый верхний соседний блок и левый нижний соседний блок в текущий блок внутренне кодируются.
[0198] Пример 26: Способ по любому из примеров 4-25, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 2 и второго весового коэффициента как равного 2, когда, по меньшей мере, один из левого верхнего соседнего блока, правого верхнего соседнего блока или левого нижнего соседнего блока по отношению к текущему блоку внутренне кодируется.
[0199] Пример 27: Способ по любому из примеров 4-25, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 4 и второго весового коэффициента как равного 4, когда, по меньшей мере, один из левого верхнего соседнего блока, правого верхнего соседнего блока или левого нижнего соседнего блока по отношению к текущему блоку внутренне кодируется.
[0200] Пример 28: Способ по любому из примеров 4-27, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 3 и второго весового коэффициента как равного 1, когда ни один из левого верхнего соседнего блока, правого верхнего соседнего блока и левого нижнего соседнего блока по отношению к текущему блоку не кодируется внутренне.
[0201] Пример 29: Способ по любому из примеров 4-27, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как равного 5 и второго весового коэффициента как равного 3, когда ни один из левого верхнего соседнего блока, правого верхнего соседнего блока и левого нижнего соседнего блока по отношению к текущему блоку не кодируется внутренне.
[0202] Пример 30: Способ по любому из примеров 4-29, в котором определение первого весового коэффициента и второго весового коэффициента содержит копирование первого весового коэффициента и второго весового коэффициента из одного из соседних блоков, который многогипотезно внутренне кодируется.
[0203] Пример 31: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда только один из соседних блоков внутренне кодируется.
[0204] Пример 32: Способ по примеру 31, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.
[0205] Пример 33: Способ по примеру 31, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.
[0206] Пример 34: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор первого весового коэффициента как превышающего второе отношение, когда только один из соседних блоков внутренне кодируется.
[0207] Пример 35: Способ по примеру 34, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.
[0208] Пример 36: Способ по примеру 34, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.
[0209] Пример 37: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда ни один из соседних блоков не кодируется внутренне.
[0210] Пример 38: Способ по примеру 37, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.
[0211] Пример 39: Способ по примеру 37, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.
[0212] Пример 40: Способ по любому из примеров 4-30, в котором определение первого весового коэффициента и второго весового коэффициента содержит выбор второго весового коэффициента как превышающего первое отношение, когда, по меньшей мере, один из соседних блоков прогнозируется с использованием внутреннего DC-режима или планарного режима.
[0213] Пример 41: Способ по примеру 40, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.
[0214] Пример 42: Способ по примеру 40, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.
[0215] Пример 43: Способ по любому из примеров 1-42, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно блоку сигналов яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.
[0216] Пример 44: Способ по любому из примеров 1-43, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно блоку сигналов цветности одного из соседних блоков, когда один из соседних блоков имеет активированное сдвоенное дерево кодирования яркости и цветности.
[0217] Пример 45: Способ по любому из примеров 1-44, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно номеру взаимного прогнозирования индексированного блока объединения.
[0218] Пример 46: Способ по примеру 45, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда индексированный блок объединения представляет собой бипрогнозирование.
[0219] Пример 47: Способ по примеру 46, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.
[0220] Пример 48: Способ по примеру 46, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.
[0221] Пример 49: Способ по любому из примеров 46-48, в котором определение первого весового коэффициента и второго весового коэффициента содержит определение первого весового коэффициента и второго весового коэффициента согласно одному из примеров 4-42, когда индексированный блок объединения представляет собой унипрогнозирование.
[0222] Пример 50: Способ по примеру 45, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда индексированный блок объединения представляет собой унипрогнозирование.
[0223] Пример 51: Способ по примеру 50, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.
[0224] Пример 52: Способ по примеру 50, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.
[0225] Пример 53: Способ по любому из примеров 1-52, дополнительно содержащий определение первого весового коэффициента и второго весового коэффициента согласно размеру текущего блока.
[0226] Пример 54: Способ по примеру 53, в котором размер текущего блока содержит минимум ширины текущего блока и высоты текущего блока.
[0227] Пример 55: Способ по примеру 53, в котором размер текущего блока содержит максимум ширины текущего блока и высоты текущего блока.
[0228] Пример 56: Способ по примеру 53, в котором размер текущего блока содержит произведение ширины текущего блока и высоты текущего блока.
[0229] Пример 57: Способ по примеру 53, в котором размер текущего блока содержит сумму ширины текущего блока и высоты текущего блока.
[0230] Пример 58: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда размер блока выше предварительно заданного порогового значения.
[0231] Пример 59: Способ по примеру 58, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.
[0232] Пример 60: Способ по примеру 58, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.
[0233] Пример 61: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание второго весового коэффициента выше первого весового коэффициента, когда размер блока выше предварительно заданного порогового значения.
[0234] Пример 62: Способ по примеру 61, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.
[0235] Пример 63: Способ по примеру 61, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.
[0236] Пример 64: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание первого весового коэффициента выше второго весового коэффициента, когда размер блока ниже предварительно заданного порогового значения.
[0237] Пример 65: Способ по примеру 64, в котором первый весовой коэффициент равен 3, и второй весовой коэффициент равен 1.
[0238] Пример 66: Способ по примеру 64, в котором первый весовой коэффициент равен 5, и второй весовой коэффициент равен 3.
[0239] Пример 67: Способ по любому из примеров 53-57, в котором определение первого весового коэффициента и второго весового коэффициента содержит задание второго весового коэффициента выше первого весового коэффициента, когда размер блока ниже предварительно заданного порогового значения.
[0240] Пример 68: Способ по примеру 67, в котором второй весовой коэффициент равен 3, и первый весовой коэффициент равен 1.
[0241] Пример 69: Способ по примеру 67, в котором второй весовой коэффициент равен 5, и первый весовой коэффициент равен 3.
[0242] Пример 70: Способ по любому из примеров 1-69, дополнительно содержащий кодирование данных потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.
[0243] Пример 71: Способ по примеру 70, в котором данные потока битов содержат, по меньшей мере, одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.
[0244] Пример 72: Устройство для кодирования видеоданных, причем устройство содержит одно или более средств для осуществления способа по любому из примеров 1-71.
[0245] Пример 73: Устройство по примеру 72, в котором одно или более средств содержат один или более процессоров, реализованных в схеме.
[0246] Пример 74: Устройство по примеру 72, дополнительно содержащее дисплей, выполненный с возможностью отображать декодированные видеоданные.
[0247] Пример 75: Устройство по примеру 72, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.
[0248] Пример 76: Устройство по примеру 72, дополнительно содержащее запоминающее устройство, выполненное с возможностью сохранять видеоданные.
[0249] Пример 77: Устройство для кодирования видеоданных, при этом устройство содержит: средство для формирования блока взаимного прогнозирования для текущего блока видеоданных; средство для формирования блока внутреннего прогнозирования для текущего блока видеоданных; средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования; средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока; и средство для кодирования текущего блока с использованием блока прогнозирования.
[0250] Пример 78: Машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору осуществлять способ по любому из примеров 1-71.
[0251] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.
[0252] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любую среду, которая упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0253] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[0254] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термины "процессор" и "схема обработки", при использовании в данном документе могут означать любую из вышеприведенных структур или любую другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схем или логических элементов.
[0255] Технологии этого раскрытия сущности могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии сущности для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.
[0256] Выше описаны различные примеры. Эти и другие примеры находятся в пределах объема прилагаемой формулы изобретения.
Изобретение относится к кодированию видео. Техническим результатом является повышение эффективности кодирования видео. Результат достигается тем, что устройство для кодирования (кодирования или декодирования) видеоданных включает в себя запоминающее устройство для сохранения видеоданных и один или более процессоров, реализованных в схеме и выполненных с возможностью формировать блок взаимного прогнозирования для текущего блока цветности видеоданных; формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных; определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием; определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием; применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования; комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и кодировать текущий блок цветности с использованием блока прогнозирования. 4 н. и 40 з.п. ф-лы, 14 ил.
1. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:
формируют блок взаимного прогнозирования для текущего блока цветности видеоданных;
формируют блок внутреннего прогнозирования для текущего блока цветности видеоданных;
определяют число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;
определяют первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;
применяют первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;
комбинируют первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и
кодируют текущий блок цветности с использованием блока прогнозирования.
2. Способ по п. 1, в котором определение числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит этап, на котором определяют то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.
3. Способ по п. 1, в котором определение числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит этап, на котором определяют то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.
4. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента дополнительно содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.
5. Способ по п. 1, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.
6. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.
7. Способ по п. 1, в котором определение первого весового коэффициента и второго весового коэффициента содержит этап, на котором определяют первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.
8. Способ по п. 1, дополнительно содержащий этап, на котором кодируют данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.
9. Способ по п. 8, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.
10. Способ по п. 1, в котором кодирование текущего блока цветности содержит этап, на котором декодируют текущий блок цветности, содержащий этапы, на которых:
декодируют остаточный блок для текущего блока цветности; и
комбинируют выборки остаточного блока с выборками блока прогнозирования.
11. Способ по п. 1, в котором кодирование текущего блока цветности содержит этап, на котором кодируют текущий блок цветности, содержащий этапы, на которых:
вычитают выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; и
кодируют остаточный блок.
12. Устройство для кодирования видеоданных, при этом устройство содержит:
запоминающее устройство для сохранения видеоданных; и
один или более процессоров, реализованных в схеме и выполненных с возможностью:
формировать блок взаимного прогнозирования для текущего блока цветности видеоданных;
формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных;
определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;
определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;
применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;
комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и
кодировать текущий блок цветности с использованием блока прогнозирования.
13. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять то, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.
14. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.
15. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.
16. Устройство по п. 12, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.
17. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.
18. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью определять первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.
19. Устройство по п. 12, в котором один или более процессоров дополнительно выполнены с возможностью кодировать данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.
20. Устройство по п. 19, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.
21. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью декодировать текущий блок цветности и, чтобы декодировать текущий блок цветности, один или более процессоров выполнены с возможностью:
декодировать остаточный блок для текущего блока цветности; и
комбинировать выборки остаточного блока с выборками блока прогнозирования.
22. Устройство по п. 12, в котором один или более процессоров выполнены с возможностью кодировать текущий блок цветности и, чтобы кодировать текущий блок цветности, один или более процессоров выполнены с возможностью:
вычитать выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; и
кодировать остаточный блок.
23. Машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору:
формировать блок взаимного прогнозирования для текущего блока цветности видеоданных;
формировать блок внутреннего прогнозирования для текущего блока цветности видеоданных;
определять число соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;
определять первый весовой коэффициент и второй весовой коэффициент согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;
применять первый весовой коэффициент к блоку взаимного прогнозирования и второй весовой коэффициент к блоку внутреннего прогнозирования;
комбинировать первый блок взвешенного взаимного прогнозирования и второй блок взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и
кодировать текущий блок цветности с использованием блока прогнозирования.
24. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять число соседних блоков, которые кодированы с внутренним прогнозированием, содержат инструкции, которые инструктируют процессору определять, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.
25. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять число соседних блоков, которые кодированы с внутренним прогнозированием, содержат инструкции, которые инструктируют процессору определять, что число соседних блоков, которые внутренне прогнозируются, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.
26. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент дополнительно, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.
27. Машиночитаемый носитель хранения данных по п. 23, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.
28. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.
29. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент, содержат инструкции, которые инструктируют процессору определять первый весовой коэффициент и второй весовой коэффициент согласно размеру текущего блока цветности.
30. Машиночитаемый носитель хранения данных по п. 23, дополнительно содержащий инструкции, которые инструктируют процессору кодировать данные потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.
31. Машиночитаемый носитель хранения данных по п. 30, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.
32. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору кодировать текущий блок цветности, содержат инструкции, которые инструктируют процессору декодировать текущий блок цветности, причем они содержат инструкции, которые инструктируют процессору:
декодировать остаточный блок для текущего блока цветности; и
комбинировать выборки остаточного блока с выборками блока прогнозирования.
33. Машиночитаемый носитель хранения данных по п. 23, в котором инструкции, которые инструктируют процессору кодировать текущий блок цветности, содержат инструкции, которые инструктируют процессору кодировать текущий блок цветности, причем они содержат инструкции, которые инструктируют процессору:
вычитать выборки блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; и
кодировать остаточный блок.
34. Устройство для кодирования видеоданных, при этом устройство содержит:
средство для формирования блока взаимного прогнозирования для текущего блока цветности видеоданных;
средство для формирования блока внутреннего прогнозирования для текущего блока цветности видеоданных;
средство для определения числа соседних блоков по отношению к блоку яркости, соответствующему текущему блоку цветности, которые кодированы с внутренним прогнозированием;
средство для определения первого весового коэффициента и второго весового коэффициента согласно числу соседних блоков, которые кодированы с внутренним прогнозированием;
средство для применения первого весового коэффициента к блоку взаимного прогнозирования и второго весового коэффициента к блоку внутреннего прогнозирования;
средство для комбинирования первого блока взвешенного взаимного прогнозирования и второго блока взвешенного внутреннего прогнозирования, чтобы формировать блок прогнозирования для текущего блока цветности; и
средство для кодирования текущего блока цветности с использованием блока прогнозирования.
35. Устройство по п. 34, в котором средство для определения числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит средство для определения того, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием внутриблочного копирования или комбинированного внутренне-взаимного прогнозирования.
36. Устройство по п. 34, в котором средство для определения числа соседних блоков, которые кодированы с внутренним прогнозированием, содержит средство для определения того, что число соседних блоков, которые кодированы с внутренним прогнозированием, исключает соседние блоки, которые прогнозируются с использованием комбинированного взаимно-внутреннего прогнозирования.
37. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента дополнительно содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно блоку яркости одного из соседних блоков, когда один из соседних блоков имеет активированное одиночное дерево кодирования яркости и цветности или сдвоенное дерево кодирования яркости и цветности.
38. Устройство по п. 34, в котором соседние блоки включают в себя верхний соседний блок и соседний слева блок.
39. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно тому, прогнозируется ли индексированный блок объединения с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.
40. Устройство по п. 34, в котором средство для определения первого весового коэффициента и второго весового коэффициента содержит средство для определения первого весового коэффициента и второго весового коэффициента согласно размеру текущего блока цветности.
41. Устройство по п. 34, дополнительно содержащее средство для кодирования данных потока битов, представляющего первый весовой коэффициент и второй весовой коэффициент.
42. Устройство по п. 41, в котором данные потока битов содержат по меньшей мере одно из набора параметров последовательности, набора параметров картинки, набора параметров адаптации, набора параметров видео, заголовка картинки, заголовка среза, заголовка тайла или заголовка блока.
43. Устройство по п. 34, в котором средство для кодирования текущего блока цветности содержит средство для декодирования текущего блока цветности, содержащее:
средство для декодирования остаточного блока для текущего блока цветности; и
средство для комбинирования выборок остаточного блока с выборками блока прогнозирования.
44. Устройство по п. 34, в котором средство для кодирования текущего блока цветности содержит средство для кодирования текущего блока цветности, содержащее:
средство для вычитания выборок блока прогнозирования из выборок текущего блока цветности, чтобы формировать остаточный блок; и
средство для кодирования остаточного блока.
KR 20130029694 A, 2013.03.25 | |||
WO 2017043816 A1, 2017.03.16 | |||
US 8208557 B2, 2012.06.26 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ ПРЕДСКАЗАНИЯ КОМПОНЕНТЫ ЦВЕТНОСТИ ИЗОБРАЖЕНИЯ С ИСПОЛЬЗОВАНИЕМ КОМПОНЕНТЫ ЯРКОСТИ ИЗОБРАЖЕНИЯ | 2012 |
|
RU2604669C2 |
US 9374578 B1, 2016.06.21 | |||
US 2012314766 A1, 2012.12.13 | |||
WO 2013155028 A1, 2013.10.17 | |||
WO 2019006105 A1, 2019.01.03. |
Авторы
Даты
2023-09-21—Публикация
2020-02-05—Подача