RU2801326C2 - Кодер, декодер и соответствующие способы, использующие выделенный буфер ibc, и значение по умолчанию, обновляющее компонент яркости и цветности - Google Patents

Кодер, декодер и соответствующие способы, использующие выделенный буфер ibc, и значение по умолчанию, обновляющее компонент яркости и цветности Download PDF

Info

Publication number
RU2801326C2
RU2801326C2 RU2021129242A RU2021129242A RU2801326C2 RU 2801326 C2 RU2801326 C2 RU 2801326C2 RU 2021129242 A RU2021129242 A RU 2021129242A RU 2021129242 A RU2021129242 A RU 2021129242A RU 2801326 C2 RU2801326 C2 RU 2801326C2
Authority
RU
Russia
Prior art keywords
block
ibc
ctu
current
current block
Prior art date
Application number
RU2021129242A
Other languages
English (en)
Other versions
RU2021129242A (ru
Inventor
Хань ГАО
Семих ЕСЕНЛИК
Бяо ВАН
Ананд Мехер КОТРА
Цзяньлэ Чэнь
Original Assignee
Хуавей Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавей Текнолоджиз Ко., Лтд. filed Critical Хуавей Текнолоджиз Ко., Лтд.
Publication of RU2021129242A publication Critical patent/RU2021129242A/ru
Application granted granted Critical
Publication of RU2801326C2 publication Critical patent/RU2801326C2/ru

Links

Abstract

Изобретение относится к средствам для кодирования и декодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием, IBC, когда текущий блок дерева кодирования, CTU, подлежащий декодированию, является первым CTU в строке CTU. Определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC. Получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC. Получают предсказанные значения выборок для текущего блока, основываясь на опорных ссылках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию. 9 н. и 9 з.п. ф-лы, 28 ил.

Description

Перекрестная ссылка на родственные заявки
Настоящая заявка испрашивает приоритет в отношении предварительной заявки США 62/849,119, поданной 16 мая 2019 г. в Управление США по патентам и торговым знакам, и в отношении международной патентной заявки PCT/EP2019/065540, поданной 13 июня 2019 г. в Европейское патентное ведомство, раскрытия которых включены сюда посредством ссылки во всей их полноте.
Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки, в целом, относятся к области обработки изображений и, более конкретно, к кодеру, декодеру и к соответствующим способам, использующим выделенный буфер IBC.
Уровень техники
Видеокодирование (видеокодирование и декодирование) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, видеопередаче через Интернет и сети мобильной связи, диалоговых приложениях, работающих в реальном времени, таких как видеочат, видеоконференция, диски DVD и Blu-ray, системы получения и редактирования контента и видеокамеры приложений обеспечения безопасности.
Объем видеоданных, необходимый для показа даже относительно короткого видео, может быть существенным, что в результате может приводить к трудностям, когда данные должны передаваться потоком или как-либо иначе должны передаваться по сети связи с ограниченной шириной полосы пропускания. Таким образом, видеоданные, прежде чем передаваться через современные сети связи, обычно сжимаются. Размер видео также может быть проблемой, когда видео хранится в запоминающем устройстве, потому что ресурсы памяти могут быть ограничены. Устройства видеосжатия часто используют программное обеспечение и/или аппаратные средства в источнике сигнала для кодирования видеоданных перед передачей или хранением, уменьшая, таким образом, объем данных, необходимый для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством видеораспаковки, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущем спросе на более высокое качество видео, желательны улучшенные способы сжатия и распаковки, которые повышают степень сжатия при минимальных или отсутствующих влияниях на качество изображения.
Сущность раскрытия
Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования, соответствующие независимыми пунктами формулы изобретения.
Перечисленные выше и другие задачи решаются предметом независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и чертежей.
Первый вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC), когда текущий блок дерева кодирования (coding tree unit, CTU), подлежащий декодированию, является первым CTU в строке CTU, определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC, получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC, и получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока.
Опорные выборки из текущего буфера могут быть инициированы в значение по умолчанию. Значение по умолчанию может быть равно -1.
Способ, соответствующий настоящему варианту осуществления, удаляет все ограничения согласования битового потока подтверждения действительности векторов блоков. Это повышает устойчивость кодированного битового потока. Помимо этого, инициируется выделенный буфер IBC. Неопределенные выборки поэтому исключаются.
Следовательно, никакое соответствие битового потока для подтверждения действительности векторов блока IBC не требуется. Кроме того, при обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC не требуется никакая строчная память.
В соответствии с подходом первого варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих первому варианту осуществления. Декодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC
В соответствии с дополнительным подходом первого варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером одного из способов, соответствующих первому варианту осуществления.
В соответствии с дополнительным подходом первого варианта осуществления, обеспечивается декодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют декодер для выполнения любого из способов, соответствующих первому варианту осуществления.
Второй вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством кодирования, содержащий этапы, на которых: инициируют выделенный буфер для обновления ссылки на копию блока внутрикадрового предсказания (intra block copy, IBC), когда текущий блок дерева декодирования (coding tree unit, CTU), подлежащий декодированию, является первым CTU в строке CTU; получают предсказанные значения выборок для текущего блока в текущем CTU, основываясь на опорных выборках, полученных из выделенного буфера; и кодируют вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
Опорные выборки из выделенного буфера могут быть инициированы в значение по умолчанию. Значение по умолчанию может быть равно -1.
Способ, соответствующий настоящему варианту осуществления, удаляет все ограничения согласования битового потока подтверждения действительности векторов блоков. Это повышает устойчивость кодированного битового потока. Помимо этого, инициируется выделенный буфер IBC. Неопределенные выборки поэтому исключаются.
Следовательно, никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. Кроме того, при обновлении IBC никакие выборки из последней строки CTU не используются при ссылке IBC. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется.
В соответствии с подходом второго варианта осуществления, обеспечивается кодер, содержащий схему обработки для выполнения любого из способов, соответствующих второму варианту осуществления. Кодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом второго варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером любого из способов, соответствующих второму варианту осуществления.
В соответствии с дополнительным подходом второго варианта осуществления, обеспечивается кодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют кодер для выполнения любого из способов, соответствующих второму варианту осуществления.
Третий вариант осуществления настоящего раскрытия обеспечивает способ, кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC) для области блока дерева кодирования (coding tree unit, CTU), когда текущий блок кодирования, подлежащий декодированию, является первым блоком кодирования в области CTU; определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC; получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока.
Опорные выборки, полученные из выделенного буфера, могут быть инициированы в значение по умолчанию. Значение по умолчанию может быть равно -1.
Область CTU может быть неперекрывающейся областью фиксированного размера. Область может быть виртуальным блоком конвейерной обработки (virtual pipeline processing unit, VPDU). Размер области может быть 64х64.
Никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. При обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется. Кроме того, размер опорной памяти IBC является таким же, как в текущем варианте VVC, то есть для реализации варианта осуществления никакая дополнительная память не требуется. Для ссылки на текущий VPDU нет необходимости получать доступ к выделенному буферу IBC.
В соответствии с подходом третьего варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих третьему варианту осуществления. Декодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом третьего варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером одного из способов, соответствующих третьему варианту осуществления.
В соответствии с дополнительным подходом третьего варианта осуществления, обеспечивается декодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют декодер для выполнения любого из способов, соответствующих третьему варианту осуществления.
Четвертый вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC), когда текущий блок дерева кодирования (coding tree unit, CTU), подлежащий декодированию, является первым CTU изображения; определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC; получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и получают предсказанные значения выборки для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC текущего блока.
Опорные выборки, полученные из выделенного буфера, могут быть инициированы в значение по умолчанию. Значение по умолчанию может быть равно -1.
Способ, соответствующий настоящему варианту осуществления удаляет все ограничения согласования битового потока подтверждения векторов блоков. Это повышает устойчивость кодированного битового потока. Помимо этого, инициируется выделенный буфер IBC. Неопределенные выборки поэтому исключаются.
В соответствии с подходом четвертого варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих четвертому варианту осуществления. Декодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом четвертого варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером любого из способов, соответствующих четвертому варианту осуществления.
В соответствии с дополнительным подходом четвертого варианта осуществления, обеспечивается декодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют декодер для выполнения любого из способов, соответствующих четвертому варианту осуществления.
Пятый вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC), когда текущий блок является первым блоком кодирования в текущем блоке дерева кодирования (current coding tree unit, CTU), в котором CTU является первым CTU в строке CTU; определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC; получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и а векторе блока IBC для текущего блока.
Опорные выборки, полученные из выделенного буфера, могут быть инициированы в значение по умолчанию. Значение по умолчанию может быть равно -1.
Следовательно, никакое согласование битового потока для подтверждения действительности векторов блока IBC не используются. Кроме того, при ссылке IBC никакие выборки из последней строки CTU не используются. В этом случае для предсказания IBC никакая дополнительная строчная память не требуется.
В соответствии с подходом пятого варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих пятому варианту осуществления. Декодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом пятого варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером любого из способов, соответствующих пятому варианту осуществления.
В соответствии с дополнительным подходом пятого варианта осуществления, обеспечивается декодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют декодер для выполнения любого из способов, соответствующих пятому варианту осуществления.
Шестой вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: обеспечивают выделенный буфер для ссылки на копию блока внутрикадрового кодирования ntra block copy (IBC); определяют, предсказывается ли текущий блок, подлежащий декодированию, используя режим IBC;
получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают предсказанные значения выборок для текущего блока, основываясь на опорных ссылках из выделенного буфера и векторе блока IBC для текущего блока;
в котором выделенный буфер инициируется на значение по умолчанию, когда текущий блок является первым блоком кодирования первого дерева кодирования (coding tree unit, CTU) в текущем кадре.
Способ, соответствующий настоящему варианту осуществления удаляет все ограничения согласованности битового потока подтверждения действительности векторов блоков. Это повышает устойчивость кодированного битового потока. Помимо этого, инициируется выделенный буфер IBC. Неопределенные выборки поэтому исключаются.
Способ может дополнительно содержать этап, на котором инициируют выделенный буфер на значение по умолчанию, когда текущий блок является первым блоком кодирования строки CTU в текущем кадре.
Следовательно, никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. Кроме того, при обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае для предсказания IBC никакая дополнительная строчная память не требуется.
Способ может дополнительно содержать этап, на котором инициируют выделенный буфер для области CTU на значение по умолчанию, когда текущий блок является первым блоком кодирования в области CTU. Область CTU может быть неперекрывающейся областью фиксированного размера. Область может быть, в частности, виртуальным блоком конвейерной обработки (virtual pipeline processing unit, VPDU).
Никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. При обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется. Кроме того, размер опорной памяти IBC является таким же, как в текущем варианте VVC, то есть, для реализации варианта осуществления никакая дополнительная память не требуется. Для ссылки на текущий VPDU, нет необходимости получать доступ к выделенному буферу IBC.
Значение по умолчанию может быть равно -1.
Значение по умолчанию может быть получено, основываясь на внутренней битовой глубине для последовательности кадров, где текущий блок является блоком последовательности.
Когда компоненты цветности текущего блока предсказываются, используя режим IBC и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности текущего блока может устанавливаться на значение вектора блока по умолчанию.
Текущий блок может содержать по меньшей мере два субблока, причем, когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности субблока может устанавливаться на значение вектора блока по умолчанию.
Значение вектора блока по умолчанию может быть равно (0, 0). Вектор по умолчанию может быть вектором блока IBC совмещенной центральной выборки яркости для текущего блока, когда совмещенная центральная выборка яркости для текущего блока предсказывается, используя режим IBC.
Следовательно, для компонента цветности в отдельном случае дерева дополнительных проверок согласования битового потока можно избежать.
На выделенный буфер ссылка может делаться, основываясь на ((x+BVx)%W, (y+BVy)%H), где для x<0, x%L L - (-x%L), и где W и H представляют размер выделенного буфера, x и y представляют предсказанную выборку текущего блока и (BVx, BVy) представляет вектор блока IBC текущего блока.
В соответствии с подходом шестого варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих шестому варианту осуществления. Декодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом шестого варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером любого из способов, соответствующих шестому варианту осуществления.
В соответствии с дополнительным подходом шестого варианта осуществления, обеспечивается декодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют декодер для выполнения любого из способов, соответствующих шестому варианту осуществления.
В соответствии с дополнительным подходом шестого варианта осуществления обеспечивается декодер, содержащий выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC); модуль определения, выполненный с возможностью определения, предсказывается ли текущий блок, подлежащий кодированию, используя режим IBC; первый модуль получения, выполненный с возможностью получения вектора блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; второй модуль получения, выполненный с возможностью получения предсказанных значений выборки для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока; и модуль инициирования, выполненный с возможностью инициирования выделенного буфера на значение по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре.
Седьмой вариант осуществления настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством кодирования, содержащий этапы, на которых: обеспечивают выделенный буфер для ссылки на копию блока внутрикадрового предсказания (intra block copy, IBC); получают предсказанные значения выборки для текущего блока, подлежащего кодированию, основываясь на опорных выборках, полученных из выделенного буфера; и получают вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока; в котором текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре.
Способ, соответствующий настоящему варианту осуществления, удаляет все ограничения согласования битового потока подтверждения действительности векторов блоков. Это повышает устойчивость кодированного битового потока. Помимо этого, инициируется выделенный буфер IBC. Неопределенные выборки поэтому исключаются.
Способ может дополнительно содержать этап, на котором инициируют выделенный буфер на значение по умолчанию, когда текущий блок является первым блоком кодирования строки CTU в текущем кадре.
Следовательно, никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. Кроме того, при обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется.
Способ может дополнительно содержать этап, на котором инициируют выделенный буфер для области CTU на значение по умолчанию, когда текущий блок является первым блоком кодирования в области CTU. Область CTU может быть неперекрывающейся областью фиксированного размера. Область может быть, в частности, виртуальным блоком конвейерной обработки (virtual pipeline processing unit, VPDU).
Никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. При обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется. Кроме того, размер опорной памяти IBC является таким же, как в текущем варианте VVC, то есть, для реализации варианта осуществления никакая дополнительная память не требуется. Для ссылки на текущий VPDU, нет необходимости получать доступ к выделенному буферу IBC.
Значение по умолчанию может быть равно -1.
Значение по умолчанию может быть получено, основываясь на внутренней битовой глубине для последовательности кадров, где текущий блок является блоком последовательности.
Когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности текущего блока может устанавливаться как вектор блока по умолчанию.
Текущий блок может содержать по меньшей мере два субблока, причем, когда компоненты цветности текущего блока предсказываются, используя режим IBC и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности субблока может устанавливаться как вектор блока по умолчанию.
Значение вектора блока по умолчанию может быть равно (0, 0). Вектор по умолчанию может быть вектором блока IBC совмещенной центральной выборки яркости для текущего блока, когда совмещенная центральная выборка яркости для текущего блока предсказывается, используя режим IBC.
Следовательно, для компонента цветности в случае раздельных деревьев дополнительных проверок согласования битового потока можно избежать.
На выделенный буфер ссылка может делаться, основываясь на ((x+BVx)%W, (y+BVy)%H), где для x<0, x%L L - (-x%L), где W и H представляют размер выделенного буфера, x и y представляют предсказанную выборку текущего блока и (BVx, BVy) представляет вектор блока IBC текущего блока.
В соответствии с подходом седьмого варианта осуществления, обеспечивается декодер, содержащий схему обработки для выполнения любого из способов, соответствующих седьмому варианту осуществления. Кодер может дополнительно содержать выделенный буфер для хранения опорных выборок IBC.
В соответствии с дополнительным подходом седьмого варианта осуществления, обеспечивается компьютерный программный продукт, содержащий команды, которые, когда программа исполняется компьютером, вызывают выполнение компьютером одного из способов, соответствующих седьмому варианту осуществления.
В соответствии с дополнительным подходом седьмого варианта осуществления, обеспечивается кодер, содержащий один или более процессоров, и считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда они исполняются одним или более процессорами, конфигурируют кодер для выполнения любого из способов, соответствующих второму варианту осуществления.
В соответствии с дополнительным подходом седьмого варианта осуществления, обеспечивается кодер, содержащий выделенный буфер для ссылки на копию блока внутрикадрового предсказания (intra block copy, IBC); первый модуль получения, выполненный с возможностью получения предсказанных значения выборки для текущего блока, подлежащего кодированию, основываясь на опорных выборках, полученных из выделенного буфера; и модуль инициирования, выполненный с возможностью инициирования выделенного буфера на значение по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре.
Восьмой вариант осуществления настоящего раскрытия обеспечивает способ, кодирования, реализуемый устройством декодирования, содержащий этапы, на которых: инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре (или изображении), причем выделенный буфер используется для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC); определяют, предсказывается ли текущий блок, используя режим IBC; и получают предсказанные значения выборок для текущего блока, основываясь на выделенном буфере и на векторе блока IBC для текущего блока.
Девятый вариант осуществления настоящего раскрытия обеспечивает способ, кодирования, реализуемый устройством кодирования, содержащий этапы, на которых: инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре (или изображении), причем выделенный буфер используется для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC); получают предсказанные значения выборок для текущего блока, основываясь на выделенном буфере; и получают вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
В десятом варианте осуществления раскрывается способ кодирования, реализуемый устройством декодирования, где упомянутый способ содержит этапы, на которых:
инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре (или изображении), где выделенный буфер используется для ссылки на копию блока с внутрикадровым кодированием (intra block copy, IBC);
определяют, предсказывается ли текущий блок, используя режим IBC;
получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают предсказанные значения выборок для текущего блока, основываясь на выделенном буфере и векторе блока IBC для текущего блока.
В одной из реализаций способ дополнительно содержит этап, на котором:
инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования строки CTU в текущем кадре (или изображении).
В одной из реализаций способ дополнительно содержит этап, на котором:
инициируют выделенный буфер для области CTU, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования в области CTU.
В одной из реализаций область в CTU может быть неперекрывающейся областью фиксированного размера.
В одной из реализаций значение по умолчанию может быть получено, основываясь на внутренней битовой глубине для последовательности, в которой текущий блок является блоком последовательности.
В одной из реализаций, когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности текущего блока является вектором блока по умолчанию.
В одной из реализаций, текущий блок может содержать по меньшей мере два субблока, причем, когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости субблока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности субблока является вектором блока по умолчанию.
В одной из реализаций значение вектора блока по умолчанию равно (0, 0).
В одной из реализаций вектор по умолчанию может быть вектором совмещенной центральной выборки яркости для текущего блока, когда совмещенная центральная выборка яркости для текущего блока предсказывается, используя режим IBC.
В одиннадцатом варианте осуществления раскрывается способ кодирования, реализуемый устройством кодирования, где упомянутый способ содержит этапы, на которых:
инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре (или изображении), где выделенный буфер используется для ссылки на копию блока с внутрикадровым кодированием (intra block copy, IBC);
получают предсказанные значения выборок для текущего блока, основываясь на выделенном буфере;
получают вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
В одной из реализаций способ дополнительно содержит этап, на котором:
инициируют выделенный буфер, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования строки CTU в текущем кадре (или изображении).
В одной из реализаций способ дополнительно содержит этап, на котором:
инициируют выделенный буфер для области CTU, основываясь на значении по умолчанию, когда текущий блок является первым блоком кодирования в области CTU.
В одной из реализаций область в CTU может быть неперекрывающейся областью фиксированного размера.
В одной из реализаций значение по умолчанию может быть получено, основываясь на внутренней битовой глубине для последовательности, в которой текущий блок является блоком последовательности.
В одной из реализаций, когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости текущего блока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности текущего блока является вектором блока по умолчанию.
В одной из реализаций, текущий блок может содержать по меньшей мере два субблока, причем, когда компоненты цветности текущего блока предсказываются, используя режим IBC, и совмещенные компоненты яркости субблока предсказываются, не используя режим IBC, вектор блока IBC для компонентов цветности субблока является вектором блока по умолчанию.
В одной из реализаций вектор блока по умолчанию равен (0, 0).
В одной из реализаций вектор по умолчанию может быть вектором совмещенной центральной выборки яркости для текущего блока, когда совмещенная центральная выборка яркости для текущего блока предсказывается, используя режим IBC.
В одном из вариантов осуществления раскрывается кодер, содержащий схему обработки для выполнения способа, соответствующего любому из представленных выше вариантов осуществления или реализаций.
В одном из вариантов осуществления раскрывается декодер, содержащий схему обработки для выполнения способа, соответствующего любому из представленных выше вариантов осуществления или реализаций.
В одном из вариантов осуществления компьютерный программный продукт, содержащий управляющую программу для выполнения способа, соответствующего любому из представленных выше вариантов осуществления или реализаций.
В одном из вариантов осуществления раскрывается декодер, причем упомянутый декодер содержит:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долгосрочного пользования, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует декодер для выполнения способа, соответствующего любому из приведенных выше вариантов осуществления или реализаций.
В одном из вариантов осуществления раскрывается кодер, причем упомянутый кодер содержит:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долгосрочного пользования, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует кодер для выполнения способа, соответствующего любому из приведенных выше вариантов осуществления или реализаций.
Подробности одного или более вариантов осуществления изложены ниже на приложенных чертежах и в описании. Другие признаки, задачи и преимущества станут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В дальнейшем варианты осуществления раскрытия описываются более подробно со ссылкой на приложенные чертежи, на которых:
фиг. 1A - блок-схема примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления раскрытия;
фиг. 1B - блок-схема другого примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления раскрытия;
фиг. 2 блок-схема примера видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг. 3 - блок-схема примера структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления раскрытия;
фиг. 4 - блок-схема примера устройства кодирования или устройства декодирования;
фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования;
фиг. 6 (a) - (d) – примеры взаимосвязей между опорными выборками и местоположением текущего блока кодирования;
фиг. 7 (a) - (c) – дополнительные примеры взаимосвязей между опорными выборками и буфером IBC;
фиг. 8 (a) - (c) – дополнительные примеры взаимосвязей между опорными выборками и буфером IBC;
фиг. 9 (a) - (b) – дополнительные примеры взаимосвязей между векторами блоков и буфером IBC;
фиг. 10 - пример буфера IBC для CTU;
фиг. 11 - пример деления изображения на блоки CTU;
фиг. 12 - блок-схема последовательности выполнения операций способа видеокодирования, соответствующего варианту осуществления раскрытия;
фиг. 13 - блок-схема последовательности выполнения операций способа видеодекодирования, соответствующего дополнительному варианту осуществления раскрытия;
фиг. 14 - блок-схема последовательности выполнения операций способа видеокодирования, соответствующего варианту осуществления раскрытия;
фиг. 15 - блок-схема последовательности выполнения операций способа видеокодирования, соответствующего дополнительному варианту осуществления раскрытия;
фиг. 16 - блок-схема примера устройства декодирования, соответствующего варианту осуществления раскрытия;
фиг. 17 - блок-схема примера устройства кодирования, соответствующего варианту осуществления раскрытия;
фиг. 18 - блок-схема примерной структуры системы предоставления контента, реализующей услугу доставки контента;
фиг. 19 – блок-схема структуры примерного оконечного устройства.
В дальнейшем, идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не определено иное.
Подробное описание вариантов осуществления
В последующем описании ссылка делается на сопроводительные чертежи, которые составляют часть раскрытия и которые посредством иллюстрации показывают конкретные подходы вариантов осуществления раскрытия или конкретные подходы, при которых могут использоваться варианты осуществления настоящей заявки. Понятно, что варианты осуществления раскрытия могут использоваться при других подходах и содержать структурные или логические изменения, не отображенные на чертежах. Последующее подробное описание поэтому не должно рассматриваться в ограничивающем смысле и объем настоящего раскрытия определяется приложенной формулой изобретения.
Например, подразумевается, что раскрытие в связке с описанным способом может также оставаться действительным для соответствующего устройства или системы, выполненных с возможностью осуществления способа, и наоборот. Например, если описываются один или множество конкретных этапов способа, соответствующее устройство может содержать один или множество блоков, например, функциональных блоков, для выполнения описанных одного или множества этапов способа (например, один блок выполняет один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такие один или более блоков явно не описаны или не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может содержать один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполняет функциональные возможности одного или множества блоков или каждый из множества этапов выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не показаны на чертежах. Дополнительно подразумевается, что признаки различных примерных вариантов осуществления и/или подходов, описанные здесь, могут объединяться друг с другом, если конкретно не указано иное.
Видеокодирование обычно относится к обработке последовательности изображений, которые формируют видео или видеопоследовательность. Вместо термина “изображение”, как синоним в области видеокодирования может использоваться термин “кадр” или “картинка”. Видеокодирование (или, в общем, кодирование) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника сигнала, обычно содержит обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, требующихся для представления видеоизображений (для более эффективного запоминающего устройства и/или передачи). Видеодекодирование выполняется на стороне места назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к “кодированию” видеоизображений (или, в общем, картинок) должны пониматься как относящиеся к “кодированию” или “декодированию” видеоизображений или соответствующих видеопоследовательностей. Сочетание части кодирования и части декодирования также упоминается как CODEC (Coding and Decoding, кодирование и декодирование, кодек).
В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены (реконструированы), т.е. восстановленные видеоизображения имеют то же самое качество, что и исходные видеоизображения (предполагая отсутствие потерь при передаче или другой потери данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов видеокодирования принадлежат к группе “гибридных видеокодеков с потерями” (т.е. объединяют пространственное и временное предсказание в области выборок и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно делится на ряд неперекрывающихся блоков и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, т.е. кодируется на уровне блоков (видеоблоков), например, используя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для формирования блока предсказания, вычитая блок предсказания из текущего блока (блока, обрабатываемого в настоящее время/который должен обрабатываться) для получения остаточного блока, преобразуя остаточный блок и квантуя остаточный блок в области преобразования для уменьшения объема данных, который должен передаваться (сжатие), тогда как в декодере, по сравнению с кодером, к кодированному или сжатому блоку для восстановления текущего блока для презентации применяется обратная обработка. Дополнительно, кодер копирует цикл обработки декодера таким образом, что он формирует идентичные предсказания (например, внутрикадровое и межкадровое предсказание) и/или восстановления для обработки, т.е. кодирует последующие блоки.
В последующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описываются на основе фиг. 1-3.
На фиг. 1А представлена блок-схема примера системы 10 кодирования, например, системы 10 видеокодирования (или, сокращенно, системы 10 кодирования), которая может использовать технологию настоящей заявки. Видеокодер 20 (или, сокращенно, кодер 20) и видеодекодер 30 (или, сокращенно, декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью осуществления технологий в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на фиг. 1A, система 10 кодирования содержит устройство 12 источника, выполненное с возможностью предоставления кодированных данных 21 изображения, например, устройству 14 назначения для декодирования кодированных данных 13 изображения.
Устройство 12 источника содержит кодер 20 и может дополнительно, т.е. как вариант, содержать источник 16 изображения, предпроцессор (или блок предварительной обработки) 18, например, предпроцессор 18 изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть любого рода устройством получения изображения, например, камерой для получения изображения реального мира и/или своего рода устройством формирования изображения, например, процессором компьютерной графики для формирования компьютерного изображения с анимацией или любого вида другим устройством для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality, VR)), и/или любым их сочетанием (например, изображением аугментированной реальности (augmented reality, AR)). Источник изображения может быть любым видом памяти или запоминающим устройством, хранящим любое из вышеупомянутых изображений.
В отличии от предпроцессора 18 и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения могут также упоминаться как необработанное изображение или данные 17 необработанного изображения.
Предпроцессор 18 может быть выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая предпроцессором 18 может содержать, например, обрезку, преобразование цветового формата (например, из RGB в YCbCr), коррекцию цвета или снижение шумов. Следует понимать, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, основываясь на фиг. 2).
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи кодированных данных 21 изображения (или их любой дополнительно обработанной версии) по каналу 13 передачи к другому устройству, например, к устройству 14 назначения или к любому другому устройству для хранения или прямого восстановления.
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30), и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 последующей обработки) и дисплей 34.
Интерфейс 28 связи устройства 14 назначения может быть выполнен с возможностью приема кодированных данных 21 изображения (или любой их дополнительно обработанной версии), например, непосредственно от устройства 12 источника или от любого другого источника, например, запоминающего устройства, такого как запоминающее устройство кодированных данных изображения, и предоставления кодированных данных 21 изображения декодеру 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через канал прямой связи между устройством 12 источника и устройством 14 назначения, например, через прямое проводное или беспроводное соединение, или через любой вид сети, например, через проводную или беспроводную сеть, или любое их сочетание, или через любой вид частной сети и сети общего пользования или любой вид их сочетания.
Интерфейс 22 связи может быть выполнен, например, с возможностью пакетирования кодированных данных 21 изображения в соответствующий формат, например, пакеты, и/или обработки кодированных данных изображения с помощью любого вида кодирования передачи или обработки для передачи по каналу связи или по сети связи.
Интерфейс 28 связи, формирующий копию интерфейса 22 связи, может быть выполнен с возможностью, например, приема передаваемых данных и обработки данных передачи с помощью любого вида соответствующего декодирования передачи или обработки и/или распаковки для получения кодированных данных 21 изображения.
Оба интерфейса, интерфейс 22 связи и интерфейс 28 связи, могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например, посылки и приема сообщений, например, для установки соединения, подтверждения приема и обмена любой другой информацией, связанной с каналом связи и/или передачей данных, например, передачей кодированных данных изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированных данных 31 изображения (дополнительные подробности будут описаны ниже, например, основываясь на фиг. 3 или на фиг. 5). Постпроцессор 32 устройства 14 назначения может быть выполнен с возможностью последующей обработки декодированных данных 31 изображения (также называемых восстановленными данными изображения), например, декодированного изображения 31, чтобы получить прошедшие последующую обработку данные 33 изображения, например, постобработанное изображение 33. Последующая обработка, выполняемая блоком 32 последующей обработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), коррекцию цвета, обрезку или вторичную выборку или любую другую обработку, например, для подготовки декодированных данных 31 изображения к отображению, например, на дисплее 34.
Дисплей 34 устройства 14 назначения может быть выполнен с возможностью приема прошедших последующую обработку данных 33 изображения для отображения изображения, например, пользователю или наблюдателю. Дисплей 34 может быть или содержать любой вид дисплея для представления восстановленного изображения, например, быть интегрированным или внешним дисплеем или монитором. Дисплеи могут, например, быть жидкокристаллическими дисплеями (liquid crystal display, LCD), дисплеями на органических светодиодах (organic light emitting diode, OLED), плазменными дисплеями, проекторами, микросветодиодными дисплеями, жидкокристаллическими кремниевыми (liquid crystal on silicon, LCoS), цифровым световым процессором (digital light processor, DLP) или любым другим видом дисплея.
Хотя на фиг. 1A устройство 12 источника и устройство 14 назначения показаны как отдельные устройства, варианты осуществления устройств могут также содержать оба устройства или обе функциональные возможности, то есть, устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности могут быть реализованы, используя одни и те же аппаратные средства и/или программное обеспечение или отдельные аппаратные средства и/или программное обеспечение или любое их сочетание.
Как должно быть очевидно специалистам в данной области техники на основе описания, существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей внутри устройства 12 источника и/или устройства 14 назначения, как показано на фиг. 1A, может варьироваться в зависимости от реального устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или кодер 20 и декодер 30 вместе могут быть реализованы схемой обработки, как показано на фиг. 1B, например, как один или более микропроцессоров, цифровых сигнальных процессоров (digital signal processor, DSP), специализированных прикладных интегральных схем (application-specific integrated circuit, ASIC), программируемых логических интегральных схем (field-programmable gate array, FPGA), дискретная логика, аппаратные средства, специализированное видеокодирование или любые их сочетания. Кодер 20 может быть реализован посредством схемы 46 обработки для осуществления различных модулей, как обсуждается в отношении кодера 20, показанного на фиг. 2, и/или любой другой системы кодера или подсистемы, описанных здесь. Декодер 30 может быть реализован схемой 46 обработки, чтобы осуществить различные модули, как обсуждалось в отношении декодера 30, показанного на фиг. 3 и/или любой другой системы декодера или подсистемы, описанных здесь. Схема обработки может быть выполнена с возможностью осуществления различных операций, как обсуждается далее. Как показано на фиг. 5, если технологии реализуются частично в программном обеспечении, устройство может хранить команды для программного обеспечения на подходящем считываемом компьютером носителе долговременного пользования и может исполнять команды аппаратными средствами с помощью одного или более процессоров для выполнения технологий, соответствующих настоящему раскрытию. Видеокодер 20 и видеодекодер 30 могут быть интегрированы как часть объединенного кодера/декодера (CODEC) в едином устройстве, например, как показано на фиг. 1B.
Система 40 видеокодирования, показанная на фиг. 1В, содержит схему3 обработки, реализующую вместе видеокодер 20 и видеодекодер. Кроме того, одно или более устройств 41 получения изображения, таких как камера для получения изображений в реальном времени, антенна 42, одно или более запоминающих устройств 44, один или более процессоров 43 и/или дисплей 45, такой как дисплей 34, описанный выше, могут обеспечиваться как часть системы 40 видеокодирования.
Устройство 12 источника и устройство 14 назначения могут содержать любое устройство из широкого диапазона устройств, в том числе, любой вид переносных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, абонентские установки, телевизоры, дисплеи, цифровые медиаплееры, консоли видеоигр, устройства потоковой передачи видео (такие как серверы контент-услуг или серверы доставки контента), широковещательные приемники, широковещательные передатчики и т.п. и могут не использовать операционные системы или использовать операционные системы любого вида. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодирования, показанная на фиг. 1А, является просто примером и технологии настоящей заявки могут применяться к системам видеокодирования (например, видеокодирования или видеодекодирования), которые необязательно содержат какую-либо систему передачи данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются потоком через сеть и т.п. Устройство видеокодирования может кодировать и хранить данные в памяти и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не связаны друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания варианты осуществления раскрытия описываются здесь, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или со ссылкой на программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разработанный Объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) Экспертной группы ITU-T по видеокодированию (Video Coding Experts Group, VCEG) ITU-T и Экспертной группой ISO/IEC по цифровой записи видео и звука (Motion Picture Experts Group, MPEG). Любой из специалистов в данной области техники должен понимать, что варианты осуществления раскрытия не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На фиг. 2 показана блок-схема примера видеокодера 20, выполненного с возможностью реализации технологий настоящей заявки. В примере на фиг. 2 видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB), блок 260 выбора режима, блок 270 статистического кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может содержать блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 деления. Блок 244 межкадрового предсказания может содержать блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, как показано на фиг. 2, может также упоминаться как гибридный видеокодер или видеокодер, соответствующий гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие путь прямого прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут упоминаться как формирующие путь обратного прохождения сигнала видеокодера 20, где путь обратного прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (смотрите видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию “встроенного декодера” видеокодера 20.
Изображения и деление изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, изображения последовательности изображений, формирующих видео или видеопоследовательность. Принятое изображение или данные изображения могут также быть предварительно обработанным изображением 19 (или предварительно обработанными данными 19 изображения). Для упрощения, нижеследующее описание относится к изображению 17. Изображение 17 может также упоминаться как текущее изображение или изображение, подлежащее кодированию (в частности, видеокодированию для различения текущего изображения от других изображений, например, ранее кодированных и/или декодированных изображений одной и той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности. Выборка в массиве может также упоминаться как пиксель (краткая форма элемента изображения) или элемент изображения. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, т.е. изображение может быть представлено или содержать три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий красный, зеленый и синий массив выборок. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или в цветовом пространстве, например, YCbCr, который содержит компонент яркости, обозначенный Y (иногда также вместо этого используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (luminance или, сокращенно, luma) представляет уровень яркости или интенсивность уровня серого (например, при полутоновом изображении), в то время как две компоненты цветности (chrominance или, сокращенно, chroma) Cb и Cr представляют компоненты информации о цвете или цветности. Соответственно, изображение в формате YCbCr содержит массив выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут преобразовываться или трансформироваться в формат YCbCr и наоборот. Процесс также известен как преобразование или трансформация цвета. Если изображение является монохромным, изображение может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок деления изображения (не показан на фиг. 2), выполненный с возможностью деления изображения 17 на множество (обычно неперекрывающихся) блоков 203 изображения. Эти блоки могут также упоминаться как корневые блоки, макроблоки (H.264/AVC) или блоки (block) дерева кодирования (coding tree block, CTB) или блоки (unit) дерева кодирования (coding tree unit, CTU) (H.265/HEVC и VVC). Блок деления изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или поднаборами или группами изображений и деления каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема напрямую блока 203 изображения 17, например, одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения может также упоминаться как блок текущего изображения или блок изображения, подлежащий кодированию.
Подобно изображению 17, блок 203 изображения является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости luma в случае монохромного изображения 17 или массив цветности chroma в случае цветного изображения) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 17) или любое другое количество и/или виды массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, содержать массив выборок MxN (M столбцов и N строк) или массив MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть выполнены с возможностью поблочного кодирования изображения 17, например, кодирование и предсказание выполняются для каждого блока 203.
Варианты осуществления видеокодера 20, показанного на фиг. 2, дополнительно могут быть выполнены с возможностью деления и/или кодирования изображения, используя вырезки (также называемые видеовырезками), где изображение может быть разделено на части или кодировано, используя одну или более вырезок (обычно неперекрывающихся), и каждая вырезка может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанного на фиг. 2, могут дополнительно быть выполнены с возможностью деления и/или кодирования изображения, используя мозаичные группы (также называемые группами видеомозаик) и/или мозаики (также называемые видеомозаиками), в которых изображение может быть разделяться или кодироваться, используя одну или более (обычно неперекрывающихся) групп мозаик, и каждая группа мозаик может содержать один или более блоков (например, CTU) или одну или более мозаик, где каждая мозаика может иметь, например, прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205), основываясь на блоке 203 изображения и блоке 265 предсказания (более подробная информация о блоке 265 предсказания представлена ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения повыборочно (попиксельно) для получения остаточного блока 205 в области выборок.
Преобразование
Блок 206 преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусного преобразования (discrete sine transform, DST), к значениям выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также упоминаться как остаточные коэффициенты преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным DCT-преобразованием, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, которая обрабатывается прямыми и обратными преобразованиями, дополнительные масштабные коэффициенты применяются как часть процесса преобразования. Масштабные коэффициенты обычно выбираются на основе некоторых ограничений, таких как масштабные коэффициенты, являющиеся степенью два для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные масштабные коэффициенты определяются, например, для обратного преобразования, например, блоком 212 обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обратного преобразования в видеодекодере 30), и соответствующие масштабные коэффициенты для прямого преобразования, например, блоком 206 преобразования в кодере 20, могут быть соответственно определены.
Варианты осуществления видеокодера 20 (соответственно, блока 206 преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, напрямую или кодированными или сжатыми через блок 270 статистического кодирования, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или со всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования во время квантования может округляться в меньшую сторону до m-битового коэффициента преобразования, где n больше, чем m. Степень квантования может модифицироваться, регулируя параметр квантования (quantization parameter, QP). Например, для скалярного квантования может применяться различное масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шага квантования соответствуют более тонкому квантованию, тогда как большие размеры шага квантования соответствуют более грубому квантованию. Применяемый размер шага квантования может указываться параметром квантования (quantization parameter, QP). Параметр квантования может быть, например, индексом заданного набора применяемых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать тонкому квантованию (малые размеры шага квантования), а большие параметры квантования могут соответствовать крупному грубому (большие размеры шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может содержать умножение на размер шага квантования. Варианты осуществления, соответствующие некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен, основываясь на параметре квантования с помощью аппроксимации с фиксированной точкой уравнения, содержащего деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстанавливать норму остаточного блока, которая может модифицироваться благодаря масштабированию, используемому при аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. Альтернативно, специализированные таблицы квантования могут использоваться и сообщаться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, где потери увеличиваются с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, непосредственно или кодированными через блок 270 статистического кодирования, так, чтобы, например, видеодекодер 30 мог принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к коэффициентам квантования для получения деквантованных коэффициентов 211, например, применяя инверсию схемы квантования, применяемой блоком 208 квантования, на основе или используя тот же самый размер шага квантования, что и блок 208 квантования.
Коэффициенты 211 деквантования могут также упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно они не идентичны коэффициентам преобразования из-за потерь на квантование – коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обратного преобразования выполнен с возможностью применения обратного преобразования для преобразования, применяемого блоком 206 преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусного преобразования (inverse discrete sine transform, DST), или другого обратного преобразования для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 может также упоминаться, как блок 213 преобразования.
Восстановление
Блок 214 восстановления (например, устройство сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т.е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например, путем сложения – выборка с выборкой – значений выборки восстановленного остаточного блока 213 со значениями выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или, сокращенно, “контурный фильтр” 220), выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в целом, отфильтровать восстановленные выборки для получения отфильтрованных выборок. Блок контурного фильтра может быть, например, выполнен с возможностью сглаживания пиксельных переходов или какого-либо иного улучшения качества видео. Блок 220 контурного фильтра 320 может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного к выборкам смещения (sample-adaptive offset, SAO) или один или более других фильтров, например, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр подавления шумов (noise suppression filter, NSF) или любое их сочетание. Хотя блок 220 контурного фильтра на фиг. 2 показан как находящийся в контурном фильтре, в других конфигурациях блок 220 контурного фильтра может быть реализован как контурный фильтр последующей обработки. Фильтрованный блок 221 может также упоминаться, как отфильтрованный восстановленный блок 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, непосредственно или кодированными посредством блока 270 статистического кодирования, так чтобы, например, декодер 30 мог принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированного изображения
Буфер 230 декодированного изображения (decoded picture buffer, DPB) 230 может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений, для кодирования видеоданных видеокодером 20. DPB 230 может быть образован любым из множества запоминающих устройств, таким как динамическая оперативная память (dynamic random access memory, DRAM), в том числе, синхронная DRAM (SDRAM), магнитостойкая RAM (MRAM), резистивная RAM (RRAM) или другие типы устройств памяти. Буфер 230 декодирования изображения (DPB) 230 может быть выполнен с возможностью хранения одного или более отфильтрованных блоков 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221 одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может обеспечивать полностью ранее восстановленные, т.е. декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированного изображения (DPB) может быть также выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (деление и предсказание)
Блок 260 выбора режима содержит блок 262 деления, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, исходного блока 203 (текущего блока 203 текущего изображения 17) и восстановленных данных изображения, например, отфильтрованных и/или нефильтрованных восстановленных выборок или блоков одного и того же (текущего) изображения и/или из одного или более ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строчного буфера, который не показан). Восстановленные данные изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора деления для режима предсказания текущего блока (в том числе, отсутствия деления) и режима предсказания (например, режима внутрикадрового или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора режима деления и предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее согласование, или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения) или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или которые рассматривают или балансируют то и другое. Блок 260 выбора режима может быть выполнен с возможностью определения режима деления и предсказания, основываясь на оптимизации соотношения "искажение-скорость" (rate distortion optimization, RDO), т.е. выбора режима предсказания, который обеспечивает минимальное соотношение "искажение-скорость". Термины “наилучший”, “минимальный”, “оптимальный” и т.д. в этом контексте не обязательно относятся к общему пониманию “наилучшего”, “минимального”, “оптимального” и т.д., а могут также относиться к выполнению критерия завершения или выбора, такому как значения превышения порога или падения ниже порога или другие ограничения, потенциально ведущие к “субоптимальному выбору”, но уменьшающие сложность и время обработки.
Другими словами, блок 262 деления может быть выполнен с возможностью деления блока 203 на блоки меньшего размера или субблоки (которые снова образуют блоки), например, многократно используя деление квадродерева (quad-tree-partitioning, QT), деление двоичного дерева (binary-tree partitioning, BT) или деление троичного дерева (triple-tree-partitioning, TT) или любое их сочетание, и выполнения предсказания для каждой из частей блока или для каждого субблока, где выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимы предсказания применяются к каждой из частей блока или к субблоку.
В дальнейшем, процесс деления (например, посредством блока 262 деления) и предсказания (посредством блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемый, например, видеокодером 20, будет объяснен более подробно.
Деление на части
Блок 262 деления может делить или разбивать текущий блок 203 на части меньшего размера, например, более мелкие блоки квадратной или прямоугольной формы. Эти более мелкие блоки (который могут также упоминаться как субблоки) могут дополнительно разделяться на еще более мелкие части. Это также упоминается как древовидное деление или иерархическое древовидное деление, где, например, корневой блок 0 (иерархический уровень 0, глубина 0) может рекурсивно разделяться, например, разделяться на два или более блоков следующего, более низкого уровня дерева, например, узлы на уровне 1 дерева (иерархический уровень 1, глубина 1), где эти блоки могут быть снова разделены в два или более блоков следующего, более низкого уровня, например, уровня 2 дерева (иерархический уровень 2, глубина 2), и т.д., пока деление не закончится, например, потому что выполнен критерий завершения, например, достигнуты максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не делятся, также упоминаются как листовые блоки или вершины дерева. Деление с использованием дерева на две части упоминается как двоичное дерево (binary-tree, BT), деление с использованием дерева на три части упоминается как троичное дерево (ternary-tree, TT) и деление с использованием дерева на четыре части упоминается как квадродерево (quad-tree, QT).
Как упоминалось выше, термин "блок", как он используется здесь, может быть частью, в частности, квадратной или прямоугольной частью изображения. Со ссылкой, например, на HEVC и VVC, блок может быть или соответствовать блоку дерева кодирования (coding tree unit, CTU), блоку кодирования (coding unit, CU), блоку предсказания (prediction unit, PU) или блоку преобразования (transform unit, TU) и/или соответствующим блокам, например, блоку дерева кодирования (coding tree block, CTB), блоку кодирования (coding block, CB), блоку преобразования (transform block, TB) или блоку предсказания (prediction block, PB).
Например, блок дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CТВ выборок цветности изображения, которое имеет три массива выборок или CTB выборок монохромного изображения или изображения, которое кодируется, используя три отдельные цветовые плоскости и структуры синтаксиса, используемые для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком выборок размером NxN для некоторого значения N, так что разделение компонента на блоки CTB является делением на части. Блок кодирования (coding unit, CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок кодирования (coding block, CB) может быть блоком выборок размером MxN для некоторых значений M и N, так что разделение CTB на блоки кодирования является делением на части.
В некоторых вариантах осуществления, например, соответствующих HEVC, блок дерева кодирования (CTU) может быть разбит на блоки CU, используя структуру квадродерева, обозначенную как дерево кодирования. Решение, кодировать ли область изображения, используя межкадровое (временное) или внутрикадровое (пространственное) предсказание, принимается на уровне CU. Каждый CU может быть дополнительно разбит на один, два или четыре блока PU, соответствующих типу разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания и соответствующая информация передается декодеру на основе PU. После получения остаточного блока, применяя процесс предсказания на основе типа разбиения PU, CU может быть разделен на блоки преобразования (transform unit, TU) согласно другой структуре квадродерева, подобной дереву кодирования для CU.
В вариантах осуществлениях, например, в соответствии с последним стандартом видеокодирования, который в настоящее время находится в разработке, который упоминается как универсальное видеокодирование (Versatile Video Coding, VVC), объединенное разделение с использованием квадродерева и двоичного дерева (combined quad-tree and binary-tree, QTBT) используется, например, для деления блока кодирования. В структуре блока QTBT дерева кодирования CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала делится посредством структуры квадродерева. Узлы квадродерева дополнительно делятся с помощью структуры двоичного дерева или троичного дерева. Узлы дерева при делении называются блоками кодирования (coding unit, CU) и такое деление используется для процесса предсказания и преобразования без какого-либо дополнительного деления. Это означает, что CU, PU и TU имеют один и тот же размер блока в структуре блоков кодирования QTBT. Параллельно, многочисленные части, например, части троичного дерева, могут использоваться вместе со структурой блока QTBT.
В одном примере, блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания описанных здесь технологий деления.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенного) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, таких как ненаправленные режимы, подобные режиму DC (или среднему) и планарному режиму, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, подобные режиму DC (или среднему) и планарному режиму, или направленные режимы, например, как определено для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания, соответствующего режиму внутрикадрового предсказания, из набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, вообще говоря, блок 260 выбора режима) может дополнительно быть выполнен с возможностью вывода параметров внутрикадрового предсказания (или, вообще говоря, информации, указывающей выбранный режим внутрикадрового предсказания для блока) на блок 270 статистического кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированного изображения, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор режимов (или возможных режимов) межкадрового предсказания зависит от доступных опорных изображений (т.е. от предыдущих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров межкадрового предсказания, например, используется ли опорное изображение полностью или только частично, например, область окна поиска вокруг области текущего блока опорного изображения, для поиска наилучшего совпадающего опорного блока и/или например, применяется ли пиксельная интерполяция, например, половинная/полуэлементная, четвертьэлементная и/или 1/16-тиэлементная интерполяция.
Дополнительно к упомянутым выше режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 межкадрового предсказания может содержать блок оценки движения (motion estimation, ME) и блок компенсации движения (motion compensation, MC) (оба не показаны в фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блок 203 текущего изображения для текущего изображения 17) и декодированного изображение 231 или по меньшей мере одного или более ранее восстановленных блоков, таких как восстановленные блоки из числа одного или более ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества ранее декодированных изображений и предоставления блоку оценки движения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (с координатами x, y) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания. Это смещение также называют вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получения, например, приема параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или используя параметр межкадрового предсказания для получения блока 265 межкадрового предсказания.
Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или формирование блока предсказания, основываясь на векторе движения/блока, определенном оценкой движения, возможно выполняя интерполяции до субпиксельной точности. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая количество возможных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущего изображения, блок компенсации движения может определить местоположение блока предсказания, на который направлен вектор движения в одном из перечней опорных изображений.
Блок компенсации движения может также формировать элементы синтаксиса, связанные с блоками и видеовырезками для использования видеодекодером 30 при декодировании блоков изображения видеовырезки. Кроме того или как альтернатива вырезкам и соответствующим элементам синтаксиса, могут быть сформированы или использованы мозаичные группы и/или мозаики и соответствующие элементы синтаксиса.
Статистическое кодирование
Блок 270 статистического кодирования выполнен с возможностью применения, например, алгоритма или схемы статистического кодирования (например, схемы кодирования с переменной длиной слова (variable length coding, VLC), контекстной адаптивной схемы VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, бинаризации, контекстного адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (syntax-based context-adaptive binary arithmetic coding, SBAC), статистического кодирования с разделением интервала вероятности (probability interval partitioning entropy, PIPE) или другой методологии или технологии статистического кодирования) или обхода (без сжатия) на квантованных коэффициентах 209, параметрах межкадрового предсказания, параметрах внутрикадрового предсказания, параметрах контурного фильтра и/или других элементах синтаксиса для получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного битового потока 21, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан видеодекодеру 30 или быть запомнен в памяти для передачи в дальнейшем или извлечения видеодекодером 30.
Для кодирования видеопотока могут использоваться и другие структурные изменения видеокодера 20. Например, кодер 20, основанный на отсутствии преобразования, может квантовать остаточный сигнал напрямую, без блока 206 преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На фиг. 3 показан пример видеодекодера 30, выполненного с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например, кодированного кодером 20 для получения декодированного изображения 331. Кодированные данные изображения или битовый поток содержат информацию для декодирования кодированных данных изображения, например, данных, которые представляют блоки изображения кодированной видеовырезки (и/или мозаичной группы или мозаики) и связанные с ними элементы синтаксиса.
Как было объяснено со ссылкой на кодер 20, блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также упоминаются как формирующие “встроенный декодер” видеокодера 20. Соответственно, блок 310 обратного квантования может быть функционально идентичен блоку 210 обратного квантования, блок 312 обратного преобразования может быть функционально идентичен блоку 212 обратного преобразования, блок 314 восстановления может быть функционально идентичен блоку 214 восстановления, контурный фильтр 320 может быть функционально идентичен контурному фильтру 220, и буфер 330 декодированного изображения может быть функционально идентичен буферу 230 декодированного изображения. Поэтому объяснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются должным образом к соответствующим блокам и функциям видеодекодера 30.
Статистическое декодирование
Блок 304 статистического декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, вообще говоря, данных 21 кодированного изображения) и выполнения, например, статистического декодирования данных 21 кодированного изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования 366, таких как любые или все параметры межкадрового предсказания (например, индекс опорного изображения и вектор движения), параметры внутрикадрового предсказания (например, режим внутрикадрового предсказания или индекс), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 статистического декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, описанным со ссылкой на блок 270 статистического кодирования кодера 20. Блок 304 статистического декодирования может быть дополнительно выполнен с возможностью представления блоку 360 применения режима параметров межкадрового предсказания, параметров внутрикадрового предсказания и/или других элементов синтаксиса в блоке 360 применения режимов, а также других параметров в других блоках декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеовырезки и/или на уровне видеоблока. Кроме того, или как альтернатива вырезкам и соответствующим элементам синтаксиса, могут приниматься и/или использоваться мозаичные группы и/или мозаики и соответствующие элементы синтаксиса.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (quantization parameter, QP) (или, вообще говоря, информации, связанной с обратным квантованием) и квантованных коэффициентов из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) и применения, основываясь на параметрах квантования, обратного квантования на декодированных квантованных коэффициентах 309 для получения деквантованных коэффициентов 311, которые могут также упоминаться, как коэффициенты 311 преобразования. Процесс обратного квантования может содержать использование параметра квантования, определенных видеокодером 20 для каждого видеоблока в видеовырезке (или мозаике или мозаичной группе) для определения степени квантования и, аналогично, степени обратного квантования, которая должна применяться.
Обратное преобразование
Блок 312 обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также упоминаемых как коэффициенты 311 трансформации, и применения преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборок. Восстановленные остаточные блоки 313 могут также упоминаться как блоки 313 трансформации. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально подобным процессом обратного преобразования. Блок 312 обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, устройство сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания для получения восстановленного блока 315 в области выборок, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (в цикле кодирования или после цикла кодирования) выполнен с возможностью фильтрации восстановленного блока 315, чтобы получить отфильтрованный блок 321, например, для сглаживания пиксельные переходов или какого-либо иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного к выборкам смещения (sample-adaptive offset, SAO) или один или более других фильтров, например, адаптивный контурный фильтр (adaptive loop filter, ALF), повышающий резкость, сглаживающий фильтр или фильтр совместного действия или любое их сочетание. Хотя блок 320 контурного фильтра на фиг. 3 показан как находящийся в контурном фильтре, в других конфигурациях блок 320 контурного фильтра может быть реализован как контурный фильтр последующей обработки.
Буфер декодированного изображения
Декодированные видеоблоки 321 изображения затем запоминаются в буфере 330 декодированного изображения, который хранит декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения в других изображениях и/или для вывода или, соответственно, для отображения.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через выход 312, для представления или просмотра пользователем.
Предсказание
Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), и блок 354 внутрикадрового предсказания может быть идентичен блоку 254 внутрикадрового предсказания функционально и выполняет решения о разбиении или делении и предсказании, основываясь на параметрах деления и/или предсказания или на соответствующей информации, полученной из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеовырезка кодируется как внутрикадрово кодированная (I) вырезка, блок 354 внутрикадрового предсказания блока 360 применения режима конфигурируется, чтобы сформировать блок 365 предсказания для блока изображения текущей видеовырезки, основываясь на сообщенном режиме внутрикадрового предсказания и данных ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как межкадрово кодированная (т.е. B или P) вырезка, блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущей видеовырезки, основываясь на векторах движения и других элементах синтаксиса, полученных от блока 304 статистического декодирования. Видеодекодер 30 может создавать перечни опорных изображений, List 0 и List 1, используя технологии построения, основанные на опорных изображениях, хранящихся в DPB 330. Тот же самый или аналогичный подход может использоваться для вариантов осуществления или вариантами осуществления, используя мозаичные группы (например, мозаичные видеогруппы) и/или мозаики (например, видеомозаики) дополнительно или альтернативно вырезкам (например, видеовырезкам), например, видео может быть кодировано с помощью мозаичных групп I, P или B и/или мозаик.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущей видеовырезки путем синтаксического анализа векторов движения или сопутствующей информации и других элементов синтаксиса и использует информацию предсказания для создания блоков предсказания для текущего видеоблока, подлежащего декодированию. Например, блок 360 применения режима использования использует некоторые из полученных элементов синтаксиса, чтобы определить режим предсказания (например, внутрикадровый или межкадровый), используемый для кодирования видеоблоков видеовырезки, типа вырезки межкадрового предсказания (например, вырезка B, вырезка P или вырезка GPB), информации о построении одного или более перечней опорных изображений для вырезки, векторов движения для каждого межкадрово кодированного видеоблока вырезки и другой информации для декодирования видеоблоков в текущей видеовырезке. Тот же самый или аналогичный подход можно использовать для вариантов осуществления или посредством вариантов осуществления, используя мозаичные группы (например, мозаичные видеогруппы) и/или мозаики (например, видеомозаики) в добавление или альтернативно к вырезкам (например, видеовырезкам), например, видео может быть кодироваться с помощью мозаичных групп I, P или B и/или мозаик.
Варианты осуществления видеокодера 30, показанного на фиг. 3, дополнительно могут быть выполнены с возможностью деления и/или кодирования изображения, используя вырезки (также называемые видеовырезками), где изображение может быть разделено на части или декодировано, используя одну или более вырезок (обычно неперекрывающихся), и каждая вырезка может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 30, показанного на фиг. 3, могут дополнительно быть выполнены с возможностью деления и/или кодирования изображения, используя мозаичные группы (также называемые группами видеомозаик) и/или мозаики (также называемые видеомозаиками), в которых изображение может быть разделяться или декодироваться, используя одну или более (обычно неперекрывающихся) мозаичных групп, и каждая мозаичная группа может содержать один или более блоков (например, CTU) или одну или более мозаик, где каждая мозаика может иметь, например, прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может обратно квантовать остаточный сигнал напрямую, без блока 312 обратного преобразования, для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обратного преобразования, объединенные в единый блок.
Следует понимать, что в кодере 20 и декодере 30, результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после фильтрации интерполяции, получения вектора движения или контурной фильтрации следующая операция, такая как Clip или сдвиг, может выполняться для результата процесса фильтрации интерполяции, получения вектора движения или контурной фильтрации.
Следует заметить, что дальнейшие операции могут применяться к полученным векторам движения текущего блока (в том числе, но не ограничиваясь только этим, к векторам движения точки управления аффинного режима, векторами движения субблока в аффинном, планарном, ATMVP режимах, к временным векторам движения и так далее). Например, значение вектора движения ограничивается заданным диапазоном, соответствующим представляющему его количеству битов. Если представляющее количество битов вектора движения равно bitDepth, то диапазон равен -2^(bitDepth - 1) ~ 2^(bitDepth -1)-1, где “^” означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон равен -32768 ~ 32767; если bitDepth установлена равной 18, диапазон равен -131072~131071. Например, значение полученного вектора движения (например, MV для четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, что максимальная разность между целочисленными частями четырех субблоков MV 4x4 не превышает N пикселей, например, не более 1 пикселя. В последующем описании предоставлены два способа ограничения вектора движения, соответствующего bitDepth.
Способ 1: удалить MSB (most significant bit, старший значащий бит) переполнения посредством следующих операций:
ux= ( mvx+2bitDepth ) % 2bitDepth … (1)
mvx = ( ux >= 2bitDepth-1 ) ? mvx = ( ux >= 2bitDepth-1 ) ? ux … (2)
ux= ( mvx+2bitDepth ) % 2bitDepth … (3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (4)
где mvx - горизонтальная составляющая вектора движения блока или субблока изображения, mvy - вертикальная составляющая вектора движения блока или субблока вектора, и ux и uy - соответствующие промежуточные значения.
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равно 32767. В компьютерной системе десятичные числа сохраняются как двоичные компоненты. Двоичным компонентом -32769 является 1,0111,1111,1111,1111 (17 битов). Затем MSB отбрасывается, так что результирующим двоичным компонентом является 0111,1111,1111,1111 (десятичное число 32767), который является таким же, как выходной результат применения формул (1) и (2).
ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth … (5)
mvx = ( ux >= 2bitDepth-1 ) ? mvx = ( ux >= 2bitDepth-1 ) ? ux … (6)
uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth … (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy … (8)
Операции могут применяться во время суммирования предиктора mvp вектора движения и разности mvd векторов движения, как показывают формулы (5)-(8).
Способ 2: удалить MSB переполнения, ограничивая значение:
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx - горизонтальная составляющая вектора движения блока или субблока изображения, vy - вертикальная составляющая вектора движения блока или субблока изображения, x, y и z - соответственно, три входных значения процесса MV ограничения и определение функции Clip3 проводится следующим образом:
На фиг. 4 схематично показано устройство 400 видеокодирования, соответствующее варианту осуществления раскрытия. Устройство 400 видеокодирования, как описано здесь, пригодно для реализации раскрытых вариантов осуществления. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30, показанный на фиг. 1A, или кодером, таким как видеокодер 20, показанный на фиг. 1A.
Устройство 400 видеокодирования содержит порты 410 ввода (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (central processing unit, CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и порты 450 вывода (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать оптоэлектрические (optical-to-electrical, OE) компоненты и электрооптические (electrical-to-optical, EO) компоненты, связанные с входными портами 410, блоками 420 приемника, блоками 440 передатчика 440 и выходными портами 450 для ввода или вывода оптических или электрических сигналов.
Процессор 430 реализуется аппаратными средствами и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 осуществляет связь с входными портами 410, приемными блоками 420, передающими блоками 440, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует описанные выше и ниже варианты осуществления. Например, модуль 470 кодирования может реализовать обработать, подготовить или обеспечить различные операции кодирования. Введение в состав модуля 470 кодирования поэтому обеспечивает существенное улучшение функциональности устройства 400 видеокодирования и производит преобразование устройства 400 видеокодирования в другое состояние. Альтернативно, модуль 470 кодирования реализуется как команды, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных дисков и может использоваться в качестве устройства хранения данных переполнения, чтобы хранить программы, когда такие программы выбраны для исполнения, и сохранять команды и данные, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (read-only memory, ROM), оперативной памятью (random access memory, RAM), троичной ассоциативной памятью (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (static random-access memory, SRAM).
На фиг. 5 показана упрощенная блок-схема устройства 500, которое может использоваться в качестве устройства 12 источника и устройства 14 назначения или того и другого, показанных на фиг. 1А, в соответствии с примером варианта осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть любым другим типом устройства или многочисленными устройствами, способными управлять или обрабатывать информацию, существующую на текущий момент или полученную в дальнейшем. Хотя раскрытые реализации могут быть осуществлены с помощью единого процессора как показано на чертеже, например, процессора 502, с помощью нескольких процессоров могут быть достигнуты преимущества по скорости и эффективности.
Память 504 в устройстве 500 при реализации может быть устройством постоянной памяти (ROM) или устройством оперативной памяти (RAM). В качестве памяти 504 может быть использован любой другой приемлемый тип запоминающего устройства. Память 504 может содержать код и данные 506, к которым процессор 502 получает доступ, используя шину 512. Память 504 может дополнительно содержать операционную систему 508 и прикладные программы 510, причем прикладные программы 510 содержат по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут содержать приложения 1-N, которые дополнительно содержат приложение видеокодирования, выполняющее описанные здесь способы.
Устройство 500 может также содержать одно или более устройств вывода, таких как дисплей 518. Дисплей 518 в одном примере может быть сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, который дает возможность воспринимать сенсорные входные данные. Дисплей 518 может быть связан с процессором 502 через шину 512.
Хотя на чертеже шина изображена как единственная, шина 512 устройства 500 может состоять из нескольких шин. Дополнительно, внешняя память 514 может быть напрямую связана с другими компонентами устройства 500 или может быть доступна через сеть и может содержать единый интегрированный блок, такой как карта памяти или многочисленные блоки, такие как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано с большим разнообразием конфигураций.
Режим копии блока с внутрикадровым кодированием (intra block copy, IBC), also называемый режимом ссылки текущего изображения (Current Picture Referencing, CPR), является инструментом, адаптированным в расширениях HEVC для кодирования содержания экрана (Screen Content Coding, SCC). Хорошо известно, что IBC значительно повышает эффективность кодирования материалов содержания экрана. Поскольку режим IBC реализуется как режим кодирования на уровне блоков, в кодере выполняется согласование блоков (block matching, BM), чтобы найти оптимальный вектор блока (также называемый вектором движения) для каждого CU. Здесь вектор движения используется для индикации перемещения от текущего блока к опорному блоку, который уже восстановлен в текущем изображении. Вектор движения для яркости блока CU с IBC-кодированием обладает целочисленной точностью. Вектор движения цветности также ограничивается до целочисленной точности. При объединении с адаптивным разрешением вектора движения (adaptive motion vector resolution, AMVR), режим IBC может переключаться однопиксельной и четырехпиксельной точностями вектора движения. CU с IBC-кодированием может обрабатываться как третий режим точности, отличный от режима внутрикадрового предсказания или межкадрового предсказания.
Для сокращения использования памяти и уменьшения сложности декодера, IBC в режиме VVC Test Model 4 (VTM4) позволяет использовать только восстановленную часть заданной области, включая текущий CTU. Это ограничение позволяет реализовывать режим IBC, используя локальную внутрикристальную память для реализации аппаратных средств.
На стороне кодера для IBC выполняется оценка движения на основе хэширования. Кодер выполняет проверки соотношения "скорость-искажения" (rate distortion, RD) для блоков, ширина или высота которых не больше 16 выборок яркости. Для режима отсутствия слияния поиск вектора блока выполняется, сначала используя поиск на основе хэширования. Если поиск на основе хэширования не приводит к действительному кандидату, будет выполняться локальный поиск, основанный на совпадении блоков.
На уровне CU режим IBC сообщается с помощью флага и флаг может сообщаться как режим IBC Advanced Motion Vector Prediction (AMVP) или режим пропуска/слияния IBC следующим образом:
Режим пропуска/слияния IBC: индекс кандидата на слияние, который используется для индикации вектора блока в перечне из соседних кодированных блоков кандидатов IBC, в котором вектор блока используется для предсказания текущего блока. Перечень кандидатов на слияние содержит пространственных кандидатов, кандидатов предсказания вектора движения, основываясь на архивных данных (History-based Motion Vector Prediction, HMVP), и спаренных кандидатов.
Режим IBC AMVP: разность блоков кодируется таким же образом, как разность векторов движения. Способ предсказания вектора блока использует двух кандидатов в качестве предикторов, одного - из левого соседнего блока, и другого - из верхнего соседнего блока (если режим IBC используется для кодирования соседнего блока). Когда соседний блок недоступен, в качестве предиктора используется вектор блока по умолчанию. Флаг сообщается, чтобы указать индекс предиктора вектора блока.
В проекте 4.0 VVC диапазон поиска вектора блока IBC оптимизируется путем адаптации JVET-M0407, который можно найти по ссылке http://phenix.it-sudparis.eu/jvet/index.php.
В JVET-M0407 не разрешается, чтобы размер блока IBC был больше, чем 64x64 выборок яркости.
Способ, описанный ниже, использует буфер опорной памяти более эффективно, так что диапазон эффективного поиска для IBC может выходить за пределы текущего CTU.
Это означает, что как только любой из блоков 64х64 в опорном буфере памяти начнет обновлять текущий CTU восстановленными выборками, ранее сохраненные опорные выборки (из левого CTU) во всем блоке 64х64 становятся недоступными для цели ссылки IBC.
Поскольку каждый из 64х64 блоков в опорном буфере памяти рассматривается как единое целое, когда часть блока 64х64 была обновлена восстановленными выборками из текущего CTU, опорные выборки из левого CTU в этом блоке 64х64 не могут более использоваться.
Более конкретно, в зависимости от местоположения текущего блока кодирования относительно текущего CTU, применяется нижеследующее:
• Если текущий блок предсказывается, используя режим IBC и текущий блок попадает в верхний-левый блок 64х64 текущего CTU, то тогда, в дополнение к уже восстановленным выборкам в текущем CTU, текущий блок может также обращаться к опорным выборкам в нижнем-правом блоке 64x64 левого CTU. Дополнительно, текущий блок может обращаться к опорным выборкам в нижнем-левом блоке 64x64 левого CTU и обращаться к опорным выборкам в верхнем-правом блоке 64x64 левого CTU (как показано на фиг. 6a).
• Если текущий блок предсказывается, используя режим IBC, и текущий блок попадает в верхний-правый блок 64х64 текущего CTU, то тогда, в дополнение к уже восстановленным выборкам в текущем CTU, если выборки яркости в местоположении (0, 64) относительно текущего CTU еще не были восстановлены, текущий блок может также обращаться к опорным выборкам в нижнем-левом блоке 64x64 и обращаться к опорным выборкам в нижнем-правом блоке 64х64 левого CTU (как показано на фиг. 6b). Если выборки яркости в местоположении (0, 64) относительно текущего CTU были уже восстановлены, текущий блок может обращаться к опорным выборкам в нижнем-правом блоке 64х64 левого CTU, но не в нижнем левом блоке 64х64 левого CTU.
• Если текущий блок предсказывается, используя режим IBC, и текущий блок попадает в нижний-левый блок 64х64 текущего CTU, то тогда, в дополнение к уже восстановленным выборкам в текущем CTU, если выборки яркости в местоположении (64, 0) относительно текущего CTU еще не были восстановлены, текущий блок может обращаться к опорным выборкам в верхнем-правом блоке 64x64 и обращаться к опорным выборкам в нижнем-правом блоке 64х64 левого CTU, используя режим IBC. Если выборки яркости в местоположении (64, 0) относительно текущего CTU были уже восстановлены, текущий блок может обращаться к опорным выборкам в нижнем-правом блоке 64х64 левого CTU (как показано на фиг. 6с).
• Если текущий блок предсказывается, используя режим IBC, и текущий блок попадает в нижний-правый блок 64х64 текущего CTU, то тогда текущий блок может обращаться только к уже восстановленным выборкам в текущем CTU (как показано на фиг. 6d).
Битовый поток является рядом из одной или более кодированных видеопоследовательностей. Чтобы битовый поток соответствовал техническим требованиям VVC, должны выполняться требования и рекомендации, содержащиеся в технических требованиях VVC. Должны удовлетворяться требования синтаксиса. Данные, которые не соответствуют техническим требованиям VVC, могут просто отбрасываться декодерами; стандарт не указывает, что должен делать декодер, если встречаются такие данные. Несоответствующие данные могут быть результатом проблем в системе связи, таких как потери некоторых из пакетов данных, которые содержат данные битового потока. Декодер может или не может пытаться продолжать декодирование, когда встречаются неподтвержденные данные. Тем не менее, выходной сигнал кодера VVC всегда должен удовлетворять техническим требованиям VVC.
Например, в проекте 5.0 технических требований VVC (JVET-N1001) вектор блока (0, 0) для предсказанных блоков IBC является недействительным, как определено в технических требованиях VVC. Декодер VVC требует подтвердить, что битовый поток не содержит вектор блока (0, 0) предсказанного блока IBC.
В проекте 5.0 VVC буфер опорной памяти IBC объединяется с буфером декодера. Чтобы уменьшить размер конвейерной памяти аппаратных средств для опорных выборок IBC, разрабатывается вышеупомянутый буфер опорной памяти с вариантами размеров (JVET-M0407). В проекте буфера с вариантами размеров необходимо множество согласований битового потока. Декодер VVC проверяет, является ли принятый битовый поток действительным битовым потоком VVC, пригодным для декодирования. Эта проверка обычно называется проверкой пригодности битового потока. Для уменьшения количества подтверждений битового потока в JVET-N0472 выделенный опорный буфер памяти разрабатывается вместо совместного опорного буфера памяти IBC и буфера декодирования
Для CTU 128x128 выделенный буфер IBC определяется как 128x128. Когда был декодирован CU (x, y) с размерами WxH, восстановленные выборки в CU записываются в область блока WxH, начиная с позиции (x%128, y%128), перед контурной фильтрацией. Здесь оператор % по модулю всегда дает в результате положительное число, то есть, для x<0, x%L L - ( -x%L), e.g. -3%128=125. Этот процесс записывает восстановленные выборки в выделенный буфер IBC, который используется для дальнейшей ссылки.
Когда блок предсказывается, используя режим IBC, ссылка предсказанной выборки делает выборку из выделенной памяти IBC. Допустим, что выборка (x,y) (или также называемая пикселем (x,y)) кодируется в режиме IBC с вектором блока BV=(BVx, BVy), пиксельная выборка предсказания в буфере ссылки IBC располагается в ((x+BVx)%128, (y+BVy)%128).
Когда буфер рассматривается как область с шириной, равной W, и высотой, равной H, после декодирования CTU или CU, начинающегося с (x, y), восстановленные пиксели будут храниться перед контурной фильтрацией в буфере, начиная с (x%W, y%H). Таким образом, после декодирования CTU, соответствующий опорный буфер IBC будет соответственно обновляться. Такая настройка может также возникать, когда размер CTU не равен 128х128. Например, для CTU 64x64 с текущим размером буфера опорный буфер IBC может рассматриваться как буфер 256x64.
На фиг. 7а показаны текущий CTU, текущий CU и левый CTU. На фиг. 7b показан выделенный буфер IBC перед декодированием текущего блока текущего CU. И на фиг. 7с показан текущий буфер IBC после того, как декодируется текущий блок.
По сравнению с буфером IBC переменного размера, используемым в проекте 5.0 VVC, разработанный согласно JVET-N0472 выделенный буфер IBC уменьшил количество ограничений согласования битового потока. Однако, проект все еще страдает недостатками. Однако здесь существуют некоторые недостатки. Например, согласование битового потока все еще нуждается в проверке действительности вектора блока. Дополнительно, выделенный опорный буфер IBC увеличивает размер конвейерной памяти аппаратных средств.
В соответствии с настоящим раскрытием, обеспечиваются нижеследующие варианты осуществления, чтобы решить упомянутые выше проблемы.
Вариант 1 осуществления:
В соответствии с построением опорных выборок IBC, которое раскрывается в проекте 5 VVC, для проверок действительности векторов блоков IBC требуется следующее подтверждение соответствия требованиям битового потока.
Для случая блоков яркости или одиночного дерева:
Должны быть доступны опорные выборки.
Опорные выборки должны быть из одной и той же строки CTU.
Опорные выборки должны быть из текущего CTU или из левого CTU текущего CTU.
Опорные выборки должны находиться в определенной области ссылок IBC, как показано на фиг. 6.
Эти ограничения согласования описаны в главе 8.6.2.1 JVET-N1001, которую можно найти по ссылке http://phenix.it-sudparis.eu/jvet/index.php в следующем виде:
Требование соответствия битового потока состоит в том, что вектор bvL движения яркости должен подчиняться следующим ограничениям:
Когда процесс получения доступности блока таков, как указано в статье 6.4.X [Ed. (BB): процесс tbd] проверки доступности соседствующих блоков вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседствующим местоположением яркости (xCb + ( mvL[ 0 ] >> 4 ), yCb + ( mvL[ 1 ] >> 4 )) в качестве входных данных, выход должен равняться TRUE.
Когда процесс получения доступности блока таков, как указано в статье 6.4.X [Ed. (BB): Процесс tbd] проверки доступности соседствующих блоков вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседствующим местоположением яркости ( xCb + ( mvL[ 0 ] >> 4 ) + cbWidth − 1, yCb + ( mvL[ 1 ] >> 4 ) + cbHeight − 1 ) в качестве входных данных, выход должен равняться TRUE.
Одно или оба нижеследующих условий должны быть действительны:
Значение ( mvL[ 0 ] >> 4 ) + cbWidth меньше или равно 0.
Значение ( mvL[ 1 ] >> 4 ) + cbHeight is меньше или равно 0.
Одно или оба нижеследующих условий должны быть действительны:
( yCb + ( mvL[ 1 ] >> 4 ) ) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
( yCb + ( mvL[ 1 ] >> 4 ) + cbHeight − 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY
( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY >= ( xCb >> CtbLog2SizeY ) − 1
( xCb + ( mvL[ 0 ] >> 4 ) + cbWidth − 1) >> CtbLog2SizeY <= ( xCb >> CtbLog2SizeY )
Когда ( xCb + ( mvL[ 0 ] >> 4 ) ) >> CtbLog2SizeY равно ( xCb >> CtbLog2SizeY ) − 1, процесс получения доступности блока таков, как указано в статье 6.4.X [Ed. (BB): Процесс tbd] проверки доступности соседствующих блоков вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседствующим местоположением яркости ( xCurr, yCurr ), установленным равным ( xCb, yCb ) и соседствующим местоположением яркости ( ( ( xCb + ( mvL[ 0 ] >> 4 ) + CtbSizeY ) >> ( CtbLog2SizeY − 1 ) ) << ( CtbLog2SizeY − 1 ), ( ( yCb + ( mvL[ 1 ] >> 4 ) ) >> ( CtbLog2SizeY − 1 ) ) << ( CtbLog2SizeY − 1 ) ) в качестве входных данных, и выходом должен быть FALSE.
Здесь, (xCb, YCb) является местоположением яркости, указывающим верхнюю-левую выборку текущего блока кодирования, в котором местоположение яркости является относительным в отношении верхней-левой выборки яркости текущего изображения, mvL является вектором движения (или вектором блока) в точности с 1/16 долей выборки, cbWidth является переменной, указывающей ширину текущего блока кодирования в выборках яркости, и cbHeight является переменной, указывающей высоту текущего блока кодирования в выборках яркости. CtbSizeY является размером CTU и CtbLog2SizeY является размером CTU по шкале log 2.
Для случая отдельного/двойного дерева и блоков цветности:
Должны быть доступны опорные выборки.
Эти ограничения подтверждения действительности описываются в главе 8.6.1 документа JVET-N1001 следующим образом:
Требование соответствия битового потока состоит в том, что вектор движения цветности mvC[ xSbIdx ][ ySbIdx ] должен подчиняться следующим ограничениям:
Когда процесс получения доступности блока таков, как указано в статье 6.4.X [Ed. (BB): Процесс tbd] проверки доступности соседствующих блоков вызывается с текущим местоположением цветности (xCurr, yCurr), установленным равным ( xCb / SubWidthC, yCb / SubHeightC ) и соседствующее местоположение цветности ( xCb / SubWidthC + ( mvC[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ), yCb / SubHeightC + ( mvC[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) ) в качестве входных данных, выход должен равняться TRUE.
Когда процесс получения доступности блока таков, как указано в статье 6.4.X [Ed. (BB): Процесс tbd] проверки доступности соседствующих блоков вызывается с текущим местоположением цветности (xCurr, yCurr), установленным ( xCb / SubWidthC, yCb / SubHeightC ) соседним местоположением цветности ( xCb / SubWidthC + ( mvC[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ) + cbWidth / SubWidthC − 1, yCb / SubHeightC + ( mvC[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) + cbHeight / SubHeightC − 1 ) в качестве входных данных, выход должен равняться TRUE.
Одно или оба нижеследующих условий должны быть действительны:
( mvC[ xSbIdx ][ ySbIdx ][ 0 ] >> 5 ) + xSbIdx * 2 + 2 меньше или равно 0.
( mvC[ xSbIdx ][ ySbIdx ][ 1 ] >> 5 ) + ySbIdx * 2 + 2 меньше или равно 0.
Когда количество субблоков кодирования яркости в горизонтальном направлении равно numSbX, а в вертикальном направлении равно numSbY, получают следующее:
numSbX = ( cbWidth >> 2 )
numSbY = ( cbHeight >> 2 )
Здесь, xSbIdx = 0.numSbX − 1, ySbIdx = 0.numSbY − 1 и mvL является вектором движения яркости (или вектором блока) с точностью в 1/16 долю выборки.
В соответствии с JVET-N0472, на выделенный буфер IBC делается ссылка, основываясь на ((x+BVx)%W, (y+BVy)%H) (для x<0, x%L L - ( -x%L)), где W и H представляют выделенный размер буфера IBC. В одном из примеров, для CTU 128x128 оба размера W и H равняются 128. Основываясь на правиле ссылки на выделенный буфер IBC (((x+BVx)%W, (y+BVy)%H) (для x<0, x%L L - ( -x%L))), опорные выборки не будут лежать за пределами выделенной области памяти ссылок IBC. Следовательно, опорные ссылки должны происходить из текущего CTU или левого CTU текущего CTU и опорные выборки должны находиться в определенной области ссылок IBC, как показано на фиг. 6.
Следовательно, в N0472 следующие ограничения подтверждения действительности битового потока удаляются:
Опорные выборки должны находиться в определенной области ссылок IBC, как показано на фиг. 6.
Однако, опорные выборки должны быть доступны для выборок яркости или цветности и опорные выборки из одной и той же строки CTU должны все еще сохраняться, поскольку в случае какого-либо угла выбранный буфер IBC является пустым. Например, в первом CTU изображения выделенный буфер IBC частично пуст, с отсутствием выборок из левого CTU.
В соответствии с вариантом 1 осуществления, все ограничения соответствия битового потока для проверок действительности вектора блока удаляются как для компонент яркости, так и для компонент цветности в случае единого дерева и в случае раздельных деревьев. Предсказанным блоком IBC делается ссылка на выборки из выделенного буфера IBC, причем ссылка делается, основываясь на ((x+BVx)%W, (y+BVy)%H) (для x<0, x%L L - ( -x%L)), где x и y являются координатами верхней-левой выборки текущего блока и BVx и BVy являются векторами блоков для текущего блока IBC.
Когда блок является первым CU первого CTU изображения, как показано на фиг. 11, выделенный буфер IBC инициируется со значением по умолчанию. Например, значение 1 << (InternalBitDepth – 1) может использоваться в качестве значения по умолчанию. Для 10-тибитовой внутренней битовой глубины значение по умолчанию может равняться 512, для 8-мибитовой внутренней битовой глубины значение по умолчанию может равняться 128.
На фиг. 8а показан пример, который основан на способе, приведенном в документе JVET-N0472. Сплошная стрелка является действительным вектором блока, который может кодироваться кодером в битовом потоке и синтаксически анализироваться декодером из битового потока. Пунктирные стрелки являются недействительными векторами блоков, которые могут кодироваться в битовом потоке кодером, но кодер VVC не может синтаксически анализировать их из битового потока из-за требования подтверждения действительности битового потока.
На фиг. 8 показан пример, который основан на способе, описанном в варианте 1 осуществления. Поскольку все ограничения подтверждения действительности битового потока, связанные с проверками действительности векторов блоков IBC удаляются, все сплошные стрелки являются действительными векторами блоков, которые могут кодироваться кодером в битовом потоке и синтаксически анализироваться декодером из битового потока. Основываясь на форме ((x+BVx)%W, (y+BVy)%H) (для x<0, x%L L - ( -x%L)), все векторы блоков, показанные на фиг. 8b, ссылаются на опорный блок в выделенном буфере IBC, как показано на фиг. 8c.
Одним из преимуществ варианта 1 является то, что он удаляет все ограничения по согласованию битового потока в отношении действительности векторов блоков. Это вариант осуществления повышает устойчивость кодированного битового потока. Помимо этого, вариант осуществления инициируется выделенный буфер IBC. Неопределенные выборки исключаются.
Вариант 2 осуществления:
Независимо или совместно с вариантом 1 осуществления, в варианте 2 осуществления выделенный буфер IBC обновляется в каждой строке CTU.
В дополнение к инициированию выделенного буфера IBC, если CTU является первым CTU в изображении, первый CTU строки CTU также инициируется со значением по умолчанию.
В примере, когда текущий блок является первым CU в строке CTU, как показано на фиг. 11, выделенный буфер IBC инициируется со значением по умолчанию. Значение по умолчанию может быть определено как 1 << (InternalBitDepth – 1). Для 10-тибитовой внутренней битовой глубины значение по умолчанию может равняться 512, для 8-мибитовой внутренней битовой глубины значение по умолчанию может равняться 128.
На фиг. 9 показаны примеры первого CTU в строке в компоненте яркости для случая отдельного дерева или для случая одиночного дерева. На фиг. 9а показан способ, приведенный в JVET-N0472. Обозначенный пунктиром вектор блока является недействительным. Из-за требования по согласованию битового потока, что опорные выборки должны браться из текущего CTU или из левого CTU текущего CTU, ссылочная область в выделенном буфере IBC является пустой. На фиг. 9 показан способ, соответствующий варианту 2 осуществления, где действительным является вектор блока, показанный сплошной линией.
Согласно варианту 2 осуществления, никакое согласование битового потока для подтверждения действительности векторов блока IBC не требуется. Кроме того, при обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется.
Вариант 3 осуществления:
Независимо или совместно с вариантами 1 и/или 2 осуществления, в варианте 3 осуществления выделенный буфер IBC обновляется для каждого виртуального блока конвейерной обработки (virtual pipeline processing unit, VPDU). Например, для CTU 128x128 VPDU является неперекрывающейся областью 64x64. CTU 128х128, таким образом, строится из 4 VPDU. В аппаратной реализации блоки VPDU обрабатываются последовательно.
В дополнение к инициированию выделенного буфера IBC, если CTU является первым CTU в изображении или первым CTU в строке CTU, выделенный буфер IBC нуждается в обновлении значением по умолчанию.
В примере, когда текущий блок является первым CU в VPDU, выделенный буфер IBC инициируется с помощью значения по умолчанию. Значение по умолчанию может быть определено как 1 << (InternalBitDepth – 1). Для 10-тибитовой внутренней битовой глубины значение по умолчанию может равняться 512, для 8-мибитовой внутренней битовой глубины значение по умолчанию может равняться 128.
Как показано на фиг. 10, выделенный буфер IBC для CTU может быть построен из выборок для текущего восстановленного CTU, выборок из последнего CTU и выборок значений по умолчанию.
Согласно варианту 3 осуществления, никакое согласование битового потока для подтверждения действительности вектора блока IBC не требуется. При обновлении IBC никакие выборки из последней строки CTU не используются. В этом случае, для предсказания IBC никакая дополнительная строчная память не требуется. Кроме того, размер опорной памяти IBC является таким же, как в текущем варианте VVC, то есть, для реализации варианта осуществления никакая дополнительная память не требуется. Для ссылки на текущий VPDU, нет необходимости получать доступ к выделенному буферу IBC.
Кроме того, в проекте JVET-N1001 VVC наибольшим разрешенным размером CU, предсказанного с помощью режима IBC, является 128x64 или 64x128. В этом случае размер CU больше, чем размер VPDU.
Чтобы поддерживать размер памяти для ссылок IBC одинаковым, как в соответствующем проекте VVC для размера 128x64 или 64x128, помимо текущего варианта осуществления может применяться одно из следующих правил:
1) CU с размером 64x128 или 128x64, предсказываемый, используя режим IBC, не разрешается. Как пример, если один размер из размеров текущего CU больше 64, значение индикатора режима IBC может неявно равняться 0 или другому значению, которое представляет режим IBC, который может быть запрещен для текущего CU, так что никакой индикатор из битового потока не требуется синтаксически анализировать.
2) Основываясь на логике деления, содержащейся в JVET-N1001VVC, CU размером 128х64 должен содержать 2 VPDU. В этом случае, оба VPDU обновляются значениями по умолчанию. В одном из примеров значение по умолчанию может быть определено как 1 << (InternalBitDepth – 1). Для каждого предсказания область VPDU текущего PU может обновляться с помощью значения по умолчанию. В этом примере верхняя-левая выборка текущего CU может быть такой же, как верхняя-левая выборка текущего CTU, и ширина текущего CU может равняться 64, а высота может равняться 128. В этом случае верхняя левая область 64x128 в выделенном буфере IBC 128х128 может быть обновлена с помощью значения 1 << (InternalBitDepth – 1).
3) Основываясь на логике деления, содержащейся в JVET-N1001VVC, CU размером 128х64 должен содержать 2 VPDU. Если CU с размером 64x128 или 128x64 предсказывается, используя режим IBC, две содержащиеся в нем области VPDU текущего CU с размером 64x128 или 128x64 могут рассматриваться как два отдельных блока предсказания (prediction unit, PU) с одним и тем же вектором блока и предсказание может выполняться раздельно. Для каждого предсказания область VPDU текущего PU может обновляться с помощью значения по умолчанию. В этом примере, если CU предсказывается, используя режим IBC, верхняя-левая выборка текущего CU может быть такой же, как верхняя-левая выборка текущего CTU, и ширина текущего CU может быть 64, а высота может быть 128. В этом случае верхняя-левая область 64x64 выделенного буфера IBC 128x128 может быть обновлена во время предсказания первого (верхнего) PU текущего CU 64x128. Нижняя-левая область 64x64 выделенного буфера IBC 128x128 может быть обновлена во время предсказания второго (нижнего) PU текущего CU 64x128.
Вариант 4 осуществления:
В текущем проекте VVC (JVET-N1001) построения опорного буфера IBC или построения опорного буфера IBC согласно JVET-N0472 в случае отдельных деревьев, компонент цветности можно предсказывать посредством режима предсказания IBC. Однако, режим предсказания IBC для блока цветности требует согласования битового потока следующим образом:
Текущий блок цветности в случае отдельных деревьев делится на 2х2 субблоков, где каждый субблок имеет совмещенный субблок компонента яркости. Когда блок цветности предсказывается, используя режим IBC, векторы блоков каждого из субблоков 2x2 цветности накапливаются из совмещенного субблока компонента яркости, когда совмещенный субблок яркости предсказывается посредством режима IBC. Когда какой-либо совмещенный субблок яркости не предсказывается посредством режима IBC или накопленный BV является недействительным, основываясь на согласовании битового потока согласно проекту 5.0 VVC или JVET-N0472 для блока цветности, текущий блок цветности не может быть предсказан посредством режима IBC.
Независимо или в сочетании с вариантом 1, 2 или 3, в варианте осуществления 4 режим предсказания IBC для блока цветности в проверках согласования битового потока не нуждается. В одном из примеров блок цветности в случае отдельных деревьев делится на субблоки 2х2, где каждый субблок имеет совмещенный субблок компонента яркости. Когда текущий блок предсказывается, используя режим IBC, векторы блоков каждого из субблоков 2x2 цветности накапливаются из совмещенного субблока компонента яркости, когда совмещенный субблок яркости предсказывается посредством режима IBC. Когда совмещенный субблок яркости не предсказывается, используя режим IBC, вектор блока по умолчанию может быть установлен для соответствующего субблока 2х2 цветности. Вектор по умолчанию в одном из примеров может быть равен (0, 0). В другом примере вектор по умолчанию может быть блоком вектора центральной выборки предсказанного в режиме IBC совмещенного блока яркости текущего блока цветности.
Основываясь на варианте 4 осуществления, дополнительных проверок согласования битового потока в случае раздельных деревьев компонента цветности можно избежать.
На фиг. 12 показана блок-схема последовательности выполнения операций способа видеодекодирования, соответствующего варианту осуществления раскрытия. На этапе 1010 обеспечивается выделенный буфер для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC). На этапе 1020 определяется, является ли текущий блок кодирования (СВ) первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре. Если это так, то на этапе 1040 выделенный буфер инициируется на значение по умолчанию. Если нет, то на этапе 1030 определяется, является ли текущий блок кодирования первым блоком кодирования в строке CTU в текущем кадре. В этом случае, выделенный буфер на этапе 1040 инициируется на значение по умолчанию.
Далее, на этапе 1050 определяется, должен ли текущий блок, подлежащий декодированию, предсказываться, используя режим IBC. Когда текущий блок предсказывается, используя режим IBC, на этапе 1060 получают вектор блока IBC для текущего блока.
И наконец, предсказанные значения выборок получают для текущего блока на этапе 1070, основываясь на опорных ссылках из выделенного буфера и векторе блока IBC для текущего блока.
На фиг. 13 показана блок-схема последовательности выполнения операций способа видеодекодирования, соответствующего дополнительному варианту осуществления раскрытия. Обеспечивается выделенный буфер для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC). На этапе 1510 определяют, является ли текущий блок дерева кодирования (coding tree unit, CTU) первым CTU в строке CTU. В этом случае, выделенный буфер на этапе 1520 инициируется на значение по умолчанию.
Далее, на этапе 1530 определяют, должен ли текущий блок, подлежащий декодированию, предсказываться, используя режим IBC. Когда текущий блок предсказывается, используя режим IBC, на этапе 1540 получают вектор блока IBC для текущего блока. И наконец, предсказанные значения выборок получают для текущего блока на этапе 1550, основываясь на опорных ссылках из выделенного буфера и векторе блока IBC для текущего блока.
На фиг. 14 показана блок-схема последовательности выполнения операций способа видеодекодирования, соответствующего варианту осуществления раскрытия. На этапе 1110 обеспечивается выделенный буфер для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC). На этапе 1120 определяется, является ли текущий блок кодирования (СВ) первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в текущем кадре. Если это так, то на этапе 1140 выделенный буфер инициируется на значение по умолчанию. Если нет, то на этапе 1130 определяется, является ли текущий блок кодирования первым блоком кодирования в строке CTU в текущем кадре. В этом случае, выделенный буфер на этапе 1040 инициируется на значение по умолчанию. Далее, предсказанные значения выборок получают для текущего блока, подлежащего кодированию, на этапе 1150, основываясь на опорных ссылках из выделенного буфера. И, наконец, на этапе 1160 получают вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
На фиг. 15 показана блок-схема последовательности выполнения операций способа видеокодирования, соответствующего дополнительному варианту осуществления раскрытия. Обеспечивается выделенный буфер для ссылки на копию блока внутрикадрового кодирования (intra block copy, IBC). На этапе 1610 определяют, является ли текущий блок дерева кодирования (coding tree unit, CTU) первым CTU в строке CTU. В этом случае, выделенный буфер на этапе 1620 инициируется на значение по умолчанию.
Далее, предсказанные значения выборок получают для текущего блока, подлежащего кодированию, на этапе 1630, основываясь на опорных ссылках из выделенного буфера. И, наконец, на этапе 1640 получают и кодируют вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
На фиг. 16 показана блок-схема примера устройства декодирования, соответствующего варианту осуществления раскрытия. Устройство (30) декодирования содержит выделенный буфер (1350) для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC), модуль (1310) инициирования, выполненный с возможностью инициирования выделенного буфера на начальное значение, модуль (1320) определения, выполненный с возможностью определения, предсказывается ли текущий блок, используя режим IBC, первый модуль (1330) получения, выполненный с возможностью получения вектора блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC, и второй модуль (1340) получения, выполненный с возможностью получения предсказанных значений выборки для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и векторе блока IBC для текущего блока. Модуль (1310) инициирования может быть выполнен с возможностью инициирования выделенного буфера, когда текущий блок дерева кодирования (coding tree unit, CTU) является первым CTU в строке CTU. Альтернативно или дополнительно, выделенный буфер может быть инициирован, когда текущий CTU является первым CTU в изображении. Альтернативно или дополнительно, выделенный буфер может быть инициирован, когда текущий блок, подлежащий декодированию, является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в строке CTU и/или в текущем кадре. Альтернативно или дополнительно, модуль (1310) инициирования может быть выполнен с возможностью инициирования выделенного буфера для области CTU, когда текущий блок кодирования, подлежащий декодированию, является первым блоком кодирования в области CTU.
На фиг. 17 показана блок-схема примера устройства кодирования, соответствующего варианту осуществления раскрытия. Устройство (20) кодирования содержит выделенный буфер (1450) для ссылки на копию блока с внутрикадровым предсказанием (intra block copy, IBC), модуль (1410) инициирования, выполненный с возможностью инициирования выделенного буфера на значение по умолчанию, первый модуль (1420) получения, выполненный с возможностью получения предсказанных значений выборки для текущего блока, основываясь на опорных ссылках, полученных из выделенного буфера, и второй модуль (1430) получения, выполненный с возможностью получения вектора блока IBC для текущего блока, основываясь на предсказанных значениях выборки для текущего блока. Модуль (1410) инициирования может быть выполнен с возможностью инициирования выделенного буфера, когда текущий блок дерева кодирования (coding tree unit, CTU) является первым CTU в строке CTU. Альтернативно или дополнительно, выделенный буфер может быть инициирован, когда текущий CTU является первым CTU в изображении. Альтернативно или дополнительно, выделенный буфер может быть инициирован, когда текущий блок, подлежащий кодированию, является первым блоком кодирования первого блока дерева кодирования (coding tree unit, CTU) в строке CTU и/или в текущем кадре. Альтернативно или дополнительно, модуль (1410) инициирования может быть выполнен с возможностью инициирования выделенного буфера для области CTU, когда текущий блок кодирования, подлежащий кодированию, является первым блоком кодирования в области CTU.
Модули 1310 и 1410 инициирования, модуль 1320 определения, первые модули 1330 и 1420 получения и вторые модули 1340 и 1430 получения могут быть реализованы аппаратными средствами, программным обеспечением, встроенным микропрограммным обеспечением или их сочетанием. При реализации в программном обеспечении функции могут храниться на считываемом компьютером носителе или передаваться через средства связи в виде одной или более команд или кода и исполняться процессором на основе аппаратных средств. Команды могут исполняться одним или более процессорами, такими как один или более цифровые сигнальные процессоры (digital signal processor, DSP), универсальные микропроцессоры, специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable gate array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как он используется здесь, может относиться к любой из вышеперечисленных структур или к любой другой структуре, пригодной для реализации описанных здесь технологий. Кроме того, в некоторых вариантах функциональные возможности, представленные в настоящем описании, могут быть обеспечены в рамках специализированных аппаратных средств и/или в модулях программного обеспечения, выполненных с возможностью кодирования и декодирования, или могут содержаться объединенном кодеке. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Для примера, но не для ограничения, такой считываемый компьютером носитель запоминающего устройства может содержать оперативную память (RAM), постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), компакт-диск (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемой управляющей программы в форме команд или структур данных и может быть доступен компьютеру. Выделенные буферы могут обеспечиваться в виде отдельных устройств памяти и/или как часть схемы обработки, такой как CPU, GPU или DSP. Выделенные буферы могут формироваться любыми из множества различных устройств памяти, таких как динамическая оперативная память (dynamic random access memory, DRAM), содержащая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти.
На фиг. 18 представлена блок-схема системы 3100 предоставления контента для реализации услуги распределения контента. Этот система 3100 поддержки контента содержит устройство 3102 получения изображения, оконечное устройство 3106 и, как вариант, содержит дисплей 3126. Устройство 3102 получения изображения осуществляет связь с оконечным устройством 3106 по каналу 3104 связи. Линия связи может содержать описанный выше канал 13 связи. Линия 3104 связи содержит, но не ограничивается этим, WI-FI, Ethernet, кабельную линию, беспроводную линию связи (3G/4G/5G), USB или их сочетание любого вида и т.п.
Устройство 3102 получения изображения формирует данные и может кодировать данные по способу кодирования, как представлено в приведенных выше вариантах осуществления. Альтернативно, устройство 3102 получения изображения может распределять данные потоковому серверу (не показан на чертежах) и сервер кодирует данные и передает кодированные данные оконечному устройству 3106. Устройство 3102 получения изображения содержит, не ограничиваясь только этим, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференций, PDA, устройство, монтируемое на транспортном средстве, или сочетание любых из них и т.п. Например, устройство 3102 получения изображения может содержать устройство 12 источника, как описано выше. Когда данные содержат в себе видеоданные, причем видеокодер 20, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс видеокодирования. Когда данные содержат в себе аудиоданные (например, голосовые), аудиокодер, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс аудиокодирования. Для некоторых практических сценариев устройство 3102 получения изображения распределяет кодированные видеоданные и аудиоданные посредством мультиплексирования их вместе. Для других практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 получения изображения может раздельно распределять кодированные аудиоданные и кодированные видеоданные оконечному устройству 3106.
В системе 3100 предоставления контента оконечное устройство 3106 принимает и воспроизводит кодированные данные. Оконечное устройство 3106 может быть устройством с возможностями приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорекордер (NVR)/ цифровой видеорекордер (digital video recorder, DVR) 3112, телевизионный приемник, телевизионная приставка (set top box, STB) 3116, система 3118 видеоконференций, система 3120 видеонаблюдения, персональный цифровой помощник (personal digital assistant, PDA) 3122, устройство 3124, монтируемое на транспортном средстве или сочетание любых из них и т.п., способные декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может содержать устройство 14 назначения, как описано выше. Когда кодированные данные содержат в себе видеоданные, видеокодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения видеодекодирования. Когда кодированные данные содержат в себе аудиоданные, аудиодекодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения аудиодекодирования.
Для оконечного устройства, имеющего дисплей, например, такого как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорекордер (NVR)/ цифровой видеорекордер (DVR) 3112, телевизионный приемник 3114, персональный цифровой помощник (PDA) 3122, или устройство 3124, монтируемое на транспортном средстве, оконечное устройство может подавать декодированные данные на свой дисплей. Для оконечного устройства, не имеющего дисплея, например, STB 3116, система 3118 видеоконференций или система 3120 видеонаблюдения, внешний дисплей 3116 осуществляет с ними связь, чтобы принимать и показывать декодированные данные.
Когда любое из устройств в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, показанные в упомянутых выше вариантах осуществления
На фиг. 19 представлена структура примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток от устройства 3102 получения изображения, блок 3202 протокола анализирует протокол передачи потока. Протокол содержит, не ограничиваясь только этим, протокол потоковой передачи в реальном времени (Real Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hyper Text Transfer Protocol, HTTP), протокол живой потоковой передачи HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол передачи в реальном времени (Real-time Transport protocol, RTP), протокол передачи сообщений в реальном времени (Real Time Messaging Protocol, RTMP) или их комбинацию любого вида и т.п.
После того, как блок 3202 протокола обработает поток, формируют потоковый файл. Файл выводят на блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208, не проходя через блок 3204 демультиплексирования.
Посредством процесса демультиплексирования формируется элементарный поток (elementary stream, ES) видео, аудио ES и, как вариант, субтитры. Видеодекодер 3206, который содержит видеодекодер 30, как объяснялось в вышеупомянутых вариантах осуществления, декодирует видео ES способом декодирования, показанным в вышеупомянутых вариантах осуществления, чтобы сформировать видеокадр, и подает эти данные на блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES, чтобы сформировать аудиокадр, и подает эти данные на блок 3212 синхронизации. Альтернативно, видеокадр может быть сохранен в буфере (не показан на фиг. 19) перед его подачей на блок 3212 синхронизации. Аналогично, аудиокадр может быть сохранен в буфере (не показан на фиг. 19) перед его подачей на блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и предоставляет видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видеоинформации и аудиоинформации. Информацию можно кодировать в синтаксис, используя временные отметки, относящиеся к презентации кодированных аудио- и видеоданных, и временные отметки, относящиеся к передаче самого потока данных.
Если в поток включаются субтитры, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и аудиокадром и подает данные видео/аудио/субтитров на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается упомянутой выше системой и любое из таких устройств, как устройство кодирования изображения или устройство декодирования изображения, может быть введено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, подобны тем, которые используются в языке программирования "С". Однако, результаты операций целочисленного деления и арифметических сдвигов определяются более точно и определяются дополнительные операции, такие как возведение в степень и деление действительных значений. Правила нумерации и подсчета обычно начинаются с 0, например, "первый" эквивалентно 0-ому, "второй" эквивалентно 1-ому и т.д.
Арифметические операторы
Приведенные ниже арифметические операторы определяются следующим образом:
+ Сложение
Вычитание (как двухаргументный оператор) или отрицание (как оператор одноаргументного префикса)
* Умножение, в том числе, матричное умножение
xy Возведение в степень. Указывает x в степени y. В других контекстах такое обозначение используют для снабжения верхними индексами, не предназначенными для интерпретации как возведение в степень.
/ Целочисленное деление с усечением результата в направлении нуля. Например, 7/4 и -7/-4 усекаются до 1, а -7/4 и 7/-4 усекаются до -1.
÷ Используют для деления в математических уравнениях, в которых никакое усечение или округление не предполагается.
Используют для деления в математических уравнениях, в которых никакое усечение или округление не предполагается.
Суммирование f( i ), где i принимает любые целочисленные значения от x до и включая y.
x % y Модуль. Остаток от x, деленного на y, определяется только для целых чисел x и y, где x >= 0 и y > 0.
Логические операторы
Приведенные ниже логические операторы определяются следующим образом:
x && y Булево логическое "И" x и y
x | | y Булево логическое "ИЛИ" x и y
! Булево логическое "НЕ"
x ? y : z Если x TRUE (истинно) или не равно 0, оценивают значение y; в противном случае, оценивают значение z.
Операторы соотношений
Приведенные ниже операторы соотношений определяются следующим образом:
> Больше чем
>= Больше чем или равно
< Меньше чем
<= Меньше или равно
= = Равно
!= Не равно
определяется как
Когда оператор соотношения применяют к элементу синтаксиса или переменной, которой было присвоено значение "na" (not applicable, не применяется), значение "na" для элемента синтаксиса или переменной рассматривается как отдельное значение. Значение "na" рассматривается как неравное никакому другому значению.
Поразрядные операторы
Приведенные ниже операторы соотношений определяются следующим образом:
& Поразрядное "И" При работе с целочисленными аргументами, действует комплементарное представление 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0.
| Побитовое "ИЛИ" При работе с целочисленными аргументами, действует комплементарное представление 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0.
^ Побитовое "исключающее ИЛИ" При работе с целочисленными аргументами, действует комплементарное представление 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0.
x >> y Арифметический сдвиг вправо комплементарного целочисленного представления до 2 для двоичных цифр х * у. Эта функция определяется только для неотрицательных целочисленных значений у. Биты, смещенные в старшие значащие разряды (most significant bit, MSB) как результат сдвига вправо, имеют значение, равное MSB для х, предшествующего операции сдвига
x << y Арифметический сдвиг влево комплементарного целочисленного представления до 2 для двоичных цифр х * у. Эта функция определяется только для неотрицательных целочисленных значений у. Биты, смещенные в младшие значащие разряды (least significant bit, LSB) как результат сдвига влево, имеют значение, равное 0.
Операторы присвоения
Приведенные ниже арифметические операторы определяются следующим образом:
= Оператор присвоения
+ + Приращение вверх, то есть, x+ + эквивалентно x = x + 1; когда используется в матричном индексе, оценивает значение переменной перед операцией приращения вверх.
− − Приращение вниз, то есть, x− − эквивалентно x = x - 1; когда используется в матричном индексе, оценивает значение переменной перед операцией приращения вниз.
+= Приращение вверх на указанную величину, то есть, x += 3 эквивалентно x = x + 3, и x += (−3) эквивалентно x = x + (−3).
−= Приращение вниз на указанную величину, то есть, x −= 3 эквивалентно x = x − 3, и x −= (−3) эквивалентно x = x − (−3).
Обозначение диапазона
Нижеследующее обозначение используется для указания диапазона значений.
x = y.z х принимает целочисленные значения, начиная с у до z, включительно, где x, y и z – целые числа и z больше, чем y.
Математические функции
Определяются нижеследующие математические функции:
Asin( x ) тригонометрическая обратная синусная функция, действующая на аргументе х, который находится в диапазоне от −1,0 до 1,0, включительно, с выходным значением в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан.
Atan( x ) тригонометрическая обратная тангенсная функция, действующая на аргументе х, с выходным значением в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан.
Ceil( x ) наименьшее целое числе, большее или равное х.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Cos( x ) - тригонометрическая косинусная функция, действующая на аргументе х в единицах радиан.
Floor( x ) - наибольшее целое числе, меньшее или равное х.
Ln( x ) натуральный логарифм x (логарифм по основанию e, где e – базовая постоянная натурального логарифма 2.718 281 828...).
Log2( x ) логарифм х по основанию 2.
Log10( x ) логарифм x по основанию 10.
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sin( x ) - тригонометрическая синусная функция, действующая на аргументе х в единицах радиан.
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая тангенсная функция, действующая на аргументе х в единицах радиан.
Порядок очередности выполнения операций
Когда порядок выполнения операций в выражении не указан явно, используя скобки, применяют следующие правила.
Операции с более высоким приоритетом вычисляют перед любой операцией более низкого приоритета.
Операции равного приоритета вычисляются последовательно слева направо.
Приведенная ниже таблица указывает приоритет операций в порядке от самого высшего к самому низшему; более высокое положение в таблице указывает более высокий приоритет
Для тех операций, которые также используются в языке программирования С, порядок приоритетов, используемый в настоящем описании является таким же, как он используется в языке программирования С.
Таблица. Очередность выполнения операций от наивысшей (вверху таблицы) к наинизшей (внизу таблицы).
операции (с операндами x, y и z)
"x++", "x− −"
"!x", "−x" (в качестве унарного оператора префикса)
xy
"x * y", "x / y", "x ÷ y", "", "x % y"
"x + y", "x − y" (в качестве двухаргументного оператора), ""
"x << y", "x >> y"
"x < y", "x <= y", "x > y", "x >= y"
"x = = y", "x != y"
"x & y"
"x | y"
"x && y"
"x | | y"
"x ? y : z"
"x.y"
"x = y", "x += y", "x −= y"
Текстовое описание логических операций
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if( condition 0 )
statement 0
else if( condition 1 )
statement 1
...
else /* informative remark on remaining condition */
statement n
может быть записано следующим образом:
... как следует / ... применяется следующее:
– If condition 0, statement 0
– Otherwise, if condition 1, statement 1
– ...
– Otherwise (информационное замечание по остающемуся условию), оператор n
Каждый оператор "If ... иначе, if ... Otherwise, ..." в тексте вводится с помощью "... as follows" или "... the following applies" непосредственно сопровождается "If ... ". Последним условием "If ... иначе, if ... Otherwise, ..." всегда являются операторы "Otherwise, ...". Interleaved "If ... иначе, if ... Otherwise, ...", которые могут идентифицироваться совпадением "... as follows" или "... the following applies" с окончанием "Otherwise, ...".
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if( condition 0a && condition 0b )
statement 0
else if( condition 1a | | condition 1b )
statement 1
...
else
statement n
может быть записано следующим образом:
... как следует / ... применяется следующее:
– If all of the following conditions are true, statement 0:
– condition 0a
– condition 0b
– Otherwise, if one or more of the following conditions are true, statement 1:
– condition 1a
– condition 1b
– ...
– Otherwise, statement n
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if( condition 0 )
statement 0
if( condition 1 )
statement 1
может быть записано следующим образом:
When condition 0, statement 0
When condition 1, statement 1
Хотя варианты осуществления изобретения были описаны, в первую очередь, основываясь на видеокодировании, следует заметить, что варианты осуществления системы 10 кодирования, кодер 20 и декодер 30 (и, соответственно, система 10) и другие варианты осуществления, описанные здесь, могут также быть выполнены с возможностью применения при обработке фотографий или при кодировании, то есть, при обработке или кодировании индивидуального изображения, независимо от любого предыдущего или последующего изображения, как при видеокодировании. В целом, только блоки 244 межкадрового предсказания (кодер) и 344 (декодер) могут быть недоступны в случае, когда кодирование при обработке изображения ограничивается одиночным изображением. Все другие функциональные возможности (также упоминаемые как инструменты или технологии) видеокодера 20 и видеодекодера 30 могут, в равной степени, использоваться для обработки фотографий, например, вычисление 204/304 остатка, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, деление на части 262/362, внутрикадровое предсказание 254/354, и/или контурная фильтрация 220, 320, статистическое кодирование 270 и статистическое декодирование 304.
Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные здесь, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы аппаратными средствами, программным обеспечением, встроенным программным обеспечением или любым их сочетанием. При реализации в программном обеспечении функции могут храниться на считываемом компьютером носителе или передаваться через средства связи в виде одной или более команд или кода и исполняться процессором на основе аппаратных средств. Считываемый компьютером носитель может содержать считываемый компьютером носитель запоминающего устройства, соответствующий физическому носителю, такому как носитель запоминающего устройства для хранения данных, или среда связи, содержащая любой носитель, облегчающий передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемый компьютером носитель, в целом, может соответствовать (1) физическому считываемому компьютером носителю запоминающего устройства, являющемуся носителем долговременного пользования, или (2) носителю связи, такому как сигнал или несущая. Носитель запоминающего устройства для хранения данных может быть любым доступным носителем, к которому может получать доступ один или более компьютеров или один или более процессоров, чтобы восстанавливать команды, управляющую программу и/или структуры данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может содержать считываемый компьютером носитель.
Для примера, но не для ограничения, такой считываемый компьютером носитель запоминающего устройства может содержать оперативную память (RAM), постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), компакт-диск (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемой управляющей программы в форме команд или структур данных и может быть доступен компьютеру. Кроме того, любое соединение соответственно называется считываемым компьютером носителем. Например, если команды передаются с веб-сайта, сервера или от другого удаленного источника, используя коаксиальный кабель, оптический кабель, витую пару, цифровую абонентскую линию (digital subscriber line, DSL) или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, то тогда коаксиальный кабель, оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, содержатся в определении носителя. Однако, следует понимать, что считываемый компьютером носитель запоминающего устройства для хранения данных и носитель запоминающего устройства данных могут не содержать соединения, несущие, сигналы или другие переносные носители, но являться непереносными физическими носителями для хранения данных. Диски содержат компакт-диски (CD), оптические диски, универсальные цифровые диски (DVD), дискеты и диски Blu-ray, где одни диски (disk) обычно воспроизводят данные магнитным способом, тогда как другие диски (disc) воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также могут содержаться в рамках объема считываемых компьютером носителей.
Команды могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (digital signal processor, DSP), универсальные микропроцессоры, специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable gate array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как он используется здесь, может относиться к любой из вышеперечисленных структур или к любой другой структуре, пригодной для реализации описанных здесь технологий. Кроме того, в некоторых вариантах функциональные возможности, представленные в настоящем описании, могут быть обеспечены в рамках специализированных аппаратных средств и/или в модулях программного обеспечения, выполненных с возможностью кодирования и декодирования, или могут содержаться объединенном кодеке. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Технологии, описанные в настоящем раскрытии, могут быть реализованы широким разнообразием устройств, в том числе, беспроводным мобильным телефоном, интегральной схемой (integrated circuit, IC) или набором IC (например, набором чипов). Различные компоненты, модули или блоки описываются в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществления раскрытых технологий, но не обязательно требующих реализации с помощью различных аппаратных блоков. Точнее, как описано выше, различные блоки могут объединяться в аппаратный блок кодера-декодера или могут обеспечиваться с помощью набора способных к взаимодействию аппаратных средств, содержащих один или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и встроенным программным обеспечением.

Claims (41)

1. Способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых:
инициируют (1520) выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием, IBC, когда текущий блок дерева кодирования, CTU, подлежащий декодированию, является первым CTU в строке CTU (1510);
определяют (1530), предсказывается ли текущий блок в текущем CTU, используя режим IBC;
получают (1540) вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают (1550) предсказанные значения выборок для текущего блока, основываясь на опорных ссылках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию.
2. Способ по п. 1, в котором значение по умолчанию равно -1.
3. Способ кодирования, реализуемый устройством кодирования, содержащий этапы, на которых:
инициируют (1620) выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием, IBC, когда текущий блок дерева кодирования, CTU, который должен кодироваться, является первым CTU в строке CTU (1610);
получают (1630) предсказанные значения выборок для текущего блока в текущем CTU, основываясь на опорных ссылках, полученных из выделенного буфера, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию; и
получают (1640) вектор блока IBC для текущего блока, основываясь на предсказанных значениях выборок для текущего блока.
4. Способ по п. 3, в котором значение по умолчанию равно -1.
5. Способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых:
инициируют выделенный буфер для области блока дерева кодирования, CTU, когда текущий блок кодирования, подлежащий декодированию, является первым блоком кодирования в области CTU;
определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC;
получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию.
6. Способ по п. 5, в котором область CTU является неперекрывающейся областью фиксированного размера.
7. Способ по п. 5 или 6, в котором область является виртуальным блоком конвейерной обработки, VPDU.
8. Способ по любому из пп. 5-7, в котором размер области равен 64×64.
9. Способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых:
инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием, IBC, когда текущий блок дерева кодирования, CTU, подлежащий декодированию, является первым CTU в изображении;
определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC;
получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию.
10. Способ по п. 9, в котором значение по умолчанию равно -1.
11. Способ кодирования, реализуемый устройством декодирования, содержащий этапы, на которых:
инициируют выделенный буфер для ссылки на копию блока с внутрикадровым предсказанием, IBC, когда текущий блок является первым блоком кодирования в текущем блоке дерева кодирования, CTU, где CTU является первым CTU в строке CTU;
определяют, предсказывается ли текущий блок в текущем CTU, используя режим IBC;
получают вектор блока IBC для текущего блока, когда текущий блок предсказывается, используя режим IBC; и
получают предсказанные значения выборок для текущего блока, основываясь на опорных выборках, полученных из выделенного буфера, и на векторе блока IBC для текущего блока, в котором опорные выборки, полученные из выделенного буфера, инициируются на значение по умолчанию.
12. Способ по п. 11, в котором значение по умолчанию равно -1.
13. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 3, 4.
14. Кодер (20) по п. 13, дополнительно содержащий выделенный буфер для хранения опорных выборок IBC.
15. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1, 2 и 5-14.
16. Декодер (30) по п. 15, дополнительно содержащий выделенный буфер для хранения опорных выборок IBC.
17. Декодер (30), содержащий:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда исполняются одним или более процессорами, конфигурируют декодер для выполнения способа по любому из пп. 1, 2 и 5-14.
18. Кодер (20), содержащий:
один или более процессоров; и
считываемый компьютером носитель запоминающего устройства долговременного пользования, связанный с одним или более процессорами и хранящий команды для их исполнения одним или более процессорами, в котором команды, когда исполняются одним или более процессорами, конфигурируют кодер для выполнения способа по любому из пп. 3, 4.
RU2021129242A 2019-05-16 2020-05-13 Кодер, декодер и соответствующие способы, использующие выделенный буфер ibc, и значение по умолчанию, обновляющее компонент яркости и цветности RU2801326C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/849,119 2019-05-16
EPPCT/EP2019/065540 2019-06-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2023120094A Division RU2023120094A (ru) 2019-05-16 2020-05-13 Кодер, декодер и соответствующие способы, использующие выделенный буфер ibc, и значение по умолчанию, обновляющее компонент яркости и цветности

Publications (2)

Publication Number Publication Date
RU2021129242A RU2021129242A (ru) 2023-04-07
RU2801326C2 true RU2801326C2 (ru) 2023-08-07

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2613738C2 (ru) * 2011-11-07 2017-03-21 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Сигнализация информации состояния для буфера декодированных картинок и списков опорных картинок
RU2628215C2 (ru) * 2012-09-24 2017-08-15 Квэлкомм Инкорпорейтед Сообщения дополнительной информации расширения точки восстановления и периода буферизации
US20180103260A1 (en) * 2015-06-03 2018-04-12 Mediatek Inc. Method and Apparatus for Resource Sharing between Intra Block Copy Mode and Inter Prediction Mode in Video Coding Systems
CN107925769A (zh) * 2015-09-08 2018-04-17 联发科技股份有限公司 用于帧内块复制模式的已解码图像缓存器的方法和系统
US10027981B2 (en) * 2014-09-01 2018-07-17 Hfi Innovation Inc. Method of intra picture block copy for screen content and video coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2613738C2 (ru) * 2011-11-07 2017-03-21 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Сигнализация информации состояния для буфера декодированных картинок и списков опорных картинок
RU2628215C2 (ru) * 2012-09-24 2017-08-15 Квэлкомм Инкорпорейтед Сообщения дополнительной информации расширения точки восстановления и периода буферизации
US10027981B2 (en) * 2014-09-01 2018-07-17 Hfi Innovation Inc. Method of intra picture block copy for screen content and video coding
US20180103260A1 (en) * 2015-06-03 2018-04-12 Mediatek Inc. Method and Apparatus for Resource Sharing between Intra Block Copy Mode and Inter Prediction Mode in Video Coding Systems
CN107925769A (zh) * 2015-09-08 2018-04-17 联发科技股份有限公司 用于帧内块复制模式的已解码图像缓存器的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jizheng Xu et al., "Non-CE8: On IBC reference buffer design", THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16, Женева, Швейцария, март 2019 г. Jianle Chen et al., "Algorithm description for Versatile Video Coding and Test Model 4 (VTM 4)", THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16, Марракеш, Марокко, январь 2019 г. *

Similar Documents

Publication Publication Date Title
KR102431537B1 (ko) 루마 및 크로마 성분에 대한 ibc 전용 버퍼 및 디폴트 값 리프레싱을 사용하는 인코더, 디코더 및 대응하는 방법들
JP7205038B2 (ja) 任意のctuサイズのためのibc検索範囲最適化を用いるエンコーダ、デコーダおよび対応する方法
JP7275270B2 (ja) エンコーダ、デコーダ、及びデブロッキングフィルタの境界強度導出の対応する方法
JP7366149B2 (ja) 行列ベースのイントラ予測と二次変換コア選択を調和させるエンコーダ、デコーダ、および対応する方法
CN112954367B (zh) 使用调色板译码的编码器、解码器和相应方法
US11876997B2 (en) Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction
KR20210126771A (ko) 인트라 예측 모드에 관련된 인코더, 디코더 및 대응하는 방법들
KR20210088688A (ko) Ibc 병합 리스트를 사용하는 인코더, 디코더 및 대응하는 방법들
WO2020145855A1 (en) A video encoder, a video decoder and corresponding methods of processing mmvd distance
US11973945B2 (en) Encoder, a decoder and corresponding methods restricting size of sub-partitions from intra sub-partition coding mode tool
US11876956B2 (en) Encoder, a decoder and corresponding methods for local illumination compensation
RU2801326C2 (ru) Кодер, декодер и соответствующие способы, использующие выделенный буфер ibc, и значение по умолчанию, обновляющее компонент яркости и цветности
RU2803063C2 (ru) Кодер, декодер и соответствующие способы, которые используются для процесса преобразования
RU2801112C1 (ru) Кодер, декодер и соответствующие способы, относящиеся к режиму внутрикадрового предсказания
RU2797574C2 (ru) Кодер, декодер и соответствующие способы, использующие список на слияние внутрикадрового копирования блоков
KR20210129180A (ko) 평면 모드를 위한 인트라 예측에 대한 복잡도 감소의 인코더, 디코더 및 대응하는 방법