Область техники, к которой относится изобретение
Настоящее изобретение относится к области кодирования и сжатия видео. Более конкретно, настоящее изобретение относится к усовершенствованиям и упрощениям способа кодирования остатка и коэффициентов при кодировании видео.
Уровень техники
Для сжатия данных видео могут быть использованы разнообразные способы кодирования. Кодирование видео осуществляется в соответствии с одним или несколькими стандартами кодирования видео. Например, к стандартам кодирования видео относятся универсальное кодирование видео (versatile video coding (VVC)), тестовая модель совместных исследований (joint exploration test model (JEM)), высокоэффективное кодирование видео (high-efficiency video coding (H.265/HEVC)), усовершенствованное кодирование видео (advanced video coding (H.264/AVC)), кодирование по стандартам Группы экспертов по кинематографии (moving picture expert group (MPEG)) или другие подобные стандарты. При кодировании видео обычно используют методы прогнозирования (например, межкадровое прогнозирование, внутрикадровое прогнозирование или другой подобный метод), которые используют преимущества избыточности, присутствующей в изображениях или в последовательностях видео. Важной целью технологий кодирования видео является сжатие данных видео в форму, использующую более низкую скорость передачи битов данных, избегая, в то же время, или минимизируя деградацию качества видео.
Раскрытие сущности изобретения
Примеры настоящего изобретения предлагают способы и устройства для кодирования видео.
Согласно первому аспекту настоящего изобретения, предложен способ декодирования видео. Способ может содержать этап, на котором: принимают, декодирующим устройством, флаг активизации коэффициентов набора параметров последовательности (Sequence Parameter Set (SPS) coefficient enabled flag), который указывает, присутствует ли флаг активизации коэффициентов заголовка среза (slice header (SH)) в синтаксической структуре заголовка среза, относящейся к указанному набору SPS.
Согласно второму аспекту настоящего изобретения, предложен способ декодирования видео. Способ может содержать этап, на котором: принимают, декодирующим устройством, флаг активизации адаптации точности преобразования набора параметров последовательности (Sequence Parameter Set (SPS) transform precision adaption enabled flag), который указывает, происходит ли адаптивное назначение понижающих сдвигов в процессе масштабирования коэффициентов преобразования и в процессе преобразования масштабированных коэффициентов преобразования посредством исследования значений коэффициентов деквантования и обратного преобразования.
Согласно третьему аспекту настоящего изобретения, предложен способ декодирования видео. Способ может содержать этапы, на которых: принимают, декодирующим устройством, флаг высокой степени единообразия набора параметров последовательности (Sequence Parameter Set (SPS) high throughout flag), который указывает, кодированы ли синтаксические элементы в процессе кодирования остатка в режиме обхода; и в ответ на определение, что значение флага высокой степени единообразия набора SPS равно 1, определяют, декодирующим устройством, что все синтаксические элементы в процессе кодирования остатка, за исключением позиции последнего значимого коэффициента при обычном кодировании остатка (regular residual coding (RRC)), кодированы в режиме обхода, и что выравнивание осуществляется после позиции последнего значимого коэффициента при кодировании RRC и в начале блока преобразования (transform block (TB)) при кодировании остатка с пропуском преобразования (transform skip residual coding (TSRC)).
Следует понимать, что приведенное выше общее описание и содержащееся ниже подробное описание являются только примерами и пояснениями и не предназначены для ограничения настоящего изобретения.
Краткое описание чертежей
Прилагаемые чертежи, включенные в настоящее описание и составляющие его часть, иллюстрируют примеры, согласованные с настоящим изобретением, и, совместно с описанием, служат для пояснения принципов настоящего изобретения.
Фиг. 1 представляет блок-схему кодирующего устройства, согласно одному из примеров настоящего изобретения.
Фиг. 2 представляет блок-схему декодирующего устройства, согласно одному из примеров настоящего изобретения.
Фиг. 3A представляет схему, иллюстрирующую разбиение на блоки в структуре многотипного дерева, согласно одному из примеров настоящего изобретения.
Фиг. 3B представляет схему, иллюстрирующую разбиение на блоки в структуре многотипного дерева, согласно одному из примеров настоящего изобретения.
Фиг. 3C представляет схему, иллюстрирующую разбиение на блоки в структуре многотипного дерева, согласно одному из примеров настоящего изобретения.
Фиг. 3D представляет схему, иллюстрирующую разбиение на блоки в структуре многотипного дерева, согласно одному из примеров настоящего изобретения.
Фиг. 3E представляет схему, иллюстрирующую разбиение на блоки в структуре многотипного дерева, согласно одному из примеров настоящего изобретения.
Фиг. 4 представляет иллюстрацию структуры кодирования остатка для блоков преобразования, согласно одному из примеров настоящего изобретения.
Фиг. 5 представляет иллюстрацию структуры кодирования остатка для блоков с пропуском преобразования, согласно одному из примеров настоящего изобретения.
Фиг. 6 представляет способ кодирования сигнала видео, согласно одному из примеров настоящего изобретения.
Фиг. 7 представляет способ кодирования сигнала видео, согласно одному из примеров настоящего изобретения.
Фиг. 8 представляет схему, иллюстрирующую компьютерную среду, связанную с интерфейсом пользователя, согласно одному из примеров настоящего изобретения.
Фиг. 9 иллюстрирует способ кодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 10 иллюстрирует способ кодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 11 иллюстрирует способ кодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 12 иллюстрирует способ кодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 13 представляет блок-схему, иллюстрирующую пример системы для кодирования и декодирования блоков видео, согласно одному из примеров настоящего изобретения.
Фиг. 14 представляет блок-схему, иллюстрирующую пример кодирующего устройства для видео, согласно одному из примеров настоящего изобретения.
Фиг. 15 представляет блок-схему, иллюстрирующую пример декодирующего устройства для видео согласно одному из примеров настоящего изобретения.
Фиг. 16 иллюстрирует способ кодирования остатка с пропуском преобразования (transform skip residual coding (TSRC)) с небольшой задержкой согласно одному из примеров настоящего изобретения.
Фиг. 17 иллюстрирует способ декодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 18 иллюстрирует способ декодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 19 иллюстрирует способ декодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 20 иллюстрирует способ декодирования видео, согласно одному из примеров настоящего изобретения.
Фиг. 21 иллюстрирует способ декодирования видео, согласно одному из примеров настоящего изобретения.
Осуществление изобретения
Ссылки теперь будут сделаны в более подробном описании на примеры вариантов, которые иллюстрированы на прилагаемых чертежах. Последующее описание ссылается на эти прилагаемые чертежи, где одинаковые числовые позиционные обозначения на разных чертежах представляют одинаковые или аналогичные элементы, если специально не указано иное. Варианты реализации, приведенные в последующем описании примеров вариантов, не представляют всех вариантов реализации, согласованных с настоящим изобретением. Напротив, они являются просто примерами аппаратуры и способов, согласованных с аспектами настоящего изобретения, как это указано в прилагаемой Формуле изобретения.
Терминология, используемая в настоящем изобретении, служит только для целей описания конкретных вариантов и не предназначена для ограничения настоящего изобретения. Как используется в настоящем изобретении и в прилагаемой Формуле изобретения, формы единственного числа «некий» (“a”, “an”) и «этот» (“the”) предназначены также для охвата форм множественного числа, если контекст четко не указывает иное. Также должно быть понятно, что термин «и/или» (“and/or”), используемый здесь, предназначен для обозначения и включает любые или все возможные комбинации одной или нескольких ассоциированных перечисленных позиций (объектов).
Должно быть также понятно, что хотя термины «первый», «второй», «третий» и т.д. могут использоваться здесь для описания разнообразной информации, такую информацию не следует ограничивать только этими терминами. Эти термины используются только для того, чтобы отличать одну категорию информации от другой. Например, не отклоняясь от объема настоящего изобретения, первая информация может быть названа второй информацией; и аналогично, вторая информация также может быть названа первой информацией. Как используется здесь, термин «если» может быть понят как означающий «когда» или «после» или «в ответ на вынесенное решение» в зависимости от контекста.
На Фиг. 1 показана общая схема построенного из блоков кодирующего устройства для видео для использования при кодировании VVC. В частности, на Фиг. 1 показано типовое кодирующее устройство 100. Это кодирующее устройств 100 имеет вход видео 110, модуль 112 компенсации движения, модуль оценки движения 114, модуль 116 принятия решения о внутрикадровом/межкадровом прогнозировании, предиктор 140 блока, сумматор 128, модуль 130 преобразования, модуль 132 квантования, информацию 142 относительно прогнозирования, модуль 118 внутрикадрового прогнозирования, буфер 120 изображения, модуль 134 обратного квантования, модуль 136 обратного преобразования, сумматор 126, запоминающее устройств 124, внутриконтурный фильтр 122, модуль энтропийного кодирования 138 и поток 144 битов данных.
В кодирующем устройстве 100, кадр видео разбивают на несколько блоков видео для обработки. Для каждого конкретного рассматриваемого блока видео формируют прогноз на основе либо подхода межкадрового прогнозирования, либо подхода внутрикадрового прогнозирования.
Остаток прогнозирования, представляющий разность между текущим блоком видео, частью входного видео 110, и его предиктором, частью предиктора 140 блока, передают в модуль 130 преобразования от сумматора 128. Затем коэффициенты преобразования передают от модуля 130 преобразования в модуль 132 квантования для уменьшения энтропии. Квантованные коэффициенты затем передают в модуль 138 энтропийного кодирования для генерации сжатого потока битов данных видео. Как показано на Фиг. 1, информацию 142 относительно прогнозирования от модуля 116 принятия решения о внутрикадровом/межкадровом прогнозировании, такую как информация о разбиении на блоки видео, векторы движения (motion vector (MV)), индекс опорного изображения и режим внутрикадрового прогнозирования, также передают через модуль энтропийного кодирования 138 и сохраняют в сжатом потоке 144 битов данных. Сжатый поток 144 битов данных содержит поток битов данных видео.
В кодирующем устройстве 100, также необходимо иметь схемы, относящиеся к декодирующему устройству, чтобы реконструировать пиксели для целей прогнозирования. Сначала, реконструируют остаток прогнозирования через модуль 134 обратного квантования и модуль 136 обратного преобразования. Этот реконструированный остаток прогнозирования комбинируют с предиктором 140 блока с целью генерации нефильтрованных реконструированных пикселей для текущего блока видео.
Пространственное прогнозирование (или «внутрикадровое прогнозирование») использует пиксели из отсчетов, входящих в уже кодированные соседние блоки (эти отсчеты также называются опорными отсчетами) в том же самом кадре видео, где находится текущий блок видео, для прогнозирования этого текущего блока видео.
Временное прогнозирование (также называется «межкадровым прогнозированием») использует реконструированные пиксели из уже кодированных изображений видео для прогнозирования текущего блока видео. Временное прогнозирование уменьшает временную избыточность, присущую сигналу видео. Сигнал временного прогнозирования для некой рассматриваемой единицы кодирования (coding unit (CU)) или блока кодирования обычно передают посредством одного или нескольких векторов MV, которые указывают значение и направление движения между текущей единицей CU и ее временной опорой. Далее, если поддерживаются несколько опорных изображений, дополнительно передают один индекс опорного изображения, который используется для идентификации, из какого опорного изображения, находящегося в запоминающем устройстве для опорных изображений, поступает сигнал временного прогнозирования.
Модуль 114 оценки движения получает входное видео 110 и сигнал из буфера 120 изображения и передает, модулю 112 компенсации движения, сигнал оценки движения. Модуль 112 компенсации движения получает входное видео 110, сигнал из буфера 120 изображения и сигнал оценки движения от модуля 114 оценки движения и передает в модуль 116 принятия решения о внутрикадровом/межкадровом прогнозировании сигнал компенсации движения.
После осуществления пространственного и/или временного прогнозирования модуль 116 принятия решения о внутрикадровом/межкадровом прогнозировании в кодирующем устройстве 100 выбирает наилучший режим прогнозирования, например, на основе метода оптимизации соотношения между скоростью передачи и искажениями. Затем предиктор 140 блока вычитают из текущего блока видео, и осуществляют декорреляцию полученного в результате остатка прогнозирования с использованием модуля 130 преобразования и модуля 132 квантования. Полученные в результате квантованные коэффициенты остатка подвергают обратному квантованию в модуле 134 обратного квантования и обратному преобразованию посредством модуля 136 обратного преобразования для формирования реконструированного остатка, который затем суммируют с блоком прогнозирования для образования реконструированного сигнала единицы CU. Далее к реконструированной единице CU может быть применен внутриконтурный фильтр 122, такой как деблокирующий фильтр, нелинейный фильтр с адаптивным сдвигом (sample adaptive offset (SAO)) и/или адаптивный внутриконтурный фильтр (adaptive in-loop filter (ALF)), перед тем, как записать эту реконструированную единицу CU в запоминающее устройство опорных изображений в буфере 120 изображения и использовать при кодировании будущих блоков видео. Для формирования выходного потока 144 битов данных видео, информацию о режиме кодирования (межкадровое или внутрикадровое), информацию о режиме прогнозирования, информацию о движении и квантованные коэффициенты остатка передают в модуль 138 энтропийного кодирования для дальнейшего сжатия и упаковки, чтобы сформировать поток битов данных.
На Фиг. 1 приведена блок-схема базовой гибридной системы кодирования видео, построенной из функциональных блоков. Входной сигнал видео обрабатывают блок за блоком (эти блоки называются единицами кодирования (coding unit (CU))). В стандарте VTM-1.0 единица CU может иметь размер до 128x128 пикселей. Однако в отличие от стандарта кодирования HEVC, который разбивает блоки только на основе деревьев квадратов, в стандарте кодирования VVC, одну единицу дерева кодирования (coding tree unit (CTU)) разбивают на единицы CU для адаптации к изменяющимся локальным характеристикам на основе дерева квадратов/двоичного/троичного дерева. По определению, блок дерева кодирования (coding tree block (CTB)) представляет собой блок отсчетов размером NxN для некоторой величины N, так что разделение компонента на блоки CTB является разбиением. Единица CTU содержит блок CTB отсчетов яркостной составляющей, два соответствующих блока CTB отсчетов цветностных составляющих изображения, имеющего три матрицы отсчетов, или блок CTB отсчетов монохромного изображения, или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, применяемых для кодирования отсчетов. В дополнение к этому, присутствующая в стандарте кодирования HEVC концепция нескольких типов единиц разбиения исключена, т.е. разделение единиц CU, единиц прогнозирования (prediction unit (PU)) и единиц преобразования (transform unit (TU)) более не существует в стандарте кодирования VVC; вместо этого, каждая единица CU всегда используется в качестве базовой единицы и для прогнозирования, и для преобразования без дальнейших разбиений. В структуре многотипного дерева одну единицу CTU сначала разбивают в соответствии со структурой дерева квадратов. Затем каждая концевая вершина («лист») дерева квадратов может быть далее разбита в соответствии со структурой двоичного и третичного дерева. Как показано на Фиг. 3A, 3B, 3C, 3D и 3E, имеется пять типов разбиения, четвертичное разбиение, горизонтальное двоичное разбиение, вертикальное двоичное разбиение, горизонтальное троичное разбиение и вертикальное троичное разбиение.
На Фиг. 3A показана схема, иллюстрирующая четвертичное разбиение блока в структуре многотипного дерева, в соответствии с настоящим изобретением.
На Фиг. 3B показана схема, иллюстрирующая вертикальное двоичное разбиение блока в структуре многотипного дерева, в соответствии с настоящим изобретением.
На Фиг. 3C показана схема, иллюстрирующая горизонтальное двоичное разбиение блока в структуре многотипного дерева, в соответствии с настоящим изобретением.
На Фиг. 3D показана схема, иллюстрирующая вертикальное троичное разбиение блока в структуре многотипного дерева, в соответствии с настоящим изобретением.
На Фиг. 3E показана схема, иллюстрирующая горизонтальное троичное разбиение блока в структуре многотипного дерева, в соответствии с настоящим изобретением.
В схеме, показанной на Фиг. 1, может осуществляться пространственное прогнозирование и/или временное прогнозирование. Пространственное прогнозирование (или «внутрикадровое прогнозирование») использует пиксели из отсчетов, входящих в уже кодированные соседние блоки (эти отсчеты также называются опорными отсчетами) в том же самом изображении/срезе видео для прогнозирования текущего блока видео. Пространственное прогнозирование уменьшает пространственную избыточность, присущую сигналу видео. Временное прогнозирование (также называется «межкадровым прогнозированием» или «прогнозированием с компенсацией движения») использует реконструированные пиксели из уже кодированных изображений видео для прогнозирования текущего блока видео. Временное прогнозирование уменьшает временную избыточность, присущую сигналу видео. Сигнал временного прогнозирования для некой рассматриваемой единицы кодирования (coding unit (CU)) или блока кодирования обычно передают посредством одного или нескольких векторов движения (motion vector (MV)), которые указывают значение и направление движения между текущей единицей CU и ее временной опорой. Кроме того, если поддерживаются несколько опорных изображений, дополнительно передают один индекс опорного изображения, который используется для идентификации, из какого опорного изображения, находящегося в запоминающем устройстве для опорных изображений, поступает сигнал временного прогнозирования. После осуществления пространственного и/или временного прогнозирования модуль принятия решения в кодирующем устройстве выбирает наилучший режим прогнозирования, например, на основе метода оптимизации соотношения между скоростью передачи и искажениями. Затем блок прогнозирования вычитают из текущего блока видео; и осуществляют декорреляцию полученного в результате остатка прогнозирования с использованием преобразования и квантования. Квантованные коэффициенты остатка подвергают обратному квантованию и обратному преобразованию для формирования реконструированного остатка, который затем суммируют с блоком прогнозирования для образования реконструированного сигнала единицы CU. Далее к реконструированной единице CU может быть применен внутриконтурный фильтр, такой как деблокирующий фильтр, нелинейный фильтр с адаптивным сдвигом (sample adaptive offset (SAO)) и адаптивный внутриконтурный фильтр (adaptive in-loop filter (ALF)), перед тем, как записать эту реконструированную единицу CU в запоминающее устройство опорных изображений и использовать при кодировании будущих блоков видео. Для формирования выходного потока битов данных видео, информацию о режиме кодирования (межкадровое или внутрикадровое), информацию о режиме прогнозирования, информацию о движении и квантованные коэффициенты остатка передают в модуль энтропийного кодирования для дальнейшего сжатия и упаковки, чтобы сформировать поток битов данных.
На Фиг. 2 показана общая блок-схема декодирующего устройства для видео, применяемого для стандарта кодирования VVC. В частности, на Фиг. 2 показана типовая блок-схема декодирующего устройства 200. Декодирующее устройство 200 имеет вход потока 210 битов данных, модуль 212 энтропийного декодирования, модуль 214 обратного квантования, модуль 216 обратного преобразования, сумматор 218, модуль 220 выбора режима внутрикадрового/межкадрового прогнозирования, модуль 222 внутрикадрового прогнозирования, запоминающее устройство 230, внутриконтурный фильтр 228, модуль 224 компенсации движения, буфер 226 изображения, информацию 234 относительно прогнозирования и выход 232 видео.
Декодирующее устройство 200 аналогично относящейся к реконструкции секции, входящей в кодирующее устройство 100, показанное на Фиг. 1. В декодирующем устройстве 200, входящий поток 210 битов данных видео сначала декодируют в модуле 212 энтропийного декодирования для получения уровней квантованных коэффициентов и информации, относящейся к прогнозированию. Уровни квантованных коэффициентов затем обрабатывают в модуле 214 обратного квантования и в модуле 216 обратного преобразования для получения реконструированного остатка прогнозирования. Механизм предиктора блока, реализованный в селекторе 220 режима внутрикадрового/межкадрового прогнозирования, конфигурирован для выбора осуществления функций модуля 222 внутрикадрового прогнозирования или модуля 224 компенсации движения на основе декодированной информации о прогнозировании. Суммируя реконструированный остаток прогнозирования от модуля 216 обратного преобразования с прогнозируемым выходным сигналом, генерируемым механизмом предиктора блока, с использованием сумматора 218, получают множество нефильтрованных реконструированных пикселей.
Реконструированный блок может далее пройти через внутриконтурный фильтр 228 прежде, чем он будет сохранен в буфере 226 изображения, который служит запоминающим устройством для опорных изображений. Реконструированное видео из буфера 226 изображения может быть передано для управления дисплейным устройством, а также может быть использовано для прогнозирования будущих блоков видео. В ситуациях, в которых внутриконтурный фильтр 228 включен, осуществляют операцию фильтрации применительно к этим реконструированным пикселям для получения окончательно реконструированного выходного видео 232.
На Фиг. 2 приведена общая блок-схема декодирующего устройства для видео, построенного из блоков. Сначала осуществляют энтропийное декодирование потока битов данных видео в модуле энтропийного декодирования. Указание режима кодирования и информацию о прогнозировании передают либо модулю пространственного прогнозирования (в случае внутрикадрового прогнозирования), либо модулю временного прогнозирования (в случае межкадрового прогнозирования) для формирования блока прогнозирования. Коэффициенты преобразования остатка передают в модуль обратного квантования и в модуль обратного преобразования для реконструкции блока остатка. Затем суммируют блок прогнозирования с блоком остатка. Реконструированный блок может далее пройти через внутриконтурную фильтрацию прежде его сохранения в запоминающем устройстве для опорных изображений. Реконструированное видео из запоминающего устройства опорных изображений затем передают для управления дисплейным устройством, а также используют при кодировании будущих блоков видео.
Кодирование коэффициентов преобразования в стандарте кодирования VVC
При кодировании коэффициентов преобразования в стандарте кодирования VVC, сначала переменную remBinsPass1 устанавливают равной максимально допустимому числу контекстно-кодированных секций (maximum number of context-coded bins (MCCB)). В процессе кодирования эту переменную уменьшают на единицу каждый раз, когда происходит передача контекстно-кодированной секции. Пока переменная remBinsPass1 не меньше четырех, коэффициент сначала передают посредством синтаксисов флага sig_coeff_flag, флага abs_level_gt1_flag, флага par_level_flag и флага abs_level_gt3_flag, все с использованием контекстно-кодированных секций в первом проходе. Остальную часть информации об уровнях коэффициентов кодируют с применением синтаксического элемента abs_remainder с использованием кода Голомба-Райса и секций, кодированных в режиме обхода, во втором проходе. Когда переменная remBinsPass1 становится меньше 4 в ходе кодирования первого прохода, текущий коэффициент не кодируют в первом проходе, но непосредственно кодируют во втором проходе с применением синтаксического элемента dec_abs_level с использованием кода Голомба-Райса и секций, кодированных в режиме обхода. Процедуру получения параметра Райса для элемента dec_abs_level[ ] определяют, как это определено в Табл. 1A. После кодирования всех упомянутых выше уровней, знаки (sign_flag) для всех позиций сканирования с флагом sig_coeff_flag равным 1 окончательно кодируют как обходные секции. Такая процедура показана на Фиг. 4. Переменную remBinsPass1 возвращают в начальное состояние («сбрасывают») для каждого блока TB. Переход от контекстно-кодированных секций для флага sig_coeff_flag, флага abs_level_gt1_flag, флага par_level_flag и флага abs_level_gt3_flag к использованию секций, кодированных в режиме обхода, для остальных коэффициентов случается только самое большее один раз для каждого блока TB. Для субблока коэффициентов, если переменная remBinsPass1 меньше 4 прежде кодирования самого первого коэффициента субблока, весь субблок коэффициентов кодируют с использованием секций, кодированных в режиме обхода.
На Фиг. 4 показана иллюстрация структуры кодирования остатка для блоков преобразования.
Таблица 1A. Процедура определения параметра Райса для abs_remainder[ ] и dec_abs_level[ ]
Выходными данными этой процедуры является параметр Райса cRiceParam.
Имея матрицу AbsLevel[ x ][ y ] для блока преобразования с индексом составляющей cIdx и позицией ( x0, y0 ) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
}
locSumAbs = Clip3( 0, 31, locSumAbs - baseLevel * 5 )
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B ниже.
Когда параметр baseLevel равен 0, переменную ZeroPos[ n ] определяют следующим образом:
ZeroPos[ n ] = ( QState < 2 ? 1 : 2 ) << cRiceParam
Таблица 1B. Спецификация параметра cRiceParam на основе переменной locSumAbs
Кодирование остатка для режима пропуска преобразования в стандарте кодирования VVC
В режиме пропуска преобразования, статистические характеристики сигнала остатка отличаются от таких характеристик коэффициентов преобразования, и не наблюдается концентрация энергии вокруг низкочастотных составляющих. Кодирование остатка модифицировано для учета различных характеристик сигнала остатка в режиме пропуска преобразования (при пространственном прогнозировании).
На Фиг. 5 показана иллюстрация структуры кодирования остатка для блоков с пропуском преобразования.
Общая информация об ограничениях
Структура общей информации об ограничениях (General constraint information (GCI)) содержит несколько типов ограничивающих синтаксических элементов, включая: Флаги для общих ограничений потока битов данных, таких как указание, что используется только кодирование с внутрикадровым прогнозированием, что все слои кодируются независимо, или что поток битов данных содержит только одну единицу AU; Поля, ограничивающие битовую глубину и формат цветностной составляющей для кодированных изображений; Флаги, указывающие, что не допускается присутствие определенных единиц слоя NAL в потоке битов данных; Флаги, ограничивающие способы разбиения изображений на срезы, плитки и фрагменты изображения в пределах потока битов данных; Флаги, ограничивающие размер единиц CTU, равно как размер и тип деревьев разбиения; Флаги, ограничивающие использованием конкретных инструментов кодирования с внутрикадровым прогнозированием; Флаги, ограничивающие использованием конкретных инструментов кодирования с межкадровым прогнозированием; Флаги, ограничивающие инструменты преобразования, квантования и кодирования остатка; и Флаги, ограничивающие аспекты внутриконтурных фильтров.
Целью синтаксической структуры информации GCI является позволить просто обнаруживать конфигурационную информацию относительно характеристик, необходимых для декодирования потока битов данных, и позволить сигнализировать о точках взаимодействия, которая накладывает ограничения сверх того, что определено Профилем, Ярусом и Уровнем (Profile, Tier и Level (PTL)), с более мелкой зернистостью, чем это позволяют предшествующие стандарты кодирования видео. Аналогично субпрофилям, использование синтаксической структуры информации GCI может позволить определить взаимодействие для вариантов реализации декодирующего устройства, которые не поддерживают все характеристики профиля кодирования VVC, но удовлетворяют потребностям конкретных приложений. Варианты реализации декодирующего устройства могут исследовать синтаксические элементы информации GCI для проверки, избегает ли поток битов данных использования конкретных характеристик, чтобы определить, как конфигурировать процедуру декодирования и идентифицировать, может ли рассматриваемый поток битов данных быть декодирован посредством конкретного декодирующего устройства. Варианты реализации декодирующего устройства, которые поддерживают все характеристики профиля кодирования VVC, могут игнорировать значения синтаксических элементов информации GCI, поскольку такие декодирующие устройства будут способны декодировать любой поток битов данных, удовлетворяющий указанной группе параметров PTL.
Кодирование остатка в режиме пропуска преобразования
Согласно одному или нескольким примерам настоящего изобретения, предлагается использовать различные наборы двоичных кодовых слов для кодирования определенных синтаксических элементов, например, abs_remainder, при кодировании остатка с пропуском преобразования, и выбор определяется в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования или битовой глубиной кодирования, ассоциированными с блоком TB/CB и/или срезом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем блока TB/блока CB/среза/изображения/последовательности, например, флагом extended_precision_processing_flag. Для определения различных наборов двоичных кодовых слов могут быть использованы различные способы, и некоторые примеры этих способов перечислены далее.
Первое, для определения кодового слоя для элемента abs_remainder используется такая же процедура, какая применяется в текущей версии стандарта кодирования VVC, но всегда с выбранным фиксированным параметром Райса (например, 2, 3, 4, 5, 6, 7 или 8). Это фиксированное значение может быть различным в разных условиях в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования, типом кадра (например, I, P или B ), идентификатором (ID) составляющей (например, яркостной или цветностной составляющей), цветовым форматом (например, 420, 422 или 444) или битовой глубиной кодирования, ассоциированной с блоком TB/CB и/или срезом/профилем, и/или в соответствии с синтаксическим элементом, ассоциированным с уровнем блока TB/блока CB/среза/изображения/последовательности, например, значением rice_ parameter_value. В одном конкретном примере значения с TH1 по TH4 представляют собой заданные пороговые уровни, удовлетворяющие соотношению (TH1 < TH2 < TH3 < TH4), и значения с K0 по K4 представляют собой заданные параметры Райса. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса на основе значения параметра BitDepth или текущей единицы CU/Последовательности.
Второе, бинаризация фиксированной длины.
Третье, усеченная бинаризации Райса.
Четвертое, усеченная процедура двоичной бинаризации (блока TB).
Пятое, процедура бинаризации в экспоненциальном коде Голомба k-го порядка (EGk).
Шестое, ограниченная бинаризация в экспоненциальном коде Голомба k-го порядка
Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, изменения в проекте стандарта VVC Draft показаны в Табл. 1 жирным курсивом, а удаленный контент показан курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 1. Процедура определения параметра Райса
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
if(BitDepth <11)
{ rice parameter = 1}
else if(BitDepth <13)
{ rice parameter = 4}
else if(BitDepth <15)
{ rice parameter = 6}
else
{ rice parameter = 8}
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
В другом примере, предлагается использовать только одно фиксированное значение параметра Райса при кодировании синтаксического элемента abs_remainder, когда новый флаг, например, флаг extended_precision_processing_flag, равен 1. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, изменения в проекте стандарта VVC Draft показаны жирным курсивом, а удаленный контент показан курсивом. Изменения в проекте стандарта VVC Draft показаны в Табл. 2 жирным курсивом.
Таблица 2. Процедура определения параметра Райса
Если флаг extended_precision_processing_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
if(BitDepth <11)
{ rice parameter = 1}
else if(BitDepth <13)
{ rice parameter = 4}
else if(BitDepth <15)
{ rice parameter = 6}
else
{ rice parameter = 8}
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, когда новый флаг, например, флаг extended_precision_processing_flag, равен 1, значение параметра Райса cRiceParam фиксируют равным n, где n - положительное целое число (например, 2, 3, 4, 5, 6, 7 или 8). Это фиксированное значение может быть различным в разных условиях. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, изменения в проекте стандарта VVC Draft показаны жирным курсивом, а удаленный контент показан курсивом. Изменения в проекте стандарта VVC Draft показаны в Табл. 3 жирным курсивом.
Таблица 3. Процедура определения параметра Райса
Если флаг extended_precision_processing_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 7.
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, когда параметр BitDepth не меньше заданного порогового уровня (например, 10, 11, 12, 13, 14, 15 или 16), значение параметра Райса cRiceParam фиксируют равным n, где n - положительное целое число, например, 4, 5, 6, 7 или 8. Это фиксированное значение может быть различным в разных условиях. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где значение TH представляет собой заданный пороговый уровень (например, 10, 11, 12, 13, 14, 15 или 16) и изменения показаны жирным курсивом, а удаленный контент показан курсивом. Изменения в проекте стандарта VVC Draft показаны в Табл. 4 жирным курсивом.
Таблица 4. Процедура определения параметра Райса
Если параметр BitDepth больше уровня TH, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 7.
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, один флаг управления передают в виде сигнализации в заголовке среза, чтобы указать, разрешена или запрещена сигнализация параметра Райса для блоков с пропуском преобразования. Когда этот флаг управления сигнализируют как разрешающий, для каждого среза с пропуском преобразования дополнительно передают один синтаксический элемент , чтобы указать параметр Райса для этого среза. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданное значение (например, 0, 1, 2), и изменения показаны жирным курсивом, а удаленный контент показан курсивом. Изменения в проекте стандарта VVC Draft показаны в Табл. 5 жирным курсивом. Следует отметить, что индекс sh_ts_residual_coding_rice_index может быть кодирован различными способами и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис заголовка среза
Таблица 5. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Флаг sh_ts_residual_coding_rice_flag равный 1 указывает, что в текущем срезе может быть представлен индекс sh_ts_residual_coding_rice_index. Флаг sh_ts_residual_coding_rice_flag равный 0 указывает, что в текущем срезе не присутствует индекс sh_ts_residual_coding_rice_index. Когда флаг sh_ts_residual_coding_rice_flag не присутствует, значение флага sh_ts_residual_coding_rice_flag считают равным 0.
Индекс sh_ts_residual_coding_rice_ index указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ).
Таблица 6. Процедура определения параметра Райса
Если флаг sh_ts_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (sh_ts_residual_coding_rice_ index+TH).
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, один флаг управления передают в виде сигнализации в наборе параметров последовательности (или в синтаксисе расширения диапазона набора параметров последовательности) для индикации разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования. Когда этот флаг управления сигнализируют как разрешающий, для каждого среза с пропуском преобразования дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для этого среза. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданное значение (например, 0, 1, 2). Изменения в проекте стандарта VVC Draft показаны в Табл. 7 жирным курсивом, а удаленный контент показан курсивом. Следует отметить, что индекс sh_ts_residual_coding_rice_idx может быть кодирован различными способами или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис набора параметров последовательности RBSP
Таблица 7. Синтаксис кодирования остатка
Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 1 указывает, что индекс sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах заголовков SH, относящихся к набору SPS. Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 0 указывает, что индекс sh_ts_residual_coding_rice_idx не присутствует в синтаксических структурах заголовков SH, относящихся к набору SPS. Когда флаг sps_ts_residual_coding_rice_present_in_sh_flag не присутствует, значение флага sps_ts_residual_coding_rice_present_in_sh_flag считают равным 0.
Синтаксис заголовка среза
Таблица 8. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Индекс sh_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ).
Таблица 9. Процедура определения параметра Райса
Если флаг sps_ts_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (sh_ts_residual_coding_rice_ idx+TH).
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
В одном или нескольких примерах настоящего изобретения, предлагается запретить присутствие параметра Райса для кодирования остатка с пропуском преобразования, если пропуск преобразования запрещен. В одном конкретном примере, для выполнения такого проектного требования, предлагается использовать флаг sps_transform_skip_enabled_flag, чтобы обусловить присутствие флага sps_ts_residual_coding_rice_present_in_sh_flag. Например, когда флаг sps_transform_skip_enabled_flag равен нулю (т.е. режим пропуска преобразования запрещен в текущем изображении), флаг sps_ts_residual_coding_rice_present_in_sh_flag не сообщают в виде сигнализации, а считают равным 0. Когда флаг sps_transform_skip_enabled_flag равен единице, дополнительно передают в виде сигнализации флаг sps_ts_residual_coding_rice_present_in_sh_flag. Изменения для сегодняшнего рабочего проекта стандарта кодирования VVC показаны курсивом ниже.
В другом конкретном примере, для выполнения такого проектного требования, предлагается добавить требование соответствия потока битов данных в отношении флага sps_transform_skip_enabled_flag для флага sps_ts_residual_coding_rice_present_in_sh_flag. Например, одно из требований соответствия потока битов данных состоит в том, что значение флага sps_ts_residual_coding_rice_present_in_sh_flag должно быть равно 0, когда флаг sps_transform_skip_enabled_flag равен 0. Изменения для сегодняшнего рабочего проекта стандарта кодирования VVC показаны курсивом ниже.
Семантика расширения диапазона набора параметров последовательности
Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 1 указывает, что параметр sh_ts_residual_coding_rice_idx_minus1 может присутствовать в синтаксических структурах slice_header( ), относящихся к набору SPS. Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 0 указывает, что параметр sh_ts_residual_coding_rice_idx_minus1 не присутствует в синтаксических структурах slice_header( ), относящихся к набору SPS. Когда флаг sps_ts_residual_coding_rice_present_in_sh_flag не присутствует, значение флага sps_ts_residual_coding_rice_present_in_sh_flag считают равным 0.
Одно из требований соответствия потока битов данных состоит в том, что значение флага sps_ts_residual_coding_rice_present_in_sh_flag должно быть равно 0, когда флаг sps_transform_skip_enabled_flag равен 0.
Еще в одном другом примере, когда флаг пропуска преобразования (sps_transform_skip_enabled_flag) сигнализируют как разрешающий, один флаг управления дополнительно передают в виде сигнализации в наборе параметров последовательности (или в синтаксисе расширения диапазона набора параметров последовательности) для индикации, разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования. Когда этот флаг управления сигнализируют как разрешающий, для каждого среза с пропуском преобразования дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для этого среза. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft показаны курсивом.
Синтаксис набора параметров последовательности RBSP
Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 1 указывает, что индекс sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах заголовков SH, относящихся к набору SPS. Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 0 указывает, что индекс sh_ts_residual_coding_rice_idx_minus1 не присутствует в синтаксических структурах заголовков SH, относящихся к набору SPS. Когда флаг sps_ts_residual_coding_rice_present_in_sh_flag не присутствует, значение флага sps_ts_residual_coding_rice_present_in_sh_flag считают равным 0.
Синтаксис заголовка среза
!sh_sign_data_hiding_used_flag )
Индекс sh_ts_residual_coding_rice_idx_minus1 плюс 1, указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс не присутствует sh_ts_residual_coding_rice_idx_minus1, значение индекса sh_ts_residual_coding_rice_idx_minus1 считают равным 0.
9.3.3.11 Процедура бинаризации для элемента abs_remainder[ ]
Входными данными для этой процедуры являются запрос на бинаризацию синтаксического элемента abs_remainder[ n ], индекс cIdx цветовой составляющей, индекс i текущего субблока, и позиция ( x0, y0 ) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования яркостной составляющей относительно верхнего-левого отсчета рассматриваемого изображения, позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight.
Результатом этой роцедуры является бинаризация рассматриваемого синтаксического элемента.
Переменные lastAbsRemainder и lastRiceParam определяют следующим образом:
- Если эту процедуру вызывают первый раз для индекса i текущего субблока, обе переменные lastAbsRemainder и lastRiceParam устанавливают равными 0.
- В противном случае (эту процедуру вызывают не первый раз для индекса i текущего субблока), переменную lastAbsRemainder и переменную lastRiceParam устанавливают равными значениями элемента abs_remainder[ n ] и параметра cRiceParam, соответственно, которые были определены во время последнего вызова процедуры бинаризации для синтаксического элемента abs_remainder[ n ], как это определено в настоящей статье.
Параметр Райса cRiceParam определяют следующим образом:
- Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным sh_ts_residual_coding_rice_idx_minus1+1.
- В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в статье 9.3.3.2, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, передают в виде сигнализации один синтаксический элемент для каждого среза с пропуском преобразования, чтобы указать параметр Райса для этого среза. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft показаны в Табл. 10 жирным курсивом. Следует отметить, что индекс sh_ts_residual_coding_rice_idx может быть кодирован различными способами и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис заголовка среза
Таблица 10. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Индекс sh_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс sh_ts_residual_coding_rice_idx не присутствует, значение индекса sh_ts_residual_coding_rice_idx считают равным 0.
Таблица 11. Процедура определения параметра Райса
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным sh_ts_residual_coding_rice_idx+1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, один флаг управления дополнительно передают в виде сигнализации в синтаксисе расширения диапазона набора параметров изображения для индикации, разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования. Когда этот флаг управления сигнализируют как разрешающий, дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для этого изображения. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданное значение (например, 0, 1, 2). Изменения в проекте стандарта VVC Draft показаны в Табл. 12 жирным курсивом. Следует отметить, что индекс pps_ts_residual_coding_rice_idx может быть кодирован различными способами и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис расширений диапазона набора параметров изображения
Таблица 12. Синтаксис кодирования остатка
Флаг pps_ts_residual_coding_rice_flag равный 1 указывает, что индекс pps_ts_residual_coding_rice_index может присутствовать в текущем изображении. Флаг pps_ts_residual_coding_rice_flag равный 0 указывает, что индекс pps_ts_residual_coding_rice_idx не присутствует в текущем изображении. Когда флаг pps_ts_residual_coding_rice_flag не присутствует, значение флага pps_ts_residual_coding_rice_flag считают равным 0.
Индекс pps_ts_residual_coding_rice_ idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ).
Таблица 13. Процедура определения параметра Райса
Если флаг pps_ts_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (pps_ts_residual_coding_rice_ idx+TH).
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, предлагается использовать только изменяющийся параметр Райса для кодирования синтаксического элемента abs_remainder. Значение применяемого параметра Райса может быть определено в соответствии с определенной кодированной информацией текущего блока, например, размера блока, параметра квантования, битовой глубины, типов преобразования и т.д. В одном конкретном варианте, предлагается регулировать параметр Райса на основе битовой глубины кодирования и параметра квантования, применяемого к одной единице CU. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, изменения в проекте стандарта VVC Draft показаны в Табл. 14 жирным курсивом, а удаленный контент показан курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 14. Процедура определения параметра Райса
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
if(BitDepth <11)
{rice parameter = 1}
else if(BitDepth <13)
{if(QPCU <-15) {
rice parameter = 6}
else if(QPCU <-10)
{ rice parameter = 5}
else if(QPCU <0)
{ rice parameter = 4}
else if(QPCU <10)
{ rice parameter = 3}
else
{ rice parameter = 2}}
else if(BitDepth <15)
{if(QPCU <-25) { rice parameter = 7}
else if(QPCU <-15)
{ rice parameter = 6}
else if(QPCU <-10)
{ rice parameter = 5}
else
{ rice parameter = 4}}
else
{ if(QPCU <-30) {
rice parameter = 8}
else if(QPCU <-25)
{ rice parameter = 7}
else if(QPCU <-15)
{ rice parameter = 6}
else if(QPCU <-10)
{ rice parameter = 5}
else
{ rice parameter = 4}}
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где TH представляет собой заданный пороговый уровень (например, 33 или 34). Изменения в проекте стандарта VVC Draft показаны в Табл. 15 жирным курсивом, а удаленный контент показан курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 15. Процедура определения параметра Райса
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, 8, Floor( (TH - BitDepth -QPCU)/6 ) )
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где THA и THB представляют собой заданные пороговые уровни (например, THA=8 и THB=33 или 34). Изменения в проекте стандарта VVC Draft показаны в Табл. 16 жирным курсивом, а удаленный контент показан курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 16. Процедура определения параметра Райса
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, BitDepth - THA, Floor( (THB - BitDepth -QPCU)/6 ) )
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, предлагается использовать только изменяющийся параметр Райса для кодирования синтаксического элемента abs_remainder, когда новый флаг, например, флаг extended_precision_processing_flag, равен 1. Это изменяющееся значение может быть определено в соответствии с определенной кодированной информацией текущего блока, например, размером блока, параметром квантования, битовой глубиной, типами преобразования и т.д. В одном конкретном варианте, предлагается регулировать параметр Райса на основе битовой глубины кодирования и параметра квантования, применяемого к одной единице CU. Соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже. Изменения в проекте стандарта VVC Draft показаны в Табл. 17 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 17. Процедура определения параметра Райса
Если флаг extended_precision_processing_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
if(QPCU <-30)
{ rice parameter = 8}
else if(QPCU <-25)
{ rice parameter = 7}
else if(QPCU <-15)
{ rice parameter = 6}
else if(QPCU <-10)
{ rice parameter = 5}
else if(QPCU <0)
{ rice parameter = 4}
else if(QPCU <10)
{ rice parameter = 3}
else if(QPCU <15)
{ rice parameter = 2}
else
{ rice parameter = 1}
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где TH представляет собой заданный пороговый уровень (например, 18, 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 18 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 18. Процедура определения параметра Райса
Если флаг extended_precision_processing_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, 8, (TH - QP)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где THA и THB представляют собой заданные пороговые уровни (например, THA=8 и THB=18 или 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 19 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 19. Процедура определения параметра Райса
Если флаг extended_precision_processing_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, BitDepth - THA, (THB - QP)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
На Фиг. 6 показан способ кодирования видео. Этот способ может быть применен, например, в кодирующем устройстве. На этапе 1610, кодирующее устройств может принять входное видео. Это входное видео может представлять собой, например, поток прямой трансляции. На этапе 1612, кодирующее устройство может получить параметр квантования на основе входного видео. Этот параметр квантования может, например, быть вычислен модулем квантования в кодирующем устройстве. На этапе 1614, кодирующее устройство может определить параметр Райса на основе по меньшей мере одной из характеристик - заданного порогового уровня, битовой длины кодирования и/или параметра квантования. Этот параметр Райса используется, например, для сигнализации синтаксических элементов abs_remainder и dec_abs_level. На этапе 1616 кодирующее устройств может осуществить энтропийное кодирование потока битов данных видео на основе параметра Райса. Этот поток битов данных видео может, например, быть подвергнут энтропийному кодированию для генерации сжатого потока битов данных видео.
Еще в одном другом примере, предлагается использовать только фиксированное значение (например, 2, 3, 4, 5, 6, 7 или 8) параметра Райса при кодировании синтаксического элемента abs_remainder, когда параметр BitDepth больше 10. Это фиксированное значение может быть различным в разных условиях в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования. Соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где TH представляет собой заданный пороговый уровень (например, 18, 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 20 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 20. Процедура определения параметра Райса
Если параметр BitDepth больше 10, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, 8, (TH - QP)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где THA и THB представляют собой заданные пороговые уровни (например, THA=8, THB=18 или 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 21 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 21. Процедура определения параметра Райса
Если параметр BitDepth больше 10, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, BitDepth - THA, (THB - QP)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где TH представляет собой заданный пороговый уровень (например, 22 или 34). Изменения в проекте стандарта VVC Draft показаны в Табл. 22 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 22. Процедура определения параметра Райса
Если параметр BitDepth больше 10, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, 8, (TH - BitDepth -QPCU)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где THA и THB представляют собой заданные пороговые уровни (например, THA=8, THB=33 или 34). Изменения в проекте стандарта VVC Draft показаны в Табл. 23 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 23. Процедура определения параметра Райса
Если параметр BitDepth больше 10, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, BitDepth - THA, (THB - BitDepth -QPCU)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Следует отметить, что в приведенном выше материале иллюстрации и уравнения, используемые для вычисления конкретных параметров Райса, используются только в качестве примеров для иллюстрации предлагаемых идей. Для специалиста, разбирающегося в современных способах кодирования видео, должно быть понятно, что другие способы отображения (или эквивалентно уравнения отображения) могут быть сразу применены к предлагаемым идеям (т.е. к определению параметра Райса для режима пропуска преобразования на основе битов кодирования и применяемого параметра квантования). В то же время, следует также отметить, что в сегодняшней конфигурации стандарта кодирования VVC, допускается изменение значения применяемого параметра квантования на уровне групп блоков кодирования. Поэтому предлагаемая схема регулирования параметра Райса может обеспечить гибкую адаптацию параметров Райса в режиме пропуска преобразования на уровне групп блоков кодирования.
Способ передачи в виде сигнализации информации для обычного кодирования остатка и кодирования остатка с пропуском преобразования
В соответствии с одним или несколькими примерами настоящего изобретения, предлагается передавать в виде сигнализации параметр Райса двоичных кодовых слов для кодирования определенных синтаксических элементов, например, элемента abs_remainder при кодировании остатка с пропуском преобразования, параметров сдвига и смещения для определения параметра Райса, используемого для элементов abs_remainder/dec_abs_level при обычном кодировании остатка, и определять, следует ли передавать сигнализацию в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования или битовой глубиной кодирования, ассоциированными с блоком TB/CB и/или срезом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем блока TB/блока CB/среза/изображения/последовательности, например с флагом sps_residual_coding_info_present_in_sh_flag.
В одном из примеров, один флаг управления дополнительно передают в виде сигнализации в заголовке среза для индикации, разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования и передача в виде сигнализации параметров сдвига и/или смещения для определения параметра Райса для блоков преобразования. Когда этот флаг управления сигнализируют как разрешающий, для каждого среза с пропуском преобразования дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для этого среза, и два синтаксических элемента дополнительно передают для каждого среза с преобразованием, чтобы указать параметры сдвига и/или смещения для определения параметра Райса для этого среза. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1), а также на более низком уровне не передают никаких дополнительных синтаксических элементов с целью указания параметров сдвига и смещения для определения параметра Райса для среза с преобразованием, и для всех срезов с преобразованием используют параметры сдвига и/или смещения по умолчанию (например, 0). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданный пороговый уровень (например, 0, 1, 2). Изменения в проекте стандарта VVC Draft показаны в Табл. 24 жирным курсивом. Следует отметить, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_ts_residual_coding_rice_index могут быть кодированы различными способами и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
На Фиг. 7 показан способ декодирования видео. Этот способ может быть применен, например, в кодирующем устройстве. На этапе 1710, кодирующее устройство может принять входное видео. На этапе 1712, это кодирующее устройство может передать в виде сигнализации параметр Райса из двоичных кодовых слов для кодирования синтаксических элементов. К таким кодируемым синтаксическим элементам может относиться элемент abs_remainder при кодировании остатка с пропуском преобразования. На этапе 1714, кодирующее устройство может осуществлять энтропийное кодирование потока битов данных на основе параметра Райса и входного видео.
Синтаксис заголовка среза
Таблица 24. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Флаг sh_residual_coding_rice_flag равный 1 указывает, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_residual_coding_rice_index могут присутствовать в текущем срезе. Флаг sh_residual_coding_rice_flag равный 0 указывает, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_residual_coding_rice_index не присутствуют в текущем срезе.
Параметр sh_residual_coding_rice_shift указывает параметр сдвига, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр sh_residual_coding_rice_shift не присутствует, значение параметра sh_residual_coding_rice_shift считают равным 0.
Параметр sh_residual_coding_rice_offset спефицирует параметр смещения, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр sh_residual_coding_rice_offset не присутствует, значение параметра sh_residual_coding_rice_offset считают равным 0.
Индекс sh_ts_residual_coding_rice_index указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс sh_ts_residual_coding_rice_index не присутствует, значение индекса sh_ts_residual_coding_rice_index считают равным 0.
Таблица 25. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если флаг sh_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (sh_ts_residual_coding_rice_index+TH).
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
…
Таблица 26. Процедура определения параметра Райса
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция ( x0, y0 ) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight, параметр sh_residual_coding_rice_shift, и параметр sh_residual_coding_rice_offset.
Выходными данными этой процедуры является параметр Райса cRiceParam.
Имея матрицу AbsLevel[ x ][ y ] для блока преобразования с индексом составляющей cIdx и позицией ( x0, y0 ) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
}
locSumAbs = Clip3( 0, 31, ( (locSumAbs+ sh_residual_coding_rice_offset)>> sh_residual_coding_rice_shift) - baseLevel * 5 )
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют как это определено в Табл. 1B.
cRiceParam = cRiceParam+ sh_residual_coding_rice_shift
Когда параметр baseLevel равен 0, переменную ZeroPos[ n ] определяют следующим образом:
ZeroPos[ n ] = ( QState < 2 ? 1 : 2 ) << cRiceParam
В другом примере, один флаг управления передают в виде сигнализации в наборе параметров последовательности (или в синтаксисе расширения диапазона набора параметров последовательности) для индикации, разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования и передача в виде сигнализации параметров сдвига и/или смещения для определения параметра Райса для блоков преобразования. Когда этот флаг управления сигнализируют как разрешающий, для каждого среза с пропуском преобразования дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для этого среза, и два синтаксических элемента дополнительно передают для каждого среза с преобразованием, чтобы указать параметры сдвига и/или смещения для определения параметра Райса для этого среза. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для рассматриваемого среза с пропуском преобразования, и для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1), а также на более низком уровне не передают никаких дополнительных синтаксических элементов с целью указания параметров сдвига и смещения для определения параметра Райса для среза с преобразованием, и для всех срезов с преобразованием используют параметры сдвига и/или смещения по умолчанию (например, 0). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданное пороговое значение (например, 0, 1, 2). Изменения в проекте стандарта VVC Draft показаны в Табл. 27 жирным курсивом. Следует отметить, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_ts_residual_coding_rice_idx могут быть кодированы различными способами и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис набора параметров последовательности RBSP
Таблица 27. Синтаксис кодирования остатка
Флаг sps_residual_coding_info_present_in_sh_flag равный 1 указывает, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_ts_residual_coding_rice_idx могут присутствовать в синтаксических структурах заголовков SH, относящихся к набору SPS. Флаг sps_residual_coding_info_present_in_sh_flag равный 0 указывает, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_ts_residual_coding_rice_idx не присутствуют в синтаксических структурах заголовков SH, относящихся к набору SPS. Когда флаг sps_residual_coding_info_present_in_sh_flag не присутствует, значение флага sps_residual_coding_info_present_in_sh_flag считают равным 0.
Синтаксис заголовка среза
Таблица 28. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Параметр sh_residual_coding_rice_shift указывает параметр сдвига, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр sh_residual_coding_rice_shift не присутствует, значение параметра sh_residual_coding_rice_shift считают равным 0.
Параметр sh_residual_coding_rice_offset указывает параметр смещения, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр sh_residual_coding_rice_offset не присутствует, значение параметра sh_residual_coding_rice_offset считают равным 0.
Индекс sh_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс sh_ts_residual_coding_rice_index не присутствует, значение индекса sh_ts_residual_coding_rice_ index считают равным 0.
Таблица 29. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если флаг sps_ts_residual_coding_info_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (sh_ts_residual_coding_rice_idx+TH).
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей ( x0, y0 ), позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
…
Таблица 30. Процедура определения параметра Райса
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция ( x0, y0 ) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования ( xC, yC ) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight, параметр sh_residual_coding_rice_shift, и параметр sh_residual_coding_rice_offset.
Выходными данными этой процедуры является параметр Райса cRiceParam.
С учетом матрицы AbsLevel[ x ][ y ] для блока преобразования с индексом составляющей cIdx и позицией ( x0, y0 ) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[ xC + 1 ][ yC ]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[ xC + 2 ][ yC ]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[ xC + 1 ][ yC + 1 ] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[ xC ][ yC + 1 ]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[ xC ][ yC + 2 ]
}
locSumAbs = Clip3( 0, 31, ( (locSumAbs+ sh_residual_coding_rice_offset)>> sh_residual_coding_rice_shift) - baseLevel * 5 )
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B.
cRiceParam = cRiceParam+ sh_residual_coding_rice_shift
Когда параметр baseLevel равен 0, переменную ZeroPos[ n ] определяют следующим образом:
ZeroPos[ n ] = (QState < 2 ? 1 : 2 ) << cRiceParam
Еще в одном другом примере, передают в виде сигнализации один синтаксический элемент для каждого среза с пропуском преобразования, чтобы указать параметр Райса для этого среза, а также передают два синтаксических элемента для каждого среза с преобразованием, чтобы указать параметры сдвига и/или смещения для определения параметра Райса для этого среза. Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft показаны в Табл. 31 жирным курсивом. Следует отметить, что параметр sh_residual_coding_rice_shift, параметр sh_residual_coding_rice_offset и индекс sh_ts_residual_coding_rice_idx могут быть кодированы различными способами и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис заголовка среза
Таблица 31. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Индекс sh_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс sh_ts_residual_coding_rice_idx не присутствует, значение индекса sh_ts_residual_coding_rice_idx считают равным 0.
Смещение sh_residual_coding_rice_offset указывает параметр смещения, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр sh_residual_coding_rice_offset не присутствует, значение параметра sh_residual_coding_rice_offset считают равным 0.
Индекс sh_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс sh_ts_residual_coding_rice_idx не присутствует, значение индекса sh_ts_residual_coding_rice_idx считают равным 0.
Таблица 32. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если флаг transform_skip_flag[x0][y0][cIdx] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным sh_ts_residual_coding_rice_idx+1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей (x0, y0), позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
…
Таблица 33. Процедура определения параметра Райса
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция (x0, y0) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight, параметр sh_residual_coding_rice_shift, и параметр sh_residual_coding_rice_offset.
Выходными данными этой процедуры является параметр Райса cRiceParam.
С учетом матрицы AbsLevel[x][y] для блока преобразования с индексом составляющей cIdx и позицией (x0, y0) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[xC + 1][yC]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[xC + 2][yC]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[xC + 1][yC + 1] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[xC][yC + 1]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[xC][yC + 2]
}
locSumAbs = Clip3(0, 31, ( (locSumAbs+ sh_residual_coding_rice_offset)>> sh_residual_coding_rice_shift) - baseLevel * 5 )
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B.
cRiceParam = cRiceParam+ sh_residual_coding_rice_shift
Когда параметр baseLevel равен 0, переменную ZeroPos[n] определяют следующим образом:
ZeroPos[n] = (QState <2?1:2)<<cRiceParam
Еще в одном другом примере, один флаг управления дополнительно передают в виде сигнализации в синтаксисе расширения диапазона набора параметров изображения для индикации, разрешена или запрещена передача в виде сигнализации параметра Райса для блоков с пропуском преобразования и передача в виде сигнализации параметров сдвига и/или смещения для определения параметра Райса для блоков преобразования. Когда этот флаг управления сигнализируют как разрешающий, дополнительно передают один синтаксический элемент, чтобы указать параметр Райса для кодирования остатка с пропуском преобразования для этого изображения, и два синтаксических элемента дополнительно передают для обычного кодирования остатка, чтобы указать параметры сдвига и/или смещения для определения параметра Райса для этого изображения. Когда этот флаг управления сигнализируют как запрещающий, (например, установленный равным “0”), на более низком уровне не передают никаких дополнительных синтаксических элементов, чтобы указать параметр Райса для кодирования остатка с пропуском преобразования, и для всех случаев кодирования остатка с пропуском преобразования используют параметр Райса по умолчанию (например, 1), а также на более низком уровне не передают никаких дополнительных синтаксических элементов с целью указания параметров сдвига и смещения для определения параметра Райса для обычного кодирования остатка, и для всех случаев обычного кодирования остатка используют параметры сдвига и/или смещения по умолчанию (например, 0). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где TH представляет собой заданное значение (например, 0, 1, 2). Изменения в проекте стандарта VVC Draft показаны в Табл. 34 жирным курсивом. Следует отметить, что параметр pps_residual_coding_rice_shift, параметр pps_residual_coding_rice_offset и индекс pps_ts_residual_coding_rice_idx могут быть кодированы различными способами и/или могут иметь максимальное значение. Например, u(n), целое число без знака, использующее n бит, или f(n), битовая строка с фиксированным шаблоном, использующая n бит, записанных (слева направо) так, что левый бит записан первым, также могут быть использованы для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис расширений диапазона набора параметров изображения
Таблица 34. Синтаксис кодирования остатка
Флаг pps_residual_coding_info_flag равный 1 указывает, что параметр pps_residual_coding_rice_shift, параметр pps_residual_coding_rice_offset и индекс pps_ts_residual_coding_rice_index могут присутствовать в текущем изображении. Флаг pps_residual_coding_info_flag равный 0 указывает, что параметр pps_residual_coding_rice_shift, параметр pps_residual_coding_rice_offset и индекс pps_ts_residual_coding_rice_idx не присутствуют в текущем изображении. Когда флаг pps_ residual_coding_info_flag не присутствует, значение флага pps_residual_coding_info_flag считают равным 0.
Параметр pps_residual_coding_rice_shift указывает параметр сдвига, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и параметра dec_abs_level[ ]. Когда параметр pps_residual_coding_rice_shift не присутствует, значение параметра pps_residual_coding_rice_shift считают равным 0.
Параметр pps_residual_coding_rice_offset специфирует параметр смещения, используемый для процедуры определения параметра Райса для элемента abs_remainder[ ] и элемента dec_abs_level[ ]. Когда параметр pps_residual_coding_rice_offset не присутствует, значение параметра pps_residual_coding_rice_offset считают равным 0.
Индекс pps_ts_residual_coding_rice_idx указывает параметр Райса, используемый для синтаксической структуры residual_ts_coding( ). Когда индекс pps_ts_residual_coding_rice_index не присутствует, значение индекса pps_ts_residual_coding_rice_index считают равным 0.
Таблица 35. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если флаг pps_ts_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным (pps_ts_residual_coding_rice_ idx+TH).
Если флаг transform_skip_flag[x0][y0][cIdx] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей (x0, y0), позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
…
Таблица 36. Процедура определения параметра Райса
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция (x0, y0) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight, параметр pps_residual_coding_rice_shift, и параметр pps_residual_coding_rice_offset.
Выходными данными этой процедуры является параметр Райса cRiceParam.
С учетом матрицы AbsLevel[x][y] для блока преобразования с индексом составляющей cIdx и позицией (x0, y0) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[xC + 1][yC]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[xC + 2][yC]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[xC + 1][yC + 1] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[xC][yC + 1]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[xC][yC + 2]
}
locSumAbs = Clip3(0, 31, ( (locSumAbs+ pps_residual_coding_rice_offset)>> pps_residual_coding_rice_shift) - baseLevel * 5 )
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B.
cRiceParam = cRiceParam+ pps_residual_coding_rice_shift
Когда параметр baseLevel равен 0, переменную ZeroPos[n] определяют следующим образом:
ZeroPos[n] = (QState < 2?1:2)<<cRiceParam
Согласно одному или нескольким примерам настоящего изобретения, предлагается использовать различные параметры Райса для кодирования определенных синтаксических элементов, например, элемента abs_remainder при кодировании остатка с пропуском преобразования, параметров сдвига и смещения для определения параметра Райса, используемого для кодирования элемента abs_remainder/dec_abs_level при обычном кодировании остатка, и определять, какой из параметров использовать, в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования или битовой глубиной кодирования, ассоциированной с блоком TB/CB и/или срезом/профилем, и/или в соответствии с новым флагом, ассоциированным с уровнем блока TB/блока CB/среза/изображения/последовательности, например, с флагом sps_residual_coding_info_present_in_sh_flag.
В одном из примеров, один флаг управления передают в виде сигнализации в заголовке среза для индикации, разрешена или запрещена процедура определения параметра Райса для блоков с пропуском преобразования и процедура определения параметров сдвига и/или смещения для определения параметра Райса для блоков преобразования. Когда этот флаг управления сигнализируют как разрешающий, параметр Райса может быть различным в разных условиях в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования и битовой глубиной. Также параметры сдвига и/или смещения для определения параметра Райса при обычном кодировании остатка могут быть различными в разных условиях в соответствии с определенной кодированной информацией текущего блока, например, параметром квантования и битовой глубиной. Когда этот флаг управления сигнализируют как запрещающий (например, устанавливают равным “0”), для всех срезов с пропуском преобразования используют параметр Райса по умолчанию (например, 1), и для всех срезов с преобразованием используют параметры сдвига и/или смещения по умолчанию (например, 0). Пример соответствующей процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже, где THA и THB представляют собой заданные пороговые уровни (например, THA=8, THB=18 или 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 37 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Синтаксис заголовка среза
Таблица 37. Синтаксис кодирования остатка
!sh_sign_data_hiding_used_flag )
Флаг sh_residual_coding_rice_flag равный 1 указывает, что в текущем срезе используется зависимая от битовой глубины процедура определения параметра Райса. Флаг sh_residual_coding_rice_flag равный 0 указывает, что в текущем срезе не используется зависимая от битовой глубины процедура определения параметра Райса.
Таблица 38. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если флаг sh_residual_coding_rice_flag равен 1, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным Clip3( 1, BitDepth - THA, (THB - QP)/6 ).
Если флаг transform_skip_flag[x0][y0][cIdx] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей (x0, y0), позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
…
Таблица 39. Процедура определения параметра Райса
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция (x0, y0) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight, флаг sh_residual_coding_rice_flag.
Выходными данными этой процедуры является параметр Райса cRiceParam.
С учетом матрицы AbsLevel[x][y] для блока преобразования с индексом составляющей cIdx и позицией (x0, y0) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
ShiftRice = sh_residual_coding_rice_flag ? (BitDepth > 10) ? Floor(Log2(4 *(Bitdepth - 10))) : 0 : 0
OffsetRice = sh_residual_coding_rice_flag ? (ShiftRice > 0) ? (1 << (ShiftRice - 1)) : 0 : 0
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[xC + 1][yC]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[xC + 2][yC]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[xC + 1][yC + 1] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[xC][yC + 1]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[xC][yC + 2]
}
locSumAbs = Clip3(0, 31, ( ( locSumAbs + OffsetRice) >> ShiftRice) - baseLevel * 5)
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B.
cRiceParam = cRiceParam+ ShiftRice
Когда параметр baseLevel равен 0, переменную ZeroPos[n] определяют следующим образом:
ZeroPos[n] = (QState <2?1:2)<<cRiceParam
Еще в одном другом примере, соответствующая процедура декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирована ниже, где TH представляет собой заданный пороговый уровень (например, 18, 19). Изменения в проекте стандарта VVC Draft показаны в Табл. 40 жирным курсивом. Следует отметить, что одинаковая логика может быть по-разному реализована на практике. Например, определенные уравнения и преобразовательные таблицы также могут быть использованы для определения одних и тех же параметров Райса.
Таблица 40. Процедура определения параметра Райса
…
Параметр Райса cRiceParam определяют следующим образом:
Если параметр BitDepth больше 10, флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, процедура определения параметра Райса cRiceParam определена ниже.
rice parameter = Clip3( 1, 8, (TH - QP)/6 )
Если флаг transform_skip_flag[ x0 ][ y0 ][ cIdx ] равен 1 и флаг sh_ts_residual_coding_disabled_flag равен 0, параметр Райса cRiceParam устанавливают равным 1.
В противном случае, параметр Райса cRiceParam определяют путем вызова процедуры определения параметра Райса для элемента abs_remainder[], как это определено в Табл. 1A, где переменная baseLevel установлена равной 4, а индекс cIdx цветовой составляющей, позиция яркостной составляющей (x0, y0), позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight являются входными данными.
Входными данными для этой процедуры являются базовый уровень baseLevel, индекс цветовой составляющей cIdx, позиция (x0, y0) яркостной составляющей, указывающая положение верхнего-левого отсчета текущего блока преобразования относительно верхнего-левого отсчета текущего изображения, позиция сканирования (xC, yC) текущего коэффициента, двоичный логарифм ширины блока преобразования log2TbWidth и двоичный логарифм высоты блока преобразования log2TbHeight.
Выходными данными этой процедуры является параметр Райса cRiceParam.
С учетом матрицы AbsLevel[x][y] для блока преобразования с индексом составляющей cIdx и позицией (x0, y0) верхнего-левого отсчета яркостной составляющей, переменную locSumAbs определяют, как это определено следующим псевдокодом:
ShiftRice = (BitDepth > 10) ? Floor(Log2(4 *(Bitdepth - 10))) : 0
OffsetRice = (BitDepth > 10) ? (ShiftRice > 0) ? (1 << (ShiftRice - 1)) : 0 : 0
locSumAbs = 0
if( xC < (1 << log2TbWidth) - 1 ) {
locSumAbs += AbsLevel[xC + 1][yC]
if( xC < (1 << log2TbWidth) - 2 )
locSumAbs += AbsLevel[xC + 2][yC]
if( yC < (1 << log2TbHeight) - 1 )
locSumAbs += AbsLevel[xC + 1][yC + 1] (1494)
}
if( yC < (1 << log2TbHeight) - 1 ) {
locSumAbs += AbsLevel[xC][yC + 1]
if( yC < (1 << log2TbHeight) - 2 )
locSumAbs += AbsLevel[xC][yC + 2]
}
locSumAbs = Clip3(0, 31, ( ( locSumAbs + OffsetRice) >> ShiftRice) - baseLevel * 5)
С учетом переменной locSumAbs, параметр Райса cRiceParam определяют, как это определено в Табл. 1B.
cRiceParam = cRiceParam+ ShiftRice
Когда параметр baseLevel равен 0, переменную ZeroPos[n] определяют следующим образом:
ZeroPos[n] = (QState < 2?1:2)<<cRiceParam
Согласно другому аспекту настоящего изобретения, предлагается добавить ограничение, в соответствии с которым значения приведенных выше флагов, являющихся инструментами кодирования, создавали бы такие же средства управления общими ограничениями, как другие средства в общей информации об ограничениях.
Например, флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 1 указывает, что индекс sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах заголовков SH, относящихся к набору SPS. Флаг sps_ts_residual_coding_rice_present_in_sh_flag равный 0 указывает, что индекс sh_ts_residual_coding_rice_idx не присутствует в синтаксических структурах заголовков SH, относящихся к набору SPS. Согласно настоящему изобретению, предлагается добавить синтаксический элемент, флаг gci_no_ts_residual_coding_rice_constraint_flag, в синтаксис информации об общих ограничениях для создания такого же управления общими ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
В другом примере, флаг pps_ts_residual_coding_rice_flag равный 1 указывает, что индекс pps_ts_residual_coding_rice_index может присутствовать в текущем изображении. Флаг pps_ts_residual_coding_rice_flag равный 0 указывает, что индекс pps_ts_residual_coding_rice_idx не присутствует в текущем изображении. Согласно настоящему изобретению, предлагается добавить синтаксический элемент, флаг gci_no_ts_residual_coding_rice_constraint_flag, в синтаксис информации об общих ограничениях для создания такого же управления общими ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
Еще в одном другом примере, флаг sps_rice_adaptation_enabled_flag равный 1 указывает, что параметр Райса для бинаризации элемента abs_remainder[ ] и элемента dec_abs_level может быть определен по некой формуле.
Эта формула может представлять собой: RiceParam = RiceParam + shiftVal и shiftVal = ( localSumAbs < Tx[ 0 ] ) ? Rx[ 0 ] : ( ( localSumAbs < Tx[ 1 ] ) ? Rx[ 1 ] : ( ( localSumAbs < Tx[ 2 ] ) ? Rx[ 2 ] : ( ( localSumAbs < Tx[ 3 ] ) ? Rx[ 3 ] : Rx[4] ) ) ), где списки Tx[ ] и Rx[ ] определены следующим образом: Tx[ ] = { 32, 128, 512, 2048 }> >(1523) Rx[ ] = { 0, 2, 4, 6, 8 }
Согласно настоящему изобретению, предлагается добавить синтаксический элемент, флаг gci_no_rice_adaptation_constraint_flag, в синтаксис информации об общих ограничениях для создания такого же управления общими ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
Поскольку предлагаемая схема адаптации параметра Райса используется только для кодирования остатка с пропуском преобразования (transform skip residual coding (TSRC)), предлагаемый способ может быть эффективным только тогда, когда активизировано кодирование TSRC. Соответственно, в одном или нескольких вариантах настоящего изобретения, предлагается добавить одно ограничение потока битов данных, которое требует, чтобы значение флага gci_no_rice_adaptation_constraint_flag было равно единице, когда режим с пропуском преобразования запрещен с уровня общей информации ограничениях, например, когда значение флага gci_no_transform_skip_constraint_flag установлено равным единице.
Еще в одном другом примере, флаг sps_range_extension_flag равный 1 указывает, что синтаксическая структура sps_range_extension( ) присутствует в синтаксической структуре SPS RBSP. Флаг sps_range_extension_flag равный 0 указывает, что эта синтаксическая структура не присутствует. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_range_extension_constraint_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 9 показан способ кодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 1902, декодирующее устройство может принять флаг расширения диапазона набора параметров последовательности (Sequence Parameter Set (SPS)), который указывает, присутствует ли синтаксическая структура, sps_range_extension, среди синтаксических структур заголовков срезов полезной нагрузки в виде последовательности необработанных байтов (Slice Head (SH) Raw Byte Sequence Payload (RBSP)), на основе значения флага расширения диапазона набора SPS.
На этапе 1904, в ответ на определение, что значение флага расширения диапазона набора SPS равно 1, декодирующее устройство может определить, что параметр sps_range_extension присутствует в синтаксических структурах SH RBSP.
На этапе 1906, в ответ на определение, что значение флага расширения диапазона равно 0, декодирующее устройство может определить, что параметр sps_range_extension не присутствует в синтаксических структурах SH RBSP.
Еще в одном другом примере, флаг sps_cabac_bypass_alignment_enabled_flag равный 1 указывает, что значение ivlCurrRange может быть выровнено прежде декодирования синтаксических элементов sb_coded_flag[][], abs_remainder[ ], dec_abs_level[ n ] и флага coeff_sign_flag[] в режиме обхода. Флаг sps_cabac_bypass_alignment_enabled_flag, равный 0, указывает, что значение ivlCurrRange не было выровнена прежде декодирования в режиме обхода. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_cabac_bypass_alignment_constraint_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 10 показан способ кодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2002, декодирующее устройство может принять флаг активизации выравнивания набора параметров последовательности (Sequence Parameter Set (SPS)), который указывает, был ли индекс, ivlCurrRange, выравнен прежде декодирования синтаксических элементов sb_coded_flag, abs_remainder, dec_abs_level и флага coeff_sign_flagn в режиме обхода, на основе значения флага активизации выравнивания набора SPS.
На этапе 2004, в ответ на определение, что значение флага активизации выравнивания набора SPS равно 1, декодирующее устройство может определить, что параметр ivlCurrRange был выравнен прежде декодирования в режиме обхода.
На этапе 2006, в ответ на определение, что значение флага активизации выравнивания набора SPS равно 0, декодирующее устройство может определить, что параметр ivlCurrRange не был выравнен прежде декодирования в режиме обхода.
Еще в одном другом примере, флаг extended_precision_processing_flag равный 1 указывает, что расширенный динамический диапазон может быть использован для коэффициентов преобразования и для обработки преобразований. Флаг extended_precision_processing_flag равный 0 указывает, что расширенный динамический диапазон не используется. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_extended_precision_processing_constraint_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 11 показан способ кодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2102, это декодирующее устройство может принять флаг повышенной точности обработки, который указывает, применяется ли расширенный динамический диапазон для коэффициентов преобразования и в процессе обработки преобразований на основе значения флага повышенной точности обработки.
На этапе 2104, в ответ на определение, что значение флага повышенной точности обработки равно 1, декодирующее устройство может определить, что расширенный динамический диапазон применяется для коэффициентов преобразования и в процессе обработки преобразований.
На этапе 2106, в ответ на определение, что значение флага повышенной точности обработки равно 0, декодирующее устройство может определить, что расширенный динамический диапазон не применяется для коэффициентов преобразования и в процессе обработки преобразований.
Еще в одном другом примере, флаг persistent_rice_adaptation_enabled_flag равный 1 указывает, что процедура определения параметра Райса для бинаризации элементов abs_remainder[ ] и dec_abs_level может быть инициализирована на старте каждого субблока с использованием зависимой от режима статистики, накопленной из предшествующих субблоков. Флаг persistent_rice_adaptation_enabled_flag равный 0 указывает, что при определении параметра Райса не используются данные о состоянии предшествующих субблоков. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_persistent_rice_adaptation_constraint_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 12 показан способ кодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2202, это декодирующее устройство может принять флаг активизации устойчивой адаптации параметра Райса, который указывает, инициализирована ли процедура определения параметра Райса для бинаризации элементов abs_remainder и dec_abs_level на старте каждого субблока, использующего зависимую от режима статистику, накопленную из предшествующих субблоков, на основе значения указанного флага активизации устойчивой адаптации параметра Райса.
На этапе 2204, в ответ на определение, что значение флага активизации устойчивой адаптации параметра Райса равна 1, декодирующее устройство может определить, что процедура определения параметра Райса для бинаризации инициализируется на старте каждого субблока, использующего зависимую от режима статистику, накопленную из предшествующих субблоков.
На этапе 2206, в ответ на определение, что значение флага активизации устойчивой адаптации параметра Райса равна 0, декодирующее устройство может определить, что при определении параметра Райса не используются данные о состоянии предшествующих субблоков.
Еще в одном другом примере, флаг sps_rrc_rice_extension_flag равный 1 указывает, что активизировано расширение процедуры определения параметра Райса для бинаризации элементов abs_remainder[ ] и dec_abs_level[ ]. Флаг sps_rrc_rice_extension_flag равный 0 указывает, что расширение процедуры определения параметра Райса для бинаризации элемента abs_remainder[ ] и элемента dec_abs_level[ ] запрещено. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_rrc_rice_extension_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 17 показан способ декодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2702, это декодирующее устройство может принять флаг расширения параметра Райса для набора SPS, который указывает, активизировано ли расширение процедуры определения параметра Райса для бинаризации элемента abs_remainder и элемента dec_abs_level.
На этапе 2704, в ответ на определение, что значение флага расширения параметра Райса для набора SPS равно 1, декодирующее устройство может определить, что расширение процедуры определения параметра Райса для бинаризации разрешено.
На этапе 2706, в ответ на определение, что значение флага расширения параметра Райса для набора SPS равно 0, декодирующее устройство может определить, что расширение процедуры определения параметра Райса для бинаризации запрещено.
Еще в одном другом примере, флаг sps_persistent_rice_adaptation_enabled_flag равный 1 указывает, что процедуру определения параметра Райса для бинаризации элемента abs_remainder[ ] и элемента dec_abs_level[ ] инициализируют на старте каждой единицы TU с использованием статистики, накопленной от предшествующих единиц TU. Флаг sps_persistent_rice_adaptation_enabled_flag равный 0 указывает, что состояние предшествующих единиц TU не используется при определении параметра Райса. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_persistent_rice_adaptation_enabled_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 18 показан способ декодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2802, это декодирующее устройство может принять флаг активизации адаптации параметра Райса для набора SPS, который указывает, инициализируется ли процедура определения параметра Райса для бинаризации элемента abs_remainder и элемента dec_abs_level на старте каждой единицы преобразования, с использованием статистики, накопленной от предшествующих единиц TU.
На этапе 2804, в ответ на определение, что значение флага активизации адаптации параметра Райса для набора SPS равно 1, декодирующее устройство может определить, что процедура определения параметра Райса для бинаризации элемента abs_remainder и элемента dec_abs_level инициализируется на старте каждой единицы TU, с использованием статистики, накопленной от предшествующих единиц TU.
На этапе 2806, в ответ на определение, что значение флага активизации адаптации параметра Райса для набора SPS равно 0, декодирующее устройство может определить, что состояние предшествующих единиц TU не используется при определении параметра Райса.
Еще в одном другом примере, флаг sps_reverse_last_sig_coeff_enabled_flag равный 1 указывает, что флаг sh_reverse_last_sig_coeff_flag присутствует в синтаксической структуре slice_header( ), относящейся к набору SPS. Флаг sps_reverse_last_sig_coeff_enabled_flag равный 0 указывает, что флаг sh_reverse_last_sig_coeff_flag не присутствует в синтаксической структуре slice_header( ), относящейся к набору SPS. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_reverse_last_sig_coeff_enabled_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
Флаг sh_reverse_last_sig_coeff_flag равный 1 указывает, что координаты последнего значимого коэффициента кодированы относительно точки ( ( Log2ZoTbWidth << 1 ) - 1, ( Log2ZoTbHeight << 1 ) - 1 ) для каждого блока преобразования текущего среза. Флаг sh_reverse_last_sig_coeff_flag равный 0 указывает, что координаты последнего значимого коэффициента кодированы относительно точки ( 0, 0 ) для каждого блока преобразования текущего среза. Когда этот флаг sh_reverse_last_sig_coeff_flag не присутствует, его значение считают равным 0.
На Фиг. 19 показан способ декодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 2902, это декодирующее устройство может флаг активизации обратных координат набора SPS для последнего значимого коэффициента, который указывает, присутствуют ли флаг активизации обратных координат заголовка SH для последнего значимого коэффициента в синтаксической структуре заголовка среза, относящейся к этому набору SPS.
На этапе 2904, в ответ на определение, что значение флага активизации обратных координат набора SPS для последнего значимого коэффициента равно 1, декодирующее устройство может определить, что флаг активизации обратных координат заголовка SH последнего значимого коэффициента присутствует в синтаксической структуре заголовка среза, относящейся к рассматриваемому набору SPS.
На этапе 2906, в ответ на определение, что значение флага активизации обратных координат набора SPS для последнего значимого коэффициента равно 0, декодирующее устройство может определить, что флаг активизации обратных координат заголовка SH для последнего значимого коэффициента не присутствуют в синтаксической структуре заголовка среза, относящейся к рассматриваемому набору SPS.
Еще в одном другом примере, флаг sps_transform_precision_adaptation_enabled_flag равный 1 указывает, что понижающие сдвиги в процессе масштабирования коэффициентов преобразования и в процессе преобразования масштабированных коэффициентов преобразования адаптивно назначают посредством исследования значений коэффициентов деквантования и обратного преобразования. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_transform_precision_adaptation_enabled_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 20 показан способ декодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 3002, это декодирующее устройство может принять флаг активизации адаптации точности преобразования набора SPS, который указывает, происходит ли адаптивное назначение понижающих сдвигов в процессе масштабирования коэффициентов преобразования и в процессе преобразования масштабированных коэффициентов преобразования посредством исследования значений коэффициентов деквантования и обратного преобразования.
На этапе 3004, в ответ на определение, что значение флага активизации адаптации точности преобразования набора SPS равно 1, декодирующее устройство может определить, что понижающие сдвиги в процессе масштабирования коэффициентов преобразования и в процессе преобразования масштабированных коэффициентов преобразования адаптивно назначают посредством исследования значений коэффициентов деквантования и обратного преобразования.
Еще в одном другом примере, флаг sps_high_throughput_flag равный 1 указывает, что все синтаксические элементы при кодировании остатка, за исключением позиции последнего значимого коэффициента при кодировании RRC, кодируют в режиме обхода, и выравнивание необходимо только один раз после позиции последнего значимого коэффициента при кодировании RRC и в самом начале блока TB при кодировании TSRC. Согласно настоящему изобретению предлагается добавить синтаксический элемент, флаг gci_no_high_throughput_flag, в синтаксис общей информации об ограничениях для осуществления такого же общего управления ограничениями, как и другие флаги. Пример процедуры декодирования на основе проекта стандарта кодирования VVC Draft иллюстрирован ниже. Изменения в проекте стандарта VVC Draft выделены. Добавленные фрагменты выделены курсивом.
На Фиг. 21 показан способ декодирования видео согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к декодирующему устройству. На этапе 3102, это декодирующее устройство может принять флаг высокой степени единообразия набора SPS, который указывает, кодированы ли синтаксические элементы в процессе кодирования остатка в режиме обхода.
На этапе 3104, в ответ на определение, что значение флага высокой степени единообразия набора SPS равно 1, декодирующее устройство может определить, что все синтаксические элементы при кодировании остатка, за исключением позиции последнего значимого коэффициента при обычном кодировании остатка (regular residual coding (RRC)), кодированы в режиме обхода, и что выравнивание осуществляется после позиции последнего значимого коэффициента при кодировании RRC и в начале блока преобразования (transform block (TB)) при кодировании остатка с пропуском преобразования (transform skip residual coding (TSRC)).
Приведенные выше способы могут быть реализованы с использованием аппаратуры, содержащей одну или несколько схем, которые могут представлять собой специализированные интегральные схемы (application specific integrated circuit (ASIC)), цифровые процессоры сигнала (digital signal processors(DSP)), устройства для цифровой обработки сигналов (digital signal processing device (DSPD)), программируемые логические устройства (programmable logic device (PLD)), программируемые пользователем вентильные матрицы (field programmable gate array (FPGA)), контроллеры, микроконтроллеры, микропроцессоры или другие электронные компоненты. Аппаратура может использовать эти схемы в сочетании с другими аппаратными или программными компонентами для осуществления описываемых выше способов. Каждый модуль, субмодуль, единица или субединица, описываемые выше, могут быть реализованы с использованием одной или нескольких из перечисленных схем.
Способы определения параметра Райса
На стороне кодирующего устройства, процедура кодирования TSRC может потребовать несколько проходов кодирования для определения наилучшего параметра Райса. Такое многопроходное кодирование может оказаться неподходящим для практических конструкций аппаратуры кодирующего устройства. Для решения этой проблемы предлагается также способ кодирования TSRC с малой задержкой. Согласно одному или нескольким примерам настоящего изобретения предлагается определять параметр Райса в соответствии с определенной кодированной информацией текущего среза, например, параметром квантования и/или битовой глубиной кодирования, ассоциированными со срезом/изображением/последовательностью, и/или в соответствии с коэффициентом хэширования, ассоциированным с уровнем среза/изображения/последовательности. Для определения параметра Райса могут быть использованы различные способы, здесь ниже перечислены некоторые примеры таких способов. Следует отметить, что следующие способы можно применять независимо или совместно.
1. Параметр Райса, упоминаемый в приведенных выше вариантах, может дополнительно зависеть от разрешающей способности (разрешения) видео, включая как временное разрешение (например, частоту кадров), так и пространственное разрешение (например, ширину и высоту изображения) видео.
2. Параметр Райса может варьироваться на уровне последовательности, уровне изображения, уровне среза и/или в какой-либо заданной области. В одном конкретном примере, разные значения параметра Райса используются для изображений с разными идентификаторами (ID) временных слоев (что связано с параметром nuh_temporal_id_plus1, определенным в техническом описании стандарта кодирования VVC). В альтернативном варианте, параметр Райса может иметь значение, определяемое на основе значений параметров QP, используемых на уровне последовательности, уровне изображения, уровне среза и/или в какой-либо заданной области. Например, параметр Райса = Clip3(1, 8, (TH - QP)/6), где TH представляет собой заданный пороговый уровень (например, 18, 19).
3. Параметру Райса может быть присвоено значение по умолчанию, например, 1, в соответствии с изменением кодированной информации между текущим срезом и предыдущим срезом. В одном конкретном примере, значение параметра Райса по умолчанию используется для изображений, когда идентификатор (ID) временного слоя для такого изображения изменился по сравнению с предыдущим изображением. В альтернативном варианте, значение параметра Райса по умолчанию используют для изображений, когда параметр ΔQ больше уровня TH, где параметр ΔQ вычисляют как abs(QPcurrent - QPprevious), а TH представляет собой заданный пороговый уровень параметра Райса (например, 0, 5). Например, параметр Райса = 1, когда коэффициент хэширования в режиме внутрикадрового копирования блоков (Intra Block Copy) в текущем срезе больше уровня TH, где TH представляет собой заданный пороговый уровень, например, Max (41*(число единиц CTU), 4200).
4. Параметр Райса для каждого среза основан на значениях элемента abs_remainder, кодированных в предыдущем срезе относительно рассматриваемого среза, в соответствии с порядком кодирования. В одном конкретном примере, после кодирования одного среза вычисляют число секций для бинаризации элемента abs_remainder с использованием разных значений параметра Райса и затем используют полученные результаты для определения параметра Райса для следующего среза. Например, для текущего среза будет выбран параметр Райса, при котором достигается минимальное число секций в предыдущем срезе. В качестве другого примера, если текущий срез и предыдущий относительно него срез используют одинаковый параметр QP, значение параметра Райса, при которой достигается минимальное число секций в предыдущем срезе, будет выбрано для текущего среза; в противном случае, число секций, генерируемых с использованием значения параметра Райса по умолчанию (т.е. 1) в предыдущем срезе, масштабируют с применением уровня TH прежде сравнения с другими параметрами Райса, и параметр Райса, который ведет к минимальному числу секций, будет выбран для текущего среза, где TH представляет собой заданный пороговый уровень, например 0.9.
5. Параметр Райса для каждого среза основан на значениях элемента abs_remainder, кодированных в предыдущем срезе относительно рассматриваемого среза, в соответствии с порядком кодирования, а также этот параметр Райса может быть регулируемым в соответствии с изменением кодированной информации между текущим срезом и предыдущим срезом. В одном конкретном примере, для текущего среза будет выбрано значение параметра Райса, при которой достигается минимальное число секций в предыдущем срезе. Это значение параметра Райса можно регулировать, когда параметр ΔQ больше уровня TH, где параметр ΔQ вычисляют как abs(QPcurrent - QPprevious), а TH представляет собой заданный пороговый уровень параметра Райса (например, 0, 5). Это регулирование может быть осуществлено путем добавления заданного смещения (например, +1, -1) или масштабирования посредством заданного значения.
На Фиг. 16 показана логическая схема способа кодирования остатка с пропуском преобразования (transform skip residual coding (TSRC)) с небольшой задержкой согласно одному из примеров настоящего изобретения. Этот способ может быть применен, например, к кодирующему устройству. На этапе 2602, это кодирующее устройство может определить параметр Райса на основе кодированной информации текущего среза видео. Эта кодированная информация может содержать один или несколько из следующих параметров: параметр квантования или битовая глубина кодирования, ассоциированная с рассматриваемым срезом, изображением или последовательностью видео; или коэффициент хэширования, ассоциированный с рассматриваемым срезом, изображением или последовательностью видео.
Следует отметить, что приведенные выше способы работы кодирующего устройства могут быть применены на стороне декодирующего устройства. В одном конкретном примере, параметр Райса нет необходимости передавать в виде сигнализации кодирующему устройству/декодирующему устройству и эти кодирующее устройство /декодирующее устройство используют один и тот же способ для определения параметра Райса.
На Фиг. 8 показана вычислительная среда 1810, связанная с интерфейсом 1860 пользователя. Вычислительная среда 1810 может быть частью сервера для обработки данных. Вычислительная среда 1810 содержит процессор 1820, запоминающее устройство 1840 и интерфейс 1850 ввода/вывода (I/O).
Процессор 1820 обычно управляет всеми операциями вычислительной среды 1810, такими как операции, ассоциированные с дисплеем, сбором данных, передачей данных и обработкой изображения. Процессор 1820 может содержать один или несколько процессоров для выполнения команд с целью осуществления всех или некоторых этапов описанных выше способов. Более того, процессор 1820 может содержать один или несколько модулей, способствующих взаимодействию между этим процессором 1820 и другими компонентами. Этот процессор может представлять собой центральный процессор (Central Processing Unit (CPU)), микропроцессор, однокристальную машину, графический процессор (GPU) или другое подобное устройство.
Запоминающее устройств 1840 конфигурировано для сохранения данных различных типов для поддержки работы вычислительной среды 1810. Это запоминающее устройство 1840 может содержать заданное программное обеспечение 1842. К примерам таких данных относятся команды для любых приложений или способов, работающих в вычислительной среде 1810, массивы данных видео, данные изображений и т.д. Запоминающее устройств 1840 может быть реализовано с использованием любого типа энергозависимых или энергонезависимых запоминающих устройств, либо комбинаций подобных устройство, таких как статическое запоминающее устройство с произвольной выборкой (СЗУПВ (static random access memory (SRAM)), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ (electrically erasable programmable read-only memory (EEPROM))), стираемое программируемое постоянное запоминающее устройство (СППЗУ (erasable programmable read-only memory (EPROM))), программируемое постоянное запоминающее устройство (ППЗУ (programmable read-only memory (PROM)), постоянное запоминающее устройство (ПЗУ (read-only memory (ROM))), магнитное запоминающее устройство, устройство флэш-памяти, магнитный или оптический диск.
Интерфейс 1850 ввода/вывода обеспечивает сопряжение между процессором 1820 и модулями периферийных интерфейсов, такими как клавиатура, колесико-кнопка, кнопки и другие подобные элементы. Такими кнопками могут быть кнопка установки в начальное положение (home), кнопка начала сканирования и кнопка остановки сканирования. Интерфейс 1850 ввода/вывода может быть связан с кодирующим устройством и декодирующим устройством.
В некоторых вариантах, предложен также энергонезависимый читаемый компьютером носитель для хранения информации, содержащий несколько программ, таких как находятся в запоминающем устройстве 1840, эти программы выполняются процессором 1820 в вычислительной среде 1810 для осуществления описываемых выше способов. Например, этот энергонезависимый читаемый компьютером носитель для хранения информации может представлять собой ПЗУ (ROM), ЗУПВ (RAM), CD-ROM, магнитную ленту, гибкий диск, оптическое устройство для хранения данных или другое подобное устройство.
На указанном энергонезависимом читаемом компьютером носителе для хранения информации сохранены несколько программ для выполнения компьютерным устройством, имеющим один или несколько процессоров, так что при выполнении этих нескольких программ одним или несколькими процессорами компьютерное устройство осуществляет описанный выше способ прогнозирования движения.
В некоторых вариантах, вычислительная среда 1810 может быть реализована с использованием одной или нескольких специализированных интегральных схем (application specific integrated circuit (ASIC)), цифровых процессоров сигнала (digital signal processors(DSP)), устройств для цифровой обработки сигналов (digital signal processing device (DSPD)), программируемых логических устройств (programmable logic device (PLD)), программируемых пользователем вентильных матриц (field programmable gate array (FPGA)), графических процессоров (graphical processing unit (GPU)), контроллеров, микроконтроллеров, микропроцессоров или других электронных компонентов для осуществления приведенных выше способов.
На Фиг. 13 представлена блок-схема, иллюстрирующая пример системы 10 для кодирования и декодирования блоков видео параллельно в соответствии с некоторыми вариантами реализации настоящего изобретения. Как показано на Фиг. 13, система 10 содержит устройство-источник 12, генерирующее и кодирующее данные видео, которые должны быть декодированы позднее устройством-адресатом 14. Устройство-источник 12 и устройство-адресат 14 могут содержать какие-либо из широкого спектра электронных устройств, включая настольные или портативные компьютеры, планшетные компьютеры, смартфоны, приставки, цифровые телевизоры, видеокамеры, дисплейные устройства, цифровые медиа плееры, видео игровые консоли, потоковые устройства видео или другие подобные устройства. В некоторых вариантах реализации, устройство-источник 12 и устройство-адресат 14 оснащены функциональными возможностями для беспроводной (радио) связи.
В некоторых вариантах реализации, устройство-адресат 14 может принимать кодированные данные видео, которые нужно будет декодировать, по линии 16 связи. Эта линия 16 связи может содержать среду или устройство связи какого-либо типа, способное перемещать кодированные данные видео от устройства-источника 12 к устройству-адресату 14. В одном из примеров, линия 16 связи может содержать среду связи, позволяющую устройству-источнику 12 передавать кодированные данные видео напрямую устройству-адресату 14 в реальном времени. Эти кодированные данные видео могут быть модулированы в соответствии со стандартом связи, таким как протокол радиосвязи, и переданы устройству-адресату 14. Среда связи может представлять собой какую-либо беспроводную или проводную среду связи, такую как область высокочастотного (Radio Frequency (RF)) спектра, либо одна или более физических линий передачи. Эта среда связи может образовывать часть сети связи с пакетной передачей данных, такой как локальная сеть связи, широкомасштабная сеть связи или глобальная сеть связи, такая как Интернет. Такая среда связи может содержать маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для осуществления связи между устройством-источником 12 и устройством-адресатом 14.
В некоторых других вариантах реализации, кодированные данные видео могут быть переданы от выходного интерфейса 22 в запоминающее устройство 32. После этого, кодированные данные видео в этом запоминающем устройстве 32 могут быть доступными для устройства-адресата 14 через входной интерфейс 28. Запоминающее устройство 32 может содержать какие-либо из множества разнообразных распределенных или локально доступных носителей для хранения данных, таких как накопитель на жестком диске, диски «Блю-рей», цифровые универсальные диски (Digital Versatile Disk (DVD)), постоянные запоминающие устройства на компакт-дисках (Compact Disc Read-Only Memory (CD-ROM)), устройство флэш-памяти, энергозависимое или энергонезависимое запоминающее устройство или какие-либо другие цифровые носители для хранения информации, способные сохранять кодированные данные видео. Еще в одном примере, запоминающее устройство 32 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может сохранять кодированные данные видео, генерируемые устройством-источником 12. Устройство-адресат 14 может получить доступ к сохраненным данным видео из запоминающего устройства 32 посредством потоковой передачи или скачивания. Файловый сервер может представлять собой компьютер любого типа, способный сохранять кодированные данные видео и передавать эти кодированные данные видео устройству-адресату 14. К примерам файловых серверов относятся вэб-сервер (например, для вэб-сайта), сервер протокола передачи файлов (File Transfer Protocol (FTP)), сетевые устройства хранения данных (Network Attached Storage (NAS)) или локальные дисководы. Устройство-адресат 14 может обращаться и получать доступ к кодированным данным видео через любое стандартное соединение для передачи данных, включая беспроводной (радио) канал (например, соединение «беспроводной достоверности» (Wireless Fidelity (Wi-Fi))), проводное соединение (например, цифровая абонентская линия (Digital Subscriber Line (DSL)), кабельный модем и т.п.), либо комбинацию беспроводных и проводных соединений, подходящую для доступа к кодированным данным видео, хранящимся на файловом сервере. Передача кодированных данных видео от запоминающего устройства 32 может представлять собой потоковую передачу, скачивание или комбинацию этих видов передачи.
Как показано на Фиг. 13, устройство-источник 12 содержит источник 18 видео, кодирующее устройство 20 для видео и выходной интерфейс 22. Источник 18 видео может содержать такой источник, как устройство для захвата (съемки) видео, например, видеокамера, архив видео, содержащий ранее снятое видео, входной интерфейс видео для приема видео от провайдера контента видео и/или систему компьютерной графики для генерации данных компьютерной графики в качестве исходного видео, либо комбинацию перечисленных источников. В качестве одного из примеров, если источник 18 видео представляет собой видеокамеру системы охранного видеонаблюдения, устройство-источник 12 и устройство-адресат 14 могут представлять собой телефоны с видеокамерами или видеотелефоны. Однако варианты реализации, описываемые в настоящей заявке, могут быть применимы к кодированию видео в общем и могут быть применены в беспроводных (радио) и/или проводных приложениях.
Захваченное (снятое), предварительно захваченное или генерируемое компьютером видео может быть кодировано посредством кодирующего устройства 20 для видео. Кодированные данные видео могут быть переданы напрямую устройству-адресату 14 через выходной интерфейс 22 устройства-источника 12. Кодированные данные видео могут быть также (или в качестве альтернативы) сохранены в запоминающем устройстве 32 для более позднего доступа устройства-адресата 14 или других устройств с целью декодирования и/или воспроизведения. Выходной интерфейс 22 может далее содержать модем и/или передатчик.
Устройство-адресат 14 содержит входной интерфейс 28, декодирующее устройство 30 для видео и дисплейное устройство 34. Входной интерфейс 28 может содержать приемник и/или модем и принимать кодированные данные видео по линии 16 связи. Эти кодированные данные видео, переданные по линии 16 связи или находящиеся в запоминающем устройстве 32, могут содержать различные синтаксические элементы, генерируемые кодирующим устройством 20 для видео с целью использования декодирующим устройством 30 для видео при декодировании данных видео. Такие синтаксические элементы могут быть включены в кодированные данные видео, передаваемые по каналам связи, сохраненные на носителе для хранения информации или сохраненные на файловом сервере.
В некоторых вариантах реализации, устройство-адресат 14 может содержать дисплейное устройство 34, которое может представлять собой встроенное собственное дисплейное устройство или внешнее дисплейное устройство, конфигурированное для связи с устройством-адресатом 14. Дисплейное устройство 34 представляет декодированные данные видео пользователю и может представлять собой какое-либо из совокупности разнообразных дисплейных устройств, такое как жидкокристаллический дисплей (Liquid Crystal Display (LCD)), плазменный дисплей, дисплей на органических светодиодах (Organic Light Emitting Diode (OLED)) или дисплейное устройство другого типа.
Кодирующее устройство 20 для видео и декодирующее устройство 30 для видео могут работать в соответствии с собственными или промышленными стандартами, такими как кодирование VVC, кодирование HEVC, стандарты MPEG-4, Part 10, кодирование AVC или дальнейшее развитие и расширение таких стандартов. Следует понимать, что настоящая заявка не ограничивается каким-либо конкретным стандартом кодирования/декодирования видео, а может также быть применима к другим стандартам кодирования/декодирования видео. В общем случае, предполагается, что кодирующее устройство 20 для видео в устройстве-источнике 12 может быть конфигурировано для кодирования данных видео в соответствии с каким-либо из этих современных или будущих стандартов. Аналогично, также предполагается обычно, что декодирующее устройство 30 для видео в устройстве-адресате 14 может быть конфигурировано для декодирования данных видео в соответствии с каким-либо из этих современных или будущих стандартов.
Каждое из предлагаемых устройств - кодирующее устройство 20 для видео и декодирующее устройство 30 для видео, может быть реализовано с использованием какой-либо из разнообразных подходящих схем кодирующего устройства и/или декодирующего устройства, таких как один или несколько микропроцессоров, цифровых процессоров сигнала (Digital Signal Processor (DSP)), специализируемых интегральных схем (Application Specific Integrated Circuit (ASIC)), программируемых пользователем вентильных матриц (Field Programmable Gate Array (FPGA)), дискретных логических устройств, загружаемого программного обеспечения, аппаратуры, встроенного программного обеспечения или какой-либо комбинации этих объектов. В случае реализации частично в форме загружаемого программного обеспечения, электронное устройство может сохранять команды для этого программного обеспечения на подходящем энергонезависимом читаемом компьютером носителе и выполнять эти команды в своей аппаратуре с использованием одного или нескольких процессоров для осуществления операций кодирования/декодирования видео, описываемых в настоящем изобретении. Каждое из предлагаемых устройств - кодирующее устройство 20 для видео и декодирующее устройство 30 для видео, может входить в одно или несколько кодирующих устройств или декодирующих устройством, каждое из которых может быть интегрировано как часть комбинированного кодирующего устройства/декодирующего устройства (encoder/decoder (CODEC)) в соответствующем устройстве.
На Фиг. 14 представлена блок-схема, иллюстрирующая пример кодирующего устройства 20 для видео в соответствии с некоторыми вариантами реализации, описываемыми в настоящей заявке. Это кодирующее устройство 20 для видео может осуществлять кодирование с внутрикадровым и межкадровым прогнозирование применительно к блокам видео в кадрах видео. Кодирование с внутрикадровым прогнозированием опирается на пространственное прогнозирование для уменьшения или устранения пространственной избыточности данных видео в конкретном рассматриваемом кадре видео или изображении. Кодирование с межкадровым прогнозированием опирается на временное прогнозирование для уменьшения или устранения временной избыточности данных видео в соседних кадрах видео или изображениях в последовательности видео. Следует отметить, что в области кодирования видео термин «кадр» может быть использован в качестве синонима для терминов «изображение» или «картинка».
Как показано на Фиг. 14, кодирующее устройство 20 для видео содержит запоминающее устройство 40 данных видео, модуль 41 обработки прогнозирования, буфер 64 декодированных изображений (Decoded Picture Buffer (DPB)), сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 41 обработки прогнозирования далее содержит модуль 42 оценки движения, модуль 44 компенсации движения, модуль 45 разбиения, модуль 46 обработки внутрикадрового прогнозирования и модуль 48 внутрикадрового копирования блоков (Block Copy (BC)). В некоторых вариантах реализации, кодирующее устройство 20 для видео также содержит модуль 58 обратного квантования, модуль 60 обработки обратного преобразования и сумматор 62 для реконструкции блоков видео. Внутриконтурный фильтр 63, такой как деблокирующий фильтр, может быть расположен между сумматором 62 и буфером DPB 64 для фильтрации границ блоков с целью удаления артефактов блочности из реконструированного видео. Другой внутриконтурный фильтр, такой как нелинейный фильтр с адаптивным сдвигом (Sample Adaptive Offset (SAO)) и/или адаптивный внутриконтурный фильтр (Adaptive in-Loop Filter (ALF)), также может быть использован в дополнение к деблокирующему фильтру для фильтрации выходного сигнала сумматора 62. В некоторых примерах, внутриконтурные фильтры могут быть исключены, а декодированный блок видео может быть напрямую передан сумматором 62 в буфер DPB 64. Кодирующее устройство 20 для видео может иметь форму фиксированного или программируемого аппаратного модуля или может быть разделено между одним или несколькими иллюстрированными фиксированными или программируемыми аппаратными модулями.
Запоминающее устройств 40 данных видео может сохранять данные видео, подлежащие кодированию компонентами кодирующего устройства 20 для видео. Данные видео в запоминающем устройстве 40 данных видео могут быть получены, например, от источника 18 видео, как показано на Фиг. 13. Буфер DPB 64 представляет собой буфер, сохраняющий опорные данные видео (например, опорные кадры или изображения), для использования при кодировании данных видео посредством кодирующего устройства 20 для видео (например, в режимах кодирования с внутрикадровым или межкадровым прогнозированием). Запоминающее устройство 40 данных видео и буфер DPB 64 могут быть образованы каким-либо из различных запоминающих устройств. В различных примерах, запоминающее устройство 40 данных видео может быть выполнено на одном кристалле интегральной схемы вместе с другими компонентами кодирующего устройства 20 для видео или «вне кристалла» относительно этих других компонентов.
Как показано на Фиг. 14, после приема данных видео, модуль 45 разбиения в модуле 41 обработки прогнозирования разбивает данные видео на блоки видео. Это разбиение может также включать в себя разбиение кадра видео на срезы, плитки (например, группы блоков видео) или другие единицы кодирования (Coding Unit (CU)) большего размера в соответствии с заданными структурами разбиения, такими как структура дерева квадратов (Quad-Tree (QT)), ассоциированная с этими данными видео. Кадр видео представляет собой или может рассматриваться как двумерный массив или матрица отсчетов, имеющих соответствующие значения отсчетов. Отсчеты в таком массиве могут также называться пикселями или элементами изображения (pel). Число отсчетов в горизонтальном и вертикальном направлениях (или вдоль осей) массива или изображения определяет размер и/или разрешение кадра видео. Кадр видео может быть разделен на несколько блоков видео с использованием, например, разбиения по схеме дерева QT. Такой блок видео снова представляет собой или может рассматриваться как двумерный массив или матрица отсчетов, имеющих соответствующие значения отсчетов, хотя размеры этого массива или матрицы меньше размеров кадра видео. Число отсчетов в горизонтальном и вертикальном направлениях (или вдоль осей) блока видео определяет размер блока видео. Блок видео может быть далее разбит на один или несколько подразделов блоков или субблоков (которые могут снова формировать блоки), посредством, например, итеративного использования разбиения по схеме дерева QT, разбиения по схеме двоичного дерева (Binary-Tree (BT)) или разбиения по схеме троичного дерева (Triple-Tree (TT)) или какой-либо комбинации таких разбиений. Следует отметить, что термин «блок» или «блок видео», как он используется здесь, может обозначать часть, в частности, прямоугольную (квадратную или неквадратную) часть, кадра или изображения. Согласно, например, стандартам кодирования HEVC и VVC, такой блок или блок видео может представлять собой единицу дерева кодирования (Coding Tree Unit (CTU)), единицу CU, единицу прогнозирования (Prediction Unit (PU)) или единицу преобразования (Transform Unit (TU)) и/или может представлять собой или быть сопоставлен с соответствующим блоком, например, блоком дерева кодирования (Coding Tree Block (CTB)), блоком кодирования (Coding Block (CB)), блоком прогнозирования (Prediction Block (PB)) или блоком преобразования (Transform Block (TB)), и/или субблоком.
Модуль 41 обработки прогнозирования может выбрать один из нескольких возможных режимов кодирования с прогнозированием, таких как один из нескольких режимов кодирования с внутрикадровым прогнозированием или один из нескольких режимов кодирования с межкадровым прогнозированием, для текущего блока видео на основе результатов определения погрешности (например, кодовой скорости и уровня искажений). Модуль 41 обработки прогнозирования может передавать полученный в результате блок, кодированный с использованием внутрикадрового или межкадрового прогнозирования, сумматору 50 для генерации блока остатка и сумматору 62 для реконструкции кодированного блока для использования в последующем в качестве части опорного кадра. Модуль 41 обработки прогнозирования также передает синтаксические элементы, такие как векторы движения, индикаторы режима внутрикадрового прогнозирования, информацию о разбиении и другую подобную синтаксическую информацию модулю 56 энтропийного кодирования.
Для выбора подходящего режима кодирования с внутрикадровым прогнозированием для текущего блока видео, модуль 46 обработки внутрикадрового прогнозирования в модуле 41 обработки прогнозирования может осуществлять кодирование с внутрикадровым прогнозированием для текущего блока видео относительно одного или нескольких соседних блоков из того же самого кадра в качестве текущего блока, подлежащего кодированию с пространственным прогнозированием. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 обработки прогнозирования осуществляют кодирование с межкадровым прогнозированием текущего блока видео относительно одного или нескольких блоков прогнозирования в одном или нескольких опорных кадрах для осуществления временного прогнозирования. Кодирующее устройство 20 для видео может осуществлять многопроходное кодирование, например, для выбора подходящего режима кодирования для каждого блока данных видео.
В некоторых вариантах реализации, модуль 42 оценки движения определяет режим межкадрового прогнозирования для текущего кадра видео путем генерации вектора движения, который указывает смещение одного из блоков видео в пределах текущего кадра видео относительно блока прогнозирования в пределах опорного кадра видео, в соответствии с заданной схемой в пределах последовательности кадров видео. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процедуру генерации векторов движения, которые оценивают движение блоков видео. A вектор движения, например, может указывать смещение блока видео в пределах текущего кадра видео или изображения относительно блока прогнозирования в пределах опорного кадра относительно текущего блока в кодируемом текущем кадре. Указанная заданная схема может обозначать кадры видео в последовательности как P-кадры или B-кадры. Модуль 48 внутрикадрового копирования блоков может определить векторы, например, блочные векторы, для кодирования с использованием внутрикадрового копирования блоков способом, аналогичным определению векторов движения модулем 42 оценки движения для межкадрового прогнозирования, или может использовать модуль 42 оценки движения для определения блочного вектора.
Блок прогнозирования для рассматриваемого блока видео может представлять собой или может соответствовать блоку или опорному блоку из опорного кадра, который считается близко согласованным с блоком видео, подлежащим кодированию, в терминах разницы между пикселями, которая может быть определена посредством суммы абсолютных разностей (Sum of Absolute Difference (SAD)), суммы квадратов разностей (Sum of Square Difference (SSD)) или других метрических показателей разницы. В некоторых вариантах реализации, кодирующее устройство 20 для видео может вычислять значения для нецелочисленных позиций пикселей в опорных кадрах, сохраненных в буфере DPB 64. Например, кодирующее устройство 20 для видео может интерполировать значения пикселей в позициях одна четверть, в позициях одна восьмая или в других дробных позициях пикселей в опорном кадре. Поэтому модуль 42 оценки движения может осуществлять поиск движения относительно полных позиций пикселей и дробных позиций пикселей и передавать на выход вектор движения с точностью дробных пикселей.
Модуль 42 оценки движения вычисляет вектор движения для блока видео в кадре, кодированном с межкадровым прогнозированием, посредством сравнения позиции рассматриваемого блока видео с позицией блока прогнозирования видео в опорном кадре, выбранном из первого списка опорных кадров (Список 0) или из второго списка опорных кадров (Список 1), каждый из которых (списков) идентифицирует один или несколько опорных кадров, сохраненных в буфере DPB 64. Модуль 42 оценки движения передает вычисленный вектор движения модулю 44 компенсации движения и затем модулю 56 энтропийного кодирования.
Процедура компенсации движения, осуществляемая модулем 44 компенсации движения, может содержать выборку или генерацию блока прогнозирования на основе вектора движения, определяемого модулем 42 оценки движения. После приема вектора движения для текущего блока видео, модуль 44 компенсации движения может найти блок прогнозирования, на который указывает вектор движения, в одном из списков опорных кадров, вызвать этот блок прогнозирования из буфера DPB 64 и передать такой блок прогнозирования сумматору 50. Сумматор 50 затем формирует блок остатка видео из разностей значений пикселей путем вычитания значений пикселей блока прогнозирования, поступающего от модуля 44 компенсации движения, из значений пикселей текущего блока видео, кодируемого в настоящий момент. Значения разностей пикселей, образующие блок остатка видео, могут представлять собой разности пикселей яркостной составляющей или разности пикселей цветностных составляющих или и те, и другие. Модуль 44 компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками видео в кадре видео, для использования декодирующим устройством 30 для видео при декодировании блоков видео в кадре видео. Совокупность синтаксических элементов может содержать, например, синтаксические элементы, определяющие вектор движения, для идентификации блока прогнозирования, какие-либо флаги, указывающие режим прогнозирования, или какую-либо другую синтаксическую информацию, описываемую здесь. Отметим, что модуль 42 оценки движения и модуль 44 компенсации движения могут быть в высокой степени интегрированы, но иллюстрированы здесь раздельно из концептуальных соображений.
В некоторых вариантах реализации, модуль 48 внутрикадрового копирования блоков может генерировать векторы и осуществлять выборку блоков прогнозирования способом, аналогичным тому, что описано выше в связи с модулем 42 оценки движения и модулем 44 компенсации движения, но с тем, что блоки прогнозирования находятся в том же кадре, как и текущий блок, кодируемый в настоящий момент, и что указанные векторы называются блочными векторами в противоположность векторам движения. В частности, модуль 48 внутрикадрового копирования блоков может определять режим внутрикадрового прогнозирования для использования при кодировании текущего блока. В некоторых примерах, модуль 48 внутрикадрового копирования блоков может кодировать текущий блок с использованием разнообразных режимов внутрикадрового прогнозирования, например, во время раздельных проходов кодирования, и тестировать характеристики этих режимов посредством анализа соотношения скорости передачи данных и искажений. Затем, модуль 48 внутрикадрового копирования блоков может выбрать, из совокупности разнообразных протестированных режимов внутрикадрового прогнозирования, подходящий режим внутрикадрового прогнозирования для использования и генерировать индикатор режима внутрикадрового прогнозирования соответствующим образом. Например, модуль 48 внутрикадрового копирования блоков может вычислить значения соотношения скорости передачи данных и искажений с использованием анализа такого соотношения для разнообразных протестированных режимов внутрикадрового прогнозирования и выбрать режим внутрикадрового прогнозирования, имеющий наилучшие характеристики соотношения скорости передачи данных и искажений, из совокупности протестированных режимов в качестве подходящего режима внутрикадрового прогнозирования для использования. Анализ соотношения скорости передачи данных и искажений обычно определяет величину искажений (или погрешности) между кодированным блоком и исходным, некодированным блоком, который был кодирован для получения кодированного блока, равно как скорость передачи данных (т.е. число битов), использованных для получения кодированного блока. Модуль 48 внутрикадрового копирования блоков может вычислить соотношения скорости передачи данных и искажений для разнообразных кодированных блоков, чтобы определить, какой из режимов внутрикадрового прогнозирования показывает наилучшее соотношение между скоростью передачи данных и искажениями для рассматриваемого блока.
В некоторых примерах, модуль 48 внутрикадрового копирования блоков может использовать модуль 42 оценки движения и модуль 44 компенсации движения, в целом или частично, для осуществления соответствующих функций для прогнозирования с внутрикадровым копированием блоков в соответствии с описываемым здесь вариантом реализации. В любом случае, для внутрикадрового копирования блоков, блок прогнозирования может представлять собой блок, который считается близко согласующимся с блоком, подлежащим кодированию, в терминах разниц пикселей, что может быть определено с использованием разностей SAD, разностей SSD или других мер разницы, а процедура идентификации блока прогнозирования может содержать вычисление значений нецелочисленных позиций пикселей.
Выбран ли блок прогнозирования из того же самого кадра согласно внутрикадровому прогнозированию, или из другого кадра согласно межкадровому прогнозированию, кодирующее устройство 20 для видео может сформировать блок остатка видео путем вычитания значений пикселей блока прогнозирования из значений пикселей текущего блока видео, кодируемого в настоящий момент, для получения значений разностей пикселей. Значения разностей пикселей, образующие блок остатка видео, могут содержать и разности яркостной составляющей, и разности цветностных составляющих.
Модуль 46 обработки внутрикадрового прогнозирования может осуществлять внутрикадровое прогнозирование текущего блока видео, в качестве альтернативы межкадровому прогнозированию, осуществляемому модулем 42 оценки движения и модулем 44 компенсации движения, либо прогнозированию с внутрикадровым копированием блоком, осуществляемому модуль 48 внутрикадрового копирования блоков, как описано выше. В частности, модуль 46 обработки внутрикадрового прогнозирования может определить режим внутрикадрового прогнозирования для использования при кодировании текущего блока. Для этого модуль 46 обработки внутрикадрового прогнозирования может кодировать текущий блок с использованием различных режимов внутрикадрового прогнозирования, например, во время отдельных проходов кодирования, и тогда модуль 46 обработки внутрикадрового прогнозирования (или модуль выбора режима, в некоторых примерах) может выбрать подходящий режим внутрикадрового прогнозирования для использования из протестированных режимов внутрикадрового прогнозирования. Модуль 46 обработки внутрикадрового прогнозирования может предоставить информацию о выбранном режиме внутрикадрового прогнозирования для рассматриваемого блока модулю 56 энтропийного кодирования. Этот модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутрикадрового прогнозирования, и включить ее в поток битов данных.
После того, как модуль 41 обработки прогнозирования определит блок прогнозирования для текущего блока видео посредством межкадрового прогнозирования или внутрикадрового прогнозирования, сумматор 50 формирует блок остатка видео путем вычитания блок прогнозирования из текущего блока видео. Данные остатка видео в блоке остатка могут быть включены в одну или несколько единиц TU и переданы модулю 52 обработки преобразования. Модуль 52 обработки преобразования преобразует данные остатка видео в коэффициенты преобразования остатка с использование какого-либо преобразования, такого как дискретное косинусное преобразование (Discrete Cosine Transform (DCT)) или концептуально аналогичное преобразование.
Модуль 52 обработки преобразования может передать полученные в результате коэффициенты преобразования модулю 54 квантования. Этот модуль 54 квантования квантует коэффициенты преобразования для дальнейшего уменьшения скорости передачи данных. Процедура квантования может также уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована путем регулирования параметра квантования. В некоторых примерах, модуль 54 квантования может затем осуществить сканирование матрицы, содержащей квантованные коэффициенты преобразования. В альтернативном варианте, сканирование может осуществить модуль 56 энтропийного кодирования.
После квантования, модуль 56 энтропийного кодирования осуществляет энтропийное кодирование квантованных коэффициентов преобразования и превращает их в поток битов данных видео с использованием, например, контекстно-зависимого адаптивного кодирования в коде переменной длины (Context Adaptive Variable Length Coding (CAVLC)), контекстно-зависимого адаптивного двоичного арифметического кодирования (Context Adaptive Binary Arithmetic Coding (CABAC)), контекстно-зависимого адаптивного двоичного арифметического кодирования на основе синтаксиса (Syntax-based context-adaptive Binary Arithmetic Coding (SBAC)), энтропийного кодирования с разбиением на интервалы вероятности (Probability Interval Partitioning Entropy (PIPE)) либо другого способа энтропийного кодирования. Кодированный поток битов данных может быть затем передан декодирующему устройству 30 для видео, как показано на Фиг. 13, или заархивирован в запоминающем устройстве 32, как показано на Фиг. 13, для более поздней передачи декодирующему устройству 30 для видео или вызова этим устройством. Модуль 56 энтропийного кодирования может также осуществить энтропийное кодирование векторов движения и других синтаксических элементов для текущего кадра видео, кодируемого в настоящий момент.
Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для реконструкции блока остатка видео в области пикселей с целью генерации опорного блока для прогнозирования других блоков видео. Как отмечено выше, модуль 44 компенсации движения может генерировать блок прогнозирования с компенсированным движением из одного или нескольких опорных блоков или кадров, сохраненных в буфере DPB 64. Этот модуль 44 компенсации движения может также применить один или несколько интерполяционных фильтров к блоку прогнозирования для вычисления значений пикселей в нецелочисленных позициях с целью использования при оценке движения.
Сумматор 62 осуществляет суммирование реконструированного блока остатка с блоком прогнозирования с компенсированным движением, сформированным модулем 44 компенсации движения, для получения опорного блока для сохранения в буфере DPB 64. Этот опорный блок может быть затем использован модулем 48 внутрикадрового копирования блоков, модулем 42 оценки движения и модулем 44 компенсации движения в качестве блока прогнозирования для использования при межкадровом прогнозировании другого блока видео в последующем кадре видео.
На Фиг. 15 представлена блок-схема, иллюстрирующая пример декодирующего устройства 30 для видео в соответствии с некоторыми вариантами реализации настоящей заявки. Это декодирующее устройство 30 для видео содержит запоминающее устройство 79 данных видео, модуль 80 энтропийного декодирования, модуль 81 обработки прогнозирования, модуль 86 обратного квантования, модуль 88 обработки обратного преобразования, сумматор 90 и буфер DPB 92. Модуль 81 обработки прогнозирования далее содержит модуль 82 компенсации движения, модуль 84 внутрикадрового прогнозирования и модуль 85 внутрикадрового копирования блоков. Декодирующее устройство 30 для видео может осуществлять процедуру декодирования, в основном обратную процедуре кодирования, описанной выше применительно к кодирующему устройству 20 для видео в связи с Фиг. 14. Например, модуль 82 компенсации движения может генерировать данные прогнозирования на основе векторов движения, принятых от модуля 80 энтропийного декодирования, тогда как модуль 84 внутрикадрового прогнозирования может генерировать данные прогнозирования на основе индикаторов режима внутрикадрового прогнозирования, принятых от модуля 80 энтропийного декодирования.
В некоторых примерах, модуль декодирующего устройства 30 для видео может иметь задачу осуществления вариантов реализации настоящей заявки. Кроме того, в некоторых примерах, варианты реализации настоящего изобретения могут быть разделены между одним или несколькими модулями декодирующего устройства 30 для видео. Например, модуль 85 внутрикадрового копирования блоков может осуществлять варианты реализации настоящей заявки в одиночку или в сочетании с другими модулями декодирующего устройства 30 для видео, такими как модуль 82 компенсации движения, модуль 84 внутрикадрового прогнозирования и модуль 80 энтропийного декодирования. В некоторых примерах, декодирующее устройство 30 для видео может не иметь модуль 85 внутрикадрового копирования блоков, а функциональные возможности модуля 85 внутрикадрового копирования блоков могут быть реализованы другими компонентами модуля 81 обработки прогнозирования, например, модулем 82 компенсации движения.
Запоминающее устройство 79 данных видео может сохранять данные видео, такие как кодированный поток битов данных видео, подлежащий декодированию другими компонентами декодирующего устройства 30 для видео. Данные видео, сохраняемые в запоминающем устройстве 79 данных видео, могут быть получены, например, из запоминающего устройства 32, от локального источника видео, такого как видеокамера, по проводной или беспроводной (радио) сети связи для передачи данных видео или посредством доступа к физическим носителям для сохранения данных (например, флэш-накопителю или накопителю на жестком диске). Запоминающее устройство 79 данных видео может содержать буфер кодированных изображений (Coded Picture Buffer (CPB)), сохраняющий кодированные данные видео из кодированного потока битов данных видео. Буфер DPB 92 декодирующего устройства 30 для видео сохраняет опорные данные видео для использования при декодировании данных видео этим декодирующим устройством 30 для видео (например, в режимах кодирования с внутрикадровым или межкадровым прогнозированием). Запоминающее устройство 79 данных видео и буфер DPB 92 могут быть образованы каким-либо из разнообразных типов запоминающих устройств, таких как динамическое запоминающее устройство с произвольной выборкой (динамическое ЗУПВ (dynamic random access memory (DRAM))), включая синхронное динамическое ЗУПВ (Synchronous DRAM (SDRAM)), магниторезистивное ЗУПВ (Magneto-resistive RAM (MRAM)), резистивное ЗУПВ (Resistive RAM (RRAM)) или запоминающие устройства других типов. В целях иллюстрации запоминающее устройство 79 данных видео и буфер DPB 92 изображены как два раздельных компонента декодирующего устройства 30 для видео на Фиг. 15. Однако для специалиста в рассматриваемой области должно быть очевидно, что запоминающее устройство 79 данных видео и буфер DPB 92 могут быть созданы в одном и том же запоминающем устройстве или в раздельных запоминающих устройствах. В некоторых примерах, запоминающее устройство 79 данных видео может быть выполнено на одном кристалле (чипе) с другими компонентами декодирующего устройства 30 для видео, либо выполнено вне кристалла, на котором расположены эти другие компоненты.
Во время декодирования, декодирующее устройство 30 для видео принимает кодированный поток битов данных видео, который представляет блоки видео из кодированного кадра видео и ассоциированные синтаксические элементы. Декодирующее устройство 30 для видео может принимать синтаксические элементы на уровне кадров видео и/или на уровне блоков видео. Модуль 80 энтропийного декодирования в декодирующем устройстве 30 для видео осуществляет энтропийное декодирование потока битов данных для генерации квантованных коэффициентов, векторов движения или индикаторов режима внутрикадрового прогнозирования и других синтаксических элементов. Модуль 80 энтропийного декодирования затем пересылает векторы движения или индикаторы режима внутрикадрового прогнозирования и другие синтаксические элементы модулю 81 обработки прогнозирования.
Когда кадр видео кодирован в качестве кадра, кодированного в режиме внутрикадрового прогнозирования (I), или для блоков прогнозирования с внутрикадровым прогнозированием в кадрах других типов, модуль 84 внутрикадрового прогнозирования из модуля 81 обработки прогнозирования может генерировать данные программирования для блока видео из текущего кадра видео на основе сообщенного посредством сигнализации режима внутрикадрового прогнозирования и опорных данных из ранее декодированных блоков в текущем кадре.
Когда кадр видео кодирован в качестве кадра, кодированного в режиме межкадрового прогнозирования (т.е. кадра B или P), модуль 82 компенсации движения в модуле 81 обработки прогнозирования генерирует один или несколько блоков прогнозирования для блока видео из текущего кадра видео на основе векторов движения и других синтаксических элементов принимаемых от модуля 80 энтропийного декодирования. Каждый из блоков прогнозирования может быть создан из опорного кадра, находящегося в одном из списков опорных кадров. Декодирующее устройство 30 для видео может построить списки опорных кадров, Список 0 и Список 1, с использованием способов построения списков по умолчанию на основе опорных кадров, сохраняемых в буфере DPB 92.
В некоторых примерах, когда блок видео кодирован в режиме внутрикадрового копирования блоков, описываемом здесь, модуль 85 внутрикадрового копирования блоков в модуле 81 обработки прогнозирования генерирует блоки прогнозирования для текущего блока видео на основе блочных векторов и других синтаксических элементов, принятых от модуля 80 энтропийного декодирования. Эти блоки прогнозирования могут быть в пределах реконструированной области того же самого изображения, где находится текущий блок видео, определяемый кодирующим устройством 20 для видео.
Модуль 82 компенсации движения и/или модуль 85 внутрикадрового копирования блоков определяет информацию прогнозирования для блока видео в текущем кадре видео посредством синтаксического анализа векторов движения и других синтаксических элементов и затем использует информацию прогнозирования для генерации блоков прогнозирования для текущего блока видео, декодируемого в настоящий момент. Например, модуль 82 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима прогнозирования (например, внутрикадрового или межкадрового прогнозирования), используемого для кодирования блоков видео в кадре видео, типа кадра межкадрового прогнозирования (например, B или P), информации о построении одного или нескольких списков опорных кадров для рассматриваемого кадра, векторов движения для каждого блока видео, кодированного в режиме межкадрового прогнозирования, в рассматриваемом кадре, статусе межкадрового прогнозирования для каждого блока видео, кодированного в режиме межкадрового прогнозирования, в рассматриваемом кадре, и другой информации, необходимой для декодирования блоков видео в текущем кадре видео.
Аналогично, модуль 85 внутрикадрового копирования блоков может использовать некоторые из принятых им синтаксических элементов, например, флаг, для определения, что прогнозирование текущего блока видео осуществлялось с использованием режима внутрикадрового копирования блоков, информации о построении, указывающей, какие блоки видео из рассматриваемого кадра находятся в пределах реконструируемой области и должны быть сохранены в буфере DPB 92, блочных векторов для каждого блока видео, прогнозируемого с использованием внутрикадрового копирования блоков, в рассматриваемом кадре, статусе прогнозирования с внутрикадровым копированием блоков для каждого блока видео, прогнозируемого с внутрикадровым копированием блоков, в рассматриваемом кадре, и другой информации, необходимой для декодирования блоков видео в текущем кадре видео.
Модуль 82 компенсации движения может также осуществлять интерполяцию с использованием интерполяционных фильтров, как их применяло кодирующее устройство 20 для видео в ходе кодирования блоков видео, для вычисления интерполированных значений для пикселей, находящихся в дробных позициях в опорных блоках. В этом случае, модуль 82 компенсации движения может определить интерполяционные фильтры, использованные кодирующим устройством 20 для видео, на основе принятых синтаксических элементов и применить эти интерполяционные фильтры для генерации блоков прогнозирования.
Модуль 86 обратного квантования осуществляет обратное квантование применительно к квантованным коэффициентам преобразования, поступившим в потоке битов данных и прошедшим энтропийное декодирование в модуле 80 энтропийного декодирования, с использованием того же самого параметра квантования, который кодирующее устройство 20 для видео вычислило для каждого блока видео в рассматриваемом кадре видео для определения степени квантования. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное преобразование DCT, обратное целочисленное преобразование или концептуально аналогичную процедуру обратного преобразования к коэффициентам преобразования с целью реконструировать блоки остатка в области пикселей.
После того, как модуль 82 компенсации движения или модуль 85 внутрикадрового копирования блоков сформирует блок прогнозирования для текущего блока видео на основе векторов и других синтаксических элементов, сумматор 90 реконструирует декодированный блок видео для текущего блока видео путем суммирования блока остатка от модуля 88 обработки обратного преобразования и соответствующего блока прогнозирования, сформированного модулем 82 компенсации движения и модулем 85 внутрикадрового копирования блоков. Между сумматором 90 и буфером DPB 92 может быть расположен внутриконтурный фильтр 91, такой как деблокирующий фильтр, фильтр SAO и/или фильтр ALF, для дальнейшей обработки декодированного блока видео. В некоторых примерах, внутриконтурный фильтр 91 может быть исключен, а декодированный блок видео может быть передан сумматором 90 напрямую в буфер DPB 92. Декодированные блоки видео из какого-либо конкретного рассматриваемого кадра затем сохраняют в буфере DPB 92, который хранит опорные кадры, используемые для последующей компенсации движения следующих блоков видео. Буфер DPB 92, или запоминающее устройство, отдельное от буфера DPB 92, также может сохранять декодированное видео для того, чтобы его можно было позднее представить на дисплейном устройстве, таком как дисплейное устройство 34, показанное на Фиг. 13.
Это описание настоящего изобретения было представлено только для иллюстрации и не предназначено для того, чтобы быть исчерпывающим или ограниченным настоящим изобретением. Даже рядовым специалистам в рассматриваемой области, использующим преимущества принципов, представленных в приведенном выше описании и на прилагаемых чертежах будут очевидны многочисленные модификации, изменения и альтернативные варианты.
Приведенные примеры были выбраны и описаны здесь для того, чтобы пояснить принципы изобретения и позволить другим специалистам в рассматриваемой области понять настоящее изобретение для различных вариантов реализации и наилучшим образом использовать этими принципы и различные варианты реализации с разнообразными модификациями в соответствии с конкретным планируемым применением. Поэтому следует понимать, что объем настоящего изобретения не ограничивается приведенными здесь конкретными примерами его реализации, и что модификации и другие варианты реализации также должны быть включены в объем настоящего изобретения.
Изобретение относится к области кодирования и сжатия видео, в частности к усовершенствованиям и упрощениям способа кодирования остатка и коэффициентов при кодировании видео. Техническим результатом является повышение эффективности сжатия видео. Предложены способы, устройства и энергонезависимые читаемые компьютером носители информации для осуществления декодирования видео. Согласно одному способу декодирующее устройство принимает флаг активизации коэффициентов набора параметров последовательности (SPS), который указывает, присутствует ли флаг активизации коэффициентов заголовка среза (SH) в синтаксической структуре заголовка среза, относящейся к указанному набору SPS. Согласно второму способу декодирующее устройство может принять флаг активизации адаптации точности преобразования набора SPS, который указывает, происходит ли адаптивное назначение понижающих сдвигов в процессе масштабирования коэффициентов преобразования и в процессе преобразования масштабированных коэффициентов преобразования посредством исследования значений коэффициентов деквантования и обратного преобразования. 3 н. и 3 з.п. ф-лы, 25 ил.
1. Способ декодирования видео, содержащий этап, на котором:
принимают, декодирующим устройством, флаг активизации обратных координат набора параметров последовательности (Sequence Parameter Set (SPS)) для последнего значимого коэффициента, который указывает, присутствует ли флаг активизации обратных координат заголовка среза (slice header (SH)) для последнего значимого коэффициента в синтаксической структуре заголовка среза, относящейся к указанному набору SPS.
2. Способ декодирования видео по п. 1, дополнительно содержащий этапы, на которых:
в ответ на определение, что значение флага активизации обратных координат набора SPS для последнего значимого коэффициента равно 1, определяют, декодирующим устройством, что флаг активизации обратных координат заголовка SH для последнего значимого коэффициента присутствует в синтаксической структуре заголовка среза, относящейся к указанному набору SPS; и
в ответ на определение, что значение флага активизации обратных координат набора SPS для последнего значимого коэффициента равно 0, определяют, декодирующим устройством, что флаг активизации обратных координат заголовка SH для последнего значимого коэффициента не присутствует в синтаксической структуре заголовка среза, относящейся к указанному набору SPS.
3. Способ декодирования видео по п. 1, дополнительно содержащий этап, на котором:
принимают, декодирующим устройством, флаг активизации обратных координат информации об общих ограничениях (GCI) для последнего значимого коэффициента в синтаксисе информации GCI для обеспечения общего управления флагом активизации обратных координат набора SPS для последнего значимого коэффициента.
4. Способ декодирования видео по п. 3, дополнительно содержащий этап, на котором:
в ответ на определение, что значение флага активизации обратных координат информации GCI для последнего значимого коэффициента равно 1, определяют, что значение флага активизации обратных координат набора SPS для последнего значимого коэффициента равно 0.
5. Устройство декодирования видео, содержащее:
один или более процессоров; и
запоминающее устройство, выполненное с возможностью хранения команд, исполняемых указанным одним или более процессорами; причем указанный один или более процессоров, при исполнении указанных команд, выполнены с возможностью выполнения способа по любому из пп. 1-4.
6. Энергонезависимый читаемый компьютером носитель для хранения информации для декодирования видео, хранящий читаемые компьютером команды, которые при исполнении одним или более компьютерными процессорами вызывают сохранение, указанным одним или более компьютерными процессорами, потока битов данных и выполнение способа по любому из пп. 1-4 в отношении указанного потока битов данных.
DMYTRO RUSANOVSKYY et al | |||
Core Experiment on Entropy Coding for High Bit Depth and High Bit Rate Coding, JVET-V2022rl, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/ SC 29, 22nd Meeting, by teleconference, 15 May 2021 | |||
KARAM NASER et al | |||
Разборный с внутренней печью кипятильник | 1922 |
|
SU9A1 |
Авторы
Даты
2025-01-30—Публикация
2022-06-28—Подача