Область техники, к которой относится изобретение
Настоящее раскрытие относится к кодированию и сжатию видео. Более конкретно, настоящее раскрытие относится к улучшениям и упрощению кодирования значений коэффициентов и остатка для кодирования видео.
Уровень техники
Для сжатия видеоданных могут использоваться различные способы кодирования видео. Кодирование видео выполняется согласно одному или нескольким стандартам кодирования видео. Например, стандарты кодирования видео включают в себя универсальное кодирование видео (VVC), модель совместных исследовательских испытаний (JEM), высокоэффективное кодирование видео (H.265/HEVC), усовершенствованное кодирование видео (H.264/AVC), экспертную группу по движущимся изображениям (MPEG)-кодирование и т.п. При кодировании видео применять, как правило, способы предсказания (например, межкадровое предсказание, внутрикадровое предсказание и т.п.), которые используют преимущества избыточности, присутствующей в видеоизображениях или последовательностях. Важная задача способов кодирования видео состоит в сжатии видеоданных в форму, в которой используется более низкая скорость передачи данных, при этом избегая или сводя к минимуму ухудшение качества видео.
Раскрытие сущности изобретения
Примеры настоящего раскрытия предоставляют способы и устройство для кодирования видео.
Согласно настоящему раскрытию предусмотрен способ декодирования видео. Способ может включать в себя этапы, на которых: определяют, декодером, битовую глубину кодирования по меньшей мере для одного отсчета в битовом потоке; определяют, декодером, значение первого флага SPS для указанного по меньшей мере одного отсчета; и определяют, декодером, второй флаг SPS для указанного по меньшей мере одного отсчета на основе значения первого флага SPS в сочетании с битовой глубиной кодирования для указанного по меньшей мере одного отсчета.
Следует понимать, что приведенные выше общие описания и подробные описания, приведенные ниже, являются только примерными и пояснительными и не предназначены для ограничения настоящего раскрытия.
Краткое описание чертежей
Сопроводительные чертежи, которые включены в данное описание и составляют его часть, иллюстрируют примеры, соответствующие настоящему раскрытию, и вместе с описанием служат для пояснения принципов раскрытия.
Фиг. 1 - блок-схема кодера согласно примеру настоящего раскрытия.
Фиг. 2 - блок-схема декодера согласно примеру настоящего раскрытия.
Фиг. 3A - схематичное представление, иллюстрирующее разделение на блоки в структуре многотипного дерева согласно примеру настоящего раскрытия.
Фиг. 3B - схематичное представление, иллюстрирующее разделение на блоки в структуре многотипного дерева согласно примеру настоящего раскрытия.
Фиг. 3C - схематичное представление, иллюстрирующее разделение на блоки в структуре многотипного дерева согласно примеру настоящего раскрытия.
Фиг. 3D - схематичное представление, иллюстрирующее разделение на блоки в структуре многотипного дерева согласно примеру настоящего раскрытия.
Фиг. 3E - схематичное представление, иллюстрирующее разделение на блоки в структуре многотипного дерева согласно примеру настоящего раскрытия.
Фиг. 4 - иллюстрация структуры кодирования остатка для блоков преобразования согласно примеру настоящего раскрытия.
Фиг. 5 - иллюстрация структуры кодирования остатка для блоков пропуска преобразования согласно примеру настоящего раскрытия.
Фиг. 6 иллюстрирует способ кодирования видеосигнала согласно примеру настоящего раскрытия.
Фиг. 7 иллюстрирует способ кодирования видеосигнала согласно примеру настоящего раскрытия.
Фиг. 8 - схематичное представление, иллюстрирующее вычислительную среду, связанную с пользовательским интерфейсом, согласно примеру настоящего раскрытия.
Фиг. 9 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.
Фиг. 10 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.
Фиг. 11 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.
Фиг. 12 иллюстрирует способ кодирования видео согласно примеру настоящего раскрытия.
Фиг. 13 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видеоблоков согласно примеру настоящего раскрытия.
Фиг. 14 - блок-схема, иллюстрирующая примерный видеокодер согласно примеру настоящего раскрытия.
Фиг. 15 - блок-схема, иллюстрирующая примерный видеодекодер согласно примеру настоящего раскрытия.
Фиг. 16 иллюстрирует способ кодирования остатка с пропуском преобразования и малой задержкой (TSRC) согласно примеру настоящего раскрытия.
Фиг. 17 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Фиг. 18 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Фиг. 19 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Фиг. 20 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Фиг. 21 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Фиг. 22 иллюстрирует способ декодирования видео согласно примеру настоящего раскрытия.
Осуществление изобретения
Теперь будет сделана подробная ссылка на примерные варианты осуществления, примеры которых проиллюстрированы на сопроводительных чертежах. Последующее описание относится к сопроводительным чертежам, на которых одинаковые ссылочные позиции на разных чертежах обозначают одни и те же или подобные элементы, если не указано иное. Реализации, изложенные в последующем описании примерных вариантов осуществления, не представляют все реализации, соответствующие раскрытию. Вместо этого они являются просто примерами устройств и способов, соответствующих аспектам, связанным с раскрытием, изложенным в прилагаемой формуле изобретения.
Терминология, используемая в настоящем раскрытии, предназначена только для описания конкретных вариантов осуществления и не предназначена для ограничения настоящего раскрытия. Формы единственного числа, используемые в настоящем описании и прилагаемой формуле изобретения, также предназначены для включения форм множественного числа, если из контекста явно не указано иное. Кроме того, следует также понимать, что термин «и/или», используемый в данном документе, предназначен для обозначения и включения любых или всех возможных комбинаций одного или нескольких связанных перечисленных элементов.
Следует понимать, что хотя термины «первый», «второй», «третий» и т.д. могут использоваться в данном документе для описания различной информации, информация не должна ограничиваться этими терминами. Эти термины используются только для того, чтобы отличить одну категорию информации от другой. Например, не выходя за рамки настоящего раскрытия, первую информацию можно называть второй информацией; и, аналогичным образом, вторую информацию можно также называть первой информацией. Используемый в данном документе термин «если» можно понимать как означающий «когда» или «после» или «в ответ на решение» в зависимости от контекста.
На Фиг. 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 принятия решения относительно режима внутрикадрового/межкадрового предсказания, такая как информация о разделении видеоблока, векторы движения (MV), индекс опорного изображения и режим внутрикадрового предсказания, также подается с использованием блока 138 энтропийного кодирования и сохраняется в виде сжатого битового потока 144. Сжатый битовый поток 144 включает в себя битовый видеопоток.
В кодере 100 также необходимы схемы, относящиеся к декодеру, чтобы восстанавливать пиксели с целью предсказания. Сначала остаток предсказания восстанавливается с использованием блока 134 обратного квантования и блока 136 обратного преобразования. Этот восстановленный остаток предсказания объединяется с предиктором 140 блоков для выработки нефильтрованных восстановленных пикселей для текущего видеоблока.
Пространственное предсказание (или «внутрикадровое предсказание») использует пиксели из отсчетов уже закодированных соседних блоков (которые называются опорными отсчетами) в том же видеокадре, что и текущий видеоблок, для предсказания текущего видеоблока.
Во временном предсказании (также называемом «межкадровым предсказанием») используются пиксели, восстановленные из уже закодированных видеоизображений для предсказания текущего видеоблока. Временное предсказание уменьшает временную избыточность, присущую видеосигналу. Сигнал временного предсказания для данной единицы кодирования (CU) или блока кодирования, как правило, сигнализируется одним или несколькими MV, которые указывают величину и направление движения между текущей CU и ее временной привязкой. Кроме того, если поддерживается множество опорных изображений, дополнительно отправляется один индекс опорного изображения, который используется для идентификации того, из какого опорного изображения в хранилище опорных изображений поступает сигнал временного предсказания.
Блок 114 оценки движения принимает входной видеосигнал 110 и сигнал из буфера 120 изображения и выводит, в блок 112 компенсации движения, сигнал оценки движения. Блок 112 компенсации движения принимает входной видеосигнал 110, сигнал из буфера 120 изображения и сигнал оценки движения из блока 114 оценки движения и выводит, в блок 116 принятия решения относительно режима внутрикадрового/межкадрового предсказания, сигнал компенсации движения.
После того, как пространственное и/или временное предсказание выполнено, блок 116 принятия решения относительно режима внутрикадрового/межкадрового предсказания в кодере 100 выбирает лучший режим предсказания, например, на основе способа оптимизации соотношения «скорость-искажение». Затем предиктор 140 блоков вычитается из текущего видеоблока, и результирующий остаток предсказания декоррелируется с использованием блока 130 преобразования и блока 132 квантования. Результирующие коэффициенты квантованных остатков подвергаются обратному квантованию с помощью блока 134 обратного квантования и обратно преобразуются с помощью блока 136 преобразования для формирования восстановленного остатка, который затем добавляется обратно в блок предсказания для формирования восстановленного сигнала CU. Кроме того, блок 122 внутриконтурной фильтрации, такой как фильтр удаления блочности, адаптивное к отсчету смещение (SAO) и/или адаптивный внутриконтурный фильтр (ALF), может применяться к восстановленной CU перед ее помещением в хранилище опорных изображений буфер 120 изображения и использоваться для кодирования будущих видеоблоков. Чтобы сформировать выходной битовый видеопоток 144, режим кодирования (внутрикадровый или межкадровый), информация о режиме предсказания, информация о движении и коэффициенты квантованных остатков отправляются в блок 138 энтропийного кодирования для дальнейшего сжатия и упаковки для формирования битового потока.
На Фиг. 1 показана блок-схема общей системы гибридного кодирования видео на основе блоков. Входной видеосигнал обрабатывается поблочно (с использованием так называемых единиц кодирования (CU)). В VTM-1.0 размер CU может достигать 128×128 пикселей. Однако в отличие от HEVC, которое разделяет блоки только на основе квадродеревьев, в VVC одна единица дерева кодирования (CTU) разбивается на CU для адаптации к различным локальным характеристикам на основе квадро/двоичного/троичного дерева. По определению, блок дерева кодирования (CTB) представляет собой блок размером N×N отсчетов для некоторого значения N, при этом разбиение компонента на CTB является разделением. CTU включает в себя CTB отсчетов яркости, два соответствующих CTB отсчетов цветности изображения, которое имеет три массива отсчетов, или CTB отсчетов монохромного изображения или изображения, которое закодировано с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. В дополнение к этому, концепция типа единицы с несколькими разделами в HEVC удалена, то есть разделения CU, единицы предсказания (PU) и единицы преобразования (TU) больше не существует в VVC; вместо этого каждая CU всегда используется как базовая единица как для предсказания, так и для преобразования без дальнейшего разделения. В структуре многотипного дерева одна CTU сначала разбивается способом квадродерева. Затем каждый листовой узел квадродерева может быть дополнительно разделен на двоичную и троичную древовидную структуру. Как показано на Фиг. 3A, 3B, 3C, 3D и 3E, существует пять типов разделения: четвертичное разделение, горизонтальное двоичное разделение, вертикальное двоичное разделение, горизонтальное троичное разделение и вертикальное троичное разделение.
На Фиг. 3A показано схематичное представление, иллюстрирующее четвертичное разделение блоков в структуре многотипного дерева в соответствии с настоящим раскрытием.
На Фиг. 3B показано схематичное представление, иллюстрирующее блочное вертикальное двоичное разделение в структуре многотипного дерева в соответствии с настоящим раскрытием.
На Фиг. 3C показано схематичное представление, иллюстрирующее блочное горизонтальное двоичное разделение в структуре многотипного дерева в соответствии с настоящим раскрытием.
На Фиг. 3D показано схематичное представление, иллюстрирующее блочное вертикальное троичное разделение в структуре многотипного дерева в соответствии с настоящим раскрытием.
На Фиг. 3E показано схематичное представление, иллюстрирующее блочное горизонтальное троичное разделение в структуре многотипного дерева в соответствии с настоящим раскрытием.
Пространственное предсказание и/или временное предсказание можно выполнить таким образом, как показано на Фиг. 1. Пространственное предсказание (или «внутрикадровое предсказание») использует пиксели из отсчетов уже закодированных соседних блоков (которые называются опорными отсчетами) в одном и том же видеоизображении/слайсе для предсказания текущего видеоблока. Пространственное предсказание уменьшает пространственную избыточность, присущую видеосигналу. Временное предсказание (также называемое «внутрикадровым предсказанием» или «предсказанием с компенсацией движения») использует восстановленные пиксели из уже закодированных видеоизображений для предсказания текущего видеоблока. Временное предсказание уменьшает временную избыточность, присущую видеосигналу. Сигнал временного предсказания для данной CU, как правило, сигнализируется одним или несколькими векторами движения (MV), которые указывают величину и направление движения между текущей CU и ее временной привязкой. Кроме того, если поддерживается множество опорных изображений, дополнительно отправляется один индекс опорного изображения, который используется для идентификации того, из какого опорного изображения в хранилище опорных изображений поступает сигнал временного предсказания. После пространственного и/или временного предсказания блок принятия решения о режиме в кодере выбирает лучший режим предсказания, например, на основе способа оптимизации соотношения «скорость-искажение». Затем блок предсказания вычитается из текущего видеоблока; и остаток предсказания декоррелируется с использованием преобразования и квантуется. Коэффициенты квантованных остатков подвергаются обратному квантованию и обратному преобразованию для формирования восстановленного остатка, который затем добавляется обратно в блок предсказания для формирования восстановленного сигнала CU. Дополнительная внутриконтурная фильтрация, выполняемая, например, с использованием фильтра удаления блочности, смещения, адаптивного к отсчету (SAO), и адаптивного внутриконтурного фильтра (ALF), может применяться к восстановленной CU перед тем, как она будет помещена в хранилище опорных изображений и использована для кодирования будущих видеоблоков. Для формирования выходного битового видеопотока информация о режиме кодирования (внутрикадровом или межкадровом), информация о режиме предсказания, информация о движении и коэффициенты квантованных остатков отправляются в блок энтропийного кодирования для дальнейшего сжатия и упаковки для формирования битового потока.
На Фиг. 2 показана общая блок-схема видеодекодера для VVC. В частности, на Фиг. 2 показана типичная блок-схема декодера 200. Декодер 200 имеет битовый поток 210, блок 212 энтропийного декодирования, блок 214 обратного квантования, блок 216 обратного преобразования, сумматор 218, блок 220 выбора режима внутрикадрового/межкадрового предсказания, блок 222 внутрикадрового предсказания, память 230, внутриконтурный фильтр 228, блок 224 компенсации движения, буфер 226 изображения, информацию 234, которая относится предсказанию, и выходной видеосигнал 232.
Декодер 200 аналогичен секции, связанной с восстановлением и находящейся в кодере 100, показанном на Фиг. 1. Сначала входящий битовый видеопоток 210 декодируется в декодере 200 с использованием энтропийного декодирования 212 для получения уровней квантованных коэффициентов и информации, связанной с предсказанием. Затем уровни квантованных коэффициентов обрабатываются с использованием обратного квантования 214 и обратного преобразования 216 для получения восстановленного остатка предсказания. Механизм блочного предсказания, реализованный в селекторе блока 220 выбора режима внутрикадрового/межкадрового предсказания, выполнен с возможностью выполнения либо внутрикадрового предсказания 222, либо компенсации 224 движения на основе декодированной информации предсказания. Набор нефильтрованных восстановленных пикселей получается путем суммирования восстановленного остатка предсказания, поступающего из блока 216 обратного преобразования, и выходных данных предсказания, выработанных механизмом блочного предсказания, с использованием сумматора 218.
Восстановленный блок может дополнительно пройти через внутриконтурный фильтр 228, прежде чем он будет сохранен в буфере 226 изображения, который функционирует как хранилище опорных изображений. Восстановленное видео в буфере 226 изображения может быть отправлено для управления устройством отображения, а также использовано для предсказания будущих видеоблоков. В ситуациях, когда внутриконтурный фильтр 228 активирован, операция фильтрации выполняется над этими восстановленными пикселями для того, чтобы получить окончательно восстановленный выходной видеосигнал 232.
На Фиг. 2 показана общая блок-схема блочного видеодекодера. Битовый видеопоток сначала подвергается энтропийному декодированию в блоке энтропийного декодирования. Режим кодирования и информация предсказания отправляются либо в блок пространственного предсказания (при внутрикадровом кодировании), либо в блок временного предсказания (при межкадровом кодировании), чтобы сформировать блок предсказания. Коэффициенты остатка преобразования отправляются в блок обратного квантования и блок обратного преобразования для восстановления блока остатка. Затем блок предсказания и блок остатка складываются вместе. Восстановленный блок перед сохранением в хранилище опорных изображений может дополнительно пройти внутриконтурную фильтрацию. Затем восстановленное видео в хранилище опорных изображений отправляется для управления устройством отображения, а также используется для предсказания будущих видеоблоков.
Кодирование коэффициента преобразования в VVC
При кодировании коэффициентов преобразования в VVC переменная remBinsPass1 сначала устанавливается на максимальное разрешенное количество контекстно-кодированных бинов (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 показана иллюстрация структуры кодирования остатка для блоков преобразования.
Таблица 1B. Спецификация cRiceParam на основе locSumAbs
Кодирование остатка для режима пропуска преобразования в VVC
В режиме пропуска преобразования статистические характеристики сигнала остатка отличаются от характеристик коэффициентов преобразования, и не наблюдается уплотнения по энергии вокруг низкочастотных составляющих. Кодирование остатка модифицируется для учета различных характеристик сигнала остатка пропуска (пространственного) преобразования.
На Фиг. 5 показана иллюстрация структуры кодирования остатка для блоков пропуска преобразования.
Общая информация об ограничениях
Структура GCI содержит несколько типов синтаксических элементов ограничений, в том числе: флаги для общих ограничений битового потока, например, указывающие, что используется только внутрикадровое кодирование, все уровни кодируются независимым образом, или битовый поток содержит только одну AU; поля, ограничивающие битовую глубину и формат цветности кодированного изображения; флаги, указывающие, что определенные типы единиц NAL не могут присутствовать в битовом потоке; флаги, ограничивающие способы разделения изображений на слайсы, тайлы и подизображения в пределах битового потока; флаги, ограничивающие размер CTU, а также размер и тип разделения деревьев; флаги, ограничивающие использование определенных инструментов внутрикадрового кодирования; флаги, ограничивающие использование определенных инструментов межкадрового кодирования; флаги, ограничивающие преобразование, квантование и инструменты кодирования остатка; и флаги, ограничивающие аспекты внутриконтурных фильтров.
Целью синтаксической структуры GCI является предоставление возможности простого обнаружения информации о конфигурации, касающейся функций, необходимых для декодирования битового потока и обеспечения возможности сигнализация точек взаимодействия, которые накладывают ограничения сверх тех, которые указаны в профиле, ярусе и уровне (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) бинаризации.
В-пятых, процесс бинаризации Exp-Голомба k-го порядка (EGk).
В-шестых, ограниченная бинаризация Exp-Голомба k-го порядка.
Пример соответствующего процесса декодирования на основе проекта VVC (VVC Draft) проиллюстрирован ниже, изменения в проекте VVC показаны в табл. 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 с изменениями, выделенными жирным шрифтом и курсивом, и удаленное содержимое показано курсивом. Изменения в проекте VVC показаны в табл. 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 с изменениями, выделенными жирным шрифтом и курсивом, и удаленное содержимое показано курсивом. Изменения в проекте VVC показаны в табл. 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 показан ниже, где TH - заданное пороговое значение (например, 10, 11, 12, 13, 14, 15 или 16), и с изменениями, выделенными жирным шрифтом и курсивом, и удаленное содержание показано курсивом. Изменения в проекте VVC показаны в табл. 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 показан ниже, где TH - заданное значение (например, 0, 1, 2), и изменения выделены жирным шрифтом и курсивом, и удаленное содержание показано курсивом. Изменения в проекте VVC показаны в табл. 5 жирным шрифтом и курсивом. Следует отметить, что sh_ts_residual_coding_rice_index может быть закодирован по-разному и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка фиксированного шаблона, использующая n битов, записанных (слева направо) с первым левым битом, может также использоваться для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис заголовка слайса
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 показан ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в табл. 7 жирным шрифтом и курсивом, и удаленное содержание показано курсивом. Следует отметить, что sh_ts_residual_coding_rice_idx может кодироваться разными способами и/или может иметь максимальное значение. Например, u(n), целое число без знака, использующее n битов, или f(n), битовая строка фиксированного шаблона, использующая n битов, записанных (слева направо) с первым левым битом, может также использоваться для кодирования/декодирования одного и того же синтаксического элемента.
Синтаксис 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 не присутствует в синтаксических структурах SH, относящихся к SPS. Если sps_ts_residual_coding_rice_present_in_sh_flag отсутствует, значение sps_ts_residual_coding_rice_present_in_sh_flag считается равным 0.
Синтаксис заголовка слайса
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 показан ниже. Изменения в проекте VVC показаны курсивом.
Синтаксис 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 показан ниже. Изменения в проекте VVC показаны в табл. 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 показан ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в табл. 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 показан ниже, изменения в проекте VVC показаны в табл. 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, где TH представляет собой заданный порог (например, 33 или 34). Изменения в проекте VVC показаны в табл. 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, где THA и THB представляют собой заданные пороговые значения (например, THA =8, THB =33 или 34). Изменения в проекте VVC показаны в табл. 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 показан ниже. Изменения в проекте VVC показаны в табл. 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, где TH представляет собой заданный порог (например, 18, 19). Изменения в проекте VVC показаны в табл. 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, где THA и THB представляют собой заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в табл. 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 проиллюстрирован ниже, где TH представляет собой заданный порог (например, 18, 19). Изменения в проекте VVC показаны в табл. 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, где THA и THB представляют собой заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в табл. 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, где TH представляет собой заданный порог (например, 33 или 34). Изменения в проекте VVC показаны в табл. 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, где THA и THB представляют собой предварительно определенные пороговые значения (например, THA =8, THB =33 или 34). Изменения в проекте VVC показаны в табл. 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 показан ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в табл. 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 показан ниже, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в табл. 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 показан ниже. Изменения в проекте VVC показаны в табл. 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_index отсутствует, значение sh_ts_residual_coding_rice_index считается равным 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, где TH - заданное значение (например, 0, 1, 2). Изменения в проекте VVC показаны в табл. 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 проиллюстрирован ниже, где THA и THB представляют собой заданные пороговые значения (например, THA =8, THB =18 или 19). Изменения в проекте VVC показаны в табл. 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, где TH представляет собой заданный порог (например, 18, 19). Изменения в проекте VVC показаны в табл. 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_ts_residual_coding_rice_constraint_flag, равный 1, указывает то, что sps_ts_residual_coding_rice_present_in_sh_flag должен быть равен 0. gci_no_ts_residual_coding_rice_constraint_flag, равный 0, не накладывает такое ограничение.
В другом примере, 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_ts_residual_coding_rice_constraint_flag, равный 1, указывает то, что pps_ts_residual_coding_rice_flag должен быть равен 0. gci_no_ts_residual_coding_rice_constraint_flag, равный 0, не накладывает такое ограничение.
В еще одном примере значение sps_rice_adaptation_enabled_flag, равное 1, указывает то, что райсовский параметр для бинаризации abs_remainder[ ] и dec_abs_level может быть получен по формуле.
Формула может включать в себя: RiceParam = RiceParam + shiftVal and shiftVal = (localSumAbs < Tx[0] ) ? Rx[0] : ((localSumAbs < Tx[1] ) ? Rx[1] : ((localSumAbs < Tx[2]) ? Rx[2] : ((localSumAbs < Tx[3]) ? Rx[ 3 ] : Rx[4]))),
где списки lists Tx[ ] and Rx[ ] заданы следующим образом: Tx[ ] = {32, 128, 512, 2048}> >(1523) Rx[ ] = {0, 2, 4, 6, 8}.
Согласно раскрытию предлагается добавить синтаксический элемент gci_no_rice_adaptation_constraint_flag в синтаксис общей информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_rice_adaptation_constraint_flag, равный 1, указывает то, что sps_rice_adaptation_enabled_flag должен быть равен 0. gci_no_rice_adaptation_constraint_flag, равный 0, не накладывает такое ограничение.
Так как предложенная схема адаптации райсовских параметров используется только для кодирования остатка с пропуском преобразования (TSRC), предложенный способ может стать эффективным только тогда, когда активировано TSRC. Соответственно, в одном или более вариантах осуществления раскрытия предлагается добавить одно ограничение bti-потока, которое требует того, чтобы значение gci_no_rice_adaptation_constraint_flag было равным единице тогда, когда режим пропуска преобразования отключен на уровне информации общего ограничения, например, когда значение gci_no_transform_skip_constraint_flag установлено на единицу.
В еще одном примере sps_range_extension_flag, равный 1, указывает то, что синтаксическая структура sps_range_extension() присутствует в синтаксической структуре RBSP SPS. sps_range_extension_flag, равный 0, указывает то, что эта синтаксическая структура отсутствует. Согласно раскрытию предлагается добавить синтаксический элемент gci_no_range_extension_constraint_flag в синтаксис общей информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_range_extension_constraint_flag, равный 1, указывает то, что sps_range_extension_flag должен быть равным 0. gci_no_range_extension_constraint_flag, равный 0, не накладывает такое ограничение.
На Фиг. 9 показан способ кодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 1902 декодер может принять флаг расширения диапазона набора параметров последовательности (SPS), который указывает то, присутствует ли синтаксическая структура sps_range_extension в синтаксических структурах полезной нагрузки последовательности необработанных байтов (RBSP) заголовка слайса (SH) на основе значения флага расширения диапазона SPS.
На этапе 1904, в ответ на определение того, что значение флага расширения диапазона SPS равно 1, декодер может определить то, что sps_range_extension присутствует в синтаксических структурах RBSP SH.
На этапе 1906, в ответ на определение того, что значение флага расширения диапазона равно 0, декодер может определить то, что sps_range_extension не присутствует в синтаксических структурах RBSP SH.
В еще одном примере 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_cabac_bypass_alignment_constraint_flag, равный 1, указывает то, что значение sps_cabac_bypass_alignment_enabled_flag должен быть равным 0. gci_no_cabac_bypass_alignment_constraint_flag, равный 0, не накладывает такое ограничение.
На Фиг. 10 показан способ кодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 2002 декодер может получить флаг активизации выравнивания набора параметров последовательности (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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_extended_precision_processing_constraint_flag, равный 1, указывает то, что значение extended_precision_processing_flag должен быть равным 0. gci_no_extended_precision_processing_constraint_flag, равный 0, не накладывает такое ограничение.
На Фиг. 11 показан способ кодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 2102 декодер может принять флаг обработки с повышенной точностью, который указывает то, принят ли расширенный динамический диапазон для коэффициентов преобразования, и во время обработки преобразования на основе значения флага обработки с повышенной точностью.
На этапе 2104, в ответ на определение того, что значение флага обработки с повышенной точностью равно 1, декодер может определить то, что расширенный динамический диапазон принят для коэффициентов преобразования и во время обработки преобразования.
На этапе 2106, в ответ на определение того, что значение флага обработки с повышенной точностью равно 0, декодер может определить то, что расширенный динамический диапазон не принят для коэффициентов преобразования или во время обработки преобразования.
В еще одном примере флаг persist_rice_adaptation_enabled_flag, равный 1, указывает то, что получение райсовского параметра для бинаризации abs_remainder[ ], и dec_abs_level может быть инициирован в начале каждого подблока, использующем статистики, зависимой от режима и накопленной из предыдущих подблоков. Флаг persist_rice_adaptation_enabled_flag, равный 0, указывает то, что предыдущее состояние подблока не используется при получении райсовских параметров. Согласно раскрытию предлагается добавить синтаксический элемент gci_no_persistent_rice_adaptation_constraint_flag в синтаксис общей информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_persistent_rice_adaptation_constraint_flag, равный 1, указывает то, что значение persist_rice_adaptation_enabled_flag должен быть равным 0. gci_no_persistent_rice_adaptation_constraint_flag, равный 0, не накладывает такое ограничение.
На Фиг. 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части показаны ниже курсивом.
gci_no_rrc_rice_extension_flag, равный 1, указывает то, что значение sps_rrc_rice_extension_flag должен быть равным 0. gci_no_rrc_rice_extension_flag, равный 0, не накладывает такое ограничение.
На Фиг. 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части показаны ниже курсивом.
gci_no_persistent_rice_adaptation_enabled_flag, равный 1, указывает то, что значение sps_persistent_rice_adaptation_enabled_flag должен быть равным 0. gci_no_persistent_rice_adaptation_enabled_flag, равный 0, не налагает такого ограничения.
На Фиг. 18 показан способ декодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 2802 декодер может принять флаг активизации райсовской адаптации SPS, который указывает то, инициируется ли получение райсовского параметра для бинаризации abs_remainder и dec_abs_level в начале каждого блока преобразования со статистикой, накопленной из предыдущих TU.
На этапе 2804, в ответ на определение того, что значение флага активизации райсовской адаптации SPS равно 1, декодер может определить то, что получение райсовского параметра для бинаризации инициируется в начале каждой 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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_reverse_last_sig_coeff_enabled_flag, равный 1, указывает то, что sps_reverse_last_sig_coeff_enabled_flag должен быть равен 0. С другой стороны, gci_no_reverse_last_sig_enabled_flag, равный 0, не накладывает такого ограничения.
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 показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_transform_precision_adaptation_enabled_flag, равный 1, указывает то, что sps_transform_precision_adaptation_enabled_flag должен быть равным 0. С другой стороны, gci_no_transform_precision_adaptation_enabled_flag, равный 0, не накладывает такого ограничения.
На Фиг. 20 показан способ декодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 3002 декодер может принять флаг активизации точной адаптации преобразования SPS, который указывает то, назначаются ли адаптивно сдвиги вниз в процессе масштабирования для коэффициентов преобразования и в процессе преобразования для масштабированных коэффициентов преобразования путем проверки значений коэффициентов обратного квантования и обратного преобразования.
На этапе 3004, в ответ на определение того, что значение флага активизации точной адаптации преобразования SPS равно 1, декодер может определить то, что сдвиги вниз в процессе масштабирования для коэффициентов преобразования и в процессе преобразования для масштабированного преобразования коэффициенты адаптивно назначаются путем проверки значений коэффициентов деквантования и обратного преобразования.
В еще одном примере sps_high_throughput_flag, равный 1, указывает то, что все синтаксические элементы при кодировании остатка, за исключением позиции последнего значимого коэффициента в RRC, кодируются в режиме обхода, и выравнивание необходимо только один раз после позиции последнего значимого коэффициента в RRC и в самом начале TB в TSRC. Согласно раскрытию предлагается добавить синтаксический элемент gci_no_high_throughput_flag в синтаксис общей информации об ограничениях, чтобы обеспечить те же самые общие элементы управления ограничениями, что и другие флаги. Пример процесса декодирования в проекте VVC показан ниже. Изменения в проекте VVC выделены. Добавленные части выделены курсивом.
gci_no_high_throughput_flag, равный 1, указывает то, что значение sps_high_throughput_flag должен быть равным 0. С другой стороны, gci_no_high_throughput_flag, равный 0, не накладывает такого ограничения.
На Фиг. 21 показан способ декодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 3102 декодер может принять флаг высокого уровня SPS, который указывает то, кодируются ли синтаксические элементы при кодировании остатка в режиме обхода.
На этапе 3104, в ответ на определение того, что значение флага высокого уровня SPS равно 1, декодер может определить то, что все синтаксические элементы при кодировании остатка, за исключением позиции последнего значимого коэффициента при регулярном кодировании остатка (RRC), кодируются в режиме обхода, и выравнивание выполняется после последней позиции значимого коэффициента в RRC и в начале блока преобразования (TB) при кодировании остатка с пропуском преобразования (TSRC).
Приведенные выше способы могут быть реализованы с использованием устройства, которое включает в себя одну или более схем, которые включают в себя специализированные интегральные схемы (ASIC), процессоры цифровых сигналов (DSP), устройства цифровой обработки сигналов (DSPD), программируемые логические устройства (PLD), программируемые пользователями вентильные матрицы (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, когда коэффициент хеширования в режиме внутриблочного копирования в текущем слайсе больше, чем 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) или масштабировании с помощью заданного значения.
Ограничение битового потока
В одном или более примерах настоящего раскрытия предлагается отключить наличие райсовского параметра для кодирования остатка с пропуском преобразования и инструментов высокой битовой глубины для кодирования с низкой битовой глубиной. В одном конкретном примере для достижения этой цели предлагается добавить требование соответствия битового потока, которое указывает то, что такой инструмент должен быть отключен для битовой глубины, меньшей или равной 10, в определении профиля, такого как HEVC или его семантика.
Например, sps_ts_residual_coding_rice_present_in_sh_flag, равный 1, указывает то, что sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах SH, относящихся к SPS. Изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_ts_residual_coding_rice_present_in_sh_flag должно быть равно 0, когда BitDepth меньше или равен 10.
В другом примере, sps_rrc_rice_extension_flag, равный 1, указывает то, что активировано расширение получения райсовского параметра для бинаризации abs_remaining[ ] и dec_abs_level[ ]. sps_rrc_rice_extension_flag, равный 0, указывает то, что расширение получения райсовского параметра для бинаризации abs_remaining[ ] и dec_abs_level[ ] отключено. Согласно раскрытию изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_rrc_rice_extension_flag должно быть равно 0, когда BitDepth меньше или равен 10.
В еще одном примере значение sps_persistent_rice_adaptation_enabled_flag, равное 1, указывает то, что получение райсовского параметра для бинаризации abs_remainder[ ] и dec_abs_level[ ] инициируется в начале каждой TU с использованием статистики, накопленной из предыдущих TU. sps_persistent_rice_adaptation_enabled_flag, равный 0, указывает то, что предыдущее состояние TU не используется при получении райсовских параметров. Согласно раскрытию изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_persistent_rice_adaptation_enabled_flag должно быть равно 0, когда BitDepth меньше или равен 10.
В еще одном примере значение 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. Согласно раскрытию изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_reverse_last_sig_coeff_enabled_flag должно быть равно 0, когда BitDepth меньше или равен 10.
В еще одном примере значение sps_high_throughput_flag, равное 1, указывает то, что синтаксические элементы при кодировании остатка кодируются в режиме обхода. Согласно раскрытию изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_high_throughput_flag должно быть равно 0, когда BitDepth меньше или равен 10.
Более того, следует отметить, что предложенное ограничение соответствия битового потока sps_ts_residual_coding_rice_present_in_sh_flag для битовой глубины кодирования ортогонально условному сигналу флага уровня слайса на флаге пропуска преобразования, то есть sps_transform_skip_enabled_flag. В варианте осуществления, в такой комбинации, флаг sps_transform_skip_enabled_flag используется для того, чтобы обусловить присутствие sps_ts_residual_coding_rice_present_in_sh_flag. Между тем, битовый поток соответствия также применяется для того, чтобы требовать, чтобы sps_ts_residual_coding_rice_present_in_sh_flag был равен 1 только тогда, когда значение битовой глубины кодирования больше 10. Ниже представлена синтаксическая таблица SPS и семантические изменения при применении такого способа:
sps_ts_residual_coding_rice_present_in_sh_flag, равный 1, указывает то, что sh_ts_residual_coding_rice_idx может присутствовать в синтаксических структурах SH, относящихся к SPS. Изменения в текущем рабочем проекте VVC приведены ниже.
Требованием соответствия битового потока является то, что значение sps_ts_residual_coding_rice_present_in_sh_flag должно быть равно 0, когда BitDepth меньше или равен 10.
На Фиг. 22 показан способ декодирования видео согласно одному примеру настоящего раскрытия. Способ может быть применен, например, к декодеру. На этапе 3202 декодер может определить битовую глубину кодирования по меньшей мере для одного отсчета в битовом потоке. На этапе 3204 декодер может определить значение первого флага SPS по меньшей мере для одного отсчета. На этапе 3206 декодер может определить второй флаг SPS по меньшей мере для одного отсчета на основе значения первого флага SPS в сочетании с битовой глубиной кодирования по меньшей мере для одного отсчета. В некоторых примерах декодер может определять наличие второго флага SPS на основе первого флага SPS или может определять значение второго флага SPS на основе битовой глубины кодирования. В некоторых примерах декодер может определять наличие второго флага SPS на основе первого флага SPS и битовой глубины кодирования. В некоторых примерах декодер может определять значение второго флага SPS на основе первого флага SPS и битовой глубины кодирования. В некоторых других примерах декодер может определять значение второго флага SPS на основе битовой глубины кодирования, независимо от значения первого флага SPS.
В другом варианте осуществления вместо применения соответствия битового потока предлагается напрямую использовать битовую глубину, а также флаг sps_transform_skip_enabled_flag для того, чтобы обусловить сигнализацию флага sps_ts_residual_coding_rice_present_in_sh_flag. В частности, используя такой способ, значение флага sps_ts_residual_coding_rice_present_in_sh_flag сигнализируется только тогда, когда sps_transform_skip_enabled_flag равен 1, и глубина битов кодирования больше 10, что представлено следующим образом:
На Фиг. 16 показана блок-схема последовательности операций способа кодирования остатка с пропуском преобразования и малой задержкой (TSRC) согласно одному примеру настоящего раскрытия. Способ можно применить, например, к кодеру. На этапе 2602 кодер может получить райсовский параметр на основе кодированной информации текущего слайса видео. Кодированная информация может включать в себя один или несколько из следующих параметров: параметр квантования или битовую глубину кодирования, связанную со слайсом, изображением или видеопоследовательностью; или коэффициент хеширования, связанный со слайсом, изображением или видеопоследовательностью.
Следует отметить, что вышеуказанные способы кодирования могут применяться на стороне декодера. В одном конкретном примере райсовский параметр не обязательно передавать в декодер, и для получения райсовского параметра кодер/декодер использует один и тот же способ.
На Фиг. 8 показана вычислительная среда 1810, связанная с пользовательским интерфейсом 1860. Вычислительная среда 1810 может быть частью сервера обработки данных. Вычислительная среда 1810 включает в себя процессор 1820, память 1840 и интерфейс 1850 ввода-вывода.
Процессор 1820, как правило, управляет общими операциями вычислительной среды 1810, такими как операции, связанные с отображением, сбором данных, передачей данных и обработкой изображений. Процессор 1820 может включать в себя один или более процессоров для исполнения инструкций для выполнения всех или некоторых этапов вышеописанных способов. Более того, процессор 1820 может включать в себя один или более блоков, которые облегчают взаимодействие между процессором 1820 и другими компонентами. Процессор может представлять собой центральный процессор (CPU), микропроцессор, однокристальную машину, графический процессор (GPU) и т.п.
Память 1840 выполнена с возможностью хранения различных типов данных для поддержки работы вычислительной среды 1810. Память 1840 может включать в себя заданное программное обеспечение 1842. Примеры таких данных включают в себя инструкции для любых приложений или способов, работающих в вычислительной среде 1810, наборы видеоданных, данные изображения и т.д. Память 1840 может быть реализована с использованием любого типа энергозависимых или энергонезависимых запоминающих устройств или их сочетания, например, статического оперативного запоминающего устройства (SRAM), электрически стираемого программируемого постоянного запоминающего устройства (EEPROM), стираемого программируемого постоянного запоминающего устройства (EPROM), программируемого постоянного запоминающего устройства (PROM), постоянного запоминающего устройства (ROM), магнитной памяти, флэш-памяти, магнитного или оптического диска.
Интерфейс 1850 ввода-вывода обеспечивает интерфейс между процессором 1820 и периферийными интерфейсными блоками, такими как клавиатура, колесо управления, кнопки и т.п. Кнопки могут включать в себя, но без ограничений, кнопку «домой», кнопку начала сканирования и кнопку остановки сканирования. Интерфейс 1850 ввода-вывода может быть подключен к кодеру и декодеру.
В некоторых вариантах осуществления также предусмотрен энергонезависимый машиночитаемый носитель информации, содержащий множество программ, например, содержащихся в памяти 1840, исполняемых процессором 1820 в вычислительной среде 1810, для выполнения вышеописанных способов. Например, энергонезависимый машиночитаемый носитель информации может представлять собой ROM, RAM, CD-ROM, магнитную ленту, дискету, оптическое устройство хранения данных и т.п.
Энергонезависимый машиночитаемый носитель информации хранит в себе множество программ для исполнения вычислительным устройством, имеющим один или более процессоров, причем множество программ, при их исполнении одним или более процессорами, предписывают вычислительному устройству выполнить описанный выше способ для предсказания движения.
В некоторых вариантах осуществления вычислительная среда 1810 может быть реализована с помощью одной или более специализированных интегральных схем (ASIC), процессоров цифровых сигналов (DSP), устройств цифровой обработки сигналов (DSPD), программируемых логических устройств (PLD), программируемых пользователями вентильных матриц (FPGA), графических процессоров (GPU), контроллеров, микроконтроллеров, микропроцессоров или других электронных компонентов для выполнения приведенных выше способов.
На Фиг. 13 показана блок-схема, иллюстрирующая примерную систему 10 для параллельного кодирования и декодирования видеоблоков в соответствии с некоторыми реализациями настоящего раскрытия. Как показано на Фиг. 13, система 10 включает в себя устройство-источник 12, которое вырабатывает и кодирует видеоданные, которые будут декодированы в более позднее время устройством-получателем 14. Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого разнообразия электронных устройств, в том числе настольные или портативные компьютеры, планшетные компьютеры, смартфоны, телевизионные приставки, цифровые телевизоры, камеры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потокового видео и т.п. В некоторых реализациях устройство-источник 12 и устройство-получатель 14 оснащены возможностями беспроводной связи.
В некоторых реализациях устройство-получатель 14 может принимать кодированные видеоданные, подлежащие декодированию, через линию 16 связи. Линия 16 связи может содержать любой тип среды связи или устройство, способное перемещать кодированные видеоданные из устройства-источника 12 в устройство-получатель 14. В одном примере линия 16 связи может содержать средство связи, позволяющую устройству-источнику 12 передавать кодированные видеоданные непосредственно в устройство-получатель 14 в реальном времени. Кодированные видеоданные могут быть модулированы в соответствии со стандартом связи, таким как протокол беспроводной связи, и переданы в устройство-получатель 14. Средство связи может содержать любое беспроводное или проводное средство связи, такое как радиочастотный (РЧ) спектр или одну или более физических линий передачи. Средство связи может образовывать часть пакетной сети, такой как локальная сеть, глобальная сеть или глобальная сеть, такая как Интернет. Средство связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для облегчения связи от устройства-источника 12 до устройства-получателя 14.
В некоторых других реализациях кодированные видеоданные могут передаваться из выходного интерфейса 22 в устройство 32 хранения данных. Затем устройство-получатель 14 может получить доступ к кодированным видеоданным в устройстве 32 хранения данных через входной интерфейс 28. Устройство 32 хранения данных может включать в себя любой из множества носителей информации с распределенным или локальным доступом, таких как жесткий диск, диски Blu-ray, цифровые универсальные диски (DVD), компакт-диски на основе постоянного запоминающего устройства (CD-ROM), флэш-память, энергозависимая или энергонезависимая память или любой другой подходящий цифровой носитель информации для хранения кодированных видеоданных. В дополнительном примере устройство 32 хранения данных может соответствовать файловому серверу или другому промежуточному устройству хранения данных, которое может хранить кодированные видеоданные, выработанные устройством-источником 12. Устройство-получатель 14 может получить доступ к сохраненным видеоданным из устройства 32 хранения данных с использованием потоковой передачи или загрузки. Файловый сервер может представлять собой компьютер любого типа, способный хранить кодированные видеоданные и передавать кодированные видеоданные в устройство-получатель 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), устройства хранения данных, подключенные к сети (NAS) или локальный жесткий диск. Устройство-получатель 14 может получить доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, включая беспроводной канал (например, беспроводное соединение Wireless Fidelity (Wi-Fi)), проводное соединение (например, цифровую абонентскую линию (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 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.
Видеокодер 20 и видеодекодер 30 могут работать в соответствии с собственными или отраслевыми стандартами, такими как VVC, HEVC, MPEG-4 часть 10, AVC или расширениями таких стандартов. Следует понимать, что настоящая заявка не ограничена конкретным стандартом кодирования/декодирования видео и может быть применима к другим стандартам кодирования/декодирования видео. Как правило, предполагается, что видеокодер 20 устройства-источника 12 может быть выполнен с возможностью кодирования видеоданных согласно любому из этих современных или будущих стандартов. Аналогичным образом, также, как правило, предполагается, что видеодекодер 30 устройства-получателя 14 может быть выполнен с возможностью декодирования видеоданных в соответствии с любым из этих современных или будущих стандартов.
Видеокодер 20 и видеодекодер 30 каждый может быть реализован в виде любой из множества надлежащих схем кодера и/или декодера, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), интегральных схем специального назначения (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, аппаратно-программное обеспечение или любое их сочетание. При частичной реализации в программном обеспечении электронное устройство может хранить инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе информации и исполнять инструкции с использованием аппаратных средств, используя один или более процессоров для выполнения операций кодирования/декодирования видео, раскрытых в настоящем раскрытии. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве.
На Фиг. 14 показана блок-схема, иллюстрирующая примерный видеокодер 20 в соответствии с некоторыми реализациями, описанными в настоящей заявке. Видеокодер 20 может выполнять кодирование с внутрикадровым предсказанием и межкадровым предсказанием видеоблоков в пределах видеокадров. Кодирование с внутрикадровым предсказанием основано на пространственном предсказании для уменьшения или устранения пространственной избыточности в видеоданных в пределах данного видеокадра или изображения. Кодирование с межкадровым предсказанием основано на временном предсказании для уменьшения или устранения временной избыточности в видеоданных в соседних видеокадрах или изображениях видеопоследовательности. Следует отметить, что в области кодирования видео термин «кадр» может использоваться как синоним термина «изображение» или «картинка».
Как показано на Фиг. 14, видеокодер 20 включает в себя память 40 видеоданных, блок 41 обработки предсказания, буфер 64 декодированного изображения (DPB), сумматор 50, блок 52 обработки преобразования, блок 54 квантования и блок 56 статистического кодирования. Блок 41 обработки предсказания дополнительно включает в себя блок 42 оценки движения, блок 44 компенсации движения, блок 45 разделения, блок 46 обработки внутрикадрового предсказания и блок 48 внутреннего блочного копирования (BC). В некоторых реализациях видеокодер 20 также включает в себя блок 58 обратного квантования, блок 60 обработки обратного преобразования и сумматор 62 для восстановления видеоблока. Внутриконтурный фильтр 63, такой как фильтр удаления блочности, может быть расположен между сумматором 62 и DPB 64 для фильтрации границ блоков и удаления артефактов блочности из восстановленного видео. Другой внутриконтурный фильтр, такой как фильтр адаптивного к отсчету смещения (SAO) и/или адаптивный внутриконтурный фильтр (ALF), также может использоваться в дополнение к фильтру удаления блочности для фильтрации выходного сигнала сумматора 62. В некоторых примерах внутриконтурные фильтры могут быть опущены, и сумматор 62 может напрямую подавать декодированный видеоблок в DPB 64. Видеокодер 20 может принимать форму фиксированного или программируемого аппаратного блока или может быть разделен между одним или более из проиллюстрированных фиксированных или программируемых аппаратных блоков.
Память 40 видеоданных может хранить видеоданные, подлежащие кодированию компонентами видеокодера 20. Видеоданные в памяти 40 видеоданных могут быть получены, например, из источника 18 видео, как показано на Фиг. 13. DPB 64 представляет собой буфер, в котором хранятся опорные видеоданные (например, опорные кадры или изображения) для использования при кодировании видеоданных видеокодером 20 (например, в режимах кодирования с внутрикадровым или межкадровым предсказанием). Память 40 видеоданных и DPB 64 могут быть сформированы любым из множества устройств памяти. В различных примерах память 40 видеоданных может находиться на кристалле вместе с другими компонентами видеокодера 20 или вне кристалла по отношению к этим компонентам.
Как показано на Фиг. 14, после приема видеоданных блок 45 разделения в блоке 41 обработки предсказания разделяет видеоданные на видеоблоки. Это разделение может также включать в себя разделение видеокадра на слайсы, тайлы (например, наборы видеоблоков) или другие более крупные единицы кодирования (CU) в соответствии с заданными структурами разделения, такими как структура квадродерева (QT), ассоциированная с видеоданными. Видеокадр представляет собой или может рассматриваться как двумерный массив или матрица отсчетов со значениями отсчетов. Отсчет в массиве также может называться пикселем или пиксельным элементом (пэлом). Количество отсчетов в горизонтальном и вертикальном направлениях (или по горизонтальной и вертикальной осям) массива или изображения определяют размер и/или разрешение видеокадра. Видеокадр может быть разделен на несколько видеоблоков, например, с использованием разделения QT. Видеоблок снова представляет собой или может рассматриваться как двумерный массив или матрица отсчетов со значениями отсчетов, хотя и меньшей размерности, чем видеокадр. Количество отсчетов в горизонтальном и вертикальном направлениях (или по горизонтальной и вертикальной осям) видеоблока определяет размер видеоблока. Видеоблок может быть дополнительно разделен на один или несколько блочных разделов или подблоков (которые могут снова образовывать блоки), например, итеративно с использованием разделения QT, разделения двоичного дерева (BT) или разделения троичного дерева (TT) или любого их сочетания. Следует отметить, что термин «блок» или «видеоблок», используемый в данном документе, может обозначать часть, в частности прямоугольную (квадратную или неквадратную) часть, кадра или изображения. Что касается, например, HEVC и VVC, блок или видеоблок может быть или соответствовать единице дерева кодирования (CTU), CU, единице предсказания (PU) или единице преобразования (TU) и/или может быть или соответствовать соответствующему блоку, например, блоку дерева кодирования (CTB), блоку кодирования (CB), блоку предсказания (PB) или блоку преобразования (TB) и/или подблоку.
Блок 41 обработки предсказания может выбрать один из множества возможных режимов кодирования с предсказанием, например, один из множества режимов кодирования с внутрикадровым предсказанием или один из множества режимов кодирования с межкадровым предсказанием, для текущего видеоблока на основе результатов ошибок (например, скорости кодирования и уровня искажений). Блок 41 обработки предсказания может предоставить результирующий кодированный блок внутрикадрового или межкадрового предсказания в сумматор 50 для выработки блока остатка и в сумматор 62 для восстановления кодированного блока для последующего использования в качестве части опорного кадра. Блок 41 обработки предсказания также предоставляет синтаксические элементы, такие как векторы движения, указатели внутри режима, информацию разделения и другую аналогичную синтаксическую информацию, в блок 56 статистического кодирования.
Чтобы выбрать подходящий режим кодирования с внутрикадровым предсказанием для текущего видеоблока, блок 46 обработки внутрикадрового предсказания в блоке 41 обработки предсказания может выполнять кодирование с внутрикадровым предсказанием текущего видеоблока относительно одного или более соседних блоков в том же кадре, что и текущий блок, который необходимо закодировать для обеспечения пространственного предсказания. Блок 42 оценки движения и блок 44 компенсации движения в блоке 41 обработки предсказания выполняют кодирование с межкадровым предсказанием текущего видеоблока относительно одного или более блоков предсказания в одном или более опорных кадрах для того, чтобы обеспечить временное предсказание. Видеокодер 20 может выполнять несколько проходов кодирования, например, чтобы выбрать подходящий режим кодирования для каждого блока видеоданных.
В некоторых реализациях блок 42 оценки движения определяет режим межкадрового предсказания для текущего видеокадра путем выработки вектора движения, который указывает смещение видеоблока в текущем видеокадре относительно блока предсказания в опорном видеокадре, в соответствии с заданным шаблоном в последовательности видеокадров. Оценка движения, выполняемая блоком 42 оценки движения, представляет собой процесс выработки векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение видеоблока в текущем видеокадре или изображении относительно блока предсказания в опорном кадре относительно текущего блока, кодируемого в текущем кадре. Заданный шаблон может обозначать видеокадры в последовательности как P-кадры или B-кадры. Блок 48 внутреннего BC может определить векторы, например, блочные векторы, для внутрикадрового кодирования BC способом, аналогичным определению векторов движения блоком 42 оценки движения для межкадрового предсказания, или может использовать блок 42 оценки движения для определения блочного вектора.
Блок предсказания для видеоблока может представлять собой или может соответствовать блоку или опорному блоку опорного кадра, который считается наиболее совпадающим с видеоблоком, подлежащим кодированию, с точки зрения разности пикселей, которую можно определить с использованием суммы абсолютных разностей (SAD), суммы квадратичных разностей (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 внутреннего BC может вырабатывать векторы и выбирать блоки предсказания способом, аналогичным описанному выше совместно с блоком 42 оценки движения и блоком 44 компенсации движения, но при этом блоки предсказания находятся в том же кадре, что и текущий кодируемый блок, и векторы называются векторами блоков, а не векторами движения. В частности, блок 48 внутреннего BC может определить режим внутрикадрового предсказания, который будет использоваться для кодирования текущего блока. В некоторых примерах блок 48 внутреннего BC может кодировать текущий блок с использованием различных режимов внутрикадрового предсказания, например, во время отдельных проходов кодирования, и проверять их производительность с использованием анализа соотношения "скорость-искажение". Затем блок 48 внутреннего BC может выбрать среди различных протестированных режимов внутрикадрового предсказания соответствующий режим внутрикадрового предсказания для использования и выработки соответствующим образом указателя внутрикадрового режима. Например, блок 48 внутреннего BC может вычислить значения коэффициента искажения с использованием анализа соотношения "скорость-искажение" для различных протестированных режимов внутрикадрового предсказания и выбрать режим внутрикадрового предсказания, имеющий наилучшие характеристики коэффициента соотношения "скорость-искажение" среди тестируемых режимов, в качестве режима внутрикадрового предсказания, подходящего для использования. Анализ соотношения "скорость-искажение", как правило, определяет величину искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который был закодирован для создания закодированного блока, а также битовую скорость (то есть количество битов), используемую для создания кодированного блока. Блок 48 внутреннего BC может вычислить отношения на основании искажений и скоростей для различных кодированных блоков, чтобы определять то, какой режим внутрикадрового предсказания демонстрирует наилучшее значение соотношения "скорость-искажение" для блока.
В других примерах блок 48 внутреннего BC может использовать блок 42 оценки движения и блок 44 компенсации движения, полностью или частично, для выполнения таких функций для предсказания внутреннего BC согласно реализациям, описанным в настоящем документе. В любом случае, что касается внутриблочного копирования, то блок предсказания может представлять собой блок, который считается наиболее совпадающим с блоком, подлежащим кодированию, с точки зрения разности пикселей, которая может определяться с помощью SAD, SSD или других показателей разности, и идентификация блока предсказания может включать в себя вычисление значений для субцелочисленных позиций пикселей.
Независимо от того, относится ли блок предсказания к одному и тому же кадру согласно внутрикадровому предсказанию или к другому кадру согласно межкадровому предсказанию, видеокодер 20 может сформировать видеоблок остатка путем вычитания пиксельных значений блока предсказания из пиксельных значений текущего кодируемого видеоблока, формируя разностные значения пикселей. Разностные значения пикселей, формирующие видеоблок остатка, могут включать в себя разности как яркостных компонентов, так и цветовых компонентов.
Блок 46 обработки внутрикадрового предсказания может выполнять внутрикадровое предсказание текущего видеоблока в качестве альтернативы межкадровому предсказанию, выполняемому блоком 42 оценки движения и блоком 44 компенсации движения, или предсказанию внутреннего копирования блока, выполняемому блоком 48 внутреннего BC, как описано выше. В частности, блок 46 обработки внутрикадрового предсказания может определять режим внутрикадрового предсказания, который следует использовать для кодирования текущего блока. Для этого блок 46 обработки внутрикадрового предсказания может кодировать текущий блок с использованием различных режимов внутрикадрового предсказания, например, во время отдельных проходов кодирования, и блок 46 обработки внутрикадрового предсказания (или блок выбора режима, в некоторых примерах) может выбрать для использования подходящий режим внутрикадрового предсказания из протестированных режимов внутрикадрового предсказания. Блок 46 обработки внутрикадрового предсказания может предоставлять информацию, указывающую выбранный режим внутрикадрового предсказания для блока, в блок 56 статистического кодирования. Блок 56 статистического кодирования может кодировать информацию, указывающую выбранный режим внутрикадрового предсказания, в битовом потоке.
После того, как блок 41 обработки предсказания определит блок предсказания для текущего видеоблока с использованием либо межкадрового предсказания, либо внутрикадрового предсказания, сумматор 50 сформирует видеоблок остатка путем вычитания блока предсказания из текущего видеоблока. Видеоданные остатка в блоке остатка могут быть включены в одну или несколько TU и поданы в блок 52 обработки преобразования. Блок 52 обработки преобразования преобразует видеоданные остатка в коэффициенты остатка преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование.
Блок 52 обработки преобразования может отправлять результирующие коэффициенты преобразования в блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить скорость передачи данных. Процесс квантования также может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования можно изменить путем регулировки параметра квантования. В некоторых примерах блок 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, блок 56 статистического кодирования может выполнять сканирование.
После квантования блок 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования в битовый видеопоток с использованием, например, контекстно-адаптивного кодирования переменной длины (CAVLC), контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другой методологии или технологии энтропийного кодирования. Затем кодированный битовый поток может быть передан в видеодекодер 30, как показано на Фиг. 13, или заархивирован в устройстве 32 хранения данных, как показано на Фиг. 13 для последующей передачи в видеодекодер 30 или извлечения из него. Блок 56 статистического кодирования может также энтропийно кодировать векторы движения и другие синтаксические элементы для текущего видеокадра, подлежащего кодированию.
Блок 58 обратного квантования и блок 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для того, чтобы восстановить видеоблок остатка в пиксельной области для формирования опорного блока для предсказания других видеоблоков. Как отмечалось выше, блок 44 компенсации движения может выработать блок предсказания с компенсацией движения из одного или более опорных блоков кадров, хранящихся в DPB 64. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к блоку предсказания для вычисления субцелочисленных значений пикселей для использования при оценке движения.
Сумматор 62 добавляет восстановленный блок остатка к блоку предсказания с компенсацией движения, созданному блоком 44 компенсации движения для того, чтобы создать опорный блок для хранения в DPB 64. Затем опорный блок может использоваться блоком 48 внутреннего BC, блоком 42 оценки движения и блоком 44 компенсации движения в качестве блока предсказания для межкадрового предсказания другого видеоблока в последующем видеокадре.
На Фиг. 15 показана блок-схема, иллюстрирующая примерный видеодекодер 30 в соответствии с некоторыми реализациями настоящей заявки. Видеодекодер 30 включает в себя память 79 видеоданных, блок 80 энтропийного декодирования, блок 81 обработки предсказания, блок 86 обратного квантования, блок 88 обработки обратного преобразования, сумматор 90 и DPB 92. Блок 81 обработки предсказания дополнительно включает в себя блок 82 компенсации движения, блок 84 внутрикадрового предсказания и блок 85 внутреннего BC. Видеодекодер 30 может выполнять процесс декодирования, как правило, обратный процессу кодирования, описанному выше в отношении видеокодера 20 со ссылкой на Фиг. 14. Например, блок 82 компенсации движения может выработать данные предсказания на основе векторов движения, принятых из блока 80 энтропийного декодирования, в то время как блок 84 внутрикадрового предсказания может выработать данные предсказания на основе указателей режимов внутрикадрового предсказания, принятых из блока 80 энтропийного декодирования.
В некоторых примерах блоку видеодекодера 30 может быть поставлена задача выполнить реализации настоящей заявки. Кроме того, в некоторых примерах, реализации настоящего раскрытия могут быть также разделены между одним или несколькими блоками видеодекодера 30. Например, блок 85 внутреннего BC может выполнять реализации настоящей заявки по отдельности или в сочетании с другими блоками видеодекодера 30, такими как блок 82 компенсации движения, блок 84 внутрикадрового предсказания и блок 80 энтропийного декодирования. В некоторых примерах видеодекодер 30 может не включать в себя блок 85 внутреннего BC, и функции блока 85 внутреннего BC могут выполняться другими компонентами блока 81 обработки предсказания, такими как блок 82 компенсации движения.
Память 79 видеоданных может хранить видеоданные, такие как кодированный битовый видеопоток, подлежащий декодированию другими компонентами видеодекодера 30. Видеоданные, хранящиеся в памяти 79 видеоданных, могут быть получены, например, из устройства 32 хранения данных, из локального источника видео, такого как камера, через проводную или беспроводную сетевую передачу видеоданных или путем доступа к физическому носителю информации (например, флэш-накопителю или жесткому диску). Память 79 видеоданных может включать в себя буфер кодированного изображения (CPB), который хранит кодированные видеоданные из кодированного битового видеопотока. DPB 92 видеодекодера 30 хранит опорные видеоданные для использования при декодировании видеоданных видеодекодером 30 (например, в режимах кодирования с внутрикадровым или межкадровым предсказанием). Память 79 видеоданных и DPB 92 могут быть образованы любым из множества устройств памяти, таких как динамическая оперативная память (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или другие типы устройств памяти. В иллюстративных целях память 79 видеоданных и DPB 92 на Фиг. 15 изображены как два отдельных компонента видеодекодера 30. Однако специалисту в данной области техники будет очевидно, что память 79 видеоданных и DPB 92 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В некоторых примерах память 79 видеоданных может быть встроена в другие компоненты видеодекодера 30 или находиться вне кристалла по отношению к этим компонентам.
Во время процесса декодирования видеодекодер 30 принимает кодированный битовый видеопоток, который представляет видеоблоки кодированного видеокадра и связанные с ним синтаксические элементы. Видеодекодер 30 может принимать синтаксические элементы на уровне видеокадра и/или уровне видеоблока. Блок 80 энтропийного декодирования видеодекодера 30 энтропийно декодирует битовый поток для выработки квантованных коэффициентов, векторов движения или указателей режимов внутрикадрового предсказания и других синтаксических элементов. Затем блок 80 энтропийного декодирования пересылает векторы движения или указатели режима внутрикадрового предсказания и другие синтаксические элементы в блок 81 обработки предсказания.
Когда видеокадр кодируется в виде кодированного кадра с внутрикадровым предсказанием (I) или для блоков внутрикадрового предсказания в виде кадров других типов, блок 84 внутрикадрового предсказания блока 81 обработки предсказания может выработать данные предсказания для видеоблока текущего видеокадра на основе сигнализированного режима внутрикадрового предсказания и опорных данных из ранее декодированных блоков текущего кадра.
Когда видеокадр кодируется в виде кодированного кадра с межкадровым предсказанием (то есть B или P), блок 82 компенсации движения блока 81 обработки предсказания создает один или более блоков предсказания для видеоблока текущего видеокадра на основе векторов движения и других синтаксических элементов, принятых из блока 80 энтропийного декодирования. Каждый из блоков предсказания может быть создан из опорного кадра в одном из списков опорных кадров. Видеодекодер 30 может создавать списки опорных кадров, список 0 и список 1, используя способы построения по умолчанию на основе опорных кадров, хранящихся в DPB 92.
В некоторых примерах, когда видеоблок кодируется в соответствии с описанным в данном документе режимом внутреннего BC, блок 85 внутреннего BC блока 81 обработки предсказания создает блоки предсказания для текущего видеоблока на основе векторов блоков и других синтаксических элементов, принятых из блока 80 энтропийного декодирования. Блоки предсказания могут находиться в восстановленной области того же изображения, что и текущий видеоблок, определенный видеокодером 20.
Блок 82 компенсации движения и/или блок 85 внутреннего BC определяет информацию предсказания для видеоблока текущего видеокадра с помощью синтаксического анализа векторов движения и других синтаксических элементов, и затем использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 82 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутрикадрового или межкадрового предсказания), используемого для кодирования видеоблоков видеокадра, тип кадра межкадрового предсказания (например, B или P), информацию о построении одного или нескольких списков опорных кадров для кадра, векторы движения для каждого кодированного видеоблока с межкадровым предсказанием для кадра, статус межкадрового предсказания для каждого кодированного видеоблока с межкадровым предсказанием и другую информацию для декодирования видеоблоков в текущем видеокадре.
Аналогичным образом, блок 85 внутреннего BC может использовать некоторые из принятых синтаксических элементов, например, флаг, чтобы определить то, что текущий видеоблок был предсказан с использованием режима внутреннего BC, информацию построения о том, какие видеоблоки кадра находятся в пределах восстановленной области и должны храниться в DPB 92, блочные векторы для каждого предсказанного видеоблока кадра с внутренним BC, статус предсказания с внутренним BC для каждого предсказанного видеоблока с внутренним BC кадра и другую информацию для декодирования видеоблоков в текущем видеокадре.
Блок 82 компенсации движения также может выполнять интерполяцию с использованием интерполяционных фильтров, используемых видеокодером 20 во время кодирования видеоблоков, для вычисления интерполированных значений для субцелочисленных пикселей опорных блоков. В этом случае блок 82 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20, из принятых синтаксических элементов, и использовать интерполяционные фильтры для создания блоков предсказания.
Блок 86 обратного квантования осуществляет обратное квантование квантованных коэффициентов преобразования, предоставленных в битовом потоке, и энтропийно декодированных блоком 80 энтропийного декодирования, используя один и тот же параметр квантования, вычисленный видеокодером 20 для каждого видеоблока в видеокадре, чтобы определить степень квантования. Блок 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования к коэффициентам преобразования для того, чтобы восстановить блоки остатков в пиксельной области.
После того, как блок 82 компенсации движения или блок 85 внутреннего BC выработает блок предсказания для текущего видеоблока на основе векторов и других синтаксических элементов, сумматор 90 восстанавливает декодированный видеоблок для текущего видеоблока путем суммирования блока остатка из блока 88 обработки обратного преобразования и соответствующего блока предсказания, выработанного блоком 82 компенсации движения и блоком 85 внутреннего BC. Внутриконтурный фильтр 91, такой как фильтр удаления блочности, фильтр SAO и/или ALF, может быть расположен между сумматором 90 и DPB 92 для дальнейшей обработки декодированного видеоблока. В некоторых примерах внутриконтурный фильтр 91 может быть опущен, и декодированный видеоблок может быть напрямую предоставлен сумматором 90 в DPB 92. Декодированные видеоблоки в данном кадре затем сохраняются в DPB 92, который хранит опорные кадры, используемые для последующей компенсации движения следующих видеоблоков. DPB 92 или устройство памяти, отдельное от DPB 92, также может хранить декодированное видео для последующего представления на устройстве отображения, таком как устройство 34 отображения, показанное на Фиг. 13.
Описание настоящего раскрытия было представлено в целях иллюстрации и не претендует на то, чтобы быть исчерпывающим или ограничиваться настоящим раскрытием. Многие модификации, варианты и альтернативные реализации будут очевидны для специалистов в данной области техники, пользующихся идеями, представленными в предыдущих описаниях и связанных с ними чертежах.
Примеры были выбраны и описаны для того, чтобы объяснить принципы раскрытия и дать возможность другим специалистам в данной области техники понять раскрытие для различных реализаций и наилучшим образом использовать основные принципы и различные реализации с различными модификациями, которые подходят для конкретного предполагаемого использования. Таким образом, следует понимать, что объем раскрытия не должен ограничиваться конкретными примерами раскрытых реализаций и что модификации и другие реализации предназначены для включения в объем настоящего раскрытия.
название | год | авторы | номер документа |
---|---|---|---|
КОДИРОВАНИЕ ОСТАТКОВ И КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2022 |
|
RU2824946C2 |
КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ И ОСТАТКА ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2022 |
|
RU2820669C1 |
СПОСОБ КОДИРОВАНИЯ ОСТАТКА И КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2022 |
|
RU2833874C2 |
ОСТАТОЧНОЕ КОДИРОВАНИЕ И КОДИРОВАНИЕ КОЭФФИЦИЕНТОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2022 |
|
RU2829115C2 |
СПОСОБ КОДИРОВАНИЯ КОЭФФИЦИЕНТОВ, КОДЕР, ДЕКОДЕР И КОМПЬЮТЕРНЫЙ НОСИТЕЛЬ ДАННЫХ | 2021 |
|
RU2831992C2 |
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ | 2021 |
|
RU2821011C1 |
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО | 2020 |
|
RU2829981C1 |
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО | 2020 |
|
RU2832214C1 |
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО | 2020 |
|
RU2831305C1 |
СПОСОБ И АППАРАТНЫЙ КОМПОНЕНТ СИГНАЛИЗАЦИИ ЧИСЛА КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ | 2021 |
|
RU2823267C1 |
Изобретение относится к области кодирования и сжатию видео, в частности к улучшениям и упрощению кодирования значений коэффициентов и остатка для кодирования видео. Техническим результатом является повышение эффективности кодирования. Предложены способы, устройства и энергонезависимые машиночитаемые носители информации. Декодер определяет значение битовой глубины кодирования; декодер определяет значение первого флага набора параметров последовательности (SPS); и декодер дополнительно определяет второй флаг SPS на основе по меньшей мере одного из значений первого флага SPS в сочетании с битовой глубиной кодирования. 3 н. и 4 з.п. ф-лы, 26 ил., 40 табл.
1. Способ декодирования видео, содержащий этапы, на которых:
определяют, декодером, значение битовой глубины кодирования;
определяют, декодером, значение первого флага набора параметров последовательности (SPS), причем первый флаг SPS является флагом активизации пропуска преобразования; и
определяют, декодером, наличие второго флага SPS или значение второго флага SPS на основе значений первого флага SPS и битовой глубины кодирования, причем вторым флагом SPS является флаг sps_ts_residual_coding_rice_present_in_sh_flag.
2. Способ декодирования видео по п.1, в котором на этапе определения значения второго флага SPS на основе значений первого флага SPS и битовой глубины кодирования:
в ответ на определение, что значение первого флага SPS равно 0 и значение битовой глубины кодирования превышает 10, определяют, что значение второго флага SPS равно 0.
3. Способ декодирования видео по п.1, дополнительно содержащий этап, на котором:
в ответ на определение, что значение второго флага SPS равно 1, определяют, что информация о райсовском индексе кодирования остатка с пропуском преобразования заголовка слайса (SH), возможно, присутствует в синтаксических структурах SH, относящихся к SPS.
4. Способ декодирования видео по п.1, в котором на этапе определения наличия второго флага SPS на основе значений первого флага SPS и битовой глубины кодирования:
в ответ на определение, что значение первого флага SPS равно 1 и значение битовой глубины кодирования больше 10, определяют наличие второго флага SPS.
5. Способ декодирования видео по п.1, дополнительно содержащий этапы, на которых:
определяют наличие второго флага SPS или значение второго флага SPS на основе принятого флага расширения диапазона SPS, который указывает, присутствует ли синтаксическая структура sps_range_extension,
при этом прием флага расширения диапазона SPS не обязательно зависит от значения битовой глубины кодирования.
6. Устройство для декодирования видео, содержащее:
один или более процессоров; и
память, выполненную с возможностью хранения инструкций, исполняемых указанным одним или более процессорами; причем указанный один или более процессоров при исполнении инструкций выполнены с возможностью выполнения способа по любому из пп.1-5 и сохранения в памяти битового потока, подлежащего декодированию способом по любому из пп.1-5.
7. Энергонезависимый машиночитаемый носитель информации для декодирования видео, хранящий исполняемые компьютером инструкции, которые при их исполнении одним или более компьютерными процессорами вызывают выполнение указанным одним или более компьютерными процессорами способа по любому из пп.1-5 и сохранение в энергонезависимом машиночитаемом носителе информации битового потока, подлежащего декодированию способом по любому из пп.1-5.
MOHAMMED GOLAM SARWER et al., AHG9: On SPS, PH, SH syntax order, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-S0074, 19th Meeting: by teleconference, 22 June - 1 July 2020 | |||
HONG-JHENG JHU et al., CE-2.1: Slice based Rice parameter selection for transform skip residual coding, Joint Video Experts Team |
Авторы
Даты
2025-02-11—Публикация
2022-07-08—Подача